1. Instituto Universitario de Tecnología
Antonio José de Sucre
Extensión Barquisimeto
Integrante:
Oscar Corboba C.I: 20.235.432
BARQUISIMETO, MAYO DE 2014
2. ÁLGEBRA DE BOOLE
Álgebra de Boole (también llamada Retículas booleanas) en informática y matemática, es
una estructura algebraica que rigorizan las operaciones lógicas Y, O y NO, así como el
conjunto de operaciones unión, intersección y complemento.
Se denomina así en honor a George Boole, (2 de noviembre de 1815 a 8 de diciembre de
1864), matemático inglés que fue el primero en definirla como parte de un sistema lógico a
mediados del siglo XIX. Específicamente, el álgebra de Boole fue un intento de utilizar las
técnicas algebraicas para tratar expresiones de la lógica proposicional. En la actualidad, el
álgebra de Boole se aplica de forma generalizada en el ámbito del diseño electrónico.
Claude Shannon fue el primero en aplicarla en el diseño de circuitos de conmutación
eléctrica biestables, en 1938.
Definición
El Álgebra de Boole es una estructura algebraica que puede ser considerada desde distintos
puntos de vista matemáticos:
Como retículo
El álgebra de Boole es un retículo (A, , +), donde el conjunto A esta formado por dos
elementos A={0, 1}, como retículo presenta las siguientes propiedades:
Ley de Idempotencia:
Ley de Asociatividad:
Ley de Conmutatividad:
Ley de Cancelativo:
3. Como anillo
El Álgebra de Boole tiene Estructura algebraica de Anillo:
Grupo abeliano respecto a (+)
El conjunto A= {0,1} es un Grupo abeliano respecto a (+):
(+) es una operación interna en A:
Es asociativa:
Tiene elemento neutro
Tiene elemento simétrico:
Es conmutativa:
Grupo abeliano respecto a (·):
El conjunto A= {0,1} es un Grupo abeliano respecto a ( ):
() es una operación interna en A:
Es asociativa:
4. Tiene elemento neutro
Tiene elemento simétrico:
Es conmutativa:
Distributivo
El conjunto A= {0,1} es un Grupo abeliano respecto a (+) y ( ) y es distributiva:
La operación (+) es distributiva respecto a ( ):
La operación ( ) es distributiva respecto a (+):
Como resultado podemos decir que el Álgebra de Boole tiene Estructura algebraica de
anillo conmutativo y con elemento neutro respecto a las dos operaciones (+) y ( ).
Operaciones
Hemos definido el conjunto A = {0,1} como el conjunto universal sobre el que se aplica el
álgebra de Boole, sobre estos elementos se definen varias operaciones, veamos las más
fundamentales:
Operación suma:
5. La operación suma (+) asigna a cada par de valores a, b de A un valor c de
A:
Su equivalencia en lógica de interruptores es un circuito de dos
interruptores en paralelo.
Si uno de los valores de a o b es 1, el resultado será 1, es necesario que los dos sumandos
sean 0, para que el resultado sea 0.
Operación producto
a b a + b
0 0 0
0 1 1
1 0 1
1 1 1
a b a b
0 0 0
0 1 0
1 0 0
6. La operación producto ( ) asigna a cada par de valores a, b de A un valor c
de A:
Esta operación en lógica de interruptores es un circuito en serie de dos interruptores
Solo si los dos valores a y b son 1, el resultado será 1, si uno solo de ellos es 0 el resultado
será 0.
Operación negación
La operación negación presenta el opuesto del valor de a:
Un interruptor inverso equivale a esta operación:
1 1 1
a
0 1
1 0
7. Operaciones combinadas
Partiendo de estas tres operaciones elementales se pueden realizar otras
más complejas, que podemos representar como ecuaciones booleanas,
por ejemplo:
Que representado en lógica de interruptores es un circuito de dos
interruptores en paralelo, siendo el primero de ellos inverso.
La distinta secuencia de valores de a y b da los resultados vistos en la tabla de verdad.
Leyes fundamentales
El resultado de aplicar cualquiera de las tres operaciones definidas a variables del sistema
booleano resulta en otra variable del sistema, y este resultado es único.
Ley de idempotencia:
Ley de involución:
a b
0 0 1
0 1 1
1 0 0
1 1 1
8. Ley conmutativa:
Ley asociativa:
Ley distributiva:
Ley de cancelación:
Leyes de De Morgan:
9. Álgebra de Boole aplicada a la informática
Se dice que una variable tiene valor booleano cuando, en general, la variable contiene un 0
lógico o un 1 lógico. Esto, en la mayoría de los lenguajes de programación, se traduce en
false (falso) o true (verdadero), respectivamente.
Una variable puede no ser de tipo booleano, y guardar valores que, en principio, no son
booleanos; ya que, globalmente, los compiladores trabajan con esos otros valores,
numéricos normalmente aunque también algunos permiten cambios desde, incluso,
caracteres, finalizando en valor booleano. ..
El 0 lógico
El valor booleano de negación suele ser representado como false, aunque también permite y
equivale al valor natural, entero y decimal (exacto) 0, así como la cadena "false", e incluso
la cadena "0".
El 1 lógico
En cambio, el resto de valores apuntan al valor booleano de afirmación, representado
normalmente como true, ya que, por definición, el valor 1 se tiene cuando no es 0.
Cualquier número distinto de cero se comporta como un 1 lógico, y lo mismo sucede con
casi cualquier cadena (menos la "false", en caso de ser ésta la correspondiente al 0 lógico).
Operador lógico
Los Operadores Lógicos son utilizados por la lógica proposicional para admitir o rechazar
proposiciones. En programación de ordenadores se utilizan para combinar valores lógicos
(Verdadero/Falso) y obtener nuevos valores lógicos que determinen el flujo de control de
un algoritmo o programa.
10. Tablas de Verdad
El comportamiento de un operador lógico suele definirse mediante su correspondiente tabla
de verdad, en ella se muestra el resultado que produce la aplicación de un determinado
operador a uno o dos valores lógicos. Las operaciones lógicas más usuales son:
NO lógico (NOT) o negación:
Operador unario (aplicado a un único operando). Cambia el valor de verdad de
verdadero (V) a falso (F) y viceversa.
p NOT p
V F
F V
O lógica (OR) o disyunción:
Operador n-ario (aplicado a 2 o más operandos). Si todos los operandos son F
devuelve F; si hay alguno que sea V devuelve V.
p q p OR q
V V V
V F V
F V V
F F F
Y lógica (AND) o conjunción:
11. Operador n-ario. Si todos los operandos son V devuelve V; si hay alguno que sea F
devuelve F.
p q p AND q
V V V
V F F
F V F
F F F
Los operadores lógicos son:
&& AND (el resultado es verdadero si ambas expresiones son verdaderas)
|| OR (el resultado es verdadero si alguna expresión es verdadera)
! NOT (el resultado invierte la condición de la expresión)
AND y OR trabajan con dos operandos y retornan un valor lógico basadas en las
denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas tablas de
verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo: "si hace sol Y
tengo tiempo, iré a la playa", "si NO hace sol, me quedaré en casa", "si llueve O hace
viento, iré al cine". Las tablas de verdad de los operadores AND, OR y NOT se muestran
en las tablas siguientes
El operador lógico AND
12. x y resultado
true true true
true false false
false true false
false false false
El operador lógico OR
x y resultado
true true true
true false true
false true true
false false false
El operador lógico NOT
x resultado
true false
false True
Los operadores AND y OR combinan expresiones relacionales cuyo resultado viene dado
por la última columna de sus tablas de verdad. Por ejemplo:
(a<b) && (b<c)
13. Es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es
falso (false). En cambio, la expresión
(a<b) ||(b<c)
Es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el resultado es
falso.
La expresión " NO a es menor que b"
!(a<b)
Es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa. Por tanto, el
operador NOT actuando sobre (a<b) es equivalente a
(a>=b)
La expresión "NO a es igual a b"
! (a==b)
Es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta expresión es equivalente a
(a!=b)
CIRCUITO LÓGICO
Es aquel que maneja la información en forma de "1" y "0", dos niveles lógicos de voltaje
fijos. "1" nivel alto o "high" y "0" nivel bajo o "low".
Los circuitos lógicos están compuestos por elementos digitales como la compuerta AND
(Y), compuerta OR (O), compuerta NOT (NO)......
y combinaciones poco o muy complejas de los circuitos antes mencionados.
En un circuito lógico digital se transmite información binaria (ceros y unos) entre estos
circuitos y se consigue un circuito complejo con la combinación de bloques de circuitos
simples.
La información binaria se representa en la forma de:
- "0" ó "1",
14. - "abierto" ó "cerrado" (interruptor),
- "On" y "Off",
- "falso" o "verdadero", etc.
Los circuitos lógicos se pueden representar de muchas maneras. En los circuitos de los
gráficos anteriores la lámpara puede estar encendida o apagada ("on" o "off"),
dependiendo de la posición del interruptor. (Apagado o encendido)
Los circuitos de conmutación y temporización, o circuitos lógicos, forman la base de
cualquier dispositivo en el que se tengan que seleccionar o combinar señales de manera
controlada. Entre los campos de aplicación de estos tipos de circuitos pueden mencionarse
la conmutación telefónica, las transmisiones por satélite y el funcionamiento de las
computadoras digitales.
El estado verdadero se representado por un 1, y falso por un 0, y en los circuitos lógicos
estos numerales aparecen como señales de dos tensiones diferentes. Los circuitos lógicos se
utilizan para adoptar decisiones específicas de 'verdadero-falso' sobre la base de la
presencia de múltiples señales 'verdadero-falso' en las entradas. Las señales se pueden
generar por conmutadores mecánicos o por transductores de estado sólido. La señal de
entrada, una vez aceptada y acondicionada (para eliminar las señales eléctricas indeseadas,
o ruidos), es procesada por los circuitos lógicos digitales. Las diversas familias de
dispositivos lógicos digitales, por lo general circuitos integrados, ejecutan una variedad de
funciones lógicas a través de las llamadas puertas lógicas, como las puertas OR, AND y
NOT y combinaciones de las mismas (como 'NOR', que incluye a OR y a NOT).
TABLA DE VALORES DE VERDAD
La tabla de valores de verdad, también conocida como tabla de verdad, es una
herramienta desarrollada por Charles Peirce en los años 1880, siendo sin embargo más
popular el formato que Ludwig Wittgenstein desarrolló en su Tractatus logico-
philosophicus, publicado en 1921.
Se emplean en lógica para determinar los posibles valores de verdad de una expresión o
proposición molecular. O si un esquema de inferencia, como argumento, es formalmente
válido mostrando que, efectivamente, es una tautología.
15. Definiciones
Considerando dos proposiciones A y B, cada una como un todo (sea como proposición
atómica o molecular) y asimismo cada una con sus dos posibles valores de verdad V
(Verdadero) y F (Falso), y considerando su relación "$" como variable de cualquier
relación sintáctica posible que defina una función de verdad, podrían suceder los casos
siguientes:
NOTA: Las proposiciones A, B, C,.... mayúsculas simbolizan cualquier proposición,
atómica o molecular, por lo que propiamente son expresiones metalingüísticas respecto al
lenguaje objeto de la lógica proposicional, generalmente simbolizadas con minúsculas p, q,
r, s... como proposiciones atómicas.
Funciones de verdad
Negación (¬)
Consiste en cambiar el valor de verdad de una variable proposicional.
A
V F
F V
Conjunción
La proposición molecular será verdadera sólo cuando ambas variables proposicionales sean
verdaderas. (Columna 8 de la tabla de funciones posibles)
A B
V V V
V F F
16. F V F
F F F
Disyunción
La proposición molecular será verdadera cuando una o ambas variables proposicionales
sean verdaderas.(Columna 2 de la tabla de funciones posibles)
A B
V V V
V F V
F V V
F F F
Condicional (→)
La proposición molecular será verdadera cuando se cumpla si es verdadero A entonces lo es
B. (Columna 5 de la tabla de funciones posibles)
A B
V V V
V F F
F V V
17. F F V
Bicondicional (↔, si y sólo si)
La proposición molecular será verdadera cuando ambas variables proposicionales tengan a
la vez el mismo valor de verdad. (Columna 7 de la tabla de funciones posibles)
A B
V V V
V F F
F V F
F F V
Disyunción exclusiva
La proposición molecular será verdadera sólo cuando una de las dos variables
proposicionales sea verdadera, pero no las dos. (Columna 10 de la tabla de posibles valores)
A B
V V F
V F V
F V V
18. F F F
Un biestable, también llamado báscula (flip-flop en inglés), es un multivibrador capaz
de permanecer en un estado determinado o en el contrario durante un tiempo indefinido.
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: sólo tienen entradas de control. El más empleado es el biestable RS.
Síncronos: además de las entradas de control posee 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.
Biestable RS
Descripción
19. Cronograma del biestable RS
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas
principales, R y S, a las que debe el nombre, permiten al ser activadas:
R: el borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida.
S: el grabado (set en inglés), puesta a 1 ó 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 la báscula está construida con puertas NO-O (NOR), o a alto, si
con puertas NO-Y (NAND). El problema de que ambas salidas queden al mismo estado
está 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
Sólo posee las entradas R y S. Se compone internamente de dos puertas lógicas NO-
Y o NO-O, según se muestra en la siguiente figura:
Biestables RS con puertas NO-O, a), NO-Y, c), y símbolos normalizados respectivos b) y
d).
Su tabla de verdad es la siguiente (Q representa el estado actual de la salida y q el
estado anterior a la última activación):
20. Tabla de verdad biestable RS
R S Q (NO-O) Q' (NO-Y)
0 0 q N. D.
0 1 1 0
1 0 0 1
1 1 N. D. q
N. D.= Estado no determinado
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
21. C R S Q (NO-O)
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
Símbolos normalizados: Biestables D a) activo por nivel alto y b) activo por flanco de
subida.
Dispositivo de almacenamiento temporal 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 de biestables D:
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:
22. y su tabla de verdad:
D Q Qsiguiente
0 X 0
1 X 1
X=no importa
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 en inglés) mediante la transformada en z.
Biestable T
Símbolo normalizado: Biestable T activo por flanco de subida.
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.
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 que describe su comportamiento es:
y la tabla de verdad:
T Q Qsiguiente
23. 0 0 0
0 1 1
1 0 1
1 1 0
Biestable JK
Descripción
Cronograma de la báscula JK
Dispositivo de almacenamiento temporal de 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 en inglés), puesta a 1 ó nivel alto de la salida.
K: El borrado (reset en inglés), puesta a 0 ó 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 de borrado o grabado. 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 que describe su comportamiento es:
Y su tabla de verdad es:
J K Q Qsiguiente
24. 0 0 0 0
0 0 1 1
0 1 X 0
1 0 X 1
1 1 0 1
1 1 1 0
X=no importa
Una forma más compacta de la tabla de verdad es (Q representa el estado siguiente de la
salida en el próximo flanco de reloj y q el estado actual):
J K Q
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 en física de 2000.
Biestable JK activo por flanco
25. Símbolos normalizados: Biestables JK activo 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
la de 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 en inglés).
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.
26. Otra forma de expresar la tabla de verdad del biestable JK es mediante la denominada tabla
de excitación:
q Q J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Siendo q el estado presente y Q el estado siguiente.
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, cuyo funcionamiento es el
siguiente:
Al aplicar la tensión de alimentación (Vcc), los dos transistores iniciaran la conducción, ya
que sus bases reciben un potencial positivo, TR-1 a través del divisor formado por R-3, R-4
y R-5 y TR-2 a través del formado por R-1, R-2 y R-6, pero como los transistores no serán
27. exactamente idénticos, por el propio proceso de fabricación y el grado de impurezas del
material semiconductor, 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
a través del divisor formado por R-2, R-5, 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 base de TR-1, este proceso llevará finalmente al bloqueo de TR-2 (salida Y a nivel
alto).
Pero si ahora aplicamos un impulso de disparo de nivel alto por la entrada T, a través de los
condensadores C-1 y C-2 pasará a las bases de ambos transistores. En el caso de TR-1 no
tendrá más efecto que aumentar su tensión positiva, por lo que este seguirá conduciendo.
En la base de TR-2 el impulso hará que este transistor conduzca, realizándose un proceso
similar al descrito al principio, cuando el que conducía primero era TR-1, que terminará
bloqueando a este y dejando en conducción a TR-2 (salida Y a nivel bajo).
La secuencia descrita 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, momento en que volverá a cambiar.
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.
Aplicación
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 biestable 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 alto-bajo si su entrada T está a nivel 1. La
salida de un biestable puede conectarse a la entrada de reloj de la siguiente y así
sucesivamente. La salida final del conjunto considerado como una cadena de salidas de
todos los biestables es el conteo en código binario del número de ciclos en la primera
entrada de reloj hasta un máximo de 2n-1
, donde n es el número de biestables usados.
Uno de los problemas con esta configuración de contador (ripple counter en inglés) es que
la salida es momentáneamente inválida mientras los cambios se propagan por la cadena
justo después de un flanco de reloj. Hay dos soluciones a este problema. La primera es
muestrear la salida sólo cuando se sabe que esta es válida. La segunda, más compleja y
28. ampliamente usada, es utilizar un tipo diferente de contador síncrono, que tiene una lógica
más compleja para asegurar que todas las salidas cambian en el mismo momento
predeterminado, aunque el precio a pagar es la reducción de la frecuencia máxima a la que
puede funcionar.
Una cadena de biestables T como la descrita anteriormente también sirve para la división de
la frecuencia de entrada entre 2n
, donde n es el número de biestables entre la entrada y la
última salida.
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 muchas veces más de lo normal en estabilizarse al estado correcto, o
incluso podría oscilar repetidas veces hasta terminar en su estado estable. En un ordenador
esto puede suponer la corrupción de datos o causar un fallo de programa.
En muchos casos, la metaestabilidad en los biestables se puede evitar asegurándose de que
los datos y las entradas de control 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. Esos tiempos están establecidos en la hoja de datos del dispositivo en
cuestión, y son típicamente entre unos pocos nanosegundos y unos pocos cientos de
nanosegundos para dispositivos modernos.
Desafortunadamente, no siempre es posible cumplir estos requisitos, porque los biestables
pueden estar conectados a entradas en tiempo real que son asíncronas, y pueden cambiar en
cualquier momento fuera del control del diseñador. En este caso, lo único que puede
hacerse es reducir la probabilidad de error a un determinado nivel, dependiendo de la
fiabilidad que se desee del circuito. Una técnica para reducir la incidencia es conectar dos o
más biestables en cadena, de forma que la salida de una se conecta a la entrada de la
siguiente, y con todos los dispositivos compartiendo la misma señal de reloj. De esta forma
la probabilidad de un suceso metaestable puede reducirse considerablemente, pero nunca
podrá eliminarse por completo.
Existen biestables robustos frente a la metaestabilidad, que funcionan reduciendo los
tiempos de setup y hold en todo lo posible, pero incluso estos no pueden eliminar por
completo el problema. Esto es debido a que la metaestabilidad es mucho más que un
problema de diseño. Cuando el flanco de reloj y la entrada de datos están suficientemente
juntos, el biestable tiene que elegir el evento que ocurrió antes. Y por más rápido que se
haga el dispositivo, siempre existe la posibilidad de que sucedan lo suficientemente juntos
29. como para que que no se pueda detectar cual es el que ocurrió primero. Así pues, es
lógicamente imposible el construir un biestable a prueba de metaestabilidad.
Otro parámetro temporal importante de un biestable es el retardo reloj-a-salida (clock-to-
output tCO) o retardo de propagación (propagation delay tP), que es el tiempo que el
biestable tarda en cambiar su salida tras un flanco de reloj. El tiempo para una transición
alto-a-bajo (tPHL) es a veces diferente del de las transiciones de bajo-a-alto (tPLH).
Cuando se conectan biestables en cadena, es importante asegurar que el tCO de el primero es
mayor que el hold time (tH) del siguiente, ya que en caso contrario, el segundo biestable no
recibirá los datos de forma fiable. La relación entre tCO y tH está garantizada normalmente si
ambos biestables son del mismo tipo.