9: Secuenciales 1
9-Sistemas Secuenciales
9.1 Máquinas de Estados Finitos9.2 Mealy y Moore 9.3 Implementación en Verilog
9: Secuenciales 2
Abstracción
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 3
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 periódica – el reloj o clock)
Clock
9: Secuenciales 4
comportamiento no es el mismo si es que los inputs cambian 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 5
Flip Flop JK
Diagrama de estados
Tabla transiciones
Ecuacion caraterística
9: Secuenciales 6
Flip Flop JK
Tabla Característica
Tabla de Excitaciones
9: Secuenciales 7
Flip Flop T
9: Secuenciales 8
Flip Flop D
9: Secuenciales 9
x = 0
x = 1
x = 0x = 1
100
010
110
111001
Representaciones de máquinas 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 a través una serie de estados basado en secuencia de valores de señales de input
(x)
9: Secuenciales 10
Diagrama de máquina 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 11
Ejemplo: Registro de corrimiento (shift register)
Shift register input mostrado en
arcos de transiciones valores de output
mostrado 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 12
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 13
010
100
110
011001
000
101111
3-bit up-counter
present state next state0 000 001 11 001 010 22 010 011 33 011 100 44 100 101 55 101 110 66 110 111 77 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 14
C3 C2 C1 N3 N2 N10 0 0 0 0 10 0 1 0 1 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 1 1 01 1 0 1 1 11 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 15
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 16
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 17
Ejemplo: Contador más 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 18
C+ <= A
B+ <= B’ + A’C’
A+ <= BC’
Ejemplo: Contador más 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 19
Contadores con estados iniciales
Estados iniciales durante el inicio, el contador puede estar en un
estado sin usar o inválido el diseñador debe garantizar que eventualmente
entre en un estado válido diseñar para que estados inválidos transiciones a
válidos
010
000 110
101
011
001111
100
010
000 110
101
011
001 111
100
9: Secuenciales 20
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 21
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 22
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 23
9-Sistemas Secuenciales
9.1 Maquinas de Estados Finitos9.2 Mealy y Moore9.3 Implementación en Verilog
9: Secuenciales 24
Modelo de Contador/registro de corrimiento Valores almacenados en registros representan
estado del circuito Lógica combinacional calcula:
próximo estado• función de estados actuales e inputs
salidas (o outputs)• valores de flip-flops
Inputs
Outputs
Next State
Current State
next statelogic
9: Secuenciales 25
Modelo general
Valores almacenados en registros representan el estado del circuito: y
Lógica combinacional calcula próximo estado: 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 26
Modelo general (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
State0 1 2 3 4 5
9: Secuenciales 27
Máquinas Mealy vs Moore
Máquinas Mealy tienden a tener menos estados outputs son diferentes en arcos (n2) no en estados (n)
Máquinas Moore outputs cambian durante cambios del reloj (siempre un
ciclo más tarde) en máquinas Mealy, input puede causar cambios en output
de inmediato cuando cambie lógica – puede causar problemas cuando se conectan múltiples máquinas
Máquinas Mealy reaccionan mas rápido reaccionan en el mismo ciclo – no tienen que esperar el
reloj en algunos casos en máquinas Moore – mas lógica puede ser necesaria para
decodificar estado en outputs
9: Secuenciales 28
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 foroutputs
inputs outputs
state feedback
regcombinational
logic fornext state
logic foroutputs
inputs outputs
state feedback
regcombinational
logic fornext state
logic foroutputs
9: Secuenciales 29
D/1
E/1
B/0
A/0
C/0
1
0
0
00
1
1
1
1
0
reset
current nextreset input state state output1 – – A0 0 A B 00 1 A C 00 0 B B 00 1 B D 00 0 C E 00 1 C C 00 0 D E 10 1 D C 10 0 E B 10 1 E D 1
Especificar outputs para máquina 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 30
current nextreset input state state output1 – – A 00 0 A B 00 1 A C 00 0 B B 00 1 B C 10 0 C B 10 1 C C 0
B
A
C
0/1
0/0
0/0
1/1
1/0
1/0
reset/0
Especificar outputs para máquina 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 31
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 32
VendingMachine
FSM
N
D
Reset
Clock
OpenCoinSensor
ReleaseMechanism
Ejemplo: máquinas de bebidas
Entrega bebida después que 150 pesos son depositados
Acepta diferentes monedas 50 (N), 100 (D)
No entrega cambio
9: Secuenciales 33
Ejemplo: máquinas 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 34
Ejemplo: máquinas de bebidas (cont)
Minimizar número de estados – reusar estados si es posible
tabla de estados simbólica
present inputs next outputstate D N state open 0 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 35
present stateinputs next state outputQ1 Q0 D N D1 D0 open
0 0 0 0 0 0 00 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: máquinas de bebidas (cont)
Codificar estados
9: Secuenciales 36
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 37
present state inputs next state outputQ3Q2 Q1Q0 D N D3D2 D1D0 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 38
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 39
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 stateinputs next state output
Q1 Q0 D N D1 D0 open 0 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 + Q1DD1 = Q1 + D + Q0NOPEN = 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 40
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 41
9-Sistemas Secuenciales
9.1 Maquinas de Estados Finitos9.2 Mealy y Moore FSMs9.3 Implementación en Verilog
9: Secuenciales 42
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 43
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 variables reg [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: Máquina de Moore
1
0
0
0
11
zero[0]
one1[0]
two1s[1]
9: Secuenciales 44
always @(in or state)
case (state) zero:
// last input was a zero begin if (in) next_state = one1; else next_state = zero; end
one1:// we've seen one 1 begin if (in) next_state = two1s; else next_state = zero; end
two1s:// we've seen at least 2 ones begin if (in) next_state = two1s; else next_state = zero; end
endcase
hay que incluir todas las señalesque son determinan el estado
Ejemplo: reducir string de 1s en 1 (cont)
el output solo depende delestado
always @(state) case (state) zero: out = 0;
one1: out = 0; two1s: out = 1;
endcase
endmodule
9: Secuenciales 45
module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg state; // state variables reg next_state;
always @(posedge clk) if (reset) state = zero; else state = next_state;
always @(in or state) case (state) zero: // last input was a zero
begin out = 0; if (in) next_state = one; else next_state = zero; end
one: // 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 46
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
begin out = 0; if (in) state = one; else state = zero; end
one: // 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 47
Resumen MEFs
Modelos para representar circuitos secuenciales abstracción de elementos secuenciales máquinas 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