Documentos de Académico
Documentos de Profesional
Documentos de 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.
x y
1 0 0 1 0 1 1 0
q2 = q
S
q
q
R
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
control
R
y
q
z
S
x
x y
module S q module
module srff( S q
module srl(
srl( srff(
input
input ck,
ck, input
input ck,
ck,
input
input s,
s, input
input s,
s,
R R
input
input r,
r, input
input r,
r, ck
output ck output
output reg
reg q);
output reg
reg q);
q); q);
always
always @(ck,
@(ck, s,
s, r)
r) always @(posedge
@(posedge ck)
always @(negedge ck)
if (ck ==
if (ck == 1)1) case ({s, r})
case ({s, r})
case
case ({s,
({s, r})
r}) 2'b01:
2'b01: qq <=
<= 1'b0;
1'b0;
2'b01:
2'b01: q <=
q <= 1'b0;
1'b0; 2'b10: q <= 1'b1;
2'b10: q <= 1'b1;
2'b10: q <= 1'b1;
2'b10: q <= 1'b1; 2'b11:
2'b11: qq <=
<= 1'bx;
1'bx;
2'b11:
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 R
ck
ck
Verilog
module
module jkff(
jkff(
Tabla de excitación input
J q input ck,
ck,
input j,
input 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: q <= ~q;
2'b11: 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
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 (t ==
if (t == 1) 1)
1→0 1 qq <=
<= ~q;
~q;
1→1 0 endmodule
endmodule
ck
ck ck ck
Schmitt trigger
CLK
VCC
VT+ VC
VIL VCL
t
CL = 0 CL = 1
qi → 0 qi = 0
CL PR CL PR CL PR CL PR
S q J q q q
D T
R K
ck ck ck ck
always
always @(posedge
@(posedge ck,
ck, negedge
negedge cl)
cl)
if
if (cl
(cl ==
== 1'b0)
1'b0)
qq <=
<= 1'b0;
1'b0;
else
else
case
case ({j,
({j, k})
k})
2'b01:
2'b01: q <=
q <= 1'b0;
1'b0;
2'b10: q <= 1'b1;
2'b10: q <= 1'b1;
2'b11:
2'b11: qq <=
<= ~q;
~q;
endcase
endcase
endmodule
endmodule
q ts th
D
ck
CK
D
tCQ
q Q=1
D ?
q ? Q=?
D ?
q ? Q=?
S1
S2
S3
...
x z x z
circuito
δ, ω
combinac.
q Q q Q
estado biestables
ck
señales de control
señales de estado
Descripción verbal
Tabla de transición de estados
del problema
Diagrama de estados
Tabla de excitación
Tabla de estados
Mealy/Moore
x Q q
δ estado ω z
ck
x
x:
x: 00100111000110111001001001010011...
00100111000110111001001001010011...
z
z:
z: 00000100000000000001001001000010...
00000100000000000001001001000010...
clk
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
Q,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
¡Ya es una tabla mínima!
Q,z
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 x
0 1 S q1q0 0 1
S q1 q2
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
NS,z Q1Q2,z
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 x1 00 0x,0x,0 0x,1x,0
1→1 x0
01 11,0 01,0 01 1x,x0,0 0x,x0,0
Tabla de transición
Tabla de excitación
de estados
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
D1D2,z
Diseño combinacional
Puertas Multiplexores
+ + Etc.
Biestables Biestables
00 0 0 00 x x 00 0 0
01 1 0 01 x x 01 0 0
x 11 x x 11 0 1 11 0 0
0 1
q1q2
10 x x 10 1 1 10 0 1
00 0x,0x,0 0x,1x,0
J1 K1 z
01 1x,x0,0 0x,x0,0
x x
q1 q2 0 1 q1q2 0 1
11 x0,x1,0 x1,x0,0
00 0 1 00 x x J1 = xq2
10 x1,0x,0 x1,1x,1 01 x x 01 0 0 K1 = x+q2
11 x x 11 1 0 J2 = x
J1K1,J2K2,z K2 = xq1
10 0 1 10 x x
z = xq1q2
J2 K2
CL
CL CL
J1 q1 J2 q2
x
K1 K2
ck ck
z
ck
J2 = x
CL CL
11 x0,x1,0 x1,x0,0 K2 = xq1 J1 q1 J2 q2
x
z = xq1q2 K1 K2
10 x1,0x,0 x1,1x,1 ck ck
J1K1,J2K2,z ck
x
x:
x: 001001110001101110010010010100110...
001001110001101110010010010100110...
z
z:
z: 000000100000000000001001001000010...
000000100000000000001001001000010...
clk
x
0 1 z
1 S
0 A A B 0
1 B/0
B C B 0
1
A/0 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
●
¿Cuántos biestables necesitamos?
●
¿Qué ocurre con los estados de los biestables no asignados?
●
¿Podría la máquina quedarse bloqueada en un estado no asignado?
●
¿Se puede resolver el posible bloqueo?
reset
A C
1/1 1/0
0/0 x 0 1 0 0 1 0
Mealy zmealy
1
Smoore A A B C D E C
B/0 0
1 zmoore
1
A/0 1
0 C/0
0
E/1
1 clk clk
0
0 D/0
Moore x 0 x 1
reset
A C
1/1 1/0
0/0 x 0 1 0 0 1 0
Mealy zmealy
1
Smoore A A B C D E C
B/0 0
1 zmoore
1
A/0 1
0 C/0
0
E/1
1
Zmealy se activa durante un tiempo
0
inferior a un ciclo de reloj
0 D/0
Moore
reset
A C
1/1 1/0
0/0 x 0 1 0 0 0 0
Mealy zmealy
1
Smoore A A B C D A A
B/0 0
1 zmoore
1
A/0 1
0 C/0
0
E/1
1
¡Zmealy se activa a pesar de no
0
detectar la secuencia correcta!
0 D/0
Moore
clk
reset
xs Mealy
q x
x 0 1 0 0 1 0
x D z
clk S A A B C D B C
clk
z
clk
xs 0 0 1 0 0 1
Ss A A A B C D B
zs
no sí
¿ok? Síntesis automática Circuito
Configuración
//
// Proceso
Proceso de
de cálculo
cálculo de
de próximo
próximo estado
●
Tres procesos estado
1/0 1
0/0 0
1/0 B 1 B/0
1
1/0 A/0 1
A C 0 C/0
1/1 0
0/0
E/1
1
Circuito: biestables y
elementos combinacionales
Tabla de estados/
Análisis combinacional
Diagrama de estados
Análisis de biestables
Definición de estados
reset
CL CL
J1 q1 J2 q2
x
1 K1 K2
z
clk
reset xn = x
CL CL J1 = xn q2
J1 q1 J2 q2
x K1 = 1
1 K1 K2 J2 = x
K2 = q1
z
clk z = x q1
reset
J2 = x
xn
J1
K 2 = q1
q2
posible azar
not
not #delay
#delay not1
not1 (x_neg,
(x_neg, x);
x);
and
and #delay
#delay and1
and1 (j1,
(j1, x_neg,
x_neg, q2);
q2);
reset jkff
jkff #(.delay(delay))
#(.delay(delay)) jkff1
jkff1
(.clk(clk), .cl(reset),
(.clk(clk), .cl(reset),
CL CL .j(j1),
.j(j1), .k(1'b1),
.k(1'b1), .q(q1));
.q(q1));
J1 q1 J2 q2
x
jkff
jkff #(.delay(delay))
#(.delay(delay)) jkff2
jkff2
1 K1 K2
(.clk(clk), .cl(reset),
(.clk(clk), .cl(reset),
.j(x),
.j(x), .k(q1),
.k(q1), .q(q2));
.q(q2));
z
clk and
and #delay
#delay and2
and2 (z,
(z, x,
x, q1);
q1);
endmodule
endmodule
reset
CL CL
J1 q1 J2 q2
x
1 K1 K2
z
clk
control
Señales:
x x: botón de apertura (0: no pulsado, 1: pulsado)
z
y: sensor de obstáculo (0: no, 1: sí)
y z: control puerta (0: cerrado, 1: abierto)