2012-04-08 5 views
2

ich eine Frage über die if-Anweisung in VHDL habe, siehe Beispiel unten ;-)if-Anweisung in VHDL

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; 

und ich: die if-Anweisung illegal ist und dass „Output“ hat mehrfach Quellen. irgendwelche Ideen

+0

Der angegebene Code ohne Fehler kompiliert, also wahrscheinlich sollten Sie weitere Informationen über Prozess und Output liefern Signalverwendung –

Antwort

5

Ich nehme an, die if Aussage ist nicht in einem Prozess? Sie können nur if Anweisungen innerhalb eines Prozesses verwenden. Für eine ähnliche Funktionalität außerhalb eines Prozesses können Sie when verwenden:

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

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

gut die if-Anweisung ist der Prozess, und als ich versuchte, Vorschlag, ich habe: unerwartet WANN erwartet SEMICOLON. – user1320084

+0

Sie haben wahrscheinlich einen Syntaxfehler in einer vorherigen Zeile. Ohne den Rest des Codes ist es nicht einfach zu sagen, wo. – sonicwave

+0

Ich habe es hier ist der Code – user1320084

3

Sie sind wahrscheinlich eine IF-Anweisung in der Architektur Körper verwendet (die eine gleichzeitige Region ist). Das ist illegal. Sie benötigen einen Prozess um es zu setzen, so dass es in einer sequentiellen Region (Code nicht getestet!):

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