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

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

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]

DECBCD7SEG.jpg

Simulazione del decodificatore[modifica]

DECBCD7SEG simulation.jpg

NB:

disp[6] corrisponde al segmento A del display

e così via...fino a

disp[0] che corrisponde al segmento G del display