Você está na página 1de 43

Diseño de circuitos secuenciales síncronos 257

________________________________________________________________________________

Capítulo 7 Diseño de circuitos secuenciales síncronos

En este capítulo se describirán los métodos básicos de análisis y de diseño de circuitos secuenciales
síncronos. A continuación se presentarán las estructuras o módulos secuenciales de uso más
frecuente, incluyendo un breve inciso referido a las memorias de lectura y escritura.

El capítulo presenta en primer lugar un procedimiento sistemático que permite tanto el análisis como
la síntesis de sistemas secuenciales síncronos en formato canónico, es decir en forma de red
combinacional más biestables. De la misma forma que ocurría en el diseño combinacional, los
módulos secuenciales estándar surgen como respuesta a las necesidades más habituales, y al mismo
tiempo son herramientas que facilitan el diseño de sistemas más complejos; en este capítulo se
presentan los módulos secuenciales más comunes, concretamente los registros, los contadores y los
circuitos lógicos programables, estos últimos de utilización muy extendida en la actualidad.
Finalmente el capítulo realiza una breve incursión en las memorias de lectura/escritura y las
configuraciones de memorización básicas realizadas con transistores MOS.

7.1 Diseño canónico de sistemas secuenciales síncronos

Existen procedimientos sistemáticos y estandarizados para analizar y/o diseñar sistemas secuenciales
síncronos en forma canónica. Como se verá enseguida, estos métodos son utilizables manualmente
siempre que el número de variables no sea excesivo, situación en la cual es preferible recurrir o bien
al diseño no canónico (por ejemplo, el basado en estructuras o módulos estándar) o bien a la ayuda de
herramientas informáticas (diseño asistido por ordenador).

7.1.1 Método sistemático de análisis

Entendemos por análisis el procedimiento que, partiendo de una realización de un sistema lógico
(esquema circuital, logigrama, etc.), conduce al conocimiento de su funcionalidad; en otras palabras,
analizar un circuito lógico supone ser capaz de especificar de forma completa y normalizada su
funcionamiento.

© 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.
258 Diseño digital
________________________________________________________________________________

n m
x Red z
Combinacional k

q f
r Registro de
estado

CLK Reset

Figura 7.1 Variables en un circuito secuencial síncrono canónico

En este apartado vamos a presentar un procedimiento de análisis aplicable a sistemas secuenciales


síncronos realizados en forma canónica, es decir, como una red combinacional más un conjunto de
biestables sincronizados mediante el mismo reloj (ver figura 7.1). Este método es totalmente
sistemático y se puede esquematizar en los pasos siguientes:

1- Identificación de las variables del sistema. Mediante inspección del circuito, identificar las
variables de entrada (x), de salida (z) y las que caracterizan el estado (q).

2- Identificación de la función (o funciones) de salida z(x,q). Esta función nos permite


conocer el valor de la salida en función de los valores actuales de las entradas y de las
variables de estado. Se puede obtener directamente mediante análisis de la parte combinacional
del circuito.

3- Obtención de las funciones de entrada a los biestables f(x,q). Las entradas a los biestables
del circuito también son función, en general, de las variables de entrada y de estado. Por tanto,
analizando la parte correspondiente del circuito combinacional es posible obtener sus
expresiones.

4- Construcción de las tablas de verdad de las funciones de entrada a los biestables. A partir
de las expresiones algebraicas obtenidas en el paso anterior es inmediato construirlas.

5- Construcción la tabla de verdad de la función de transición de estados q+(x,q). En el paso


anterior hemos obtenido en forma de tabla las funciones de entrada a los biestables. Esta tabla,
juntamente con la de transiciones de los biestables utilizados, permite obtener de forma
inmediata el próximo valor de las variables de estado, con lo que es posible obtener la tabla de
verdad de la función transición de estados.

6- Obtención del diagrama de estados. En el paso anterior se ha obtenido la tabla de la


función transición de estados, mientras que en el paso 2 se había obtenido la de la función de
salida. Con esta información es directa la obtención del diagrama de estados, así como de

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


Diseño de circuitos secuenciales síncronos 259
________________________________________________________________________________

cronogramas, e incluso en algunas ocasiones realizar una interpretación de la utilidad del


circuito.

Los dos ejemplos que siguen a continuación ilustran la aplicación de este procedimiento de análisis a
dos casos concretos.

Ejemplo 7.1

Obtenga una especificación del funcionamiento del circuito secuencial de la figura 7.2.

x2

x1 J Q
z
K Q

Clock

Figura 7.2 Circuito secuencial del ejemplo 7.1

Es evidente que se trata de un circuito secuencial síncrono en forma canónica, puesto que consta
de un único biestable (tipo JK, sincronizado por flanco ascendente) y una red combinacional. Por
tanto, aplicaremos el procedimiento sistemático de análisis descrito.

1- Identificación de las variables: El circuito propuesto tiene dos entradas (x1 y x2) una salida
(z), y una variable de estado (la salida del biestable, Q). Luego son posibles cuatro
combinaciones de entrada, dos de salida y dos estados.

2- Identificación de la función de salida: Por inspección del circuito se obtiene que la salida es
función de una de las entradas y de la variable de estado. Una consecuencia de esto es que se trata
de una máquina de Mealy.

z= Q⋅ x 2 + Q ⋅ x 2 = Q ⊕ x 2

3- Obtención de las funciones de entrada a los biestables: Se observa que las funciones de
entrada a los biestables en este caso concreto dependen únicamente de las entradas del circuito y
no de la variable de estado.

J = x 2 x1 K = x 2 x1

4- Tabla de verdad de las funciones de entrada a los biestables: Es Inmediato obtenerla a partir
de las expresiones algebraicas del paso 3.

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


260 Diseño digital
________________________________________________________________________________

J K
Q X2=X1=0 X2=0 X1=1 X2=1 X1=0 X2=X1=1
0 0 0 0 0 1 0 0 1
1 0 0 0 0 1 0 0 1

5- Tabla de verdad de la función transición de estados: Para escribirla es preciso recordar el


funcionamiento del biestable JK, que mostramos a continuación en forma de tabla de
excitaciones y expresión algebraica.

J K Q+
0 0 Q
Q + = Q J + QK
0 1 0
1 0 1
1 1 Q

Si se conocen los valores de las entradas a los biestables (J, K) en función de los valores de las
entradas (x1, x2) y de la variable de estado (Q) y si también se conoce el valor próximo de la
variable de estado (Q+) en función de Q, J, y K, es fácil obtener una tabla indicando el valor de
Q+ en función de x1, x2 y Q. Esta tabla corresponde a la función de transición de estados.
Podemos integrar en la misma tabla la función de salida, cuya expresión algebraica se obtuvo en
el paso 2.

Q+ , z
Q X2=X1=0 X2=0 X1=1 X2=1 X1=0 X2=X1=1
0 0, 0 0, 0 1, 1 0, 1
1 1, 1 1, 1 1, 0 0, 0

6- Diagrama de estados: La información contenida en la tabla del paso 5 constituye ya una


especificación completa del funcionamiento del circuito de la figura 7.2, por lo que estrictamente
el análisis puede darse por concluido. Ahora bien, a partir de ese resultado es inmediato obtener
el diagrama de estados del sistema, que se muestra en la figura 7.3.

00/0 10/1 00/1


01/0 0 1 01/1
11/1 10/0
11/0

Figura 7.3 Diagrama de estados del circuito del ejemplo 7.1

_________________________________________________________________________________

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


Diseño de circuitos secuenciales síncronos 261
________________________________________________________________________________

Ejemplo 7.2

Obtenga una especificación del funcionamiento del circuito secuencial de la figura 7.4. Indíquese
una posible utilidad del circuito, si las entradas varían a un ritmo muy inferior al del reloj del
sistema.

J1 K1 J 0 K0 CLK
CLK
Q1 Q1 Q0 Q0
OUT
x
1
x z
0

Figura 7.4 Circuito del ejemplo 7.2

Una inspección preliminar de la figura 7.4 permite identificar la parte recuadrada como un
circuito síncrono canónico, por lo que podemos aplicarle el método sistemático de análisis y
realizar las interpretaciones globales a posteriori.

Identificación de las variables: El circuito tiene dos entradas (x1 y x0), una salida (z), y dos
variables de estado (Q1 y Q0). Luego son posibles cuatro combinaciones de entrada, dos de salida
y cuatro estados.

Obtención de la función de salida: Se trata de una máquina de Mealy: la salida es función de las
entradas y de las variables de estado.

z= x1x 0 + x1Q1Q0 + x1x 0 Q1Q0

Obtención de las funciones de entrada a los biestables: En este caso las funciones de entrada a
los biestables dependen únicamente de las variables de estado.

J1 = Q0 K 1 = Q0 J 0 = Q1 K0 = Q1

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


262 Diseño digital
________________________________________________________________________________

Nótese que cada biestable tiene como entradas una misma variable directa y su negada, por lo que
funciona como si fuera de tipo D:

D1 = Q0 D0 = Q1

Tabla de verdad de las funciones de entrada a los biestables: Inmediata a partir de las
expresiones del paso anterior. Nótese que estas funciones son independientes de x1 y x0.

D1 D0
Q1 Q0 X1=X0=0 X1=0 X0=1 X1=1 X0=0 X1=X0=1
0 0 01 01 01 01
0 1 11 11 11 11
1 0 00 00 00 00
1 1 10 10 10 10

Tabla de verdad de la función transición de estados: Para escribirla basta recordar que en un
biestable D el estado siguiente coincide con la entrada actual (Q+=D), por lo que la tabla de
verdad de la función transición de estados será idéntica a la obtenida en el paso anterior, que
reproducimos a continuación añadiendo la función de salida.

(Q1 Q0)+, z
Q1 Q0 X1=X0=0 X1=0 X0=1 X1=1 X0=0 X1=X0=1
0 0 0 1, 0 0 1, 1 0 1, 1 0 1, 1
0 1 1 1, 0 1 1, 1 1 1, 0 1 1, 0
1 0 0 0, 0 0 0, 1 0 0, 0 0 0, 0
1 1 1 0, 0 1 0, 1 1 0, 1 1 0, 0

Diagrama de estados: Inmediato a partir de la tabla anterior. Nótese que la variación de estados
del sistema es automática con el reloj e independiente de las entradas.

00, 0 01 00, 0
01, 1 10, 1 10, 0 01, 1
11, 1 11, 0
00 11
10, 0 10, 1
00, 0 11, 0 11, 0 00, 0
01, 1 10 01, 1

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


Diseño de circuitos secuenciales síncronos 263
________________________________________________________________________________

Interpretación: Dado que por una parte la salida OUT es el producto lógico de z y CLK y por
otra las entradas x1 y x0 tienen una variación lenta respecto a CLK, podemos pensar que la
misión del sistema es realizar algún tipo de manipulación de la señal de reloj. Podemos
comprobar esto mediante un cronograma como el de la figura 7.5.

CLK
x1

x0

Q1

Q0

OUT

Figura 7.5 Cronograma del circuito del ejemplo 7.2

El cronograma revela que, mientras la entrada está fija en los valores x1=1 x0=0, el circuito
elimina uno de cada dos pulsos de reloj, quedando la salida como un reloj cuya frecuencia y ciclo
de trabajo son la mitad de los de CLK. Asimismo cuando las entradas están fijas en x1=x0=1 el
circuito elimina tres de cada cuatro pulsos de reloj, siendo la frecuencia y el ciclo de trabajo de la
salida la cuarta parte de los de CLK.

Puede completarse esta interpretación comprobando que, de acuerdo con el diagrama de estados
o la tabla de verdad del circuito, se tiene OUT=0 (o sea z=0) para x1=x0=0 y OUT=CLK (o sea
z=1) para x1=0 x0=1. Con esto podemos concluir diciendo que el circuito puede utilizarse como
divisor de frecuencia programable.

_________________________________________________________________________________

Ejercicio 7.1

Analice el sistema secuencial de la figura 7.6. Obtenga su diagrama de estados e interprételo


como un detector de secuencia con 4 posibles entradas. Para la codificación de las entradas dada,
encuentre la secuencia a detectar.

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


264 Diseño digital
________________________________________________________________________________

Q1
T Q Z
x1 Q
x0 x1 x Q0 Q1 S
Q0
T Q 0 0 a 0 0 S1
0 1 b 0 1 S2
Q c S3
x0 1 0 1 0
Clk 1 1 d 1 1 S4

Figura 7.6 Sistema y codificaciones del ejercicio 7.1

_________________________________________________________________________________

7.1.2 Método sistemático de síntesis

El método sistemático de síntesis de circuitos secuenciales síncronos que vamos a presentar es el


inverso del método de análisis descrito en el apartado anterior y, por tanto, permite obtener un
circuito síncrono que, mediante biestables y una red combinacional, implementa la especificación
propuesta.

El método consta de tres fases: I) obtención de una especificación normalizada, II) traducción de la
especificación a nivel binario (variables lógicas), y III) obtención y optimización de las funciones de
entrada a los biestables y de salida del sistema. A continuación se indican con detalle los pasos
concretos a seguir:

1- Identificar las entradas, las salidas y los estados del sistema. Dicha identificación debe
hacerse a partir de una primera especificación del funcionamiento del sistema. Con frecuencia
suele ocurrir que la especificación inicial sea verbal o, en general, no normalizada, por lo que
identificar los datos con los que tiene que trabajar el sistema no es siempre inmediato.

2- Construir la tabla de verdad de las funciones de salida y de transición de estados (o su


equivalente en forma de diagrama de estados). Una vez completado este paso se dispone de
una especificación normalizada (basada en el estado) del sistema. Si se desea realizar un
diseño compacto, es conveniente aplicar el método de minimización del número de estados
presentado en el capítulo 6.

3- Codificar las variables del sistema. Es decir, si no lo están ya, traducir a variables lógicas
los conjuntos de entradas, salidas y estados. En ausencia de restricciones concretas es
recomendable codificar utilizando el menor número posible de bits (recuérdese que para
codificar N informaciones son necesarios como mínimo n bits, cumpliéndose que 2n•N). Con
esto la especificación del sistema estará hecha a nivel binario.

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


Diseño de circuitos secuenciales síncronos 265
________________________________________________________________________________

4- Escoger el tipo de biestables a utilizar. Es evidente que la implementación circuital será


distinta en función del tipo de biestables utilizados.

5- Construir la tabla de verdad de las funciones de entrada a los biestables. Se trata de seguir
el mismo procedimiento que en el caso de análisis pero en sentido contrario: a partir de la
tabla de verdad de la función transición de estados q+(x,q) y de la tabla de excitaciones de los
biestables, obtener los valores f(q, x) que es necesario introducir en las entradas de éstos.

6- Una vez obtenida la tabla de verdad de las funciones de entrada a los biestables, es
interesante escribir sus expresiones algebraicas y, eventualmente, simplificarlas. Lo mismo
suele hacerse con las funciones de salida. En ambos casos son aplicables los métodos de
simplificación presentados en capítulos anteriores.

7- Finalmente, y de acuerdo con las expresiones obtenidas en el paso anterior, construir el


esquema lógico resultante.

Al igual que en el caso de análisis, es pertinente ilustrar este método de síntesis con la ayuda de
algunos ejemplos concretos.

Ejemplo 7.3

Diseñe un contador binario módulo 5 (capaz de dar a su salida valores entre 0 y 4, en código
binario) síncrono. El contador tiene dos posibles entradas, "C" (contar) y "NC" (no contar), de
manera que cuando la entrada es "C" el valor de la salida se incrementa con cada período de reloj
siguiendo el ciclo 0,1,2,3,4,0,1... y que cuando toma el valor "NC" la salida permanece fija en el
último valor alcanzado.

Evidentemente es posible utilizar el método de síntesis descrito. Además, como veremos en


seguida, en este caso es fácil obtener una especificación normalizada del funcionamiento del
sistema.

1- Identificación de variables: La entrada sólo puede tomar dos valores, concretamente


x ∈{C, NC}. Por su parte la salida puede tomar hasta 5 posibles valores z ∈{0,1,2,3,4}. En lo
que respecta a los estados internos, podemos optar por un conjunto de estados Si, siendo "i" el
valor hasta el cual ha llegado el sistema contando. Este criterio implica que habrá tantos estados
posibles como salidas: s ∈{s0 , s1 , s2 , s3 , s4 }.

2- Diagrama de estados: Podemos obtenerlo "traduciendo" el enunciado a términos de los


conjuntos de entradas, salidas y estados definidos en el paso anterior, tal como muestra la figura
7.7. El diagrama muestra claramente el funcionamiento del contador. Nótese que se trata de una
máquina de Moore en la que cada estado implica una salida diferente, por lo que su número, de
acuerdo con el método de minimización, ya es mínimo.

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


266 Diseño digital
________________________________________________________________________________

NC NC NC NC NC

S 0 /0 C S 1/1 C S 2 /2 C S 3 /3 C S 4 /4

Figura 7.7 Diagrama de estados de un contador binario módulo 5

3- Codificación de las variables: Como sólo hay dos posibles entradas basta con una variable
lógica (x) para codificarlas. Para los estados Si podemos optar por codificar el valor "i" en
binario, para lo cual necesitaremos tres variables de estado (q2, q1, q0). Como hay tantos estados
como salidas, parece adecuado escoger la misma codificación para las salidas que para los
estados, por lo que harán falta tres variables (z2, z1, z0). Con esto las funciones de salida son
triviales: z2=q2, z1=q1, z0=q0.

Salida o z z z
2 1 0
estado q2 q 1 q 0
S 0 /0 0 0 0 Entrada x
S 1 /1 0 0 1
NC 0
S 2 /2 0 1 0
C 1
S 3 /3 0 1 1
S 4 /4 1 0 0

Figura 7.8 Codificación de las variables del contador

La codificación realizada permite escribir la tabla de funcionamiento del sistema (funciones de


salida y de transición de estados) en términos de variables lógicas. Obsérvese que, al tratarse de
un contador módulo 5, se supone que los tres últimos estados/salidas de la tabla no se darán
nunca y que, por tanto, las transiciones a partir de estos tres estados son indiferentes, aspecto que
se ha recogido en la tabla.

Q2+ Q1+ Q0+


Q2 Q1 Q0 x=0 x=1 z 2 z1 z0
0 0 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 1 0 1 0 0 0 1
0 1 0 0 1 0 0 1 1 0 1 0
0 1 1 0 1 1 1 0 0 0 1 1
1 0 0 1 0 0 0 0 0 1 0 0
1 0 1 X X X X X X X X X
1 1 0 X X X X X X X X X
1 1 1 X X X X X X X X X

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


Diseño de circuitos secuenciales síncronos 267
________________________________________________________________________________

4- Elección de los biestables: Escogemos de forma arbitraria biestables tipo T. Como tenemos
tres variables de estado hacen falta tres biestables. Dado que la salida del contador coincide con
su estado, el esquema básico del circuito será de la forma dada en la figura 7.9, donde sólo falta
realizar las funciones de entrada a los biestables T2, T1, y T0 para completarlo.

Q2
T2 T Q z2
Q
Q1
T1 T Q z1
Clock Q
Q0
T0 T Q z0
Q

Figura 7.9 Organización básica del contador binario módulo 5

5- Tabla de las funciones de entrada a los biestables: Conociendo la tabla de la función


transición de estados y el funcionamiento de un biestable T, es inmediato construir la tabla de las
funciones de entrada de los biestables: recuérdese que un biestable T cambia de estado con T=1
(Q+=QΗT); por tanto, si el valor futuro de una variable de estado debe modificarse con respecto
al actual es necesario un "1" a la entrada del biestable correspondiente. La tabla resultante se
muestra a continuación.

T2 T1 T0
Q2 Q1 Q0 x=0 x=1
0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 1 1
0 1 0 0 0 0 0 0 1
0 1 1 0 0 0 1 1 1
1 0 0 0 0 0 1 0 0
1 0 1 X X X X X X
1 1 0 X X X X X X
1 1 1 X X X X X X

6- Simplificación de las funciones: Se trata de 3 funciones incompletamente especificadas (T2,


T1, T0) de las mismas 4 variables (x, Q2, Q1, Q0). Buscando conseguir una implementación
compacta conviene simplificar dichas funciones. Al aplicar el método de Karnaugh se obtiene el
resultado indicado a continuación.

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


268 Diseño digital
________________________________________________________________________________

T 2 = xQ2 + xQ1Q0 T1 = xQ0 T 0 = xQ2

7- Esquema lógico resultante: A partir de las expresiones algebraicas del paso anterior se obtiene

x T Q z2
Q

T Q z1
Q

T Q z0
Clock Q

Figura 7.10 Esquema lógico del contador binario módulo 5

Ejemplo 7.4

Un determinado sistema secuencial ha sido implementado mediante el circuito de la figura 7.11.


Hállese la especificación de dicho sistema en forma de diagrama de estados mínimo y, si ello es
posible, una implementación más sencilla hecha con biestables D y puertas lógicas.

q1
J Q

x K Q
CLK
z
J Q

K Q
q0

Figura 7.11 Circuito inicial del ejemplo 7.4

El circuito de la figura 7.11 es una máquina de Mealy con una entrada (x), una salida (z) y dos
variables de estado (q1 y q0). Un análisis de la parte combinacional permite obtener las siguientes
expresiones algebraicas.

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


Diseño de circuitos secuenciales síncronos 269
________________________________________________________________________________

J1 = xq1 J0 = x
z = x ⊕ q0
K1 = x K 0 = xq0

Las expresiones anteriores, junto con el conocimiento de la funcionalidad de los biestables JK,
permiten obtener sucesivamente las tablas de verdad de las funciones de entrada a los biestables y
de las funciones de salida y de transición de estados, que mostramos a continuación.

x=0 x=1 + +
q1 q0 , z
q1 q0 J1 K1 J0 K0 J1 K1 J0 K0 x=0 x=1
0 0 0 0 0 0 0 1 1 0 0 0, 0 0 1, 1
0 1 0 0 0 0 0 1 1 1 0 1, 1 0 0, 0
1 0 0 0 0 0 1 1 1 0 1 0, 0 0 1, 1
1 1 0 0 0 0 1 1 1 1 1 1, 1 0 0, 0

En la figura 7.12 se muestra la tabla de verdad y el diagrama de estados del circuito analizado,
tras hacer una decodificación de los estados para simplificar la notación.

1/1
S +, z
S A B
x=0 x=1 0/0 1/0 0/1
A A, 0 B,1
B B, 1 A,0
C C, 0 B,1
D D, 1 A,0 C 1/1 1/0 D
0/0 0/1

Figura 7.12 Tabla de verdad y diagrama de estados del circuito de la figura 7.11

Una forma de simplificar la implementación del sistema es ver si es viable hacerla con menos
biestables, es decir, ver si se puede reducir el número de estados. La aplicación del método de
minimización da lugar a la serie de particiones siguiente, que indica que en realidad basta con dos
estados para especificar el funcionamiento del sistema:

p0 = (A, B,C, D) 
 A ≡ C
p1 = (A,C) (B, D) ⇒  
 B ≡ D
p =p 
2 1

A partir de aquí podemos rediseñar el sistema aplicando el método sistemático de síntesis


utiizando un biestable tipo D. El circuito resultante, mucho más sencillo que el inicial, se muestra
en la figura 7.13.

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


270 Diseño digital
________________________________________________________________________________

q+ , z q+ , z D
q x=0 x=1 q x=0 x=1 x=0 x=1
A A, 0 B,1 0 0, 0 1, 1 0 1
B B, 1 A,0 1 1, 1 0, 0 1 0

D=z =x q

D q
D Q
z
Clock Q
x

Figura 7.13 Tabla de verdad y circuito final del ejemplo 7.4

_________________________________________________________________________________

Ejercicio 7.2

Para el diagrama de estados de la figura 7.14, proponga un diseño con biestables JK.

1/0 1/0

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

Figura 7.14. Diagrama de estados del ejercicio 7.2

Si el diseño propuesto contempla estados que no se dan nunca, realice el análisis de dicho
sistema, y complete el diagrama de estados.
_________________________________________________________________________________

7.2 Módulos secuenciales

En el apartado anterior hemos presentado métodos que permiten analizar y diseñar sistemas
secuenciales síncronos cualesquiera. Sin embargo es evidente que dichos métodos son plenamente
operativos sólo cuando el número de estados y/o variables es reducido. Al igual que ocurría en el caso
de sistemas combinacionales, algunos circuitos de utilización más frecuente se han estandarizado y
existen como módulos específicos ya sea como circuitos integrados comerciales MSI, LSI o bien
formando parte de librerías para entornos de diseño custom VLSI. Los más característicos de entre
estos módulos secuenciales son los registros y los contadores, que serán el objetivo de los próximos
apartados.

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


Diseño de circuitos secuenciales síncronos 271
________________________________________________________________________________

Un aspecto adicional que conviene tener presente es que la existencia de estos bloques estandarizados
permite acometer diseños de mayor complejidad que los que serían abordables razonablemente
mediante el procedimiento de síntesis presentado en la sección anterior.

7.2.1 Registros

Un registro es un circuito secuencial cuya principal función es almacenar un vector de n bits durante
un tiempo indefinido. La figura 7.15 presenta el esquema genérico de un registro de n bits
sincronizado por flanco ascendente.

I
I n-1
... I 1 I0

CLK Registro
RESET
LOAD de n bits
...
Q n-1 Q1 Q0

Figura 7.15 Esquema de un registro de n bits

La descripción del funcionamiento de este registro gira en torno a la entrada LOAD (carga en
paralelo). Así, si LOAD=0 el registro mantiene inalterado su contenido tras el flanco ascendente de la
señal de reloj Qi+=Qi (con 0<i<n-1), mientras que para LOAD=1 tras el próximo flanco ascendente
del reloj los valores de las entradas Ii se cargan en el registro: Qi+=Ii. Una especificación de esta
funcionalidad "síncrona" sería:

 I(i) si LOAD(i) =1
Q + = Q(i + 1) = 
Q(i ) si LOAD(i )= 0

Por otro lado los registros suelen disponer de una entrada adicional de reinicialización (CLEAR o
RESET) que permite cargar de forma asíncrona, es decir, inmediata e independientemente del reloj,
un valor determinado (habitualmente Qi=0). En consecuencia, el funcionamiento síncrono antes
descrito debe entenderse como el que se produce para el valor de la señal RESET=0.

Una posible realización del registro de la figura 7.15, basada en la utilización de biestables D con
entrada asíncrona de reset y multiplexores de dos canales, se propone en la figura 7.16 para n=4 bits.
Con cada flanco ascendente del reloj el valor presente a la entrada Di de cada biestable se transfiere a
su salida; así, para LOAD=1 el valor que se transfiere es Qi+=Ii (carga en paralelo), mientras que para
LOAD=0 el valor transferido es Qi+=Qi (memorización).

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


272 Diseño digital
________________________________________________________________________________

I3 I2 I1 I0

1 0 1 0 1 0 1 0
LOAD s MUX s MUX s MUX s MUX
y y y y

CLK
D D D D
RS RS RS RS
Q Q Q Q
RESET
Q3 Q2 Q1 Q0

Figura 7.16 Realización de un registro mediante biestables D

Ejemplo 7.5

Considere la alternativa de realización de un registro propuesta en la figura 7.17, y compárela con


la de la figura anterior.

I3 I2 I1 I0
CLK
LOAD
D D D D
RS RS RS RS
Q Q Q Q
RESET
Q3 Q2 Q1 Q0

Figura 7.17. Realización alternativa del registro de la figura 7.15

Un primer análisis indica que el funcionamiento del registro coincide con el del anterior. Es decir,
si LOAD=0 no hay flancos de subida a la entrada de reloj de los biestables, y estos mantienen su
estado. En el caso de que LOAD=1, cada flanco de reloj fuerza que el estado de cada biestable se
actualice al valor de la entrada correspondiente.

Es obvio que la circuitería implicada en la realización de este segundo diseño es mucho menor
que en el primero, siendo esta una clara ventaja. Por otro lado, un análisis más pormenorizado
nos permitirá apreciar las diferencias de comportamiento de ambas realizaciones. Si observamos
el cronograma de la figura 7.18

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


Diseño de circuitos secuenciales síncronos 273
________________________________________________________________________________

CLK
t

LOAD
t
CLK .
LOAD Transición Transición no
sincronizada sincronizada t
Qi
t

Figura 7.18. Cronograma de la respuesta del registro de la figura 7.17

Podemos observar claramente en el cronograma que la señal de LOAD no se comporta


sincronizada por el flanco ascendente del reloj, sino por nivel alto. Este puede llevar, como es el
caso de la segunda mitad del cronograma, a una carga en paralelo indeseada (LOAD=0 en los dos
flancos de reloj de esta parte del cronograma). Hay que considerar también que incluso en el caso
de funcionamiento correcto, en la primera parte del cronograma, la puerta AND añade un retardo
a la señal de reloj que puede provocar problemas al conectar este registro a otros bloques
sincronizados con el mismo reloj.
_________________________________________________________________________________

Ejercicio 7.3

Proponga un diseño para un registro con una señal de carga LOAD y una de inicialización
RESET activa a nivel bajo, ambas síncronas. En el caso de que las dos señales sean activas, debe
predominar la de RESET.
_________________________________________________________________________________

7.2.2 Registros de desplazamiento

Existen registros en los cuales es posible no sólo cargar y memorizar la información, sino también
transferirla entre biestables vecinos. Estos registros son llamados de desplazamiento.

Existen distintas maneras de organizar la introducción y/o el acceso a la información almacenada en


dichos registros; concretamente es posible organizar la introducción de datos en serie (uno detrás de
otro por la misma línea) o en paralelo (n datos a la vez por n líneas diferentes), y otro tanto con su
acceso (salida en serie o en paralelo), con lo que tenemos hasta cuatro posibles variantes de formato
entrada/salida.

En la figura 7.19 se muestra, a título de ejemplo, la realización mediante biestables y puertas de un


registro de desplazamiento con entrada en serie y salida en paralelo. El análisis del funcionamiento de

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


274 Diseño digital
________________________________________________________________________________

este circuito es inmediato: con cada flanco ascendente del reloj los bits se desplazan un lugar a la
derecha: (Q3+,Q2+,Q1+,Q0+)=(IN,Q3,Q2,Q1).

Q3 Q2 Q1 Q0

IN D D D D
Q Q Q Q
CLK RS RS RS RS
RESET

Figura 7.19 Realización mediante biestables D de un registro de desplazamiento


con entrada en serie y salida en paralelo

_________________________________________________________________________________

Ejercicio 7.4

Diseñe un detector de secuencia que active su única salida al haber recibido en su entrada la
secuencia 1011. Realízelo mediante el procedimiento general y proponga un diseño alternativo
utilizando un registro de desplazamiento. Compare ambas realizaciones.
_________________________________________________________________________________

Ejemplo 7.6

Analice las modalidades de funcionamiento del registro serie/paralelo de la figura 7.20. Proponga
un diseño alternativo que permita al registro, adicionalmente, realizar cargas síncronas en
paralelo o bloquear el desplazamiento. Proponga también una segunda variante que permita
realizar cargas paralelo asíncronas.

IR IL
1 0 1 0 1 0 1 0
R/L s MUX s MUX s MUX s MUX
y y y y

CLK
D D D D
Q Q Q Q

Q3 Q2 Q1 Q0

Figura 7.20 Registro de desplazamiento del ejemplo 7.6

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


Diseño de circuitos secuenciales síncronos 275
________________________________________________________________________________

Salta a la vista el carácter modular del circuito (la misma estructura se repite cuatro veces), muy
similar al de la figura 7.16, por lo que su análisis se puede particularizar fácilmente para cada bit.
Así, podemos ver que para R / L = 1 el desplazamiento con cada flanco ascendente de reloj es
hacia la derecha (con entrada IR): (Q3+,Q2+,Q1+,Q0+)=(IR,Q3,Q2,Q1), mientras que para
R / L = 0 el desplazamiento es hacia la izquierda (con entrada IL): (Q3+,Q2+,Q1+,Q0+)=
(Q2,Q1,Q0,IL). Es decir, se trata de un registro de desplazamiento serie/paralelo bidireccional
sincronizado por flanco ascendente.

Para incluir más posibilidades síncronas de funcionamiento, como hacer entrada en paralelo o
detener el desplazamiento, podemos mantener la estructura básica compuesta por un multiplexor
más un biestable para cada bit, ampliando el tamaño del multiplexor de forma que admita estas
nuevas variantes (ver figura 7.21).

Qi-1Q i+1
Ii
+
C1 C0 Qi Función
C1 1 3 2 1 0
C0 MUX
0 y 0 0 Qi Parar desp.
0 1 Q i+1 Desp. derecha
CLK
1 0 Q i-1 Desp. izquierda
D
1 1 Ii Carga paralelo
Q

Qi

Figura 7.21 Célula básica de un registro de desplazamiento bidireccional con


carga paralelo síncrona

Finalmente, para obtener un registro que pueda cargar en paralelo de forma asíncrona podemos
utilizar biestables D con puesta a "1" (Preset) y a "0" (Reset) asíncrona y añadir la lógica
combinacional necesaria para evitar las órdenes contradictorias (ver figura 7.22).

Qi+1 Qi-1 Función


LOAD I i PR RS
1 0 0 X 0 0 Funcionamiento síncrono
R/L s MUX 1 1 1 0 Preset (salida a "1")
y
1 0 0 1 Reset (salida a "0")
CLK
D
LOAD RS PR LOAD
Ii Q Ii
Qi

Figura 7.22 Célula básica de un registro de desplazamiento bidireccional con carga paralelo asíncrona

_________________________________________________________________________________

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


276 Diseño digital
________________________________________________________________________________

Ejercicio 7.5

Diseñe, con la misma filosofía del ejemplo anterior, la célula básica para componer un registro de
desplazamiento con las prestaciones y señales de control descritas en la tabla que sigue.

CLR LD SH L/ R Función Modo


+
0 X X X Reset Qi = 0 asíncrono
+
1 1 X X Carga paralelo Qi = Ii asíncrono
+
1 0 1 X Mantener estado Qi = Qi síncrono
+
1 0 0 1 Desplazar izquierda Qi = Qi−1 síncrono
+
1 0 0 0 Desplazar derecha Qi = Qi+1 síncrono

_________________________________________________________________________________

7.2.3 Contadores

Un contador es un bloque secuencial cuya función básica es presentar, en un determinado código, el


número de impulsos de reloj que se han producido a su entrada.

0 0 0 0

1 1 1 ...
S 0/0 S 1/1 S 2 /2 S p-1/p-1

Figura 7.23 Diagrama de estados de un contador módulo p

La figura 7.23 muestra el diagrama de estados típico de un contador módulo p, donde podemos ver
que se trata de una máquina de Moore: la salida depende únicamente del estado actual (z=f[s]). El
funcionamiento es tal que, mientras la entrada (orden de contar) toma el valor "1", el sistema pasa de
un estado al siguiente a cada impulso de reloj, hasta que después de pasar por el estado "p-1" vuelve
al estado inicial "0". Cuando la entrada vale "0", el contaje se detiene y el sistema permanece en el
último estado alcanzado.

Existen diversas variantes de contador en función de cuál es el código de salida. Así, por ejemplo,
podemos encontrar contadores binarios con 2n estados y n salidas (correspondientes a los valores
entre 0 y 2n-1 codificados en binario), contadores decimales con 10 estados y 4 salidas
(correspondientes a la codificación BCD del estado), contadores en código Gray, etc. También es
usual encontrar distintas variantes de funcionamiento: contadores reversibles (es decir,
contadores/descontadores), contadores con carga en paralelo síncrona o asíncrona, etc.

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


Diseño de circuitos secuenciales síncronos 277
________________________________________________________________________________

I3 I2 I1 I0

CE Contador CLR
LD módulo 16
CLK TC

Q3 Q 2 Q 1 Q 0

Figura 7.24 Contador binario módulo 16

La figura 7.24 muestra un esquema típico de contador binario módulo 16. En dicho contador se puede
iniciar el contaje desde un estado determinado por el usuario, para ello se dispone de la señal LD
(carga en paralelo) y las entradas Ii; al activar la señal LD y producirse un flanco ascendente del reloj
se carga en las salidas Qi el valor presente en las entradas Ii, valor a partir del cual se continuará el
recuento cuando LD se desactive y se reciban nuevos impulsos de reloj. La entrada CE habilita la
acción de contar: si CE=0 se interrumpe el recuento y el circuito mantiene su último valor Qi+=Qi. La
entrada CLR (clear) permite cargar, de forma asíncrona, el estado Qi=0.

CLK

CE

CLR

Q0

Q1

Q2

Q3

TC

Figura 7.25 Cronograma de funcionamiento de un contador binario módulo 16

El cronograma de la figura 7.25 ilustra el funcionamiento del contador para LD=0 partiendo de una
inicialización producida mediante la activación de la entrada CLR. Nótese que la orden de detener el
recuento CE=0 es atendida únicamente si dura lo suficiente como para coincidir con un flanco
ascendente del reloj.

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


278 Diseño digital
________________________________________________________________________________

Podemos generalizar este comportamiento para un contador binario módulo 2n en las siguientes
ecuaciones para el estado futuro:

 0 si CLR = 1 (asíncrono)
 I si CLR = 0 y LD = 1
S+ = 
 (S + 1)mod 2n si CLR = 0, LD = 0 y CE = 1
 S si CLR = 0, LD = 0 y CE = 0

La salida TC es una indicación de fin de cuenta, y toma el valor "1", como se observa en el
cronograma, sólo cuando Qi=CE=1. Esta salida permite encadenar contadores de forma sencilla, tal
como podemos ver en la figura 7.26, donde se muestra un contador módulo 256 hecho mediante la
conexión de dos contadores módulo 16.

I3 I2 I1 I0 I7 I6 I5 I4

I I I I I I I I
CE CE 3 2 1 0 C CE 3 2 1 0 C CLR
Contador Contador
LD LD módulo 16 LD módulo 16
CLK Q Q Q Q TC Q Q Q Q TC TC
3 2 1 0 3 2 1 0

Q3 Q 2 Q 1 Q 0 Q7 Q 6 Q 5 Q 4

Figura 7.26 Contador binario módulo 256

Obsérvese que al llegar por primera vez el contador de la izquierda (bits menos significativos) al
valor "15" y existir orden de seguir contando (CE=1), TC valdrá "1", con lo que en el siguiente flanco
de reloj el contador de la derecha (bits más significativos), se incrementará una unidad y permanecerá
detenido hasta que, dieciséis períodos de reloj después, el contador de la derecha vuelva a completar
su ciclo, momento en que volverá a incrementarse, y así sucesivamente.

CE
J K J K J K J K
RS RS RS RS CLR
Q Q Q Q
CLK
TC Q3 Q2 Q1 Q0

Figura 7.27 Contador binario módulo 16 realizado mediante biestables JK

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


Diseño de circuitos secuenciales síncronos 279
________________________________________________________________________________

La realización de contadores con biestables y puertas lógicas no supone ninguna dificultad especial,
por lo que basta con aplicar el método sistemático de síntesis presentado en este mismo capítulo.
Como ejemplo, la figura 7.27 muestra una posible realización mediante biestables JK y puertas AND
de un contador hexadecimal (es decir, binario módulo 16) sin carga en paralelo. Se deja al lector la
reconstrucción de las etapas de su diseño, así como la comprobación del funcionamiento correcto del
circuito.

Nótese que la modularidad del circuito de la figura 7.27 es evidente y que se trata de una estructura
fácilmente ampliable: no hay más que añadir un biestable y una puerta AND por cada nuevo bit.

A su vez, la figura 7.28 muestra la implementación mediante biestables JK y puertas lógicas estándar
del contador binario módulo 16 descrito en la figura 7.24, manteniendo la filosofía modular de su
estructura.

I3 I2 I1 I0
LD

CE

J K J K J K J K
RS RS RS RS CLR
Q Q Q Q
CLK
TC Q3 Q2 Q1 Q0

Figura 7.28 Realización de un contador hexadecimal con carga en paralelo

A pesar de su aspecto aparentemente complejo, el análisis del circuito de la figura 7.28 es


relativamente sencillo. Para ello podemos evaluar las expresiones algebraicas de las entradas de los
biestables.

J 0 = CE ⋅ LD + I 0 ⋅ LD

K 0 = CE ⋅ LD + I 0 ⋅ LD 
 J = CE ⋅ LD⋅Qi ⋅...⋅Q0 + Ii ⋅ LD
J1 = CE ⋅ LD ⋅Q0 + I1 ⋅ LD  ⇒ i
K i = CE ⋅ LD⋅Qi ⋅...⋅Q0 + Ii ⋅ LD
K1 = CE ⋅ LD ⋅Q0 + I1 ⋅ LD

.... 

Podemos ver que para LD=0 el circuito se comporta exactamente igual que el de la figura 7.27,
mientras que para LD=1 las entradas Ji y Ki de cada biestable toman valores complementarios. En
estas condiciones los biestables JK se comportan como biestables D, que permiten la carga en
paralelo.

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


280 Diseño digital
________________________________________________________________________________

 Ji = I i 
LD =1 ⇒   ⇒ Qi+ = Qi K i + Qi K i = (Qi + Qi )I i = I i
K =
 i i I

Ejemplo 7.7

Añada la lógica necesaria para usar el contador hexadecimal de la figura 7.24 como un contador
BCD (sin opción de carga en paralelo).

Para que el contador se comporte como BCD, después de la codificación del 9, debe venir la
correspondiente al cero. Podemos conseguirlo haciendo una carga en paralelo al alcanzar la
cuenta de 9, siempre que CE valga uno. Hay que tener en cuenta que los estados 10 a 15 no se
darán nunca, lo que nos permitirá simplificar el "detector de nueves". La implementación
propuesta en la figura 7.29 cumple estos requisitos.

TC
I3 I2 I1 I0
CE CE C CLR
Contador
LD módulo 16
CLK Q3 Q 2 Q 1 Q 0 TC

Figura 7.29 Realización de un contador BCD

Además, si queremos que el contador sea encadenable, debemos generar una nueva señal de TC,
dado que la interna no se activará nunca. Es sencillo razonar que la misma señal que activa LD
sirve como marcador de final de cuenta.
_________________________________________________________________________________

Ejercicio 7.6

Añada la lógica necesaria para usar el contador hexadecimal de la figura 7.24 como un contador
BCD exceso a 3, sin opción de carga en paralelo.
_________________________________________________________________________________

7.3 Dispositivos lógicos programables

En el capítulo 5 se mencionó la existencia de los módulos lógicos combinacionales programables


(PROM, PLA, PAL, etc). Estos módulos tienen en común el estar compuestos por matrices de puertas
cuyas conexiones pueden ser programadas por el usuario para implementar funciones lógicas.

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


Diseño de circuitos secuenciales síncronos 281
________________________________________________________________________________

De forma análoga existen estructuras compuestas por matrices de puertas lógicas que adicionalmente
disponen de biestables u otros elementos secuenciales, cuyas conexiones son también programables.
Este tipo de estructuras goza de una gran aceptación, y son utilizadas tanto para implementar diseños
secuenciales de una cierta complejidad como para realizar prototipos de sistemas que posteriormente
se implementan mediante otras estrategias.

Las variantes presentes en el mercado son numerosas, y dan lugar a un panorama algo confuso de
denominaciones (PLD, GAL, PAL, EPLD, FPGA, LCA, etc.) que en algunos casos se refieren a
estructuras diferentes y en otros a nombres comerciales dados a un mismo tipo de cicuito por distintos
fabricantes. Puesto que se trata de bloques que conceptualmente son similares, en este texto
utilizaremos para ellos el nombre genérico PLD (programmable logic device, dispositivo lógico
programable).

El diseño de sistemas secuenciales mediante PLD mantiene los rasgos distintivos apuntados en su
momento en el caso de los módulos programables combinacionales. Por un lado la existencia de
dispositivos programables por el fabricante y de dispositivos programables en campo (es decir, por el
usuario); éstos últimos pueden ser programables más de una vez, o no, en función de la tecnología
con la que hayan sido realizados. Por otra parte para trabajar con dispositivos programables en campo
es necesario el concurso de herramientas software de ayuda al diseño y de un grabador que, una vez
completado y simulado el diseño, realice la operación física de programación del PLD.

Ejemplo 7.8

El objetivo es realizar mediante un PLD un circuito que simule el lanzamiento de un dado y


presente el resultado en un display adecuado. Tal como se muestra en la figura 7.30.a, se trata de
un sistema secuencial síncrono con una entrada conectada a un pulsador manual (ON) y siete
salidas (A,B,C,D,E,F,G) conectadas a un visualizador compuesto por siete diodos
electroluminiscentes (LEDs) y la circuitería necesaria para activarlos.

Mientras se acciona el pulsador (ON=1) el circuito sigue la secuencia 1,2,3,4,5,6,1,... al ritmo


marcado por el reloj (lo bastante rápido como para no ser visible), mientras que al soltar el
pulsador (ON=0) la secuencia se detiene en el último valor alcanzado, valor que sí es posible
visualizar. Las seis visualizaciones posibles se muestran en la figura 7.30.b.

a) Circuito b)
Display
de control
A D
ON 7
PLD B G E
CLK A,B,C,..,G
C F
CLR

Figura 7.30 Simulador del lanzamiento de un dado

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


282 Diseño digital
________________________________________________________________________________

El diseño de este circuito secuencial es sumamente sencillo, y se puede realizar en forma de


máquina de Moore utilizando tres biestables. Una posible tabla de estados futuros y salidas sería
la dada en la figura 7.31. Nótese que hay dos combinaciones de las variables de estado que dan
lugar a inespecificaciones.

ON=0 ON=1
Valor Q2 Q1 Q0 Q+ + +
2Q 1Q 0 Q+ + +
2Q 1Q 0 AB CDE FG
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0
3 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 1
4 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0
5 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1
6 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0
- 1 1 0 XXX XXX XX XXX XX
- 1 1 1 XXX XXX XX XXX XX

Figura 7.31 Tabla de verdad del circuito del ejemplo 7.8

Aplicando los métodos habituales de simplificación se llega a las expresiones siguientes para las
funciones de salida y de transición de estados:

A = F = Q2 Q1 Q0
D2 = Q2+ = Q1Q0 ON + Q2 Q0 + Q2 ON
B = E = Q2 + Q0
D1 = Q1+ = Q2 Q1Q0 ON + Q1Q0 + Q1 ON
C = D = Q2 Q1 + Q2 Q0
D0 = Q0+ = Q0 ON + Q0 ON
G = Q0

Estas funciones se han implementado sobre el PLD mostrado en la figura 7.32, donde se dispone
de biestables tipo D incluidos en una estructura aparentemente compleja, pero que en realidad es
una versión muy reducida y simplificada de estructuras disponibles a nivel comercial. Podemos
ver que el PLD consta de una matriz de productos programable, otra de sumas fija, y módulos de
salida compuestos de un biestable más un multiplexor. Se dispone de un máximo de seis entradas,
seis productos adicionales de control de los multiplexores y hasta seis salidas.

Los multiplexores permiten escoger si la salida correspondiente es la dada por la matriz OR o la


dada por el biestable. Nótese que las tres primeras salidas coinciden con las de los biestables (es
decir, con las variables de estado del sistema), mientras que las tres restantes coinciden las
entradas de los tres últimos biestables (y dan lugar a las funciones A, B, C, D, E, y F), con lo
éstos que quedan sin utilizar.

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


Diseño de circuitos secuenciales síncronos 283
________________________________________________________________________________

D2 CLR
D 0
Mux
Q 1
S
RS Q2

ON
D1
D 0
Mux
Q 1
S
RS Q1

1
D0
D 0
Q 1
Mux G
S
RS Q0

D 0
Q 1
Mux A
S
RS

D 0
Q 1
Mux B
S
RS

D 0
Q 1
Mux C
S
RS

CLK

Figura 7.32 Circuito simulador del lanzamiento de un dado realizado con PLD

_________________________________________________________________________________

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


284 Diseño digital
________________________________________________________________________________

Ejercicio 7.7

Determine si es posible realizar un contador como el especificado en la figura 7.24 programando


adecuadamente el PLD de la figura 7.32.

_________________________________________________________________________________

7.4 Memorias RAM

Tradicionalmente se ha venido utilizando la discutible denominación RAM (Random Access Memory,


memoria de acceso aleatorio) para las memorias de lectura y escritura.

Dado que las memorias RAM son evidentemente sistemas secuenciales, es oportuno hablar de ellas
en este capítulo. Ahora bien, como veremos enseguida, se trata de módulos con unos objetivos,
configuraciones y características muy específicos y diferentes a los vistos en los apartados anteriores,
lo que justifica el tratamiento aparte aplicado.

7.4.1 Descripción genérica

Una memoria RAM es un módulo secuencial cuyo objetivo básico es el almacenamiento de


información, incluyendo la posibilidad de lectura y escritura de esta información. Desde un punto de
vista funcional podemos entender una memoria RAM como un conjunto de registros más la
circuitería de control necesaria para transferir al exterior la información almacenada en cualquiera de
los registros (lectura), así como para introducir en un registro concreto la información que se desee
(escritura).

La figura 7.33 muestra un esquema genérico para una memoria RAM de 2kx n bits de capacidad,
donde podemos observar k entradas de dirección (Ak-1,.., A1, A0), n entradas de datos (DIn-1,.., DI1,
DI0), n salidas de datos (DOn-1,.., DO1, DO0), y dos entradas de control: E (habilitación del módulo)
y R/W' (orden de lectura o escritura).

DI n-1 DI 1 DI 0
...

A k-1 E
2k x n
...

A1 RAM
A0 R/W'

...
DOn-1 DO1 DO0

Figura 7.33 Esquema genérico de una memoria RAM

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


Diseño de circuitos secuenciales síncronos 285
________________________________________________________________________________

Si suponemos que la memoria RAM de la figura 7.33 está compuesta por 2k registros de n bits,
podemos comprender fácilmente su comportamiento. Para E=1 es posible efectuar una operación de
lectura y/o escritura, mientras que para E=0 la memoria se limita a almacenar la información
introducida anteriormente. Por otro lado, cuando el módulo es activo, la entrada R/W' controla el
modo de operación, en lectura o escritura. Si R/W'=0 se introduce en el registro señalado por la
dirección A (nótese que hay tantos registros como direcciones distintas) el vector (palabra) presente
en las entradas DI, mientras que para R/W'=1 se vuelca el contenido del registro señalado por A en las
salidas DO. La figura 7.34 muestra, a nivel de bloques, un estructura interna habitual para una
memoria RAM.

DI n-1 DI 1 DI 0
...
2k -1
Decodificador

A k-1
2k x n
binario

...
...

células R/W'
A1 1
A0 de memoria
0
...
E
Registro de palabra OE
...
DOn-1 DO1 DO0

Figura 7.34 Esquema de bloques de una memoria RAM

Nótese que una memoria RAM es, en principio, un sistema secuencial asíncrono: su funcionamiento
no está gobernado por ningún reloj externo. Además, en la práctica suele ser conveniente que los n
bits resultado de una operación de lectura estén disponibles en determinados instantes de tiempo (ello
se debe a que normalmente estos bits se introducen en una línea de comunicación en paralelo -BUS-
compartida por diferentes sistemas en diferentes instantes de tiempo); por ello se incluye en el
esquema de la figura 7.34 un registro de palabra: un registro tipo latch (cerrojo, nombre dado
frecuentemente a un registro sincronizado por nivel) con salidas tri-state, de manera que para OE=0
las salidas DO quedan en alta impedancia (dejando la memoria aislada), y que para OE=1 la palabra
leída se transmite al BUS. Este registro con salida tristate permite usar las mismas conexiones físicas
con el exterior del módulo para las entradas y salidas de datos. La señal OE puede ser una señal de
control accesible desde el exterior, o bien ser activa durante toda la operación de lectura, esto es,
OE=E.R/W'.

Ejemplo 7.9

El presente ejemplo ilustra la posibilidad de encadenar memorias RAM con el objetivo de obtener
memorias de mayor capacidad. Concretamente, vamos a obtener una memoria de 1Mx4 bits a
partir de los módulos RAM de 256kx1 bits (ver figura 7.35).

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


286 Diseño digital
________________________________________________________________________________

DI 3 DI 1 DI 0
a) ... b) DI

A 19 20 E A 17
2 x4 218x 1 E

...

...
A1 RAM A1
R/W' RAM
A0 A0 R/W'
...
DO3 DO1 DO0 DO

Figura 7.35 Elementos del ejemplo 7.9

La solución se muestra en la figura 7.36. Nótese que para totalizar la capacidad requerida es
necesario utilizar 16 módulos de 256kx1, que se han dispuesto en cuatro columnas (tantas como
bits de salida) y cuatro filas, de modo que los dos bits más significativos de la dirección (A19 y
A18) son fijos para cada fila. El resto de la dirección (A17, ..,A0), así como la señal R/W', llega
por igual a todos los módulos. Las salidas de cada bloque pueden ser conectadas entre sí si
aseguramos que nunca será activa más de una a la vez, y se trata de salidas tristate.

DI 3 DI 2 DI 1 DI 0

218x n DI 218x n DI 218x n DI 218x n DI


E RAM DO RAM DO RAM DO RAM DO
Decodificador

E E E E
0
A 19 1 1
218x n DI 218x n DI 218x n DI 218x n DI
2
A 18 0 RAM DO RAM DO RAM DO RAM DO
3 E E E E

A 17 218x n DI 218x n DI 218x n DI 218x n DI

RAM RAM RAM RAM


...

DO DO DO DO
A1 E E E E

A
0
218x n DI 218x n DI 218x n DI 218x n DI

R/W' RAM DO RAM DO RAM DO RAM DO


E E E E

DO 3 DO 2 DO1 DO0

Figura 7.36 Ejemplo de encadenamiento de memorias

_________________________________________________________________________________

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


Diseño de circuitos secuenciales síncronos 287
________________________________________________________________________________

Ejercicio 7.9

Modifique la estructura de encadenamiento del ejemplo anterior para el caso en que las salidas de
datos de las memorias no sean del tipo tristate, añadiendo la lógica necesaria.
_________________________________________________________________________________

7.4.2 Memorias MOS dinámicas y estáticas

La sugerencia anterior de que en una memoria RAM cada palabra se almacena en un registro es
funcionalmente correcta, pero irreal con respecto a su implementación. Si pensamos que un registro
utiliza un biestable para almacenar cada bit se llega a la conclusión de que las memorias RAM están
formadas por matrices de biestables; ahora bien, esto choca frontalmente con un requisito típico de
este tipo de módulos: maximizar la capacidad por unidad de superficie. Esto en la práctica ha llevado
al uso de estructuras de memorización de un bit de tamaño mucho menor que un biestable.

En función del tipo de memorizador unitario (o célula de memoria) existen dos tipos de memorias
RAM, las estáticas (SRAM) y las dinámicas (DRAM). Las memorias SRAM utilizan células que
permiten almacenar por un tiempo indefinido la información grabada. Por el contrario, las DRAM son
capaces de almacenar la información solamente durante un tiempo limitado.

Como veremos enseguida, una célula de memoria SRAM utiliza un mínimo de 6 transistores MOS
para almacenar un bit de información, número que puede reducirse hasta 2 o 3 en el caso de una
memoria DRAM. Por tanto es aparente que las memorias dinámicas permiten una mayor capacidad a
igual número de transistores.

En la figura 7.37 se muestra el esquema básico, a nivel circuital y físico, de una célula de memoria
dinámica: una capacidad de puerta más un transistor de paso que regula su carga/descarga. La
información se almacena en forma de carga introducida en la capacidad de puerta, carga que se
mantiene aislada (memorización) cuando se pone en corte el transistor de paso.

Vc Vx
Vc
...

... ...
... Vx n+ n+ n+ n+
p IS p
Cg

Figura 7.37 Célula dinámica de memorización

Sin embargo, existen caminos de fuga de la carga almacenada: nótese que existe una unión PN
polarizada en inversa entre el nodo Vx y el substrato del transistor de paso (conectado a masa); luego

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


288 Diseño digital
________________________________________________________________________________

si se memoriza un "1" (Vx=VDD) la carga almacenada en Cg se irá perdiendo a través de la corriente


inversa de saturación, con lo que la tensión Vx disminuirá progresivamente. Por lo tanto, si queremos
mantener la información un tiempo indefinido deberemos regrabarla periódicamente, es decir, prever
mecanismos de refresco.

Ejemplo 7.10

Si en el circuito de la figura 7.37 se tiene Cg=1pF, VTN=1V y VDD=5V, hágase una estimación
del tiempo que tarda en descargarse totalmente la capacidad si la corriente inversa de saturación
de la unión drenador-substrato del transistor de paso es IS=1nA.

La carga almacenada en la capacidad Cg es

Q = Cg ⋅ (V DD − VTN ) =10 −12 F⋅ 4V = 4⋅10−12 C

En consecuencia, el tiempo que a razón de 10-9C/s tardará Cg en descargarse es

4 ⋅10−12 C
t= = 4 ms
10 −9 A
_________________________________________________________________________________

Las células estáticas de memorización se basan en la estructura elemental mostrada en la figura 7.38.
El almacenamiento de la información se realiza utilizando las capacidades de entrada de dos
inversores realimentados (la salida de cada uno de ellos conectada a la entrada del otro) a través de un
interruptor. Un primer análisis de la estructura revela que para el valor de la señal de control C1=1 se
tiene, tras la correspondiente carga/descarga de las capacidades por acción de los inversores, O'=I
(fase de grabado o carga de la información). Asimismo, para C1=0 se cierra el bucle de
realimentación y se tiene O'=x, siendo "x" el valor cargado en la capacidad de entrada del primer
inversor (fase de memorización). Por otro lado, la señal de control C2 controla la lectura del valor
almacenado en la célula, O=O' (fase de lectura).

x x O'
I O

C1 C2

C1

Figura 7.38 Célula estática de memorización

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


Diseño de circuitos secuenciales síncronos 289
________________________________________________________________________________

Podemos notar además que la carga almacenada en las dos capacidades será estable, puesto que los
transistores de los inversores tienden a compensar las posibles fugas. A modo de ejemplo la figura
7.39 muestra el caso concreto de una realización CMOS en fase de memorización de un "1": el
transistor NMOS del primer inversor conduce y asegura la descarga de CI1, mientras que el transistor
PMOS del segundo inversor también conduce y asegura la estabilidad de la carga almacenada en C I2.

0 V DD
OUT

CI1 CI2

Figura 7.39 Célula de memorización estática CMOS almacenando un "1"

Ejemplo 7.11

En la figura 7.40 se muestra el esquema de una célula de memoria RAM dinámica realizada con
4 transistores nMOS.

SEL

T1 T2
T3 T4
B B'
Cg3 Cg4

Figura 7.40 Célula de memoria dinámica de 4 transistores

Procedimiento de escritura: Para escribir un "1", la línea B debe ponerse a "1" (VDD) y B' a "0".
En el caso contrario (escribir un "0"), debe ponerse B=0 y B'=1. Para centrar ideas veamos el
caso concreto de escribir un "1".

Una vez se tiene B=1 y B'=0 se tiene que habilitar, es decir, poner en conducción, los transistores
de paso T1 y T2. De esta forma los valores de tensión en B y B' se propagarán hasta cargar las
capacidades de puerta de T3 y T4; es decir, habrá un "1" en Cg4 y un "0" en Cg3. Por último hay

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


290 Diseño digital
________________________________________________________________________________

que poner en corte los transistores T1 y T2, con ello la información queda almacenada en forma
de carga en Cg3 y Cg4, o si se prefiere, como valores de tensión en las puertas de T3 y T4.

Procedimiento de lectura: En primer lugar deben precargarse a "1" las dos líneas B y B'. A
continuación se ponen en conducción los transistores T1 y T2. En función de cuál de los dos
transistores T3 o T4 tenga un "1" en su puerta, se descargará una de las dos líneas.

Para fijar ideas, supongamos que se ha almacenado en la célula un "1" (por tanto, la puerta de T4
está a "1" y la de T3 a "0"). Al conducir simultáneamente los transistores T1 y T4 la linea B' se
descargará mientras que la linea B se mantendrá a "1". A continuación se vuelve a aislar la célula
cortando los transistores de paso T1 y T2. En función de los valores finales de tensión en la líneas
B y B' sabremos si hemos leído un "1" (caso de nuestro ejemplo) o un "0" (caso opuesto).
_________________________________________________________________________________

Ejercicio 7.9

La figura 7.41 muestra una célula de memoria RAM estática de 6 transistores. El funcionamiento
de dicha célula es, en líneas generales, análogo al descrito para la célula dinámica de la figura
7.41. La única diferencia estriba en que, en este caso, el mantenimiento de la información está
garantizado por los dos inversores. Analice detalladamente sus procedimientos de carga y
descarga. ¿Es necesaria una precarga de las líneas B y B' al hacer una lectura?

SEL

VDD

T1
T2

B Cg2 B'
Cg1

Figura 7.41 Célula de memoria estática de 6 transistores

_________________________________________________________________________________

Cuando, como en el caso de las células de memoria presentadas, la transmisión de la información


implica cargar y/o descargar capacidades, existe un factor que puede afectar decisivamente su
funcionamiento y que debe tenerse en cuenta: la compartición de carga.

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


Diseño de circuitos secuenciales síncronos 291
________________________________________________________________________________

Para ver en qué consiste consideremos la estructura de la figura 7.42, donde tenemos una pista
conductora con una capacidad Ca respecto del sustrato puesta a tensión Va y aislada del resto del
circuito. En un cierto momento conectamos la pista a un circuito (por ejemplo, con la intención de
"leer" la tensión Va), que modelamos como una capacidad Cb puesta inicialmente a tensión Vb.

Va Vb

Ca Cb

Figura 7.42 Fenómeno de la compartición de carga

Es evidente que la carga existente en la estructura después de la conexión es la misma que


almacenaban las capacidades Ca y Cb cuando inicialmente estaban aisladas, es decir

Qa = Ca Va Qb = Cb Vb

También es evidente que después de la conexión tenemos una estructura formada por dos capacidades
en paralelo, cuya capacidad y tensión globales serán

C T = C a + Cb  C aVa + C bV b
V a final = QT / CT  ⇒ a final = C + C
V
 a b

La conclusión a extraer de este resultado es obvia. Si queremos que la lectura no afecte al dato
(tensión) almacenado en Ca, hay que cumplir dos condiciones: CaVa<<CbVb y Ca<<Cb.

Nótese que este fenómeno afecta al funcionamiento de todas las células de memoria, dinámicas y
estáticas, presentadas, donde la lectura o escritura de un dato puede verse en términos de traslado de
carga de unas capacidades a otras.

7.5 Cuestiones y problemas

Cuestiones

C7.1 Resuelva el ejercicio 7.2 usando distintas codificaciones para los estados. Compare las
soluciones encontradas.

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


292 Diseño digital
________________________________________________________________________________

C7.2 Una implementación para un sistema secuencial, llamada One-Hot, consiste en usar
codificaciones "1 entre n" (código redundante) para sistemas con n estados internos. Encuentre una
implementación One-Hot para el ejercicio 7.2, con biestables de tipo D.

C7.3 Usando las tablas intermedias de resultados de la cuestión anterior, escriba las ecuaciones que
relacionan el estado futuro de cada biestable con las entradas y el estado, esto es,
+
Qi = f ( Q0 ,..., Qn , x0 ,..., x m ) . Intente relacionar la ecuación de los estados futuros con las ramas que
llegan a cada estado en el diagrama de estados. ¿Puede proponer un método para encontrar una
implementación One-Hot directamente a partir del diagrama de estados?

C7.4 Considere el funcionamiento del siguiente sistema, cuya misión es encontrar la diferencia entre
dos valores consecutivos que toma una variable (sistema de interés a la hora de compactar la
información en señales que varian lentamente con respecto al reloj).

n
X
Paralelo 1
Registro

restador
Módulo
m
²X
Paralelo 2
Registro

Clk

Analice su funcionamiento en el caso de que el reloj que controla el registro 2 estuviera


apreciablemente retrasado (retraso comparable o superior al tiempo de respuesta de los registros)
con respecto al que controla el registro 1. Compare este funcionamiento con el ideal.

C7.5 Generalice, a partir de la respuesta de la cuestión anterior, el tipo de problemas que pueden
provocar retardos en el reloj dentro de sistemas con diversos bloques sincronizados.

i j k
Bloque 1

Bloque 2

X Z

Clk

C7.6 Disponiendo de un contador hexadecimal, sin posibilidad de carga en paralelo pero con un reset
asíncrono, proponga una realización de un contador BCD, y compárela a la del ejemplo 7.7.

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


Diseño de circuitos secuenciales síncronos 293
________________________________________________________________________________

C7.7 Discuta el interés del esquema de encadenamiento de contadores propuesto en la siguiente


figura, y compárelo con el de la figura 7.26.

Contador Contador
módulo 16 módulo 16 Clk
Q Q Q Q Q Q Q Q
3 2 1 0 3 2 1 0

Q Q Q Q Q Q Q Q
7 6 5 4 3 2 1 0

C7.8 Modifique la implementación propuesta en el ejercicio 7.6 para para obtener un contador BCD
exceso 3 con posibilidad de carga en paralelo síncrona.

C7.9 Considere los dos esquemas de decodificación de la figura para una RAM de 1kbit (1024 bits).

A9 A8 A5
E
1023 E Decodificador
1022 012 31
Decodificador

A9
Decodificador

31
Celdas

A8 A4 30
A3
Celdas
A0 3 3
2 2
1 A0 1
0 0

a) Decodificación simple b) Decodificación doble

Compárelos en términos de los transitores necesarios para hacer una implementación CMOS de
los decodificadores. Si la complejidad añadida a cada célula unitaria de memoria en el esquema
de decodificación doble, o coincidente, respecto a la simple es de dos transistores, ¿cuál de ellos
es más ventajoso?

C7.10 ¿Cómo afectaría al resultado del ejemplo 7.10 que la puerta de transimisión que controla la
carga o descarga de la capacidad fuera CMOS, en vez de NMOS? ¿Y si se tratara un transistor de
paso PMOS?

Problemas

P7.1 Analice la red secuencial de la figura. Obtenga su diagrama de estados. Obtenga una
implementación alternativa con biestables de tipo D y puertas lógicas elementales.

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


294 Diseño digital
________________________________________________________________________________

0 3
x

Mux
2
y 1 y J Q Q
1
xy 0
1 0 Q
K
3
QQ 1

Dec
1 0 2
z
0 1
x 3
0

Mux
1 2
y 1 y J Q Q
0
x 0
1 0 Q
K
QQ Clk
1 0

P7.2 Considere el siguiente sistema secuencial síncrono. Analícelo, y dé, si es posible, una
descripción de alto nivel. Discuta la necesidad de una entrada de reset para dicho sistema.

qa X0 qa
Multiplexor

X D
Q
x0 X1 z0
Dual

qb Y0
Y D qb
qa x1 Y1 Q
A0 z1
Comparador

S
qb A1
A>B D qc
x0 B0 Q
x1 B1

Clk

P7.3 Diseñe un sistema secuencial síncrono con la siguiente tabla de transición de estados.

s x=0 x=1
A B,a F,b
B C,a A,c
C D,a B,b
+
D E,b C,c s ,z
E F,b D,b
F G,c E,c

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


Diseño de circuitos secuenciales síncronos 295
________________________________________________________________________________

P7.4 Diseñe un contador/descontador de 3 bits encadenable. Esto es, con salida de fin de cuenta TC y
entrada de habilitación CE. Considere una entrada adicional U / D que indique si el contador avanza,
U / D =1, o retrocede, U / D =0 cuando CE está activa. Nótese que la salida TC debe activarse
también cuando al descontar se pasa del estado "000" al "111".

P7.5 El siguiente circuito es llamado contador de Moebius o de doble secuencia, realizado, en este
caso, con un registro de desplazamiento. Obtenga su diagrama de estados. Proponga una
implementación con menos biestables del mismo sistema. La señal CLR del registro es asíncrona.

CE SH
RESET CLR Clk

Z3 Z2 Z1 Z0

P7.6 Implemente un contador en anillo de 8 estados. Este tipo de contador tiene 8 salidas, de las
cuales sólo una es activa en cada estado. Proponga una realización aplicando el método de diseño de
sistemas secuenciales síncronos, otra, a partir de registros de desplazamiento con capacidad de carga
en paralelo, y aun una tercera con un contador binario y un decodificador.

P7.7 Analice el funcionamiento del siguiente circuito asimilándolo al de algún bloque de los
presentados en este capítulo, en el caso en que las señales CLK1 y CLK2 nunca son activas a la vez,
es decir, CLK1.CLK2=0. ¿Con qué reloj observamos el sincronismo a la salida?

CLK1 CLK2 CLK1 CLK2

IN OUT

Proponga, con la misma filosofia de registro dinámico con puertas de transmisión e inversores y
dos fases de reloj, una realización de un registro de desplazamiento de 4 bits con capacidad de
carga en paralelo.

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


296 Diseño digital
________________________________________________________________________________

P7.8 Usando un contador como el descrito en la figura 7.24, aquí repetida, consiga un módulo
contador con las siguientes secuencias:

I I I I
CE 3 2 1 0 C
Contador
LD módulo 16
Q Q Q Q TC
3 2 1 0

a) Contador módulo 13

b) Contador entre 4 y 11

c) Secuencia de salidas ...,0,1,2,3,4,5,8,9,10,11,14,15,0,...

P7.9 Utilizando un reloj de período 1 segundo, un contador binario de 5 bits con capacidad de carga
en paralelo y la lógica que sea necesaria, implemente un sistema secuencial síncrono para un
marcador de treinta segundos de un partido de baloncesto. El sistema debe tener 2 entradas: la
primera, R, debe inicializar el contador a 30 independientemente del valor de la otra; la segunda, D,
debe permitir al contador descontar, o no. Así, si D=1 el marcador quedará parado, mientras que si
D=0 el marcador deberá descontar segundos. El sistema tiene una sola salida que activa una bocina
cuando el marcador llega a cero. Nota: Un contador con salidas activas bajas se comporta como un
descontador.

P7.10 Considere el sistema secuencial de la figura siguiente, donde las señales CE del contador, y LD
del contador y del registro son síncronas y tienen su significado habitual, es decir, habilitación para
contar y carga en paralelo.
Address
REGISTER

8 8 4
X RAM Dout In 4-bit
P/P

256x4 COUNTER CLK


Din 4
CLK Out
LD R/W LD CE

LD1
M1 LD2
CNT
CLR W z
RESET

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


Diseño de circuitos secuenciales síncronos 297
________________________________________________________________________________

a) Diseñe el módulo de control M1 para que sus salidas sigan el cronograma mostrado a
continuación, usando el método propuesto en este capítulo.

CLK

LD1

LD2

CNT

b) Explique el funcionamiento del sistema, analizando cómo varían los contenidos de cada
posición de memoria al cabo de un ciclo completo del módulo M1. ¿Qué indica la salida z?
Suponga que la entrada x varía mucho más lentamente que el reloj y dé una descripción de alto
nivel del sistema.

P7.11 Considere el circuito de la figura siguiente, donde la parte encerrada por la línea de puntos
corresponde a un único circuito integrado. El contenido de la memoria ROM está indicado en la tabla
de verdad incluida más abajo.

a3
Registro

a 2 ROM y1 2 2 q2
a 1 16x2 y 1 1 q1
0
a0 0 0 q0
LD
x0
x1
CLK

a3 a2 a1 a0 y1 y0 a3 a2 a1 a0 y1 y0
0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 1 0 1 1 0 0 1 1 1
0 0 1 0 0 0 1 0 1 0 1 0
0 0 1 1 0 0 1 0 1 1 1 0
0 1 0 0 0 1 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 0 0
0 1 1 0 0 1 1 1 1 0 1 1
0 1 1 1 0 1 1 1 1 1 1 1

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


298 Diseño digital
________________________________________________________________________________

Se pide:

a) Analice el funcionamiento del circuito, obteniendo su diagrama de estados, si se hace la


suposición de que la entrada x1 está fija en el valor "1".

b) ¿Cómo se altera el funcionamiento del circuito si x1 puede variar? Obtenga el diagrama


de estados para esta situación modificando el obtenido en el apartado anterior.

c) Debido a un error en la fabricación del circuito integrado existe un cortocircuito


permanente entre la entrada y la salida del inversor, de forma que la señal x0 queda conectada
directamente a la entrada de menos peso del registro. Esta anomalía provoca un funcionamiento
incorrecto del circuito. Para corregir este defecto se sugiere insertar una red combinacional en las
líneas que van del registro a la ROM (que son externas al cicuito integrado). ¿Es viable esta
solución? Si la respuesta es afirmativa, diseñe el circuito corrector utilizando el menor número
posible de puertas NOR.

P7.12 El siguiente layout corresponde a una célula de memoria RAM. Determine si se trata de una
célula dinámica o estática. La línea de datos es la pista llamada BIT que, en el caso de una lectura,
deberemos precargar a V DD; mientras que en una escritura, forzamos en ella el valor a memorizar.
Explique su funcionamiento, sabiendo que las señales WR y RD nunca pueden estar activas en el
mismo instante.

WR RD

BIT

VSS

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


Diseño de circuitos secuenciales síncronos 299
________________________________________________________________________________

P7.13 Pretendemos estudiar los problemas asociados al fenómeno de compartición de carga en el


circuito de la figura.

V
DD

Φ Φ V
DD
A
CA
t
IN OUT IN V
DD
T3 CO
B
Φ CB t1 t2 t3 t

Se pide:

a) ¿Qué función lógica realiza el circuito? Suponiendo un funcionamiento ideal, es decir sin
efectos resistivos, capacitivos y/o inductivos, obtenga el cronograma de la señal de salida OUT
correspondiente a la evolución de las entradas dada en la figura. (Nota): Suponga que el valor
inicial de OUT es 0 V.

b) Si ahora consideramos que las pistas de conexión son no ideales y que tienen las
capacidades indicadas en la figura (para simplificar, tómese CA=CB=CO), calcule el valor de la
tensión en los nodos A, B y OUT una vez alcanzado el régimen permanente dentro del intervalo
(t1,t2). Repita el cálculo para el intervalo (t2,t3).

c) Repita el cálculo del apartado anterior para el intervalo (t3,∞ ). Compare este resultado
con el obtenido en el apartado (a). Proponga algún cambio en el diseño del circuito que elimine,
si es posible, las diferencias con el caso ideal.

d) Suponga que la salida OUT se conecta a la entrada de otra puerta con VIH=0,7xVDD.
¿Cuál es el valor máximo de capacidad de entrada de dicha puerta que puede tolerarse sin que
haya problemas de niveles de tensión en el cronograma estudiado?

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

Você também pode gostar