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 に答える