9: Secuenciales 1
ELO211: Sistemas Digitales
Tomás Arredondo Vidal1er Semestre – 2009
Este material está basado en:
❒ textos y material de apoyo: Contemporary Logic Design 1st / 2nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005
❒ material del curso ELO211 del Prof. Leopoldo Silva
❒ material en el sitio http://es.wikipedia.org
9: Secuenciales 2
9-Sistemas Secuenciales
9.1 Maquinas de Estados Finitos
9.2 Mealy y Moore FSMs
9.3 Implementación en Verilog
9: Secuenciales 3
Abstracción de MEFs
❒ Dividir circuito en lógica combinacional y estado (state)
❒ Localizar los enlaces de feedback (loops)
❒ Implementación de elementos de almacenamiento (storage elements) nos da diferentes formas de lógica secuencial
CombinationalLogic
Storage Elements
Outputs
State OutputsState Inputs
Inputs
9: Secuenciales 4
Formas de lógica secuencial
❒ Asincrónica – estados cambian cuandos los inputs cambian (elemento de almacenamiento pueden ser simples alambres of retardos)
❒ Sincrónica – cambios de estados ocurren en todos los elementos de almacenamiento al mismo tiempo (de acuerdo a una senal periodica – el reloj o clock)
Clock
9: Secuenciales 5
comportamiento no es el mismo si es que los inputscambian cuando el clock esta alto
D Q
CLK
positiveedge-triggered
flip-flop
D QG
CLK
transparent(level-sensitive)
latch
D
CLK
Qedge
Qlatch
Elementos de almacenamiento: latches y flip-flops
9: Secuenciales 6
x = 0
x = 1
x = 0x = 1
100
010
110
111001
Representaciones de maquinas de estados finitos (finite state machines)❒ Estados: determinado por posibles valores en elementos de
almacenamiento
❒ Transiciones: cambios de estado
❒ Reloj (clock): controla cuando los estados pueden cambiar al controlar elementos de almacenamiento
❒ Lógica secuencial
❍ secuencia traversa una serie de estados
❍ basado en secuencia de valores de señales de input (x)
9: Secuenciales 7
Diagrama de maquina de estados finitos❒ Ejemplo: Candado de combinación
❍ 5 estados
❍ 5 auto-transiciones
❍ 6 otras transiciones entre estados
❍ 1 transición de reset (de todos los estados) al estado S1
resetS3
closed
closedmux=C1 equal
& new
not equal& new
not equal& new
not equal& new
not newnot newnot new
S1 S2 OPEN
ERROR
closedmux=C2 equal
& new
closedmux=C3 equal
& new
open
9: Secuenciales 8
Ejemplo: Registro de corrimiento (shift register)❒ Shift register
❍ input mostrado enarcos de transiciones
❍ valores de outputmostrado en nodo
de estado
100 110
111
011
101010000
001
1
1
1
1
0
0
00
1
1
1
0
0
1
00
D Q D Q D QIN
OUT1 OUT2 OUT3
CLK
9: Secuenciales 9
010
100
110
011001
000
101111
3-bit up-counter
Ejemplo: Contadores❒ Contadores
❍ proceden a través de secuencia de estados bien definida en respuesta a enable
❒ Muchos tipos de contadores: binario, BCD, código Gray
❍ contador de subida de 3 bits: 000, 001, 010, 011, 100, 101, 110, 111, 000, ...
❍ contador de bajada de 3-bits: 111, 110, 101, 100, 011, 010, 001, 000, 111, ...
9: Secuenciales 10
010
100
110
011001
000
101111
3-bit up-counter
present state next state
0 000 001 1
1 001 010 2
2 010 011 3
3 011 100 4
4 100 101 5
5 101 110 6
6 110 111 7
7 111 000 0
Como convertir diagrama de estados a tabla de transiciones?
❒ Tabla de transiciones: forma tabular de diagrama de estados
❒ Como una tabla de verdad (se especifican todos los outputs para las combinaciones de input)
❒ Ejemplo: contador
9: Secuenciales 11
C3 C2 C1 N3 N2 N1
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 1 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 0 0 0
N1 <= C1’N2 <= C1C2’ + C1’C2
<= C1 xor C2N3 <= C1C2C3’ + C1’C3 + C2’C3
<= (C1C2)C3’ + (C1’ + C2’)C3<= (C1C2)C3’ + (C1C2)’C3<= (C1C2) xor C3
código en Verilog paramostrar que la funciónes un input a un D-FF
Implementación❒ Un flip-flop para cada bit de estado
❒ Lógica combinacional basada en codificación
0 0
0 1
1 1
0 1C1
C2
C3N3
0 1
1 0
1 0
0 1C1
C2
C3N2
1 1
0 0
1 1
0 0C1
C2
C3N1
9: Secuenciales 12
Implementación (cont)
❒ Contador❍ 3 flip-flops para tener estado
❍ lógica para calcular próximo estado
❍ reloj controla cuando la memoria de los flip-flops cambia• hay que esperar para que la lógica calcule nuevo valor
• no hay que esperar mucho para no tener velocidad muy lenta
D Q D Q D Q
OUT1 OUT2 OUT3
CLK
"1"
9: Secuenciales 13
In C1 C2 C3 N1 N2 N30 0 0 0 0 0 00 0 0 1 0 0 00 0 1 0 0 0 10 0 1 1 0 0 10 1 0 0 0 1 00 1 0 1 0 1 00 1 1 0 0 1 10 1 1 1 0 1 11 0 0 0 1 0 01 0 0 1 1 0 01 0 1 0 1 0 11 0 1 1 1 0 11 1 0 0 1 1 01 1 0 1 1 1 01 1 1 0 1 1 11 1 1 1 1 1 1
N1 <= InN2 <= C1N3 <= C2
Implementación: Registro de corrimiento
❒ Input determina próximo estado
100 110
111
011
101010000
001
0
1
1 1
11
1
1
0
0
0
0 0
1
00
D Q D Q D QIN
OUT1 OUT2 OUT3
CLK
9: Secuenciales 14
Ejemplo: Contador mas complejo
❒ Contador Complejo❍ repite 5 estados en secuencia
❍ secuencia no es una representación numérica binaria
❒ Paso 1: hacer diagrama de transición de estados❍ contar secuencia: 000, 010, 011, 101, 110
❒ Paso 2: hacer tabla de transición de estados
Present State Next StateC B A C+ B+ A+0 0 0 0 1 00 0 1 – – –0 1 0 0 1 10 1 1 1 0 11 0 0 – – –1 0 1 1 1 01 1 0 0 0 01 1 1 – – –
notar condiciones don't care por los estados no usados
010
000 110
101
011
9: Secuenciales 15
C+ <= A
B+ <= B’ + A’C’
A+ <= BC’
Ejemplo: Contador mas complejo (cont)
❒ Paso 3: mapas Karnaugh para próximas funciones
0 0
X 1
0 X
X 1A
B
CC+
1 1
X 0
0 X
X 1A
B
CB+
0 1
X 1
0 X
X 0A
B
CA+
9: Secuenciales 16
Contadores con estados iniciales❒ Estados iniciales
❍ durante el inicio, el contador puede estar en un estado sin usar o invalido
❍ el diseñador debe garantizar que eventualmente entre en un estado valido
❍ diseñar para que estados inválidos transiciones a validos
010
000 110
101
011
001111
100
010
000 110
101
011
001 111
100
9: Secuenciales 17
Contadores con estados iniciales (cont)
❒ Generar tabla de transición de estados con estados iniciales
0 0
1 1
0 0
1 1A
B
CC+
1 1
1 0
0 1
0 1A
B
CB+
0 1
0 1
0 0
0 0A
B
CA+
Present State Next StateC B A C+ B+ A+0 0 0 0 1 00 0 1 1 1 00 1 0 0 1 10 1 1 1 0 11 0 0 0 1 01 0 1 1 1 01 1 0 0 0 01 1 1 1 0 0
010
000 110
101
011
001111
100
9: Secuenciales 18
Actividad
❒ Contador up-down de 2-bits (2 inputs)
❍ dirección: D = 0 para up, D = 1 para down
❍ cuenta: C = 0 para parar, C = 1 para contar
01
00 11
10
C=0D=X
C=0D=X
C=0D=X
C=0D=X
C=1D=0
C=1D=0
C=1D=0
C=1D=0
C=1D=1
S1 S0 C D N1 N00 0 0 0 0 00 0 0 1 0 00 0 1 0 0 10 0 1 1 1 10 1 0 0 0 10 1 0 1 0 10 1 1 0 1 00 1 1 1 0 01 0 0 0 1 01 0 0 1 1 01 0 1 0 1 11 0 1 1 0 11 1 0 0 1 11 1 0 1 1 11 1 1 0 0 01 1 1 1 1 0
9: Secuenciales 19
Actividad (cont)
S1 S0 C D N1 N00 0 0 0 0 00 0 0 1 0 00 0 1 0 0 10 0 1 1 1 10 1 0 0 0 10 1 0 1 0 10 1 1 0 1 00 1 1 1 0 01 0 0 0 1 01 0 0 1 1 01 0 1 0 1 11 0 1 1 0 11 1 0 0 1 11 1 0 1 1 11 1 1 0 0 01 1 1 1 1 0
N1 = C’S1+ CDS0’S1’ + DS0S1+ CD’S0S1’ + D’S0’S1
N0 = CS0’ + C’S00 1 1 0
0 1 1 0
1 0 0 1
1 0 0 1
D
S1
S0
C
0 0 1 1
0 0 1 1
1 0 1 0
0 1 0 1
D
S1
S0
C
9: Secuenciales 20
9-Sistemas Secuenciales
9.1 Maquinas de Estados Finitos
9.2 Mealy y Moore FSMs
9.3 Implementación en Verilog
9: Secuenciales 21
Modelo general MEF (o FSM)
❒ Valores almacenados en registros representan el estado actual del circuito: y(n)
❒ Lógica combinacional calcula
❍ próximo estado, y(n+1): FPE (Función Próximo Estado)
• función de estados actuales e inputs
❍ outputs: FS (Función Salida)
• Mealy: función de estado actual e inputs, z = F(y, x)
• Moore: solo función de estado actual, z = F(y)
Inputs: x
Outputs: z
Next State: y(n+1)
Current State: y(n)
lógica outputFS
lógica próximo estado: FPE
9: Secuenciales 22
Modelo general MEF (cont)❒ Estados: y1, y2, ..., yk❒ Inputs: x1, x2, ..., xm❒ Outputs: z1, z2, ..., zn❒ Función transición: FPE(yi, xj)
❒ Función de output: FS(yi) or FS(yi, xj)
Inputs
Outputs
Next State
Current State
outputlogic
next statelogic
Clock
Next State
State
0 1 2 3 4 5
9: Secuenciales 23
Maquinas Mealy vs Moore
❒ Maquinas Mealy tienden a tener menos estados❍ outputs son diferentes en arcos (n2) no en estados (n)
❒ Maquinas Moore❍ outputs cambian durante cambios del reloj (siempre un ciclo mas tarde)
❍ en maquinas Mealy, input puede causar cambios en autputde inmediato cuando cambia input – puede causar problemas cuando se conectan multiples maquinas
❒ Maquinas Mealy reaccionan mas rápido ❍ reaccionan con el input– no tienen que esperar el reloj en algunos casos
❍ en maquinas Moore – mas logica puede ser necesaria para decodificar estado en outputs
9: Secuenciales 24
Comparar maquinas Mealy y Moore (cont)
❒ Moore: z = F(y)
❒ Mealy: z = F(y, x)
❒ Mealy Sincrónicaz = F(y, x) con FF en salida
state feedback
inputs
outputsreg
combinational logic for next state logic for
outputs
inputs outputs
state feedback
regcombinational
logic fornext state
logic foroutputs
inputs outputs
state feedback
regcombinational
logic fornext state
logic foroutputs
9: Secuenciales 25
D/1
E/1
B/0
A/0
C/0
1
0
0
00
1
1
1
1
0
reset
current next
reset input state state output
1 – – A
0 0 A B 0
0 1 A C 0
0 0 B B 0
0 1 B D 0
0 0 C E 0
0 1 C C 0
0 0 D E 1
0 1 D C 1
0 0 E B 1
0 1 E D 1
Especificar outputs para maquina Moore❒ Output es solo una función del estado
❍ se especifica en nodos del diagrama de estado
❍ Ejemplo: detector de secuencia para 01 o 10
9: Secuenciales 26
current next
reset input state state output
1 – – A 0
0 0 A B 0
0 1 A C 0
0 0 B B 0
0 1 B C 1
0 0 C B 1
0 1 C C 0
B
A
C
0/1
0/0
0/0
1/1
1/0
1/0
reset/0
Especificar outputs para maquina Mealy
❒ Output es función de estados e inputs
❍ especificar output en transición entre estados
❍ Ejemplo: Detector de secuencia para 01 o 10
9: Secuenciales 27
Maquina Mealy
❒ Maquina Mealy Sincrónica❍ estados y outputs con registros
❍ evita outputs con ruidos (‘glitches’)
❍ típicamente se implementa en PLDs
Inputs
Outputs
Current State
outputlogic
next statelogic
9: Secuenciales 28
VendingMachineFSM
N
D
Reset
Clock
OpenCoinSensor
ReleaseMechanism
Ejemplo: maquinas de bebidas
❒ Entrega bebida después que 150 pesos son depositados
❒ Acepta diferentes monedas 50 (N), 100 (D)
❒ No entrega cambio
9: Secuenciales 29
Ejemplo: maquinas de bebidas (cont)
❒ Representación abstracta❍ listar secuencias típicas:
• tres de cincuenta
• cincuenta, cien
• cien, cincuenta
• dos de cien
❍ dibujar diagrama de estados:• inputs: N, D, reset
• output: dar bebida (OPEN)
❍ asumir:• N y D seteadas por un ciclo
• cada estado tiene un auto estado
para N = D = 0 (no hay moneda)
S0
Reset
S2
D
S6[open]
D
S4[open]
D
S1
N
S3
N
S5[open]
N
S8[open]
D
S7[open]
N
9: Secuenciales 30
Ejemplo: maquinas de bebidas (cont)❒ Minimizar numero de estados – reusar estados si es posible
tabla de estados simbólica
present inputs next outputstate D N state open0 0 0 0 0
0 1 50 01 0 100 01 1 – –
50 0 0 50 00 1 100 01 0 150 01 1 – –
100 0 0 100 00 1 150 01 0 150 01 1 – –
150 – – 150 1
0
Reset
50
N
N
N + D
100
D
150[open]
D
9: Secuenciales 31
present state inputs next state outputQ1 Q0 D N D1 D0 open0 0 0 0 0 0 0
0 1 0 1 01 0 1 0 01 1 – – –
0 1 0 0 0 1 00 1 1 0 01 0 1 1 01 1 – – –
1 0 0 0 1 0 00 1 1 1 01 0 1 1 01 1 – – –
1 1 – – 1 1 1
Ejemplo: maquinas de bebidas (cont)
❒ Codificar estados
9: Secuenciales 32
D1 = Q1 + D + Q0 N
D0 = Q0’ N + Q0 N’ + Q1 N + Q1 D
OPEN = Q1 Q0
Ejemplo: Implementación Moore
❒ Mapear la lógica
0 0 1 1
0 1 1 1
X X 1 X
1 1 1 1
Q1D1
Q0
N
D
0 1 1 0
1 0 1 1
X X 1 X
0 1 1 1
Q1D0
Q0
N
D
0 0 1 0
0 0 1 0
X X 1 X
0 0 1 0
Q1Open
Q0
N
D
9: Secuenciales 33
present state inputs next state outputQ3 Q2 Q1 Q0 D N D3 D2 D1 D0 open0 0 0 1 0 0 0 0 0 1 0
0 1 0 0 1 0 01 0 0 1 0 0 01 1 - - - - -
0 0 1 0 0 0 0 0 1 0 00 1 0 1 0 0 01 0 1 0 0 0 01 1 - - - - -
0 1 0 0 0 0 0 1 0 0 00 1 1 0 0 0 01 0 1 0 0 0 01 1 - - - - -
1 0 0 0 - - 1 0 0 0 1
D0 = Q0 D’ N’
D1 = Q0 N + Q1 D’ N’
D2 = Q0 D + Q1 N + Q2 D’ N’
D3 = Q1 D + Q2 D + Q2 N + Q3
OPEN = Q3
Ejemplo: Implementación Moore (cont)
❒ Otra codificación (1 encendido)
9: Secuenciales 34
Diagramas de Estados de Mealy y Moore
❒ Moore❍ outputs asociados con estados
0[0]
100[0]
50[0]
150[1]
N’ D’ + Reset
D
D
N
N+D
N
N’ D’
Reset’
N’ D’
N’ D’
Reset
0
100
50
150
(N’ D’ + Reset)/0
D/0
D/1
N/0
N+D/1
N/0
N’ D’/0
Reset’/1
N’ D’/0
N’ D’/0
Reset/0
❒ Mealy❍ outputs asociados con transiciones
9: Secuenciales 35
Ejemplo: Implementación Mealy
0
100
50
150
Reset/0
D/0
D/1
N/0
N+D/1
N/0
N’ D’/0
Reset’/1
N’ D’/0
N’ D’/0
Reset/0present state inputs next state output
Q1 Q0 D N D1 D0 open0 0 0 0 0 0 0
0 1 0 1 01 0 1 0 01 1 – – –
0 1 0 0 0 1 00 1 1 0 01 0 1 1 11 1 – – –
1 0 0 0 1 0 00 1 1 1 11 0 1 1 11 1 – – –
1 1 – – 1 1 1
D0 = Q0’N + Q0N’ + Q1N + Q1D
D1 = Q1 + D + Q0N
OPEN = Q1Q0 + Q1N + Q1D + Q0D
0 0 1 0
0 0 1 1
X X 1 X
0 1 1 1
Q1Open
Q0
N
D
9: Secuenciales 36
Ejemplo: Implementación Mealy (cont)
D0 = Q0’N + Q0N’ + Q1N + Q1DD1 = Q1 + D + Q0NOPEN = Q1Q0 + Q1N + Q1D + Q0D
hay que asegurar que OPEN es 0 cuando hay reset – con compuerta AND
9: Secuenciales 37
Input Next State OutputSequence Present State X=0 X=1 X=0 X=1
Reset S0 S1 S2 0 00 S1 S3 S4 0 01 S2 S5 S6 0 000 S3 S0 S0 0 001 S4 S0 S0 1 010 S5 S0 S0 0 011 S6 S0 S0 1 0
Actividad❒ Implementar detector de secuencia (usando Mealy) para 010
o 110 (detector no continuo, requiere secuencia completa)
S0
S3
S2S1
S5 S6S4
1/00/0
1/0
1/00/1
0/01/00/0
1/00/0
1/00/1
1/00/0
9: Secuenciales 38
Input Next State OutputSequence Present State X=0 X=1 X=0 X=1
Reset S0 S1 S2 0 00 S1 S3 S4 0 01 S2 S5 S6 0 000 S3 S0 S0 0 001 S4 S0 S0 1 010 S5 S0 S0 0 011 S6 S0 S0 1 0
Actividad (cont)
S1 es equivalente a S2
S3 es equivalente a S5
S4 es equivalente a S6
9: Secuenciales 39
Input Next State OutputSequence Present State X=0 X=1 X=0 X=1
Reset S0 S1' S1' 0 00 + 1 S1' S3' S4' 0 0X0 S3' S0 S0 0 0X1 S4' S0 S0 1 0
MEF Minimizada
❒ Detector de secuencia de 010 o 110 minimizada para estados (detecta secuencia completa)
S0
S1’
S3’ S4’
X/0
1/0
1/00/1
0/0
X/0
S0
S3
S2S1
S5 S6S4
1/00/0
1/0
1/00/1
0/01/00/0
1/00/0
1/00/1
1/00/0
Original
9: Secuenciales 40
MEF Minimizada
❒ Otra solución para el detector de secuencia de 010 o 110 (detector continuo)
❒ Esta versión detecta subsecuencias como secuencias validas (e.g. 01010 se detectaría como dos secuencias)
1 2
S0 S1’ S3’
-/0 1/0
1/0
0/10/0
9: Secuenciales 41
9-Sistemas Secuenciales
9.1 Maquinas de Estados Finitos
9.2 Mealy y Moore FSMs
9.3 Implementación en Verilog
9: Secuenciales 42
HDL y Lógica Secuencial
❒ Flip-flops❍ usan relojes (clocks) – tiempos de cambio de estados
❒ FSMs❍ vista estructural (FFs separados de lógica combinacional)
❍ vista de comportamiento (síntesis de secuenciadores)
❒ Rutas de datos (e.g., ALUs, comparadores) + registros❍ uso de operadores aritméticos/lógicos
❍ control de elementos de almacenamiento
9: Secuenciales 43
Ejemplo: reducir string de 1s en 1
❒ Eliminar un 1 de cada string de 1s en el input
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
1/00/0
0/0
1/1
zero[0]
one1[0]
Moore Mealy
9: Secuenciales 44
module reduce (clk, reset, in, out);input clk, reset, in;output out;
parameter zero = 2’b00;parameter one1 = 2’b01;parameter two1s = 2’b10;
reg out;reg [2:1] state; // state variablesreg [2:1] next_state;
always @(posedge clk)if (reset) state = zero;else state = next_state;
asignar estados
Ejemplo: reducir string de 1s en 1
❒ Verilog: Maquina de Moore
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
9: Secuenciales 45
always @(in or state)
case (state)zero:
// last input was a zerobegin
if (in) next_state = one1;else next_state = zero;
endone1:
// we've seen one 1begin
if (in) next_state = two1s;else next_state = zero;
endtwo1s:
// we've seen at least 2 onesbegin
if (in) next_state = two1s;else next_state = zero;
endendcase
hay que incluir todas las señales
que son determinan el estado
Ejemplo: reducir string de 1s en 1 (cont)
el output solo depende del
estado
always @(state)case (state)
zero: out = 0;one1: out = 0;
two1s: out = 1;endcase
endmodule
9: Secuenciales 46
module reduce (clk, reset, in, out);input clk, reset, in;output out;reg out;reg state; // state variablesreg next_state;
always @(posedge clk)if (reset) state = zero;else state = next_state;
always @(in or state)case (state)
zero: // last input was a zerobegin
out = 0;if (in) next_state = one;else next_state = zero;
endone: // we've seen one 1
if (in) begin
next_state = one; out = 1;end else begin
next_state = zero; out = 0;end
endcaseendmodule
Verilog para MEF Mealy
1/00/0
0/0
1/1
zero[0]
one1[0]
9: Secuenciales 47
module reduce (clk, reset, in, out);input clk, reset, in;output out;reg out;reg state; // state variables
always @(posedge clk)if (reset) state = zero;else
case (state)zero: // last input was a zero
beginout = 0;if (in) state = one;else state = zero;
endone: // we've seen one 1
if (in) begin
state = one; out = 1;end else begin
state = zero; out = 0;end
endcaseendmodule
Verilog para MEF Mealy (otra versión)
1/00/0
0/0
1/1
zero[0]
one1[0]
9: Secuenciales 48
Resumen MEFs
❒ Modelos para representar circuitos secuenciales
❍ abstracción de elementos secuenciales
❍ maquinas de estados finitos y diagramas de estados
❍ Mealy, Moore y maquinas sincrónicas Mealy
❒ Procedimiento de diseño usando MEFs
❍ generar diagrama de estados
❍ generar tabla de transiciones de estados
❍ determinar funciones de próximo estado y output
❍ implementar lógica combinacional
❒ HDLs