Decodificador 7 Segmentos VHDL Quartus II


74LS48

La función básica de un decodificador es detectar la presencia de una determinada combinación de bits (código) en sus entradas y señalar la presencia de este código mediante un cierto nivel de salida.
El decodificador de BCD a siete segmentos es un circuito combinacional que permite un código BCD en sus entradas y en sus salidas activa un display de 7 segmentos para indicar un dígito decimal. Este tipo de decodificador acepta código BCD en sus entradas y proporciona salidas capaces de excitar un display de 7 segmentos para indicar un dígito decimal. Excitando determinadas combinaciones de estos segmentos se pueden obtener cada uno de los diez dígitos decimales. Cada segmento se utiliza para varios dígitos decimales, pero ninguno de ellos se emplea para representar los diez dígitos, por lo tanto cada segmento tiene que activarse mediante su propio circuito de decodificación, que detecta la aparición de cualquier número en el que haya que usar ese segmento. Los segmentos que se deben activar para cada uno de los dígitos:

0: a, b, c, d, e, f
1: b, c
2: a, b, d, e, g
3: a, b, c, d, g
4: b, c, f, g
5: a, c, d, f, g
6: c, d, e, f, g
7: a, b, c
8: a, b, c, d, e, f, g
9: a, b, c, f, g

TABLA DE VERDAD

# Decimal A B C D a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1
10 1 0 1 0 x x x x x x x
11 1 0 1 1 x x x x x x x
12 1 1 0 0 x x x x x x x
13 1 1 0 1 x x x x x x x
14 1 1 1 0 x x x x x x x
15 1 1 1 1 x x x x x x x

TABLAS DE KARNAUGHT

Seg a= A+C+BD+B´D´
AB/CD 00 01 11 10
00 1 0 1 1
01 0 1 1 1
11 X X X X
10 1 1 X X

Seg b= A+A´B´+CD+C´D´
AB/CD 00 01 11 10
00 1 0 1 1
01 1 0 1 0
11 X X X X
10 1 1 X X

Seg c= A+B+C´+D
AB/CD 00 01 11 10
00 1 1 1 0
01 1 1 1 1
11 X X X X
10 1 1 X X

Seg d= A+CD´+B´C+BD´+BC´D
AB/CD 00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

Seg e=AC´D´+B´D´+CD´
AB/CD 00 01 11 10
00 1 0 0 1
01 0 0 0 1
11 X X X X
10 1 0 X X

Seg f= A+BC´+C´D´+BCD´
AB/CD 00 01 11 10
00 1 0 0 0
01 1 1 0 1
11 X X X X
10 1 1 X X

Seg g= A+BC´+CD´
AB/CD 00 01 11 10
00 0 0 0 1
01 1 1 0 1
11 X X X X
10 1 1 X X


Codigo VHDL


CASE temp1 IS
WHEN 0 => digit1 <= "1111110";
WHEN 1 => digit1 <= "0110000";
WHEN 2 => digit1 <= "1101101";
WHEN 3 => digit1 <= "1111001";
WHEN 4 => digit1 <= "0110011";
WHEN 5 => digit1 <= "1011011";
WHEN 6 => digit1 <= "1011111";
WHEN 7 => digit1 <= "1110000";
WHEN 8 => digit1 <= "1111111";
WHEN 9 => digit1 <= "1111011";
WHEN OTHERS => NULL;
END CASE;

Esquematico VHDL