Ng_MicHeAl
驱动牛犊
驱动牛犊
  • 注册日期2004-06-15
  • 最后登录2006-05-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2194回复:1

FPGA与SRAM双向口设计

楼主#
更多 发布于:2005-06-16 15:49
代码如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity lock_sram_data is
    Port (    en_in : in std_logic;
             clk_in : in std_logic;
       dir_in : in std_logic;
           dataa_io : inout std_logic_vector(7 downto 0);
           datab_io : inout std_logic_vector(7 downto 0));
end lock_sram_data;

architecture rtl of lock_sram_data is
begin
proc: process(en_in, clk_in, dir_in)
begin
if en_in=\'0\' then

  datab_io <= (others=>\'Z\');
  dataa_io <= (others=>\'Z\');
 
elsif clk_in\'event and clk_in=\'0\' then

  if dir_in=\'0\' then
dataa_io <= datab_io;

  else
datab_io <= dataa_io;

  end if;

end if;

end process proc;
   
end rtl;
在xilinx得ISE下编译通过,但是在ModelSim下仿真是出现下列问题:

1。en_in = 1, dir = 0, 数据从dataa_io <= datab_io可以实现,改变dir = 1, 则datab_io <= dataa_io不工作,datab_io维持dir =0时得数据状态。
2。重新仿真,这次开始为en_in = 1, dir = 1,数据从datab_io <= dataa_io可以实现,改变dir = 0, 则dataa_io <= datab_io不工作,dataa_io维持dir =0时得数据状态。

什么原因?
vitiluck
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-01 17:34
我刚开始学习  HDL

  请教个问题:
        datab_io <= (others=>'Z');
  
datab_io <=之后应该是一个值。    others=>'Z' 这是个什么值啊? 是否就是赋‘z'

另外我看了一代码,没有错误。估计是你自己的仿真代码不对。
游客

返回顶部