¿Cómo crear un multiplexor de n bits?

4

Necesito crear un multiplexor de 4 bits y 16 entradas. Sé que podría describir esto como una larga lista de S => when "0000" , etc. pero creo que no está muy limpio, y me gustaría optar por un multiplexador genérico de n bits para poder reutilizarlo más tarde para más entradas o lo que sea .

¿Cómo harías esto?

    
pregunta Earlz

1 respuesta

4

Es como esto:

use ieee.numeric_std.all;
...
signal din :std_logic_vector (15 downto 0);  -- must be "downto 0"
signal sel :std_logic_vector (3 downto 0);
...
dout <= din(conv_integer(sel));

Espero que ayude!

Adición: Si necesitas un mux de varios bits, entonces ...

type data_bus_array is array(7 downto 0) of std_logic_vector (31 downto 0);
signal din :data_bus_array;
signal dout :std_logic_vector (31 downto 0);
signal sel :std_logic_vector (3 downto 0);
...
dout <= din(conv_integer(sel));

Aquí es donde VHDL se vuelve un poco ruidoso, ya que a veces no es "compacto" rellenar esa matriz de bus de datos solo para hacer un mux simple. Pero, ahí lo tienes ...

    
respondido por el user3624

Lea otras preguntas en las etiquetas