Circuitos Secuenciales Síncronos en Electrónica
Circuitos Secuenciales Síncronos en Electrónica
Circuitos secuenciales
síncronos
Esta obra esta sujeta a la Licencia Reconocimiento-CompartirIgual 4.0 Internacional de Creative Commons. Para ver una copia de
esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/ o envíe una carta Creative Commons, PO Box 1866, Mountain
View, CA 94042, USA.
Contenidos
● Introducción
● Biestables (latches)
● Máquinas de estados finitos y circuitos secuenciales síncronos (CSS)
● Diseño de CSS
● Análisis de CSS
abrir (x)
puerta (z)
cerrar (y)
Introducción
● La mayoría de los problemas prácticos no pueden resolverse usando
sólo circuitos combinacionales.
● En muchos casos, la acción a realizar depende de las entradas y del
“estado” del sistema: la puerta está abierta, la luz está encendida, etc.
● Para “almacenar” el estado del sistema se necesitan nuevos elementos
de circuito: elementos de memoria.
● En esta unidad:
– Elementos de memoria.
– Concepto de “estado” y “circuito secuencial síncrono”.
– Técnicas de diseño y análisis de circuitos secuenciales síncronos.
Biestables (latches)
● Los circuitos biestables son circuitos que pueden ser permanecer en
uno de dos posibles estados estables.
● El estado del biestable se puede conocer por el valor de señales de
salida del circuito.
● El estado puede cambiarse actuando sobre entradas de control.
● Los biestables son elementos básicos de memoria: almacenan 1 bit.
● Con n biestables pueden “memorizarse” 2 n estados posibles.
1 0 0 1 0 1 1 0
q2 = q
Biestable SR asíncrono
● Además de tener dos estados estables necesitamos una forma simple
de forzar cada estado.
S
q
q
R
0 S 0 S
q 1 q 0
0 R q 0 0 R q 1
1 0 S
S q 1
q 0
1 q 0
0 q 1 R
R
Biestables síncronos
Biestable disparado por nivel Biestable disparado por flanco
module
module srl(
srl( S q module S q
input module srff(
srff(
input ck,
ck, input
input ck,
ck,
input
input s,
s, input
R input s,
s,
input
input r,
r, input Rck
output ck input r,
r,
output reg
reg q);
q); output
output reg
reg q);
q);
always
always @(ck,
@(ck, s,
s, r)
r) always
if always @(negedge
@(negedge ck)
ck)
if (ck
(ck ==
== 1)
1) case
case ({s,
({s, r})
r})
case
case ({s,
({s, r})
r}) 2'b01:
2'b01: 2'b01: qq <=
<= 1'b0;
1'b0;
2'b01: qq <=
<= 1'b0;
1'b0; 2'b10:
2'b10: qq <=
<= 1'b1;
1'b1;
2'b10:
2'b10: qq <=
<= 1'b1;
1'b1; 2'b11:
2'b11: 2'b11: qq <=
<= 1'bx;
1'bx;
2'b11: qq <=
<= 1'bx;
1'bx; endcase
endcase
endcase
endcase endmodule
endmodule endmodule
endmodule
S q qa S q ql S q qff
R R Rck
ck
Verilog
module
module jkff(
jkff(
J q
Tabla de excitación input
input ck,
ck,
input
input j,
j,
q→Q JK input
input k,
k,
K q output
output reg
reg q);
q);
ck 0→0 0x
always
always @(negedge
@(negedge ck)
0→1 1x case
ck)
case ({j,
({j, k})
k})
1→0 x1 2'b01:
2'b01: qq <=
<= 1'b0;
1'b0;
2'b10:
2'b10: qq <=
<= 1'b1;
1'b1;
1→1 x0 2'b11:
2'b11: qq <=
<= ~q;
~q;
endcase
endcase
endmodule
endmodule
Biestable D
ck
1 0 1
D=0
Q
Verilog
Tabla de excitación
q module
module dff(
dff(
input
input ck,
ck,
D q→Q D input
input d,
d,
q output
output reg
reg q);
q);
ck 0→0 0
0→1 1 always
always @(negedge
@(negedge ck)
ck)
qq <=
<= d;
d;
1→0 0
endmodule
endmodule
1→1 1
ck
1 1 0
T=1
Q
Verilog
Tabla de excitación
q module
module tff(
tff(
input
input ck,
ck,
T q→Q T input
input t,
t,
q output
output reg
reg q);
q);
ck 0→0 0
0→1 1 always
always @(negedge
@(negedge ck)
ck)
if
if (t
(t ==
== 1)
1)
1→0 1 qq <=
<= ~q;
~q;
1→1 0 endmodule
endmodule
Entradas asíncronas
● Forma fácil y directa de forzar un estado
CL
– CL (clear): puesta a 0 J q
– PR (preset): puesta a 1
K
● Efecto inmediato tras su activación: ck
– Activa en nivel bajo (0)
– Activa en nivel alto (1)
● Mayor prioridad que las entradas síncronas PR
– J, K, D, T, ... q
D
● Resuelven el problema de la inicialización en sistemas
digitales complejos ck
– Millones de biestables.
– Necesidad de comenzar a operar desde un estado
conocido.
CL PR
q
T
ck
CL PR CL PR CL PR CL PR
S q J q q q
D T
R K
ck ck ck ck
Temporización
● Las entradas síncronas no deben cambiar en las proximidades del
flanco activo del reloj para evitar un cambio de estado no deseado.
● Tiempo de Set-up (ts)
– Tiempo antes del flanco durante el que las entradas deben permanecer
estables.
● Tiempo de Hold time (th)
– Tiempo después del flanco durante el que las entradas deben permanecer
estables.
q
ts th D
ck
CK
Q=1
Q=X
D
Q=X
Q=0
Contenidos
● Introducción
● Biestables (latches)
● Máquinas de estados finitos y circuitos secuenciales síncronos
(CSS)
– Máquinas de estados finitos
– Circuitos secuenciales síncronos
– Representaciones formales
– Aplicaciones
● Diseño de CSS
● Análisis de CSS
Mealy/Moore
x Q q
δ biestables ω z
x z x z
δ, ω C.C.
q Q q Q
estado biestables
ck
x 0 1
1/0 S
0/0 A A,0 B,0
1/0 B
B C,0 B,0
1/0
A C C D,0 B,0
0/0 1/1
D A,0 B,1
Q,z
0/0 D 0/0
0
● Arcos
0 D/0
– Representan posibles transiciones desde
un estado dado (S).
– Etiqueta x: valor de entrada que da lugar a
la transición desde el estado S.
x
0 1 z
1 S
0 A A B 0
1 B/0
B C B 0
A/0 0 1 1
C/0 C D B 0
0
E/1
1 D A E 0
0 D/0 0 E A B 1
señales de control
señales de estado
Diseño de CSS
Objetivo
● Objetivo
– Definir una MSF que resuelva el problema planteado
– Implementar la máquina de estados usando un CSS
● Criterios de coste
– Minimizar el número de elementos de memoria (número de estados)
– Minimizar número de dispositivos (parte combinacional)
– Frecuencia de operación (garantizar una frecuencia mínima)
– Consumo de energía (no superar un consumo máximo)
– Etc.
● Se debe alcanzar un compromiso entre diferentes factores
Diseño de CSS
Procedimiento manual
Descripción verbal
Tabla de transición de estados
del problema
Diagrama de estados
Tabla de excitación
Tabla de estados
Traducción
● Ejemplo
– Diseñar un circuito con una entrada x y una salida z que detecte la llegada
de la secuencia “1001” en x. Cuando se detecta la secuencia, z permanece
a 1 durante un ciclo de reloj. Las secuencias pueden solaparse (el último 1
de una secuencia puede ser el primero de la siguiente).
x:
x: 00100111000011101001001001010011...
00100111000011101001001001010011...
x z
z:
z: 00000100000000000001001001000010...
00000100000000000001001001000010...
1/0 x
0 1
0/0 S
1/0 B A,0 B,0
A
B C,0 A,0
1/0
A C
0/0 1/1 C D,0 B,0
D A,0 B,1
0/0 D 0/0
Q,z
Reducción de estados
● Objetivo:
Tabla de estados
– Eliminar estados redundantes.
– Reducir el coste en número de biestables y lógica
Reducción de estados
combinacional.
de entrada.
Reducción de estados
Ejemplo 1
x
S 0 1
A B,0 C,0
x
B D,0 E,0 S 0 1
C G,0 E,0 a b,0 a,0
D H,0 F,0 b d,0 a,0
E G,0 A,0 d h,0 f,0
F G,1 A,0 f b,0 a,0
G D,0 C,0 h h,0 a,0
H H,0 A,0 NS, z
NS, z
x
0 1
S
A A,0 B,0
B C,0 A,0
C D,0 B,0
D A,0 B,1
Minimum state table
Q,z
Asignación de estados
● Objetivo:
Tabla de estados mínima
– Asignar valores binarios a los estados
(codificación de estados).
Asignación de estados
– Permite almacenar el estado en biestables.
● Selección de la codificación
Tabla de transición
– Afecta al resultado final: número de
de estados dispositivos, tamaño del circuito,
retraso/velocidad de operación, consumo de
energía, etc.
● Opciones típicas
– Algoritmos de asignación complejos:
optimizan el resultado final.
– Asignación arbitraria o aleatoria: circuitos
simples o cuando el coste no es importante.
– Un biestable por estado (codificación one-hot):
cuando no es importante minimizar el uso de
biestables. Uso típico en FPGA.
x x
0 1 S q1q0 0 1
S q1q2
A A,0 B,0 A 00 00 00,0 01,0
B 01
B C,0 A,0 01 11,0 00,0
C 11
C D,0 B,0 D 10 11 10,0 01,0
NS,z Q1Q2,z
Selección de biestables
Tabla de transición
● Objetivo
de estados – Seleccionar el tipo de biestables que
almacenarán el estado codificado.
Selección de biestables ● Opciones:
– JK: reduce el coste de la parte combinacional
pero necesita dos entradas de control.
Tabla de excitación – SR: más simple que el JK internamente, pero
menos flexible.
– D: Simplifica el diseño y reduce el número de
conexiones (una entrada de control).
– T: útil en aplicaciones con cambios de estado
frecuentes.
● Restricciones
– Sujeto a disponibilidad de biestables.
– Componentes discretos: JK, por flexibilidad y
simplificación de la parte combinacional.
– Diseño integrado (ej. FPGA): D, elemento básico
disponible.
q→Q JK
x 0→0 0x x
0 1 0 1
q1 q2 0→1 1x q1q2
00 00,0 01,0 1→0 0x 00 0x,0x,0 0x,1x,0
1→1 x0
01 11,0 00,0 01 1x,x0,0 0x,0x,0
Selección de biestables
Ejemplo: D
● Biestable D:
– El próximo estado es igual a D
– La excitación para alcanzar un próximo estado Q es: D = Q
Tabla de transición
Tabla de excitación
de estados
x
0 1
q1q2
00 00,0 01,0
01 11,0 00,0
11 10,0 01,0
10 00,0 01,1
Q1Q2,z
D1D2,z
Diseño combinacional
Puertas Multiplexores
+ + Etc.
Biestables Biestables
00 0 0 00 x x 00 0 0
x
01 1 0 01 x x 01 0 0
0 1
q1q2 11 x 0 11 0 x 11 0 0
00 0x,0x,0 0x,1x,0 10 0 0 10 x x 10 0 1
J1 K1 z
01 1x,x0,0 0x,0x,0
x x
11 x0,0x,0 0x,x0,0 q1q2 0 1 q1q2 0 1
00 0 1 00 x x J1 = xq2
10 0x,0x,0 0x,1x,1 K1 = 0
01 x 0 01 0 x
J1K1,J2K2,z 11 0 x 11 x 0 J2 = xq2
K2 = 0
10 0 1 10 x x
z = xq1q2
J2 K2
CL CL
J1 q1 J2 q2
x
0 K1 0 K2
ck ck
ck
Diseño de CSS
Resumen del ejemplo
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
J1 = xq2 CL
01 1x,x0,0 0x,0x,0
K1 = 0 CL CL
J1 q1 J2 q2
J2 = xq2 x
11 x0,0x,0 0x,x0,0 K1 0 K2
K2 = 0 0
ck ck
ck
J1K1,J2K2,z
no sí
¿ok? Síntesis automática Circuito
Configuración
//
// State
State change
change process
process (sequential)
(sequential)
x Q q always
δ biestables ω z always @(posedge
@(posedge ck,
ck, posedge
posedge reset)
reset)
if
if (reset)
(reset)
state
state <=
<= A;
A;
else
else
state
state <=
<= next_state;
next_state;
● Tres procesos
//
// Next
Next state
state calculation
calculation process
process
– Cambio de estado. Representa el //
// (combinational)
(combinational)
bloque de biestables. always
always @* @* begin
begin
case
case (state)
(state)
– Cálculo del próximo estado. A:
A:
Representa las funciones de next_state
next_state == .. .. .;
.;
próximo estado (δ) B:
B:
next_state
next_state == .. .. .;
.;
– Cálculo de la salida. Representa .. .. ..
las funciones de salida (ω). endcase
endcase
end
end
● Sólo el proceso de cambio de
estado es secuencial (incluye //
// Output
Output calculation
calculation process
process
//
// (combinational)
elementos de memoria) (combinational)
always
always @* @* begin
begin
zz == .. .. .;
.;
end
end
1
1/0
0
0/0 1 B/0
1/0 B
A/0 0 1 1
A 1/0
C C/0
0
0/0 1/1 E/1
1
0 D/0 0
0/0 D 0/0
Contenidos
● Introducción
● Biestables (latches)
● Máquinas de estados finitos y circuitos secuenciales síncronos (CSS)
● Diseño de CSS
● Análisis de CSS
– Análisis funcional
– Análisis temporal
Análisis funcional
Circuito: biestables y
elementos combinacionales
Análisis combinacional
Tabla de estados/
Diagrama de estados
Tabla de excitación
Traducción
Análisis de biestables
Descripción verbal
Definición de estados
J1 q1
z
K1
ck
J2 q2
x
K2
ck
Análisis temporal
● Objetivo: dado un CSS y un conjunto de señales de entrada, obtener las
señales de salida correspondientes y su evolución en el tiempo.
● Consideraciones
– Es posible analizar circuitos con biestables que no son CSS.
– Si el circuito es un CSS, la secuencia de estados/salida extraída del análisis
temporal debe corresponder con la secuencia de estados/salida de la MSF
que implementa.
● Similar al análisis temporal de circuitos combinacionales, añadiendo
biestables.
– Parte combinacional: idéntica.
– Biestables
● Comportamiento síncrono: aplicar el próximo estado en cada flanco
cl
CL
q1
x D1
y a
z
CL
J2 q2
K2
clk
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