joão paulo carmo, phd senior researcher university of
TRANSCRIPT
Circuitos sequênciais
Campus de Azurém, 4800-058 Guimarães, PORTUGAL
Phone: +351-253-510190, Fax: +351-253-510189
João Paulo Carmo, PhD
Senior Researcher
University of Minho
R&D ALGORITMI Centre
Micro/Nanotecnology and Biomedical Applications
Flip-flops
Necessidade de circuitos
Saídas actuais dependerem da história passada
Z[k.T] = f{ A(k.T) , Z[(k-1).T] }
Z[k.T] : saída actual, no instante k.T
A[k.T] : entrada actual, no instante k.T
Z[(k-1).T] : saída passada, instante (k-1).T
Impossibilidade com lógica combinacional
Circuitos com memória
Multivibrador biestável
Multivibradores
Classes de multivibradores
Biestáveis
2 estados estáveis Capacidade de memorização
Monoestáveis Apenas 1 estado estável
Temporização Linhas de atraso digital
Astáveis Sem estados estáveis
Geradores de sinais de relógio
Multivibradores
Multivibradores biestáveis
Assíncronos
Síncronos
Activados por nível
Biestáveis síncronos activados por flanco
Flip-flop
Activados por flanco
Todos os outros
Latch (báscula)
1 0
A B
Circuito com memória mais rudimentar
Com dois estados estáveis
Sem entradas
Com pouco (ou nenhum) interesse
0 1
A B
A = 1 e B = 0 A = 0 e B = 1 Circuito bloqueado num destes estádos
Latched
Multivibradores
Latch (báscula) SR (set/reset) com NOR
Qb
Qa
S
R
Saídas t=kT Qb S Qa R
0 0
0 1
1 0
1 1
Multivibradores
Latch (báscula) SR (set/reset) com NOR
Saídas t=kT
Qb
Qa
S
R
Qb S Qa R
0 Qa(t-T) 0
0 1
1 0
1 1
Qb(t-T) Memoriza Qa
Qb
Multivibradores
Flip-flops
Latch (báscula) SR (set/reset) com NOR
Saídas t=kT
Qb
Qa
S
R
Qb S Qa R
0 Qa(t-T) 0
0 0 1
1 0
1 1
Qb(t-T)
1 Desactiva Qa
Latch (báscula) SR (set/reset) com NOR
Saídas t=kT
Qb
Qa
S
R
Qb S Qa R
0 Qa(t-T) 0
0 0 1
1 1 0
1 1
Qb(t-T)
1
0 Activa Qa
Multivibradores
Latch (báscula) SR (set/reset) com NOR
Saídas t=kT
Qb
Qa
S
R
Qb S Qa R
0 Qa(t-T) 0
0 0 1
1 1 0
1 0 1
Qb(t-T)
1
0
0 A evitar
Multivibradores
Q
Q
S
R
Latch (báscula) SR (set/reset) com NOR
Saídas t=kT Qb S Qa R
0 Qa(t-T) 0
0 0 1
1 1 0
1 0 1
Qb(t-T)
1
0
0
Q = Qa
Q = Qb
S
R Q
Q
Multivibradores
Qb
Qa
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
1 1
Qb(t-T) Memoriza Qa
Qb
Multivibradores
Qb
Qa
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
0 0
Qb(t-T)
1 0 Activa Qa
Multivibradores
Qb
Qa
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
0 0
Qb(t-T)
1 0
0 1 Desactiva Qa
Multivibradores
Qb
Qa
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
0 0
Qb(t-T)
1 0
0 1
A evitar 1 1
Multivibradores
S
R Q
QS
R
Q
Q
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
0 0
Qb(t-T)
1 0
0 1
1 1
Q = Qa
Q = Qb
Multivibradores
S
R Q
QS
R
Q
Q
S
R
Latch (báscula) SR (set/reset) com NAND
Saídas t=kT Qb S Qa R
1 Qa(t-T) 1
0 1
1 0
0 0
Qb(t-T)
1 0
0 1
1 1
Entradas activas ao nível baixo
Multivibradores
Latch (báscula) SR (set/reset) com NAND
Entradas activas ao nível alto
S
R Q
Q
Q
Q
S
R
S
R
S Q(t) R
0 Q(t-T) 0
0 1
1 0
1 1
0
1
1
Multivibradores
Latch SR (set/reset) com enable
S Q(t) R
0 Q(t-T) 0
0 0 1 1 1 0 1 X 1
enable
1
1 1 1
0 X X
enable
S
R
Q
Q
S
R
S
R Q
Q
enable EN
Saídas t=kT
Q(t-T)
Multivibradores
Latch tipo D (data)
clock
S
RQ
Q
S
R
D
(data)
(enable)
D
CLK Q
Q
clock
Saídas t=(k+1).T
CLK Q(t) D
0 Q(t-T) X
1 0
1 1
Retêm o valor
Q(t-T) anterior
Multivibradores
Latch tipo D (data)
clock
S
RQ
Q
S
R
D
(data)
(enable)
D
CLK Q
Q
clock
Saídas t=(k+1).T
CLK Q(t) D
0 X
1 0
1 1
Memoriza 0 0
Q(t-T)
Multivibradores
Latch tipo D (data)
clock
S
RQ
Q
S
R
D
(data)
(enable)
D
CLK Q
Q
clock
Saídas t=(k+1).T
CLK Q(t) D
0 X
1 0
1 1 Memoriza 1
0
Q(t-T)
1
Multivibradores
Latch tipo D (data)
Diagrama temporal
t0
t1
t2
t3
t4
D
clock
Q
CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data)
Enquanto clock=0, Q(t) não varia (valor anterior)
CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data)
Enquanto clock=1, Q(t)=D (Q segue o valor de D)
CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data)
Quando clock transita de 1 para 0, Q(t)=Q(t-T)
CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
retêm Q(t-T)
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data) CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Enquanto clock=0, Q(t) não varia (valor anterior)
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data) CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Enquanto clock=1, Q(t)=D (Q segue o valor de D)
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data) CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Quando clock transita de 1 para 0, Q(t)=Q(t-T)
retêm Q(t-T)
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data) CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
Enquanto clock=0, Q(t) não varia
Multivibradores
t0
t1
t2
t3
t4
D
clock
Q
Latch tipo D (data) CLK Q(t) D
0 X
1 0
1 1
0
Q(t-T)
1 Diagrama temporal
As ideias anteriores repetem-se……
Multivibradores
Latch tipo D (data)
Claramente trata-se de um biestável síncrono
t0
t1
t2
t3
t4
D
clock
Q
clock
S
RQ
Q
S
R
D
(data)
(enable)
Infelizmente, activado por nível Problemas não contemplados
Atraso de propagação no inversor Sinais de frequência muito elevada
Multivibradores
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
por 2 latch D anteriores
CLK
S
RQ
Q
S
R
D
CLK
S
RQ
Q
S
R
Dinput
clock
Qm
Qs
clock
master slave
por 1 inversor adicional
Constituído
Multivibradores
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
clock
input
Qm
Qs
clock
0 T 2T 3T
Flip-flop mestre-escravo (com 2 latch tipo D)
Análise temporal
Multivibradores
clock
input
Qm
Qs
clock
0 T 2T 3T
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
Análise temporal
Mestre
Sem novidade
Depende de
input (D)
clock (CLK)
Multivibradores
clock
input
Qm
Qs
clock
0 T 2T 3T
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
Análise temporal
Escravo
Análise fácil
Depende de
Qm (D)
clock (CLK)
Multivibradores
clock
input
Qm
Qs
clock
0 T 2T 3T
clock
input
Qm
Qs
clock
0 T 2T 3T
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
Sensibilidade
clock:
Multivibradores
clock
input
Qm
Qs
clock
0 T 2T 3T
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
Sensibilidade
clock:
flanco
descendente
Multivibradores
D
Q
Q
clock
input
Qm
Qs
clock
0 T 2T 3T
D
CLK Q
Q D
CLK Q
Q
clock
inputQ
m
master slaveQ
s
clock
Qm
Flip-flop mestre-escravo (com 2 latch tipo D)
Sensibilidade
clock:
flanco
descendente
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Q(t) D
X
Saídas t=(k+1).T
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Q(t) D
X X Q(t-T)
Saídas t=(k+1).T
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Q(t) D
X X
0 0
Q(t-T)
Saídas t=(k+1).T
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Q(t) D
X X
0
1
0
Q(t-T)
1
Saídas t=(k+1).T
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Q(t) D
X X
0
1
0
Q(t-T)
1
Saídas t=(k+1).T
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
clock Qn+1 D
X X
0
1
0
Qn
1
No estado n+1
clock
D
Q
1a
1b
2a
2b
3a
3b Q
S
R
D
Q
Q
Multivibradores
clock
Qa
Qb
Qc
input
D Q
Q
D Q
Q
D Q
QCLK
input
clock
Qa
Qb
Qc
Comparação latch D e flip-flop D
Multivibradores
clock
Qa
Qb
Qc
input
D Q
Q
D Q
Q
D Q
QCLK
input
clock
Qa
Qb
Qc
Comparação latch D e flip-flop D
Multivibradores
clock
Qa
Qb
Qc
input
D Q
Q
D Q
Q
D Q
QCLK
input
clock
Qa
Qb
Qc
Comparação latch D e flip-flop D
Multivibradores
clock
Qa
Qb
Qc
input
D Q
Q
D Q
Q
D Q
QCLK
input
clock
Qa
Qb
Qc
Comparação latch D e flip-flop D
Multivibradores
clockQ
Q
2apreset
clear
D
Flip-flop D com sensibilidade ao flanco ascendente
Com sinais de
preset clear
Assíncronos
Multivibradores
clockQ
Q
2apreset
clear
D
Flip-flop D com sensibilidade ao flanco ascendente
Com sinais de
D Q
Q
preset
clear
preset
clear
Assíncronos
Multivibradores
Flip-flop D com sensibilidade ao flanco ascendente
Com clear
Síncrono
D
Q
Q
clear
D
clock
Só limpa o conteúdo no próximo flanco Introduz atraso
Até um período de clock
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Mas mais flexível
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
clock Qn+1 K
0 Qn
Comportamento J
0 FF D
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
clock Qn+1 K
0
1 0
Qn
Comportamento J
0
0
Multivibradores
J Q
QK
clock
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
clock Qn+1 K
0
1
0
0
Qn
1
Comportamento J
0
0
1
Multivibradores
J Q
QK
clock
Qn
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
clock Qn+1 K
0
1
0
0
Qn
1
Comportamento
1
J
0
0
1
1 FF D
Pode dar jeito
Multivibradores
J Q
QK
clock
Qn
Flip-flop JK
Permite implementar o flip-flop D
Permite activar/desactivar a saída
Mas mais flexível
clock Qn+1 K
0
1
0
0
Qn
1
Comportamento
1
J
0
0
1
1
X X X Qn
Multivibradores
J Q
QK
clock
Flip-flop JK
Implementação
clock
D
K
J
Q
Q
Q
Q
Multivibradores
Flip-flop T (toogle)
Permite trocar (ou não) a saída no estado anterior
Controlo: entrada T
T Q
Q
Multivibradores
Flip-flop T (toogle)
Permite trocar (ou não) a saída no estado anterior
Controlo: entrada T
T Q
Q
Equivalente a
J Q
QK
T
clock
Multivibradores
Flip-flop T (toogle)
Permite trocar (ou não) a saída no estado anterior
Controlo: entrada T
clock Qn+1 T
0 Qn
Comportamento
T Q
Q
Retém valor
Multivibradores
Qn
Flip-flop T (toogle)
Permite trocar (ou não) a saída no estado anterior
Controlo: entrada T
clock Qn+1 T
0
1
Qn
Comportamento
T Q
Q
Troca valor
Multivibradores
Qn
Flip-flop T (toogle)
Permite trocar (ou não) a saída no estado anterior
Controlo: entrada T
clock Qn+1 T
0
1
Qn
Comportamento
X X Qn
T Q
Q
Sem alteração
Multivibradores
clock
T
Q
Flip-flop T (toogle)
Exemplo T Q
Qclock
Multivibradores
clock
T
Q
Flip-flop T (toogle)
Exemplo T Q
Qclock
Instantes para troca de valor Q
Multivibradores
Monostáveis
Multivibradores
Biestáveis
2 estados estáveis
acção de
impulso externo
Monostáveis
Biestáveis
Multivibradores
2 estados estáveis
Dispara para estado instável Monostável
Regressa ao único estado estável
τ
Monostáveis
Implementação
Multivibradores
τ = ln(2)RC
RRESET
DIS
THR
TRIG
GND CTRL
Vdd
OUT
C
C2
trigger
Sinais
trigger
OUT
DISdescarga
Vdd
τ
Aplicações
Contadores digitais
Registos de deslocamento
Contadores digitais
Registos de dados
Comunicações digitais
Implementação de barramentos (bus)
Baralhadores (scramblers)
Geradores/detectores de CRC
Multivibradores
Registos de deslocamento
Aplicações
Contadores digitais
Registos de dados
Comunicações digitais
Implementação de barramentos (bus)
Baralhadores (scramblers)
Geradores/detectores de CRC
Multivibradores
Contadores digitais
Contadores
Assíncronos
clock é o sinal de sincronismo do 1º flip-flop
clock
Q Q Q
Q1
Q2
Q3
FF1
FF2
FF3
Síncronos
Contadores assíncronos
clock dos outros flip-flops é a saída do a montante
Circuito mínimo Requer cuidado com descodificação
Transições não simultâneas
clock
Q1
Q2
Q3
Contadores digitais
Contadores assíncronos
8 estados (28) clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
FFs sem atraso
Q1
clock
Q1
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso
clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Saída Q1
frequência (clock) = 2 frequência (Q1)
Q2
clock2
= Q1
Q2
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso
clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Saída Q2
frequência (Q1) = 2 frequência (Q2)
Q3
clock3
= Q2
Q3
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso
clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Saída Q3
frequência (Q2) = 2 frequência (Q3)
clock
Q1
Q2
Q3
1 0 1 0 1 0 1 0
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Contagens
1 1 0 0 1 1 0 0
clock
Q1
Q2
Q3
1 0 1 0 1 0 1 0
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Contagens
1 1 0 0 1 1 0 0
clock
Q1
Q2
Q3
1 0 1 0 1 0 1 0
1 1 1 1 0 0 0 0
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Contagens
1 1 0 0 1 1 0 0
clock
Q1
Q2
Q3
1 0 1 0 1 0 1 0
1 1 1 1 0 0 0 0
111 011 101 001 110 010 100 000 111
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Contagens
1 1 0 0 1 1 0 0
clock
Q1
Q2
Q3
1 0 1 0 1 0 1 0
1 1 1 1 0 0 0 0
7 3 5 1 6 2 4 0 7
Contadores digitais
Contadores assíncronos
8 estados (28)
FFs sem atraso clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
Contagens
clock
Q1
Q2
Q3
Contadores digitais
Contadores assíncronos
8 estados (28) clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
FFs com atraso
Transições não
coincidentes
ANTES
clock
Q1
Q2
Q3
Contadores digitais
Contadores assíncronos
8 estados (28) clock
D Q
Q
D Q
Q
D Q
Q
Q1
Q2
Q3
FFs com atraso
Transições não
coincidentes
DEPOIS
Contadores digitais
Contadores Síncronos
clock é o sinal de sincronismo de todos os flip-flops
Transições sincronizadas (razoavel/ simultâneas)
clock
Q Q QQ
1Q
2Q
3
FF1
FF2
FF3
Exige lógica não tão trivial
Contadores digitais
Contador síncrono de 0 a 7 (contador de módulo 8)
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Q1 muda todos
os períodos
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Q1 muda todos
os períodos
Flip-flop T sempre
activado
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Mudanças em Q2
a cada 2 períodos
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Mudanças em Q2
a cada 2 períodos
Flip-flop T
activado por Q1
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Mudanças em Q3
a cada 4 períodos
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Saídas
Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 1
3 0 1
4 1 0
5 1 0
6 1 1
7 1 1
0
1
0
1
0
1
0
1
8 0 0 0
Mudanças em Q3
a cada 4 períodos
Flip-flop T
activado por Q2Q1
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Implementação
clock
QT
Q
Q1
1QT
Q
Q2
QT
Q
Q3
Q1.Q
2
Contador síncrono de 0 a 7 (contador de módulo 8)
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Inicializar Q3Q2Q1Q0=1000
1 0 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
No flanco ascendente do clock (óbvia/ INIT=1)
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
No flanco ascendente do clock (Q2=Q3, Q1=Q2….)
0
1 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Ideias repetem-se nos flanco ascendente do clock
0 0
1 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Ideias repetem-se nos flanco ascendente do clock
0 0
0
1
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
O valor inicial 1000 volta a estar em Q3Q2Q1Q0
1 0 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
As contagens repetem-se ao fim de 4 pulsos de clk
1 0 0 0
0 0
0
1
0 0
1 0
0
1 0 0
0 1
1 0
0
1 0 0
8 1 2 4 2 4
1 0 0 0
8
1 0 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Pode-se reiniciar Q3Q2Q1Q0=1000 em qq instante
1 0 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Pode-se reiniciar Q3Q2Q1Q0=1000 em qq instante
1 0 0 0
0 0
0
1
0 0
1 0
0
1 0 0
0 1
1 0
0
1 0 0
8 1 2 4 2 4
1 0 0 0
8 8 4
0
1 0 0
Contadores digitais
Contador em anel (ring counter)
Supondo que se ativa (ativo a 0) no início o INIT
clock
INIT
Q0
Q3
Q2
Q1
D Q
Q0
clock
D Q
Q3
D Q
Q2
D Q
Q1
PRESET RESET RESET RESET
INIT
Depois recomeça tudo de novo
8 4
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q0 muda a cada
ciclo de clock
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q0 muda a cada
ciclo de clock
clock
T Q
Q
Q0
Flip-flop T com
sempre ativado
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q1 antes de mudar
precede Q0=1
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q1 antes de mudar
precede Q0=1
Flip-flop T
ativado por Q0
T Q
Q
Q1
clock
T Q
Q
Q0
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q2 antes de mudar
precede Q0=1
e Q1=1
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q2 antes de mudar
precede Q0=1
e Q1=1
Flip-flop T
ativado por Q0.Q1
T Q
Q
Q2
T Q
Q
Q1
clock
T Q
Q
Q0
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q3 antes de mudar
precede Q0=1
e Q1=1 e Q2=1
Contadores digitais
Contador síncrono de módulo 2N = 16 (de 0 a 15) Q1 Ciclo # Q3 Q2
0 0 0
1 0 0
2 0 0 3 0 0
4 0 1 5 0 1
6 0 1 7 0 1
0
0
1 1
0 0
1 1
8 1 0 0
9 1 0 10 1 0
11 1 0 12 1 1
13 1 1 14 1 1
0 1
1 0
0 1
15 1 1 1
Q0
0
1
0 1
0 1
0 1
0
1 0
1 0
1 0
1
Q3 antes de mudar
precede Q0=1
e Q1=1 e Q2=1
Flip-flop T ativado
por Q0.Q1.Q2
T Q
Q
Q2
T Q
Q
Q1
clock
T Q
Q
Q0
T Q
Q
Q3
Registros de dados
Armazena N bits ao flanco ascendente Requer N flip-flops como elementos de memória
Em comum têm: Sinal de control clock
clock
D Q
Q
D Q
Q
D Q
Q
D Q
Q
Q1
D1
Q2
D2
Q3
D3
Q4
D4
Ex: registro de 4 bits
Registros de dados
Desvantagem Armazena o dado a cada flanco ascendente
D Q
Q
Q1
dado
clock
D Q
Q
Q1
dado
clock
Registros de dados
Desvantagem Armazena o dado a cada flanco ascendente
Registros de dados
Como obviar o problema anterior
Controlar o armazenamento
Utilizando um sinal adicional, load
D Q
Q
Q
clock
dado
load
0
1
Conjuntamente com um multiplexer 2:1
D Q
Q
dado
clock
load
Registros de deslocamento
Úteis numa panóplia alargada de aplicações
Tipos
Entrada paralelo – Saída paralelo (PIPO)
Barramentos (bus)
Entrada paralelo – Saída série (PISO)
Transmissor de linha série (p.ex., RS232)
Entrada série – Saída paralelo (SIPO)
Receptor de linha série (p.ex., RS232)
Entrada série – Saída série (SISO) Leitura/escrita sequencial de dados
Registros de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
Q1 Q3 Q2
t0
t1
t2
t3
t4
t5
t6
t7
t8
in
1
0
1
1
1
0
X
X
(=out)
X
Deslocamento de 101110
Deslocamento de 101110
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1
t2
t3
t4
t5
t6
t7
0
t8
in
1
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Instante t0:
P.ex.: limpou conteúdo dos FFs
out(t0) = X
1 0 0 0
X X X
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2
t3
t4
t5
t6
t7
0
0
t8
in
1
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t1:
Q3(t1) = in(t0)
out(t1) = X
0 1 0
1
0
X X
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3
t4
t5
t6
t7
0
0
0
t8
in
1
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110 Deslocamento de 101110
Instante t2:
Q3(t2) = in(t1)
out(t2) = X
1 0 1 0
X
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t3:
Q3(t3) = in(t2)
1
out(t3) = in(t0)
1 1 0 1
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t4:
Q3(t4) = in(t3)
out(t4) = in(t1)
1
1 1 0
1 1 1 0
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t5:
Q3(t5) = in(t4)
out(t5) = in(t2)
1
1 1 0
1 1 1
0 1 1 1
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t6:
Q3(t6) = in(t5)
out(t6) = in(t3)
1
1 1 0
1 1 1
0 1 1
X 0 1 1
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t7:
Q3(t7) = X
out(t7) = in(t4)
1
1 1 0
1 1 1
0 1 1
X 0 1
X X 0 1
Registos de deslocamento
Entrada série – Saída série (SISO)
Desloca os dados horizontalmente
Q1 Q3 Q2
t0 0 0
t1 1 0
t2 0 1
t3 1 0
t4
t5
t6
t7
0
0
0
1
t8
in
0
1
1
1
0
X
Entrada
de dados
(in)
clock
D Q
Q
Q3
D Q
Q
Q2
D Q
Q
Q1
Saída
de dados
(out)
(=out)
X
X
Deslocamento de 101110
Instante t8:
Q3(t8) = X
out(t8) = in(t5)
1
1 1 0
1 1 1
0 1 1
X 0 1
X X 0
X X X 0
Registros de deslocamento
Entrada série – Saída paralelo (SIPO)
store
D Q D Q D Q
parallel out
P3
P2
P1
serial in
clock
D Q
Q3
D Q
Q2
D Q
Q1
Andar de
colocação
dos dados
Andar de
memorização
dos dados
Requer 2 andares: Colocação dos dados
Memorização dos dados
Registros de deslocamento
SIPO
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
serial in
clock
D Q
Q3
D Q
Q2
D Q
Q1
Andar de
colocação
dos dados1º andar: SISO
t1 t2 t3
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
Registos de deslocamento
SIPO serial in
clock
D Q
Q3
D Q
Q2
D Q
Q1
Andar de
colocação
dos dados1º andar: SISO
serial in: 101 t1 t2 t3
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
1 10
X
X X
1 10X
01X
1X
Registos de deslocamento
SIPO serial in
clock
D Q
Q3
D Q
Q2
D Q
Q1
Andar de
colocação
dos dados1º andar: SISO
serial in: 101 t1 t2 t3
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
1 10
X
X X
1 10X
01X
1X
Registos de deslocamento
SIPO serial in
clock
D Q
Q3
D Q
Q2
D Q
Q1
Andar de
colocação
dos dados1º andar: SISO
serial in: 101 t1 t2 t3
2º andar: próxima etapa
Ordenar a memorização dos dados Q3Q2Q1
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
1
0
1
Registos de deslocamento
SIPO
2º andar
Armazenar 101 t1 t2 t3
store
D Q D Q D Q
parallel out
P3
P2
P1
Andar de
memorização
dos dados
Q3
Q2
Q1
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
1
0
1
1
0
1
Registos de deslocamento
SIPO
2º andar
Armazenar 101 t1 t2 t3
store
D Q D Q D Q
parallel out
P3
P2
P1
Andar de
memorização
dos dados
Q3
Q2
Q1
clock
serial in
Q3
Q2
Q1
store
P3
P2
P1
1
0
1
1
0
1
Registos de deslocamento
SIPO
2º andar
Armazenar 101 t1 t2 t3
store
D Q D Q D Q
parallel out
P3
P2
P1
Andar de
memorização
dos dados
Q3
Q2
Q1
Registros de deslocamento
Entrada paralelo – Saída série (PISO)
store/shift
serial out
clock
D Q D Q D Q
Q3
Q2
Q1
P3
S
R
S
R
S
R
P2
0
1
P1
0
1
Requer 2 etapas: Armazenamento dos dados
Deslocamento dos dados (SISO)
Registros de deslocamento
Entrada paralelo – Saída série (PISO)
store/shift
serial out
clock
D Q D Q D Q
Q3
Q2
Q1
P3
S
R
S
R
S
R
P2
0
1
P1
0
1
Requer 2 etapas: Armazenamento dos dados Deslocamento dos dados (SISO)
Requer N-1 multiplexers:
select
0
1
A
B
Z
select
A
B
Z
store/shift
serial out
clock
D Q D Q D Q
Q3
Q2
Q1
P3
S
R
S
R
S
R
P2
0
1
P1
0
1= 0
Registros de deslocamento
Entrada paralelo – Saída série (PISO)
Etapa 1: armazenamento dos dados
store = 1 (store/shift = 0)
store/shift
serial out
clock
D Q D Q D Q
Q3
Q2
Q1
P3
S
R
S
R
S
R
P2
0
1
P1
0
1= 1
Registos de deslocamento
Entrada paralelo – Saída série (PISO)
Etapa 2: deslocamento dos dados
shift = 1 (store/shift = 1)