Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
Introducción
●
Diseñe un sistema de control de una puerta de un garaje con dos
pulsadores separados por una distancia.
– x: abrir la puerta.
– y: cerrar la puerta.
abrir (x)
puerta (z)
cerrar (y)
Contenidos
●
Introducción
●
Biestables (latches)
– Biestables
– Biestable SR asíncrono
– Biestables síncronos
– Entradas asíncronas
– Temporización
●
Máquinas de estados finitos y circuitos secuenciales síncronos (CSS)
●
Diseño de CSS
●
Análisis de CSS
1 0 0 1 0 1 1 0
Biestable SR asíncrono
●
La capacidad de almacenar información en los biestables se obtiene a
menudo usando “realimentación” de las salidas a las entradas del
circuito: el valor de salida refuerza el valor de entrada y viceversa.
●
Posibles estados estables:
– q1=0, q2=1
– q1=1, q2=0
●
Notación: q1 = q
– q = q2
– q = q1
q2 = q
S
q
q
R
Biestable SR asíncrono
●
R=S=0 se conserva el estado
0 S 0 S
q 1 q 0
0 R q 0 0 R q 1
●
S=1, R=0 cambio a 1 (set) S=0, R=1 cambio a 0 (reset)
1 0 S
S q 1
q 0
1 q 0
0 q 1 R
R
Biestables síncronos
●
Los circuitos reales pueden contener miles de millones de biestables. Es
muy útil poder controlar cuándo cambian de estado y hacer que lo
hagan al mismo tiempo.
●
Para ello, los cambios de estado se “sincronizan” con una “señal de
reloj” (CK, CLK, MCLK, etc.)
●
La señal de reloj suele ser periódica con cambios a una frecuencia
prefijada: “frecuencia de reloj”.
●
Biestables disparados por nivel (gated latches)
– El cambio de estado sólo es posible cuando la señal de reloj es 1 (nivel alto)
o 0 (nivel bajo).
●
Biestables disparados por flanco (flip-flops)
– El cambio de estado sólo es posible cuando la señal de reloj cambia de 0 a
1 (flanco positivo) o de 1 a 0 (flanco negativo).
– El cambio de estado se determina con precisión.
– Hace más simple y robusto el diseño de circuitos digitales.
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
input r,
r,
Rck
output
output reg
reg q);
q); ck 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
Biestables síncronos
S q qa S q ql S q qff
R R Rck
ck
Biestable JK
Verilog
module
module jkff(
jkff(
Tabla de excitación input
J q 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)
ck)
0→1 1x case
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
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
Biestable T
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
ck
Entradas asíncronas
CL PR CL PR CL PR CL PR
S q J q q q
D T
R K
ck ck ck ck
Temporización. Ejemplo
q
ts th D
ck
CK
Q=1
Q=X
D
Q=X
Q=0
Mealy/Moore
x Q q
δ estado ω z
x z x z
δ, ω C.C.
q Q q Q
estado biestables
ck
señales de control
señales de estado
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
NS,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
NS
x Q q
δ estado ω z
ck
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.
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
Tabla de estados mínima
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
q1q2 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)
(combinational)
elementos de memoria) 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
activo del reloj, usando la tabla de estados del biestable.
●
Comportamiento asíncrono: aplicar próximo estado según señales
asíncronas.
– Retrasos: los biestables tienen retrasos desde el reloj a la salida (síncrono) y
desde las entradas asíncronas a la salida (asíncrono): tck-q, tCL-q, etc.
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