9.1 Máquinas de Estados Finitos 9.2 Mealy y Moore 9.3...

Preview:

Citation preview

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

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).

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 Máquinas 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 máquinas 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

Máquina Mealy

Máquina 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

Recommended