Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Digitais
INE 5406
Aula 9-P
Descrio em VHDL, sntese e simulao de registradores de deslocamento e contadores.
Observao: a cada borda de relgio ativa, este registrador realiza uma das duas operaes descritas (carga de um valor novo a partir da entrada R ou deslocamento de 1 bit para a direita de seu contedo). Portanto, no est prevista a operao mantm contedo.
INE/CTC/UFSC Sistemas Digitais - semestre 2009/1
slide 9P.2
3
C Q
2
C Q
1
C Q
0
C Q
sel CK Q3 Q2 Q1 Q0
Uma alternativa para se descrever o registrador-deslocador especificado na transparncia anterior utilizar hierarquia. Neste caso, o elemento bsico desta estrutura pode ser o seguinte circuito. Chamemo-lo de muxffd. D0 0
D1 sel clk INE/CTC/UFSC Sistemas Digitais - semestre 2009/1
1
slide 9P.3
slide 9P.4
muxffd
0 1
D C
Q Q
slide 9P.5
serial
3
C Q
2
C Q
1
C Q
0
C Q
sel CK Q2 Q3 ENTITY shiftreg IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0); carga, serial, clk : IN STD_LOGIC; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ); END shiftreg ; Q1 Q0
ARCHITECTURE estrutura OF shiftreg IS COMPONENT muxffd PORT ( D0, D1, sel, clk : IN STD_LOGIC; Q : OUT STD_LOGIC ); END COMPONENT; BEGIN estagio3: muxffd PORT MAP ( serial, R(3), carga, clk, Q(3) ); estagio2: muxffd PORT MAP ( Q(3), R(2), carga, clk, Q(2) ); estagio1: muxffd PORT MAP ( Q(2), R(1), carga, clk, Q(1) ); estagio0: muxffd PORT MAP ( Q(1), R(0), carga, clk, Q(0) ); END estrutura; INE/CTC/UFSC slide 9P.6
Sistemas Digitais - semestre 2009/1
INOUT
BUFFER Para sinal que sada de entidade. O valor do sinal pode ser usado dentro da entidade (i.e., o sinal pode aparecer tanto esquerda quanto direita de uma atribuio)
slide 9P.7
sel 0 1
Operao Q Q>>1 QR
sel 0 1
Operao Q Q>>1 QR
FOR LOOP: usado para gerar um conjunto de atribuies seqenciais (logo, usado dentro de processos) FOR GENERATE: usado para gerar um conjunto de atribuies concorrentes (logo, usado dentro de bloco, mas fora de processos)
slide 9P.10
slide 9P.11
0
CK C clear limpa Q0 Q C
1
Q clear C
2
Q clear
Q1
Q2
Para descrever este tipo de contador em VHDL usando hierarquia, iremos instanciar o flip-flop D Porm, a descrio do flip-flop D em VHDL deve conter ambas sadas, Q e NQ (not Q)
INE/CTC/UFSC Sistemas Digitais - semestre 2009/1
slide 9P.12
C clear
slide 9P.13
ENTITY cont3b IS PORT ( clk, limpa : IN STD_LOGIC; Aout : OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); END cont3b; ARCHITECTURE estrutura OF cont3b IS SIGNAL NQ0, NQ1, NQ2 : STD_LOGIC;
CK limpa
0
Q C clear
1
Q C clear
2
Q C clear
COMPONENT ffDv2 PORT ( D, clk, limpa: IN STD_LOGIC; Q, NQ : OUT STD_LOGIC); END COMPONENT; BEGIN ffD0: ffDv2 PORT MAP (NQ0, clk, limpa, Aout(0), NQ0); ffD1: ffDv2 PORT MAP (NQ1, NQ0, limpa, Aout(1), NQ1); ffD2: ffDv2 PORT MAP (NQ2, NQ1, limpa, Aout(2), NQ2); END estrutura;
INE/CTC/UFSC Sistemas Digitais - semestre 2009/1
Q0
Q1
Q2
slide 9P.14
ARCHITECTURE comportamento OF contador IS SIGNAL conta : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PROCESS (clk, limpa) BEGIN IF limpa = 0 THEN conta <= 0000; ELSIF ( clkEVENT AND clk = 1 ) THEN IF carga = 1 THEN conta <= conta + 1; ELSE No necessrio conta <= conta; (apenas por clareza) END IF; END IF; END PROCESS; INE/CTC/UFSC slide 9P.15 Q <= conta; Sistemas Digitais semestre 2009/1 END comportamento;
ENTITY contnb IS PORT ( R : IN INTEGER RANGE 0 TO 15; clk, limpa , carga : IN STD_LOGIC; Q : BUFFER INTEGER RANGE 0 TO 15 ); END contnb ; ARCHITECTURE comportamento OF contnb IS BEGIN PROCESS (clk, limpa) limpa BEGIN 0 IF limpa = 0 THEN Q <= 0; ELSIF ( clkEVENT AND clk = 1 ) THEN 0 IF carga = 1 THEN Q <= R; 1 ELSE Q <= Q + 1; END IF; END IF; END PROCESS; INE/CTC/UFSC slide 9P.16 END comportamento;
Sistemas Digitais - semestre 2009/1
carga 0 1 X
Operao Q Q+1 QR Q0
slide 9P.17