0% acharam este documento útil (0 voto)
13 visualizações57 páginas

CH 03

O capítulo aborda circuitos lógicos sequenciais, destacando a importância de flip-flops e registradores para armazenar informações em sistemas digitais. São discutidos problemas e soluções relacionadas ao armazenamento de bits, como o uso de latches e flip-flops, além de introduzir conceitos de sinais de clock e suas aplicações em circuitos sequenciais. O conteúdo é baseado no livro 'Digital Design' de Frank Vahid, adaptado para o português.

Enviado por

O matemágico
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações57 páginas

CH 03

O capítulo aborda circuitos lógicos sequenciais, destacando a importância de flip-flops e registradores para armazenar informações em sistemas digitais. São discutidos problemas e soluções relacionadas ao armazenamento de bits, como o uso de latches e flip-flops, além de introduzir conceitos de sinais de clock e suas aplicações em circuitos sequenciais. O conteúdo é baseado no livro 'Digital Design' de Frank Vahid, adaptado para o português.

Enviado por

O matemágico
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 57

Sistemas Digitais

Capítulo 3:
Projeto Lógico Sequencial e
Controladores

Material traduzido e adaptado para o


Português pelo Prof. Ricardo O. Duarte e
revisado pelos Profs. Luciano Pimenta e
Hermes Magalhães
DELT – EEUFMG
(Rev. 3b)

Slides to accompany the textbook Digital Design, First Edition,


by Frank Vahid, John Wiley and Sons Publishers, 2007.
http://www.ddvahid.com

Copyright © 2007 Frank Vahid


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,
Digital
subject to keeping Design
this copyright notice in place and unmodified. These slides may be posted as unanimated pdf versions on publicly-accessible course websites.. PowerPoint source (or pdf
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
Franksource
may obtain PowerPoint Vahidor obtain special use permissions from Wiley – see http://www.ddvahid.com for information.
Introdução
3.1

• 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

Chamada Q 2. Botão chamada solto – a luz fica


Cancelar acesa
a
Botão Luz Azul
Não funciona. Q=1 quando Chamada=1, mas Chamada Armazena
não fica em 1 quando Chamada retorna a 0 Botão Bit
Cancela
Alguma forma de“realimentação” no
circuito resolve o problema? 3. Botão cancelar pressionado – apaga a
luz
Digital Design
Copyright © 2006 3
Frank Vahid
Primeira tentativa de armazenar um bit
• Necessitamos alguma forma de realimentar as saídas
para as entradas S Q
• Solução intuitiva: ligar a saída Q na entrada t t
– Esse circuito se comporta da maneira que gostaríamos?
• Não: Uma vez que Q se torna 1 (quando S=1), Q fica em 1 para
sempre – nenhum outro valor de S pode fazer com que Q volte a 0

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

• Este circuito à direita com 2 portas lógicas NOR


faz o que queremos?
S=0, R=1 => RESET (Q=0) S=0, R=0 => MANTEM
Q
S=0, R=0 => MANTEM S=1, R=0 => SET (Q=1)

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

R=1 R=0 R=0 R=0

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

– Botão Chamada=1 : faz Q ser 1 Chamada

• Q fica em 1 mesmo depois que


Botão Chamada=0 Luz Azul

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


Q

passa a ficar em 0 Cancela R

• Mas, ainda resta um problema...

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

Quanto mais longo for o caminho de X a R do que


de X a S, mais tempo tem-se SR=11 por um
Digital Design período de tempo que pode ser curto, mas pode ser
Copyright © 2006 8
Frank Vahid
longo suficiente para causar uma oscilação
Solução: Latch SR (sensível ao nível)
• Inclua uma entrada “C” (habilitar o circuito) como
Latch SR sensível ao nível
mostrado no circuito ao lado. S
S1
– Permita que S e R mudem somente quando C=0
• Garante que o circuito que fornece SR = 11
momentaneamente nunca produza S1R1=11. C
– Mude C para1 somente após um tempo suficiente
Q
para S e R ficarem estáveis.
R
– Quando C se torna igual a 1, as entradas estáveis R1
S e R passam através dos 2 ANDs às entradas do
latch SR (entradas S1 e R1) S
Q’
C
Através de SR=11 brevemente... R
Q
Latch SR sensível ao nível
1
S S
X S1 0 Símbolo do Latch SR
1 (sensível ao nível)
R0
C 1 a
Clk C
0
Q 1
S1
R 0
R1
Y 1
R1 0
Digital Design
Copyright © 2006 9
Frank Vahid ...S1R1 nunca vai para = 11
Sinais de Clock (=relógio) para um Latch

• Como sabemos quando é seguro fazer C=1?


– Soluções mais comuns – fazer com que C pulse Latch SR sensível ao nível
up/down e convencionar, por exemplo que: X
S
S1
• Quando C=0:
– X, Y poderão se alterar livremente. C
Clk
• Quando C=1:
– Não deveremos alterar X, Y e… Q
– Além disso, X,Y deverão já ter atingido a estabilidade R
R1
Y
• Veremos como garantir isso mais à frente…
– Sinal de Clock – Sinal pulsado usado para habilitar o
latch
– Circuitos sequenciais nos quais todos os
componentes de armazenamento usam sinais de
clock para mudar de estado são chamados: circuitos
sequenciais síncronos
•Digital
Circuitos
Design sequenciais mais comuns de serem
encontrados.
Copyright © 2006 10
• Projeto
Frank Vahid de Circuitos assíncronos: curso mais avançado
Clocks

• Período do Clock (segundos): intervalo de tempo


entre pulsos (eventos de clock). Ou seja, é o tempo
de uma oscilação completa do sinal de clock. Freq Período
– Sinal acima: período = 20 ns 100 GHz 0.01 ns
• Ciclo de Clock (adimensional): contagem de 10 GHz 0.1 ns
períodos de clock 1 GHz 1 ns
100 MHz 10 ns
– Sinal acima mostra 3,5 ciclos de clock.
10 MHz 100 ns
• Frequência do Clock: 1/período
– Sinal acima: frequência = 1 / 20 ns = 50 MHz
• 1 Hz = 1/s (unidade de frequência: Hertz)
Digital Design
Copyright © 2006 11
Frank Vahid
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


– O inversor inserido (NOT) garante que R R
sempre terá o valor lógico oposto de S,
quando o sinal de clock estiver em nível
lógico 1 (C=1) 1
D D Q’
0
C Q
1
C
0 Símbolo do
1 Latch D
S
0
1
R
0
Digital Design 1
Copyright © 2006 Q 12
0
Frank Vahid
Problemas dos Latches D (sensíveis ao nível)
• O latch D ainda apresenta um problema
– Quando C=1, através de quantos latches o sinal trafegará corretamente?
– Depende de por quanto tempo deixaremos C=1
• Clk_A: o sinal provavelmente trafegaria por um grande número de latches
• Clk_B: o sinal provavelmente trafegaria por um pequeno número de latches
– Difícil de definir C (para um número exato de latches).
• Podemos projetar um circuito de armazenamento de 1 bit que armazena o
valor do bit somente na borda de subida do clock?
Bordas de subida
Y D1 Q1 D2 Q2 D3 Q3 D4 Q4 Clk

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

– O latch mestre recebe o sinal do clock do escravo invertido


– Mestre armazena Dm quando Clk=0, e o Escravo armazena Obs: Existem
dezenas de projetos
Ds quando Clk=1 de flip-flops
– Quando Clk muda de 0 para 1, o Mestre é desconectado da
sua entrada D, o Escravo é carregado com o valor que
estava em Ds logo antes de Clk ter mudado (isto é: o valor
em D durante a borda de subida de Clk).
flip-flop D
Latch D Latch D
D Q’
Dm Qm Ds Qs’

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:

Valor mantido: se Circuito obtido pela tabela


Q=0, faz D=0; se verdade
Q=1, faz D=1
Cancel – faz D=0 Call
D Q’
Blue
light
Cancel
Clk Q
Call – faz D=1
Q
Damos prioridade
ao Call – faz D=1
D = Cancelar' Q + Chamar
Digital Design
Copyright © 2006
Frank Vahid Luz azul  acesa: Q=1, apagada: Q=0 18
Resumo: Circuito de Armazenamento de 1 Bit
latch SR latch SR c/ ent. controle Latch D Flip-flop D
S (set) S D
S1 S Latch D Latch D
D Q’
Dm Qm Ds Qs’
C C Q
Cm Cs Qs
Q Q Q mestre escravo
R
R1 R Clk
R (reset)

Característica: Característica: S e R Característica: SR não Característica: somente


para latches feitos somente são avaliados será igual a 11 se D se carrega em Q (saída) o valor
com portas NOR: quando C=1. Permanece estabilizar um “atraso de lógico presente em D (entrada)
S=1 leva Q a 1, o problema de SR=11 porta” antes e permanecer no evento de transição do
R=1 leva Q a 0. produzir Q indefinido. estável durante C=1. SR clock (no exemplo: nível zero
Problema: SR=11 Pode-se evitar qua a poderá assumir o valor carrega o dado no primeiro
produz Q condição SR=11 indesejável 11 por um estágio, na borda de subida o
indefinido (*). aconteça pela construção período de tempo dado fica armazenado e é
de lógica externa. curtíssimo (referente a um jogado na saída do segundo
(*) Para latches atraso de porta – este pico estágio), assim valores não se
feitos com portas denomina-se glitch) se propagam para outros flip-flops
NAND ocorre o estas condições de durante o mesmo período de
oposto. estabilidade não forem clock. Tradeoff: necessita mais
respeitadas. Problema portas lógicas internamente
adicional: C=1 durante que o latch D e demanda mais
longo tempo propaga portas lógicas externas que o
novos valores através de Latch SR.
muito latches. Tempo curto
pode não ser suficiente
Digital Design
para armazenar valores
Copyright © 2006 19
em alguns latches.
Frank Vahid
Registrador Simples
• Tipicamente armazenam um número n de bits.
– Ex.: armazenar um número binário de 4 bits.
• Registrador: múltiplos flip-flops compartilhando o mesmo
sinal de clock.
– Desse momento em diante, usaremos registradores para
armazenar bits
• Desnecessário raciocinar como latches e flip-flops são implementados.
• Entretanto agora vocês sabem de que registradores são feitos e como
funcionam.
I3 I2 I1 I0
4-bit register
I3 I2 I1 I0
D D D D reg(4)
Q Q Q Q
Q3 Q2 Q1 Q0
clk

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.

Hora atual 1 hora atrás 2 horas atrás


Mostrador Mostrador Mostrador

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

(Finite-State Machines – FSMs) e Controladores


• Se quisermos um circuito b Controlador
sequencial com um comportamento x
laser

específico ao longo do tempo. clk

• Exemplo: Temporizador para Laser paciente

– Push button: x=1 para 3 períodos de


clock
– Como? Vamos tentar com 3 flip-flops
• b=1 fica armazenado no primeiro flip-flop
D b
D Q D Q D Q
• Depois no 2o flip-flop no próximo
período, depois no 3o flip-flop no clk
próximo
x
• Faço um OR da saída dos 3 flip-flops,
portanto a saída X deverá ficar em 1 por
3 períodos de clock.
Digital Design
Copyright © 2006 23
Frank Vahid
Necessitamos de um Método para projetar
Circuitos Sequenciais
• “Tentativa e Erro” não é um método adequado.
– Seríamos capazes de projetar, usando tentativa e erro, um circuito que
funcionasse para um determinado comportamento desejado?
• Seríamos capazes de projetar um contador de 1 a 9? Pulsar uma saída de 1 em
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?
– Tentativa e erro produzem circuitos sequenciais com comportamentos
imprevisíveis.
• Temporizador de Laser: O que aconteceria se pressionássemos um botão
novamente enquanto x estivesse em 1? X ficaria em 1 por mais 3 períodos. Isso
é o que gostaríamos de ter?
• O projeto de circuitos combinacionais é baseado em 2 aspectos:
1. Uma descrição formal para descrever o comportamento do circuito.
• Por exemplo: equação Booleana ou tabela verdade.
2. Um processo bem definido para converter o comportamento em circuito.
• Por exemplo, soma de produtos resultando em portas AND e OR.
• Precisamos de algo assim para projetar Circuitos Sequenciais !
Digital Design
Copyright © 2006 24
Frank Vahid
Descrevendo o Comportamento
de um Circuito Sequencial: FSM
• Finite-State Machine (FSM) Saída: x
clk^
– Um modo de se descrever um x=0 x=1
circuito sequencial.
Off On
– Lista estados, e transições
entre os estados definidos. clk^
• Exemplo: Faça x variar
(alternar) (0 para 1, ou 1 para
0) a cada período de clock
• Dois estados: “Off” (x=0), and
“On” (x=1)
• Transições de Off para On, ou
de On para Off, na borda de
subida do clock.
• A seta sem um ponto de
partida, denota o estado
inicial (quando o circuito se
inicia assim que for ligado)
Digital Design
Copyright © 2006 25
Frank Vahid
Exemplo FSM : 0,1,1,1, repete
• Queremos: Saída: x
x=0 clk^ x=1 clk^ x=1 clk^ x=1
0, 1, 1, 1, 0, 1, 1, 1, ...
Off On1 On2 On3
– Cada valor fica um período de
clock.
clk^
• Podemos descrever o
comportamento como uma FSM
– Quatro estados distintos. clk
– Transição de um estado a outro na State Off On1 On2 On3 Off On1 On2 On3 Off
borda de subida do clock.
Outputs:
x

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

o evento de clock), transite para o On1 On2 On3

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

assíncronas nesse curso b


• Consideramos apenas FSM x=1 x=1 x=1
síncronas – borda de subida On1 On2 On3
para cada transição de estado
Digital Design
Copyright © 2006 28
Frank Vahid
• FSM são compostas por: Definição de FSM
– Um conjunto de estados
• Ex: {Off, On1, On2, On3} Entrada: b; Saída: x
– Um conjunto de entradas, um conjunto x=0
de saídas Off b’
• Ex: Entradas: {b}, Saídas: {x}
– Um estado inicial b
x=1 x=1 x=1
• Ex: “Off”
On1 On2 On3
– Um conjunto de transições de estados
• Descrevem os próximos estados Frequentemente representamos
• A figura exemplo mostra 5 transições uma FSM no modo gráfico. Esse
– Conjunto de ações modo é chamado
• Define valores para as saídas para diagrama de estados
cada estado. No exemplo:
– Saída x=0 para o estado “Off”, x=1 Podemos descrevê-las na forma de
para o estado “On1”, x=1 para “On2”, e tabela (tabela de estados), ou na
x=1 para “On3”.
forma algoritmica (VHDL, C, etc.)

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

– Transmita o ID, por exemplo 1011. r=1 r=1 r=0 r=1

Digital Design Se o ID for o mesmo registrado na central do


Copyright © 2006 carro, ela irá liberar o funcionamento do motor. 30
Frank Vahid
Exemplo de FSM: Chave de Segurança
Codificada para Carros (cont.)
• Características de FSM: Entrada: a; Saída: r

– Permitem avaliar o Wait


r=0 a’
a
comportamento de saída para
uma seqüência de entrada K1 K2 K3 K4
diferente r=1 r=1 r=0 r=1
– Diagramas temporais mostram
os estados e os valores de saída Q: Determine os estados e o valor de r
para diferentes formas de onda para a forma de onda dada:
da(s) entrada(s) clk
Entradas
clk a
Entradas
Estados Wait Wait K1 K2 K3 K4 Wait K1
a
Estados Wait Wait K1 K2 K3 K4 Wait Wait Saída a

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

• Novas condições nas transições detectam se um botão errado for pressionado,


fazendo o sistema retornar para o estado “Wait”
• FSMs fornecem meios concretos e formais para se definir com precisão o
comportamento do circuito sequencial desejado

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

– Registrador com comprimento

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

x = s1 + s0 (observe pela tabela que x=1 se s1 = 1 ou


s0 = 1)

n1 = s1’s0b’ + s1’s0b + s1s0’b’ + s1s0’b


n1 = s1’s0 + s1s0’

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


n0 = s1’s0’b + s1s0’

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

clk stat e=00 stat e=00 stat e=01

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

• Queremos um circuito sequencial simples que faça com


que o efeito de “pressionar” um botão dure 1 ciclo de clock,
independente do tempo que o botão fique pressionado.
– Assumiremos que o sinal “pressionar” do botão seja ideal.

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

001 010 011 100


r=1 r=1 r=0 r=1
Digital Design Passo 4
Copyright © 2006 44
Frank Vahid
Omitiremos o Passo 5!
Exemplo: Circ. Sequencial para FSM
(Engenharia Reversa)
O que esse circuito faz? y=s1’ a
A B

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

– Senão, para qual estado ir? a

• Uma das condições deve a a’b


ser verdadeira what if
ab=00?
– Para todas as transições a’b
saindo de um estado a’b’
– Todas as combinações de a
entrada deverão ser
a’b
consideradas
– Senão, para onde a FSM
deverá ir?
Digital Design
Copyright © 2006 46
Frank Vahid
Verificando se as Transições de Estados
estão completas e corretas
• Podemos verificar usando Álgebra Booleana Resposta:
– Apenas uma condição deve ser verdadeira: faça um AND a * a’b
de cada par de condições (para transições saindo de um = (a * a’) * b
=0*b
estado) deverá ser igual a 0  prova que um par nunca =0 a
pode ser simultaneamente verdadeiro OK!
– Uma das condições deve ser verdadeira: Faça um OR de a + a’b
todas as condições saindo de um estado, que deverá ser = a*(1+b) + a’b
igual a 1  prova que pelo menos uma condição deverá = a + ab + a’b
= a + (a+a’)b
ser verdadeira
a =a+b
– Exemplo: Errado! Pode
não ser igual a 1
a’b (ex., a=0, b=0)

Q: Para as transições mostradas no exemplo acima, prove se:


* Somente uma condição é verdadeira (o AND de cada par é sempre 0)
* Uma condição verdadeira (o OR de todas as transições é sempre 1)
Digital Design
Copyright © 2006 47
Frank Vahid
Evidência que equívocos são comuns
• Voltamos ao caso da FSM do
Detector de códigos Wait
– Nós “determinamos” um problema u=0 s s’ a

com as condições de transição de


estado Start
– As transições obedecem as 2 a’
u=0 ar
propriedades citadas? ab ag ar
• Considere as transições a partir do Red1 Blue Green Red2
estado Start, e somente a a’ a’ a’
u=0 u=0 u=0 u=1
propriedade “apenas uma
verdadeira” Intuitivamente: pressione os
botões red e blue ao mesmo
ar * a’ a’ * a(r’+b+g) ar * a(r’+b+g) tempo: condições ar, e a(r’+b+g)
= (a*a’)r = (a’*a)(r’+b+g) = (a*a)*r*(r’+b+g) = a*r*(r’+b+g) serão ambas verdadeiro. Qual
dessas duas deveria ser
= 0*r = 0*(r’+b+g) = arr’+arb+arg
considerada?
=0 =0 = 0 + arb+arg
a
= arb + arg Q: Como resolver isso?
= ar(b+g) A: ar deverá ser arb’g’
Errado! Significa que 2 das (assim como para ab, ag, ar)
Digital Design transições de estado que partem de
Copyright © 2006 Start poderiam ser verdadeiras ao 48
Frank Vahid
mesmo tempo
Notações Mais Simplificadas
a=0 a=0
• FSMs b=1 b=0 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 (SJ, RK)
• Mas quando JK=11, chaveia as saídas Q e Q’
• 10, 01
– 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

– Não impede a ocorrência completa da


mestaestabilidade!!

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

A probabilidade de um flip-flop ficar metaestável é …

Muito Muito, muito Extremamente


baixa baixa baixa baixa

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’

algumas entradas a mais: Q Q Q


AR AS
– Reset síncrono: faz com que Q vá R

para 0 no próximo evento de clock


– Set síncrono : faz com que Q vá
para 1 no próximo evento de clock
– Reset assíncrono: faz com que Q
vá para 0 imediatamente
(independente do evento de clock)
• Exemplo mostrado no diagrama
de tempo ao lado.
– Set assíncrono: faz com que Q vá
para 1 imediatamente

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

– Mas nossos projetos de circuitos Off b’


sequenciais não. b
x=1 x=1 x=1
– Podemos alcançar esse objetivo com
On1 On2 On3
o uso de flip-flops com entradas de
reset/set b x
• No circuito ao lado os flip-flops são Lógica
n1
Combinacional
incializados em 0 e 1
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. Q Q
R S
reset
• Feito com um circuito eletrônico
Digital Design
Copyright © 2006 55
Frank Vahid
Glitching
• Glitch: Valores temporários (picos de tensão) nas saídas
que aparecem logo após as alterações de entrada, antes
de novos valores de saída se tornarem estáveis.
• O projetista deverá determinar se os glitchs nas saídas
deverão realmente representar um problema!
– Se assim for, pense em adicionar um ou mais flip-flops as saídas.
• Atrasos de saída por um ciclo de relógio, poderão ser suficientes para
resolver o problema.

Digital Design
Copyright © 2006 56
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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy