Fundamentos de Lógica digital. Sesión 28. Retardo de propagación.
Ejercicios.
PROBLEMA: Determinar si el siguiente contador es simétrico o asimétrico.
Obtenemos primero la secuencia natural del contador que es la siguiente:
La salida del circuito está determinada por el último flip-flop, Q3. El diagrama de tiempos de
la salida del último flip-flop, obtenida directamente de la secuencia del contador arriba
expuesta, junto con los pulsos de "reloj" a la entrada del circuito que producen dicha salida,
es como sigue:
Puesto que un contador es simétrico solo si la forma de la señal de salida es simétrica para
una entrada igualmente simétrica y uniforme de pulsos, podemos ver que el contador es
asimétrico, con una asimetría 3:2.
PROBLEMA: Obtener la tabla de secuencias producida por el siguiente contador:
suponiendo que los flip-flops J-K utilizados son activados en sus cambios de estado por una
transición positiva (de "0" a "1") en su terminal de "reloj", pero suponiendo también que la
combinación de valores J=0 y K=0 se mantiene como la combinación que hace que el flip-
flop J-K cambie de estado cada vez que hay una transición positiva en la terminal de "reloj".
Supóngase que el estado inicial del contador es Q3Q2Q1=000.
Suponiendo que el estado inicial del contador es Q3Q2Q1=000, al ir la terminal de entrada de
"0" a "1" el primer flip-flop cambiará de estado de Q1=0 a Q1=1. Pero como la salida del
primer flip-flop está alimentando la terminal de entrada C del segundo flip-flop, al ir de "0"
a "1" esto cambiará el estado del segundo flip-flop de Q2=0 a Q2=1. Y como la salida del
segundo flip-flop está alimentando la terminal de entrada C del tercer flip-flop, al ir de "0" a
"1" el tercer flip-flop cambiará de estado de Q3=0 a Q3=1 . Todo el contador pasará del estado
Q=Q3Q2Q1=000 al estado Q3Q2Q1=111. Al siguiente pulso de "reloj" en la terminal
principal de entrada C, únicamente cambiará el estado del primer flip-flop pasando de Q1=1
a Q1=0, lo cual no tendrá efecto alguno sobre el segundo flip-flop y a su vez tampoco
producirá efecto alguno en el tercer flip-flop. El contador pasa pues del estado Q3Q2Q1=111
al estado Q3Q2Q1=110. Al siguiente pulso, el primer flip-flop cambia de estado de Q1=0 a
Q1=1, lo cual cambiará el estado del segundo flip-flop de Q2=1 a Q2=0, lo cual no tendrá
efecto alguno sobre el tercer flip-flop. Así, el contador pasará del estado Q3Q2Q1=110 al
estado Q3Q2Q1=101. Repitiendo el análisis, logramos obtener la siguiente tabla de
secuencias:
No nos debe llevar mucho tiempo para reconocer en base a esta tabla de secuencias que este
contador es un contador binario de conteo descendente, un contador binario que va contando
"hacia abajo" en lugar de ir contando "hacia arriba". Pero si repasamos los problemas
anteriores, encontraremos uno en el cual estudiamos precisamente este mismo circuito,
excepto que en dicho problema se comportaba como un contador binario de conteo
ascendente. El giro radical en el comportamiento del circuito se dió porque en vez de utilizar
flip-flops J-K en los cuales el cambio de estado ocurre cuando la transición en la terminal de
reloj es una transición negativa utilizamos ahora flip-flops J-K en los cuales la transición
positiva en la terminal de reloj C es la que produce el cambio de estado. Al llevar a cabo un
diseño, la especificación de los flip-flops a ser utilizados, ya sea flip-flops activados por una
transición negativa o flip-flops activados por una transición positiva, se vuelve tan importante
como el diseño mismo, ya que cualquier ambigüedad en dejar clara esta especificación puede
arruinar el propósito del diseño produciendo un circuito secuencial con un comportamiento
que puede ser completamente inesperado.
Retardo de propagación
PROBLEMA: ¿Qué es una línea de retardo?
Considérese la siguiente configuración:
Aparentemente, la combinación arriba mostrada no lleva a cabo ninguna función útil, ya que
la información que es invertida por el primer inversor vuelve a ser invertida por el segundo
inversor obteniéndose así a la salida la información original a la entrada sin cambio alguno.
Sin embargo, un momento de reflexión nos indica que tenemos a la mano una variable que
no habíamos considerado hasta ahora. Sabemos de antemano que, al introducir información
binaria a la entrada de un inversor, es físicamente imposible que aparezca instantáneamente
la respuesta a la salida del mismo. En efecto, antes de llegar al límite impuesto por la
velocidad de la luz, entran en juego otros parámetros físicos relacionados con las cuestiones
eléctricas (tales como la inductancia y la capacitancia) que ponen un límite a la velocidad de
respuesta del inversor. Esto es, hay un retardo de tiempo introducido por el inversor.
Dependiendo de la familia lógica utilizada, cada circuito integrado tendrá un retardo en la
propagación de la señal desde su entrada hasta su salida conocido en las especificaciones
técnicas como retardo de propagación (propagation delay). A manera de ejemplo, para un
inversor NOT disponible en un circuito integrado TTL 7404, el retardo de propagación en
promedio es de 10 nanosegundos, y para un inversor NOT disponible en un circuito integrado
CMOS 4049 el retardo de propagación en promedio es de 25 nanosegundos. Hasta ahora se
había considerado este retardo de tiempo como despreciable. Sin embargo, al conectar dos
inversores en serie, este retardo de tiempo se vuelve el doble del retardo original.
Configuraciones como la anterior que no llevan a cabo ningún procesamiento de información
pero que introducen un retardo de tiempo T a la información a su entrada se conocen
comúnmente como línea de retardo y se pueden representar de la siguiente manera:
La doble banda indica el lado en el cual se introduce la información en la línea de retardo. El
retardo de tiempo T se indica dentro de la línea de retardo (100 microsegundos, 10
nanosegundos, etc.).
Básicamente, el funcionamiento es sencillo. Si se introduce un “1” a la entrada de la línea de
retardo, después de un tiempo T aparecerá un “1” a la salida de la misma. Y si se introduce
un “0” en la línea de retardo, después de un tiempo T aparecerá un “0” a la salida de la misma.
Además de los retardos inherentes en los circuitos integrados utilizados para construir
sistemas digitales, existen varias formas de obtener retardos de tiempo en la propagación de
una señal introduciendo un mínimo de distorsión en la misma, tales como el uso de bobinas
como la que se muestra a continuación capaz de producir un retardo de 390 nanosegundos:
Y a continuación tenemos la línea de retardo ADL CS344 que puede producir un retardo
constante de 64 microsegundos:
Es muy importante aclarar antes de continuar adelante que las líneas de retardo tienen poco
uso en la construcción de sistemas digitales de uso común, excepto para aplicaciones muy
especializadas. La línea de retardo es útil en el estudio conceptual de los multivibradores que
se pueden construir utilizando circuitos lógicos, y un retardo puede ser producido de modo
mucho más económico utilizando una resistencia R y un condensador C cuya constante de
tiempo RC en combinación con un temporizador (timer) como el 555 puede ser utilizada
para construir multivibradores de todo tipo.
Normalmente, los retardos de tiempo son un efecto sumamente desagradable que se desea
reducir al mínimo con el fin de tratar de obtener la máxima velocidad posible de un sistema
digital. Sin embargo, para construir algunos multivibradores, la introducción de retardos de
tiempo se vuelve prácticamente una necesidad.
PROBLEMA: Diseñar un multivibrador mono-estable utilizando un flip-flop R-S y una
línea de retardo.
El diseño deseado se muestra a continuación:
Para analizar este diseño, suponemos que el flip-flop R-S está inicialmente en la
condiciónR=0, S=0 y Q=0.
Al aplicar un pulso (o un “1”) de corta duración en la terminal “gatillo” (trigger), el flip-flop
R-S entra en el estado Q=1 en donde permanece después de desaparecer el pulso. Al tomar
la terminal de "Salida" el valor Q=1, se coloca al mismo tiempo un “1” a la entrada de la
línea de retardo. Transcurrido un tiempo T, este “1” aparece a la salida de la línea de retardo,
lo cual a su vez hace que R=1. Puesto que el pulso en la terminal "gatillo" fue de corta
duración, al tomar R el valor de “1” encontramos que S ya tiene el valor “0”. Con la
condición R=1 yS=0, el flip-flop R-S regresa automáticamente al estado Q=0. Este
estado Q=0 pone un “0” en la línea de retardo que después de un tiempo T vuelve a dejar al
flip-flop R-S en su estado original R=0, S=0 y Q=0.
Un diagrama de tiempos ilustrando la acción sería como el siguiente:
Nótese que el ancho de pulso de la señal “gatillo” siempre debe ser menor que el ancho de la
señal de salida para evitar poner al flip-flop en el estado no-definido R=1 y S=1.
El multivibrador monoestable también es conocido como el "multivibrador de un disparo"
(one-shot).
PROBLEMA: Diseñar un registro recirculante con tres bits de capacidad, del tipo entrada-
serial salida-serial, usando flip-flops D.
Un diseño con las características pedidas, capaz de poder dar la "autorización" para ir
metiendo una palabra binaria en forma serial dentro del mismo activando la
terminal W(Write) y desactivándola cuando la palabra ya está metida y será puesta a
"recircular", es el siguiente:
En este caso, para introducir una palabra binaria en el registro recirculante a través de la
terminal de entrada In, activamos primero con un "1" la terminal de "escribir" W (Write),
metiendo dicha palabra en forma serial bit por bit dentro del circuito con varias transiciones
en la terminal de "reloj". Una vez introducida la palabra dentro del registro recirculante,
desactivamos la terminal de escritura W con un "0", con lo cual el circuito trabajará como un
registro recirculante sin perder la información almacenada.
PROBLEMA: Diseñar un registro de transferencia para almacenar un número decimal en
sistema BCD, de rapidez óptima, usando flip-flops D. Diseñar asimismo un registro para
una calculadora electrónica con capacidad para seis dígitos.
Considerando que la representación decimal de un número en sistema BCD requiere de
cuatro bits para su representación, y que el registro de transferencia más rápido posible es el
de entrada-paralela y salida-paralela o pipo (parallel-in parallel-out), el diseño deberá ser
como sigue:
Puesto que la calculadora electrónica utiliza el sistema BCD (por lo menos para mostrarle el
número al usuario en sistema decimal que pueda entender en lugar del lenguaje de "unos" y
"ceros" usado por la máquina), si esta es de seis dígitos deberá poder almacenar seis cifras
en sistema BCD, usando cuatro bits para almacenar cada cifra decimal. Esto sugiere que
podemos usar el diseño pipo de arriba como bloque fundamental. Tomando en cuenta que en
toda calculadora los números van entrando de izquierda a derecha, desplazándose todos los
números un espacio a la vez para poder ir entrando en el registro de la calculadora, el registro
tomará el siguiente aspecto:
Este tipo de registro recibe en ocasiones el nombre de registro de almacenamiento. En la
mayoría de las calculadoras hay varios de este tipo. Uno de ellos es el que mantiene los
números decimales que le están siendo mostrados al usuario. Otro de ellos es uno al que
simplemente se le conoce como la memoria (de la cual puede haber varias), a la cual tenemos
acceso con alguna tecla como "M+" ó "M-".
PROBLEMA: Determinar si el contador que se muestra tiene estados denegados.
Analizamos primero la secuencia natural que recorre el contador suponiendo que este está
inicialmente en la condición Q1Q2Q3=000. Trabajando sobre el diagrama del circuito,
obtenemos cada uno de sus estados después de las transiciones que le son aplicadas a la
terminal de "reloj", los cuales resultan ser:
Primera transición: El estado es Q1Q2Q3=100.
Segunda transición: El estado es Q1Q2Q3=110.
Tercera transición: El estado es Q1Q2Q3=011.
Cuarta transición: El estado es Q1Q2Q3=001.
Quinta transición: El estado es Q1Q2Q3=000.
Puesto que en la quinta transición el contador regresa a su estado original, no es necesario
proseguir con el análisis.
Para encontrar los posibles estados denegados en el contador, comparamos los estados de su
secuencia natural con todos los estados posibles que no están incluidos en la secuencia
normal del contador:
Secuencia Natural
Estados Posibles
Vemos entonces que hay tres posibles estados denegados:
Q1Q2Q3=010
Q1Q2Q3=101
Q1Q2Q3=111
Falta ver si el contador se puede "sacar" a sí mismo de cada uno de estos estados. Para esto,
hay que analizar el comportamiento del contador empleando cada uno de los tres posibles
estados denegados como condición inicial.
Posible estado denegado Q1Q2Q3=010
Condición inicial: Q1Q2Q3=010.
Primera transición: Q1Q2Q3=101.
Segunda transición: Q1Q2Q3=110. (El contador resume su operación normal, ya que este es
uno de los estados propios pertenecientes a la secuencia natural del contador.)
Tercera transición: Q1Q2Q3=011.
Posible estado denegado: Q1Q2Q3=101
Condición inicial: Q1Q2Q3=101.
Primera transición: Q1Q2Q3=110.
Segunda transición: Q1Q2Q3=011. (El contador resume su operación normal, ya que este es
uno de los estados propios pertenecientes a la secuencia natural del contador.)
Posible estado denegado Q1Q2Q3=111
Condición inicial: Q1Q2Q3=111.
Primera transición: Q1Q2Q3=011.
Segunda transición: Q1Q2Q3=001. (El contador resume su operación normal, ya que este es
uno de los estados propios pertenecientes a la secuencia natural del contador.)
Puesto que el contador puede recuperar su secuencia natural de cualquier estado posible en
el que se encuentre, concluimos que el contador no tiene estados denegados.
PROBLEMA: Derivar para un flip-flop D la ecuación de su entrada D en función de Qn (el
estado del flip-flop D previo a una transición) y de Qn+1 (el estado del flip-flop D después de
que ha ocurrido una transición al siguiente estado).
Tomando en cuenta las propiedades del flip-flop D, desarrollamos primero una tabla de
secuencias que describa el comportamiento para el cual queremos encontrar su expresión
Boleana:
Usando minterms, la "salida" D del flip-flop en función de Qn y de Qn+1 será:
D = Q’nQn+1 + QnQn+1
D = Qn+1(Q’n + Qn)
D = Qn+1
PROBLEMA: Dado el siguiente circuito secuencial asíncrono construido a base de flip-flops D:
obtener la tabla de secuencias para dicho circuito suponiendo que los flip-flops D utilizados son del
tipo en los cuales los cambios de estado ocurren en la transición positiva (de "0" a "1") del pulso a
la entrada de la terminal de reloj. Tras esto, supóngase que hubo una equivocación en la adquisición
de los flip-flops D y que el circuito se construye con flip-flops del tipo en los cuales los cambios de
estado ocurren en la transición negativa del pulso a la entrada de la terminal de reloj. ¿Qué
diferencia hay entre el comportamiento de ambos?
Supondremos, como de costumbre, que el estado inicial del circuito es Q0Q1Q2=000.
Al empezar, para la primera transición, con dos ceros en el NAND, Q1Q2=00; esto pone un
"1" en su salida, el cual es invertido en la burbuja inversora NOT en la terminal Clear (CLR)
de los tres flip-flops D y por lo tanto no afecta a ninguno de ellos. El primer flip-flop D
cambia de estado de Q0=0 a Q0=1 por estar alimentada su entrada con su salida
complementaria Q’0=1 (de hecho, el primer flip-flop se estará comportando todo el tiempo
como un flip-flop T). Este cambio hace que Q’0 caiga de "1" a "0", sin efecto alguno en el
segundo flip-flop que le sigue puesto que sólo las transiciones de "0" a "1" en la terminal C
producirán un cambio. Por lo tanto, el segundo flip-flop se queda en su estado Q1=0, y lo
mismo sucede con el tercer flip-flop.
Para la segunda transición de estados, el primer flip-flop, siempre alimentado en su entrada
D con su salida complementaria Q’0, cambia su salida de Q0=1 a Q0=0. Pero el segundo flip-
flop, estando alimentado con Q’0, ve cambiar esta terminal de Q’0=0 a Q’0=1, con lo cual se
provoca un cambio de estado en el segundo flip-flop.
Manteniendo un análisis semejante, acumulamos la siguiente información.
Primera transición: El estado es Q0Q1Q2=100.
Segunda transición: El estado es Q0Q1Q2=010.
Tercera transición: El estado es Q0Q1Q2=110.
Cuarta transición: El estado es Q0Q1Q2=001.
Quinta transición: El estado es Q0Q1Q2=101.
Al llegar a la sexta transición, tenemos la situación Q1Q2=11, lo cual hace que la salida del
NAND cambie de "1" a "0", y este "0" al ser invertido por las burbujas inversoras NOT en
las terminales CLR de los tres flip-flops "limpia" al circuito regresándolo al
estadoQ0Q1Q2=000. Esto se ve más claramente en el diagrama de tiempos para este circuito:
Todo el comportamiento del circuito se puede resumir entonces en la siguiente tabla de
secuencias:
El circuito es pues un contador asíncrono módulo 6.
Ahora llevaremos a cabo el análisis sobre este mismo circuito suponiendo que fue construido
con flip-flops D cuyo cambio de estado ocurre durante la transición negativa en la terminal
de reloj C.
Suponiendo que el estado inicial es Q0Q1Q2=000, al llevarse a cabo la primera transición de
"1" a "0" en la terminal C del primer flip-flop. Antes de que ocurra la transición, con dos
ceros a la entrada del NAND por el hecho de que Q1Q2=00, hay un "1" a la salida del mismo,
el cual es invertido a un "0" por la burbuja inversora NOT en la terminal CLR de los tres flip-
flops D. Al ocurrir la transición, el primer flip-flop D cambia de estado de Q0=0 a Q0=1 por
estar alimentada su entrada D con su salida complementaria Q’0=1. Lo mismo ocurre con el
segundo flip-flop por caer su entrada de reloj C de "1" a "0 al cambiar Q’0 de "1" a "0". Y lo
mismo ocurre en el tercer flip-flop. Pero esto hace que Q1Q2=11, lo cual a la salida del
NAND produce un "0", el cual es invertido por cada burbuja inversora NOT a "1" en todas
las terminales CLR, "limpiando" el circuito regresándolo al estado Q0Q1Q2=000. Este
circuito jamás saldrá del estado Q0Q1Q2=000. Por el simple hecho de haberse utilizado flip-
flops activados por transiciones negativas en vez de flip-flops activados por transiciones
positivas, el contador módulo 6 ha quedado totalmente inutilizado.
Por regla general, cuando un circuito secuencial asíncrono ha sido diseñado para cambiar de
estados con transiciones positivas en la terminal de reloj, si se utilizan flip-flops cuyo cambio
de estados ocurre con transiciones negativas el comportamiento del circuito será totalmente
diferente e impredecible. Y viceversa.
Es posible modificar el segundo circuito para que se comporte igual que el primero, pero ello
requiere poner un inversor NOT conectado inmediatamente a la entrada de cada terminal de
reloj C de todos los flip-flops. Si el circuito hubiese sido síncrono, solo se hubiera requerido
poner un solo NOT inversor a la entrada de la terminal de reloj "maestra" para igualar los
comportamientos de ambos circuitos.