Escolar Documentos
Profissional Documentos
Cultura Documentos
________________________________________________________________________________
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.
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).
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
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).
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.
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
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.
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
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
_________________________________________________________________________________
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
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.
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
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
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
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
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
_________________________________________________________________________________
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.
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.
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.
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.
NC NC NC NC NC
S 0 /0 C S 1/1 C S 2 /2 C S 3 /3 C S 4 /4
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
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
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
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
Ejemplo 7.4
q1
J Q
x K Q
CLK
z
J Q
K Q
q0
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.
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
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
_________________________________________________________________________________
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
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.
_________________________________________________________________________________
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.
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
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).
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
Ejemplo 7.5
I3 I2 I1 I0
CLK
LOAD
D D D D
RS RS RS RS
Q Q Q Q
RESET
Q3 Q2 Q1 Q0
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
CLK
t
LOAD
t
CLK .
LOAD Transición Transición no
sincronizada sincronizada t
Qi
t
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.
_________________________________________________________________________________
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.
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
_________________________________________________________________________________
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
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
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).
Figura 7.22 Célula básica de un registro de desplazamiento bidireccional con carga paralelo asíncrona
_________________________________________________________________________________
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.
_________________________________________________________________________________
7.2.3 Contadores
0 0 0 0
1 1 1 ...
S 0/0 S 1/1 S 2 /2 S p-1/p-1
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.
I3 I2 I1 I0
CE Contador CLR
LD módulo 16
CLK TC
Q3 Q 2 Q 1 Q 0
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
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.
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
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
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
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.
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
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.
_________________________________________________________________________________
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
a) Circuito b)
Display
de control
A D
ON 7
PLD B G E
CLK A,B,C,..,G
C F
CLR
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
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.
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
_________________________________________________________________________________
Ejercicio 7.7
_________________________________________________________________________________
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.
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
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
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).
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
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
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
DO DO DO DO
A1 E E E E
A
0
218x n DI 218x n DI 218x n DI 218x n DI
DO 3 DO 2 DO1 DO0
_________________________________________________________________________________
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.
_________________________________________________________________________________
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
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
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.
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
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
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
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
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
_________________________________________________________________________________
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
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.
Cuestiones
C7.1 Resuelva el ejercicio 7.2 usando distintas codificaciones para los estados. Compare las
soluciones encontradas.
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
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.
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
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.
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
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?
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.
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
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
LD1
M1 LD2
CNT
CLR W z
RESET
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
Se pide:
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
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?