VHDL中的非法并发声明?

时间:2015-09-27 22:49:05

标签: vhdl

我一直在努力学习如何在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中使用的命令,但这会破坏目的。我在这里先向您的帮助表示感谢。

1 个答案:

答案 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;