Você está na página 1de 10

3.

Introdução
• Circuitos Sequenciais
– As saídas não dependem exclusivamente de suas entradas
1
(como em um circuito combinacional), mas de todo o
Sistemas Digitais histórico de mudança das entradas.
a

b
0 Circuito Digital
Combinacional
1
F

• Armazena bits, também conhecidos por estados


Capítulo 3: – Exemplo: um circuito de contagem em binário.
Projeto Lógico Sequencial • Nesse capítulo:
1
Controladores – Projetar um novo bloco construtivo chamado flip-flop, a
0 Circuito Digital
? F
Slides to accompany the textbook Digital Design, First Edition, que é capaz de armazenar 1 bit. b Sequencial

by Frank Vahid, John Wiley and Sons Publishers, 2007. – Combinar esse bloco de forma a construir blocos sequenciais
http://www.ddvahid.com Devemos
capazes de armazenar vários bits –registradores
conhecer o
Prof. Luciano C. A. Pimenta – Descrever o comportamento sequencial na forma de passado das
Tradução e Adaptação para o Português máquinas de estados finitos (finite state machines) entradas para
Prof. Ricardo de Oliveira Duarte – Converter uma FSM em um controlador – um circuito saber o valor da
sequencial composto por um registrador e um circuito saída.
Copyright © 2007 Frank Vahid DELT – EE – UFMG
Instructors of courses requiring Vahid's Digital Design textbook (published by John Wiley and Sons) have permission to modify and use these slides for customary course-related activities,
combinacional
subject to keeping this copyright
Digital Design notice in place and unmodified. These slides may be posted as unanimated pdf versions on publicly-accessible course websites.. PowerPoint source (or pdf Digital Design
with animations) may not be posted to publicly-accessible websites, but may be posted for students on internal protected sites or distributed directly to students by other electronic means.
Copyright © 2006 1
Instructors may make printouts of the slides available to students for a reasonable photocopying charge, without incurring royalties. Any other use requires explicit permission. Instructors
Copyright © 2006
Franksource
may obtain PowerPoint Vahidor obtain special use permissions from Wiley – see http://www.ddvahid.com for information. 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 circuito3.2


Primeira tentativa de armazenar um bit
sequencial (armazenamento) • Necessitamos alguma forma de realimentar as saídas
• Sistema de chamada de Botão Luz Azul para as entradas S Q
Chamada Armazena
comissários de bordo Botão Bit • Solução intuitiva: ligar a saída Q na entrada t t
Cancela
– Botão de chamada: luz acende – Esse circuito se comporta da maneira que gostaríamos?
• Fica ligada após soltar o botão 1. Botão chamada pressionado – • Não: Uma vez que Q se torna 1 (quando S=1), Q fica em 1 para
acende a luz
sempre – nenhum outro valor de S pode fazer com que Q volte a
– Botão cancelar: luz se apaga Botão Luz Azul 0
– Porta lógica para implementar esse Chamada Armazena a S 0 S 1 S 1 S 0
Botão Bit 0Q S 1 0Q 1Q 1Q 1Q
circuito? Cancela 0 0 0 1 1
t t t t t
Chamada Q 2. Botão chamada solto – a luz fica
Cancelar acesa
1
a
Botão Luz Azul S
Não funciona. Q=1 quando Chamada=1, mas 0
Chamada Armazena
não fica em 1 quando Chamada retorna a 0 Botão Bit 1
Cancela
t
0
É necessário alguma forma
de“realimentação” no circuito 3. Botão cancelar pressionado – apaga a 1
Q
luz 0
Digital Design Digital Design
Copyright © 2006 3 Copyright © 2006 4
Frank Vahid Frank Vahid

Armazenamento de 1 Bit com o Latch SR Armazenamento de 1 Bit com o Latch SR


S (set) SR latch

• Esse circuito a direita com 2 portas lógicas NOR • O latch SR pode servir como o
Botão Luz Azul
faz o que queremos? Sim circuito básico de Chamada Armazena
Q Bit
armazenamento de 1 bit no Botão
Cancela
R (reset)
S=0
t
S=0
t
S=1
t
S=0
t
exemplo do sistema para chamar
Relembrando…
0
1
0
1
1 0 1 0 0
1
comissários de bordo. Botão S
0

1
– Botão Chamada=1 : faz Q ser 1 Chamada
1 1 0 0 0
1 1
0 Q 0 Q Q Q X • Q fica em 1 mesmo depois que
R=1 R=0 R=0 R=0 Botão Chamada=0 Luz Azul

1 – Botão Cancela=1 : zera (reset) Q Botão


Q
S
0 passa a ficar em 0 Cancela R
R1
0 a

t 1
0
1 • Mas, ainda resta um problema...
Q
0

Digital Design Digital Design


Copyright © 2006 5 Copyright © 2006 6
Frank Vahid Frank Vahid
Problemas de um Latch SR Problemas de um Latch SR
• O problema não se limita a um usuário pressionando 2 botões
• Problema
simultaneamente!
– Se S=1 e R=1 simultaneamente, não saberemos qual valor Q vai ficar.
• Problemas podem ocorrer mesmo se as entradas SR vierem de
S
1 um circuito que supostamente nunca faz S=1 e R=1 ao mesmo
S=1 S=0 S=0
t t t 0 tempo
0 1 0 1
0 0 1 R – Mas problemas podem acontecer devido a diferentes atrasos
0
1 (diferentes caminhos). 1
0 0 1 t X
0 Q 1 Q 0 Q 0 Circuito S SR latch
X 0
1
R=1 R=0 R=0 Q
0 1
Y
Q 0
Y R
1 1
Q oscilará. Um dos caminhos será um pouco t
0 S
mais longo que outro, Q ficará eventualmente 1 Quanto mais longo for o caminho de X a R do que de X a S causa 0
Q
em 1 ou 0, mas a priori não temos como saber. 0 SR=11 por um curto período de tempo – mas pode ser longo SR= 11
suficiente para causar uma oscilação 1
Digital Design Digital Design R
Copyright © 2006 7 Copyright © 2006 8
0
Frank Vahid Frank Vahid

Solução: Latch SR sensível ao nível Sinais de Clock para um Latch


• Inclua uma entrada “C” (habilitar o circuito) como
Latch SR sensível ao nível
mostrado no circuito ao lado. S
S1
– Permite que S e R mude somente quando C=0
• Garante que o circuito que fornece SR nunca
produza SR=11, exceto brevemente devido a um C
atraso das portas lógicas.
– Mudar C para1 somente após um tempo suficiente Q • Como sabemos quando é seguro fazer com que Latch SR sensível ao nível
para S e R ficarem estáveis. R C=1? S
R1 X S1
– Soluções mais comuns – fazer com que C pulse
– Quando C se torna igual a 1, as entradas estáveis up/down
S e R passam através dos 2 ANDs às entradas do S
Q’ • C=0: X, Y podem mudar de forma segura Clk
C

latch SR (entradas S1 e R1) C


Q • C=1: Não deveremos alterar X, Y Q
Através de SR=11 brevemente... R
Latch SR sensível ao nível R
1 • Veremos como garantir isso mais a frente… R1
S S Y
X S1
0 Símbolo do Latch – Sinal de Clock – Sinal pulsado usado para habilitar o
1 SR sensível ao nível latch
R0
C a
– Circuitos sequenciais nos quais todos os
1
Clk C
0
componentes de armazenamento usam sinais de
1
clocks para mudar de estado são chamados: circuitos
Q
S1
0
sequenciais síncronos
R
Y
R1
1 • Circuitos sequenciais mais comuns de serem
Digital Design
R1 0 encontrados.
Digital Design
Copyright © 2006 9 • Projeto
Copyright de Circuitos assíncronos: curso mais avançado
© 2006 10
Frank Vahid ...S1R1 nunca vai para = 11 Frank Vahid

Clocks Latch D sensível ao nível


• O latch SR requer cuidados no seu
Latch D
projeto, de forma a garantir que SR=11 D
S
nunca ocorra.
• O latch D simplifica a vida do projetista C

quanto a esse problema. Q

• Período do Clock: intervalo de tempo entre pulsos – O inversor inserido (NOT) garante que R R
(eventos de clock). Ou seja, é o tempo de uma sempre terá o valor lógico oposto de S,
Freq Período
quando o sinal de clock estiver em nível
oscilação completa do sinal de clock. 100 GHz 0.01 ns lógico 1 (C=1) 1
– Sinal acima: período = 20 ns 10 GHz 0.1 ns D D Q’
0
C Q
• Ciclo de Clock: um intervalo de tempo 1 GHz 1 ns 1
100 MHz 10 ns C
– Sinal acima mostra 3.5 períodos de clock. 0 Símbolo do
10 MHz 100 ns Latch D
• Frequência do Clock: 1/período S
1
0
– Sinal acima: frequência = 1 / 20 ns = 50 MHz
1
• 1 Hz = 1/s R
0
Digital Design Digital Design 1
Copyright © 2006 11 Copyright © 2006 Q 12
0
Frank Vahid Frank Vahid
Problemas dos Latches D sensíveis ao nível Flip-Flop D
• O latch D ainda apresenta um problema • Flip-flop: Armazena 1 bit na borda de subida do clock Bordas de subida
– Quando C=1, através de quantos latches o sinal trafegará corretamente? • Uma forma de projetá-lo – modo Mestre-Escravo Clk

– Depende de quão longo deixaremos C=1 – Dois latches, Saída do primeiro vai para entrada do segundo,
o latch Mestre recebe o sinal do clock invertido
• Clk_A: o sinal provavelmente trafegaria por um grande número de latches Obs: Existe
– Mestre é armazenado quando C=0, e o Escravo quando C=1 dezenas de
• Clk_B: o sinal provavelmente trafegaria por um pequeno número de latches projetos de
– Quando C muda de 0 para 1, o Mestre fica desabilitado, o flip-flops
– Difícil de definir C (para um número exato de latches). Escravo é carregado com o valor que estava em D, logo
• Podemos projetar um circuito de armazenamento de 1 bit que armazena o antes de C ter mudado (isto é: o valor em D durante a borda
valor do bit somente na borda de subida do clock? de subida de C
Bordas de subida
Clk
Y D1 Q1 D2 Q2 D3 Q3 D4 Q4 Clk flip-flop D
Latch D Latch D D/Dm
D Q’
C1 C2 C3 C4 Dm Qm Ds Qs’
Cm
Clk Q
Cm Cs Qs Qm/Ds
Mestre Escravo Cs
Clk_A Clk_B
Clk Qs
Digital Design Digital Design
Copyright © 2006 13 Copyright © 2006 14
Frank Vahid Frank Vahid

Flip-Flop D 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 trafega através de um flip-flop para Clk_A ou Clk_B
D D – Por quê? Porque na borda de subida do Clk, todos os 4 flip-flops são
Q’ Q’ Projeto interno:
O triângulo no “carregados” simultaneamente – depois nenhum dos 4 darão atenção a
Inverte somente o
símbolo significa
Q Q clock do Escravo.
mudanças em suas entradas até a próxima borda de subida do clock. Não
que as entradas importa o quão longo o sinal Clk fica em 1.
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 Y D1 Q1 D2 Q2 D3 Q3 D4 Q4
do clock de subida de descida Dois Latches em
Bordas de subida Bordas de descida cada Flip-flop

Clk Clk Clk

Clk_A Clk_B

Digital Design Digital Design


Copyright © 2006 15 Copyright © 2006 16
Frank Vahid Frank Vahid

Sistema de chamada de Comissários com Flip-Flop D


Latch D versus Flip-Flop D
• Latch são sensíveis ao nível do clock: Armazena D • Flip-flop D armazena 1 bit. Call
Flight Blue
enquanto C=1 • Entradas são: Call, Cancel, e estado atual Cancel
attendant
call-button
light

• Flip-flop são sensíveis as transições (gatilhados pela borda): do flip-flop (entrada Q) system

Armazena D quando ocorre uma transição de clock C. • A tabela verdade define o comportamento
– Dois tipos de flip-flops:
• gatilhados pela borda de subida.
Valor mantido: se Circuito obtido pela tabela
• gatilhados pela borda de descida.
Q=0, faz D=0; se verdade
• Comparando o comportamento de um latch e um flip-flop: Q=1, faz D=1
Observe na figura ao lado que Cancel – faz D=0 Call Call
o Latch D acompanha a D Q’
Blue
Clk 1 2 light
entrada D enquanto Clk = 1. Cancel Cancel
Quando Clk = 0, o Latch D Clk Q
permanece no mesmo nível
Call – faz D=1 Q
D3 4 5 6
lógico em que estava. Já o
Flip-Flop D acompanha a Damos prioridade
Q (D latch) 7 8 entrada D somente no ao Call – faz D=1
momento da borda de subida
Digital Design
do Clk Digital Design
Copyright © 2006 Q (D flip-flop) 9 10 17 Copyright © 2006 18
Frank Vahid Frank Vahid
Resumo: Circuito de Armazenamento de 1 Bit Registrador Simples
S (set)
latch SR latch SR sensível ao nível Latch D Flip-flop D • Tipicamente armazenam um número n de bits.
S S1 D S
D
Latch D
DmQm
Latch D
Ds Qs’
Q’ – Ex.: armazenar um número binário de 4 bits.
C C

Q Q Q
Cm
mestre
Cs Qs
escravo
Q
• Registrador: múltiplos flip-flops compartilhando o mesmo
R (reset)
R
R1 R Clk sinal de clock.
Característica: Característica: S e R Característica: SR não Característica: somente – Desse momento em diante, usaremos registradores para
S=1 leva Q a 1,
R=1 leva Q a 0.
somente são avaliados
quando C=1.
será igual a 11 se D
estiver estável antes e
carrega o valor lógico presente
em D no evento de clock,
armazenar bits
Problema: SR=11 SR=11 nunca acontece enquanto C=1, e será 11 assim valores não se • Desnecessário raciocinar como latches e flip-flops são implementados.
produz Q quando C=1. Problema: somente por um pico de propagam para outros flip-flops
indefinido. evitar SR=11 pode ser tempo (glitch) mesmo se D durante o mesmo período de • Entretanto agora vocês sabem de que registradores são feitos e como
conseguido as custas de mudar enquanto C=1. clock. Tradeoff: necessita mais funcionam.
implementação de um Problema: C=1 durante portas lógicas internamente
circuito com um número longo tempo propaga que o latch D e demanda mais I3 I2 I1 I0
grande de portas lógicas. novos valores através de portas lógicas externas que o
muito latches. Tempo Latch SR. 4-bit register
curto pode não ser
I3 I2 I1 I0
suficiente para armazenar D D D D reg(4)
valores em alguns latches. Q Q Q Q
Q3 Q2 Q1 Q0
clk

Digital Design Digital Design Q3 Q2 Q1 Q0


Copyright © 2006 19 Copyright © 2006 20
Frank Vahid Frank Vahid

Exemplo do uso de Registradores: Exemplo do uso de Registradores:


Um Mostrador de Temperatura Um Mostrador de Temperatura
• Histórico do mostrador de temperaturas • Uso três registradores de 5 bits cada
– Um sensor produz como saída, a temperatura na forma de um número
binário de 5 bits. a4 a3 a2 a1 a0 b4 b3 b2 b1 b0 c4 c3 c2 c1 c0
– Um temporizador produz um evento de clock C a cada hora I4 Q4 I4 Q4 I4 Q4
x4
– Grava a temperatura a cada pulso de clock. Exibe as três últimas leituras. x3
I3 Q3 I3 Q3 I3 Q3
I2 Q2 I2 Q2 I2 Q2
x2
I1 Q1 I1 Q1 I1 Q1
Hora atual 1 hora atrás 2 horas atrás x1
I0 Q0 I0 Q0 I0 Q0
x0
Mostrador Mostrador Mostrador Ra Rb Rc
C
TemperatureHistoryStorage

x4 a4 a3 a2 a1 a0 b4 b3 b2 b1 b0 c4 c3 c2 c1 c0
x4...x0 15 18 20 21 21 22 24 24 24 25 25 26 26 26 27 27 27 27
x3
x2 C
TemperatureHistoryStorage
x1
Ra 0 18 21 24 25 26 27
x0
timer Rb 0 0 18 21 24 25 26
C

Digital Design Digital Design Rc 0 0 0 18 21 24 25


Copyright © 2006 21 Copyright © 2006 22
Frank Vahid Frank Vahid

Máquinas de Estados Finitos 3.3


Necessitamos de um Método para projetar
(Finite-State Machines – FSMs) e Controladores Circuitos Sequenciais
• Se quisermos um circuito b Controlador • Tentativa e Erro não é um método adequado.
sequencial com um comportamento x
laser
– Seríamos capazes de “projetar dessa forma” um circuito que funcione para
específico ao longo do tempo. clk um determinado comportamento?
• Seríamos capazes de projetar um contador de1 a 9? Pulsar uma saída de 1 em
• Exemplo: Temporizador para Laser paciente 1 período de clock a cada 10 períodos? Detectar a sequência 1 3 5 em binário a
partir de um sistema com 3-bits de entrada?
– Push button: x=1 para 3 períodos de
– Tentativa e erro produzem circuitos sequenciais com comportamento
clock imprevisíveis.
– Como? Vamos tentar com 3 flip-flops • Temporizador de Lasers: O que aconteceria se pressionássemos um botão
• b=1 fica armazenado no primeiro flip-flop novamente enquanto x estivesse em 1? X ficaria em 1 por mais 3 períodos. Isso
é o que gostaríamos de ter?
D b
D Q D Q D Q • O projeto de circuitos combinacionais é baseado em 2 aspectos:
• Depois no 2o flip-flop no próximo
período, depois no 3o flip-flop no 1. Uma descrição formal para descrever o comportamento do circuito.
clk
• Equação Booleana ou tabela verdade.
próximo
x 2. Um processo bem definido para converter o comportamento em circuito.
• Faço um OR da saída dos 3 flip-flops,
portanto a saída X deverá ficar em 1 por • Precisamos do mesmo para projetar Circuitos Sequenciais.
3 períodos de clock.
Digital Design Digital Design
Copyright © 2006 23 Copyright © 2006 24
Frank Vahid Frank Vahid
Descrevendo o Comportamento
de um Circuito Sequencial: FSM Exemplo FSM : 0,1,1,1, repete
• Finite-State Machine (FSM) Saída: x
• Queremos: Saída: x
x=0 clk^ x=1
– Um modo de se descrever um 0, 1, 1, 1, 0, 1, 1, 1, ... x=0 clk^ x=1 clk^ x=1 clk^ x=1
circuito sequencial.
Off On – Cada valor fica um período de Off On1 On2 On3
– Lista estados, e transições
entre os estados definidos. clock.
clk^ clk^
• Exemplo: Faça x variar • Podemos descrever o
(alternar) (0 para 1, ou 1 para
0) a cada período de clock Off On Off On Off On Off On comportamento como uma FSM
• Dois estados: “Off” (x=0), and – Quatro estados distintos. clk
“On” (x=1) cycle 1 cycle 2 cycle 3 cycle 4
clk – Transição de um estado a outro na State Off On1On2On3 Off On1On2 On3 Off
• Transições de Off para On, ou borda de subida do clock.
de On para Off, na borda de state Off On Off On Outputs:
subida do clock.
Outputs: x
• A seta sem um ponto de
partida, denota o estado x
inicial (quando o circuito se
inicia assim que for ligado)
Digital Design Digital Design
Copyright © 2006 25 Copyright © 2006 26
Frank Vahid Frank Vahid

Exemplo de descrição na forma de FSM FSM – Representação Simplificada:


para o Temporizador de Lasers de 3 períodos O evento de clock implícito (borda de subida)
Entrada: b; saída: x Entrada: b; Saída: x
• Quatro estados x=0
• Representar a borda de x=0
clk^ clk^
• Espera no estado “Off” enquanto b Off b’*clk^
subida a cada transição é Off b’ *clk^
é 0 (b’) desnecessário
b*clk^ b*clk ^
– Torne-o implícito – considere que
• Quando b for igual a 1 (e acontecer x=1 clk^ x=1 clk^ x=1 x=1 clk^ x=1 clk^ x=1
a cada transição de estado
o evento de clock), transite para o On1 On2 On3
ocorre uma borda de subida de
On1 On2 On3

estado On1 um clock.


– Faça x=1 clk – E se quiséssemos uma transição Entrada: b; Saída: x
– Nos próximos dois eventos de clock, Inputs: sem a ocorrência de uma borda x=0
transite para On2 e On3 nessa ordem. de subida de um clock? Off
b b’
Nesses dois casos faça x=1 também. • Não tratamos de FSM a
State Off Off Off Off Off On1 On2 On3 Off assíncronas nesse curso b
• Logo x=1 para 3 períodos após o x=1 x=1 x=1
Outputs: • Consideramos apenas FSM
botão ter sido pressionado. síncronas – borda de subida On1 On2 On3
x
para cada transição de estado
Digital Design Digital Design
Copyright © 2006 27 Copyright © 2006 28
Frank Vahid Frank Vahid

Exemplo de FSM:
Definição de FSM Chave de Segurança Codificada para Carros
• FSM são compostas por: Entrada: b; Saída: x • Muitos carros possuem chaves
x=0
– Um conjunto de estados com minúsculos CIs embutidos.
Off b’
• Ex: {Off, On1, On2, On3} – Quando a ignição é acionada, o
– Um conjunto de entradas, um conjunto b computador central do carro solicita
de saídas x=1 x=1 x=1 ao CI da chave o seu código de
• Ex: Entradas: {b}, Saídas: {x} On1 On2 On3 identificação (ID)
– Um estado inicial – A chave transmite o identificador (ID)
Frequentemente representamos • Se estiver em desacordo, o
• Ex: “Off” uma FSM no modo gráfico. Esse computador central do carro corta o Entrada: a; Saída: r
– Um conjunto de transições de estados modo é chamado combustível.
Espera
• Descrevem os próximos estados
diagrama de estados • FSM r=0
a a’
• Ex: Mostra 5 transições
– Espera até o computador central pedir
– Conjunto de ações Podemos descrevê-las na forma de K1 K2 K3 K4
o ID (a=1)
• Define valores para as saídas para cada tabela (tabela de estados), ou na
estado. forma algoritmica (VHDL, etc.) – Transmite o ID (caso seja, 1011) r=1 r=1 r=0 r=1

• Ex: x=0, x=1, x=1, e x=1 libera o funcionamento


Digital Design Digital Design
Copyright © 2006 29 Copyright © 2006 30
Frank Vahid Frank Vahid
Exemplo de FSM: Chave de Segurança
Codificada para Carros (cont.) Exemplo de FSM: Detector de códigos
• Características de FSM: Entrada: a; Saída: r
• Destrava a fechadura da porta (u=1) Start
s
u
– Permitem avaliar o Wait somente quando os botões são r
Red Detector
r=0 a’ pressionados na sequência correta: g Destrava
comportamento de saída para a a Green de códigos
– start, red, blue, green, red b Fechadura
uma seqüência de entrada K1 K2 K3 K4
Blue
a
• Uma entrada para cada botão: s, r, g, b
diferente r=1 r=1 r=0 r=1 – Uma entrada a para indicar que algum
– Diagramas temporais mostram botão colorido foi pressionado Entradas: s,r,g,b,a;
• FSM Saída: u
os estados e os valores de saída Q: Determine os estados e o valor de r Wait
para diferentes formas de onda para a forma de onda dada: – Espera pelo start (s=1) fica no estado u=0
“Wait” s s’ ar’ ab’ ag’ ar’
da(s) entrada(s) clk
– Uma vez iniciado (“Start”)
a

Entradas Start a’
clk a • Se r=1, vá para o estado “Red1”
u=0
• Depois, se b, vá para “Blue” ar
Entradas
Estados Wait Wait K1 K2 K3 K4 Wait K1 • Depois, se g, vá para“Green” ab ag ar
a Red1 Blue Green Red2
• Depois, se r, vá para “Red2”
Estados Saída a a’ a’ a’
Wait Wait K1 K2 K3 K4 Wait Wait – Nesse estado, destrave a porta (u=1) u=0 u=0 u=0 u=1
r • Pressionar botão errado em qualquer
Saída passo, faz retornar para o estado “Wait”,
Q: Você poderia enganar esta FSM para abrir a
r sem destravar a fechadura da porta. porta, sem saber o código de antemão?
a
Digital Design Digital Design A: Sim, apertando todos os botões simultaneamente
Copyright © 2006 31 Copyright © 2006 32
Frank Vahid Frank Vahid

FSM melhorada para o Detector de códigos Arquitetura Padrão de um Controlador


• Como implementar uma FSM em um
Entradas: s,r,g,b,a; Entrada: b; Saída: x
circuito sequencial?
Saída: u x=0
Wait – Adotaremos de início uma arquitetura
s’ ar’ ab’ ag’ ar’ padrão Off b’
u=0 s a

• Registrador de estados – para armazenar


b
os estados atuais. x=1 x=1 x=1
Start • Lógica combinacional – para produzir as
a’ saídas, e os próximos estados On1 On2 On3
u=0
ar • Para a FSM do temporizador de lasers
ab ag ar – Um registrador de estados de 2-bits,
Red1 Blue Green Red2 capacidade para representar 4 estados

Entrada
a’ a’ a’ b x

FSM

saída
FSM
– Entrada b, Saída x
u=0 u=0 u=0 u=1 Obs.: um pequeno problema
Lógica
ainda persiste; veremos mais – Arquitetura conhecida como controlador n1
adiante Combinacional

Saídas
Entradas

I O n0
FSM
FSM

• Novas condições nas transições detectam se um botão errado for pressionado, Lógica
s1 s0
Combinacional
fazendo o sistema retornar para o estado “Wait” Registrador de
S clk
• FSMs fornecem meios concretos e formais para se definir com precisão o m
a
estados
Registrador de m
comportamento do circuito sequencial desejado clk
Estados de m bits

Digital Design Digital Design N


Copyright © 2006 33 Copyright © 2006 34
Frank Vahid Frank Vahid Versão padrão

3.4 Projeto de um Controlador:


Projeto de um Controlador Exemplo do Temporizador de Laser
• Cinco passos para projetar um controlador • Passo 1: Especifique a FSM Entrada: b; Saida: x
x=0
– Já fizemos anteriormente 00
Off b’
• Passo 2: Definir a arquitetura a

b
– Registrador com 2-bits (para os x=1 x=1 x=1
4 estados da FSM) 01 On1 10 On2 11 On3

– Entrada: b, Saída: x
entradas

Saidas

– Próximos estados: n1, n0 b x


FSM

FSM

Lógica n1
• Passo 3: Codificar os estados Combinacional
n0
– Qualquer codificação a princípio s1 s0 a
nos servirá. Registrador
clk
de estados

Digital Design Digital Design


Copyright © 2006 35 Copyright © 2006 36
Frank Vahid Frank Vahid
Projeto de um Controlador: Projeto de um Controlador:
Exemplo do Temporizador de Laser (cont.) Exemplo do Temporizador de Laser (cont.)
• Passo 4: Crie a tabela de estados Entrada: b; Saída: x • Passo 5: Implemente a lógica

outputs
inputs
FSM
b x

FSM
x=0
00
b’
combinacional Combinational n1
logic
Off
n0
a a
b s1 s0
x=1 x=1 x=1 clk State register
01 On1 10 On2 11 On3

outputs
inputs
FSM
b x

FSM
Combinational n1 x = s1 + s0 (observe pela tabela que x=1 se s1 = 1 ou
logic s0 = 1)
n0
s1 s0
n1 = s1’s0b’ + s1’s0b + s1s0’b’ + s1s0’b
clk State register
n1 = s1’s0 + s1s0’

n0 = s1’s0’b + s1s0’b’ + s1s0’b


n0 = s1’s0’b + s1s0’

Digital Design Digital Design


Copyright © 2006 37 Copyright © 2006 38
Frank Vahid Frank Vahid

Projeto de um Controlador: Compreendendo o Comportamento de um


Exemplo do Temporizador de Laser (cont.) Controlador
x=0 x=0 x=0
• Passo 5: Implemente o b
Logica Combinacional
x
00
Off b’ 00
Off b’ 00
Off b’

circuito combinacional (cont)


outputs

b b b
inputs
FSM

b x
FSM

x=1 x=1 x=1 x=1 x=1 x=1 x=1 x=1 x=1


Combinational n1 01 On1 10 On2 11 On3 01 On1 10 On2 11 On3 01 On1 10 On2 11 On3
logic n1 a
n0 b b b
0 x 0 x 0 x
s1 s0 0 0 1 0 1 1
0 0 1
0 0 1
clk State register
n1 n1 n1
n0 0 0 1
0 0 0 a
0 1 0
n0 n0 n0
0 1 0
s1 s0
0 0 0
Registrador s1 s0 s1 s0 s1 s0
clk clk clk clk
0 0 0 0 0 1
0 0 0 1 1 0

clk state=00 state=00 state=01

x = s1 + s0
Entrada:
I
n1 = s1’s0 + s1s0’ b
n0 = s1’s0’b + s1s0’ Saída:
x

Digital Design Digital Design


Copyright © 2006 39 Copyright © 2006 40
Frank Vahid Frank Vahid

Exemplo de controlador: Exemplo de Controlador:


Sincronizador para Pressionamento de Botões Sincronizador para Pressionamento de Botões (cont.)
outputs
inputs

bi bo Step 2: Create architecture


FSM

FSM

cycle1 cycle2 cycle3 cycle4 FSM inputs: bi; FSM outputs: bo


Combinational
clk logic
bi’ n1
bi
Inputs: bi’ n0
bi A bi B bi C bi’ s1 s0 n1 = s1’s0bi + s1s0’bi a
Sincronizador n0 = s1’s0’bi
bi para bo bo=0 bo=1 bo=0 clk
State register bo = s1’s0bi’ + s1’s0bi = s1’s0
Pressionamento Outputs:
Combinational logic
de Botões bo Step 1: FSM bo

Combinational logic bi
Inputs Outputs
s1 s0 bi n1 n0 bo n1
FSM inputs: bi; FSM outputs: bo 0 0 0 0 0 0
• Queremos um circuito sequencial simples que faça com A
0 0 1 0 1 0
bi’ 0 1 0 0 0 1 n0
que o efeito de “pressionar” um botão dure 1 ciclo de clock, bi’
bi
bi’
B
0 1 1 1 0 1
00 01 10
independente do tempo que o botão fique pressionado. bo=0
bi
bo=1
bi
bo=0
C
1 0 0
1 0 1
0 0 0
1 0 0
s1 s0
State register
clk
– Assumiremos que o sinal “pressionar” do botão seja ideal. Step 3: Encode states unused
1 1 0
1 1 1
0 0 0
0 0 0

Step 4: State table Step 5: Create


combinational circuit
Digital Design Digital Design
Copyright © 2006 41 Copyright © 2006 42
Frank Vahid Frank Vahid
Exemplo de Controlador: Gerador de sequência Exemplo de Controlador: Chave de Carro Segura
• Queremos gerar a sequência 0001, 0011, 1100, 1000, (repete)
– Cada valor em um ciclo de clock Inputs: a; Outputs: r
• (do exemplo anterior)
Wait
– Comum para criar um padrão em 4 lâmpadas, ou controlar ímas de um “motor de r=0 a a’
passo”

Step 1
w a
Inputs: none; Outputs: w,x,y,z x Inputs: none; Outputs: w,x,y,z K1 K2 K3 K4
y
wxyz=0001 wxyz=1000 Combinational z wxyz=0001 wxyz=1000 r=1 r=1 r=0 r=1
logic a r
A D n1 A D
n0 00 11 Combinational
n2

Step 2
s1 s0 logic
n1
State register 01 10 n0
B C clk B C
wxyz=0011 wxyz=1100 wxyz=0011 wxyz=1100 s2 s1 s0
Step 1: Create FSM Step 2: Create architecture Step 3: Encode states clk State register

w
x FSM outputs Inputs: a; Outputs: r
w = s1
x = s1s0’ y
y = s1’s0
000
z r=0 a’
z = s1’ a
a

Step 3
n1 = s1 xor s0
n0 = s0’
n0 n1 001 010 011 100
s1 s0
State register r=1 r=1 r=0 r=1
clk We’ll omit Step 5
Digital Design Step 4: Create state table Digital Design Step 4
Copyright © 2006 43 Copyright © 2006 44
Frank Vahid
Step 5: Create combinational circuit Frank Vahid

Exemplo: Circ. Sequencial para FSM Equívocos comuns envolvendo


(Engenharia Reversa) transições de estado
O que esse circuito faz? y=s1’ a
A B
• Apenas uma condição deve a
z = s1s0’
n1=(s1 xor s0)x D C
estados ser verdadeira b
x y
n0=(s1’*s0’)x – Para todas as transições ab=11 –
z Outputs:y, z saindo de um estado next state? a

A B Estados – Senão, para qual estado ir? a


n1
• Uma das condições deve
yz=10 yz=10
com as
saídas a a’b
ser verdadeira
D C
what if
n0 yz=00 yz=01
ab=00?
s1 s0 – Para todas as transições a’b
Inputs: x; Outputs: y, z
clk
State register
x saindo de um estado a’b’
x’ yz=10
A
yz=10 x’
B

x
– Todas as combinações de a
entrada deverão ser
D C yz=01
x’ a’b
yz=00
consideradas
Dê nome aos estados a sua escolha x
Estados com as – Senão, para onde a FSM
Saídas e deverá ir?
Digital Design transições Digital Design
Copyright © 2006 45 Copyright © 2006 46
Frank Vahid Frank Vahid

Verificando se as Transições de Estados Evidência que equívocos são comuns


estão completas e corretas
• Voltamos ao caso da FSM do
• Podemos verificar usando Álgebra Booleana Resposta: Detector de códigos
– Apenas uma condição deve ser verdadeira: faça um AND a * a’b – Nós “determinamos” um problema Wait
= (a * a’) * b u=0 s s’
de cada par de condições (para transições saindo de um com as condições de transição de a

=0*b estado
estado) deverá ser igual a 0 prova que um par nunca =0 Start
pode ser simultaneamente verdadeiro OK!
a
– As transições obedecem as 2 a’
u=0 ar
propriedades citadas?
– Uma das condições deve ser verdadeira: Faça um OR de a + a’b • Considere as transições a partir do ab ag ar
Red1 Blue Green Red2
todas as condições saindo de um estado, que deverá ser = a*(1+b) + a’b estado Start, e somente a a’ a’ a’
propriedade “apenas uma u=0 u=0 u=0 u=1
igual a 1 prova que pelo menos uma condição deverá = a + ab + a’b
= a + (a+a’)b verdadeira”
ser verdadeira ar * a’ a’ * a(r’+b+g) ar * a(r’+b+g)
Intuitivamente: pressione os
a =a+b botões red e blue ao mesmo
– Exemplo: Errado! Pode = (a*a’)r = 0*r = (a*a)*r*(r’+b+g) = a*r*(r’+b+g) tempo: condições ar, e a(r’+b+g)
não ser igual a 1 =0 =0 = arr’+arb+arg serão ambas verdadeiro. Qual
a’b (ex., a=0, b=0) = 0 + arb+arg dessas duas deveria ser
considerada?
= arb + arg
Q: Para as transições mostradas no exemplo acima, prove se: = ar(b+g) a
Q: Como resolver isso?
* Somente uma condição é verdadeira (o AND de cada par é sempre 0)
Errado! Significa que 2 das A: ar deverá ser arb’g’
* Uma condição verdadeira (o OR de todas as transições é sempre 1)
(assim como para ab, ag, ar)
Digital Design Digital Design transições de estado que partem
Copyright © 2006 47 Copyright © 2006 de Start poderiam ser 48
Frank Vahid Frank Vahid
verdadeiras ao mesmo tempo
3.5

Notações Mais Simplificadas Outros Flip-Flops


• Outros tipos de flip-flop
a=0 a=0
• FSMs b=1 b=0 a – Flip-flop SR: funciona como o latch SR, só que gatilhado pela borda
c=0 c=1
– Assuma que saída sem – Flip-flop JK: funciona como o flip-flop SR (S J, R K)
clk a
atribuição são implicitamente • Mas quando JK=11, chaveia as saídas Q e Q’
assumidas igual a 0 • 1 0, 0 1
• Circuitos sequenciais b=1 c=1 – Flip-flop T: flip-flop JK com as entradas unidas por um fio (entrada T)
– Assuma que entradas de clocks • Chaveia a cada borda de subida do clock.
não conectadas, deverão ser – Eram usados antigamente para minimizar lógica de circuitos
a
conectadas ao mesmo clock sequenciais.
externo • Atualmente se tornou irrelevante.
• Flip-flops D são os mais comumente utilizados.

Digital Design Digital Design


Copyright © 2006 49 Copyright © 2006 50
Frank Vahid Frank Vahid

Comportamento não ideal de um Flip-flop Metaestabilidade clk


• Não podemos mudar as entradas de um flip-flop muito • Violar os tempos de setup/hold pode levar a
próximo às transições do clock clk D
uma situação indesejável conhecida como
– Tempo de setup: tempo que D deverá estar estável estado de metaestabilidade
D
antes do evento. – Estado de metaestabilidade: Estado do flip-
flop indefinido (diferente de 0 e de 1)
setup time
• Do contrário, um valor estável não ficará armazenado dentro
violation
do latch. setup time • Eventualmente fica em 1 ou 0, mas não temos
como saber qual deles
– Tempo de hold: tempo que a entrada D deverá se
clk – Para circuitos internos, podemos certificar-nos Q
manter estável após a ocorrência do evento
que o tempo de setup é obedecido
• Do contrário, o novo valor não terá tempo de ser
D – Mas se a entrada vier de uma fonte externa metastable
realimentado e ser estabilizado dentro do latch interno
assíncrona (ex.: o “pressionar” de um botão)? state
Violação do tempo de Setup
D latch C
• Solução parcial ai

D hold time
S – Inserir um flip-flop sincronizador para a
D 1 entrada assíncrona
Q’ S • Flip-flops especiais com um tempo de setup/hold
C 2 muito pequenos a
u
4
– Não impede a ocorrência completa da ai
Q 3
R mestaestabilidade!!
u R 7
Q’ Provoca oscilação!! synchronizer
Q 5 6
Digital Design Digital Design
Copyright © 2006 51 Copyright © 2006 52
Frank Vahid Frank Vahid

Metaestabilidade Entradas Set e Reset de um Flip-Flop


• Um flip-flop não resolve o problema completamente
• Alguns flip-flops possuem D Q’ D Q’ D
AR
Q’
• E se adicionássemos mais desses flip-flops sincronizadores?
– Ajuda, mas só diminui a probabilidade de metaestabilidade.
algumas entradas a mais: Q Q Q
AR AS
• Como poderemos resolver por completo? – Reset síncrono: faz com que Q vá R

– Não podemos! Isso pode parecer desanimador. Mas nós simplesmente não para 0 no próximo evento de clock
podemos garantir um projeto que não irá nunca ser metaestável. Nós só podemos – Set síncrono : faz com que Q vá cycle 1 cycle 2 cycle 3 cycle 4
minimizar o tempo médio entre falhas (MTBF) – uma medida de tolerância a falhas clk
normalmente fornecida ou calculada para um circuito
para 1 no próximo evento de clock
– Reset assíncrono: faz com que Q D
A probabilidade de um flip-flop ficar metaestável é … vá para 0 imediatamente
Muito Muito, muito Extremamente (independente do evento de clock) AR

baixa baixa baixa baixa • Exemplo mostrado no diagrama


Q
ai
de tempo ao lado.
– Set assíncrono: faz com que Q vá
para 1 imediatamente
sincronizadores
Digital Design Digital Design
Copyright © 2006 53 Copyright © 2006 54
Frank Vahid Frank Vahid
Estado Inicial de um Controlador Glitching
• Todas as nossas FSM possuem Entrada: x; Saída: b • Glitch: Valores temporários (picos de tensão) nas saídas
um estado inicial x=0
que aparecem logo após as alterações de entrada, antes
– Mas nossos projetos de circuitos Off b’
de novos valores de saída se tornarem estáveis.
sequenciais não. b
– Podemos alcançar esse objetivo com
x=1 x=1 x=1 • O projetista deverá determinar se os glitchs nas saídas
On1 On2 On3
o uso de flip-flops com entradas de deverão realmente representar um problema!
reset/set b x – Se assim for, pense em adicionar um ou mais flip-flops as saídas.
• No circuito ao lado os flip-flops são Lógica
n1 • Atrasos de saída por um ciclo de relógio, poderão ser suficientes para
Combinacional
incializados em 0 e 1 resolver o problema.
n0
respectivamente. s1 s0
– O projetista tem que garantir que a clk
State register

entrada de reset fique em 1 durante o D Q’ D Q’


tempo suficiente no momento que for
ligado. R
Q
S
Q
reset
• Feito com um circuito eletrônico
Digital Design Digital Design
Copyright © 2006 55 Copyright © 2006 56
Frank Vahid Frank Vahid

Entradas ativas em nível lógico baixo (0)

• Consideramos nos exemplos


mostrados que as ações
acontecem quando a entrada D Q’
tem valor lógico igual a 1
– Algumas entradas podem ser Q
R
ativadas em nível lógico 0 (veja o
flip-flop no símbolo ao lado)
– Representado com um pequeno
círculo na entrada do dispositivo.
– Logo, para zerar (dar um Reset) no
flip-flop mostrado, faça R=0. Do
contrário faça R=1.
Digital Design
Copyright © 2006 57
Frank Vahid

Você também pode gostar