Un estado metaestable es similar a un equilibrio inestable. Un ejemplo común de un equilibrio inestable es un péndulo invertido . Si puedes equilibrar el péndulo en posición vertical, ese es un estado estable. Sin embargo, si algo empuja la palanca hacia un lado u otro (corrientes de aire o vibraciones del suelo, por ejemplo), el péndulo no volverá a la posición vertical, sino que caerá. En cambio, un péndulo normal, si es empujado hacia un lado, acabará volviendo a la vertical.
Los equilibrios estables se utilizan en los sistemas eléctricos para crear elementos de almacenamiento. Los equilibrios inestables no son buenos elementos de almacenamiento (ya que pierden su estado con facilidad), pero suelen existir como estado parásito.
Un elemento de almacenamiento digital común es un par de inversores acoplados en cruz:
El elemento de almacenamiento tiene dos estados estables, uno en el que el nodo de la izquierda está a la tensión de alimentación y el nodo de la derecha a tierra, y el otro en la condición opuesta. También hay un estado inestable, en el que cada nodo está a una tensión intermedia.
Para entender mejor cómo surge el estado inestable, recordemos la función de transferencia de un inversor. El gráfico de la función de transferencia muestra la tensión de salida del inversor para una tensión de entrada determinada.
El inversor es no lineal; una forma sencilla de obtener una solución aproximada de un circuito no lineal es trazar las características del circuito; las intersecciones de los trazados son las soluciones, o lo que es lo mismo, los puntos donde se satisfacen las características eléctricas de todos los componentes del circuito. Normalmente, esto se hace con gráficos i-v como en este ejemplo de diodo en Wikipedia . Sin embargo, para los inversores, lo haremos con gráficos v-v. Superponiendo una segunda función de transferencia del inversor en el gráfico (con los ejes intercambiados, ya que el segundo inversor está al revés:
Hay tres intersecciones de los gráficos: una en (0, Vs), otra en (Vs, 0) y otra en (Vs/2, Vs/2). El estado (Vs/2, Vs/2) es metaestable. Después de una pequeña perturbación de cualquiera de los nodos, el circuito casi siempre se asentará en uno de los estados estables en lugar de volver a (Vs/2, Vs/2).
La forma de escribir un valor en el elemento de almacenamiento de doble inversor es forzar uno de los nodos al valor deseado utilizando un controlador que sea más fuerte que los inversores. Una forma común de hacerlo es con un transistor de paso:
Si conectas la puerta del transistor de paso al reloj, tienes un latch D (estoy omitiendo la estructura de salida). Cuando el reloj es alto, habilitando el transistor de paso, el latch es transparente - la entrada pasa directamente a la salida. Cuando el reloj está bajo, el latch mantiene el valor anterior. La metaestabilidad surge en el momento en que el latch muestrea. Si la entrada es un voltaje alto o bajo estable cuando el latch muestrea, entonces funcionará correctamente. Sin embargo, si la entrada está alrededor del punto Vs/2 cuando el latch muestrea, existe la posibilidad de que el latch termine en el estado metaestable (Vs/2, Vs/2). Una vez que está en el estado metaestable, puede permanecer allí indefinidamente (asumiendo que el latch no se muestrea de nuevo), pero como es un equilibrio inestable, algo suele ocurrir relativamente rápido para sacarlo del estado metaestable.
Cuándo preocuparse por la metaestabilidad
Si tus elementos de almacenamiento se vuelven metaestables, entonces estás perdiendo, como mínimo, parte del presupuesto de tiempo para la lógica descendente. La lógica no puede realizar la evaluación deseada hasta que el estado metaestable se resuelva. En el peor de los casos, el estado metaestable persiste o se propaga a través de la lógica, y los elementos de almacenamiento posteriores también se vuelven metaestables, o varios elementos de almacenamiento relacionados capturan valores inconsistentes.
Una lógica sincrónica correctamente diseñada y en funcionamiento no tiene problemas de metaestabilidad. El periodo de reloj es más largo que el tiempo de evaluación de la lógica, todas las entradas del flip-flop son estables en el siguiente flanco de reloj (requisito de configuración satisfecho) y todas cargan un valor válido.
Algunas de las situaciones comunes en las que la metaestabilidad es una preocupación son:
- Muestreo lógico de una entrada externa, por ejemplo, un interruptor en el panel frontal, o la salida de los circuitos de monitorización que pueden transitar en cualquier momento (subtensión, sobretemperatura).
- Lógica que utiliza múltiples relojes que no tienen una relación sincrónica. Esto suele ocurrir con las interfaces de E/S que tienen requisitos de reloj particulares, pero también ocurre internamente cuando diferentes partes de un chip tienen requisitos de rendimiento diferentes. Por ejemplo, no toda la lógica de tu CPU de 3 GHz funciona realmente a 3 GHz. (Aunque una CPU no es un gran ejemplo, ya que muchos de los relojes de una CPU son múltiplos sincrónicos entre sí).
2 votos
Leslie Lamport (el de $\LaTeX$ fama) escribió una buena descripción de la metaestabilidad en este documento: research.microsoft.com/users/lamport/pubs/buridan.pdf
0 votos
@markrages Brillante. Esto también puede ocurrir con los gatos que caen y las tostadas con mantequilla .