如何在1和0之间切换std_logic

时间:2017-10-26 12:23:28

标签: vhdl

我想在每次输入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;

1 个答案:

答案 0 :(得分:1)

错误消息告诉您它不起作用:您编写的代码仅在VHDL-2008中支持,而不是在以前的版本中。在以前的版本中,在进程内使用when - else构造是非法的。为什么?谁知道?这可能是它在VHDL-2008中合法化的原因。

因此,您需要在模拟器上启用VHDL-2008编译或使用if语句。使用VHDL-2008并不是一个轻率的决定,因为很多工具都不了解它。