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!🎇
0 comentarios:
Publicar un comentario