Todos los circuitos digitales utilizan datos binarios para funcionar correctamente, los circuitos están diseñados para contar, sumar,
separar, etc. los datos según nuestras necesidades, pero por el tipo de funcionamiento de las compuertas digitales, los datos presentes
en las salidas de las mismas, cambian de acuerdo con sus entradas, y no hay manera debitarlo, si las entradas cambian, las salidas lo
harán también, entonces ¿Cómo podemos hacer para mantener un dato o serie de datos en un lugar hasta que los necesitemos?
La respuesta son las memorias, básicamente son sistemas que pueden almacenar uno o más datos evitando que se pierdan, hasta que
nosotros lo consideremos necesario, es decir, pueden variar su contenido a nuestra voluntad.
El corazón de una memoria son los Flip Flops, este circuito es una combinación de compuertas lógicas, A diferencia de las
características de las compuertas solas, si se unen de cierta manera, estas pueden almacenar datos que podemos manipular con reglas
preestablecidas por el circuito mismo.
Esta es la representación general par un Flip Flop (comúnmente llamado "FF")
Los FF pueden tener varias entradas, dependiendo del tipo de las funciones internas que realice, y tiene dos salidas:
Las salidas de los FF sólo pueden tener dos estados (binario) y siempre tienen valores contrarios, como podemos ver en la siguiente tabla:
Las entradas de un FF obligan a las salidas a conmutar hacia uno u otro estado o hacer "flip flop" (Término anglosajón), más adelante
explicaremos cómo interactúan las entradas con las salidas para lograr los efectos característicos de cada FF.
El FF también es conocido como:
Este es el circuito más sencillo y básico de un FF, Puede ser construido a partir de dos compuertas NAND o dos compuertas NOR con
dos entradas, a continuación se ilustra con compuertas NAND, y es denominado "Registro Básico NAND".
La forma de conectarlas es la siguiente:
Se deja libre una de las entradas de cada compuerta, las sobrantes son conectadas independientemente de manera cruzada hacia la salida
de la compuerta contraria.
Quedando la conexión de la siguiente manera:
La siguiente tabla muestra el estado inicial del Registro Básico NAND, cuando sus entradas se encuentran en ALTO (Estado de reposo del FF). Para comenzar la acción de "Flip Flop" será necesario enviar a BAJO alguna de las entradas, con su correspondiente cambio de estado a la salida.
La siguiente tabla nos muestra los diferentes cambios de las salidas, según cada selección de entradas (La "X" significa que no importa el estado en el que se encuentren en ese momento):
Siguiendo los datos de la tabla podemos resumir que:
Este último cambio normalmente se considera como no deseado, ya que el principio básico es que las salidas siempre estén
invertidas (Aunque en ciertos casos especiales, nosotros podríamos utilizar este efecto).
Entonces, la tabla de verdad del Registro Básico NAND es la siguiente:
La conexión del Registro Básico NOR es exactamente igual al del Registro NAND, pero los cambios en sus salidas son completamente
diferentes, A continuación se ilustran las dos tablas de verdad para hacer el comparativo entre una y otra.
Tabla de verdad del Registro Básico NOR
Tabla de verdad del Registro Básico NAND
Agregando pulsadores u otras compuertas en las entradas, los usos más comunes para el Registro Básico NAND o NOR son:
Hasta ahora hemos visto que un Registro Básico tiene dos variables de entrada y responde de manera predecible a ellas, pero
¿Qué podíamos hacer si necesitáramos otra variable de control? ¿Cómo podríamos hacer que el registro actúe cuando sea conveniente
para nosotros, y no al momento de cambiar sus entradas?
Todos los sistemas digitales tienen básicamente dos formas de operación:
Los circuitos digitales ASÍNCRONOS son muy complicados en lo que a diseño y reparación se refiere, ya que, al encontrarnos con
una falla en un circuito de 10 registros interconectados, el rastreo de los cambios en todas las compuertas nos provocaría un severo
dolor de cabeza.
Los circuitos digitales SÍNCRONOS son más fáciles de diseñar y reparar, debido a que los cambios de las salidas son eventos
"esperados" (ya que fácilmente podemos saber el estado de cada una de las entradas o salidas sin que estas cambien repentinamente),
y los cambios dependen del control de una sola señal aplicada a todos los registros, la señal de RELOJ.
La señal de reloj es una onda cuadrada o rectangular, los registros que funcionan con esta señal, sólo pueden cambiar cuando la
señal de reloj hace una transición, También llamados "flancos", por lo tanto, la señal de reloj sólo puede hacer 2 transiciones
(o Flancos):
Principales características de los FF sincronizados por Reloj.
Resumiendo, Las entradas de control del FF nos permiten saber cómo van a cambiar las salidas, pero sólo la señal de Reloj podrá hacer efectivo este cambio.
La siguiente figura nos indica cómo están compuestos los dos detectores de Transiciones.
Las figuras nos muestran del lado izquierdo de la línea verde el pin de entrada de Reloj del FF, el lado derecho nos muestra el
circuito interno del FF.
La diferencia entre CK y CK se debe al retraso en la propagación que cualquier compuerta tiene, desde que se aplica una señal en la
entrada, hasta que esta se refleja en al salida. Esta diferencia en tiempo, nos permite obtener un pulso de salida solamente cuando
ocurre la transición para la que están diseñados, y por lo tanto accionar el FF.
Dejaremos de lado la conexión interna de los FF, ya que para nuestra comodidad, todos podemos encontrarlos en forma de circuitos
integrados, así que nos ocuparemos solamente de su funcionamiento.
La siguiente figura nos muestra un Registro Básico Sincronizado por una señal de reloj. Es la forma más básica de un FF controlado por
la señal de reloj. (La falta del círculo en la entrada de CLK significa que sólo será activa en los TPP)
(Sólo se muestra la salida Normal (Q), ya que como dijimos, la salida negada siempre es inversa)
Este FF es uno de los más usados en los circuitos digitales, y de hecho es parte fundamental de muchos circuitos avanzados como
contadores y registros de corrimiento, que ya vienen integrados en un chip.
Este FF cuenta con dos entradas de datos J y K, su función es en principio la misma que el Registro básico NAND o NOR, pero con la
diferencia que la condición en las entradas J = 1, K = 1, a diferencia del Registro NAND, que generaría una salida errónea o no deseada,
en un FF J-K, obliga a las salidas a conmutar su estado al opuesto (Toggle) a cada pulso del reloj. Esto lo convierte en un tipo de
FF muy versátil.
Tabla de verdad de un FF tipo J-K síncrono.
Observando la tabla de verdad observamos los cambios que provoca en sus salidas este FF:
A diferencia de los FF tipo J-K, el FF tipo "D" (Datos, Data) sólo cuneta con una entrada para hacer el cambio de las salidas.
A cada pulso del reloj (dependiendo si el FF utiliza una TPP o una TPN) el estado presente en la entrada "D" será transferido a la
salida Q y /Q.
Tabla de verdad de un FF tipo "D"
Una de las aplicaciones de mayor uso para este tipo de FF es al de la transferencia de datos de forma paralela, conectando varios FF tipo "D" a X número de bits, podemos hacer que la información de todos los bits pase inmediatamente a la salida de cada FF con sólo un pulso de reloj.
Como ya hemos visto, cada FF tiene entradas que pueden cambiar el estado de las salidas de manera sincronizada con el pulso de reloj,
pero ¿Dónde quedaron nuestras entradas asíncronas? ¿Es posible seguir usando estas entradas en FF síncronos?
La respuesta está en los FF síncronos de cualquier tipo que poseen entradas asíncronas, esto añade dos pines más de control a nuestros
FF, los conocidos SET y RESET (Los cuáles pueden ser activos en el estado ALTO o BAJO). Entonces tenemos FF síncronos (Tipo "J - K", o
tipo "D" ) con un par de entradas que no dependen en ningún momento del pulso de Reloj. Haciendo una combinación perfecta de entradas que
controlan las salidas de manera automática (Asíncronas) o controladas por un pulso de reloj (Síncronas).
La siguiente figura nos muestra los símbolos de los FF Tipo "J - K" y "D" con sus entradas asíncronas.
(Las "X" significan que no importa el estado actual de esa entrada).
(El FF tiene una entrada de Reloj que funciona con TPP)
(Las entradas asíncronas con activas ALTAS)
El funcionamiento básico sigue siendo el mismo, pero las salidas serán forzadas a ALTO o BAJO, si se activan las entradas Asíncronas correspondientes (SET, RESET) sin importar el estado de las entradas "J - K" o CLK.
(Las "X" significan que no importa el estado actual de esa entrada).
(El FF tiene una entrada de Reloj que funciona con TPP)
(Las entradas asíncronas con activas ALTAS)
El funcionamiento básico sigue siendo el mismo, pero las salidas serán forzadas a ALTO o BAJO, si se activan las entradas Asíncronas correspondientes (SET, RESET) sin importar el estado de la entrada "D" o CLK.
Con esto termina este pequeño tutorial de Flip-Flops, espero que las dudas hayan encontrado una respuesta satisfactoria, y que la información aquí contenida sea de gran utilidad para el lector.
Autor: Apollo