我一直在努力学习如何在VHDL中使用条件信号分配(我相信WHEN ELSE语句?)并提出了什么应该是一个简单的代码。但ModelSim并没有让它编译并一直告诉我,我有一个非法的并发声明。哪里?为什么?我试过在一个过程中做一个IF ELSIF ELSE语句,但我仍然得到完全相同的错误,所以我现在比起初时更加困惑......
Library ieee;
Use ieee.std_logic_1164.all;
Entity Q59122 is port (
A, B : IN STD_LOGIC;
Y : OUT STD_LOGIC
);
End Entity Q59122;
ARCHITECTURE csa OF Q59122 IS
BEGIN
Y <= '0' WHEN A = '0'
ELSE Y <= '0' WHEN B = '0'
ELSE Y <= '1';
END csa;
基本上我试图使用条件信号分配来模仿AND门。我知道有一个&#34;和&#34;您可以在VHDL中使用的命令,但这会破坏目的。我在这里先向您的帮助表示感谢。
答案 0 :(得分:2)
并发赋值语句应写为:
Y <= '0' when A = '0' else
'0' when B = '0' else
'1';
如果你想使用if-else链,你可以写:
process (A, B)
begin
if A = '0' then
Y <= '0';
elsif B = '0' then
Y <= '0';
else
Y <= '1';
end if;
end process;