我想在每次输入sel ='1'时切换std_logic向量'1'和'0'。 我尝试使用以下方法,但两行都有错误。
selected <= not selected when sel='1';
错误:此结构仅在VHDL 1076-2008中支持
selected <= ~selected when sel='1';
错误:“〜”附近的语法错误
是否有更好的切换方式,或者'not'功能的正确语法。
以下是整个架构的代码:
architecture Behavioral of selWeerg is
signal selected : std_logic;
begin
process(sel,digl,sysclk)
begin
if rising_edge(sysclk) then
selected <= ~selected when sel='1';
if selected = '0' then
digO1<=digl(3 downto 0);
else
digO2<=digl(3 downto 0);
end if;
end if;
end process;
end Behavioral;
答案 0 :(得分:1)
错误消息告诉您它不起作用:您编写的代码仅在VHDL-2008中支持,而不是在以前的版本中。在以前的版本中,在进程内使用when
- else
构造是非法的。为什么?谁知道?这可能是它在VHDL-2008中合法化的原因。
因此,您需要在模拟器上启用VHDL-2008编译或使用if
语句。使用VHDL-2008并不是一个轻率的决定,因为很多工具都不了解它。