Você está na página 1de 39

Introducción a los sistemas secuenciales 217

________________________________________________________________________________

Capítulo 6 Introducción a los sistemas secuenciales

Los sistemas digitales secuenciales fueron presentados brevemente en el capítulo 1, cuya relectura se
recomienda llegados a este punto. En un sistema secuencial el valor de la salida en un cierto instante
de tiempo depende no solamente del valor de la entrada en dicho instante sino de los valores
anteriores que ésta ha tomado. Por ello es intuitivo pensar que el estudio y comprensión de los
sistemas secuenciales es, a priori, más complejo que el de los sistemas combinacionales.

Este capítulo presenta los conceptos fundamentales necesarios para abordar el análisis y diseño de
sistemas secuenciales. En primer lugar se presenta el concepto de estado y su utilización en la
especificación de sistemas secuenciales. A continuación se discute el problema de la sincronización,
es decir, cómo abordar la inclusión de la variable tiempo en el funcionamiento del sistema. Por último
se presentan los biestables, vistos como ejemplos sencillos de circuito secuencial y también como
elementos a utilizar en la implementación de circuitos secuenciales de mayor complejidad.

6.1 Especificación de sistemas secuenciales

Como se ha indicado anteriormente, un primer objetivo de este capítulo es proporcionar herramientas


que permitan describir (especificar) de forma normalizada y, a ser posible, cómoda el funcionamiento
de un sistema secuencial. Por este motivo se trabajará a nivel funcional, siendo el sistema
básicamente una "caja negra" con sus entradas y salidas, y dejando para apartados posteriores
aspectos como las estrategias de temporización y las posibles implementaciones circuitales del
sistema

Así, se presenta el concepto de estado del sistema para describir la secuencia temporal de entradas, y
el uso de éste en la especificación de dicho sistema. El punto 6.1.4, referido a la minimización del
número de estados en la especificación de un sistema secuencial, aunque es de importancia,
constituye una pequeña disgresión dentro del esquema lógico seguido. Por este motivo su estudio
puede posponerse a una segunda lectura del capítulo, cuando los conceptos fundamentales sobre
sistemas secuenciales hayan sido asimilados.

© los autores, 1998; © Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorización escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproducción total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografía y el tratamiento
informático, y la distribución de ejemplares de ella mediante alquiler o préstamo públicos, así como la exportación e importación de ejemplares para su
distribución y venta fuera del ámbito de la Unión Europea.
218 Diseño digital
________________________________________________________________________________

6.1.1 Concepto de estado

Como se ha dicho, en un sistema secuencial el valor de la salida en un instante z(t0) depende tanto del
valor de la entrada en ese instante, x(t0), como de valores anteriores, x(t<t0), luego podemos escribir

x Sistema z z(t0 ) = F (x (−∞,t0 ))


Digital

Es evidente que un sistema así necesita recordar un número en principio ilimitado de entradas para
generar cada salida, es decir, implica una capacidad de memorización infinita, cosa que impide su
realizabilidad a nivel práctico. Por este motivo introduciremos una restricción importante:
trabajaremos solamente con aquellos sistemas secuenciales en los cuales las posibles evoluciones
temporales de la entrada se puedan agrupar en un número finito de tipos, llamados "estados", y que,
desde el punto de vista funcional, todas las evoluciones de la entrada pertenecientes a un mismo
estado son equivalentes.

Con la finalidad de simplificar la notación, en adelante llamaremos por defecto sistemas secuenciales
a aquéllos cuyo funcionamiento puede describirse mediante un número finito de estados, que con
mayor rigor deberían ser denominados autómatas o máquinas de estados finitos.

Ejemplo 6.1

Sea un sistema digital como el de la figura 6.1, cuya entrada recibe una serie arbitraria de valores
enteros entre 0 y 3, tomando su salida el valor "a" cuando la suma de los valores recibidos a la
entrada sea múltiplo de 2, y el valor "b" cuando no lo sea. Es claro que este sistema es secuencial
puesto que el valor de la salida en un instante dado depende de todas las entradas recibidas hasta
ese instante y no sólo de la última de ellas.

Sistema x ∈ {0, 1, 2, 3}
x z
Digital z ∈ {a, b}

Figura 6.1 Sistema del ejemplo 6.1

Veamos si es posible especificar el funcionamiento de este sistema como una máquina de estados
finitos. Para ello obsérvese que para generar la salida no es necesario que el sistema almacene o
"recuerde" la secuencia completa de entradas recibidas (que es en principio ilimitada), y que
tampoco es necesario que almacene el valor de la suma de las entradas (que puede hacerse
prácticamente infinito), sino que le basta con saber si esta suma es par (múltiplo de 2) o no.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 219
________________________________________________________________________________

Supongamos por ejemplo que la suma de los valores recibidos, excluyendo el último, sea par,
cosa que indicamos definiendo una variable de estado (s) y haciendo que ésta tome el valor "par";
si el último valor recibido es x=0, es evidente que la suma total de los valores recibidos sigue
siendo par, por lo que la salida será y=a. Lo mismo pasaría si el último valor recibido fuese x=2,
pero si este valor fuera x=1 o x=3 tendríamos una suma total impar, por lo que en ambos casos la
salida generada sería z=b.

Si por el contrario suponemos que la suma de entradas recibidas (excepto la última) es impar,
cosa que indicaremos haciendo s=impar, y se recibe como última entrada x=0 o x=2, la salida en
ambos casos será z=b (suma total impar). En cambio, si la última entrada recibida es x=1 o x=3,
la salida será z=b (suma total par).

Por otra parte, si la variable de estado recoge el efecto de las entradas anteriores sobre el
comportamiento del sistema, es evidente que el valor de esta variable se verá afectado por la
última entrada; por ejemplo, si se tiene s=par y x=1, la salida será z=b (suma impar) y el estado
"siguiente", es decir el que incluirá está última entrada, será s=impar. En consecuencia los valores
de la entrada (x) y del estado (s) determinan unívocamente tanto el valor de la salida (z) como el
valor del estado siguiente (llamémoslo s(t+∆t) o, simplemente, s+).

s x s+ z
a) b)
par 0 par a
par 1 impar b
tiempo
par 2 par a
x 0 3 2 1 3 ...
par 3 impar b
s par par impar impar par impar
impar 0 impar b
z a b b a b ...
impar 1 par a
impar 2 impar b
impar 3 par a

Figura 6.2 Comportamiento del sistema del ejemplo 6.1

La figura 6.2.a ilustra el comportamiento del sistema en función del tiempo para una cierta
secuencia de entradas (0,3,2,1,3,..) a partir de un estado inicial s=par. La figura 6.2.b muestra por
su parte la tabla de verdad de la salida del sistema (z) y del estado futuro (s+) en función de la
entrada (x) y del estado (s) del sistema.

La tabla de la figura 6.2.b permite concluir que es posible describir completamente el


funcionamiento de un sistema secuencial especificando mediante tabla de verdad, expresiones
algebraicas u otros métodos ya conocidos y utilizados anteriormente para los sistemas
combinacionales, dos funciones de las mismas variables, z=f(s,x) y s+=g(s,x), a las cuales
llamaremos respectivamente función de salida y función de transición de estados.
_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


220 Diseño digital
________________________________________________________________________________

Ejercicio 6.1

Un sistema secuencial tiene dos posibles valores de entrada, A y B. Queremos que el sistema
detecte secuencias de tres entradas iguales. Decida los estados posibles, y describa el
funcionamiento del sistema a través de una tabla.
_________________________________________________________________________________

Ejemplo 6.2

El ejemplo 6.1 ilustra claramente cómo la utilización de una variable de estado es una valiosa
ayuda a la hora de especificar (describir) el funcionamiento de un sistema secuencial. En dicho
ejemplo la variable toma un número finito de valores (en concreto, dos); sin embargo, es fácil
imaginar sistemas cuya variable de estado tendría que tomar infinitos valores: sea un sistema
digital con una entrada y una salida en que ambas pueden tomar dos valores, "0" y "1". La salida
toma el valor "1" cuando la entrada haya tomado el mismo número de veces el valor "0" que el
valor "1", y "0" en los demás casos.

Sistema x ∈ {0, 1}
x z
Digital z ∈ {0, 1}

Figura 6.3 Sistema del ejemplo 6.2

Si el sistema tiene que detectar cuándo la entrada ha tomado el mismo número de veces el valor
"0" que el valor "1" quiere decir implícitamente que debe contar cuántas veces más ha tomado un
valor que otro. Esto se podría hacer mediante una variable de estado, que por ejemplo podría
indicar cuántas veces más toma la entrada el valor "1" que el "0". Sin embargo, en ausencia de
otras restricciones el número de estados no está limitado: imaginemos por ejemplo que en la
entrada se recibe una secuencia indefinida de "1", necesitaríamos que la variable de estado
pudiera tomar un número ilimitado de valores. Diremos entonces que este sistema no es
realizable en forma de máquina de estados finitos.
_________________________________________________________________________________

6.1.2 Especificación basada en el estado

Al igual que ocurría en un sistema combinacional, la especificación de un sistema secuencial implica


indicar de forma unívoca sus posibles excitaciones, y las respuestas que éstas provocan
(funcionalidad del sistema).

Así la especificación de un sistema secuencial (entendido como máquina de estados finitos) puede
hacerse de forma sistemática si se conocen los conjuntos de posibles entradas, salidas y estados, más

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 221
________________________________________________________________________________

las dos funciones que relacionan estos tres conjuntos entre sí: la función de salida y la función de
transición de estados. La figura 6.4 muestra este tipo de especificación utilizando un lenguaje más
formal.

Sistema
x Secuencial z
[s]

x ∈ X, s ∈ S, z ∈ Z
X= Conjunto finito de entradas
F: X, S Z S= Conjunto finito de estados
z = f(x, s) Z= Conjunto finito de salidas
F= Función de salida
G: X, S G= Función de transición de estados
S s+=g(x, s)

Figura 6.4 Especificación de un sistema secuencial basada en el estado

Las entradas son los datos que recibe el sistema del exterior, los estados pueden considerarse como
datos generados por el mismo sistema y utilizados internamente por éste (por tanto no accesibles
desde el exterior), y las salidas como los resultados transmitidos al exterior. Las funciones de salida y
de transición de estados se asocian con el tratamiento y generación de datos realizado por el sistema.

Ejemplo 6.3

Vamos a hacer la especificación de un sistema que indica si, en los sucesivos lanzamientos de una
moneda al aire, el número de veces que ha salido "cruz" es par o impar. Se trata obviamente de
un sistema secuencial, para el que se puede suponer que tanto el conjunto de entradas como el de
salidas constan de sólo dos elementos, por ejemplo

X = {cara, cruz } Z = {0,1}

Parece razonable pensar que el sistema debe ser capaz de memorizar el resultado de los
lanzamientos efectuados (anteriores al último) en dos grupos o estados, el primero de los cuales
comprendería, por ejemplo, las evoluciones en que el número de veces que se ha recibido la
entrada "cruz" sea par, mientras que el otro grupo reuniría las secuencias que conducen a un
número impar de entradas "cruz". Luego tendremos dos estados posibles

S = {par, impar}

Para terminar de especificar el sistema es necesario indicar cuál es el valor de la salida para cada
posible valor de la entrada y del estado (función de salida) y cómo se actualiza el estado en
función de su valor anterior y del de la entrada (función de transición de estados). Si por ejemplo

© los autores, 1998; © Edicions UPC, 1998.


222 Diseño digital
________________________________________________________________________________

asignamos la salida "1" cuando el número de cruces aparecidas sea impar, la tabla de verdad para
ambas funciones será la de la figura 6.5.a.

entrada actual (x)


a) s x s+ z b)
cara cruz
par cara par 0 par par,0 impar,1
par cruz impar 1 impar impar,1 par,0
impar cara impar 1
impar cruz par 0 estado actual (s) estado futuro (s+ )
y salida (z)

Figura 6.5 Tablas de verdad del sistema del ejemplo 6.3

En la figura 6.5.b se muestra la misma información que en la 6.5.a utilizando una tabla de doble
entrada, de forma que en cada casilla especificamos el valor actualizado del estado y la salida;
así, por ejemplo, si el estado actual es "par" y la entrada es "cara", el estado próximo seguirá
siendo "par" y la salida "0". Dado su formato más compacto utilizaremos preferentemente este
segundo tipo de tabla en lo sucesivo.
_________________________________________________________________________________

Ejercicio 6.2

Especifique el sistema propuesto en el problema P1.2 usando los dos tipos de tablas presentadas
en el ejemplo anterior.
_________________________________________________________________________________

6.1.3 Diagrama de estados

Una forma alternativa y posiblemente más intuitiva de especificar el funcionamiento de un sistema


secuencial es el diagrama de estados. El diagrama de estados es una forma gráfica, equivalente a las
tablas anteriormente mencionadas, de representar la información relativa a la función de salida y a la
función transición de estados. Por tanto debe quedar claro que no contiene información adicional.

El diagrama de estados está compuesto por una serie de nodos y arcos. Cada nodo representa un
posible estado del sistema (por tanto hay tantos nodos en el diagrama como estados posibles),
mientras que los arcos unen los nodos entre sí de forma direccionada (suelen representarse mediante
flechas). Así la interpretación del esquema de la figura 6.6 es la siguiente: si el estado actual del
sistema es s=A y la entrada es x, la salida toma el valor z y el sistema pasará al estado s+=B. Nótese
que de cada nodo del diagrama salen tantos arcos como combinaciones de entrada diferentes sean
posibles.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 223
________________________________________________________________________________

x/z z = f ( A, x )
A B
B = g( A, x )

Figura 6.6 Fragmento de un diagrama de estados

Evidentemente cualquier especificación basada en el estado, ya sea en forma de tablas o de diagrama


de estados, puede hacerse tanto a nivel discreto (tal como se hace en la mayoría de los ejemplos de
este capítulo) como, mediante codificación de las entradas, estados y salidas, a nivel binario o de
variables lógicas.

Ejemplo 6.4

Vamos a construir el diagrama de estados del sistema del ejemplo 6.3. Su generación a partir de
la tabla de verdad de la figura 6.5.b es inmediata: sólo hay que dibujar tantos nodos como estados
tiene el sistema (en este caso dos: par e impar) y tantos arcos partiendo de cada nodo
(transiciones y salidas) como entradas posibles tiene el sistema (en este caso también dos: cara o
cruz).

Cruz/1

Par Impar
Cara/0 Cara/1
Cruz/0

Figura 6.7 Diagrama de estados del ejemplo 6.4

_________________________________________________________________________________

Ejercicio 6.3

Construya el diagrama de estados del sistema descrito en el ejercicio 6.1.

_________________________________________________________________________________

Ejemplo 6.5

Obtener la tabla de verdad y el diagrama de estados de un sistema secuencial cuya entrada puede
tomar cinco valores distintos (X={a,b,c,d,e}), correspondientes a las cinco opciones entre las que
el usuario puede escoger pulsando un pequeño teclado, y cuya salida puede tener dos valores
(Z={s,n}), que permiten o no el acceso a una zona de seguridad. El funcionamiento del sistema es

© los autores, 1998; © Edicions UPC, 1998.


224 Diseño digital
________________________________________________________________________________

tal que, si se pulsan consecutivamente las teclas "a","d" y "b", se habilita el acceso (z=s), mientras
que en cualquier otro caso éste permanece inhabilitado (z=n).

Parece claro que basta con saber hasta qué punto las entradas antepenúltima y penúltima se
parecen a la secuencia clave: esta información más la última entrada (tercer componente de la
secuencia) permite determinar qué salida se tiene que generar.

Luego podemos definir un conjunto de tres estados S={S0,S1,S2}:

Estado Significado
S0 Se ha recibido una secuencia tipo "-, -", que en nada
coincide con la clave.
S1 Se ha recibido una secuencia tipo "-, a", que coincide
con el principio de la clave.
S2 Se ha recibido una secuencia "a, d", que coincide
con la clave.

Que a su vez permite confeccionar la tabla de verdad y/o el diagrama de estados del sistema (ver
figura 6.8).

a/n
S S
a b c d e 0 1
S0 S 1,n S 0,n S 0 ,n S 0 ,n S 0,n b,c,d,e/n b,c,e/n a/n
d/n
S1 S 1,n S 0,n S 0 ,n S 2 ,n S 0,n a/n
b/s
S2 S 1,n S 0,s S 0 ,n S 0 ,n S 0,n c,d,e/n
S
2

Figura 6.8 Tabla de verdad y diagrama de estados del sistema del ejemplo 6.5

La especificación dada en la figura 6.8 ha sido obtenida a partir de un razonamiento concreto,


pero es necesario puntualizar que enfoques alternativos pueden conducir a especificaciones
diferentes para el mismo sistema; por ejemplo podríamos definir un conjunto de cuatro estados
S={S0,S1,S2,S3} en base a que el sistema sea capaz de recordar las tres últimas entradas
recibidas:

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 225
________________________________________________________________________________

Estado Significado
S0 Las últimas entradas recibidas componen la secuencia
"-, -, -", que en nada coincide con la clave.
S1 Las últimas entradas recibidas componen la secuencia
"-, -, a", que coincide con el principio de la clave.
S2 Las últimas entradas recibidas componen la secuencia
"-, a, d", que coincide con parte de la clave.
S3 Las últimas entradas recibidas componen la secuencia
"a, d, b", que coincide con la clave completa.

Podemos notar que con estos cuatro estados la función de salida es del tipo z=f(s), es decir, la
salida depende únicamente del estado y no directamente de la entrada. Esta situación permite
especificar el funcionamiento del sistema mediante una tabla de verdad algo más sencilla (ver
figura 6.9), donde podemos indicar la salida en una columna aparte. En el diagrama de estados
podemos indicar la salida en los nodos (ver figura 6.9).

b,c,d,e

S /n
x 0 a
s a b c d e z
b,c,d,e
S0 S1 S0 S0 S0 S0 n
S1 S1 S0 S0 S2 S0 n b,c,e
S /s a S /n
3 1
S2 S1 S3 S0 S0 S0 n
a
S3 S1 S0 S0 S0 S0 s a d
c,d,e

b S 2/n

Figura 6.9 Segunda tabla de verdad y diagrama de estados del sistema del ejemplo 6.5

El tipo de especificación mostrada en la figura 6.9 (con z=f(s)) se denomina máquina de Moore.
Una especificación como la dada en la figura 6.8 (con z=f(s,x)), se denomina máquina de Mealy.
Un comportamiento entrada-salida dado puede especificarse siempre de ambas maneras. Además,
como se verá más adelante, estas dos variantes de especificación conducen a realizaciones
circuitales características.
_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


226 Diseño digital
________________________________________________________________________________

Ejercicio 6.4

Proponga un diagrama de estados de tipo Mealy para un sistema igual que el descrito en el
ejemplo 6.5, que detecte la secuencia de entrada de 4 carácteres "a,a,d,e". Repita el ejercicio para
la secuencia "b,a,b,d", con uno de Moore.

__________________________________________________________________________

6.1.4 Equivalencia de estados

El ejemplo 6.5 ilustra la existencia de dos especificaciones diferentes de un mismo sistema


secuencial. En realidad se puede ir aún más lejos: un mismo sistema, es decir, un mismo
comportamiento entrada-salida, puede especificarse de innumerables maneras sin más que utilizar
diferentes conjuntos de estados.

Por tanto dado un sistema secuencial tiene su interés, si más no por sencillez, poder trabajar con la
especificación mínima de dicho sistema, entendiendo como tal aquélla que utiliza el menor número
posible de estados. En el capítulo 7 veremos que esto tiene implicaciones directas sobre la
complejidad de implementación del sistema.

Vamos, pues, a introducir un método sistemático que permite obtener la especificación mínima a
partir de otra cualquiera de un sistema secuencial. Este método se basa en eliminar sucesivamente los
estados que son redundantes o equivalentes entre sí.

Concretando más, diremos que dos estados son equivalentes cuando el sistema genera la misma
secuencia de salidas para cualquier secuencia de entradas dada, partiendo de cada uno de ellos, siendo
imposible distinguirlos entre sí. Diremos además que dos estados son n-equivalentes cuando,
tomándolos como iniciales, no es posible distinguirlos entre sí después de aplicar cualquier secuencia
de n entradas (es decir, cuando a partir de ellos se genera siempre la misma secuencia de n salidas al
aplicar la misma secuencia de n entradas).

El método se puede esquematizar en los siguientes pasos:

I) Tomando como referencia el conjunto inicial de estados, al que llamaremos


partición inicial o p0, generar una nueva partición (p1) compuesta de varios grupos de estados,
de modo que cada grupo esté formado por los estados que es imposible distinguir tras una
única entrada (estados 1-equivalentes). Esto es fácil de hacer a partir de la función de salida:
mirando la tabla de verdad del sistema fila a fila, hay que agrupar los estados (filas) cuyas
salidas sean idénticas.

II) Tomando como referencia la partición p1 (estados 1-equivalentes), obtener la


partición p2 (estados 2-equivalentes). Esto es fácil de hacer si se repara en que dos estados son
2-equivalentes cuando sus estados futuros son 1-equivalentes, luego hay que particularizar la

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 227
________________________________________________________________________________

función de transición de estados para cada grupo de p1; si para cada valor de la entrada el
estado futuro pertenece siempre a un mismo grupo no hace falta dividir el grupo: los estados
de dicho grupo son a la vez 1-equivalentes y 2-equivalentes. En caso contrario hay que generar
tantos grupos nuevos como comportamientos diferentes se observen.

III) Repetir el paso II para generar la partición pi+1 (grupos de estados i+1-
equivalentes) a partir de la pi (grupos de estados i-equivalentes) hasta obtener dos particiones
seguidas idénticas, momento en el que el proceso finaliza.

IV) La especificación mínima del sistema se obtiene particularizando la tabla de


verdad y/o el diagrama de estados inicial para un estado o representante de cada grupo de la
última partición.

Aunque aparentemente se trata de un método complejo, en realidad su aplicación resulta ser muy
sencilla, como puede comprobarse en el ejemplo 6.6.

Ejemplo 6.6

Sea un sistema cuya entrada recibe una secuencia de bits y que genera la salida "1" únicamente
cuando la secuencia recibida es "1,1,0".

0/0

S 1/0
00
0/0
S S
0 1/0 01
0/0 0/0
S in 1/0 0/0
1/0
1/0
0/0
S1 S
10
1/0
S 11 0/1

1/0

Figura 6.10 Diagrama de estados inicial del sistema del ejemplo 6.6

© los autores, 1998; © Edicions UPC, 1998.


228 Diseño digital
________________________________________________________________________________

Un posible diagrama de estados para este sistema es el de la figura 6.10, obtenido partiendo de un
estado inicial Sin desconocido, del cual se pasa a S0 o a S1 en función del valor recibido a la
entrada. Desde S0 y/o S1 este esquema se repite, de manera que, partiendo de Sin o de cualquier
otro estado, se llega a los estados Sij cuando los dos últimos valores de la entrada son "i" y "j"
respectivamente. La salida será "0" para todas las posibles transiciones, excepto cuando, siendo el
estado actual S11, se reciba la entrada "0", caso en que se habrá recibido la secuencia que produce
la salida "1".

Es obvio que puede proponerse un sinnúmero de conjuntos y diagramas de estados alternativos


que reconozcan la secuencia pedida; en este sentido nótese que el sistema que nos ocupa es
similar del ejemplo 6.5 y que, por tanto, su especificación mediante un conjunto menor de
estados es viable. Vamos a comprobar este último extremo aplicando el método de minimización
propuesto más arriba; para ello comencemos escribiendo la tabla de verdad de las funciones de
salida y de transición de estados (figura 6.11).

s x=0 x=1
S in S 0 ,0 S 1 ,0
S0 S 00 ,0 S 01 ,0
S1 S 10 ,0 S 11 ,0
S 00 S 00 ,0 S 01 ,0
S 01 S 10 ,0 S 11 ,0
S 10 S 00 ,0 S 01 ,0
S 11 S 10 ,1 S 11 ,0

Figura 6.11 Tabla de verdad inicial del sistema del ejemplo 6.6

Si atendemos a los valores de la función de salida obtenemos una primera partición en dos grupos
de los siete estados iniciales: sólo a partir de S11 se generan unas salidas diferentes a las
generadas a partir del resto de estados; por tanto

p1 = (Sin , S0 , S1 , S00 , S01 , S10 )(S11 )

Del estado S11 no hace falta ocuparse más puesto que ha quedado aislado y por tanto seguro que
no es equivalente a ningún otro. Ahora vamos a generar la segunda partición, para ello tomamos
la tabla de transición de estados para el primer grupo de p1

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 229
________________________________________________________________________________

s x=0 x=1
S in S0 S1
S0 S 00 S 01
S1 S 10 S 11
S 00 S 00 S 01
S 01 S 10 S 11
S 10 S 00 S 01

Observando la tabla vemos que los estados futuros correspondientes a Sin, S0, S00 y S01
pertenecen siempre al mismo grupo de p1 (en concreto se llega a S0, S1, S00, y S01), tanto para
x=1, como para x=0. En cambio los estados futuros correspondientes a S1, y S01 pertenecen al
mismo grupo anterior para x=0 y al otro grupo (el formado únicamente por S11) para x=0. Luego
la segunda partición del conjunto de estados será

p2 = (Sin ,S0 ,S00 , S10 )(S1 ,S01 )(S11 )

Ahora debemos reescribir la tabla de transición de estados para cada uno de los grupos de p2 con
el objetivo de analizar el comportamiento de sus estados futuros respecto de la nueva partición y
ver si se tiene que hacer o no divisiones adicionales.

s x=0 x=1
S in S0 S1 s x=0 x=1
S0 S 00 S 01 S1 S 10 S 11
S 00 S 00 S 01 S 01 S 10 S 11
S 10 S 00 S 01

En la tabla de la izquierda no es posible hacer más divisiones: sea cual sea el estado de partida
(Sin, S0 ,S00,ó S01) para x=0 el estado futuro pertenece al primer grupo de p2 y para x=1 el estado
futuro pertenece al segundo grupo de p2. Algo similar ocurre con la tabla de la derecha; por tanto,
la tercera partición del conjunto de estados será

p2 = (Sin ,S0 ,S00 , S10 )(S1 ,S01 )(S11 )

© los autores, 1998; © Edicions UPC, 1998.


230 Diseño digital
________________________________________________________________________________

Como las dos últimas particiones son iguales, el método ha finalizado y se puede especificar el
sistema inicial con solamente tres estados. Para ello basta con tomar un representante de cada
grupo de p3, por ejemplo A=Sin=S0=S00=S10, B=S1=S01 y C=S11, y reescribir en función de
estos tres estados la tabla del sistema y el diagrama de estados (figura 6.12).

1/0
s x=0 x=1
0/0 A B 1/0 C 1/0
A A, 0 B, 0
B A, 0 C, 0 0/0
C A, 1 C, 0
0/1

Figura 6.12 Especificación mínima del sistema del ejemplo 6.6

_________________________________________________________________________________

Ejercicio 6.5

Para un cierto sistema se ha propuesto la siguiente tabla de transición entre estados:

estado x=-1 x=0 x=1


S0 S3,1 S0,1 S4,0
S1 S0,1 S0,0 S3,1
S2 S4,1 S6,1 S3,0
S3 S4,1 S2,0 S1,1
S4 S2,1 S5,1 S0,0
S5 S2,1 S4,0 S1,1
S6 S2,1 S2,0 S1,1

Encuentre, para este sistema, un diagrama de estados equivalente mínimo.


_________________________________________________________________________________

6.2 Sincronización de sistemas secuenciales

Hasta aquí se ha mantenido, por omisión deliberada, una total ambigüedad respecto a los aspectos
temporales básicos de los circuitos secuenciales. En particular se podrían plantear las siguientes
preguntas: si el estado se actualiza en función del estado anterior y de la entrada, ¿en qué momento
concreto se lleva a cabo esta actualización? ¿A partir de cuándo el valor de la entrada, salida o estado
se considera que es el valor "siguiente"?

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 231
________________________________________________________________________________

Es evidente que la respuesta a este tipo de preguntas no es trivial y que, llegados a este punto, es
necesario introducir los aspectos temporales y/o de sincronización.

6.2.1 Sistemas secuenciales síncronos y asíncronos

Una primera clasificación de los sistemas secuenciales en función de su comportamiento temporal nos
llevará a dos grandes grupos o tipos: los sistemas síncronos y los asíncronos.

Un sistema secuencial es asíncrono cuando su funcionamiento temporal es libre, es decir, cuando la


variación de entradas, estados y salidas no está sometida a ninguna restricción externa. Las únicas
restricciones temporales existentes en un sistema asíncrono son de origen interno (e inevitable) y son
debidas a los retardos de los elementos físicos que lo componen.

El segundo grupo lo consituyen los sistemas síncronos, los cuales incluyen un control temporal de
tipo restrictivo (sincronización) en su funcionamiento: el estado y la salida del sistema pueden
cambiar únicamente cuando lo permite una señal externa de referencia llamada reloj (CLOCK). La
forma ideal de la señal de reloj es un tren periódico de impulsos, que indican los instantes de tiempo
en los que es posible el cambio de estado y de salida.

a)
clock

x(t)

S(t)

z(t)

b)
clock

x(t)

S(t)

z(t)

Figura 6.13 Evolución temporal de las señales en un sistema síncrono con la


entrada variando de forma libre (a) o sincronizada con el reloj del sistema (b)

© los autores, 1998; © Edicions UPC, 1998.


232 Diseño digital
________________________________________________________________________________

Es evidente que, a priori, un sistema secuencial asíncrono es más rapido que uno síncrono; esto es así
porque en el sistema síncrono los cambios siempre tienen que esperar a producirse en los instantes en
que ésto está permitido, con las consiguientes demoras. A su vez el comportamiento de un sistema
asíncrono es muy sensible al retardo de sus componentes, problema que se agrava notablemente
cuando aumenta su tamaño o su complejidad, razón que hace que los sistemas asíncronos sean muy
poco utilizados en la práctica. En este texto centraremos nuestra atención casi exclusivamente en los
sistemas secuenciales síncronos.

En la figura 6.13.a se muestra un ejemplo de evolución temporal de un sistema síncrono gobernado


por un reloj ideal. De acuerdo con esta señal, el estado y la salida cambian únicamente en los
instantes de tiempo coincidentes con los impulsos. Con ello se consigue que, como máximo, haya un
cambio por cada período de reloj. Se ha supuesto que los retardos del sistema son prácticamente
inapreciables.

Consideremos a efectos de exploración de posibilidades el caso particular de un sistema síncrono


donde también la entrada cambiase sólo en los instantes fijados por el reloj. Un ejemplo de
cronograma del comportamiento de este tipo de sistema sería el de la figura 6.13.b, donde el valor de
cada una de las señales se mantiene constante como mínimo el tiempo que transcurre entre dos
impulsos consecutivos del reloj (es decir, un período de reloj). En estas condiciones es muy sencillo
hacer una interpretación del comportamiento del sistema, no en función de la variable continua "t"
(tiempo) sino de la variable discreta "i" (instante de cambio, i=0,1,2,3,..), tal como se muestra en la
figura 6.14.

0 1 2 3 ...

x(0) x(1) x(2) x(3) ...

...
S(0) S(1) S(2) S(3)

...
z(0) z(1) z(2) z(3)

Figura 6.14 Discretización del tiempo en un sistema síncrono

En estas condiciones es posible realizar una especificación del funcionamiento de este tipo de sistema
donde entradas, salidas y estados se interpretan como secuencias discretas de valores (ver figura
6.15).

Nótese que en este tipo de sistema se trata de un caso opuesto al de un sistema asíncrono en cuanto a
dependencia del factor tiempo, y que es viable prescindir de éste como variable contínua: en cada
período de reloj (i) el sistema recibe una entrada x(i) y se mantiene en un estado s(i), que determinan
unívocamente tanto la salida en este mismo período z(i) como el valor siguiente (en el siguiente
período de reloj) del estado s(i+1). En otras palabras, el comportamiento de este tipo de sistema

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 233
________________________________________________________________________________

síncrono es más cercano al de los sistemas considerados al principio de este capítulo, en los que se
prescindía de los aspectos temporales.

Sistema
x(i) Secuencial z(i)
Síncrono

x(i) ∈ X, s(i) ∈ S, z(i) ∈ Z X= Conjunto finito de entradas


F: X, S Z S= Conjunto finito de estados
z(i) = f(x(i), s(i)) Z= Conjunto finito de salidas
F= Función de salida
G: X, S S G= Función de transición de estados
s(i+1) =g(x(i), s(i))

Figura 6.15 Especificación ideal de un sistema secuencial síncrono

Ejemplo 6.7

Sea el sistema síncrono especificado en la figura 6.16. Queremos conocer su respuesta a la serie
de entradas x(0)=a, x(1)=b, x(2)=c, x(3)=a, suponiendo que en el instante inicial (i=0) el estado
es S2.

X = {a,b,c} Z = {0,1}
x(i) Sistema z(i)
S = {S 0 ,S 1,S ,S
2 3
}

s(i) x(i)=a x(i)=b x(i)=c


S0 S 0 ,0 S 1 ,0 S 1 ,0
S1 S 2 ,1 S 0,1 S 1 ,1
S2 S 2 ,1 S 3,0 S 0 ,1 s(i+1), z(i)
S3 S 0 ,0 S 1,0 S 2 ,1

Figura 6.16 Especificación del sistema del ejemplo 6.7

i 0 1 2 3 4
x(i) a b c a
s(i) S2 S2 S3 S2 S2
z(i) 1 0 1 1

Figura 6.17 Secuencia de estados y salidas del ejemplo 6.7

© los autores, 1998; © Edicions UPC, 1998.


234 Diseño digital
________________________________________________________________________________

La especificación de la figura 6.16 contiene toda la información necesaria para obtener tanto la
secuencia de estados como de salidas resultantes a partir de la secuencia de entradas y el estado
inicial descritos en el enunciado. El resultado se recoge en la figura 6.17.
_________________________________________________________________________________

Ejercicio 6.6

Encuentre la secuencia de salida del sistema del ejercicio 6.5 entendido como un sistema
síncrono, a la secuencia de entrada periódica -1,0,1,0,-1,0,1,.. sabiendo que el estado inicial es S1.
¿En qué variaría la respuesta si el estado inicial fuera S0, S2 o S3?
_________________________________________________________________________________

6.2.2 Implementación canónica de un sistema secuencial síncrono

La especificación de sistemas secuenciales basada en el estado sugiere una posibilidad,


conceptualmente sencilla de realización de sistemas síncronos: la forma canónica. Dado que la salida
y el estado futuro son función de la entrada y el estado actual, podemos implementarlos mediante una
red combinacional. Por otra parte, el valor actual del estado debe ser memorizado durante los
intervalos de tiempo en que el reloj no le permite cambiar y actualizado cuando corresponda.

x(i) z(i)
Red
Combinacional

s(i) s(i+1)
Registro de
estado

CLOCK Reset

Figura 6.18 Implementación canónica de un sistema síncrono ideal

La figura 6.18 muestra el esquema de la implementación canónica de un sistema secuencial síncrono.


La red combinacional agrupa las realizaciones de las funciones de salida y transición de estados. El
bloque llamado registro de estado almacena el valor actual del estado, s(i), ignorando el valor que
tiene a su entrada hasta que le llega un impulso de reloj, momento en que el valor a su entrada o
estado siguiente, s(i+1), pasa a convertirse en actual. Desde ese instante y hasta el siguiente impulso
de reloj el registro vuelve a ignorar el valor presente a su entrada y a operar como memorizador.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 235
________________________________________________________________________________

Ha quedado dicho que el funcionamiento del circuito descrito es ambiguo si no se conoce su estado
inicial; para resolver esta dificultad el registro de estado suele disponer de una entrada adicional,
llamada de reinicialización o "reset", que de forma asíncrona (es decir no dependiente del reloj)
permite llevar al sistema a un estado inicial determinado.

La forma canónica es un instrumento muy útil para estudiar comportamientos temporales.


Recordemos que estamos considerando sistemas síncronos cuya entrada también está sincronizada,
cosa no inusual en la práctica (las entradas de un circuito secuencial sueden ser salidas de otros,
normalmente sincronizados con el mismo reloj), pero que ésta no es la situación más general posible.
Luego podemos plantearnos la siguiente pregunta: ¿qué ocurre cuando la señal de entrada no está
sincronizada, sino que puede variar de cualquier manera? Esta situación se refleja en la figura 6.19.a.

Red Red
x(t) z(t) z(i)
Combinacional Combinacional f(s)
f(x,s), g(x,s)
Red
x(t) Combinacional g(s,x)
s(i) s+ (t) s+ (t)
Registro de s(i)
Registro de
estado
a) b) estado

CLOCK Reset CLOCK Reset

Figura 6.19 Efectos de una entrada no síncrona a) en una máquina de Mealy, b) en una màquina de Moore

La red de la figura 6.19.a que realiza las funciones de salida y de transición de estados es
combinacional, donde el reloj no desempeña ningún papel. Luego si una de sus entradas tiene una
variación temporal x(t) no síncrona, sus salidas z(t) y s+(t) tampoco serán síncronas y únicamente la
variación del estado actual s(i) estará sincronizada. Nótese que este resultado implica que el sistema
no es síncrono.

Esta asincronía indeseada se debe a que la entrada del sistema influye directamente sobre su salida,
situación identificable con una máquina de Mealy, donde se tiene z=f(s,x). Ahora bien, tal como
muestra la figura 6.19.b, esto no ocurre en el caso de una máquina de Moore, donde la salida sí será
síncrona puesto que es una función del tipo z=f(s).

Como conclusión podemos decir que para asegurar que una máquina de Mealy se comporte de forma
síncrona es necesario que sus entradas hayan sido sincronizadas previamente, condición innecesaria
en el caso de una máquina de Moore. Por esta razón existe en la práctica una cierta preferencia a
trabajar con máquinas de este último tipo. El ejemplo 6.8 ilustra mediante un caso concreto esta
diferencia de comportamientos.

© los autores, 1998; © Edicions UPC, 1998.


236 Diseño digital
________________________________________________________________________________

Ejemplo 6.8

Obtener el cronograma de las señales de estado y las salidas de los sistemas 1 y 2 de la figura
6.20.a cuando se aplica a ambos las señales de entrada y de reloj indicadas en la figura 6.20.b. De
acuerdo con las especificaciones dadas en la figura, los sistemas 1 y 2 son respectivamente
máquinas de Mealy y de Moore.

Sistema 1
a) z1(t)
Sistema 1 s x=0 x=1
z2(t)
x(t) 0 0,11 1,01
1 1,11 0,10
Sistema 2 z(t)
s +,z1 z2
CLK Sistema 2
b) s1 s2 x=0 x=1 z
00 01 00 0
CLK
01 10 01 1
10 11 10 1
x(t)
11 00 11 0
s1+s2 +

Figura 6.20 Sistemas y señales de entrada considerados en el ejemplo 6.8

En el cronograma del sistema 1 (figura 6.21.a) puede observarse que, al no estar sincronizada la
entrada x(t), las salidas tampoco lo están, aunque sí el estado s(t). Esto no ocurre para el sistema 2
(figura 6.21.b), donde a pesar de que la entrada no es síncrona, tanto las señales de estado como
la salida sí lo son (nótese que el sistema sólo hace caso del valor de la entrada en los instantes de
tiempo coincidentes con los impulsos del reloj).

a) b)
CLK CLK
x(t) x(t)
s(t) s1(t)

z1(t) s2(t)

z2(t) z(t)

Figura 6.21 Cronogramas de l ejemplo 6.8 para el sistema 1 (a) y el sistema 2 (b)

_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 237
________________________________________________________________________________

6.2.3 Sincronización con reloj no ideal

Hasta ahora hemos considerado siempre la señal de reloj como un tren periódico de impulsos de
duración despreciable frente a cualquier otra característica temporal del sistema. En la realidad esto
no es así y las señales de reloj son similares a la mostrada en la figura 6.22, que está caracterizada por
dos magnitudes: el ancho del pulso tw y su periodo TCLK. Se denomina ciclo de trabajo al porcentaje
de tiempo que el reloj esta a "1" en cada periodo, es decir, a la relación (tw/TCLK)x100.

CLK(t)
tw TCLK

Figura 6.22 Señal de reloj no ideal

Las señales de reloj ideales (con impulsos de duración prácticamente nula) definen con precisión
instantes de tiempo en los cuales tienen lugar los cambios del sistema. En cambio, pulsos de reloj de
duración apreciable dificultan una correcta sincronización.

El ejemplo 6.9 ilustra la relación que debe existir entre los retardos y la frecuencia de reloj para
asegurar la correcta sincronización de un sistema secuencial canónico.

Ejemplo 6.9

Considérese el sistema genérico de la figura 6.23, donde la red combinacional y el registro de


estado responden a una variación en sus entradas con retardos tC y tR respectivamente, y la señal
de reloj es como la de la figura 6.22. Deducir qué condiciones deben cumplirse para que el
sistema genere correctamente la secuencia de estados.

x Red z
Combinacional
+
s s
Registro de
estado

CLOCK

Figura 6.23 Sistema secuencial del ejemplo 6.9

© los autores, 1998; © Edicions UPC, 1998.


238 Diseño digital
________________________________________________________________________________

Una secuenciación de estados correcta implica que el sistema tiene que hacer una única
actualización del estado en cada período de reloj. Esto supone cumplir dos condiciones:

1) Que dentro de un período de reloj haya suficiente tiempo para actualizar el estado, 2) Que no
se haga más de una actualización por período de reloj.

La primera condición se traduce en que el tiempo que tarda el sistema en responder sea inferior a
TCLK, es decir, si tC es el retardo de la red combinacional y tR el del registro:

tC + t R < T CLK

Es habitual en la práctica hacer que esta desigualdad se cumpla claramente, por lo que se escoge
un período de reloj que sea , por lo menos,un número entero de veces mayor que la suma de
retardos (hay varios criterios para fijar este número, habitualmente igual o superior a 3).

La segunda condición se traduce en que el tiempo que tarda el sistema en responder debe ser
superior la duración del intervalo en que se permiten los cambios, es decir

tC + t R > tw

Si esta condición no se cumpliera podría haber más de 1 cambio por período de reloj, con lo que
el sistema dejaría de estar controlado.
_________________________________________________________________________________

Los resultados del ejemplo 6.9 conducen a dos conclusiones importantes; por un lado la frecuencia
máxima a la que un sistema síncrono puede funcionar sin problemas depende de los retardos de éste,
y por otro el lapso de tiempo en que está permitido el cambio de estado debe ser lo más corto posible,
objetivo, en principio, difícil de compatibilizar con la forma real de la señal de reloj. Existen dos
estrategias diferentes de sincronización de los sistemas secuenciales con reloj real:

a) Sincronización por nivel (alto): el valor del estado puede actualizarse sólo cuando el reloj
toma el valor lógico "1", en caso contrario el estado permanece inalterado. Esta estrategia es la
considerada en el ejemplo 6.9. Simétricamente podriamos hablar de sincronización por nivel bajo.

b) Sincronización por flanco: el valor del estado puede actualizarse sólo cuando la señal de
reloj realiza una transición dada. En concreto, cuando este cambio es un paso de "0" a "1" se habla de
sincronización por flanco ascendente, mientras que se habla de sincronización por flanco descendente
cuando el instante de referencia es el paso de "1" a "0". Es evidente que, al ser los instantes de cambio
más breves, la sincronización por flanco supone una aproximación mayor al caso ideal.

Para indicar el modo de sincronización de los circuitos secuenciales utilizaremos en lo sucesivo la


simbología especificada en la figura 6.24.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 239
________________________________________________________________________________

Instantes de cambio permitido


a) con sincronización por nivel

CLOCK

Instantes de cambio permitido Instantes de cambio permitido


con sincronización por flanco con sincronización por flanco
ascendente descendente

b) c) d)
Clock Clock Clock

Figura 6.24 Estrategias de sincronización de sistemas secuenciales (a) y símbolos


utilizados en sincronización por nivel (b), por flanco ascendente (c) y por flanco
descendente (d)

6.3 Biestables

La presencia del registro de estado implica que para poder diseñar sistemas secuenciales en forma
canónica son necesarios elementos capaces de almacenar información (en concreto el estado actual)
durante un cierto tiempo.

En concreto, para realizar en la práctica estos sistemas se tendrá que codificar previamente el estado
utilizando el número de bits necesarios en función del número de estados posibles (recuérdese que
con n bits se pueden codificar 2n estados). Por tanto, almacenar el valor del estado se traduce en
definitiva en almacenar un número fijo de bits. Podemos imaginar el registro de estado como una
agrupación de módulos iguales, almacenando cada uno de ellos un solo bit (ver figura 6.25).

s0 s 0+
Codificación Codificación
s1 s 1+ del estado
del estado . .
actual . . futuro
. . s+ (t)
s(t) sn s n+

Clock Reset

Figura 6.25 Composición del registro de estado

© los autores, 1998; © Edicions UPC, 1998.


240 Diseño digital
________________________________________________________________________________

Los módulos utilizados para la memorización y/o actualización de cada bit se denominan biestables.
A continuación se especifica el funcionamiento de los biestables más comúnmente utilizados. Para
ello se supondrá que la señal de reloj es ideal (en forma de tren de impulsos), y se dejan para más
adelante cuestiones como la realización circuital de biestables y/o la sincronización cuando el reloj es
no ideal.

6.3.1 Biestable D

El biestable D (delay) se ajusta precisamente a la descripción hecha en el apartado anterior. Dispone


de una entrada de datos (D), otra de reloj y una salida (Q); las versiones comerciales de cualquier
biestable ofrecen habitualmente la posibilidad de acceder al valor de la salida y a su negada, aspecto
que recoge el esquema de la figura 6.26.

D D Q Q
Clock Q Q

Figura 6.26 Esquema de un biestable D

Su funcionamiento es como sigue: en cada impulso de reloj la salida toma el valor de la entrada, con
lo que queda este valor invariante hasta que el reloj vuelva a permitir otro cambio. Se trata ,pues, de
un circuito secuencial y como tal puede ser descrito con las técnicas presentadas en este mismo
capítulo.

Tanto la entrada como la salida pueden tomar únicamente los valores "0" y "1". Parece razonable
asignar al sistema dos estados, uno correspondiente a las evoluciones de la entrada que hacen que la
salida valga "0" y otro que agrupa las evoluciones que hacen que la salida sea "1". El diagrama de
estados y la tabla de verdad correspondientes se muestran en la figura 6.27; nótese que se trata de una
màquina de Moore con una función de salida trivial (z=Q).

1 Q D=0 D=1
0/0 1/1 0 0,0 1,0 Q +,z
0 1
0 1 0,1 1,1

Figura 6.27 Diagrama de estados y tabla de verdad de un biestable D

Otra forma de describir la funcionalidad del biestable es la tabla de excitación, figura 6.28, que
contiene la misma información que la figura 6.27. La interpretación es como sigue: si el estado actual
toma el valor dado en la columna Q y se desea que el estado siguiente sea Q+, la entrada actual debe
tomar el valor indicado en la columna D.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 241
________________________________________________________________________________

Q Q+ D
0 0 0
0 1 1
1 0 0
1 1 1

Figura 6.28 Tabla de excitaciones de un biestable D

A partir de las figuras 6.27 o 6.28 es fácil escribir una expresión algebraica para la función de
+
transición de estados de este tipo de biestable: Q = D .

Ejemplo 6.10

Una aplicación adicional del biestable D es como retardador (el nombre D viene precisamente del
inglés delay). En este ejemplo se muestra un cronograma (ver figura 6.29) que pone en evidencia
este comportamiento.

CLK
D(t)

Q(t)

Figura 6.29 Respuesta temporal de un biestable D

_________________________________________________________________________________

6.3.2 Biestable JK

El biestable D no es el único elemento capaz de realizar la función de memorización de un bit.


Existen otros tipos de biestables, en especial los JK y T, en los cuales la relación entre salida (estado)
y entrada es menos sencilla, pero que en algunas ocasiones pueden tener un gran interés práctico.

J =0 J =0 J =1 J =1
Q K=0 K=1 K=0 K=1
J J Q Q
Clock 0 0,0 0,0 1,0 1,0 Q +,z
K K Q Q 1 1,1 0,1 1,1 0,1

Figura 6.30 Especificación del funcionamiento de un biestable JK

© los autores, 1998; © Edicions UPC, 1998.


242 Diseño digital
________________________________________________________________________________

Un biestable JK síncrono es un circuito secuencial elemental con dos entradas de datos (J y K), otra
de sincronización (reloj) y una salida (Q), donde el valor del estado coincide con el de la salida,
siendo su comportamiento el descrito en la tabla de la figura 6.30.

La interpretación de la funcionalidad del biestable JK es la siguiente: si introducimos la entrada actual


J=0, K=1, el estado siguiente será Q+=0 sea cual sea el actual. De forma simétrica la entrada opuesta
J=1, K=0 hace que el estado siguiente sea Q+=1. La combinación de entrada J=K=0 hace que no haya
cambio de estado, es decir Q+=Q. Finalmente la combinación J=K=1 hace que el estado siguiente sea
el opuesto al actual (Q+=1 si Q=0 o Q+=0 si Q=1).

El diagrama de estados del biestable JK se muestra en la figura 6.31, junto con la expresión algebraica
de la función de transición de estados.

10,11
00,01 0/0 1/1 00,10 Q+ = Q J + QK
01,11

Figura 6.31 Diagrama de estados de un biestable JK

Una reordenación de la información contenida en la figura 6.31 permite generar la tabla de


excitaciones para un biestable JK, que será la dada en la figura 6.32.

+
Q Q J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0

Figura 6.32 Tabla de excitaciones


de un biestable JK

Ejemplo 6.11

Realizar un biestable JK a partir de un D. Para ello basta con fijarnos en la ecuación característica
del biestable JK, y dado que en un biestable D el estado futuro es igual a la entrada, obtenemos
una posible implementación: Q + = D= JQ + QK

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 243
________________________________________________________________________________

J
D Q Q
Clock
Ck Q Q
K

Figura 6.33 Implementación de un biestable JK a partir de un D

_________________________________________________________________________________

Ejercicio 6.7

Proponga una realización para un biestable D partiendo de un biestable JK.


_________________________________________________________________________________

6.3.3 Biestable T

Un biestable T (toggle) síncrono es un circuito secuencial elemental con una entrada de datos (T),
otra de sincronización (reloj) y una salida (Q), donde el valor del estado coincide con el de la salida,
siendo su comportamiento el descrito en la figura 6.34.

Q T=0 T=1
T T Q Q 0 0,0 1,0 Q +,z
Clock Q Q 1 1,1 0,1

Figura 6.34 Especificación del funcionamiento de un biestable T

La descripción del funcionamiento del biestable es la siguiente: si la entrada toma el valor T=1, el
estado se actualizará cambiando de valor, es decir, si el valor actual de la variable de estado es Q=0,
el valor siguiente será Q+=1, y viceversa. En caso contrario, es decir, si la entrada toma el valor "0",
la variable de estado no cambia de valor al actualizarse (Q+=Q).

Q Q+ T
1 0 0 0
+
0 0/0 1/1 0 Q = Q⊕ T 0 1 1
1 0 1
1 1 1 0

Figura 6.35 Diagrama de estados, expresión algebraica de la función de transición de


estados y tabla de excitaciones de un biestable T

© los autores, 1998; © Edicions UPC, 1998.


244 Diseño digital
________________________________________________________________________________

El diagrama de estados del biestable T se muestra en la figura 6.35, junto con la expresión algebraica
de la función de transición de estados y la tabla de excitaciones.
_________________________________________________________________________________

6.4 Realización de biestables

Para finalizar el capítulo vamos a presentar algunas implementaciones circuitales de biestables, ya sea
a base de puertas lógicas genéricas o bien mediante transistores MOS. Para ello estudiaremos en
primer lugar una estructura básica de referencia, a la que llamaremos biestable SR, a partir de la cual
es posible construir en forma de mejoras o ampliaciones otros tipos de biestable, incluyendo diversas
modalidades de sincronización.

6.4.1 Biestable SR asíncrono

Consideremos el circuito de la figura 6.36.a, compuesto simplemente por dos puertas NOR. El
análisis de este circuito requiere tomar algunas precauciones: los lazos de realimentación hacen que
los valores a la salida, QA y QB, sean a su vez entradas, lo que genera una serie de recurrencias que,
mezcladas con los retardos de las puertas, conviene tener en cuenta.

a) b)
R R qA
QA QA

QB QB
S S qB

Figura 6.36 a) Circuito básico propuesto. b) Esquema propuesto para el análisis

Una forma de enfocar este análisis es la apuntada en la figura 6.36.b, donde se supone que la
respuesta de las puertas NOR es instantánea y que el retardo de dichas puertas se concentra en los
buffers puestos entre sus salidas y las del circuito. De esta manera podemos considerar qA y qB como
funciones lógicas de R, S, QA y QB, y que, después de un cierto retardo, qA y qB se convierten
respectivamente en los valores siguientes de QA y QB, que a su vez generan nuevos valores de qA y
qB, etc.

Si por ejemplo suponemos R=0, S=1 y aplicamos el tipo de análisis acabado de sugerir, llegaremos a
la conclusión de que, cualesquiera que fueran los valores iniciales de QA y QB, sus valores finales se
estabilizan en QA=1, QB=0. El resultado simétrico se obtiene para R=1, S=0: las salidas acaban

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 245
________________________________________________________________________________

estabilizándose en los valores QA=0, QB=1. Asimismo, para R=S=1 las salidas se estabilizan en los
valores QA=QB=0.

La situación más curiosa se produce para la combinación de entrada R=S=0, que conduce al resultado
intermedio q A = QB , q B = QA , resultado nada conflictivo si los valores iniciales de QA y QB son
diferentes (en este caso estos valores iniciales permanecen inalterados), pero que lleva a que las
salidas del circuito oscilen indefinidamente entre "0" y "1" si los valores iniciales de QA y QB son
iguales.

Una consecuencia de lo anterior es que la aplicación de la combinación de entrada R=S=0 tras haber
aplicado R=S=1 conduce irremisiblemente al circuito a la inestabilidad. Por esta razón la
combinación de entrada R=S=1 debe ser evitada cuando se pretenda utilizarlo.

R
Q S R Q+
R 0 0 Q
R Q Q
0 1 0
S S Q Q 1 0 1
Q 1 1 -
S

Figura 6.37 Biestable SR asíncrono, circuito equivalente y tabla de la función de


transición de estados

Aplicando la restricción sugerida es fácil interpretar el funcionamiento del circuito como el de un


biestable, denominado SR (ver figura 6.37) con dos entradas y una salida (directa y complementada)
que coincide con el estado. Al hacer R=0 y S=1 (orden de set o puesta a "1") la salida acaba tomando
el valor Q=1, valor que se conservará hasta que en la entrada aparezca la combinación R=1, S=0
(orden de reset). La combinación R=S=0 no modifica el valor de la salida. Recordemos finalmente
que la combinación R=S=1 debe ser evitada.

Ejercicio 6.8

La figura 6.38 presenta una alternativa de realización de un biestable asíncrono, esta vez a nivel
de layout. Se pide obtener los esquemas equivalentes a nivel de transistores y a nivel de puertas.
Estudiar su comportamiento como biestable, a imagen del desarrollo hecho para el RS, en

© los autores, 1998; © Edicions UPC, 1998.


246 Diseño digital
________________________________________________________________________________

función de las entradas A y B. ¿Existe alguna combinación que sea necesario prohibir? Compare
su funcionamiento con el de un biestable RS.

VDD

A B

Q Q

VSS

Figura 6.38 Layout de un biestable asíncrono

_________________________________________________________________________________

6.4.2 Biestables síncronizados por nivel

El biestable SR presentado en el apartado anterior es claramente un circuito asíncrono, puesto que una
variación en el valor de alguna de sus entradas provoca siempre la reacción de éste. Ahora bien, es
sencillo introducir una sincronización por nivel sin más que realizar el producto lógico de cada
entrada con una señal de reloj. El circuito resultante se muestra en la figura 6.39, donde resulta fácil
ver que cuando CLK=0, S ⋅ CLK = R ⋅ CLK = 0 , es decir, la estructura de puertas NOR tiene entradas
"0", por lo cual conserva el valor anterior de Q (memorización). En el caso contrario, es decir cuando
CLK=1, las entradas de la estructura NOR coinciden con S y R y el circuito actualizará sus salidas de
acuerdo con la tabla de la figura 6.37.

R Q
R R Q Q
CLK CLK
S S Q Q
S Q

Figura 6.39 Biestable SR sincronizado por nivel

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 247
________________________________________________________________________________

Ejemplo 6.12

Obtener, a partir de la estructura de un biestable SR activo por nivel, otro de tipo D. Observando
la tabla de funcionamiento del biestable SR (figura 6.37), para obtener un biestable D a partir de
un SR sólo hay que forzar que los valores de las entradas sean siempre contrarios, cosa que puede
hacerse utilizando un inversor (ver figura 6.40).

R S R Q+
Q
0 0 Q D Q+
0 1 0 0 0
1 0 1 1 1
D Q 1 1 -
CLK S

Figura 6.40 Biestable D sincronizado por nivel o latch obtenido a partir de un SR

Una aplicación habitual de este tipo de biestable D es "cazar" un bit (con CLK=1) y mantenerlo
después durante un tiempo arbitrario bloqueando el reloj (CLK=0), motivo por el que suele
denominársele latch (cerrojo).
_________________________________________________________________________________

Ejercicio 6.8

Compruebe que el esquema propuesto en la figura 6.41 muestra la realización de un biestable JK


a partir de un SR (sincronizados ambos por nivel).

R
K Q
CLK
J Q
S

Figura 6.41 Biestable JK sincronizado por nivel obtenido a partir de un SR

_________________________________________________________________________________

Es posible realizar con facilidad biestables utilizando transistores MOS. Así podemos traducir
directamente los logigramas presentados a puertas nMOS o CMOS; en la figura 6.42 se muestra un
ejemplo concreto de biestable D realizado con tecnología nMOS.

© los autores, 1998; © Edicions UPC, 1998.


248 Diseño digital
________________________________________________________________________________

Q Q

CLK
D CLK
D

Figura 6.42 Biestable D realizado mediante puertas nMOS

Otra posibilidad a contemplar en la realización de biestables, ésta de especial interés si se trabaja con
tecnología CMOS, es recurrir a estructuras hechas a base de puertas de transmisión e inversores. La
figura 6.43 muestra otro ejemplo de biestable sincronizado por nivel.

D Q

CLK Q

Figura 6.43 Biestable D realizado mediante tecnología CMOS

Digamos, para finalizar, que es frecuente la existencia de entradas asíncronas adicionales en


biestables síncronos. Estas entradas permiten cargar un valor determinado ("0" o "1") de forma
inmediata e independiente del reloj y de las entradas síncronas. Así, por ejemplo, el biestable D de la
figura 6.44 dispone de una entrada asíncrona de "puesta a 0" (clear), cuyo efecto se ilustra en el
cronograma adjunto: mientras esta señal está activada el biestable está bloqueado en el valor "0",
mientras que cuando se desactiva el biestable evoluciona de acuerdo con D y CLK (funcionamiento
síncrono).

CLK
D
Q Clear
CLK D
Q
Q

Clear
Intervalos de
funcionamiento asíncrono
Figura 6.44 Biestable D con entrada asíncrona de puesta a "0" y reloj ideal

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 249
________________________________________________________________________________

Ejercicio 6.9

Modifique la estructura de la figura 6.44 para añadir al biestable D una entrada asíncrona que
fuerce un "1" (preset) a la salida.

_________________________________________________________________________________

6.4.3 Biestables sincronizados por flanco

La realización de un biestable sincronizado por flanco es viable utilizando la estructura denominada


master-slave, que consta de dos etapas biestables conectadas en cascada y sincronizadas por nivel con
señales de reloj complementarias. La figura 6.45 muestra la implementación de un biestable D
sincronizado por flanco descendente, que consta de un biestable tipo D conectado a un biestable tipo
SR.

D D
Q S Q Q
D D Q Q
Q R Q Q
Clock Q Q
Clock

Figura 6.45 Ejemplo de estructura master-slave: biestable D sincronizado


por flanco descendente

Nótese que cuando el reloj está a "1" el primer biestable (master) actualiza su contenido de acuerdo
con el valor de la entrada D, maniobra que no afecta al segundo biestable (slave) hasta que el reloj
pase a "0", momento en el que éste también se actualizará, de forma que globalmente el circuito se
actualiza de acuerdo con el valor de D sólo cuando el reloj ha pasado de "1" a "0", es decir, cuando se
produce un flanco descendente.

La figura 6.46 muestra el cronograma de funcionamiento del circuito de la figura 6.45 para una
posible evolución de la entrada D a partir de los valores iniciales R=1 y Q=S=0. Allí puede
observarse el efecto recién comentado: el primer biestable actúa de acuerdo con la entrada cuando
CLK=1 y se inhibe para CLK=0, mientras que el segundo biestable actúa de acuerdo con la salida del
primero para CLK=0 y se inhibe para CLK=1. El efecto global (observando únicamente las señales
CLK, D y Q) es claramente el de un biestable D (Q+=D) sincronizado por flanco descendente.

© los autores, 1998; © Edicions UPC, 1998.


250 Diseño digital
________________________________________________________________________________

CLK

Figura 6.46 Cronograma de funcionamiento de la estructura master-slave de


la figura 6.45. La referencia de sincronización se ha indicado con una línea
vertical continua para el primer biestable y a trazos para el segundo

Cambiando el primer biestable sincronizado por nivel en la figura 6.45 por otro de un tipo distinto
(JK, T) podremos conseguir dicho biestable sincronizado por flanco de bajada. Si se desea
sincronismo por flanco de subida basta con invertir el reloj que controla ambos biestables.

6.5 Cuestiones y problemas

Cuestiones

C6.1 Proponga ejemplos de máquinas secuenciales con un número infinito de estados posibles.

C6.2 Considere la siguiente afirmación: "Dos estados de un sistema secuencial son (i+1)-equivalentes
si son 1-equivalentes y sus estados futuros, para cualquier combinación de variables de entrada, son i-
equivalentes". Justifíquela y relaciónela con el método de minimización del número de estados
propuesto.

C6.3 Compare una descripción de Moore con una de Mealy para el mismo sistema secuencial. ¿Cuál
de las dos debe tener más estados y por qué? Sugerencia: analice un sistema particular (detector de
secuencia binaria) y luego generalice el resultado.

C6.4 A partir de la respuesta a la cuestión anterior, esboce un método de transformación de máquinas


de Mealy en máquinas de Moore. (El caso contrario no tiene interés por ser la descripción de Moore
un caso particular de la de Mealy).

C6.5 Dibuje el cronograma de salida de los sistemas detectores de secuencia del ejemplo 6.5, cuando
la entrada es exactamente la secuencia a detectar. Relacione el hecho de que un sistema de Moore
"filtre" las variaciones de las entradas no síncronas con el reloj, con el retardo de un período de reloj
observado entre las salidas de ambos sistemas.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 251
________________________________________________________________________________

C6.6 Para que un registro de estado, en una implementación canónica de un sistema secuencial,
funcione correctamente, existen unas restricciones temporales, que se concretan en la necesidad de
mantener su entrada estable desde un cierto tiempo antes de la señal de reloj (tiempo de set-up) y
mantenerla estable durante un cierto tiempo depues de ésta (tiempo de hold), tal como se ve en la
figura.

Ck

t
S+

t
tSU tH

Discuta qué variaciones deberemos introducir en los razonamientos de temporización del ejemplo
6.9 para tener estos datos en cuenta.

C6.7 Implemente un biestable tipo T a partir de un JK y puertas lógicas. Repita la cuestión partiendo
de un biestable D.

C6.8 Implemente un biestable tipo JK a partir de un T y puertas lógicas. Repita la cuestión partiendo
de un biestable D.

C6.9 Imagine un biestable T asíncrono. Dibuje su respuesta temporal cuando la entrada T vale 1.
¿Sugiere esto alguna utilidad práctica?

C6.10 En un biestable RS asíncrono la combinación de entradas 11 es potencialmente peligrosa


cuando va seguida de la 00, según los razonamientos del apartado 6.4.1. Suponga que una de las dos
puertas NOR que lo componen tiene un retardo apreciablemente superior a la otra. Discuta si este
hecho resuelve la peligrosidad potencial de la combinación de entrada 11.

C6.11 Compruebe, realizando el cronograma, que el siguiente logigrama corresponde a un biestable


tipo D sincronizado por flanco de bajada. Repita el cronograma considerando que la señal Ck está
ligeramente retrasada respecto a Ck. ¿Afecta esto al funcionamiento del biestable?

D Q

Ck Ck
Ck Ck

© los autores, 1998; © Edicions UPC, 1998.


252 Diseño digital
________________________________________________________________________________

Problemas

P6.1 Describa a través de su diagrama de estados y su tabla de transiciones un sistema secuencial con
dos entradas, X e Y, una salida, Z, y 8 estados posibles.

S ∈{0,1, 2, 3, 4, 5, 6,7} S + = (S + X (1 − 2Y ))
MOD8
1 si ( X = 1,Y = 0, S = 7) o (X = 1, Y = 1, S = 0)
X,Y , Z ∈ {0,1} Z =
0 en otro caso

P6.2 Proponga un diagrama de estados para un sistema secuencial síncrono detector de secuencias
binarias de longitud 4 palindrómicas (es decir, simétrica respecto al centro de la secuencia).

P6.3 Dada la descripción a nivel de tabla de transiciones del siguiente sistema secuencial síncrono,
encuentre otra descripción equivalente con el mínimo número de estados posibles.

S+, z(x1x0)
S 00 01 10 11
A G,a F,b C,c D,a
B E,a H,b C,c G,a
C F,b C,a A,b E,c
D F,c C,c D,c E,b
E B,c C,c G,c D,b
F G,a H,b C,c E,a
G F,c C,c G,c D,b
H D,a F,b D,c G,a

P.6.4 El diagrama de estados de la figura siguiente corresponde a un sistema secuencial síncrono.


Describirlo a través de otro diagrama de estados equivalente, con el mínimo número de estados
posible.

0/0
A 1/0

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

1/1 1/1
D 1/1 E
0/0
F
0/0 0/0

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 253
________________________________________________________________________________

P6.5 Para el sistema del problema anterior, y supuesto un estado inicial E, encuentre la secuencia de
salidas cuando la de entrada es la indicada en el cronograma.

Ck

P6.6 Un sistema secuencial síncrono se describe mediante la siguiente tabla:

S+ (x1x0)
S 00 01 10 11 z
S0 S0 S3 S1 S2 0
S1 S0 S2 S0 S2 1
S2 S1 S2 S0 S0 1
S3 S2 S0 S3 S1 0

¿Se trata de una máquina de Mealy o de Moore?. Dibuje su diagrama de estados. Dibuje también
la respuesta temporal cuando las entradas son las del siguiente cronograma y el estado inicial es
S0.

Ck

x1

x0

P6.7 Encuentre la evolución temporal de los dos sistemas de la figura cuando su entrada CE vale 1,
interpretando su salida como un número codificado en binario (X=X2X1X0). Parta del estado en que
las salidas de los tres biestables valen 0. Suponga despreciables los retardos introducidos por los
propios biestables y las puertas. Repita el problema sin despreciar dichos retardos. Razone cuál de
ambos diseños es mejor. ¿Cuál es la evolución cuando CE=0? Dibuje un diagrama de estados para el
sistema.

V DD V DD
CE T T T CE T T T
Q Q Q Q Q Q
Q Q Q Ck Q Q Q
Ck
X0 X1 X2 X0 X1 X2

© los autores, 1998; © Edicions UPC, 1998.


254 Diseño digital
________________________________________________________________________________

P6.8 Analice el siguiente layout. Obtenga su esquema equivalente a nivel de transistores y a nivel de
puertas lógicas. Compruebe que se trata de un biestable de tipo RS sincronizado por nivel.

Clock

VDD

R S

VSS

Q Q

P6.9 El logigrama de la figura corresponde a un biestable JK sincronizado por flanco. Discuta si la


entrada "Asinc" es activa con valor alto o bajo y vea qué valor de salida fuerza cuando es activa.

J
Q

Ck

K Q

Asinc.

El principio de funcionamiento en que se basa la sincronización de este biestable es la diferencia


de retardos de la señal de reloj (Ck) entre los distintos caminos que la llevan a las puertas NOR.
Sabiendo que las puertas NAND recuadradas se diseñan para que tengan un retardo por lo menos
5 veces superior al de cualquier otra puerta del logigrama, vea que efectivamente se comporta
como un biestable JK y compruebe si es activo por flanco de subida o de bajada.

© los autores, 1998; © Edicions UPC, 1998.


Introducción a los sistemas secuenciales 255
________________________________________________________________________________

P6.10 Analice el funcionamiento del siguiente circuito como biestable. Obtenga un circuito
equivalente a nivel de puertas para CK=1 y después hágalo para CK=0. Identifique el tipo de
biestable así como el tipo de sincronización.

V DD

D Q

VSS

CK CK

P6.11 La siguiente implementación corresponde a un biestable activo por flanco. Dibuje el


cronograma de respuesta cuando las entradas tienen la evolución indicada. Nota: los retardos
asociados a las puertas son mucho menores que el período de reloj. ¿Se trata de algún tipo de
biestable conocido?

A Q
B

CLK

Ck

© los autores, 1998; © Edicions UPC, 1998.

Você também pode gostar