TigerRay 发表于 2010-10-3 11:26:50

请高手帮我看看这那里有问题?

先来程序:
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应该一直为高阻状态才对啊!怎么会有数据呢?不本人不才啊,不知道是那里的问题?!请那位朋友帮我看看!

TigerRay 发表于 2010-10-3 11:30:13

补充说明:
从程序上来看,当OE为1的时候首先RAMDATA 是为高阻状态的,当然这样把数据给LCDDATA也为高阻状态下的数据啊!然而为什么会出现MCUDATA的数据呢?

TigerRay 发表于 2010-10-3 21:49:59

啊,这么久了都没有反应!怎么都不愿意说呢!

wanwzy 发表于 2010-10-4 11:16:20

根据程序上来说!LCDATA应该一直为高阻状态才对啊!怎么会有数据呢?不本人不才啊,不知道是那里的问题?!请那位朋友帮我看看!

答:首先我现在不知道你这是时序仿真还是功能仿真,如果是时序仿真(有延时),仿真结果应该是对的。仔细观察条件OE变化所带来的RAMDATA数据的不同取值。还有楼主这段代码中“WAIT UNTIL RISING_EDGE(CLK)”这条语句一般用在编写testbench中,设计中用可能不能被综合。
页: [1]
查看完整版本: 请高手帮我看看这那里有问题?