jueves, 18 de abril de 2013

Decodifcador VHDL (medidor de nivel, dec. 2:4)

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.

No hay comentarios:

Publicar un comentario