阅读:2252回复:1
FPGA与SRAM双向口设计
代码如下:
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时得数据状态。 什么原因? |
|
沙发#
发布于:2005-08-01 17:34
我刚开始学习 HDL
请教个问题: datab_io <= (others=>'Z'); datab_io <=之后应该是一个值。 others=>'Z' 这是个什么值啊? 是否就是赋‘z' 另外我看了一代码,没有错误。估计是你自己的仿真代码不对。 |
|