请高手帮我看看这那里有问题?
先来程序:ENTITY BIDIR IS
PORT( CLK : IN STD_LOGIC;
OE: IN STD_LOGIC;
MCUDATA: IN STD_LOGIC_VECTOR(15 DOWNTO 0);
LCDATA : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
RAMDATA: INOUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END BIDIR;
ARCHITECTURE ONE OF BIDIR IS
BEGIN
PROCESS
BEGIN
WAIT UNTIL RISING_EDGE(CLK);
IF OE = '1' THEN
RAMDATA <= "ZZZZZZZZZZZZZZZZ";
LCDATA <= RAMDATA;
END IF;
IF OE = '0' THEN
RAMDATA <= MCUDATA;
END IF;
--END IF;
END PROCESS;
END ONE;
以上为程序!接下来在上仿真波型!
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_587247FA6XPA.jpg
(原文件名:波型.jpg)
根据程序上来说!LCDATA应该一直为高阻状态才对啊!怎么会有数据呢?不本人不才啊,不知道是那里的问题?!请那位朋友帮我看看! 补充说明:
从程序上来看,当OE为1的时候首先RAMDATA 是为高阻状态的,当然这样把数据给LCDDATA也为高阻状态下的数据啊!然而为什么会出现MCUDATA的数据呢? 啊,这么久了都没有反应!怎么都不愿意说呢! 根据程序上来说!LCDATA应该一直为高阻状态才对啊!怎么会有数据呢?不本人不才啊,不知道是那里的问题?!请那位朋友帮我看看!
答:首先我现在不知道你这是时序仿真还是功能仿真,如果是时序仿真(有延时),仿真结果应该是对的。仔细观察条件OE变化所带来的RAMDATA数据的不同取值。还有楼主这段代码中“WAIT UNTIL RISING_EDGE(CLK)”这条语句一般用在编写testbench中,设计中用可能不能被综合。
页:
[1]