Está en la página 1de 47

9-Sistemas Secuenciales

9.1 Máquinas de Estados Finitos


9.2 Mealy y Moore
9.3 Implementación en Verilog

9: Secuenciales 1
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

Inputs Outputs
Combinational
Logic

State Inputs State Outputs

Storage Elements

9: Secuenciales 2
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 3
Elementos de almacenamiento:
latches y flip-flops

D Q

CLK D

positive
edge-triggered CLK
flip-flop

Qedge

D Q
G Qlatch
CLK
transparent
(level-sensitive)
latch comportamiento no es el mismo si es que los inputs
cambian cuando el clock esta alto
9: Secuenciales 4
Flip Flop JK
 Diagrama de estados

 Tabla transiciones

 Ecuacion caraterística

9: Secuenciales 5
Flip Flop JK
 Tabla Característica

 Tabla de Excitaciones

9: Secuenciales 6
Flip Flop T

9: Secuenciales 7
Flip Flop D

9: Secuenciales 8
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)

001 010 111


x=1 x=0
x=0
100 110
x=1
9: Secuenciales 9
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
ERROR
closed

not equal not equal


& new not equal
& new & new
S1 S2 S3 OPEN
reset closed closed closed
open
mux=C1 equal mux=C2 equal mux=C3 equal
& new & new & new

not new not new not new

9: Secuenciales 10
Ejemplo: Registro de corrimiento (shift register)
 Shift register
 input mostrado en
arcos de transiciones OUT1 OUT2 OUT3
 valores de output
mostrado en nodo IN D Q D Q D Q
de estado CLK

1
100 110
1 0 1 1
1

0 000 1 010 101 0 111 1

0
0 0 1 0
001 011
0

9: Secuenciales 11
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, ...

001 010 011

000 3-bit up-counter 100

111 110 101

9: Secuenciales 12
Cómo 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).
present state next state
 Ejemplo: contador
0 000 001 1
001 010 011 1 001 010 2
2 010 011 3
3 011 100 4
000 3-bit up-counter 100
4 100 101 5
5 101 110 6
111 110 101 6 110 111 7
7 111 000 0

9: Secuenciales 13
Implementación
 Un flip-flop para cada bit de estado
 Lógica combinacional basada en codificación
código en Verilog para
mostrar que la función
C3 C2 C1 N3 N2 N1 es un input a un D-FF
0 0 0 0 0 1
0 0 1 0 1 0 N1 <= C1’
0 1 0 0 1 1 N2 <= C1C2’ + C1’C2
0 1 1 1 0 0 <= C1 xor C2
1 0 0 1 0 1 N3 <= C1C2C3’ + C1’C3 + C2’C3
<= (C1C2)C3’ + (C1’ + C2’)C3
1 0 1 1 1 0
<= (C1C2)C3’ + (C1C2)’C3
1 1 0 1 1 1 <= (C1C2) xor C3
1 1 1 0 0 0
N3 C3 N2 C3 N1 C3
0 0 1 1 0 1 1 0 1 1 1 1

C1 0 1 0 1 C1 1 0 0 1 C1 0 0 0 0

C2 C2 C2
9: Secuenciales 14
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 OUT1 OUT2 OUT3

D Q D Q D Q
CLK

"1"
9: Secuenciales 15
Implementación: Registro de
corrimiento
 Input determina próximo estado

In C1 C2 C3 N1 N2 N3
0 0 0 0 0 0 0 100 1 110
0 0 0 1 0 0 0 0 1
1 1
0 0 1 0 0 0 1 1
0 0 1 1 0 0 1 0 000 1 010 101 0 111 1
0 1 0 0 0 1 0 0
0 0 1 0
0 1 0 1 0 1 0
0 1 1 0 0 1 1 001 011
0
0 1 1 1 0 1 1
1 0 0 0 1 0 0 N1 <= In
1 0 0 1 1 0 0 N2 <= C1
1 0 1 0 1 0 1 N3 <= C2 OUT1 OUT2 OUT3
1 0 1 1 1 0 1
1 1 0 0 1 1 0
IN DQ DQ DQ
1 1 0 1 1 1 0
1 1 1 0 1 1 1 CLK
1 1 1 1 1 1 1 9: Secuenciales 16
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

000 110 Present State Next State


C B A C+ B+ A+
0 0 0 0 1 0
0 0 1 – – –
010 101 0 1 0 0 1 1
0 1 1 1 0 1
1 0 0 – – –
011 1 0 1 1 1 0
1 1 0 0 0 0
notar condiciones don't care por los1 estados
1 1no usados
– – –
9: Secuenciales 17
Ejemplo: Contador más complejo (cont)

 Paso 3: mapas Karnaugh para próximas funciones

C+ C B+ C A+ C
0 0 0 X 1 1 0 X 0 1 0 X

A X 1 X 1 A X 0 X 1 A X 1 X 0

B B B

C+ <= A

B+ <= B’ + A’C’

A+ <= BC’

9: Secuenciales 18
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
001 111 111 001

000 110 000 110


100 100

010 101 010 101

011 011

9: Secuenciales 19
Contadores con estados iniciales
(cont)
 Generar tabla de transición de estados con estados
iniciales
C+ C B+ C A+ C
0 0 0 0 1 1 0 1 0 1 0 0

A 1 1 1 1 A 1 0 0 1 A 0 1 0 0

B B B

Present State Next State 111 001


C B A C+ B+ A+
0 0 0 0 1 0 000 110
0 0 1 1 1 0 100
0 1 0 0 1 1
0 1 1 1 0 1
1 0 0 0 1 0 010 101
1 0 1 1 1 0
1 1 0 0 0 0
1 1 1 1 0 0
011
9: Secuenciales 20
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

S1 S0 C D N1 N0
0 0 0 0 0 0
C=0 C=0 0 0 0 1 0 0
D=X C=1 D=X 0 0 1 0 0 1
D=0
0 0 1 1 1 1
00 11 0 1 0 0 0 1
C=1 C=1 0 1 0 1 0 1
C=1 0 1 1 0 1 0
D=0 D=1 D=0
0 1 1 1 0 0
01 10 1 0 0 0 1 0
C=1
1 0 0 1 1 0
C=0 D=0 C=0 1 0 1 0 1 1
D=X D=X 1 0 1 1 0 1
1 1 0 0 1 1
1 1 0 1 1 1
1 1 1 9:0Secuenciales
0 0 21
1 1 1 1 1 0
Actividad (cont)
S1

0 0 1 1 N1 = C’S1
+ CDS0’S1’ + DS0S1
S1 S0 C D N1 N0 0 0 1 1 D + CD’S0S1’ + D’S0’S1
0 0 0 0 0 0 1
C 0 1 0
0 0 0 1 0 0 0 1 0 1
0 0 1 0 0 1 S0
0 0 1 1 1 1 S1
0 1 0 0 0 1 0 1 1 0 N0 = CS0’ + C’S0
0 1 0 1 0 1
0 1 1 0 D
0 1 1 0 1 0
0 1 1 1 0 0 C 1 0 0 1
1 0 0 0 1 0 1 0 0 1
1 0 0 1 1 0 S0
1 0 1 0 1 1
1 0 1 1 0 1
1 1 0 0 1 1
1 1 0 1 1 1
1 1 1 0 0 0
1 1 1 1 1 0

9: Secuenciales 22
9-Sistemas Secuenciales

9.1 Máquinas de Estados Finitos


9.2 Mealy y Moore
9.3 Implementación en Verilog

9: Secuenciales 23
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

next state
Inputs logic Next State

Current State
Outputs

9: Secuenciales 24
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)

lógica output
FS Outputs: z
Inputs: x
lógica próximo
estado: FPE Next State: y(n+1)

Current State: y(n) 9: Secuenciales 25


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)

output
logic Outputs
Inputs
next state
logic Next State

Current State

Next State

State
Clock 0 1 2 3 4 5
9: Secuenciales 26
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 27
Comparar máquinas Mealy y Moore (cont)
inputs
combinational

 Moore: z = F(y)
logic for
next state logic for
reg outputs
outputs

state feedback

logic for
inputs outputs
outputs
combinational
logic for reg
 Mealy: z = F(y, x) next state

state feedback

logic for
inputs outputs
outputs
combinational
 Mealy Sincrónica logic for reg
next state

z = F(y, x) con FF en salida


state feedback

9: Secuenciales 28
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
current next
reset input state state output
0
1 – – A
1 0 0 A B 0
B/0 D/1
0 1 A C 0
0 0 0 B B 0
0 0 1 B D 0
reset
A/0 1 0
0 0 C E 0
1 0 1 C C 0
1 0 0 D E 1
C/0 E/1 0 1 D C 1
0
0 0 E B 1
1 0 1 E D 1
9: Secuenciales 29
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

0/0 current next


reset input state state output
1 – – A 0
B
0 0 A B 0
0/0
0 1 A C 0
reset/0 0 0 B B 0
A 0/1 1/1
0 1 B C 1
0 0 C B 1
1/0 0 1 C C 0
C

1/0

9: Secuenciales 30
Máquina Mealy

 Máquina Mealy Sincrónica


 estados y outputs con registros
 evita outputs con ruidos (‘glitches’)
 típicamente se implementa en PLDs

output
logic Outputs
Inputs
next state
logic

Current State
9: Secuenciales 31
Ejemplo: máquinas de bebidas
 Entrega bebida después que 150 pesos
son depositados
 Acepta diferentes monedas 50 (N), 100
(D) Reset
 No entrega cambio

N
Vending Open
Coin Machine Release
Sensor D FSM Mechanism

Clock

9: Secuenciales 32
Ejemplo: máquinas de bebidas (cont)
 Representación abstracta
 listar secuencias típicas:
Reset
• tres de cincuenta
• cincuenta, cien
• cien, cincuenta S0
• dos de cien N D
 dibujar diagrama de estados:
• inputs: N, D, reset S1 S2
• output: dar bebida (OPEN) N D N D
 asumir:
S4 S5 S6
• N y D seteadas por un ciclo S3
[open] [open] [open]
• cada estado tiene un auto estado N D
para N = D = 0 (no hay moneda)
S7 S8
[open] [open]

9: Secuenciales 33
Ejemplo: máquinas de bebidas (cont)
 Minimizar número de estados – reusar
estados si es posible
Reset present inputs next output
state D N state open
0 0 0 0 0
0 0 1 50 0
1 0 100 0
N 1 1 – –
50 0 0 50 0
50 D 0 1 100 0
1 0 150 0
N 1 1 – –
100 0 0 100 0
D 100 0 1 150 0
1 0 150 0
N+D 1 1 – –
150 150 tabla de
– estados
– 150
simbólica 1
[open]

9: Secuenciales 34
Ejemplo: máquinas de bebidas (cont)

 Codificar estados
present stateinputs next state output
Q1 Q0 D N D1 D0 open
0 0 0 0 0 0 0
0 1 0 1 0
1 0 1 0 0
1 1 – – –
0 1 0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 – – –
1 0 0 0 1 0 0
0 1 1 1 0
1 0 1 1 0
1 1 – – –
1 1 – – 1 1 1

9: Secuenciales 35
Ejemplo: Implementación Moore
 Mapear la lógica
Q1 Q1 Q1
D1 D0 Open
0 0 1 1 0 1 1 0 0 0 1 0
0 1 1 1 1 0 1 1 0 0 1 0
N N N
X X 1 X X X 1 X X X 1 X
D D D
1 1 1 1 0 1 1 1 0 0 1 0
Q0 Q0 Q0

D1 = Q1 + D + Q0 N

D0 = Q0’ N + Q0 N’ + Q1 N + Q1 D

OPEN = Q1 Q0

9: Secuenciales 36
Ejemplo: Implementación Moore (cont)

 Otra codificación (1 encendido)

present state inputs next state output


Q3 Q2 Q1 Q0 D N D3 D2 D1 D0 open
0 0 0 1 0 0 0 0 0 1 0 D0 = Q0 D’ N’
0 1 0 0 1 0 0
1 0 0 1 0 0 0
1 1 - - - - - D1 = Q0 N + Q1 D’ N’
0 0 1 0 0 0 0 0 1 0 0
0 1 0 1 0 0 0 D2 = Q0 D + Q1 N + Q2 D’ N’
1 0 1 0 0 0 0
1 1 - - - - -
0 1 0 0 0 0 0 1 0 0 0 D3 = Q1 D + Q2 D + Q2 N + Q3
0 1 1 0 0 0 0
1 0 1 0 0 0 0 OPEN = Q3
1 1 - - - - -
1 0 0 0 - - 1 0 0 0 1

9: Secuenciales 37
Diagramas de Estados de Mealy y Moore
 Moore  Mealy
 outputs asociados con  outputs asociados con
estados transiciones
Reset N’ D’ + Reset Reset/0 (N’ D’ + Reset)/0

0
N’ D’ 0 N’ D’/0
[0]
N N/0

D 50 D/0
N’ D’ 50 N’ D’/0
[0]
N N/0
100
D N’ D’ D/1 100 N’ D’/0
[0]
N+D N+D/1
150
Reset’ 150 Reset’/1
[1]

9: Secuenciales 38
Ejemplo: Implementación Mealy
Reset/0 Reset/0
present stateinputs next state output
Q1 Q0 D N D1 D0 open
0 N’ D’/0 0 0 0 0 0 0 0
0 1 0 1 0
N/0 1 0 1 0 0
D/0 1 1 – – –
50 N’ D’/0 0 1 0 0 0 1 0
0 1 1 0 0
N/0
1 0 1 1 1
100 N’ D’/0
1 1 – – –
D/1 1 0 0 0 1 0 0
N+D/1 0 1 1 1 1
1 0 1 1 1
150 Reset’/1 1 1 – – –
Q1 1 1 – – 1 1 1
Open
0 0 1 0 D0 = Q0’N + Q0N’ + Q1N + Q1D
0 0 1 1
N D1 = Q1 + D + Q0N
X X 1 X
D OPEN = Q1Q0 + Q1N + Q1D + Q0D
0 1 1 1
Q0 9: Secuenciales 39
Ejemplo: Implementación Mealy
(cont)
D0 = Q0’N + Q0N’ + Q1N + Q1D
D1 = Q1 + D + Q0N
OPEN = Q1Q0 + Q1N + Q1D + Q0D

hay que asegurar que OPEN es 0


cuando hay reset – con compuerta AND

9: Secuenciales 40
9-Sistemas Secuenciales

9.1 Maquinas de Estados Finitos


9.2 Mealy y Moore FSMs
9.3 Implementación en Verilog

9: Secuenciales 41
Ejemplo: reducir string de 1s en 1

 Eliminar un 1 de cada string de 1s en el


input
Moore Mealy

zero
[0] 0/0
zero
1 0 [0]
0 one1 0/0 1/0
[0]
one1
0 1 [0]
1 1/1
two1s
[1]

9: Secuenciales 42
Ejemplo: reducir string de 1s en
1
asignar estados
 Verilog: Máquina de Moore
module reduce (clk, reset, in, out);
input clk, reset, in;
output out;

parameter zero = 2’b00;


parameter one1 = 2’b01;
parameter two1s = 2’b10;
zero
[0]
reg out; 1 0
reg [2:1] state; // state variables
reg [2:1] next_state; 0 one1
[0]
always @(posedge clk)
if (reset) state = zero; 0 1
else state = next_state; 1
two1s
[1]

9: Secuenciales 43
Ejemplo: reducir string de 1s en 1
(cont)
always @(in or state)
hay que incluir todas las señales
case (state) que son determinan el estado
zero:
// last input was a zero
begin
if (in) next_state = one1;
else next_state = zero;
end el output solo depende del
one1:
estado
// we've seen one 1
begin
if (in) next_state = two1s;
else next_state = zero;
end always @(state)
two1s: case (state)
// we've seen at least 2 ones zero: out = 0;
begin one1: out = 0;
if (in) next_state = two1s; two1s: out = 1;
else next_state = zero; endcase
end
endcase endmodule

9: Secuenciales 44
Verilog para MEF Mealy
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;
0/0
always @(in or state) zero
case (state)
[0]
zero: // last input was a zero
begin
out = 0; 0/0 1/0
if (in) next_state = one;
else next_state = zero; one1
end [0]
1/1
one: // we've seen one 1
if (in)
begin
next_state = one; out = 1;
end
else
begin
next_state = zero; out = 0;
end
endcase 9: Secuenciales 45
endmodule
Verilog para MEF Mealy (otra
versión)
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) 0/0
zero
zero: // last input was a zero
[0]
begin
out = 0;
0/0 1/0
if (in) state = one;
else state = zero; one1
end [0]
one: // we've seen one 1 1/1
if (in)
begin
state = one; out = 1;
end
else
begin
state = zero; out = 0;
end
endcase 9: Secuenciales 46
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

9: Secuenciales 47

También podría gustarte