Post on 17-Apr-2015
1
Circuitos Lógicos e Organização de Computadores
Capítulo 8 –Circuitos Seqüenciais Síncronos
Ricardo Pannain
pannain@puc-campinas.edu.br
http://docentes.puc-campinas.edu.br/ceatec/pannain/
2
Forma geral de um circuito seqüêncial
Combinational Circuito Flip-flops
Clock
Q
W Z
Combinational Circuito
Máquina de estados finitos (FSM – Finite State Machine) o comportamento do circuito pode ser representado usando um número finito de estados.
Máquina de MOORE saídas dependem apenas do estado do circuito.
Máquina de MEALY saídas dependem do estado do circuito e de suas entradas primárias.
3
Clockcycle: t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10
w : 0 1 0 1 1 0 1 1 1 0 1 z : 0 0 0 0 0 1 0 0 1 1 0
Etapas Básicas de Projeto
Exemplo:
Supondo um circuito que tenha uma entrada w e uma saída z. • Todas as mudanças ocorrerão na subida do clock. • A saída z é igual a 1 se durante dois ciclos consecutivos imediatamente prescedente a entrada w for igual a 1. Caso contrário o valor é zero.A tabela abaixo ilustra o funcionamento para um padrão de w qualquer.
4
PRIMEIRO PASSO Diagrama de estados
Determinar quantos estágios são necessários e quais transições são possíveis de um estado para outro.
No exemplo:
Supondo o estado inicial A (com saída z = 0) enquanto w = 0 ele permanece neste estado.Se w = 1, na subida do clock ele passará para o estado B (com z = 0). Uma vez no estado B, se w = 0 , ele passará para o estado A (z = 0) na subida do clock. Se w = 1, passará para um terceiro estado C (z = 1).No estado C, se w = 0, ele passará para o estado A (z = 0) na subida do clock. Se w = 1,Continuará no estado C (z = 1)
Etapas Básicas de Projeto
5
Diagrama de estados do exemplo anterior – Máquina de MOORE
C z 1 =
Reset
B z 0 = A z 0 = w 0 =
w 1 =
w 1 =
w 0 =
w 0 = w 1 =
6
Tabela de estados
Present Next state Outputstate w = 0 w = 1 z
A A B 0 B A C 0 C A C 1
SEGUNDO PASSO Tabela de Estados
7
Circuito seqüencial geral
Como temos 3 estados, precisaremos de 2 Flip-Flops e o circuito ficaria:
CombinationalCircuito
Combinational
Clock
y2
z
wy1Y1
Y2
Circuito
8
Tabela de estados assinalados
Present Next state
state w = 0 w = 1 Output
y 2 y 1 Y 2 Y 1 Y 2 Y 1
z
A 00 00 01 0
B 01 00 10 0
C 10 00 10 1
11 dd dd d
9
Derivando as expressões lógicas dos próximos estados e da saída
w 00 01 11 10
0
1
0
1 0
y 2
y 1
d
d
0
0
0
w 00 01 11 10
0
1
0 d
1 d
y 2
y 1
0
0
0
1
0 1
0
1
0
d
y 1
0
1
y 2
Ignorando don't cares Usando don't cares
Y 1
wy 1 y 2 =
Y 2
wy1
wy2
+ =
z y 2
=
w y 1
y 2
+ ( ) =
Y 1
wy 1 y 2 =
Y 2
wy1
y 2 wy 1 y 2
+ =
z y 1 y 2
=
10
Circuito Seqüencial do exemplo anterior
D Q
Q
D Q
Q
Y 2
Y 1 w
Clock
z
y 1
y 2
Resetn
11
Diagrama de tempo do exemplo anterior
t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10
1
0
1
0
1
0
1
0
Clock
w
y 1
y 2
1
0 z
12
Sinais necessários
Control circuit
w
Clock
Done
R 1 out
R 2 out
R 1 in
R 2 inR 3 out
R 3 in
Exemplo – Troca de conteúdo entre dois registradores
Trocar o conteúdo dos registradores R1 e R2, utilizando o registador R3 com auxiliar
R3 R2R2 R1R1 R3
13
Diagrama de estados
D R 3 out 1 = R 1 in 1 = Done 1 =
w 0 = w 1 =
C R 1 out 1 = R 2 in 1 =
B R 2 out 1 = R 3 in 1 =
w 1 =
A No
w 0 = w 1 =
transfer
w 0 = w 1 =
Reset
w 0 =
14
Tabela de estados
Present Next state Outputs
state
A A B 0 0 0 0 0 0 0 B C C 0 0 1 0 0 1 0 C D D 1 0 0 1 0 0 0 D A A 0 1 0 0 1 0 1
w = 0 w = 1
15
Tabela de estados assinalados
Present Nextstate
state Outputs
A 00 00 0 1 0 0 0 0 0 0 0 B 01 10 1 0 0 0 1 0 0 1 0 C 10 11 1 1 1 0 0 1 0 0 0 D 11 00 0 0 0 1 0 0 1 0 1
16
Derivação da expressão do próximo estado
w 00 01 11 10
0
1
1
1 1
y 2 y 1
Y 1 wy1 y 1 y 2 + =
w 00 01 11 10
0
1
1 1
1 1
y 2 y 1
Y 2 y 1 y 2 y 1 y 2 + =
17
Circuito seqüencial correspondente
D Q
Q
D Q
Q
Done
w
Clock
Y 2
Y 1
y 2
y 1
y 2
y 1
R 1 in
R 3 out
R 1 out
R 2 in
R 2 out
R 3 in
18
Problemas de assinalamento de estados
Present Next state
state w = 0 w = 1 Output
y 2 y 1 Y 2 Y 1 Y 2 Y 1 z
A 00 00 01 0 B 01 00 11 0 C 11 00 11 1
10 dd dd d
Suponha que, no primeiro exemplo, ao assinalar valores para os estados presentes, tenhamos escolhido conforma a tabela abaixo:
Y1 = D1 = wY2 = D2 = w y1
z = y2
19
Circuito com a melhoria no assinalamento
D Q
Q
D Q
Q
Y 2
Y 1 w
Clock
z
y 1
y 2
Resetn
20
Tabela de estados com melhoria de assnalamento – exemplo 2
Present Nextstate
state Outputs
A 00 0 0 01 0 0 0 0 0 0 0 B 01 1 1 11 0 0 1 0 0 1 0 C 11 1 0 10 1 0 0 1 0 0 0 D 10 0 0 00 0 1 0 0 1 0 1
21
Derivação da expressão do próximo estado
w 00 01 11 10
0
1
1
1 1
y 2 y 1
Y 1 wy2 y 1 y 2 + =
w 00 01 11 10
0
1
1 1
1 1
y 2 y 1
Y 2 y 1 =
22
Present Nextstate
state w = 0 w = 1 Output
y 3 y 2 y 1 Y 3 Y 2 Y 1 Y 3 Y 2 Y 1 z
A 001 001 010 0 B 010 001 100 0 C 100 001 100 1
Exemplo 3 – One hot encoding
Podemos também ter tantas variáveis quantos forem os estados.Supor um circuito one hot enconding, representado pela tabela abaixo:
23
Assinalamento de estados - One-hot encoding
Present Nextstate
state Outputs
A 0 001 0001 0010 0 0 0 0 0 0 0 B 0 010 0100 0100 0 0 1 0 0 1 0 C 0 100 1000 1000 1 0 0 1 0 0 0 D 1 000 0001 0001 0 1 0 0 1 0 1
24
Clock cycle: t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10
w : 0 1 0 1 1 0 1 1 1 0 1 z : 0 0 0 0 1 0 0 1 1 0 0
Máquina de Mealy
Nos exemplos anteriores, os circuitos seqüenciais onde cada estado tem valores dos sinais de saídas associados a eles,são chamadas Máquinas de MOORE.
Os circuitos seqüenciais onde os sinais das saídas estão associados tanto aos estadoscomo às entradas são chamadas de Máquina de MEALY
Tomando o primeiro exemplo visto anteriormente, que gerava z = 1 quando a ocorrência de w = 1 era detectada em dois períodos consecutivos de clock. Supondo agora que queiramos que z seja 1 no segundo ciclo que w = 1 seja detectado, como exemplifica a tabela abaixo:
25
Diagrama de estado
A
w 0 = z 0 =
w 1 = z 1 = B w 0 = z 0 =
Reset
w 1 = z 0 =
No exemplo:
Supondo o estado inicial A enquanto w = 0 ele permanece neste estado e produz a saída z = 0. Se w = 1 (z = 0 ), na subida do clock, ele passará para o estado B. Uma vez no estado B, se w = 0 (z = 0) , ele passará para o estado A na subida do clock. Se w = 1 produzirá a saída z = 1 e permanecerá neste estado..
26
Tabela de estados
Present Next state Output z
state w = 0 w = 1 w = 0 w = 1
A A B 0 0 B A B 0 1
27
Tabela de estados assinalados
Present Next state Output
state w = 0 w = 1 w = 0 w = 1
y Y Y z z
A 0 0 1 0 0 B 1 0 1 0 1
28
Implementação da FSM
t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 101 0
1 0
1 0
1 0
Clock
y
w
z
(b) Diagrama de tempo
Clock
Resetn
D Q
Q
w
z
(a) Circuito
y
29
Implementação da FSM incluíndo um atraso na saída
Clock
Resetn
D Q
Q
w
z
(a) Circuit
t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 101
0
1
0
1
0
1
0
Clock
y
w
z
y
(b) Timing diagram
D Q
Q
Z
1
0 Z
OBS – Mesmo circuito do slide 19
30
Exemplo – troca de conteúdo de registradores
R3out 1= R1in 1= Done 1= w 0=w 1=
R1out 1= R2in 1=
w 1= R 2out 1= R3in 1=
A
w 0=w 1=
Reset
w 0=
B
C
31
Código VHDL para uma FSM simples
USE ieee.std_logic_1164.all ;
ENTITY simple ISPORT ( Clock, Resetn, w : IN STD_LOGIC ;
z : OUT STD_LOGIC ) ;END simple ;
ARCHITECTURE Behavior OF simple ISTYPE State_type IS (A, B, C) ;SIGNAL y : State_type ;
BEGINPROCESS ( Resetn, Clock )BEGIN
IF Resetn = '0' THENy <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THEN
con’t ...
32
CASE y ISWHEN A =>
IF w = '0' THENy <= A ;
ELSEy <= B ;
END IF ;WHEN B =>
IF w = '0' THENy <= A ;
ELSEy <= C ;
END IF ;WHEN C =>
IF w = '0' THENy <= A ;
ELSEy <= C ;
END IF ;END CASE ;
END IF ;END PROCESS ;z <= '1' WHEN y = C ELSE '0' ;
END Behavior ;
Código VHDL para uma FSM simples - continuação
33
(ENTITY declaration not shown)
ARCHITECTURE Behavior OF simple ISTYPE State_type IS (A, B, C) ;SIGNAL y_present, y_next : State_type ;
BEGINPROCESS ( w, y_present )BEGIN
CASE y_present ISWHEN A =>
IF w = '0' THENy_next <= A ;
ELSEy_next <= B ;
END IF ;WHEN B =>
IF w = '0' THENy_next <= A ;
ELSEy_next <= C ;
END IF ;
Alternativa de estilo para um código de uma FSM
34
WHEN C =>IF w = '0' THEN
y_next <= A ;ELSE
y_next <= C ;END IF ;
END CASE ;END PROCESS ;
PROCESS (Clock, Resetn)BEGIN
IF Resetn = '0' THENy_present <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THENy_present <= y_next ;
END IF ;END PROCESS ;
z <= '1' WHEN y_present = C ELSE '0' ;END Behavior ;
Alternativa de estilo para um código de uma FSM - continuação
35
(ENTITY declaration not shown)
ARCHITECTURE Behavior OF simple ISTYPE State_TYPE IS (A, B, C) ;ATTRIBUTE ENUM_ENCODING : STRING ;ATTRIBUTE ENUM_ENCODING OF State_type : TYPE IS "00 01 11" ;SIGNAL y_present, y_next : State_type ;
BEGIN
con’t ...
Uso de definição de ATTRIBUTE para assinalamento manual de estados
36
Uso de constantes para assinalamento manual de estados
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY simple ISPORT ( Clock, Resetn, w : IN STD_LOGIC ;
z : OUT STD_LOGIC ) ;END simple ;
ARCHITECTURE Behavior OF simple ISSIGNAL y_present, y_next : STD_LOGIC_VECTOR(1 DOWNTO 0);CONSTANT A : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00" ;CONSTANT B : STD_LOGIC_VECTOR(1 DOWNTO 0) := "01" ;CONSTANT C : STD_LOGIC_VECTOR(1 DOWNTO 0) := "11" ;
BEGINPROCESS ( w, y_present )BEGIN
CASE y_present ISWHEN A =>
IF w = '0' THEN y_next <= A ;ELSE y_next <= B ;END IF ;
… con’t
37
WHEN B =>IF w = '0' THEN y_next <= A ;ELSE y_next <= C ;END IF ;
WHEN C =>IF w = '0' THEN y_next <= A ;ELSE y_next <= C ;END IF ;
WHEN OTHERS =>y_next <= A ;
END CASE ;END PROCESS ;
PROCESS ( Clock, Resetn )BEGIN
IF Resetn = '0' THENy_present <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THENy_present <= y_next ;
END IF ;END PROCESS ;z <= '1' WHEN y_present = C ELSE '0' ;
END Behavior ;
Uso de constantes para assinalamento manual de estados
38
Código VHDL máquina de Mealy
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY mealy ISPORT ( Clock, Resetn, w : IN STD_LOGIC ;
z : OUT STD_LOGIC ) ;END mealy ;
ARCHITECTURE Behavior OF mealy ISTYPE State_type IS (A, B) ;SIGNAL y : State_type ;
BEGINPROCESS ( Resetn, Clock )BEGIN
IF Resetn = '0' THENy <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THENCASE y IS
WHEN A =>IF w = '0' THEN y <= A ;ELSE y <= B ;END IF ;
… con’t
39
WHEN B =>IF w = '0' THEN y <= A ;ELSE y <= B ;END IF ;
END CASE ;END IF ;
END PROCESS ;
PROCESS ( y, w )BEGIN
CASE y ISWHEN A =>
z <= '0' ;WHEN B =>
z <= w ;END CASE ;
END PROCESS ;END Behavior ;
Código VHDL máquina de Mealy - continuação
40
Exemplo – somador serial
Sum A B + =
Shift register
Shift register
Adder FSM Shift register
B
A
a
b
s
Clock
41
G
00 1
11 1 10 0 01 0
H 10 1 01 1 00 0
carry-in 0 =
carry-in 1 = G:
H:
Reset
11 0 ab s
Somador serial – diagrama de estados - Mealy
42
Present Next state Output s
state ab =00 01 10 11 00 01 10 11
G G G G H 0 1 1 0 H G H H H 1 0 0 1
Somador serial – Tabela de estados - Mealy
43
Present Next state Output
state ab =00 01 10 11 00 01 10 11
y Y s
0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1
Somador serial – Tabela de estados assinalados - Mealy
Y = a b + a y + b y
s = a b yFull adder
carry out
soma
44
Fulladder
a
b
s
D Q
Q
carry-out
Clock
Reset
Y y
Somador serial – Mealy FSM
45
H 1 s 1 =
Reset
H 0 s 0 =
011011
11
0110
G 1 s 1 =
G 0 s 0 =
0110 00
01
00
10
11
00
00
11
Somador serial – diagrama de estados - Moore
46
Present Nextstate Outputstate ab =00 01 10 11 s
G 0 G 0 G 1 G 1 H 0 0 G 1 G 0 G 1 G 1 H 0 1 H 0 G 1 H 0 H 0 H 1 0 H 1 G 1 H 0 H 0 H 1 1
Somador serial – tabela de estados - Moore
47
Present Nextstate
state ab =00 01 10 11 Output
y 2 y 1 Y 2 Y 1 s
00 0 0 01 0 1 10 0 01 0 0 01 0 1 10 1 10 0 1 10 1 0 11 0 11 0 1 10 1 0 11 1
Somador serial – tabela de estados assinalados - Moore
Y1 = a b y2
Y2 = a b + a y2 + b y2
s = y1 carry out
soma
Full adder
48
Fulladder
a
b
D Q
Q Carry-out
Clock
Reset
D Q
Q
s
Y 2
Y 1 Sum bit
y 2
y 1
Somador serial –Moore FSM
49
Código de um shift register left-to-right com enable
LIBRARY ieee ;USE ieee.std_logic_1164.all ;-- left-to-right shift register with parallel load and enableENTITY shiftrne IS
GENERIC ( N : INTEGER := 4 ) ;PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;
L, E, w : IN STD_LOGIC ;Clock : IN STD_LOGIC ;Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;
END shiftrne ;ARCHITECTURE Behavior OF shiftrne ISBEGIN
PROCESSBEGIN
… con’t
50
WAIT UNTIL Clock'EVENT AND Clock = '1' ;IF E = '1' THEN
IF L = '1' THENQ <= R ;
ELSEGenbits: FOR i IN 0 TO N-2 LOOP
Q(i) <= Q(i+1) ;END LOOP ;Q(N-1) <= w ;
END IF ;END IF ;
END PROCESS ;END Behavior ;
Código de um shift register left-to-right com enable - continuação
51
Código VHDL – somador serial
LIBRARY ieee ;USE ieee.std_logic_1164.all ;ENTITY serial IS
GENERIC ( length : INTEGER := 8 ) ;PORT ( Clock : IN STD_LOGIC ;
Reset : IN STD_LOGIC ;A, B : IN STD_LOGIC_VECTOR(length-1 DOWNTO 0) ;Sum : BUFFER STD_LOGIC_VECTOR(length-1 DOWNTO 0) );
END serial ;
ARCHITECTURE Behavior OF serial ISCOMPONENT shiftrne
GENERIC ( N : INTEGER := 4 ) ;PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;
L, E, w : IN STD_LOGIC ;Clock : IN STD_LOGIC ;Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;
END COMPONENT ;SIGNAL QA, QB, Null_in : STD_LOGIC_VECTOR(length-1 DOWNTO 0) ;SIGNAL s, Low, High, Run : STD_LOGIC ;SIGNAL Count : INTEGER RANGE 0 TO length ;TYPE State_type IS (G, H) ;SIGNAL y : State_type ;
… con’t
52
BEGINLow <= '0' ; High <= '1' ;ShiftA: shiftrne GENERIC MAP (N => length)
PORT MAP ( A, Reset, High, Low, Clock, QA ) ;ShiftB: shiftrne GENERIC MAP (N => length)
PORT MAP ( B, Reset, High, Low, Clock, QB ) ;AdderFSM: PROCESS ( Reset, Clock )BEGIN
IF Reset = '1' THENy <= G ;
ELSIF Clock'EVENT AND Clock = '1' THENCASE y IS
WHEN G =>IF QA(0) = '1' AND QB(0) = '1' THEN y <= H ;ELSE y <= G ;END IF ;
WHEN H =>IF QA(0) = '0' AND QB(0) = '0' THEN y <= G ;ELSE y <= H ;END IF ;
END CASE ;END IF ;
END PROCESS AdderFSM ;
… con’t
Código VHDL – somador serial - continuação
53
WITH y SELECTs <= QA(0) XOR QB(0) WHEN G,
NOT ( QA(0) XOR QB(0) ) WHEN H ;Null_in <= (OTHERS => '0') ;ShiftSum: shiftrne GENERIC MAP ( N => length )
PORT MAP ( Null_in, Reset, Run, s, Clock, Sum ) ;Stop: PROCESSBEGIN
WAIT UNTIL (Clock'EVENT AND Clock = '1') ;IF Reset = '1' THEN
Count <= length ;ELSIF Run = '1' THEN
Count <= Count -1 ;END IF ;
END PROCESS ;Run <= '0' WHEN Count = 0 ELSE '1' ; -- stops counter and ShiftSum
END Behavior ;
Código VHDL – somador serial - continuação
54
Minimização de estados
Definição 1 – Sejam 2 estados Si e Sj. Eles são ditos equivalentes se somente se para todas as possíveis seqüências de entradas, a mesma seqüência de saída é produzida, independente de qual estado (Si ou Sj) seja produzido.OBS – É mais fácil mostrar os estados que não são equivalentes.
Procedimento de Particionamento
55
Tabela de Estados
Present Next state Outputstate w = 0 w = 1 z
A B C 1 B D F 1 C F E 0 D B G 1 E F C 0 F E D 0 G F G 0
Minimização de estados
56Figure 8.52 Minimized state table for Example 8.5
Present Next state Outputstate w = 0 w = 1 z
A B C 1 B A F 1 C F C 0 F C A 0
57Figure 8.53 Signals for the vending machine
D Q
Q
sense N D Q
Q Clock
N
sense N
sense D
Clock
N
D
(a) Timing diagram
(b) Circuit that generates N
58Figure 8.54 State diagram for Example 8.6
S1 0
S7 1
DN
D N
S3 0
S6 0
S9 1 S8 1
S2 0
S5 1
S4 1
DNDN
DNDN
DN
DN
DN
D
D N
D N
DN
N
Reset
59Figure 8.55 State table for Example 8.6
Present Next state Outputstate DN =00 01 10 11 z
S1 S1 S3 S2 0 S2 S2 S4 S5 0 S3 S3 S6 S7 0 S4 S1 1 S5 S3 1 S6 S6 S8 S9 0 S7 S1 1 S8 S1 1 S9 S3 1
––
–––
––
–––
–––––––––
60Figure 8.56 Minimized state table for Example 8.6
Present Next state Outputstate DN =00 01 10 11 z
S1 S1 S3 S2 0 S2 S2 S4 S5 0 S3 S3 S2 S4 0 S4 S1 1 S5 S3 1
–––
– – –– – –
61Figure 8.57 Minimized state diagram for Example 8.6
S1 0
S5 1
DNDN
DN
DN
DN
D
D
D
N
N
N
S3 0
S2 0
S4 1
62Figure 8.58 Mealy-type FSM for Example 8.6
S3
S2
D 0
S1
D 1
D 1
N 1
N 0
N 0
DN 0
DN 0
DN 0
63Figure 8.59 Incompletely specified state table for Example 8.7
Present Next state Output z
state w = 0 w = 1 w = 0 w = 1
A B C 0 0 B D 0 C F E 0 1 D B G 0 0 E F C 0 1 F E D 0 1 G F 0
–
–
–
–
64Figure 8.60 State diagram for a counter
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
w 0=
w 1=
A/0 B/1 C/2 D/3
E/4F/5G/6H/7
65Figure 8.61 State table for the counter
Present Next state Output
state w = 0 w = 1
A A B 0 B B C 1 C C D 2 D D E 3 E E F 4 F F G 5 G G H 6 H H A 7
66Figure 8.62 State-assigned table for the counter
Present Next state
state w = 0 w = 1 Count
y 2 y 1 y 0 Y 2 Y 1 Y 0 Y 2 Y 1 Y 0
z 2 z 1 z 0
A 000 000 001 000 B 001 001 010 001 C 010 010 011 010 D 011 011 100 011 E 100 100 101 100 F 101 101 110 101 G 110 110 111 110 H 111 111 000 111
67Figure 8.63 Karnaugh maps for D flip-flops for the counter
00 01 11 10
00
01
1
0 1
1
1
0
0
0
0
1 0
0
0
1
1
1 11
10
y 1 y 0 wy2 00 01 11 10
00
01
0
0 0
1
1
1
1
0
1
0 1
0
0
1
1
0 11
10
y 1 y 0 wy2
00 01 11 10
00
01
0
1 1
0
1
0
1
0
1
0 0
0
1
1
0
1 11
10
y 1 y 0 wy2
Y 2 wy2 y 0 y 2 y 1 y 2 w + + + y 0 y 1 y 2 =
Y 0 wy0 wy0 + = Y 1 wy1 y 1 y 0 wy0 y 1 + + =
68
Diagrama do circuito do contador
D Q
Q
D Q
Q
Clock
y 0 w
y 1
y 2
Y 0
Y 1
Y 2
Resetn
D Q
Q
69Figure 8.65 Excitation table for the counter with JK flip-flops
Present Flip-flop inputs
state w = 0 w = 1 Count
y 2 y 1 y 0 Y 2 Y 1 Y 0 J 2 K 2 J 1 K 1 J 0 K 0 Y 2 Y 1 Y 0 J 2 K 2 J 1 K 1 J 0 K 0
z 2 z 1 z 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
70
Mapa Karnaugh - contador
00 01 11 10
00
01
d
0 d
d
d
0
0
0
d
1 d
d
d
1
1
111
10
y1y0
wy2
J0 w=
00 01 11 10
00
01
0
d 0
0
0
d
d
d
1
d 1
1
1
d
d
d11
10
y1y0
wy2
K0 w=
00 01 11 10
00
01
0
0 0
d
d
d
d
0
1
0 1
d
d
d
d
011
10
y1y0
wy2
J1 wy0=
00 01 11 10
00
01
d
d d
0
0
0
0
d
d
d d
1
1
0
0
d11
10
y1y0
wy2
K1 wy0=
00 01 11 10
00
01
0
d d
0
d
0
d
0
d
0 0
d
1
d
0
d11
10
y1y0
wy2
J2 wy0y1=
00 01 11 10
00
01
d
0 0
d
0
d
0
d
0
d d
1
d
0
d
011
10
y1y0
wy2
K2 wy0y1=
71
Diagrama do circuito usando flip-flop JK
Clock
Resetn
w J Q
Q K
y 0
y 1
y 2
J Q
Q K
J Q
Q K
72Figure 8.68 Factored-form implementation of the counter
Clock
Resetn
w y 0
y 1
y 2
J Q
Q K
J Q
Q K
J Q
Q K
73Figure 8.69 State table for the counterlike example
Present Next Outputstate state z 2 z 1 z 0
A B 000 B C 100 C D 010 D E 110 E F 001 F G 101 G H 011 H A 111
74Figure 8.70 State-assigned table
Present Next Outputstate state
y 2 y 1 y 0 Y 2 Y 1 Y 0 z 2 z 1 z 0
000 1 00 0 00100 0 10 1 00010 1 10 0 10110 0 01 1 10001 1 01 0 01101 0 11 1 01011 1 11 0 11111 0 00 1 11
75Figure 8.71 Circuit for the counterlike example
D Q
Q
z 0
D Q
Q
D Q
Q
z 1
z 2
w
76Figure 8.72 State diagram for the arbiter
Idle
000
1xx
Reset
gnt1 g 1 1 =
x1x
gnt2 g 2 1 =
xx1
gnt3 g 3 1 =
0xx 1xx
01x x0x
001 xx0
77Figure 8.73 Alternative style of state diagram for the arbiter
r 1 r 2
r 1 r 2 r 3
Idle
Reset
gnt1 g 1 1 =
gnt2 g 2 1 =
gnt3 g 3 1 =
r 1 r 1
r 1
r 2
r 3
r 2
r 3
r 1 r 2 r 3
78Figure 8.74a VHDL code for the arbiter
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY arbiter ISPORT ( Clock, Resetn : IN STD_LOGIC ;
r : IN STD_LOGIC_VECTOR(1 TO 3) ;g : OUT STD_LOGIC_VECTOR(1 TO 3) ) ;
END arbiter ;
ARCHITECTURE Behavior OF arbiter ISTYPE State_type IS (Idle, gnt1, gnt2, gnt3) ;SIGNAL y : State_type ;
BEGINPROCESS ( Resetn, Clock )BEGIN
IF Resetn = '0' THEN y <= Idle ;ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y ISWHEN Idle =>
IF r(1) = '1' THEN y <= gnt1 ;ELSIF r(2) = '1' THEN y <= gnt2 ;ELSIF r(3) = '1' THEN y <= gnt3 ;ELSE y <= Idle ;END IF ;
… con’t
79Figure 8.74b VHDL code for the arbiter (con’t)
WHEN gnt1 =>IF r(1) = '1' THEN y <= gnt1 ;ELSE y <= Idle ;END IF ;
WHEN gnt2 =>IF r(2) = '1' THEN y <= gnt2 ;ELSE y <= Idle ;END IF ;
WHEN gnt3 =>IF r(3) = '1' THEN y <= gnt3 ;ELSE y <= Idle ;END IF ;
END CASE ;END IF ;
END PROCESS ;g(1) <= '1' WHEN y = gnt1 ELSE '0' ;g(2) <= '1' WHEN y = gnt2 ELSE '0' ;g(3) <= '1' WHEN y = gnt3 ELSE '0' ;
END Behavior ;
80Figure 8.75 Incorrect VHDL code for the grant signals
.
.
.PROCESS( y )BEGIN
IF y = gnt1 THEN g(1) <= '1' ;ELSIF y = gnt2 THEN g(2) <= '1' ;ELSIF y = gnt3 THEN g(3) <= '1' ;END IF ;
END PROCESS ;END Behavior ;
81Figure 8.76 Correct VHDL code for the grant signals
.
.
.PROCESS( y )BEGIN
g(1) <= '0' ;g(2) <= '0' ;g(3) <= '0' ;IF y = gnt1 THEN g(1) <= '1' ;ELSIF y = gnt2 THEN g(2) <= '1' ;ELSIF y = gnt3 THEN g(3) <= '1' ;END IF ;
END PROCESS ;END Behavior ;
82Figure 8.77 Simulation results for the arbiter circuit
83Figure 8.78 Output delays in the arbiter circuit
a) Output delays using binary encoding
b) Output delays using one-hot encoding
84Figure 8.80 Circuit for Example 8.8
D Q
Q
D Q
Q
Clock
Resetn
y 2
y 1
Y 2
Y 1
w
z
85Figure 8.81 Tables for the circuit in Example 8.8
Present Next State
state w = 0 w = 1 Output
y 2 y 1 Y 2 Y 1 Y 2 Y 1 z
0 0 0 0 01 0 0 1 0 0 10 0 1 0 0 0 11 0 1 1 0 0 11 1
(a)State-assigned table
Present Next state Outputstate w = 0 w = 1 z
A A B 0 B A C 0 C A D 0 D A D 1
(b)State table
86Figure 8.82 Circuit for Example 8.9
J Q
Q
Clock
Resetn
y2
y1
J2
J1w
z
K
J Q
QKK2
K1
87Figure 8.83 Excitation table
Present Flip-flop inputs
state w = 0 w = 1 Output
y 2 y 1 J 2 K 2 J 1 K 1 J 2 K 2 J 1 K 1 z
00 01 0 1 0 0 1 1 0 01 01 0 1 1 0 1 1 0 10 01 0 1 0 0 1 0 0 11 01 0 1 1 0 1 0 1
88Figure 8.84 Circuit for Example 8.10
Clock
Resetn
y 2
y 1 w
z
T 2
D 1 D Q
Q
T Q
Q
89Figure 8.85 Excitation table
Present Flip-flop inputs
state w = 0 w = 1 Output
y 2 y 1 T 2 D 1 T 2 D 1 z
0 0 0 0 01 0 0 1 0 0 10 0 1 0 1 0 01 0 1 1 1 0 01 1
90Figure 8.86 Elements used in ASM charts
Output signalsor actions
(Moore type)
State name
Condition expression
0 (False) 1 (True)
Conditional outputs or actions (Mealy type)
(a) State box (b) Decision box
(c) Conditional output box
91Figure 8.87 ASM chart for a simple FSM
Please see “portrait orientation” PowerPoint file for Chapter 8
92Figure 8.88 ASM chart for the FSM in Figure 8.23
w
w 0 1
0
1
A
B
Reset
z
93Figure 8.89 ASM chart for the arbiter
r 1
r 3 0 1
1
Idle
Reset
r 2
r 1
r 3
r 2
gnt1
gnt2
gnt3
1
1
1
0
0
0
g 1
g 2
g 3
0
0
1
94Figure 8.90 The general model for a sequential circuit
Combinational circuit
Y k
Y 1
y k
y 1
w 1
w n
z 1
z m
Outputs
Next-statevariables
Present-state variables
Inputs
95Figure P8.1 State-assigned table for problems 8.1 and 8.2
Present Next state
state w = 0 w = 1 Output
y 2 y 1 Y 2 Y 1 Y 2 Y 1 z
0 0 1 0 1 1 0
0 1 0 1 0 0 0
1 0 1 1 0 0 0
1 1 1 0 0 1 1
96Figure P8.2 Circuit for problem 8.29
D Q
Q
w D Q
Q Clock
z