Descripción de un decodificar, que pasa de binario (2 bits) a barra de nivel (cuatro bits que pueden valer: 0000, 0001, 0011, 0111 o 1111). El Codificador/Decodificador (Dependiendo de la longitud de de sus entradas y salidas) es otro de los bloques básicos de electrónica digital.
Aquí les dejo el código con el test bench y alguna captura:
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
--Declaración de la entidad
entity decodificador is
port (E : in std_logic_vector (1 downto 0);
EN: in std_logic; --Señal de habilitación
Y : out std_logic_vector (3 downto 0));
end decodificador;
--Descripción comportamental
architecture behavior of decodificador is
begin
Y <= "0000" when (EN='0') else
"0001" when (E="00") else
"0011" when (E="01") else
"0111" when (E="10") else
"1111" when (E="11") else
"1010"; --Para indicar error (No se debería dar este caso)
end behavior;
TEST BENCH:
--TEST BENCH
--Declaración librerias
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity testbench is
end testbench;
architecture behavior of testbench is
--Declaración de la unidad bajo test (uut)
component decodificador
port (E : in std_logic_vector (1 downto 0);
EN: in std_logic; --Señal de habilitación
Y : out std_logic_vector (3 downto 0));
end component;
signal EN : std_logic:='0';
signal E : std_logic_vector (1 downto 0);
signal Y : std_logic_vector (3 downto 0);
begin
uut: decodificador port map (
E => E,
EN => EN,
Y => Y
);
--Se asignan valores a las señales de test
estimulo: process
begin
wait for 1 ns;
EN <= '1'; wait for 10 ns;
E <= "00"; wait for 10 ns;
E <= "01"; wait for 10 ns;
E <= "10"; wait for 10 ns;
E <= "11"; wait for 10 ns;
EN <= '0'; wait for 10 ns;
E <= "00"; wait for 10 ns;
E <= "01"; wait for 10 ns;
E <= "10"; wait for 10 ns;
E <= "11"; wait for 10 ns;
end process estimulo;
end;
Capturas del cronograma:
Un saludo.
Resolución de distintos problemas en el ámbito de la ingenieria mediante el uso de la programación. Los programas abarcan todos los niveles de dificultad, así como la mayoría de las herramintas con las que contamos al programar. Si tienes cualquier duda a cerca de un programa, o quieres proponer alguna nueva entrada, no dudes en contactar escribiendo en cualquiera de las entradas del blog ¡Bienvenido!
jueves, 18 de abril de 2013
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario