1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

MAX+plus II

Discussão em 'Programação' iniciada por jtcgomes, 4 de Junho de 2007. (Respostas: 0; Visualizações: 628)

  1. jtcgomes

    jtcgomes Power Member

    Ora viva malta, estou aqui a ter alguns problemas em programação VHDL.
    O objectivo é implementar um descodificador de 7 segmentos em VHDL que permita visualisar os numeros codificados em 4 bits, até 9. Os numeros binários correspondem a valores maiores que 9 o dysplay mostra o valor E. A saida zero_blanck_out È colocado a "1" quando a entrada zero_blank estiver a "1", caso contrario zero_blank_out está a "0".

    Depois de algumas horas com experiencias, cheguei ao seguinte codigo:
    Código:
    library IEEE; 
    use  IEEE.STD_LOGIC_1164.all;
    
    
    ENTITY dec_7segnosso IS
    PORT (D       : IN  STD_LOGIC_VECTOR (3 DOWNTO 0);  -- BCD input
              segment_a, segment_b, segment_c, segment_d, segment_e, 
              segment_f, segment_g : out std_logic);
        END dec_7segnosso;
    
    ARCHITECTURE a OF dec_7segnosso IS
        SIGNAL S : STD_LOGIC_VECTOR(6 DOWNTO 0);
    BEGIN
    PROCESS  (D)
    -- HEX to 7 Segment Decoder for LED Display
    BEGIN
    CASE D IS
        WHEN "0000" => S <= "1000000";
        WHEN "0001" => S <= "1111001";
        WHEN "0010" => S <= "0100100";
        WHEN "0011" => S <= "0110000";
        WHEN "0100" => S <= "0011001";
        WHEN "0101" => S <= "0010010";
        WHEN "0110" => S <= "0000010";
        WHEN "0111" => S <= "1111000";
        WHEN "1000" => S <= "0000000";
        WHEN "1001" => S <= "0010000";
    
    WHEN OTHERS => S <= "0000110";
    END CASE;
    END PROCESS;
    
    -- extract segment data and LED driver is inverted
    segment_a <= NOT S(6);
    segment_b <= NOT S(5);
    segment_c <= NOT S(4);
    segment_d <= NOT S(3);
    segment_e <= NOT S(2);
    segment_f <= NOT S(1);
    segment_g <= NOT S(0);
    
    END a;
    
    
    Onde acham que estou a errar? será k alguem percebe mais disto k eu?

    Obrigadão
     

Partilhar esta Página