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”命令,但这会达不到目的。我在这里先向您的帮助表示感谢。
并发赋值语句应写为:
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)