2010-09-14 11 views
17

All'interno di un processo che ho qualcosa di simile:Caso VHDL/Quando: più casi, singola clausola

CASE res IS 
    WHEN "00" => Y <= A; 
    WHEN "01" => Y <= A; 
    WHEN "10" => Y <= B; 
    WHEN "11" => Y <= C; 
    WHEN OTHERS => Y <= 'X'; 
END CASE; 

Nota quel caso "00" e "01" ottenere lo stesso valore. C'è una sintassi corretta per qualcosa come

WHEN "00", "01" =>?

Nota extra: C'è molto di più in questo rispetto a quello di essere cambiato, l'ho usato per semplicità. Quindi il caso/quando è necessario.

risposta

28

È possibile separare più scelte con il simbolo "pipe" o bar. La sintassi corretta per il vostro esempio è:

CASE res IS 
    WHEN "00" | "01" => Y <= A; 
    WHEN "10" => Y <= B; 
    WHEN "11" => Y <= C; 
    WHEN OTHERS => Y <= 'X'; 
END CASE; 
2

si può anche dare una gamma di scelte per un caso:

USE IEEE.STD_LOGIC_ARITH.ALL; 

CASE CONV_INTEGER(res) IS 
    WHEN 0 to 1 => Y <= A; 
    WHEN 2 => Y <= B; 
    WHEN 3 => Y <= C; 
    WHEN OTHERS => Y <= 'X'; 
END CASE; 
Problemi correlati