VHDL 中的并发语句非法?

1 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;
Run Code Online (Sandbox Code Playgroud)

基本上我正在尝试使用条件信号分配来模拟与门。我知道您可以在 VHDL 中使用“and”命令,但这会达不到目的。我在这里先向您的帮助表示感谢。

Bil*_*nch 5

并发赋值语句应写为:

Y <= '0' when A = '0' else 
     '0' when B = '0' else
     '1';
Run Code Online (Sandbox Code Playgroud)

如果你想使用 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;
Run Code Online (Sandbox Code Playgroud)