>

Mux 4 a 1 + código VHDL + tabla de verdad + simulación en Vivado

 A continuación voy a compartir en código VHDL un MUX 4 a 1 con selección de 2 bits, en realidad es bastante fácil de hacer y sobretodo de entender esto hará parte de una serie de post relacionados con VHDL y algunos dispositivos de electrónica digital que pasaremos a código, además haré la respectiva simulación usando el software de vivado creado por Xilink. Para aprender a crear un proyecto nuevo en VHDL con Vivado, da click aquí.

¿No quieres leer? Tenemos lo mismo pero en vídeo míralo


La tabla de verdad y el símbolo de un mux 4 a 1 lo podremos ver en la siguiente imagen:

Tabla de verdad MUX 4 a 1

Vamos al código, recordemos que estará relacionado de forma directa con la tabla de verdad por lo cual tenemos lo siguiente:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mux4a1 is
port(
A,B,C,D : in STD_LOGIC; --entradas
S0,S1: in STD_LOGIC;  --entradas líneas de selección
Z: out STD_LOGIC  --salidas
);
end mux4a1;

architecture Behavioral of mux4a1 is
begin
process (A,B,C,D,S0,S1) is
begin
if (S0 ='0' and S1 = '0') then
Z <= A;
elsif (S0 ='1' and S1 = '0') then
Z <= B;
elsif (S0 ='0' and S1 = '1') then
Z <= C;
else
Z <= D;
end if;
end process;

end Behavioral;

Ahora vamos a comprobar que la tabla de verdad coincide con el código escrito, esto mediante la simulación el código para la simulación es el siguiente:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity simulacion is
--  Port ( );
end simulacion;

architecture Behavioral of simulacion is

component mux4a1 is
port(
A,B,C,D : in STD_LOGIC; --entradas
S0,S1: in STD_LOGIC;  --entradas
Z: out STD_LOGIC  --salidas
);
end component mux4a1;
signal A,B,C,D,S0,S1,Z:  STD_LOGIC;
begin
simul: mux4a1 port map(A=>A,B=>B,C=>C,D=>D,S0=>S0,S1=>S1,Z=>Z);

ProcX0: process
begin
S0<='0';
wait for 30ns;
S0<='1';
wait for 30ns;
end process;

ProcX1: process
begin
S1<='0';
wait for 50ns;
S1<='1';
wait for 50ns;
end process;     

ProcX2: process       
begin                 
A<='1';wait for 10ns; 
A<='0';wait for 10ns; 
B<='0';wait for 10ns; 
B<='1';wait for 10ns; 
C<='0';wait for 10ns;   
C<='1';wait for 10ns;    
D<='0';wait for 10ns;
D<='1';wait for 10ns;
end process;    
end Behavioral;  


Finalmente al correr la simulación comprobaremos cada uno de los estados de las variables "S1" y "S0" en todas sus combinaciones es decir (00,01,10,11), por lo cual en la salida "Z" deberá mostrarnos el valor asignado a las letras A,B,C,D según lo que diga la tabla de verdad.

Podemos ver que la simulación en cada uno de los estados de "S1" y "S0" cumple la condición de la tabla de verdad, esto afirma que nuestro MUX 4 a 1 funciona al 100%.

¿Alguna duda comenta?

¡Somos Skulltrap Electronics!🎇

Compartir:

0 comentarios:

Publicar un comentario

SkullTrapers

Posts más vistos

 

CLICK AQUI PARA IR A NUESTRA TIENDA ON LINE ARDUINO, ELECTRÓNICA, COMPONENTES