48
9: Secuenciales 1 ELO211: Sistemas Digitales Tomás Arredondo Vidal 1er Semestre – 2009 Este material está basado en: textos y material de apoyo: Contemporary Logic Design 1 st / 2 nd 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

ELO211: Sistemas Digitales TomásArredondo Vidal 1er ...profesores.elo.utfsm.cl/~tarredondo/info/digital-systems/9-Sistemas... · nos da diferentes formas de lógica secuencial Combinational

Embed Size (px)

Citation preview

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