一个vhdl程序的问题求解

2019-07-16 01:55发布

程序是一个模块,单独拿出来做了一下仿真,想让sz、rst均为1时将en置1,但是仿真的结果是en始终为1,麻烦高手看看程序到底是哪部分有问题啊,多谢了!!!library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity szmm isport ( rst,sz  :in std_logic;       d       :in std_logic_vector(3 downto 0);       en     :buffer std_logic:='0';       so      :out std_logic_vector(3 downto 0));end szmm;architecture arch of szmm is    signal ram:std_logic_vector(3 downto 0); begin  process(sz,d,rst)       begin         if rst='1' then            if sz='1' then             ram<=d;             en<='1';            end if;          end if;  end process;so<=ram;end  arch;
未命名.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
e-play
2019-07-16 07:43
编译的时候会出现警告的。警告里面有一项是,因为出现不完整条件语句,所以en会被保持原值。编译器直接把en赋值‘1’了。你查看RTL就知道了 。
还有几点:
仿真的endtime 最好设置为50us,在组合逻辑仿真时,将其放大到微秒级。
为了减少竞争冒险,加个时钟,延时

评分

参与人数 1积分 +10 收起 理由 zhihuizhou + 10 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

一周热门 更多>