Esercitazioni pratiche di elettronica/Logica Combinatoria/Il decodificatore da BCD a 7 segmenti in VHDL

Indice del libro

Il file VHDL

modifica

Qui di seguito il contenuto di una file in linguaggio vhdl che realizza un decodificatore da BCD a 7 segmenti:

Clausola library

modifica

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all;

Clausola entity

modifica

entity decBCD7seg is

   Port ( d : in std_logic_vector(3 downto 0);
          disp : out std_logic_vector(6 downto 0));

end decBCD7seg;

Clausola architecture

modifica

architecture Behavioral of decBCD7seg is

begin process(d) begin

     case d is
        when "0000" => disp <= "1111110";
        when "0001" => disp <= "0110000";
        when "0010" => disp <= "1101101";
        when "0011" => disp <= "1111001";
        when "0100" => disp <= "0110011";
        when "0101" => disp <= "1011011";
        when "0110" => disp <= "1011111";
        when "0111" => disp <= "1110000";
        when "1000" => disp <= "1111111";
        when "1001" => disp <= "1111011";
        when others => disp <= "0000000";
     end case;

end process;

end Behavioral;


Da cui si evince la relativa facilità di realizzazione di un hardware, se comparata con l'implementazione dello stesso fatta utilizzando blocchi schematici.

Procedura

modifica

1- Creare un nuovo sorgente come VHDL Module

modifica

2- Compilare e se non ci sono errori

modifica

3- Lanciare il processo Create Schematic Symbol

modifica

Ottenendo così il nostro blocco di logica combinatoria pronto per essere inserito in un altro schema.

Schema ottenuto dal processo Create Schematic Symbol

modifica

 

Simulazione del decodificatore

modifica

 

NB:

disp[6] corrisponde al segmento A del display

e così via...fino a

disp[0] che corrisponde al segmento G del display