Está en la página 1de 60

Tema 7.

Análisis y diseño de
circuitos secuenciales
Circuitos Electrónicos Digitales
E.T.S.I. Informática
Universidad de Sevilla

Departamento de Tecnología Electrónica – Universidad de Sevilla


Contenidos


Introducción

Biestables

Máquinas de estados finitos y circuitos secuenciales
síncronos (CSS)

Análisis de CSS

Diseño de CSS

Departamento de Tecnología Electrónica – Universidad de Sevilla


Introducción

Muchos problemas prácticos no pueden resolverse sólo
mediante el uso de funciones combinacionales.


En este tipo de sistemas, el valor de las salidas en un
instante de tiempo no puede determinarse a partir del
valor de las entradas en ese mismo instante de tiempo


Se necesita que la acción del sistema tenga en cuenta no
sólo las entradas sino también la historia pasada del
sistema (estado).


Para almacenar un estado son necesarios nuevos
elementos de circuito: biestables.

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestables


Los biestables son circuitos electrónicos con dos estados
estables


Son el elemento básico de los circuitos secuenciales


Poseen una o más entradas que hacen que sea posible
conmutar entre los dos estados estables


Un circuito con n biestables puede almacenar hasta 2n
estados

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable SR asíncrono

La capacidad de almacenar información se obtiene de la
“realimentación” de las salidas hacia las entradas: el valor
de la salida refuerza el de las entradas y viceversa.

Estados estables:
– q1=0, q2=1
– q1=1, q2=0 q1

Convenio
– q = q2
– q = q1

q2

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable SR asíncrono

Necesitamos un circuito que permita almacenar dos
estados y conmutar entre ellos.

S
q

q
R

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable SR asíncrono

R=S=0 conserva el estado

0 S 0 S
q 1 q 0

0 R q 0 0 R q 1


S=1, R=0 cambia a 1 (set) S=0, R=1 cambia a 0 (reset)

1 0 S
S q 1
q 0

1 R q 0
0 R q 1

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable SR. Representación formal
Diagrama de estados
Símbolos Tabla de estados
SR=10
SR
q 00 01 11 10
SR=0x SR=x0
S q 0 0 0 - 1 q=0 q=1
R
1 1 0 - 1
SR=01
Q
Verilog
Tabla de excitación module sra(
S q input s,
input r,
q→Q SR output reg q);
R q
0→0 0x always @(s, r)
0→1 10 case ({s, r})
2'b01: q = 1'b0;
1→0 01 2'b10: q = 1'b1;
2'b11: q = 1'bx;
1→1 x0 endcase
endmodule

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestables síncronos

En circuitos reales con miles (o millones) de biestables es
muy útil que todos cambien de estado a la vez: esto
simplificará el proceso de diseño.

Los cambios de estado se producen “sincronizados” con
una “señal de reloj” (CK)

Tipos de sincronización:
– Por nivel: cuando CK tiene un valor determinado, alto (1) o
bajo (0).
– Por flanco: cuando CK cambia de 0 a 1 (flanco de subida) o
de 1 a 0 (flanco de bajada).

Flanco: más conveniente.
– Determina de forma precisa el instante de cambio
– Minimiza errores en los circuitos

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestables síncronos
Disp. por nivel Disp. por flanco

module srl( S q S q
module srff(
input ck, input ck,
input s, R input s,
input r, Rck
ck input r,
output reg q); output reg q);
always @(ck, s, r) always @(negedge ck)
case ({ck, s, r}) case ({s, r})
3'b101: q = 1'b0; 2'b01: q = 1'b0;
3'b110: q = 1'b1; 2'b10: q = 1'b1;
3'b111: q = 1'bx; 2'b11: q = 1'bx;
endcase endcase
endmodule endmodule

El cambio de estado sólo


El cambio de estado se produce cuando ck
sólo se produce cambia de 1 a 0 (flanco
cuando ck=1 (nivel de bajada) o de 0 a 1
alto) o ck=0 (nivel (flanco de subida).
bajo) Mejor precisión en el
cambio de estado

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestables síncronos

S q qa S q ql S q qff

R R Rck
ck

ck
R

qa

ql

qff

Departamento de Tecnología Electrónica – Universidad de Sevilla


Otros biestables síncronos

SR

JK
– Similar a SR: J~S, K~R
– Función de cambio de estado (toggle) para J=K=1

D
– Una única entrada que indica el próximo estado.
– Fácil de usar e implementar.

T
– Una única entrada que permite complementar el estado.
– Útil en aplicaciones especiales.

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable JK

Símbolos Tabla de estados Diagrama de estados


JK JK=1x
q 00 01 11 10
JK=0x JK=x0
J q 0 0 0 1 1
q=0 q=1
K 1 1 0 0 1
ck
JK=x1
Q
Verilog
Tabla de excitación module jkff(
J q input ck,
input j,
q→Q JK input k,
K q
ck output reg q);
0→0 0x
0→1 1x always @(negedge ck)
case ({j, k})
1→0 x1 2'b01: q = 1'b0;
2'b10: q = 1'b1;
1→1 x0 2'b11: q = ~q;
endcase
endmodule

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable D

Símbolos Tabla de estados Diagrama de estados


D D=1
q 0 1
D=0 D=1
q 0 0 1
D q=0 q=1
1 0 1
ck
D=0
Q

Verilog
Tabla de excitación
q module dff(
input ck,
D q→Q D input d,
q
ck 0→0 0 output reg q);

0→1 1 always @(negedge ck)


q <= d;
1→0 0
1→1 1 endmodule

Departamento de Tecnología Electrónica – Universidad de Sevilla


Biestable T

Símbolos Tabla de estados Diagrama de estados


T T=1
q 0 1
T=0 T=0
q 0 0 1
T q=0 q=1
1 1 0
ck
T=1
Q

Verilog
Tabla de excitación
q module tff(
input ck,
T q→Q T input t,
q
ck 0→0 0 output reg q);

0→1 1 always @(negedge ck)


if (t == 1)
1→0 1 q <= ~q;
1→1 0
endmodule

Departamento de Tecnología Electrónica – Universidad de Sevilla


Entradas asíncronas de los biestables

Permiten cargar un estado determinado de CL
forma sencilla J q
– CL (clear): puesta a cero
K
– PR (preset): puesta a uno ck

Operan inmediatamente cuando se activan:
– Activas en nivel bajo (0)
PR
– Activas en nivel alto (1)
q
D

Las entradas asíncronas tienen prioridad
sobre las síncronas (J, K, D, T, ...) ck

Resuelven el problema de la iniciación en los
circuitos digitales complejos
– millones de biestables CL PR
q
– necesidad de partir de un estado conocido T

ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Entradas asíncronas de los biestables

PR
CL PR
q CL
D

ck D

CLK

PRESET
SINCRONO CLEAR PRESET
SINCRONO

Departamento de Tecnología Electrónica – Universidad de Sevilla


Máquinas de estados finitos y CSS

Introducción

Biestables

Máquinas de estados finitos (FSM) y circuitos secuenciales
síncronos (CSS)
– Ejemplo de circuito secuencial
– Generalización: modelo de máquina de estado finito

Análisis de CSS

Diseño de CSS

Departamento de Tecnología Electrónica – Universidad de Sevilla


Ejemplo de circuito secuencial

z
J1 q1
z
K1 x

ck

q1 J1

J2 q2 K1
x

K2
ck

q2 J2
ck

K2
Dos biestables: (q1,q2) --> 4 estados

ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Ejemplo de circuito secuencial

z
generalización

x z
C.C.

q1 J1

K1 q JK,RS,
D,T
ck biestables
q2 J2
ck
K2

ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Concepto de máquinas de estados

Una máquina de estados finitos
es una 5-tupla: M(I,O,S,d,l)
donde generalización

I: Conjunto finito de entradas x1 z1
(x ϵ I) x2 z2
x3 x z z3

O: Conjunto finito de salidas x4
C.C.
z4
(z ϵ O) x5 z5

S: Conjunto finito de estados ... q ...
(Si ϵ S)
biestables JK,RS,

d: Función de próximo estado Estados: D,T
(δ: IxS  S)): Q = δ(q, x) S1S2S3S4... ck

l: Función de salida (l)
Mealy (l:IxS O): z = l(q, x)
Moore (l:S O): z = l(q)

Departamento de Tecnología Electrónica – Universidad de Sevilla


Concepto de máquinas de estados.
Propiedades


Dos máquinas de estados son equivalentes si generan las
mismas secuencias de salida para las mismas secuencias
de entrada.


Las máquinas de estados se pueden optimizar: máquinas
equivalentes con menor número de estados.


Las máquinas de estados pueden ser incompletamente
especificadas: próximo estado no definido para un estado
actual y entrada dados.

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS


Introducción

Biestables

Máquinas de estados finitos (FSM) y circuitos secuenciales
síncronos (CSS)

Análisis de CSS
– Análisis lógico: procedimiento y ejemplo
– Análisis temporal

Diseño de CSS

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS


Objetivo:
– Partiendo del circuito construido (esquema del circuito),
obtener el diagrama de estados de la máquina que
implementa e interpretar su operación/utilidad.


El proceso hasta obtener el diagrama de estados es
sistemático.


La interpretación no es sistemática, intervienen:
– Experiencia
– Información adicional

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Procedimiento

Circuito: biestables
y elem. combinacionales

Análisis combinacional

Tabla de excitación/salida

Tablas de biestables

Tabla de transición de
estados/salida

Definición de estados

Tabla de estados/salida
Diagrama de estados

Interpretación

Descripción verbal

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo

J1 q1
z
K1

ck

J2 q2
x

K2

ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo
Circuito: biestables
J2=K2=(x  q1)’ y elem. combinacionales
J1=K1=q2’
Análisis combinacional

Tabla de excitación/salida

J1 q1
z z= q2(x  q1)
K1

ck
X
q2q1 0 1
J2 q2 00 1 1, 1 1, 0 0 0, 1 1, 0
x
01 0 0, 1 1, 0 1 1, 1 1, 0
K2
10 1 1, 0 0, 0 0 0, 0 0, 1
11 0 0, 0 0, 1 1 1, 0 0 , 0
ck
J2 K2, J1 K1,z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo
Tabla del biestable JK
Tabla de excitación/salida
JK
q 00 01 11 10
Tablas de biestables
0 0 0 1 1
Tabla de transición de
1 1 0 0 1 estados/salida

X X
q2q1 0 1 q2 q 1 0 1

00 1 1, 1 1, 0 0 0, 1 1, 0 00 1 1, 0 0 1, 0
01 0 0, 1 1, 0 1 1, 1 1, 0 01 0 0, 0 1 0, 0
10 1 1, 0 0, 0 0 0, 0 0, 1 10 0 0, 0 1 0, 1
11 0 0, 0 0, 1 1 1, 0 0 , 0 11 1 1, 1 01,0

J2 K2, J1 K1,z Q 2Q 1, z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo
Tabla de transición de
estado q2 q1 estados/salida

S0 00 Definición de estados
S1 01
Tabla de estados/salida
S2 10 Diagrama de estados
S3 11

X X
q2 q 1 0 1 S 0 1
00 1 1, 0 0 1, 0 S0 S3, 0 S1, 0
01 0 0, 0 1 0, 0 S1 S0, 0 S2, 0
10 0 0, 0 1 0, 1 S2 S0, 0 S2, 1
11 1 1, 1 01,0 S3 S3, 1 S1, 0

Q2Q1, z NS, z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo
Tabla de transición de
estados/salida

Definición de estados
1/0
Tabla de estados/salida
Diagrama de estados
1/0
1/0
S1 1/1
S0
0/0 S2 X
0/0 S 0 1
0/0 S0 S3, 0 S1, 0
0/1 S1 S0, 0 S2, 0
S3
S2 S0, 0 S2, 1
S3 S3, 1 S1, 0

NS, z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis de CSS: Ejemplo
1/0
Tabla de estados/salida
1/0 Diagrama de estados
1/0
S1 1/1
S0 Interpretación
0/0 S2
0/0
0/0 Descripción verbal
0/1
S3

CLK
x

S0 S3 S3 S3 S1 S2 S2 S0 S3 S3 S1 S2
z

Función:
Problemas de inicialización
detecta 3 ceros o tres unos
consecutivos en la entrada

Departamento de Tecnología Electrónica – Universidad de Sevilla


Diagrama/Tabla de estados. Mealy

Cada arco del diagrama muestra x/z: La tabla muestra la misma información:
– x: valor de entrada que provoca la – Posibles estados en filas
transición desde el estado S. – Posibles valores de entradas en columnas
– z: valor de salida generado en el – Próximo estado y salida en cada celda.
estado S cuando la entrada vale x.

x 0 1
1/0 S
0/0 A A,0 B,0
1/0 B
B C,0 A,0

1/0
A C C D,0 B,0
0/0 1/1
D A,0 B,1

NS,z
0/0 D 0/0

Departamento de Tecnología Electrónica – Universidad de Sevilla


Diagrama/Tabla de estados. Moore

– Cada estado lleva asociado un valor La tabla muestra la misma información:


de salida (z). – Posibles estados en filas
– Los arcos indican las posibles – Posibles valores de entradas en columnas
transiciones desde cada estado (S)
según el valor de entrada (x).
– Salida asociada al estado en la última
columna.

x
1 0 1 z
S
0 A A B 0
1 B/0
B C A 0

A/0 1 1
0 C/0 C D B 0
0
E/1
1 D A E 0

0 D/0 0 E C B 1

NS

Departamento de Tecnología Electrónica – Universidad de Sevilla


Aplicaciones de los circuitos
secuenciales síncronos

Detectores de secuencia
– La salida se activa sólo en caso de que aparezca una
determinada secuencia a la entrada.

Generadores de secuencia
– La salida genera una secuencia fija o variable en función de
la entrada.

Unidades de control
– Las entradas modifican el estado y el estado define la
actuación sobre un sistema externo (control de una barrera,
control de temperatura, control de presencia, control de
nivel de líquidos, etc.)

Procesamiento secuencial
– La secuencia de salida es el resultado de aplicar alguna
operación a la secuencia de entrada (cálculo de la paridad,
suma de una constante, producto por una constante,
codificación/decodificación secuencial en general).

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis temporal

Objetivo
– Dado un circuito diseñado (biestables, puertas, etc.),
obtener el cronograma de las señales de salida para unas
señales de entrada dadas.

Consideraciones
– Es posible analizar circuitos con biestables aunque no sean
CSS.
– Si se trata de un CSS, el análisis temporal debe
corresponder con la máquina de estados que implementa.

Procedimiento similar al de circuitos combinacionales
– Parte combinacional: idéntica
– Biestables (por flanco): observando el flanco activo del reloj
y calculando la salida (nuevo estado) a partir de la tabla de
estados del biestable
– La salida cambia con el retraso definido desde el cambio en
el reloj hasta el cambio en el estado (tck-q)

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis temporal. Ejemplo
clk
cl
x
y

cl
CL
q1
x D1
y a
z

CL
J2 q2

K2

clk

Departamento de Tecnología Electrónica – Universidad de Sevilla


Análisis temporal. Ejemplo

clk
cl
x=J2
y=K2
D1

q1
q2

a
z

D1 = x ⊕ y
J2 = x; K2 = y
a = q1 x
z = a ⊕ q2

Departamento de Tecnología Electrónica – Universidad de Sevilla


Diseño de CSS


Introducción

Biestables

Máquinas de estados finitos (FSM) y circuitos secuenciales
síncronos (CSS)

Análisis de CSS

Diseño de CSS
– Objetivos
– Procedimiento y ejemplo

Departamento de Tecnología Electrónica – Universidad de Sevilla


Objetivo

Objetivo
– Definir una máquina de estados que resuelva un problema
dado.
– Implementar la máquina de estados mediante un circuito
secuencial síncrono.

Coste
– Habitualmente, el proceso de diseño va dirigido por
consideraciones de coste y de optimización de recursos.
– Ejemplo de criterios

Minimización del número de elementos de memoria

Minimización de componentes

Frecuencia de operación

Consumo de energía
– Compromiso entre diferentes criterios

Departamento de Tecnología Electrónica – Universidad de Sevilla


Procedimientos

Procedimiento manual
– Realizable con lápiz y papel.
– Comienza describiendo el problema formalmente mediante
un diagrama o tabla de estados.
– A partir del diagrama de estados se van obteniendo diversas
representaciones hasta llegar al circuito digital.

Procedimiento con herramientas de diseño
– Emplea herramientas informáticas.
– A partir del enunciado del problema o el diagrama de
estados, se hace una descripción formal en un LDH.
– Se emplean herramientas de simulación para comprobar
que la descripción del sistema es correcta.
– Se emplean herramientas de síntesis automática para
obtener el circuito final.

Departamento de Tecnología Electrónica – Universidad de Sevilla


Procedimiento manual
Procedimiento inverso
al análisis
Descripción verbal

Interpretación

Tabla de estados/salida
Diagrama de estados

Codificación de estados

Tabla de transición de
estados/salida

Elección de biestables

Tabla de excitación/salida

Diseño combinacional

Circuito: biestables
y elem. combinacionales

Departamento de Tecnología Electrónica – Universidad de Sevilla


Interpretación

Descripción funcional

Es la fase más importante del diseño
(enunciado) ●
Es la fase menos sistemática

Procedimiento/consejos
Interpretación
– Definir claramente entradas y salidas.
– Elegir Mealy o Moore según
Diagrama de estados
Tabla de estados/salida características del problema
(sincronización de la salida)
– Identificar y definir los estados
adecuados de la forma más general
posible
– Establecer las transiciones y salidas
necesarias
– Capturar todos los detalles del
problema en la máquina de estados
– Comprobar el diagrama con una
secuencia de entrada típica

Departamento de Tecnología Electrónica – Universidad de Sevilla


Interpretación


Ejemplo
– Diseñe un circuito con una entrada x y una salida z que
detecte la aparición de la secuencia "1001" en la entrada.
Cuando esto ocurre se activará la salida (z=1). El último "1"
de una secuencia puede considerarse también el primer "1"
de una secuencia posterior (detector con solapamiento).

x z x:
x: 00100111000011101001001001010011...
00100111000011101001001001010011...
z:
z: 00000100000000000001001001000010...
00000100000000000001001001000010...

Departamento de Tecnología Electrónica – Universidad de Sevilla


Interpretación

1/0
x
0 1
0/0 S
1/0 B A,0 B,0
A

B C,0 B,0
1/0
A C
0/0 1/1
C D,0 B,0

D A,0 B,1
0/0 D 0/0
NS,z

A: ningún bit de la secuencia se ha recibido aún, esperando "1"


B: 1er bit de la secuencia recibido, esperando "0"
C: 2 bits de la secuencia recibidos, esperando "0"
D: 3 bits de la secuencia recibidos, esperando "1"

Departamento de Tecnología Electrónica – Universidad de Sevilla


Codificación de estados


Objetivo:
Tabla de estados/salida – Asignar valores binarios a los
estados (codificación de estados)
para su almacenamiento en
Codificación de estados biestables.

Tabla de transición de
estados/salida

Opciones
– Algoritmos complejos
– Asignación arbitraria
– Un biestable por estado (codificación
one-hot)

Departamento de Tecnología Electrónica – Universidad de Sevilla


Codificación de estados

Codificación de estados Tabla de transición de


Tabla de estados/salida
estados/salida

x x
0 1 S q1q2 0 1
S q1q2
A A,0 B,0 A 00 00 00,0 01,0
B 01
B C,0 B,0 01 11,0 01,0
C 11
C D,0 B,0
D 10 11 10,0 01,0

D A,0 B,1 10 00,0 01,1

NS,z Q1Q2,z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Elección de biestables

Objetivo
– Seleccionar qué tipo de biestables
Tabla de transición de almacenarán los bits del estado codificado.
estados/salida ●
Elección de biestables:
– Afecta al resultado final: número de
Elección de biestables componentes, tamaño, velocidad de
operación, consumo de energía.
– Elección diferente según el objetivo (criterio
Tabla de excitación/salida de coste)

Opciones
– JK: reduce el coste de la parte
combinacional.
– RS: más simple que el JK pero menos
flexible.
– D: facilita el diseño, reduce el número de
conexiones.
– T: más conveniente en aplicaciones
específicas (contadores)

Departamento de Tecnología Electrónica – Universidad de Sevilla


Elección de biestables. Ejemplo: JK

Tabla de transición de
Tabla de excitación/salida
estados/salida Tabla de excitación

q→Q JK
x 0→0 0x x
0 1 0 1
q1q2 0→1 1x q1q2
00 00,0 01,0 1→0 x1 00 0x,0x,0 0x,1x,0

1→1 x0
01 11,0 01,0 01 1x,x0,0 0x,x0,0

11 10,0 01,0 11 x0,x1,0 x1,x0,0

10 00,0 01,1 10 x1,0x,0 x1,1x,1


Q1Q2,z
J1K1,J2K2,z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Elección de biestable. Ejemplo: D

En el biestable D:
– Q=D
– D=Q

Tabla de transición de
Tabla de excitación/salida
estados/salida

x
0 1
q1q2
00 00,0 01,0

01 11,0 01,0

11 10,0 01,0

10 00,0 01,1

Q1Q2,z
D1,D2,z

Departamento de Tecnología Electrónica – Universidad de Sevilla


Diseño de la parte combinacional

Tabla de excitación/salida

La tabla de excitación/salida es
Diseño combinacional
una especificación de la parte
combinacional.
Circuito: biestables y ●
La implementación se realiza
elementos combinacionales
mediante cualquiera de las
técnicas de diseño de C.C.
– Dos niveles de puertas
– Subsistemas: multiplexores,
x z decodificadores, etc.
C.C.
– Etc.

q JK,D,...

biestables

Departamento de Tecnología Electrónica – Universidad de Sevilla


Parte combinacional. Ejemplo
x x x
q1q2 0 1 q1q2 0 1 q1q2 0 1
00 0 0 00 x x 00 0 0
x 01 1 0 01 x x 01 0 0
0 1
q1q2
11 x x 11 0 1 11 0 0
00 0x,0x,0 0x,1x,0
10 x x 10 1 1 10 0 1

01 1x,x0,0 0x,x0,0 J1 K1 z

x x
11 x0,x1,0 x1,x0,0 q1q2 0 1 q1q2 0 1
00 0 1 00 x x J1 = x'q2
10 x1,0x,0 x1,1x,1
01 x x 01 0 0 K1 = x + q2'
J1K1,J2K2,z 11 x x 11 1 0 J2 = x
10 0 1 10 x x K2 = x'q1
J2 K2 z = xq1q2'
'

Departamento de Tecnología Electrónica – Universidad de Sevilla


Circuito. Ejemplo

J1 = x'q2
K1 = x + q2'
J2 = x
K2 = x'q1 CL
z = xq1q2'

CL CL
J1 q1 J2 q2
x

K1 K2
ck ck

ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Ejemplo. Resumen
1/0 x x
0 1 0 1
0/0 S q1q2
1/0 B
A A,0 B,0 00 00,0 01,0

A 1/0 C B C,0 B,0 01 11,0 01,0


0/0 1/1

C D,0 B,0 11 10,0 01,0


0/0 D 0/0
x D A,0 B,1 10 00,0 01,1
0 1
q1q2 Q,z Q,z
00 0x,0x,0 0x,1x,0
CL
J1 = x'q2
01 1x,x0,0 0x,x0,0
K1 = x + q2'
CL CL
J2 = x x J1 q1 J2 q2
11 x0,x1,0 x1,x0,0 K2 = x'q1 K1 K2
ck ck
z = xq1q2'
10 x1,0x,0 x1,1x,1 z

J1K1,J2K2,z ck

Departamento de Tecnología Electrónica – Universidad de Sevilla


Procedimiento con herramientas de
diseño

Descripción funcional
(enunciado)

Interpretación Diagrama de estados

Descripción LDH Traducción

Configuración Síntesis automática

Circuito

Departamento de Tecnología Electrónica – Universidad de Sevilla


Descripción de FSM en Verilog
Mealy

x // Proceso de cambio de estado


ecs. q
c.c. biestables l z // (secuencial)
exc. always @(posedge ck, posedge reset)
if (reset)
state <= A;
else
state <= next_state;

Tres procesos
// Proceso de cálculo del nuevo estado
– Cambio de estado: // (combinacional)
representa el bloque de always @* begin
case (state)
biestables A:
– Cálculo del próximo next_state = . . .;
B:
estado (ecuaciones de Next_state = . . .;
excitación) endcase
end
– Cálculo de la salida
(ecuaciones de salida) // Proceso de cálculo de la salida
// (combinacional)

Sólo el proceso de cambio always @* begin
z = . . .;
de estado es secuencial end

Departamento de Tecnología Electrónica – Universidad de Sevilla


FSM en Verilog. Ejemplo
x Consideramos de nuevo el ejemplo del
ck z detector de la secuencia 1001 con
solapamiento
reset

1
1/0
0
0/0 B/0
B 1
1/0

A/0 1 1
A 1/0
C 0 C/0
0
0/0 1/1 E/1
1

0 D/0 0
0/0 D 0/0

Solución con máquina de Mealy Solución con máquina de Moore

Departamento de Tecnología Electrónica – Universidad de Sevilla


FSM en Verilog. Ejemplo Mealy.
module seq_mealy(
input wire ck, // reloj
input wire reset, // reset
input wire x, // entrada 1/0
output reg z // salida
); 0/0
1/0 B
// Codificación de estados
parameter [1:0]
A = 2'b00,
B = 2'b01, 1/0
C = 2'b11, A C
D = 2'b10; 0/0 1/1

// Variables de estado y próximo estado


reg [1:0] state, next_state;
0/0 D 0/0
// Proceso de cambio de estado
//(secuencial)

always @(posedge ck, posedge reset)


if (reset)
state <= A;
else
state <= next_state;

Departamento de Tecnología Electrónica – Universidad de Sevilla


FSM en Verilog. Ejemplo Mealy.
// Proceso de cálculo del nuevo estado // Proceso de cálculo de la salida
//(combinacional) //(combinacional)

always @* begin always @* begin


next_state = 2'bxx; if (state == D && x == 1)
case (state) z = 1;
A: if (x == 0) else
next_state = A; z = 0;
else end
next_state = B; endmodule // seq_mealy
B: if (x == 0)
next_state = C;
else 1/0
next_state = B;
C: if (x == 0) 0/0
next_state = D; 1/0 B
else
next_state = B;
D: if (x == 0)
next_state = A; 1/0
else A C
next_state = B; 0/0 1/1
endcase
end

0/0 D 0/0

Departamento de Tecnología Electrónica – Universidad de Sevilla


FSM en Verilog. Ejemplo Moore.
module seq_moore(
input wire ck, // reloj
input wire reset, // reset
input wire x, // entrada 1
output reg z // salida
); 0
// Codificación de estados 1 B/0
parameter [2:0]
A = 3'b000,
B = 3'b001,
A/0 1 1
C = 3'b010, C/0
D = 3'b011, 0 0
E = 3'b100; E/1
1
// Variables de estado y próximo estado
reg [2:0] state, next_state;
0 D/0 0
// Proceso de cambio de estado
//(secuencial)

always @(posedge ck, posedge reset)


if (reset)
state <= A;
else
state <= next_state;

Departamento de Tecnología Electrónica – Universidad de Sevilla


FSM en Verilog. Ejemplo Moore.
// Proceso de cálculo del nuevo estado // Proceso de cálculo de la salida
//(combinacional) //(combinacional)
always @* begin
next_state = 3'bxxx; always @* begin
case (state) if (state == E)
A: if (x == 0) z = 1;
next_state = A; else
else z = 0;
next_state = B; end
B: if (x == 0) endmodule // seq_moore
next_state = C;
else
next_state = B; 1
C: if (x == 0)
next_state = D; 0
else 1 B/0
next_state = B;
D: if (x == 0)
next_state = A;
A/0 1 1
else C/0
next_state = E; 0 0
E: if (x == 0) E/1
next_state = C; 1
else
next_state = B;
endcase 0 D/0 0
end

Departamento de Tecnología Electrónica – Universidad de Sevilla

También podría gustarte