Você está na página 1de 17

Universidade Federal de Santa Catarina

Centro Tecnolgico Departamento de Informtica e Estatstica


Curso de Graduao em Cincias da Computao

Sistemas Digitais
INE 5406

Aula 9-P
Descrio em VHDL, sntese e simulao de registradores de deslocamento e contadores.

Prof. Jos Lus Gntzel


guntzel@inf.ufsc.br www.inf.ufsc.br/~guntzel/ine5406/ine5406.html

Registradores de Deslocamento e Contadores


Registrador-Deslocador
Suponha que se deseje descrever em VHDL um registrador capaz de realizar as operaes de carga paralela e deslocamento (de 1 bit) para a direita, conforme descrito na tabela de operaes abaixo.
R sel 0 1 Operao Q Q>>1 QR Comentrio desl. p/ direita Carrega R Q sel ck shiftreg

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

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador
O registrador-deslocamento tem a seguinte estrutura.
R3 1 0 D Q R2 1 0 D Q R1 1 0 D Q R0 1 0 D Q serial

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

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador
Este circuito, por sua vez, poderia ser descrito de D0 0 1 modo hierrquico (1 mux 2:1 + 1 flip-flop D) ou D1 sel como um nico arquivo VHDL (descrio clk comportamental). A segunda descrio prefervel, por ser mais fcil de compreender, ser derivvel da descrio convencional de flip-flops e de envolver menos cdigo. Projeto shiftreg Hierarquia de arquivos VHDL:
shiftreg muxffd
D C Q Q

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.4

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador (componente bsico)
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY muxffd IS PORT ( D0, D1, sel, clk: IN STD_LOGIC; Q: OUT STD_LOGIC ); END muxffd; ARCHITECTURE comportamento OF muxffd IS BEGIN PROCESS (clk) BEGIN IF clkEVENT AND clk = 1 THEN IF sel = 0 THEN Q <= D0; ELSE Q <= D1; END IF; END PROCESS; END comportamento;
INE/CTC/UFSC Sistemas Digitais - semestre 2009/1 D0 D1 sel clk

muxffd
0 1

D C

Q Q

slide 9P.5

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador (de 4 bits, hierrquico)
R3 R2 1 0 D Q 1 0 D Q R1 1 0 D Q R0 1 0 D Q

LIBRARY ieee; USE ieee.std_logic_1164.all;

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

Por que BUFFER?

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

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Modos Possveis para os Sinais que so Portas de Entidade
Modo IN OUT Uso Para sinal que entrada de entidade Para sinal que sada de entidade. O valor do sinal no pode ser usado dentro da entidade (i.e., o sinal s pode aparecer esquerda de uma atribuio) Para sinal que tanto entrada quanto sada de entidade

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)

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.7

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador (descr. comportamental)
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY shiftreg2 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 shiftreg2; ARCHITECTURE comportamento OF shiftreg2 IS BEGIN PROCESS (clk) BEGIN IF clkEVENT AND clk = 1 THEN IF sel = 1 THEN Q <= R; ELSE Q(0) <= Q(1); Q(1) <= Q(2); Q(2) <= Q(3); Q(3) <= serial; END IF; END PROCESS; INE/CTC/UFSC slide 9P.8 END comportamento; Sistemas Digitais - semestre 2009/1

sel 0 1

Operao Q Q>>1 QR

Comentrio desl. p/ direita Carrega R

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Registrador-Deslocador (n bits, descr. comportamental)
ENTITY shiftreg3 IS GENERIC ( N : INTEGER := 8 ); PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); sel, serial, clk : IN STD_LOGIC; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ); END shiftreg3; ARCHITECTURE comportamento OF shiftreg3 IS BEGIN PROCESS (clk) BEGIN IF clkEVENT AND clk = 1 THEN IF sel = 1 THEN Q <= R; ELSE Genbits: FOR i IN 0 TO N-2 LOOP Q(i) <= Q(i+1); END LOOP; Q(N-1) <= serial; END IF; END IF; END PROCESS; INE/CTC/UFSC END comportamento; slide 9P.9
Sistemas Digitais - semestre 2009/1

sel 0 1

Operao Q Q>>1 QR

Comentrio desl. p/ direita Carrega R

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


FOR LOOP x FOR GENERATE

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)

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.10

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Experimento 1
Descrever em VHDL, sintetizar e simular para FPGAs Stratix II o um registrador de deslocamento para a direita da transparncia 7P.9. Acrescentar um reset assncrono ativado com lgica direta.
1. Levantar as seguintes informaes: Nmero de ALUTs Dedicated Registers: Caminho crtico Atrasos crticos (tco, tsu, th) 2. Simular este registrador

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.11

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Contador de 3 bits (ripple)
Usando flip-flops D
D Q D Q D Q

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

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Flip-flop D (com sadas Q e NQ)
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ffDv2 IS PORT ( D, clk, limpa : IN STD_LOGIC; Q, NQ : OUT STD_LOGIC); END ffDv2; ARCHITECTURE comportamento OF ffDv2 IS BEGIN PROCESS (clk, limpa) BEGIN IF limpa=1 THEN Q <= 0; NQ <= 1; ELSIF clkEVENT AND clk = 1 THEN Q <= D; NQ <= not D; END IF; END PROCESS; END comportamento;
D Q

C clear

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.13

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Contador de 3 bits (ripple)
LIBRARY ieee; USE ieee.std_logic_1164.all;

(Usando flip-flops com sadas Q e NQ)

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

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Contador de 4 bits
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY contador IS PORT ( clk, limpa , carga : IN Q : OUT END contador ; STD_LOGIC; STD_LOGIC_VECTOR( 3 DOWNTO 0) );

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;

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Contador Assncrono (ripple) de n bits
LIBRARY ieee; USE ieee.std_logic_1164.all;

(Com carga paralela e usando sinais do tipo integer)

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

Comentrio Conta (incr.contedo) Carrega R Reseta contedo assincronamente

Prof. Jos Lus Gntzel

Registradores de Deslocamento e Contadores


Experimento 2
Descrever em VHDL, sintetizar e simular para FPGAs Stratix um registrador contador da transparncia anterior.
1. Levantar as seguintes informaes: Nmero de ALUTs Dedicated Registers: Caminho crtico Atrasos crticos (tco, tsu, th) 2. Simular este registrador

INE/CTC/UFSC Sistemas Digitais - semestre 2009/1

slide 9P.17

Prof. Jos Lus Gntzel