Você está na página 1de 54

IC-UNICAMP

MC 602
Circuitos Lógicos e Organização de Computadores

IC/Unicamp

Prof Mario Côrtes

Capítulo 7
Circuitos sequenciais: latches, flip-
flops, registradores, contadores
MC602 – Mario Côrtes – IC / Unicamp 1
IC-UNICAMP
Tópicos
• Elementos de armazenamento: latches e flip-
flops
• Registradores
• Contadores

MC602 – Mario Côrtes – IC / Unicamp 2


IC-UNICAMP
Sistema sensor / alarme
• Ambiente com sensor de presença  alarme
– Alarme continua ON mesmo se presença OFF
• Sistema pode ser desarmado (Reset)
– Sistema continua desarmado mesmo com Reset inativo

Set
Sensor
On Off
Circuito Alarme
Reset

set

reset

on/off

MC602 – Mario Côrtes – IC / Unicamp 3


Circuitos combinacionais / sequenciais
IC-UNICAMP

• Circuitos combinacionais
– y(t) = f[x(t)]  não há dependência de x(t-1) ou
x(t-2)  não há memória ou histórico
• Alguns problemas não podem ser resolvidos
com circuitos combinacionais
Set
Sensor
On Off
Circuito Alarme
Reset

set

reset

on/off

MC602 – Mario Côrtes – IC / Unicamp 4


IC-UNICAMP
Circuitos sequenciais
• Circuitos sequenciais
– y(t) = f[x(t-1), x(t-2), ....]  depende do histórico
de entradas  novos conceitos: estado ou
memória
• Elemento básico: elemento de memória
• O mais simples e rudimentar:
A B

– Elemento de memória com dois estados estáveis:


A=0 e B=1 ou A=1 e B=0

MC602 – Mario Côrtes – IC / Unicamp 5


IC-UNICAMP
Um elemento básico feito com NORs

Reset

Set Q

• Extensão dos inversores em anel


– permite “carga” de dados:
– set  1
– reset  0

• Base para o Latch Set Reset = Latch SR

MC602 – Mario Côrtes – IC / Unicamp 6


IC-UNICAMP
Latch SR com NORs
R S R Qa Qb
Qa
0 0 Qa(t-1) Qb(t-1) sem mudança
0 1 0 1
1 0 1 0
Qb 1 1 0 0
S

t1 t2 t3 t4 t5 t6 t7 t8 t9 t 10
1
R
0

1
S
0

1
Qa ?
0

1
Qb ?
0

Time

MC602 – Mario Côrtes – IC / Unicamp 7


IC-UNICAMP
Latch SR: considerações
• Forma de onda assume atrasos de
propagação = 0
• Situação de entrada SR=11 é indesejável
• Mas circuito pode ser usado no sistema de
alarmes

• Pode ser interessante ter a função de


habilitar (enable) a entrada de dados ou não
no Latch SR  Latch SR chaveado ou com
enable

MC602 – Mario Côrtes – IC / Unicamp 8


IC-UNICAMP
Latch SR chaveado
R R EN S R Q t +1
Q
0 x x Q(t) (no change)
EN 1 0 0 Q(t) (no change)
1 0 1 0
Q 1 1 0 1 Por que?
S S1 1 1 1 x

1
EN
0
1
R S Q
0
1 EN
S
0
R Q
1
Q ?
0
1
Q ?
0
Time

MC602 – Mario Côrtes – IC / Unicamp 9


IC-UNICAMP
Latch SR com NANDs

~S ~S ~R Qa Qb
Qa
1 1 Qa(t-1) Qb(t-1) sem mudança

0 1 1 0
1 0 0 1
~R Qb 0 0 1 1

• Observar entradas “ativo-baixo”

MC602 – Mario Côrtes – IC / Unicamp 10


IC-UNICAMP
Latch tipo D chaveado

S
D
(Data) Q

Clk D Q t+1
Clk
0 x Q t
Q 1 0 0
R
1 1 1

t1 t2 t3 t4

Clk
D Q
D

Q Clk Q

Time

MC602 – Mario Côrtes – IC / Unicamp 11


IC-UNICAMP
Latch tipo D: outra implementação
Equivalente a Símbolo
D EN
EN
D 1 Q
Q D Q
0
EN Q

EN

Analisar efeito do atraso do inversor nesta


configuração e na configuração com ~EN
MC602 – Mario Côrtes – IC / Unicamp 12
IC-UNICAMP
Tempos de setup e hold em latches
• Valor armazenado (travado) quando EN0
• O que acontece se D está mudando?
– valor travado é imprevisível
• Tempos de guarda D Q

– antes: tempo de setup (preparação) EN Q

– depois: tempo de hold (manutenção)


– dependem dos atrasos internos e da tecnologia
– ver datasheets
t su
th

EN

Q
MC602 – Mario Côrtes – IC / Unicamp 13
IC-UNICAMP
Flip-flops
• Latches são sensíveis ao nível: o estado
pode mudar várias vezes durante EN=1
• É interessante ter circuitos que mudam de
estado apenas uma vez (nas transições do
EN)
• Flip-Flops
– Mestre-Escravo: composto por dois latches
controlados por clocks (enables) complementares
– Edge-triggered / sensível à borda do clock

MC602 – Mario Côrtes – IC / Unicamp 14


IC-UNICAMP
Flip-Flop Mestre Escravo tipo D
Master Slave
Qm Qs
D D Q D Q Q

Clock Clk Q Clk Q Q

Clock

D
D Q
Qm

Q
Q = Qs

Sensível à borda de DESCIDA 15


MC602 – Mario Côrtes – IC / Unicamp
Um Flip-Flop tipo D clássico
IC-UNICAMP
(sensível à borda)
1 P3

P1
2
5 Q

Clock

P2 6 Q
3
D Q

Clock Q

4 P4
D

• ver análise de funcionamento no livro texto

MC602 – Mario Côrtes – IC / Unicamp 16


Latch e FF: comportamento comparado
IC-UNICAMP

D D Q Qa

Clock Clk Q Qa

Clock
D Q Qb
D
Q Qb
Qa

D Q Qc Qb

Q Qc Qc

MC602 – Mario Côrtes – IC / Unicamp 17


IC-UNICAMP
Latches e Flip-Flops: diferenças
• Manifestação da saída Q em função de
variações na entrada D:
– Latch: transparente durante EN (ou Ck) ativos, ou
seja, entrada D passa diretamente para a saída Q
– Flip-Flop: na borda do Clock, o valor presente na
entrada D é transferido para Q
• Instante em que o valor da entrada D é
armazenado
– Latch: valor armazenado é o presente na entrada
D no instante em que EN (ou Ck) é desativado
(operação de latch ou travamento)
– Flip-Flop: na borda do Clock, o valor presente na
entrada D é armazenado
MC602 – Mario Côrtes – IC / Unicamp 18
IC-UNICAMP
Tempos de setup e hold
t su
th

Clk

• Tsu: tempo de guarda antes da borda do


clock (de descida, no exemplo) durante o
qual a entrada D não deve mudar
• Th: idem, para depois da borda do clock

MC602 – Mario Côrtes – IC / Unicamp 19


FF D: borda de subida, com
IC-UNICAMP
Preset e Clear assíncronos

Preset

Q Preset

D Q
Clock
Q
Q
Clear

Clear

MC602 – Mario Côrtes – IC / Unicamp 20


IC-UNICAMP
FF D com Clear síncrono

Clear
D Q Q
D

Clock Q Q

MC602 – Mario Côrtes – IC / Unicamp 21


IC-UNICAMP
Flip-Flop JK

J
D Q Q
K Q Q

Clock

J K Q t +1 J Q
0 0 Q t
0 1 0
K Q
1 0 1
1 1 Q t
Resolve
problema do SR

MC602 – Mario Côrtes – IC / Unicamp 22


IC-UNICAMP
Flip-Flop tipo T
T Q

D Q Q
Equivalente a
T
Q Q T
J Q
Clock
K Q

Clock T Q t+1

T 0 Qt
1 Qt
Q

MC602 – Mario Côrtes – IC / Unicamp 23


IC-UNICAMP
Parâmetros de timing de Flip-Flops

D Q

• tsu, th: tempos de setup e hold


Clock Q
• tcQ: atraso de propagação do clock até Q

MC602 – Mario Côrtes – IC / Unicamp 24


IC-UNICAMP
MC 602

Registradores e Contadores

MC602 – Mario Côrtes – IC / Unicamp 25


IC-UNICAMP Tópicos de Registradores
• Construção usando flip-flops
• Clear assíncrono e Enable
• Registradores deslocamento
• Carga paralela
• Registrador deslocamento universal
• Exemplo de uso em barramento

MC602 – Mario Côrtes – IC / Unicamp 26


IC-UNICAMP Registradores
• Conjunto de elementos de memória (flip-flops) utilizados
para armazenar n bits a cada borda do clock
• Utilizam em comum os sinais de clock e controle

D3 D Q Q3 Símbolo ANSI/IEEE Std 91


Q

D2 D Q Q2

D1 D Q Q1

D0 D Q Q0

Clock Q

MC602 – Mario Côrtes – IC / Unicamp 27


IC-UNICAMP
Registrador (Flip-Flop) com enable
• O registrador apresentado carrega o dado a cada
borda do clock
• Desejável carga controlada por sinal “load”

Load

0
D Q Q
Dado 1
Dado D Q Q
Clk Q
Load Q

Load

Dado D Q Q
RUIM
Clk Q

MC602 – Mario Côrtes – IC / Unicamp 28


Shift Register – Registrador
IC-UNICAMP
de deslocamento
In Q1 Q2 Q3 Q4 = Out
t0 1 0 0 0 0
t1 0 1 0 0 0
t2 1 0 1 0 0
t3 1 1 0 1 0
t4 1 1 1 0 1
t5 0 1 1 1 0
t6 0 0 1 1 1
t7 0 0 0 1 1

Q1 Q2 Q3 Q4
In D Q D Q D Q D Q Out

Clock Q Q Q Q

MC602 – Mario Côrtes – IC / Unicamp 29


IC-UNICAMP
Usos do registrador de deslocamento
• Conversão série  paralelo
• Conversão paralelo  série
– (precisa de carga paralela)
• Multiplicador / divisor por potência de 2

MC602 – Mario Côrtes – IC / Unicamp 30


IC-UNICAMP Shift Register com Carga Paralela
Parallel
output
Q3 Q2 Q1 Q0

D Q D Q D Q D Q

Q Q Q Q

0
1

Serial Clock
input Shift/Load Parallel input

MC602 – Mario Côrtes – IC / Unicamp 31


IC-UNICAMP Shift Register Universal
• Entrada Serial
– Deslocamento a Esquerda
– Deslocamento a Direita
• Carga Paralela
• Saída Paralela

Exercício:
Diagrama do Shift Register Universal de 4 bits
com entradas de controle: NOP (mantém valor), SHL
(esquerda), SHR (direita), LD (carga paralela)

MC602 – Mario Côrtes – IC / Unicamp 32


IC-UNICAMP Registradores em um Barramento
Data

Extern
Bus

Clock
R1 R2 Rk

R1in R1out R2in R2out Rkin Rkout

Control circuit
Function

MC602 – Mario Côrtes – IC / Unicamp 33


IC-UNICAMP
Registradores em um Barramento (3ST)
Bus

R1out R2out

D Q D Q D Q D Q

Q Q Q Q

R1i n R2i n
Clock

R1 R2
FF-D com LD
• Dois registradores (R1 e R2) de 2 bits cada ligados a
um barramento
• Operação R2R1: ativar sinais R2out e R1in
• Transferência completada na borda de subida do clk
MC602 – Mario Côrtes – IC / Unicamp 34
IC-UNICAMP
Barramento com MUX
Bus

R1in R2in Rkin


R1 R2 Rk

Clock

Data
S0
Multiplexers
Sj – 1

• “Escrita” no barramento (inclusive entrada


externa Data)  saído do MUX
• Função semelhante à implementação 3ST
MC602 – Mario Côrtes – IC / Unicamp 35
IC-UNICAMP Tópicos de Contadores
• Contadores síncronos e assíncronos
• Contadores de módulo configurável
• Contadores em anel e Johnson
• Preset e Clear síncronos e assíncronos

MC602 – Mario Côrtes – IC / Unicamp 36


IC-UNICAMP Contadores síncronos / assíncronos
• Contadores assíncronos
– Entrada de clock dos FFs recebe saída de
estágios anteriores
– Estado do contador: transições dos estágios não
simultâneas (em ripple)
– Circuito mínimo mas requer cuidados com
decodificação
• Contadores síncronos
– Entrada de clock dos FF recebe apenas sinal
externo de clock
– Estado do contador: transições sincronizadas
(razoavelmente simultâneas)

MC602 – Mario Côrtes – IC / Unicamp 37


IC-UNICAMP Contador assíncrono: 3 bits DOWN

1 T Q T Q T Q

Clock Q Q Q

Q0 Q1 Q2

Clock

Q0

Q1

Q2

Count 0 7 6 5 4 3 2 1 0

MC602 – Mario Côrtes – IC / Unicamp 38


IC-UNICAMP Contador assíncrono: 3 bits UP
Alternativas para UP/DOWN:
• FF sens. borda de descida
1 T Q T Q T Q
• saída = ~Q
Clock Q Q Q

Q0 Q1 Q2

Clock

Q0

Q1

Q2

Count 0 1 2 3 4 5 6 7 0

Como fazer um contador Up/Down?


MC602 – Mario Côrtes – IC / Unicamp 39
Problemas com contadores assíncronos
IC-UNICAMP

• Saídas dos FFs (estado do contador) com


atrasos cumulativos LSB  MSB
– ver simulação em modo gráfico (vwf) e tabular (tbl)
• Se o estado do contador está sendo
decodificado para detectar valor de contagem
que dispara alguma ação (ex: reset) 
problema
• Ver análise de timing
• Voltar ao assunto: contador módulo N

MC602 – Mario Côrtes – IC / Unicamp 40


IC-UNICAMP Projeto de contador síncrono: 3 bits

Clock cycle Q2 Q1 Q0
Q1 changes
0 0 0 0
1 0 0 1 Q2 changes
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
8 0 0 0

MC602 – Mario Côrtes – IC / Unicamp 41


IC-UNICAMP Contador (up) síncrono: 4 bits
1 T Q T Q T Q T Q
Q0 Q1 Q2 Q3
Clock Q Q Q Q

Clock

Q0

Q1

Q2

Q3

Count 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1

MC602 – Mario Côrtes – IC / Unicamp 42


IC-UNICAMP Inclusão de Enable e Clear

Enable T Q T Q T Q T Q

Clock Q Q Q Q

Clear

Obs: o clear é assíncrono

MC602 – Mario Côrtes – IC / Unicamp 43


IC-UNICAMP FF-T implementado a partir de FF-D

T T Q Q
T D Q Q
Clock Q Clock Q

MC602 – Mario Côrtes – IC / Unicamp 44


Q3 Q2 Q1 Q0
Contador síncrono com FF D
IC-UNICAMP
Enable
Ouput
Carry
Clock

D Q Q0
Enable D0 Q0 1 Q0
Q
FF-T

D Q Q1 D1 Q1 Q0
Q

D Q Q2 D2 Q2 Q1Q0
Q

D Q Q3 D3 Q3 Q 2Q1Q0
Q
Output
Clock carry
MC602 – Mario Côrtes – IC / Unicamp 45
IC-UNICAMP Contadores em cascata
Q3 Q2 Q1 Q0 Q7 Q6 Q5 Q4

Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0
Ouput Ouput
En Enable Enable
Carry Carry
Clock Clock
Clock

Clock
Contagem 12 13 14 15 16 17 18 19

Q3

Output Carry

Q4

MC602 – Mario Côrtes – IC / Unicamp 46


Inclusão
IC-UNICAMP
de Load Enable
D0
0
1 D Q Q0
Q

0
1 D Q Q1
D1
Q

0
1
D Q Q2
D2
Q

0
1 D Q Q3
D3
Q

Output
Load carry

Clock
MC602 – Mario Côrtes – IC / Unicamp 47
IC-UNICAMP
Contadores de módulo 2n
• Algumas possibilidades para módulo M:
– Com o uso de clear/preset
• Contador UP:
– ao atingir valor = M  clear
• Contador DOWN:
– ao atingir valor = 2n – M  preset (1111111)
– Com o uso de Load paralelo
• Contador UP:
– ao atingir contagem máxima  load valor (2n – M)
• Contador DOWN:
– ao atingir contagem = 0  load valor M

• ATENÇÃO: projeto muda se os controles


clear/preset/load são síncronos ou
assíncronos
MC602 – Mario Côrtes – IC / Unicamp 48
IC-UNICAMP Contador mod-6 com Load síncrono

1 Enable
0 D0 Q0
0 D1 Q1
0 D2 Q2
Load
Clock
Clock

Load

Clock

Q0

Q1

Q2

Count 0 1 2 3 4 5 0 1

Obs: o load síncrono de 000 faz o que seria um reset síncrono


MC602 – Mario Côrtes – IC / Unicamp 49
IC-UNICAMP Contador mod-5 com Reset assíncrono
1 T Q T Q T Q
Q0 Q1 Q2

Clock Q Q Q

Clock

Q0

Q1

Q2

Count 0 1 2 3 4 5 0 1 2

Obs: apesar do estado final a ser detectado ser o mesmo do caso anterior,
estado 101 (5), o módulo deste contador é 5 (contagem 0 1 2 3 4 0 1 2 3 4)
MC602 – Mario Côrtes – IC / Unicamp 50
Problemas com contadores assíncronos
IC-UNICAMP

• Como as saídas dos flip-flops são


desalinhadas no tempo, vários estados
intermediários podem ocorrer
– ver simulação em modo gráfico (vwf) e tabular (tbl)
• A decodificação do estado desejado para fins
de acionar clear/preset/load assíncronos pode
acontecer de forma espúria durante estados
transientes.
• Uso de clear/preset/load síncronos resolvem o
problema

MC602 – Mario Côrtes – IC / Unicamp 51


IC-UNICAMP Contador BCD de 2 dígitos
1 Enable
Se for usado 0 D0 Q0
Enable 0 D1 Q1
D2 Q2 BCD 0
controlável, é 0
0 D3 Q3
necessário
propagar (via Load
AND) para Clock
estágios Clock
superiores.
Clear Enable
Ver o que 0 D0 Q0
acontece se 0 D1 Q1
BCD 1
Enable desativado 0 D2 Q2
exatamente na 0 D3 Q3
contagem X910
Load
Clock

MC602 – Mario Côrtes – IC / Unicamp 52


IC-UNICAMP
Contador em anel
Q0 Q1 Qn ” 1

Start

D Q D Q D Q

Q Q Q

Clock

(a) An n -bit ring counter

0 1 2 3 Q Q Q Q
Contagem p 4 bits: 1000 0100 0010 0001 1000 0100 0010 0001 ....
y0 y1 y2 y3
Módulo?
2-to-4 decoder
w1 w0 En
MC602 – Mario Côrtes – IC / Unicamp 53
IC-UNICAMP
Contador Johnson
Q0 Q1 Qn – 1

D Q D Q D Q

Q Q Q

Reset
Clock

Para um contador de 4 estágios:


• Qual é a sequência de contagem
• Qual é o módulo do contador?

MC602 – Mario Côrtes – IC / Unicamp 54

Você também pode gostar