Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Circuitos secuenciales
●
Introducción
●
Biestables
●
Máquinas de estados finitos y circuitos secuenciales
síncronos (CSS)
●
Análisis de CSS
●
Diseño de CSS
●
Estos sistemas no pueden implementarse usando
únicamente circuitos combinacionales: Se necesitan
componentes que “recuerden” cierta información sobre la
historia de las entradas (estado).
●
Ejemplo: Diseñe un circuito con una única salida que
valga 1 si y sólo si su única entrada ha valido alguna vez
1.
●
Para almacenar el estado de un sistema es necesario un
nuevo tipo de componente: el biestable.
●
Son el elemento básico de los circuitos secuenciales.
●
Poseen como mínimo una salida (salida de estado, q) que
permite conocer el estado en el que se encuentra el
biestable.
●
Poseen una o más entradas que hacen que sea posible
conmutar entre los dos estados estables denominadas
señales de excitación.
●
Un circuito con n biestables puede tener hasta 2n estados
distintos.
2
q2
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 R q 0
0 R q 1
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
S q qa S q ql S q qff
R R Rck
ck
ck
R
qa
ql
qff
ck 1 0 1
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);
ck 1 1 0
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);
q ts th
D
ck
CK
D
tCQ
q Q=1
D ?
q ? Q=?
D ?
q ? Q=?
●
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
PR
CL PR
q CL
D
ck D
CLK
PRESET
SINCRONO CLEAR PRESET
SINCRONO
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
z
generalización
x
señales señales
de de
entrada C.C. salida
q1 J1
K1
señales señales
ck de biestables de
estado excitación
q2 J2
ck
K2
ck
q1
q2
z
estado 1/0
A inicial C C D,0 B,0
0/0 1/1
D A,0 B,1
NS=δ(S, x),
0/0 D 0/0 z=l(S, x)
0 D/0 0 E C B 1
NS=δ(S, x)
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
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.
Circuito: biestables
y elem. combinacionales
Análisis combinacional
Funciones de
excitación/salida
Tabla de excitación/salida
Tabla de transición de
estados/salida
Definición de estados
Tabla de estados/salida
Diagrama de estados
Interpretación
Descripción verbal
J1 q1
z
K1
ck
J2 q2
x
K2
ck
Funciones de excitación/salida
J1 q1
z
K1
Tabla de excitación/salida
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
X X
q2q1 0 1 q2q1 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
S0 00 Definición de estados
S1 01
Tabla de estados/salida
S2 10 Diagrama de estados
S3 11
X X
q2q1 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
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
CLK
x
S0 S3 S3 S3 S1 S2 S2 S0 S3 S3 S1 S2
z
cl
CL
q1
x D1
y a
z
CL
J2 q2
K2
clk
clk
cl
x=J2
y=K2
D1
q1
q2
a
z
D1 = x ⊕ y
J2 = x; K2 = y
a = q1 x
z = a ⊕ q2
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
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 elementos combinacionales
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
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...
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
NS,z
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 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
Objetivo
Tabla de transición de
Seleccionar qué tipo de biestables
estados/salida almacenarán los bits del estado
codificado.
Elección de biestables Opciones
JK: reduce el coste de la parte
Tabla de excitación/salida
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)
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 00,0 01 1x,x0,0 0x,x1,0
Tabla de transición de
Tabla de excitación/salida
estados/salida
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
D1,D2,z
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
01 1x,x0,0 0x,x1,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 1 K1 = x + q2
J1K1,J2K2,z 11 x x 11 1 0 J2 = x
10 0 1 10 x x K2 = x q1+ x q1
J2 K2 z = x q1 q2
'
CL CL
J1 q1 J2 q2
x
K1 K2
ck ck
ck
01 1x,x0,0 0x,x1,0 J1 = x q2
K1 = x + q2 J1
CL
q1 J2
CL
q2
x
11 x0,x1,0 x1,x0,0 J2 = x
K1 K2
K2 = x q1+ x q1 ck ck
10 x1,0x,0 x1,1x,1 z = x q 1 q2 z
J1K1,J2K2,z ck
Descripción funcional
(enunciado)
Circuito
x ecs. q
c.c. biestables l z
exc. // Proceso de cambio de estado
// (secuencial)
always @(posedge ck, posedge reset)
if (reset)
state <= A;
Dos procesos else
state <= next_state;
Cambio de estado:
representa el bloque de
// Proceso de cálculo del nuevo estado
biestables // y salidas
Cálculo del próximo // (combinacional)
always @* begin
estado y z= .......;
salida(ecuaciones de case (state)
A:
excitación y salida) next_state = . . .;
Sólo el proceso de B:
Next_state = . . .;
cambio de estado es endcase
secuencial end
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
always @* begin
z=0;
next_state = 2'bxx;
case (state)
A: if (x == 0)
1/0
next_state = A;
else
0/0
next_state = B; 1/0 B
B: if (x == 0)
next_state = C;
else
next_state = B; 1/0
C: if (x == 0) A C
next_state = D;
0/0 1/1
else
next_state = B;
D: if (x == 0)
next_state = A;
else 0/0
begin
0/0 D
next_state = B;
z=1;
end
endcase
end