CH 03
CH 03
Capítulo 3:
Projeto Lógico Sequencial e
Controladores
• Circuitos Sequenciais
– As saídas não dependem somente de suas entradas 1
a
(como em um circuito combinacional), mas também do 0 Circuito Digital 1
b Combinacional F
histórico de mudança das entradas.
• Circuitos que armazenam informação na forma de estados,
usualmente codificados em binário.
– Exemplo: um circuito de contagem em binário. 1
a
• Nesse capítulo: 0 Circuito Digital
?
b Sequencial F
– Flip-flops: um novo bloco construtivo capaz de armazenar 1 bit.
– Registradores: combinação de blocos de flip-flops de forma a
Devemos
construir blocos sequenciais capazes de armazenar vários bits.
conhecer o
– FSM - Finite State Machines: iremos descrever o passado das
comportamento sequencial na forma de máquinas de estados entradas para
finitos saber o valor da
– Converter uma FSM em um controlador – um circuito saída.
sequencial composto por um registrador e um circuito
combinacional
Digital Design
Copyright © 2006
Frank Vahid Note: Slides with animation are denoted with a small red "a" near the animated items
2
Exemplo de um Sistema que necessita um circuito 3.2
sequencial (armazenamento)
• Sistema de chamada de Botão Luz Azul
Chamada Armazena
comissários de bordo Botão Bit
Cancela
– Botão de chamada: luz acende
• Fica ligada após soltar o botão 1. Botão chamada pressionado –
acende a luz
– Botão cancelar: luz se apaga Botão Luz Azul
– Porta lógica para implementar esse Chamada Armazena a
Botão Bit
circuito? Cancela
S 0 S 1 S 1 S 0
0Q S 1 0Q 1Q 1Q 1Q
0 0 0 1 1
t t t t t
1
S
0
1
t
0
1
Q
0
Digital Design
Copyright © 2006 4
Frank Vahid
Armazenamento de 1 Bit com o Latch SR
S (set) SR latch
R (reset)
S=0 S=0 S=1 S=0
t t t t Relembrando…
1 1 0 0 0
0 0 1 1 1
0
1
1 1 0 0 0
0 Q 0 Q 1 1 X
Q Q
1
S
0
R1
0 a
t 1
0
1
Q
0
Sim !
Digital Design
Copyright © 2006 5
Frank Vahid
Armazenamento de 1 Bit com o Latch SR
• O latch SR pode servir como o
Botão Luz Azul
circuito básico de Chamada Armazena
Botão Bit
armazenamento de 1 bit no Cancela
exemplo do sistema para chamar
comissários de bordo. Botão S
Digital Design
Copyright © 2006 6
Frank Vahid
Problemas de um Latch SR
• Problema
– Se S=1 e R=1 simultaneamente, não saberemos qual valor Q vai ficar.
1
S
0
1
R
0
1
t
0
1
Q
0
1
Q oscilará. Um dos caminhos será um pouco t
0
mais longo que outro, Q ficará eventualmente 1
em 1 ou 0, mas a priori não temos como saber. Q
0
Digital Design
Copyright © 2006 7
Frank Vahid
Problemas de um Latch SR
• O problema não se limita a um usuário pressionando 2 botões
simultaneamente!
• Problemas podem ocorrer mesmo se as entradas SR vierem de
um circuito que supostamente nunca faz S=1 e R=1 ao mesmo
tempo
– Mas problemas podem acontecer devido a diferentes atrasos
(diferentes caminhos).
Circuito S SR latch
X
Y R
C1 C2 C3 C4
Clk
Clk_A Clk_B
Digital Design
Copyright © 2006 13
Frank Vahid
Flip-Flop D Mestre-Escravo
• Flip-flop: Armazena 1 bit na borda de subida do clock
• Uma forma de projetá-lo: modo Mestre-Escravo
Bordas de subida
– Dois latches: a saída do primeiro (mestre) vai para entrada
do segundo (escravo) Clk
Q
Cm Cs Qs
Mestre Escravo
Clk
Digital Design
Copyright © 2006 14
Frank Vahid
Flip-Flop D sensível à borda
D Q’ D Q’ Projeto interno:
O triângulo no
Inverte somente o
símbolo significa
Q Q clock do Escravo.
que as entradas
são amostradas
(gatilhadas) na Símbolo para o flip-flop D Símbolo para o flip-flop D
borda de subida gatilhado pela borda gatilhado pela borda
do clock de subida de descida
Bordas de subida Bordas de descida
Clk Clk
Digital Design
Copyright © 2006 15
Frank Vahid
Flip-Flop D
• Resolve o problema de não sabermos através de quantos latches o sinal
trafegaria com segurança quando C=1
– Na figura abaixo, o sinal na entrada de cada flip-flop trafega através de um
único flip-flop (de Dn até Qn) tanto para a condição Clk_A quanto para a
condição Clk_B. Por quê?
– Porque pela simbologia, estes flip-flops são sensíveis à borda de subida do
clock.
• Na borda de subida do Clk, todos os 4 flip-flops são “carregados” simultaneamente
com o que estiver em suas respectivas entradas (Q1 recebe D1, Q2 recebe D2,
etc.)
• Depois, nenhum dos 4 flip-flops dará atenção a mudanças em suas entradas até a
próxima borda de subida do clock. Não importa o quão longo o sinal Clk fique em 1.
Y D1 Q1 D2 Q2 D3 Q3 D4 Q4
Dois Latches em
cada Flip-flop
Clk
Digital Design
Copyright © 2006 16
Frank Vahid Clk_A Clk_B
Latch D versus Flip-Flop D
• Latches são sensíveis ao nível do clock:
– Deixa passar o valor de D para Q enquanto C=1 (transparência)
– Armazena último D em Q quando C vai a zero.
• Flip-flop são sensíveis às transições (gatilhados pela borda):
Armazena D quando ocorre uma transição de clock C.
– Dois tipos de flip-flops:
• gatilhados pela borda de subida.
• gatilhados pela borda de descida.
• Comparando o comportamento de um latch e um flip-flop:
Observe na figura ao lado que
o Latch D acompanha a
entrada D enquanto Clk = 1.
Quando Clk = 0, o Latch D
permanece no mesmo nível
lógico em que estava. Já o
Flip-Flop D acompanha a
entrada D somente no
momento da borda de subida
Digital Design do Clk
Copyright © 2006 17
Frank Vahid
Sistema de chamada de Comissários com Flip-Flop D
• Como projetar ? O Flip-flop D tem só uma entrada e é sensível à borda:
• Entradas da rede combinacional desejada:
– Call, Cancel, e estado atual “Q” do flip-flop Call
Flight Blue
Q é a saída final desejada. Estando Q realimentada como attendant light
entrada na rede combinacional, podemos tomar decisões Cancel call-button
system
futuras baseadas no estado atual do circuito.
• A tabela verdade define o comportamento:
Digital Design Q3 Q2 Q1 Q0
Copyright © 2006 20
Frank Vahid
Exemplo do uso de Registradores:
Um Mostrador de Temperatura
• Histórico do mostrador de temperaturas
– Um sensor produz como saída, a temperatura na forma de um número
binário de 5 bits.
– Um temporizador produz um evento de clock C a cada hora
– Grava a temperatura a cada pulso de clock. Exibe as três últimas leituras.
x4 a4 a3 a2 a1 a0 b4 b3 b2 b1 b0 c4 c3 c2 c1 c0
x3
x2
TemperatureHistoryStorage
x1
x0
timer
C
Digital Design
Copyright © 2006 21
Frank Vahid
Exemplo do uso de Registradores:
Um Mostrador de Temperatura
• Uso três registradores de 5 bits cada
a4 a3 a2 a1 a0 b4 b3 b2 b1 b0 c4 c3 c2 c1 c0
I4 Q4 I4 Q4 I4 Q4
x4
I3 Q3 I3 Q3 I3 Q3
x3
I2 Q2 I2 Q2 I2 Q2
x2
I1 Q1 I1 Q1 I1 Q1
x1
I0 Q0 I0 Q0 I0 Q0
x0
Ra Rb Rc
C
TemperatureHistoryStorage
x4...x0 15 18 20 21 21 22 24 24 24 25 25 26 26 26 27 27 27 27
Ra 0 18 21 24 25 26 27
Rb 0 0 18 21 24 25 26
Digital Design Rc 0 0 0 18 21 24 25
Copyright © 2006 22
Frank Vahid
Máquinas de Estados Finitos 3.3
Digital Design
Copyright © 2006 26
Frank Vahid
Exemplo de descrição na forma de FSM
para o Temporizador de Lasers de 3 períodos
Entrada: b; saída: x
• Quatro estados x=0
clk^
• Espera no estado “Off” enquanto b Off b’*clk^
é 0 (b’)
b*clk^
• Quando b for igual a 1 (e acontecer x=1 clk^ x=1 clk^ x=1
estado On1
– Faça x=1
– Nos próximos dois eventos de clock,
transite para On2 e On3 nessa ordem.
Nesses dois casos faça x=1 também.
• Logo x=1 para 3 períodos após o
botão ter sido pressionado.
Digital Design
Copyright © 2006 27
Frank Vahid
FSM – Representação Simplificada:
O evento de clock implícito (borda de subida)
Entrada: b; Saída: x
• Representar a borda de x=0
clk^
subida a cada transição é Off b’ *clk^
desnecessário
b*clk ^
– Torne-o implícito – considere que x=1 clk^ x=1 clk^ x=1
a cada transição de estado
On1 On2 On3
ocorre uma borda de subida de
um clock.
– E se quiséssemos uma transição Entrada: b; Saída: x
sem a ocorrência de uma borda x=0
de subida de um clock? Off b’
• Não tratamos de FSM a
Digital Design
Copyright © 2006 29
Frank Vahid
Exemplo de FSM:
Chave de Segurança Codificada para Carros
• Muitos carros possuem chaves
com minúsculos CIs embutidos.
– Quando a ignição é acionada, o
computador central do carro solicita
ao CI da chave o seu código de
identificação (ID)
– A chave transmite o identificador (ID)
• Se estiver em desacordo, o
computador central do carro corta o Entrada: a; Saída: r
combustível.
Espera
• FSM da chave: r=0
a a’
– Espere até o computador central
pedir o ID (a=1) K1 K2 K3 K4
r
Saída
r
Digital Design
Copyright © 2006 31
Frank Vahid
Exemplo de FSM: Detector de códigos
s
• Destrava a fechadura da porta (u=1) Start
u
somente quando os botões são r
pressionados na sequência correta: Red Detector
g de códigos Destrava
a Green
– start, red, blue, green, red Blue b Fechadura
• Uma entrada para cada botão: s, r, g, b a
– Uma entrada a para indicar que algum
botão colorido foi pressionado Entradas: s,r,g,b,a;
• FSM Saída: u
Wait
– Espera pelo start (s=1) fica no estado
u=0 s s’
“Wait” ar’ ab’ ag’ ar’
a
– Uma vez iniciado (“Start”)
Start a’
• Se r=1, vá para o estado “Red1”
• Depois, se b, vá para “Blue” u=0
ar
• Depois, se g, vá para“Green” ab ag ar
• Depois, se r, vá para “Red2” Red1 Blue Green Red2
– Nesse estado, destrave a porta (u=1)
a’ a’ a’
u=0 u=0 u=0 u=1
• Pressionar botão errado em qualquer
passo, faz retornar para o estado “Wait”, Q: Você poderia enganar esta FSM para abrir a
sem destravar a fechadura da porta. porta, sem saber o código de antemão?
a
Digital Design A: Sim, apertando todos os botões simultaneamente
Copyright © 2006 32
Frank Vahid
FSM melhorada para o Detector de códigos
Entradas: s,r,g,b,a;
Saída: u
Wait
u=0 s s’ ar’ ab’ ag’ ar’ a
Start
a’
u=0
ar
ab ag ar
Red1 Blue Green Red2
a’ a’ a’
u=0 u=0 u=0 u=1 Obs.: um pequeno problema
ainda persiste; veremos mais
adiante
Digital Design
Copyright © 2006 33
Frank Vahid
Arquitetura Padrão de um Controlador
• Como implementar uma FSM em um
Entrada: b; Saída: x
circuito sequencial?
x=0
– Adotaremos de início uma arquitetura
padrão Off b’
• Registrador de estados – para armazenar
b
os estados atuais. x=1 x=1 x=1
• Lógica combinacional – para produzir as
saídas, e os próximos estados On1 On2 On3
• Para a FSM do temporizador de lasers
– Um registrador de estados de 2-bits,
capacidade para representar 4 estados
Entrada
FSM
saída
– Entrada b, Saída x b x
FSM
– Arquitetura conhecida como controlador Lógica n1
Combinacional
Saídas
Entradas
I O FSM n0
FSM
Lógica
s1 s0
Combinacional
S clk Registrador de
a
m estados
Registrador de m
clk
Estados de m bits
Digital Design N
Copyright © 2006 34
Frank Vahid Versão padrão
3.4
Projeto de um Controlador
• Cinco passos para projetar um controlador
Digital Design
Copyright © 2006 35
Frank Vahid
Projeto de um Controlador:
Exemplo do Temporizador de Laser
• Passo 1: Especifique a FSM Entrada: b; Saida: x
x=0
– Já fizemos anteriormente 00
Off b’
• Passo 2: Definir a arquitetura a
b
– Arquitetura vista anteriormente x=1 x=1 x=1
(controlador na “versão padrão”) 01 On1 10 On2 11 On3
entradas
de 2-bits (para guardar os 4
Saidas
FSM
b x
FSM
estados da FSM) Lógica n1
Combinacional
– Entrada: b, Saída: x n0
– Próximos estados: n1, n0 s1 s0 a
Registrador
• Passo 3: Codificar os estados clk
de estados
– Qualquer codificação a princípio
nos servirá.
Digital Design
Copyright © 2006 36
Frank Vahid
Projeto de um Controlador:
Exemplo do Temporizador de Laser (cont.)
• Passo 4: Crie a tabela de estados Entrada: b; Saída: x
x=0
00
Off b’
a
b
x=1 x=1 x=1
01 On1 10 On2 11 On3
outputs
inputs
FSM
FSM
b x
Combinational n1
logic
n0
s1 s0
clk State register
Digital Design
Copyright © 2006 37
Frank Vahid
Projeto de um Controlador:
Exemplo do Temporizador de Laser (cont.)
• Passo 5: Implemente a lógica
outputs
inputs
FSM
FSM
b x
combinacional Combinational n1
logic
n0
a
s1 s0
clk State register
Digital Design
Copyright © 2006 38
Frank Vahid
Projeto de um Controlador:
Exemplo do Temporizador de Laser (cont.)
FSM saída
• Passo 5: Implemente o Logica Combinacional
FSM entrada
b x
outputs
inputs
circuito combinacional (cont)
FSM
FSM
b x
Combinational n1
logic n1 a
n0
s1 s0
clk State register
n0
s1 s0
clk Registrador
x = s1 + s0
n1 = s1’s0 + s1s0’
n0 = s1’s0’b + s1s0’
Digital Design
Copyright © 2006 39
Frank Vahid
Compreendendo o Comportamento de um
Controlador
x=0 x=0 x=0
00
Off b’ 00
Off b’ 00
Off
b’
b b b
x=1 x=1 x=1 x=1 x=1 x=1 x=1 x=1 x=1
01 On1 10 On2 11 On3 01 On1 10 On2 11 On3 01 On1 10 On2 11 On3
b x b x b x
0 0 0
0 0 0 1 0 0 1 1 1
0 0 1
n1 n1 n1
0 0 1
0 0 0 a
0 1 0
n0 n0 n0
0 1 0
0 0 0
s1 s0 s1 s0 s1 s0
clk clk clk
0 0 0 0 0 1
0 0 0 1 1 0
Entrada:
I
b
Saída:
x
Digital Design
Copyright © 2006 40
Frank Vahid
Exemplo de controlador:
Sincronizador para Pressionamento de Botões
Sincronizador
bi para bo
Pressionamento
de Botões
Digital Design
Copyright © 2006 41
Frank Vahid
Exemplo de Controlador:
Sincronizador para Pressionamento de Botões (cont.)
outputs
inputs
bi bo
FSM
FSM
FSM inputs: bi; FSM outputs: bo Step 2: Create architecture
Combinational
bi’ logic n1
bi
bi’
C bi’
n0
A B s1 s0 n1 = s1’s0bi + s1s0’bi a
bi bi n0 = s1’s0’bi
bo=0 bo=1 bo=0 State register bo = s1’s0bi’ + s1’s0bi = s1’s0
clk
Combinational logic
Step 1: FSM
output
bo
bi
n1
FSM inputs: bi; FSM outputs: bo
bi’ n0
bi
bi ’
00 bi 01 bi 10 bi ’
s1 s0
bo=0 bo=1 bo=0
State register
clk
Step 3: Encode states
Step 4: State table Step 5: Create
combinational circuit
Digital Design
Copyright © 2006 42
Frank Vahid
Exemplo de Controlador: Gerador de sequência
• Queremos gerar a sequência 0001, 0011, 1100, 1000, (repete)
– Cada valor em um ciclo de clock
– Comum para criar um padrão em 4 lâmpadas, ou controlar ímas de um “motor de
passo”
w Inputs: none; Outputs: w,x,y,z
Inputs: none; Outputs: w,x,y,z x
y wxyz=0001 wxyz=1000
Combinational z
wxyz=0001 wxyz=1000
logic A D
A D n1 00 11
n0
s1 s0 01 10
State register B C
B C clk
wxyz=0011 wxyz=1100
wxyz=0011 wxyz=1100 Step 3: Encode states
Step 1: Create FSM Step 2: Create architecture
w
w = s1 x FSM outputs
x = s1s0’ y
y = s1’s0
z
z = s1’
a
n1 = s1 xor s0
n0 = s0’
n0 n1
s1 s0
clk State register
Digital Design Step 4: Create state table
Copyright © 2006 43
Frank Vahid
Step 5: Create combinational circuit
Exemplo de Controlador: Chave de Carro Segura
Inputs: a; Outputs: r
• (do exemplo anterior)
Wait
r=0 a a’
Passo 1
a
K1 K2 K3 K4
r=1 r=1 r=0 r=1
a r
Passo 2
Combinational
logic n2
n1
n0
s2 s1 s0
clk State register
Inputs: a; Outputs: r
000
r=0 a’
a
Passo 3
z = s1s0’ estados
n1=(s1 xor s0)x D C
x y
n0=(s1’*s0’)x
z Outputs:y, z
A B Estados
n1 yz=10 yz=10
com as
D C saídas
n0 yz=00 yz=01
s1 s0
Inputs: x; Outputs:y, z
State register
clk x
x’ A B yz=10
yz=10 x’ x
D x’ C yz=01
yz=00
Dê nome aos estados a sua escolha x
Estados com as
Saídas e
Digital Design transições
Copyright © 2006 45
Frank Vahid
Equívocos comuns envolvendo
transições de estado
• Apenas uma condição deve a
ser verdadeira b
– Para todas as transições ab=11 –
saindo de um estado next state? a
c=0 c=1
– Assuma que saída sem clk a
atribuição são implicitamente
assumidas igual a 0
• Circuitos sequenciais b=1 c=1
– Assuma que entradas de clocks
não conectadas, deverão ser
a
conectadas ao mesmo clock
externo
Digital Design
Copyright © 2006 49
Frank Vahid
3.5
Outros Flip-Flops
• Outros tipos de flip-flop
– Flip-flop SR: funciona como o latch SR, só que gatilhado pela borda
– Flip-flop JK: funciona como o flip-flop SR (SJ, RK)
• Mas quando JK=11, chaveia as saídas Q e Q’
• 10, 01
– Flip-flop T: flip-flop JK com as entradas unidas por um fio (entrada T)
• Chaveia a cada borda de subida do clock.
– Eram usados antigamente para minimizar lógica de circuitos
sequenciais.
• Atualmente se tornou irrelevante.
• Flip-flops D são os mais comumente utilizados.
Digital Design
Copyright © 2006 50
Frank Vahid
Comportamento não ideal de um Flip-flop
• Não podemos mudar as entradas de um flip-flop muito
próximo às transições do clock
– Tempo de setup: tempo que D deverá estar estável
antes do evento.
• Do contrário, um valor estável não ficará armazenado dentro
do latch.
– Tempo de hold: tempo que a entrada D deverá se
manter estável após a ocorrência do evento
• Do contrário, o novo valor não terá tempo de ser
realimentado e ser estabilizado dentro do latch interno
Violação do tempo de Setup
Provoca oscilação!!
Digital Design
Copyright © 2006 51
Frank Vahid
Metaestabilidade
• Violar os tempos de setup/hold pode levar a
uma situação indesejável conhecida como
estado de metaestabilidade
– Estado de metaestabilidade: Estado do flip-
flop indefinido (diferente de 0 e de 1)
• Eventualmente fica em 1 ou 0, mas não temos
como saber qual deles
– Para circuitos internos, podemos certificar-nos
que o tempo de setup é obedecido
– Mas se a entrada vier de uma fonte externa
assíncrona (ex.: o “pressionar” de um botão)?
• Solução parcial
– Inserir um flip-flop sincronizador para a
entrada assíncrona
• Flip-flops especiais com um tempo de setup/hold
muito pequenos a
Digital Design
Copyright © 2006 52
Frank Vahid
Metaestabilidade
• Um flip-flop não resolve o problema completamente
• E se adicionássemos mais desses flip-flops sincronizadores?
– Ajuda, mas só diminui a probabilidade de metaestabilidade.
• Como poderemos resolver por completo?
– Não podemos! Isso pode parecer desanimador. Mas nós simplesmente não
podemos garantir um projeto que não irá nunca ser metaestável. Nós só podemos
minimizar o tempo médio entre falhas (MTBF) – uma medida de tolerância a falhas
normalmente fornecida ou calculada para um circuito
ai
sincronizadores
Digital Design
Copyright © 2006 53
Frank Vahid
Entradas Set e Reset de um Flip-Flop
• Alguns flip-flops possuem D Q’ D Q’ D
AR
Q’
Digital Design
Copyright © 2006 54
Frank Vahid
Estado Inicial de um Controlador
• Todas as nossas FSM possuem Entrada: x; Saída: b
um estado inicial x=0
Digital Design
Copyright © 2006 56
Frank Vahid
Entradas ativas em nível lógico baixo (0)
Digital Design
Copyright © 2006 57
Frank Vahid