Documentos de Académico
Documentos de Profesional
Documentos de Cultura
10 de agosto
1. Conceptos fundamentales
Los circuitos lógicos combinacionales son aquellos en que sus salidas sólo dependen de sus
entradas actuales. El control de canales mediante una perilla en los televisores antiguos es un
ejemplo de funcionamiento combinacional (o el control de volumen con una perilla).
Los circuitos lógicos secuenciales son aquellos en que sus salidas no solamente dependen de
sus entradas actuales, sino también de una secuencia de entradas pasadas desde un tiempo
arbitrario anterior. El control de canales o de volumen a través de botones + y – es un ejemplo
de funcionamiento secuencial.
Realmente, los circuitos secuenciales nunca recuerdan la totalidad de eventos anteriores que
sucedieron en sus entradas. En su lugar, tratan de recordar lo más importante de esa
secuencia en alguna información breve. El control de volumen no necesita realmente recordar
las 1,000 entradas anteriores en el momento actual, lo único que necesita recordar es un
volumen (salida) actual. Ese dato clave, en estos circuitos se denomina “estado actual”.
“El estado de un circuito secuencial es una colección de variables de estado cuyos valores en
cualquier momento contienen toda la información, sobre el pasado, necesaria para determinar
el comportamiento futuro del circuito”
11 de agosto
La manera en que las variables de estado guardan el “estado” (la información clave necesaria)
puede variar de sistema a sistema. Por ejemplo en el caso de que el estado sea un valor de
volumen entre 0 y 100, podría almacenarse con un número binario sin signo de 7 bits. En este
caso las variables serían 7, los 7 bits que se están utilizando. En el ámbito digital es estado
siempre es una palabra binaria y las variables son los bits individuales. Sin embargo, en un
ejemplo alternativo, el volumen entre 0 y 100 podría almacenarse en tres dígitos BCD (cada
dígito decimal son cuatro bits). En este otro caso el estado tiene 12 bits (12 variables de
estado).
Debido a esta idea del uso de un estado interno en todos los circuitos secuenciales, es común
que se les llame “máquinas de estados”. Frecuentemente se usa también el término
“máquinas de estados finitos” (FSM – “finite state machine”). Los estados son finitos porque se
tienen que almacenar en una cantidad finita de variables. Por ejemplo, si se tienen 3 variables
de estado (3 bits), entonces hay posibilidad para almacenar hasta un máximo de 2 3 = 8
estados.
En los circuitos secuenciales (máquinas de estados) el cambio de estado, y por lo tanto, cambio
en las salidas comúnmente se especifica para que suceda en momentos específicos. Lo más
común es que esos momentos estén establecidos por una señal de reloj. Esta señal de reloj se
toma en cuenta, no en sus valores lógicos, sino en su transición; puede ser la transición de 0 a
1 que se denomina transición positiva (flanco positivo, transición de subida, flanco de subida,
“rising edge”) o puede ser la transición de 1 a 0 que se denomina transición negativa (flanco
negativo, transición de bajada, flanco de bajada, “falling edge”).
Muchos sistemas digitales definen su señal de reloj con un oscilador (dispositivo que genera
una señal periódica que cambia entre cero y uno a una tasa continua). Este tipo de señales
tienen una frecuencia definida (f : la cantidad de ciclos que tiene la señal sobre unidad de
tiempo – Hz). Tener frecuencia implica también que las señales tienen un periodo (T : el
tiempo que dura cada ciclo). La relación entre f y T es el inverso ( f = 1/T; T = 1/f ). Además, en
esta señales periódicas también se tiene un parámetro que se llama “ciclo de trabajo” (“duty
cycle”, ciclo efectivo, ciclo útil). Este ciclo de trabajo es el porcentaje de tiempo que la señal
está con el valor 1 al respecto del periodo completo.
Los circuitos secuenciales se pueden considerar de dos maneras diferentes: como circuitos
secuenciales retroalimentados (lo más importante es cómo se conectan las compuertas lógicas
en forma retroalimentada para realizar el funcionamiento secuencial); o como máquinas de
estados sincronizadas por reloj (lo más importante es el funcionamiento mediante estados y
cómo implementarlo con estructuras prefabricadas).
Latches y flip-flops son los bloques básicos fundamentales para la construcción de circuitos
secuenciales (las versiones más pequeñas de circuitos secuenciales). Para construir circuitos
más elaborados se combinan estos circuitos básicos con compuertas combinacionales y es
posible diseñar cualquier funcionamiento secuencial que se requiera.
En ocasiones los términos latch y flip-flop se usan indistintamente. Es mejor y más práctico
visualizar que son circuitos con características diferentes. La característica más distintiva es
que los flip-flops tienen una entrada de reloj (“nos interesa su transición, no su valor”) y los
cerrojos no tienen una entrada de reloj (“nos interesan los valores de las entradas, no sus
transiciones”). En un flip-flop las entradas se revisan solamente en instantes específicos (según
la señal de reloj) y en esos casos es posible que cambien las salidas. En un cerrojo, las
entradas se revisan en todo momento y pueden cambiar las salidas con cualquier cambio en
ellas.
S Q
R QN
S R Q QN Función
(estado)
0 0 Qanterior QNanterior Estado
anterior
0 1 0 1 Reset
1 0 1 0 Set
1 1 0 0 inválido
12 de agosto
Esta tabla es el funcionamiento clásico del cerrojo S-R (cuando se implementa con
compuertas).
En general se usa para aplicaciones que requieren almacenar un estado (1- activado, 0-
desactivado) y además se requiere que entradas diferentes sean la que activa y la que
desactiva.
Ejemplos de aplicación:
Activar y desactivar una alarma con dos botones diferentes
Control de encendido y apagado de una bomba con el nivel de un tinaco (hay un nivel
de agua para la activación y un nivel diferente para desactivación)
El cerrojo S-R como todos los circuitos secuenciales puede ser implementado con compuertas
lógicas. Las compuertas lógicas por sí solas no tienen memoria. La memoria en este tipo de
implementación se realiza mediante conexiones de retroalimentación.
A B NOR
0 0 1
0 1 0
1 0 0
1 1 0
S 1 0 0 0 0 1
R 0 0 1 0 0 0
Q 1 0 0 1 1
QN 0 1 0 1 0
La explicación del análisis para completar este diagrama de tiempos quedó grabada en las
videosesiones del 12 y 13 de agosto.
Un ejemplo de cómo describir este circuito construido con compuertas NOR en VHDL sería:
17 de agosto
Si el circuito con compuertas NOR se simula utilizando las herramientas de Xilinx
ISE, el resultado es:
Puede verse que en la simulación no se observan los retrasos debidos al tiempo de
propagación que consumen las compuertas NOR. Esto se debe a que el simulador está
configurado para mostrar la respuesta ya estabilizada solamente. También se observa que en
el último momento, cuando se desactivan ambas entradas al mismo tiempo, el simulador indica
un ERROR y se detiene. Este funcionamiento se debe a que el simulador no logra encontrar
cuál es el valor estabilizado y, por lo tanto, no es capaz de dar respuesta a los valores de salida
en ese caso. En el análisis del diagrama de tiempos que se realizó manualmente también se
observó que en ese caso, las salidas comienzan a oscilar indicando que nunca se estabilizarán.
El análisis anterior que se hizo a manualmente se realizó directamente con las compuertas
NOR y considerando su retraso de propagación. Sin embargo, cuando ya se comprendió el
funcionamiento del cerrojo S-R, se puede analizar y predecir las salidas considerando
directamente la tabla de funcionamiento del cerrojo pero recordando también que está
construido con compuertas NOR aunque no se consideren los retrasos de propagación:
S 1 0 0 0 0 1
R 0 0 1 0 0 0
Q 1 0 1
QN 0 1 0
El cerrojo S-R construido con compuertas NOR nunca puede guardar el estado inválido. Puede
guardar el estado SET o guardar RESET solamente.
Por el contrario, cuando el cerrojo se implementa con VHDL es posible controlar el caso
inválido para que haga un funcionamiento establecido preferido por el diseñador. Y también es
posible indicar que sí queremos que se guarde el estado INVÁLIDO.
Los cerrojos S-R tienen muchas aplicaciones en sistemas en los que quieres controlar una
salida con “Botones” o “Entradas momentáneas”. Ejemplo: La activación de la alarma del
coche: set=activar la alarma, reset=desactivar la alarma. La activación de un calentador con
termostato: set=temperatura fría=encender el calentador, reset=temperatura caliente=apagar
el calentador. Algunas veces estas entradas quedarán a disposición del usuario y es
conveniente que los dispositivos estén diseñados para enfrentar casos no deseados.
Un ejemplo de código VHDL para describir el cerrojo S-R mediante su funcionamiento sería:
Tanto Q como QN se describen preguntando los casos específicos de la tabla de verdad. La
sintaxis usada en QN permite realizar menos preguntas agrupando dos casos en la primera
condición S=’1’. En esta descripción se evita el problema de la construcción con compuertas
que hace que el caso inválido no sea posible almacenarlo en memoria.
Esta simulación revisa todos los casos posibles de salida cuando S=’0’ y R=’0’. Así podemos
comprobar que en todos ellos se guarda la información correctamente. Cuando el cerrojo se
cierra guarda el último valor que tenía en sus salidas.
D Q
C Q Función
0 Qanterior Estado
anterior
1 D Activar
18 de agosto
Nuevamente se usa una descripción del comportamiento mediante pregunta con la sintaxis
“when-else”. Y, otra vez, podemos ver que la manera correcta de indicar el caso en que el
cerrojo se cierra y mantiene su mismo valor de salida es omitiendo ese caso en la pregunta.
Se observa que, cuando el cerrojo está abierto, la salida copia la entrada D. Esto sucede entre
1 us y 4 us y también entre 6 us y 7 us. También observamos que, cuando el cerrojo se cierra,
entonces la salida se queda con el último valor que copió de la D. Esto sucede entre 4 us y 6 us
y también al final de la simulación después de 7 us.
2.3. Flip-flop D
D Q
CLK
CLK Q Función
D Activado
Copiar D
otro Qanterior Memoria
caso
(CLK=’0’
CLK=’1’
Flanco_negativo)
NOTA: No es posible implementar flip-flop que tome ambos flancos debido a una restricción
de hardware que tienen los CPLD y las FPGA.
Existe una sintaxis más moderna y más recomendada en la actualidad para describir el caso de
los flancos (positivo o negativo)
19 de agosto
En la simulación podemos observar que la salida solamente puede cambiar en los instantes en
que se realice una transición positiva en la señal de reloj CLK. Un caso especial sucede a los 9
us porque en el momento de la transición, la entrada D tiene el mismo valor que ya tenía la
salida Q y, por lo tanto, no cambia la salida.
Su construcción interna se basa en los cerrojos D. El diagrama para construir el flip-flop D sería:
Un diagrama de tiempos para explicar el funcionamiento del circuito con latch D sería así:
La explicación de este diagrama anterior quedó grabada en la videosesión de Teams.
Un concepto importante en los circuitos secuenciales, especialmente en los que usan flip-
flop D es el respeto a los tiempos de establecimiento y retención. El diagrama de tiempos
siguiente muestra las ventanas de tiempo que se deben respetar alrededor de la transición
de reloj. La explicación quedó grabada en la videosesión de Teams.
A continuación se hace otro diagrama de tiempos que muestra el funcionamiento del flip-
flop D. Sí se considera el respeto a los tiempos de establecimiento y de retención en las
entradas.
D 0 0 1 1 0 1
CLK
Q 0 0 1 1 0 1
QN
Cuando se tiene entrada negada de reloj se está esperando una transición negativa en lugar de
la transición positiva habitual. Podemos expresarlo con la tabla:
2) Entradas asíncronas:
La entrada PR toma su nombre por la palabra PRESET y la entrada CLR toma su nombre
por la palabra CLEAR y funcionan de manera muy similar a cómo funcionan las
entradas S y R del cerrojo S-R.
El tema de entradas asíncronas se revisa en el vídeo del siguiente enlace hasta el tiempo 3:50:
https://www.coursera.org/lecture/sistemas-digitales/leccion-l5-3-2-2-componentes-
biestables-9QTde
Después de revisar el vídeo y comprender la explicación, se realiza el siguiente ejercicio:
PR
CLR
CLK
PR
CLR
CLK
------------------------------------------------------------------------------------------------------------------------------
Estas variaciones de entradas a los flip-flops (transición negativa, entradas asíncronas, entrada
de habilitación) no son excluyentes. Es decir, que pueden agregarse una o más de ellas al
mismo flip-flop.
Por ejemplo, veamos el diagrama de tiempos (sin retardos) para un flip-flop de transición
negativa y con entrada de habilitación.
D 1 1 1 1 1
EN
CLK_L
Q 1 1 1 1
2.5. Ejercicios
Tarea:
1)
2)
3)
Repetir los ejercicios 7.2 y 7.3 pero sin considerar los retardos de propagación de las
compuertas NOR pero sí considerando que el cerrojo se construyó con compuertas NOR. El
análisis se realiza con la tabla de funcionamiento del cerrojo.
4) Dibuja los valores para las salidas Q y QN en los siguientes diagramas de tiempo que
corresponden a un cerrojo D:
D
QN
QN
6) Dibuja la salida de los diagramas de tiempos siguientes, para un Flip-flop D con transición
negativa:
a)
b)
7) Dibuja la salida del diagrama de tiempos siguiente, para un Flip-flop D con entradas
asíncronas:
CLK_L
Enable
Q
8) Dibuja la salida del diagrama de tiempos siguiente, para un Flip-flop D con entrada de reloj
tomando el flanco de bajada y con enable:
9) Dibuja la salida del diagrama de tiempos siguiente, considerando que se aplican las
entradas al circuito que está dibujado:
10) Dibuja la salida del diagrama de tiempos siguiente, para un flip-flop D:
Set
Reset
CLK
Enable
11) Dibuja ‘q’ y ‘r’ para el diagrama de tiempos siguiente, considerando que se aplican las
entradas al circuito que está dibujado: