Escolar Documentos
Profissional Documentos
Cultura Documentos
MC 602
Circuitos Lógicos e Organização de Computadores
IC/Unicamp
Capítulo 8
Máquinas de estado
FSM (Finite State Machines)
MC602 – Mario Côrtes – IC / Unicamp 1
IC-UNICAMP
Tópicos
• Sistematização do projeto de circuitos
sequenciais síncronos
• Máquinas de Moore
• Máquinas de Mealy
• Atribuição de estados
• Visão geral de máquinas síncronas
Ciclo: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
w z
?
Ck
W Circuito Circuito
Comb. 1 FFs Comb. 2 Z
Y Q
Clock
Y1 y1
D Q
z
Q
w
Y2 y2
D Q
Clock Q
Resetn
y1
Y1
y1
z
y2
w
y2
Entradas Saídas
Y2
w y2y1 Y2Y1 z
y1 0 00 00 0
0 01 00 0
0 10 00 0
0 11 00 1
1 00 01 0
1 01 10 0
1 10 11 0
1 11 11 1
• novo formato:
– explicita transições de estado
Next State
Present
Output Present Next state Output
state w= 0 w= 1
state w= 0 w= 1 z
y 2 y1 z
Y2 Y1 Y2 Y1
A A B 0
0 0 00 01 0 B A C 0
0 1 00 10 0 C A D 0
1 0 00 11 0 D A D 1
1 1 00 11 1
A A B 0
B A C 0
C A D 0
A D A D 1
W=1
W=0
W=1
W=0
D W=0 B
W=1 W=1
Resetn=0
A
W=1
W=0
W=1
W=0
D W=0 B
W=1 W=1
y2 s1 z1
D Q
y1 s2 z2
D Q
w
Q
W Combinational Combinational
Flip-flops circuit Z
circuit Y Q
w z
FSM
Ck
Ciclo: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
MC602 – Mario Côrtes – IC / Unicamp 16
IC-UNICAMP
Definição dos estados
• Primeiro passo: quantos estados são
necessários para representar o histórico?
• Não há método sistemático
• Imaginemos estado inicial (power-up ou
reset) A com z = 0
– desde que w=0, FSM mantém-se em A
• Se w=1 por um clock estado B
– significa histórico = um clock apenas com w=1
• Em B
– se w=1 estado C e z =1
– se w=0 volta para A
• Três estados são suficientes
MC602 – Mario Côrtes – IC / Unicamp 17
IC-UNICAMP
Diagrama de transição de estados
Reset
Reset pode ser
w = 1 clear dos FFs
w = 0 A⁄z=0 B⁄z = 0
w = 0
w = 0 w = 1
C⁄z = 1
w = 1
Ciclo: t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
w: 0 1 0 1 1 0 1 1 1 0 1
z: 0 0 0 0 0 1 0 0 1 1 0
MC602 – Mario Côrtes – IC / Unicamp 18
IC-UNICAMP
Notação do diagrama
Estado C, saída =1
w = 0 w = 1
C⁄z = 1
Reset
w= 1
w= 0 A⁄ z = 0 B⁄ z = 0
Estado Próx estado saída
w= 0
atual w = 0 w = 1 z
w= 0 w= 1
C⁄ z = 1
A A B 0
B A C 0
w= 1
C A C 1
w Y1 y1
Circuito z
Circuito
Combinacional
Combinacional
Y2 y2
CC2: saída =
Clock f(estado atual)
w= 1
w= 0 A⁄ z = 0 B⁄ z = 0
Estado Próx estado saída
w= 0 z
atual w = 0 w = 1
w= 0 w= 1
A A B 0
C⁄ z = 1 B A C 0
C A C 1
w= 1
Estado Próximo
Entrada Saída
atual estado
w y2y1 Y2Y1 z
0 A=00 A=00 0
0 B=01 A=00 0
0 C=10 A=00 1
0 11 dd d
1 A=00 B=01 0
1 B=01 C=10 0
1 C=10 C=10 1
1 11 dd d
w Y1 y1
CC1 CC2 z
Y2 y2
Clock
w y2 y1 Y2 Y1 w y2 y1 z
0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1 0
0 1 0 0 0 0 1 0 1
0 1 1 d d 0 1 1 d
1 0 0 0 1 1 0 0 0
1 0 1 1 0 1 0 1 0
1 1 0 1 0 1 1 0 1
1 1 1 d d 1 1 1 d
0 0 0 d 0
Y = wy 1y 2 Y = wy 1y 2
1 1
1 1 0 d 0
y2y1
w 00 01 11 10
0 0 0 d 0
Y = wy y 2 + wy 1y Y = wy + wy
2 1 2 2 1 2
1 0 1 d 1 = w y +y )
(
1 2
y1
y2 0 1
0 0 0
z = y 1y z = y
2 2
1 1 d
Y2 y2
D Q z
Y1 y1
w D Q
Clock
Resetn
1
w
0
1
y1
0
1
y2
0
1
z
0
Extern
Bus
R1out
Clock
w R1in
R1 R2 Rk
R2out
Control
circuit R2in
Clock R3out
R1in R1out R2in R2out Rkin Rkout
R3in
Done
Control circuit
Function
A ⁄ No transfer Reset
w = 1
B ⁄ R2out = 1, R3in = 1
w = 0
w = 1
w = 0
w = 1 C ⁄ R1out = 1, R2in = 1
w = 0
w = 1
Present Nextstate
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
y2 y1
w
00 01 11 10
0 1
Y 1 = wy 1 + y 1 y 2
1 1 1
y2 y1
w
00 01 11 10
0 1 1
Y 2 = y1 y2 + y1 y2
1 1 1
R1out
R2in
Y2 y2
D Q
y2
Q
R2out
R3
• (ver outra solução na fig. 7.57, com o uso de
registrador de deslocamento
in
MC602 – Mario Côrtes – IC / Unicamp 33
IC-UNICAMP
O problema da atribuição de estados
• Nos exemplos anteriores codificação dos
estados foi arbitrária
• É possível escolher atribuição visando
minimizar o circuito final
– solução ótima é difícil
• Vejamos os dois últimos exemplos em outra
codificação
w= 1
atribuição melhorada
Next state
Present
state w = 0 w = 1 Output
z
y 2 y1 Y2 Y1 Y2 Y1
A 00 00 01 0
B 01 00 11 0
C 11 00 11 1
10 dd dd d
MC602 – Mario Côrtes – IC / Unicamp 36
Circuito final com atribuição melhorada
IC-UNICAMP
circuito antigo
• Y1 = w
• Y2 = w. y1
Y2 y2
• z = y2 D Q z
Y1 y1
w D Q
Clock Q
Resetn
0 1
Y 1 = wy 1 + y 1 y 2
1 1 1
y2 y1
w
00 01 11 10
0 1 1
Y 2 = y1 y2 + y1 y2
1 1 1
Present Nextstate
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 10 10 0 0 1 0 0 1 0
C 10 11 11 1 0 0 1 0 0 0
D 11 00 00 0 1 0 0 1 0 1
MC602 – Mario Côrtes – IC / Unicamp 38
IC-UNICAMP
y2y1 Exemplo 8.1 com nova atribuição
w 00 01 11 10
0 1
Y1 = wy2 + y1y2
1 1 1
y2y1
w
00 01 11 10
0 1 1
Y2 = y1
1 1 1
Present Nextstate
state Outputs
A 00 00 01 0 0 0 0 0 0 0
B 01 11 11 0 0 1 0 0 1 0
C 11 10 10 1 0 0 1 0 0 0
D 10 00 00 0 1 0 0 1 0 1
W Combinational Combinational
Flip-flops circuit Z
circuit Y Q
Clock
w= 0⁄z= 0 A B w= 1⁄z= 1
w= 0⁄z= 0
C⁄z = 1 B
w = 1 w= 0⁄z= 0
Moore Mealy
• Saída definida pelo • O estado atual pode ter
estado atual várias saídas, em
• Arcos de transição de função de w
estados não mostram • Arcos de transição
saídas mostram w e z
w= 0⁄z= 0 A B w= 1⁄z= 1
w= 0⁄z= 0
w= 0⁄ z = 0 A B w= 1⁄ z = 1
w D Q
y
Clock Q
Resetn
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t 10
1
Clock
0
1
w
0
1
y
0
1
z
0
w = 0 • troca de conteúdo
A Reset
dos registradores R1
e R2, usando R3
w = 1 ⁄ R2out = 1, R3in = 1
como temporário
B • diagrama de
w = 0 R1 = 1, R2 = 1
out in
transição de estados
w = 1
w = 0 R3 = 1 R1 = 1 Done = 1
out , in ,
w = 1
a
Shift register
s
Adder
FSM Shift register
Shift register
b
Sum = A + B
B
Clock 50
MC602 – Mario Côrtes – IC / Unicamp
IC-UNICAMP
Projeto somador serial Mealy
Reset ( ab ⁄ s)
11 ⁄ 0
00 ⁄ 0 01 ⁄ 0
01 ⁄ 1 G H 10 ⁄ 0
10 ⁄ 1 11 ⁄ 1
00 ⁄ 1
G: carry-in = 0
H: carry-in = 1
A
a
Shift register
Adder s
FSM Shift register
Shift register
b
Sum= A+ B
B
Clock
MC602 – Mario Côrtes – IC / Unicamp 51
Tabelas de transição
Reset ( ab ⁄ s)
IC-UNICAMP de estados 11 ⁄ 0
G: carry-in = 0 00 ⁄ 0 01 ⁄ 0
01 ⁄ 1 G H 10 ⁄ 0
H: carry-in = 1 10 ⁄ 1 11 ⁄ 1
00 ⁄ 1
a s
Full
b
adder Y y
D Q
carry-out
Clock Q
Reset
00 ⁄ 0 01 ⁄ 0
01 ⁄ 1 G H 10 ⁄ 0
G: carry-in = 0 10 ⁄ 1 11 ⁄ 1
H: carry-in = 1
00 ⁄ 1
Reset
Moore
11 01
00 G0 ⁄ s = 0 H0 ⁄ s = 0
10
00
01 00 11 01
10 11 10
01 G1 ⁄ s = 1 H1 ⁄ s = 1 11
10 00
11 01
00 G0 ⁄ s = 0 H0 ⁄ s = 0
10
00
01 01
00 11 11
10 10
01 G1 ⁄ s = 1 H1 ⁄ s = 1 11
10 00
Present Nextstate
Present Nextstate Output
state state ab=00 01 10 11 Output
ab=00 01 10 11 s y2y1 s
Y2Y1
G0 G0 G1 G1 H0 0
00 00 01 01 10 0
G1 G0 G1 G1 H0 1 01 00 01 01 10 1
H0 G1 H0 H0 H1 0 10 01 10 10 11 0
H1 G1 H0 H0 H1 1 11 01 10 10 11 1
MC602 – Mario Côrtes – IC / Unicamp 55
IC-UNICAMP
Circuito do Somador Serial Moore
Sum bit Y1 y1
a D Q s
b Full
adder Carry-out
Q
Y2 y2
D Q
Clock Q
Reset
w = 0 w= 0 w= 0 w= 0
w= 1 w= 1 w= 1
A/0 B/1 C/2 D/3
w= 1 w= 1
w= 0 w= 0 w= 0 w= 0
w= 1 w= 1
w= 0 w= 0 w=0 w= 0
Flip-flop inputs
Present
Count
state w= 0 w= 1
y2 y1 y0 z2 z1 z0
Y2 Y1 Y0 J 2K 2 J1K 1 J0K 0 Y2 Y1 Y0 J2K 2 J 1K 1 J0K 0
A 000 000 0d 0d 0d 001 0d 0d 1d 000
B 001 001 0d 0d d0 010 0d 1d d1 001
C 010 010 0d d0 0d 011 0d d0 1d 010
D 011 011 0d d0 d0 100 1d d1 d1 011
E 100 100 d0 0d 0d 101 d0 0d 1d 100
F 101 101 d0 0d d0 110 d0 1d d1 101
G 110 110 d0 d0 0d 111 d0 d0 1d 110
H 111 111 d0 d0 d0 000 d1 d1 d1 111
MC602 – Mario Côrtes – IC / Unicamp 60
IC-UNICAMP
Mapas de Karnaugh para Js e Ks
y1 y0 y1 y0 y1 y0
wy2 wy2 wy2
00 01 11 10 00 01 11 10 00 01 11 10
00 0 0 0 0 00 0 0 d d 00 0 d d 0
01 d d d d 01 0 0 d d 01 0 d d 0
11 d d d d 11 0 1 d d 11 1 d d 1
10 0 0 1 0 10 0 1 d d 10 1 d d 1
J2 = wy0 y1 J1 = wy0 J0 = w
y1 y0 y1 y0 y1 y0
wy2 wy2 wy2
00 01 11 10 00 01 11 10 00 01 11 10
00 d d d d 00 d d 0 0 00 d 0 0 d
01 0 0 0 0 01 d d 0 0 01 d 0 0 d
11 0 0 1 0 11 d d 1 0 11 d 1 1 d
10 d d d d 10 d d 1 0 10 d 1 1 d
K 2 = wy0 y1 K 1 = wy0 K0 = w
K Q
• Essa é a forma
conhecida com FF - T
J Q y2
K Q
Clock
Resetn
FFT
• Comparar com
contador FFD J Q y1
K Q
J Q y2
K Q
Clock
Resetn
• Em geral, Y1
D Q y1
implementação Q
Y2
D Q y2
Clock
MC602 – Mario Côrtes – IC / Resetn
Unicamp 64
IC-UNICAMP
ASM – Algorithmic State Machine
• Representação alternativa (e equivalente) ao
diagrama de estados
– Semelhante ao fluxograma
– Elementos principais:
Nome do
estado
Sinais de saída
0 (Falso) 1 (Verdadeiro) Saídas condicionais
ou ações
(Moore) Condição ou ações (Mealy)
Reset
A
z =0
w= 1
w= 0 A⁄z=0 B⁄ z = 0 0
w
w= 0 1
B
w= 0 w= 1 z =0
0 w
C⁄ z = 1
1
C
w= 1 z =1
0 1
w
tck
Q tcc tsu
CK
tck-->Q tcc tsu