2010-09-14 12 views
17

Dentro de un proceso que tienen algo como esto:Caso VHDL/Cuando: varios casos, sola cláusula

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 ese caso "00" y "01" obtener el mismo valor. ¿Hay una sintaxis correcta para algo como

WHEN "00", "01" =>?

Nota adicional: Hay mucho más en esto que el cambio de Y, simplemente lo usé por simplicidad. Entonces el caso/cuando es necesario.

Respuesta

28

Puede separar múltiples opciones con el símbolo "barra" o barra. La sintaxis correcta para su ejemplo es:

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

También puede dar una gama de opciones para 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; 
Cuestiones relacionadas