New to VHDL, the unaffected waveform is not supported
我正在使用 VHDL,但我的模拟器不支持以下示例代码中未受影响的波形,我需要先运行该示例代码,然后才能开始作业。我在线阅读我可以传递相同的波形 Z,但我不知道该怎么做才能得到与 unaffected 关键字相同的结果......如何重写它以产生相同的结果?
PS:我需要在作业的下一部分使用 if-then-else 语句重写它,我知道在这种情况下我可以使用 next 关键字。这是我需要在作业之前运行的教科书中的代码。
感谢您的帮助。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | library IEEE; use IEEE.std_logic_1164.all; entity pr_encoder is port ( S0, S1,S2,S3: in std_logic; Z : out std_logic_vector (1 downto 0)); end entity pr_encoder; architecture behavioral of pr_encoder is begin Z <="00" after 5 ns when S0 = '1' else "01" after 5 ns when S1 = '1' else unaffected when S2 = '1' else "11" after 5 ns when S3 = '1' else "00" after 5 ns; end architecture behavioral; |
edit:如果我注释掉该行,我会达到我想要的结果吗?
不,如果您只是用
您似乎在描述一个闩锁。 (在同步设计中不建议这样做)。实际上
则不会更新
您确实可以将您的分配package在一个进程和一个 if-else 结构中,但不需要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | process (S0, S1, S2, S3) is begin if S0 = '1' then Z <="00" after 5 ns; elsif S1 = '1' then Z <="01" after 5 ns; elsif S2 = '1' then null; -- do nothing elsif S3 = '1' then Z <="11" after 5 ns; else Z <="00" after 5 ns; end if; end process; |
或者您可以像现在一样保留选定的赋值语句并更改条件以使
1 2 3 4 5 | Z <="00" after 5 ns when S0 = '1' else "01" after 5 ns when S1 = '1' else "11" after 5 ns when S2 /= '1' and S3 = '1' else "00" after 5 ns when S2 /= '1'; -- else unaffected is implicit |
旁白:
我以前从未听说过
你的模拟器是什么?