MAX+plus II

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
 
Back
Topo