Reducción de la Metastabilidad en Diseños FPGA

Jason Howie
|  Creado: Febrero 21, 2017  |  Actualizado: Noviembre 11, 2020

Aquí, echamos un vistazo al concepto de metastabilidad en lo que respecta a los circuitos digitales – y por lo tanto a los diseños FPGA – y cómo su 'aparición' puede reducirse considerablemente simplemente adhiriéndose a principios de diseño probados que mitigan su efecto.

¡Metastabilidad! Podrías ser perdonado por pensar que esto podría estar relacionado con la integridad de algún contenedor de contención futurista, o campo de fuerza: "¡La metastabilidad del triangulador de flujo del motor de curvatura y el sobre criónico está alcanzando niveles críticos, Capitán!"

Para aquellos de ustedes que viven y respiran electrónica digital a diario, sin embargo, el término probablemente será recibido con una mezcla de desdén y respeto.

Aquí, echamos un vistazo al concepto de metastabilidad en lo que respecta a un circuito digital – y por lo tanto a los diseños FPGA – y cómo su 'aparición' puede reducirse considerablemente, simplemente adhiriéndose a principios de diseño probados que mitigan su efecto.

Metastabilidad Explicada

La metastabilidad se refiere a las salidas de los registros (o flip-flops sincronizados en la antigua terminología) dentro de los circuitos digitales y la posibilidad de que un terminal de salida entre en un 'estado metastable'. Los dispositivos FPGA suelen utilizar flip-flops de tipo D. Antes de examinar cómo se puede entrar en tal estado, es una buena idea refrescarnos con algunos elementos básicos de tiempo clave relacionados con la operación de un registro:

'Tiempo de preparación' – este es el tiempo mínimo que la entrada al registro debe estar estable, antes de la llegada del próximo borde de reloj. Aparece típicamente como Tsu en las hojas de datos.

'Tiempo de mantenimiento' – este es el tiempo mínimo después de la llegada del borde del reloj, que la entrada al registro debe continuar en el mismo estado estable. Aparece típicamente como Th en las hojas de datos.

'Tiempo de retardo de reloj a salida' – este es el tiempo, después de la llegada del borde del reloj, en el cual el punto de salida del registro cambia. Esto también se refiere como el 'tiempo de asentamiento' o 'retraso de propagación' del registro. Puede aparecer en las hojas de datos como, por ejemplo, Tco, o Tphl y Tplh.

Siempre que una señal viaja entre dos dominios de reloj asincrónicos – subcircuitos digitales dentro del diseño general que funcionan con relojes diferentes o no relacionados – existe la posibilidad de encontrar metastabilidad. Esto también es cierto para la transferencia de datos desde una región no sincronizada del diseño a un sistema sincrónico – por ejemplo, señales externas (fuera) alimentadas en un FPGA.

La siguiente imagen ilustra dos ejemplos de señales asincrónicas ingresando a un sistema sincrónico. En el ejemplo superior, una señal viaja entre diferentes dominios de reloj. En el ejemplo inferior, una señal de un sistema no sincronizado se alimenta en un sistema sincronizado (con reloj).

Asynchronous System and Synchronous System Graphic

El problema surge cuando una señal de datos de un dominio de reloj llega a la lógica de registro en otro dominio de reloj. La señal de datos entrante del dominio fuente puede cambiar en cualquier momento en comparación con el reloj en el dominio objetivo – no hay sincronía entre los dos dominios, no hay conocimiento de las velocidades transitorias en los dos subcircuitos lógicos. Si la señal de datos cambia en un punto que viola los tiempos requeridos de Establecimiento o Mantenimiento para el registro de destino, la salida de ese registro puede entrar en un 'estado metastable' – un estado donde la señal de salida no es ni lógicamente Baja, ni lógicamente Alta, sino más bien en el área inestable entre los dos.

El tiempo durante el cual la salida continúa siendo metastable puede exceder el tiempo especificado de ‘Retardo de Reloj a Salida’ (tiempo de asentamiento) del registro. En la mayoría de los casos, los registros resolverán rápidamente esta inestabilidad de salida y volverán a uno de los dos estados definidos (y estables). Sin embargo, el problema para un diseño es en la minoría de casos, cuando el tiempo para asentarse en un estado estable no es lo suficientemente rápido, o la señal de salida se resuelve en el nivel lógico incorrecto.

La siguiente imagen ilustra la salida de un registro dependiendo de la transición de la señal de datos de entrada.

Output of a register

Considerando las tres entradas:

Entrada A: La entrada observa los tiempos de Preparación y Mantenimiento del registro y la salida está disponible después del tiempo de Retardo de Reloj a Salida del dispositivo.

Entrada B: La entrada transiciona durante el tiempo de Preparación del registro, con la salida volviéndose metastable hasta asentarse en el nivel estable correcto más allá del tiempo de Retardo de Reloj a Salida.

Entrada C: La entrada transiciona durante el tiempo de Mantenimiento del registro, con la salida volviéndose metastable. ¡No solo la salida se asienta en un estado estable más allá del tiempo de Retardo de Reloj a Salida, sino que también se asienta en el nivel lógico incorrecto!

Si la salida de un registro se alimenta a más de un registro subsiguiente en el circuito, de manera paralela, existe la posibilidad de que estos registros de destino capturen los datos en niveles lógicos diferentes, dependiendo de si la salida metastable del registro fuente se ha estabilizado en un estado estable antes de que cada registro de destino se actualice para capturar los siguientes datos. Los retrasos en el camino entre los registros fuente y destino, sumados al tiempo para que la salida metastable se vuelva estable, solo agravan el problema.

En resumen, la metastabilidad es un enemigo basado en estadísticas o probabilidades para un diseñador. Dependiendo de los dispositivos utilizados y la disposición de los circuitos en el diseño, pueden ocurrir estados de salida metastables, o no. Si ocurren, pueden ser perjudiciales, causando el fallo del diseño, o tal vez la suerte esté de tu lado y los tiempos de asentamiento de los dispositivos, las velocidades de reloj y las rutas trazadas hagan que su aparición sea benigna. Sin embargo, el problema como diseñador es, ¿realmente puedes permitirte tomar esa 'oportunidad'? ¿Qué pasa si el producto que estás diseñando es parte de una instalación médica o de un avión comercial? El fallo del diseño podría ser catastrófico.

Aunque la metastabilidad no puede ser erradicada por completo – ningún dispositivo en el mundo puede afirmar operar completamente libre de potenciales efectos de metastabilidad – se puede reducir hasta el punto de convertirse apenas en un 'punto en el radar'.

Como medida de la fiabilidad de un diseño, en lo que respecta a fallos inducidos por la metastabilidad, hablamos de algo llamado el Tiempo Medio Entre Fallos – o MTBF, por sus siglas en inglés. Con la metastabilidad sin control – es decir, sin provisiones en un diseño para mitigar su efecto – el MTBF podría ser tan poco como segundos. Al aplicar metodologías de diseño digital probadas y verdaderas para combatir la metastabilidad, y al hacer elecciones cuidadosas de los dispositivos digitales utilizados en un diseño, el MTBF puede aumentarse considerablemente. Mil años entre fallos. Un millón de años. Incluso mil millones de años si se calcula matemáticamente y se extrapola. A estos valores para el MTBF, tal diseño puede ser sellado como 'Altamente Fiable' o prácticamente 'A Prueba de Fallos' (o debería decirse 'Libre de Fallos') – pero captas la idea.

Las siguientes secciones echan un vistazo a cómo tú, como diseñador, puedes extender el MTBF, y cómo la tecnología de dispositivos juega su papel.

Sincronizando Señales Asincrónicas

Quizás la solución más prevalente y ampliamente aceptada al problema de la metaestabilidad es la adición de circuitos frontales para sincronizar una señal asíncrona entrante con el reloj del circuito síncrono objetivo. En su forma más simple, este circuito consta de uno o más flip-flops tipo D, encadenados juntos y sincronizados usando el reloj del sistema objetivo. Esto se conoce como una 'cadena de registros de sincronización', o simplemente 'sincronizador'.

El retraso adicional impuesto por cada registro permite que la señal entrante se recupere de cualquier estado metaestable en el que pueda haber entrado. Cuantos más registros en la cadena, más retraso y, por lo tanto, más tiempo para que una salida metaestable se resuelva. El retraso total a menudo se conoce como el 'Tiempo de Asentamiento de la Metaestabilidad'. Típicamente, el circuito de sincronización constará de dos registros, pero para aplicaciones críticas, como las médicas y militares, no es raro que se utilicen tres.

La siguiente imagen ilustra un ejemplo de la adición de un sincronizador de 2 etapas al frente de un sistema síncrono, para sincronizar una señal asíncrona entrante.

adding a 2-stage synchronizer to the front-end of a synchronous system

La lógica de interconexión entre circuitos en diferentes dominios de reloj y/o la lógica FIFO también se utiliza – además de la sincronización frontal – para asegurar la recepción de valores de datos correctos. Esto es de particular importancia cuando se trata de un agrupamiento en bus de múltiples señales asíncronas, cada una de las cuales podría cambiar en cualquier momento e independientemente de las demás.

El eslabón más débil...

En un diseño digital, puede haber múltiples dominios de reloj diferentes y una plétora de señales pasando entre ellos. Además, puede haber una variedad de señales externas, asíncronas – provenientes del exterior (especialmente para un diseño implementado en un FPGA y que utiliza componentes periféricos externos e interfaces de comunicaciones). En tales casos, no es raro encontrar muchas cadenas de registros sincronizadores, manejando las diferentes transferencias de señales asíncronas dentro del sistema general.

En términos de MTBF, cada cadena de sincronización tendrá su propio 'valor'. Dado que la tasa de fallos general de un diseño es la suma de las tasas de fallo individuales de las cadenas de sincronización dentro de él, y la tasa de fallo es 1/MTBF, se puede ver fácilmente que una cadena de sincronización con un MTBF disminuido en comparación con las otras, tendría un efecto perjudicial general sobre el MTBF total del diseño. De hecho, el MTBF del diseño seguirá esencialmente el MTBF de la peor cadena de sincronizadores, lo cual puede ser desastroso si cinco cadenas tenían un MTBF de un millón de años y una sexta cadena tenía un MTBF de 50 años!!

Para manejar esto, la solución es agregar otra etapa de registro a la cadena de sincronizadores con peor rendimiento en el diseño, aumentando así el tiempo de asentamiento de la metastabilidad y mejorando considerablemente el MTBF de esa cadena, y por lo tanto del diseño en general (¡si no exponencialmente!).

Tecnología de Dispositivos - Más Rápido vs Más Pequeño

Para recapitular, la metastabilidad (¡aunque no hay nada estable sobre este estado!) ocurre cuando una señal asincrónica transita en violación del Tiempo de Preparación y/o de Mantenimiento de un registro. La longitud total de tiempo, Preparación + Mantenimiento, define esencialmente la 'ventana' para la ocurrencia de metastabilidad, la 'ventana de metastabilidad', si se quiere.

Es razonable pensar que cuanto más rápidos sean los tiempos de Configuración y Retención de un registro, menor será la ventana de metastabilidad. De hecho, las familias de lógica más rápidas exhiben estos tiempos más cortos y, por lo tanto, disminuyen la probabilidad de un evento metastable. En caso de que ocurra un evento metastable (recuerde que la metastabilidad no puede ser completamente erradicada), los registros son lo suficientemente rápidos para recuperarse rápidamente. Por ejemplo, un registro de la familia 74F conduciría a un mejor MTBF que un dispositivo utilizado de la familia 74LS – dos extremos del espectro de velocidad del dispositivo.

Con los FPGA, la disminución en las geometrías de proceso (desde 180nm, pasando por 90nm y en adelante a 65nm, 40nm y más allá) se presta a velocidades de conmutación de transistores más rápidas – mejorando típicamente el MTBF debido a la metastabilidad. Sin embargo, los beneficios del tamaño reducido no están sin una posible penalización. Las geometrías en reducción naturalmente traen voltajes de suministro reducidos. Durante un estado metastable, la salida de un registro es típicamente la mitad del voltaje de suministro. A medida que el voltaje de suministro se hace más y más pequeño, la diferencia de voltaje entre el estado completo y la mitad se estrecha, lo que lleva a una reducción en la ganancia del circuito y tiempos más largos para que los registros se recuperen de un estado metastable.

Los proveedores de FPGA típicamente realizan un análisis de metastabilidad riguroso para asegurar robustez contra la metastabilidad en dispositivos físicos que utilizan estas geometrías de proceso cada vez menores.

Enlaces Útiles

Utilice los siguientes enlaces para acceder a documentos externos que examinan de cerca y con más detalle el fenómeno de la metastabilidad y cómo su efecto es esencialmente insignificante en los diseños electrónicos digitales. Muchos de estos documentos analizan las ecuaciones utilizadas para calcular el MTBF para un flip-flop, y el MTBF subsiguiente para un diseño completo, y proporcionan referencias para obtener más información sobre el tema.

Metastabilidad en Lógica Digital (www.interfacebus.com)

FPGA-FAQ 0017: Cuéntame sobre la Metastabilidad (Philip Freidin)

Metastabilidad en electrónica (Wikipedia)

¿Qué es la Metastabilidad? (www.asic-world.com)

Metastabilidad en Diseño (La Página de Inicio de VLSI)

Documento Técnico: Entendiendo la Metastabilidad en FPGAs (Altera)

Nota de Aplicación: Recuperación Metastable en FPGAs Virtex-II Pro (Peter Alfke, Xilinx)

Nota de Aplicación: Metastabilidad y la Familia ECLinPS (Ingeniería de Aplicaciones, ON Semiconductor)

Respuesta Metastable en Circuitos Lógicos de 5-V (Texas Instruments)

Sobre el autor / Sobre la autora

Sobre el autor / Sobre la autora

Jason Howie es el director de redacción técnica de Altium. Jason aporta una gran experiencia en literatura técnica y, a menudo, se le puede escuchar golpeando el teclado hasta altas horas de la madrugada. Antes de unirse a Altium en mayo de 2000, dedicó algo más de 4 años al Joint European Torus en Oxfordshire, Reino Unido, formando parte del equipo de sistemas mecanizados de instrumentación y protección.

Recursos Relacionados

Documentación técnica relacionada

Volver a la Pàgina de Inicio
Thank you, you are now subscribed to updates.