2

我对 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 语句是非法的,并且“输出”有多个来源。有任何想法吗

4

2 回答 2

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';
于 2012-04-08T12:08:22.477 回答
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;
于 2012-04-09T07:38:46.667 回答