Introducción a los Biestables
Un biestable (conocido como flip-flop en inglés) es un multivibrador capaz de permanecer en uno de dos estados posibles durante un tiempo indefinido en ausencia de perturbaciones. Esta característica es ampliamente utilizada en electrónica digital para memorizar información. El paso de un estado a otro se realiza variando sus entradas. Dependiendo del tipo de dichas entradas, los biestables se dividen en:
- Asíncronos: Solo tienen entradas de control. El más empleado es el biestable RS.
- Síncronos: Además de las entradas de control, poseen una entrada de sincronismo o de reloj. Si las entradas de control dependen de la de sincronismo, se denominan síncronas y, en caso contrario, asíncronas. Por lo general, las entradas de control asíncronas prevalecen sobre las síncronas.
La entrada de sincronismo puede ser activada por nivel (alto o bajo) o por flanco (de subida o de bajada). Dentro de los biestables síncronos activados por nivel están los tipos RS y D, y dentro de los activos por flancos los tipos JK, T y D.
Los biestables se crearon para eliminar las deficiencias de los latches.
Biestable RS (Set-Reset)
Descripción
Cronograma del biestable RS.
Es un dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales permiten, al ser activadas:
- R (Reset): El borrado, puesta a 0 o nivel bajo de la salida.
- S (Set): El grabado, puesta a 1 o nivel alto de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. En ningún caso deberían activarse ambas entradas a la vez, ya que esto provoca que las salidas directa (Q) y negada (Q’) queden con el mismo valor: a bajo, si el flip-flop está construido con puertas NOR, o a alto, si está construido con puertas NAND. El problema de que ambas salidas queden al mismo estado radica en que, al desactivar ambas entradas, no se podrá determinar el estado en el que quedaría la salida. Por eso, en las tablas de verdad, la activación de ambas entradas se contempla como caso no deseado (n.d.).
Biestable RS Asíncrono
Solo posee las entradas R y S. Se compone internamente de dos puertas lógicas NAND o NOR, según se muestra en la siguiente figura:
Biestables RS con puertas NOR (a), NAND (c) y sus símbolos normalizados respectivos (b) y (d).
Tabla de verdad biestable RS | |||
R | S | Q (NOR) | Q’ (NAND) |
0 | 0 | Q (Memoria) | n.d. |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | n.d. | Q (Memoria) |
n.d. = estado no deseado; Q = estado de memoria
Biestable RS Síncrono
Circuito biestable RS síncrono a) y esquema normalizado b).
Además de las entradas R y S, posee una entrada C de sincronismo cuya misión es la de permitir o no el cambio de estado del biestable. En la siguiente figura se muestra un ejemplo de un biestable síncrono a partir de una asíncrona, junto con su esquema normalizado. Su tabla de verdad es la siguiente:
Tabla de verdad biestable RS Síncrono | |||
C | R | S | Q |
0 | X | X | Q |
1 | 0 | 0 | Q |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | n.d. |
X = no importa
Biestable D (Data o Delay)
Símbolos normalizados: biestables D a) activo por nivel alto y b) activo por flanco de bajada.
El flip-flop D resulta útil cuando se necesita almacenar un único bit de datos (1 o 0). Si se añade un inversor a un flip-flop S-R, obtenemos un flip-flop D básico. El funcionamiento de un dispositivo activado por el flanco negativo es, por supuesto, idéntico, excepto que el disparo tiene lugar en el flanco de bajada del impulso del reloj. Recuerde que Q sigue a D en cada flanco del impulso de reloj.
Para ello, el dispositivo de almacenamiento temporal es de dos estados (alto y bajo), cuya salida adquiere el valor de la entrada D cuando se activa la entrada de sincronismo, C. En función del modo de activación de dicha entrada de sincronismo, existen dos tipos:
- Activo por nivel (alto o bajo), también denominado registro o cerrojo (latch en inglés).
- Activo por flanco (de subida o de bajada).
La ecuación característica del biestable D que describe su comportamiento es:
Y su tabla de verdad:
D | Q | Qsiguiente |
0 | X | 0 |
1 | X | 1 |
Esta báscula puede verse como una primitiva línea de retardo o una retención de orden cero (zero-order hold en inglés), ya que los datos que se introducen se obtienen en la salida un ciclo de reloj después. Esta característica es aprovechada para sintetizar funciones de procesamiento digital de señales (DSP) mediante la transformada Z.
Ejemplo: 74LS74
Biestable T (Toggle)
Símbolo normalizado: biestable T activo por flanco de subida.
Es un dispositivo de almacenamiento temporal de dos estados (alto y bajo). El biestable T cambia de estado («toggle» en inglés) cada vez que la entrada de sincronismo o de reloj se dispara mientras la entrada T está a nivel alto. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo. Puede obtenerse al unir las entradas de control de un biestable JK, unión que se corresponde a la entrada T.
La ecuación característica del biestable T es:
Y la tabla de verdad:
T | Q | Qsiguiente |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Biestable JK
Es versátil y es uno de los tipos de flip-flop más usados. Su funcionamiento es idéntico al del flip-flop S-R en las condiciones set, reset y de permanencia de estado. La diferencia está en que el flip-flop J-K no tiene condiciones no válidas como ocurre en el S-R.
Este dispositivo de almacenamiento temporal se encuentra en dos estados (alto y bajo), cuyas entradas principales, J y K (a las que debe el nombre), permiten al ser activadas:
- J: El grabado (set), puesta a 1 o nivel alto de la salida.
- K: El borrado (reset), puesta a 0 o nivel bajo de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación. A diferencia del biestable RS, en el caso de activarse ambas entradas a la vez, la salida adquirirá el estado contrario al que tenía.
La ecuación característica del biestable JK es:
Y su tabla de verdad es:
J | K | Q | Qsiguiente |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | X | 0 |
1 | 0 | X | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
Una forma más compacta de la tabla de verdad es:
J | K | Qsiguiente |
0 | 0 | Q |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 |
|
El biestable se denomina así por Jack Kilby, el inventor de los circuitos integrados en 1958, por lo cual se le concedió el Premio Nobel de Física en el año 2000.
Biestable JK activo por flanco
Símbolos normalizados: biestables JK activos a) por flanco de subida y b) por flanco de bajada.
Junto con las entradas J y K, existe una entrada C de sincronismo o de reloj cuya misión es permitir el cambio de estado del biestable cuando se produce un flanco de subida o de bajada, según sea su diseño. Su denominación en inglés es J-K flip-flop edge-triggered. De acuerdo con la tabla de verdad, cuando las entradas J y K están a nivel lógico 1, a cada flanco activo en la entrada de reloj, la salida del biestable cambia de estado. A este modo de funcionamiento se le denomina modo de basculación (toggle).
Ejemplo: 74LS73
Biestable JK Maestro-Esclavo
Símbolos normalizados: biestable JK maestro-esclavo a) activo por nivel alto y b) activo por nivel bajo.
Aunque aún puede encontrarse en algunos equipos, este tipo de biestable, denominado en inglés J-K flip-flop master-slave, ha quedado obsoleto, ya que ha sido reemplazado por el tipo anterior. Su funcionamiento es similar al JK activo por flanco: en el nivel alto (o bajo) se toman los valores de las entradas J y K, y en el flanco de bajada (o de subida) se refleja en la salida.
Otra forma de expresar la tabla de verdad del biestable JK es mediante la denominada tabla de excitación:
Q(t) Q(t+1) J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Siendo Q(t) el estado presente y Q(t+1) el estado siguiente. La ecuación característica del flip-flop JK es: Q(t+1) = JQ’ + K’Q, la cual se obtiene de la tabla característica.
Ejemplo con componentes discretos
Figura 1.- Circuito multivibrador biestable.
Aunque, en general, los biestables utilizados en la práctica están implementados en forma de circuitos integrados, en la Figura 1 se representa el esquema de un sencillo circuito multivibrador biestable realizado con componentes discretos:
Al aplicar la tensión de alimentación (Vcc), los dos transistores iniciarán la conducción, ya que sus bases reciben un potencial positivo. Sin embargo, como los transistores no serán exactamente idénticos por el propio proceso de fabricación, uno conducirá antes o más rápido que el otro.
Supongamos que es TR-1 el que conduce primero. El voltaje en su colector disminuirá debido a la mayor caída de tensión en R-1, por lo que la tensión aplicada a la base de TR-2 disminuirá, haciendo que este conduzca menos. Esta disminución de conducción de TR-2 hace que suba su tensión de colector y, por tanto, la de la base de TR-1. Este proceso llevará finalmente al bloqueo de TR-2 (salida Y a nivel alto).
Si ahora aplicamos un impulso de disparo de nivel alto por la entrada T, este pasará a las bases de ambos transistores. En TR-1 no tendrá más efecto que aumentar su conducción. En la base de TR-2, el impulso hará que este transistor comience a conducir, realizando un proceso similar al descrito al principio, que terminará bloqueando a TR-1 y dejando en conducción a TR-2 (salida Y a nivel bajo).
La secuencia se repetirá cada vez que se aplique un impulso en T. La salida cambia de estado con el impulso de disparo y permanece en dicho estado hasta la llegada del siguiente impulso. La caída de tensión en la resistencia común de emisores (R-7) elimina la indecisión del circuito y aumenta la velocidad de conmutación.
Aplicaciones
Un biestable puede usarse para almacenar un bit. La información contenida en muchos biestables puede representar el estado de un secuenciador, el valor de un contador, un carácter ASCII en la memoria de un ordenador, o cualquier otra clase de información.
Un uso corriente es el diseño de máquinas de estado finitas electrónicas. Los biestables almacenan el estado previo de la máquina que se usa para calcular el siguiente. El tipo T es útil para contar; una señal repetitiva en la entrada de reloj hace que el biestable cambie de estado por cada transición si su entrada T está a nivel 1. La salida final de una cadena de biestables es el conteo en código binario hasta un máximo de 2n-1.
Uno de los problemas con esta configuración de contador (ripple counter) es que la salida es momentáneamente inválida mientras los cambios se propagan por la cadena. Hay dos soluciones: muestrear la salida solo cuando es válida o utilizar un contador síncrono, que tiene una lógica más compleja para asegurar que todas las salidas cambian al mismo tiempo.
Secuenciación y Metaestabilidad
Los biestables síncronos son propensos a sufrir un problema denominado metaestabilidad, que ocurre cuando una entrada de datos o de control está cambiando en el momento en el que llega un flanco de reloj. El resultado es que la salida puede comportarse de forma imprevista, tardando más de lo normal en estabilizarse o incluso oscilando. En un ordenador, esto puede suponer la corrupción de datos o causar un fallo de programa.
En muchos casos, la metaestabilidad se puede evitar asegurándose de que las entradas se mantienen constantes durante un periodo de tiempo especificado antes y después del flanco de reloj, denominados setup time (tsu) y hold time (th) respectivamente. Estos tiempos están establecidos en la hoja de datos del dispositivo.
Desafortunadamente, no siempre es posible cumplir estos requisitos con entradas en tiempo real asíncronas. En este caso, se puede reducir la probabilidad de error conectando dos o más biestables en cadena (sincronizadores). Aunque esto reduce considerablemente el riesgo, es lógicamente imposible construir un biestable totalmente a prueba de metaestabilidad.
Otro parámetro importante es el retardo de propagación (propagation delay, tp), que es el tiempo que el biestable tarda en cambiar su salida tras un flanco de reloj. Cuando se conectan biestables en cadena, es vital asegurar que el tiempo de salida del primero sea mayor que el tiempo de mantenimiento (hold time) del siguiente para garantizar una transferencia de datos fiable.
