Mudanças entre as edições de "Códigos VHDL para uso nas Aulas"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 1: Linha 1:
Descrever usando lógica discreta um decodificador de BCD para 7 segmentos.
+
=Decodificador de BCD para 7 segementos=
 +
Descrever usando lógica discreta um decodificador de BCD para 7 segmentos. A interface externa do decodificador deve ter as entradas eA, eB, eC e eD, e as saídas os sete segmentos a, b, c, d, e, f, g.  Neste exemplo esta sendo considerada a logica negativa onde o segmento acesso corresponde a 0 e apagado -> 1.
 +
 
 
[[Arquivo:Dec_7seg.png]]
 
[[Arquivo:Dec_7seg.png]]
==Código VHDL==
+
==Tabela Verdade==
 +
{| class="wikitable"
 +
|+ Entradas e Segmentos
 +
!eD !!eC !!eB !!eA !!Mostrador                              !! a !! b !! c !! d !! e !! f !! g
 +
|--------------------------------------------------------------------------------------------
 +
| 0 || 0 || 0 || 0 ||[[Arquivo:0-7-segment_abcdef.svg|20px|0]] || 0 || 0 || 0 || 0 || 0 || 0 || 1
 +
|-
 +
| 0 || 0 || 0 || 1 ||[[Arquivo:1-7-segment_bc.svg|20px|1]]    || 1 || 0 || 0 || 1 || 1 || 1 || 1
 +
|-
 +
| 0 || 0 || 1 || 0 ||[[Arquivo:2-7-segment_abdeg.svg|20px|2]]  || 0 || 0 || 1 || 0 || 0 || 1 || 0
 +
|-
 +
| 0 || 0 || 1 || 1 ||[[Arquivo:3-7-segment_abcdg.svg|20px|3]]  || 0 || 0 || 0 || 0 || 1 || 1 || 0
 +
|-
 +
| 0 || 1 || 0 || 0 ||[[Arquivo:4-7-segment_bcfg.svg|20px|4]]  || 1 || 0 || 0 || 1 || 1 || 0 || 0
 +
|-
 +
| 0 || 1 || 0 || 1 ||[[Arquivo:5-7-segment_acdfg.svg|20px|5]]  || 0 || 1 || 0 || 0 || 1 || 0 || 0
 +
|-
 +
| 0 || 1 || 1 || 0 ||[[Arquivo:6-7-segment_acdefg.svg|20px|6]] || 0 || 1 || 0 || 0 || 0 || 0 || 0
 +
|-
 +
| 0 || 1 || 1 || 1 ||[[Arquivo:7-7-segment_abc.svg|20px|7]]    || 0 || 0 || 0 || 1 || 1 || 1 || 1
 +
|-
 +
| 1 || 0 || 0 || 0 ||[[Arquivo:8-7-segment_abcdefg.svg|20px|8]]|| 0 || 0 || 0 || 0 || 0 || 0 || 0
 +
|-
 +
| 1 || 0 || 0 || 1 ||[[Arquivo:9-7-segment_abcdfg.svg|20px|9]] || 0 || 0 || 0 || 0 || 1 || 0 || 0
 +
|-
 +
| - || - || - || - || || x || x || x || x || x || x || x
 +
|}
 +
 
 +
 
 +
==Código VHDL (lógica discreta)==
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
 
entity Dec_7seg is
 
entity Dec_7seg is

Edição das 18h01min de 13 de março de 2012

Decodificador de BCD para 7 segementos

Descrever usando lógica discreta um decodificador de BCD para 7 segmentos. A interface externa do decodificador deve ter as entradas eA, eB, eC e eD, e as saídas os sete segmentos a, b, c, d, e, f, g. Neste exemplo esta sendo considerada a logica negativa onde o segmento acesso corresponde a 0 e apagado -> 1.

Dec 7seg.png

Tabela Verdade

Entradas e Segmentos
eD eC eB eA Mostrador a b c d e f g
0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 1 1 0 0 1 1 1 1
0 0 1 0 2 0 0 1 0 0 1 0
0 0 1 1 3 0 0 0 0 1 1 0
0 1 0 0 4 1 0 0 1 1 0 0
0 1 0 1 5 0 1 0 0 1 0 0
0 1 1 0 6 0 1 0 0 0 0 0
0 1 1 1 7 0 0 0 1 1 1 1
1 0 0 0 8 0 0 0 0 0 0 0
1 0 0 1 9 0 0 0 0 1 0 0
- - - - x x x x x x x


Código VHDL (lógica discreta)

entity Dec_7seg is
	port
	(
		eA,eB,eC,eD	: in  bit;
		a,b,c,d,e,f,g	: out bit
	);
end Dec_7seg;

architecture discret_logic of Dec_7seg is


begin
--lógica que implementa o segmento a de um display (0,1,2,3,4,5,6,7,8,9), sem minimização.
-- 0 -> aceso (ON),  1 -> apagado (OFF)

a <= (NOT eD AND NOT eC AND NOT eB AND eA) OR  
		(NOT eD AND eC AND NOT eB AND NOT eA);
--implemente a lógica dos demais segmentos do display (0,1,2,3,4,5,6,7,8,9), sem minimização.
b <= (NOT eD AND eC AND NOT eB AND eA) OR  
		(NOT eD AND eC AND eB AND NOT eA);
c <= (NOT eD AND NOT eC AND  eB AND eA);
d <= (NOT eD AND NOT eC AND NOT eB AND eA) OR  
		(NOT eD AND eC AND NOT eB AND NOT eA) OR
                (NOT eD AND eC AND eB AND  eA);
e <= (NOT eD AND NOT eC AND NOT eB AND  eA) OR  
		(NOT eD AND NOT eC AND  eB AND  eA) OR
                (NOT eD AND eC AND NOT eB AND NOT eA) OR  
		(NOT eD AND eC AND NOT eB AND eA) OR
                (NOT eD AND  eC AND  eB AND  eA) OR  
		( eD AND NOT eC AND NOT eB AND eA);
f <=            (NOT eD AND NOT eC AND NOT eB AND eA) OR  
		(NOT eD AND NOT eC AND  eB AND NOT eA) OR
                (NOT eD AND NOT eC AND eB AND  eA) OR  
		(NOT eD AND  eC AND  eB AND  eA);
g <=            (NOT eD AND NOT eC AND NOT eB AND NOT eA) OR  
		(NOT eD AND NOT eC AND NOT eB AND  eA) OR
                (NOT eD AND  eC AND  eB AND  eA);

end discret_logic;

Código TCL para teste do Hardware

vcom -93 -work work {/home/moecke/ano2012-1/7-SEGv1/Dec_7seg.vhd} vsim work.dec_7seg add wave \ {sim:/dec_7seg/ed } \ {sim:/dec_7seg/ec } \ {sim:/dec_7seg/eb } \ {sim:/dec_7seg/ea } \ {sim:/dec_7seg/g } \ {sim:/dec_7seg/f } \ {sim:/dec_7seg/e } \ {sim:/dec_7seg/d } \ {sim:/dec_7seg/c } \ {sim:/dec_7seg/b } \ {sim:/dec_7seg/a }

force -freeze sim:/dec_7seg/ea 0 0 force -freeze sim:/dec_7seg/eb 0 0 force -freeze sim:/dec_7seg/ec 0 0 force -freeze sim:/dec_7seg/ed 0 0

  1. numero 0

run force -freeze sim:/dec_7seg/ea 1 0 force -freeze sim:/dec_7seg/eb 0 0 force -freeze sim:/dec_7seg/ec 0 0 force -freeze sim:/dec_7seg/ed 0 0

  1. numero 1

run force -freeze sim:/dec_7seg/ea 0 0 force -freeze sim:/dec_7seg/eb 1 0 force -freeze sim:/dec_7seg/ec 0 0 force -freeze sim:/dec_7seg/ed 0 0

  1. numero 2

run force -freeze sim:/dec_7seg/ea 1 0 force -freeze sim:/dec_7seg/eb 1 0 force -freeze sim:/dec_7seg/ec 0 0 force -freeze sim:/dec_7seg/ed 0 0

  1. numero 3

run

  1. complete até 9

</syntaxhighlight>

Circuito RTL a ser testado

RTL do Decodificador de 7 segmentos