if语句在VHDL中

时间:2012-04-08 11:37:55

标签: vhdl

我对VHDL中的if语句有疑问,请参阅下面的示例;-)

   signal SEQ : bit_vector(5 downto 0); 
signal output: bit; 
    -------

     if(SEQ = "000001") and (CNT_RESULT = "111111") then 
       output<= '1';
      CNT_RESET <= '0';
      else output<='0';
    end if;

我得到:if语句是非法的,“输出”有多个来源。任何想法

2 个答案:

答案 0 :(得分:5)

我认为if语句不在进程中?您只能在流程中使用if语句。对于流程外的类似功能,您可以使用when

output <= '1' when (SEQ = "000001") and (CNT_RESULT = "111111") else
          '0';

CNT_RESET <= '0' when (SEQ = "000001") and (CNT_RESULT = "111111") else
             '1';

答案 1 :(得分:3)

您可能在架构主体(这是一个并发区域)中使用IF语句。那是违法的。你需要在它周围放一个进程,以便它在一个顺序区域(代码没有经过测试!):

  process(seq, CNT_RESULT)
     if(SEQ = "000001") and (CNT_RESULT = "111111") then 
       output<= '1';
      CNT_RESET <= '0';
      else output<='0';
    end if;
  end process;