Introducción al Cruce de Dominios de Reloj: Doble Flopping
Este artículo discutirá una técnica conocida llamada “doble flopping” para transferir una señal de control de un solo bit entre dos dominios de reloj.
es común emplear varias señales de reloj en un sistema digital. Dado que las señales de reloj de los diferentes dominios de reloj son independientes en general, la transferencia de datos entre los diferentes dominios de reloj puede ser una tarea desafiante. Este artículo discutirá una técnica conocida llamada “doble flop” para transferir una señal de control de un solo bit entre dos dominios de reloj.
¿Por Qué Necesitamos Varios Relojes?
La metodología general de diseño digital recomienda el uso de una señal de reloj para todo el sistema, principalmente porque simplifica tanto el procedimiento de diseño como el análisis de temporización del sistema. Sin embargo, esta metodología no siempre ofrece la solución más eficiente y, a veces, ni siquiera es posible tener un solo reloj para todo el sistema. Por ejemplo, considere un diseño FPGA que funcione a 20 MHz y se comunique con dos dispositivos externos que utilicen interfaces que funcionen a 100 MHz y 150 MHz. Aquí, tenemos que lidiar con tres frecuencias de reloj diferentes. Tenga en cuenta que la frecuencia de reloj de las interfaces puede estar predefinida y es posible que no podamos elegirla en función del reloj utilizado dentro de la FPGA.
A veces, podemos elegir la frecuencia de reloj para las diferentes partes del sistema, pero, incluso en este caso, puede que no sea una buena idea operar todo el sistema a una frecuencia de reloj dada. Por ejemplo, supongamos que todo el sistema puede funcionar a 20 MHz, excepto para un subsistema que necesita un reloj de 100 MHz. Si decidimos usar una señal de reloj para todo el sistema, entonces tendríamos que operar el sistema a 100 MHz para acomodar la velocidad de reloj más alta disponible en el sistema. Obviamente, esto no es razonable porque no solo hemos sobrediseñado una gran parte del sistema (partes que podrían operarse a 20 MHz), sino que también hemos aumentado innecesariamente el consumo de energía dinámica del sistema. Como puede ver, hay muchas circunstancias en las que necesitamos emplear diferentes velocidades de reloj para diferentes partes del sistema.
Una sección del diseño en la que todos los elementos síncronos, como chanclas y carneros, utilizan la misma señal de reloj se denomina dominio de reloj. Tener diferentes dominios de reloj puede ser beneficioso, pero no es tan fácil como parece. La siguiente sección discute algunos de los problemas que podemos enfrentar al usar un sistema de reloj múltiple.
El Problema de Metástasis
Supongamos que tenemos dos secciones de lógica, A y B, que operan a 50 MHz y 100 MHz, respectivamente. Esto se muestra en la Figura 1.
Figura 1
En nuestro ejemplo simple, la sección B tiene una entrada, En_In, que está conectada a la salida En_Out de la sección A. Esta conexión corresponde a una señal de activación alta activa que inicia un algoritmo en B después de que A realice una operación en particular. La Figura 1 muestra el registro que genera la señal de activación en A y el registro que la recibe en B.
Supongamos que las formas de onda del reloj son las que se muestran en la Figura 2 y el sistema se activa con el borde ascendente. Dado que la señal En_Out es generada por el dominio de reloj A, su transición de baja a alta puede ocurrir después de un borde ascendente de clk1 como se muestra en la figura. El retardo entre el borde ascendente de clk1 y la transición En_Out corresponde al retardo de reloj a Q (T T_{clk a Q, DFF1}}) del flip-flop en la sección lógica A. Ahora, esperamos que el registro DFF2 en el dominio B muestreará la señal enable en el siguiente borde ascendente de clk2 en $ $ t=t_2.. El muestreo se realizará con éxito siempre que se cumplan los requisitos de tiempo del DFF2, es decir, $ $ t_1+T_{clk-to-Q,\; DFF1} \leq t_2-T_{setup,\; DFF2}$ $.
Figura 2
En la Figura 2, la condición $$t_1+T_{clk-a-Q, \; DFF1} \leq t_2-T_{configuración, \; DFF2}$$ es satisfecho, pero esto no es siempre el caso. Tenga en cuenta que las señales de reloj de diferentes dominios de reloj son independientes en general. No conocemos su relación de fase y las formas de onda pueden ser como se muestra en la Figura 3. En este caso, la transición de baja a alta de la señal de habilitación está tan cerca del borde ascendente de clk2 que la condición t t_1+T_ {clk-to-Q,\; DFF1} \leq t_2-T_{setup, \; DFF2} not no se cumple.
Figura 3
Dado que los datos de entrada de DFF2 han cambiado dentro del tiempo de configuración, el comportamiento del registro será impredecible. Debido a la violación del tiempo de configuración, el voltaje de salida del registro podría ser el valor que representa un alto lógico, un bajo lógico o, lo que es peor, un valor entre el alto lógico y el bajo voltaje lógico. Estos tres casos son posibles mientras que los datos de entrada eran en realidad lógicos altos en el borde del reloj correspondiente. De manera similar, el valor de salida del registro será impredecible cuando se viole el tiempo de retención del registro, es decir, En_Out cambia dentro de una ventana de tiempo después del borde del reloj activo definido por el tiempo de retención del registro. Cuando la salida del registro se suspende a un voltaje entre los voltajes lógicos alto y bajo, decimos que el flip-flop ha entrado en un estado metaestable.
Examinemos los tres casos posibles de violación de tiempo de la Figura 3 individualmente:
- Como primer caso, supongamos que el valor de salida del DFF2 va a logic high con el borde ascendente de clk2 en $ $ t=t_2.. En este caso, no hay error y el flip-flop contiene datos válidos, aunque tuvimos una violación del tiempo de configuración. Las transiciones de datos según lo esperado sin errores.
- El segundo caso: supongamos que la salida DFF2 va a logic low con el borde ascendente clk2 en $ $ t=t_2.. En este caso, la señal enable no se muestrea correctamente en el dominio de reloj B. Sin embargo, esto no será un problema porque En_Out proviene del dominio de reloj A y será alto durante al menos un período de clk1 como se muestra en la Figura 3. Por lo tanto, el siguiente borde ascendente de clk2 en $ $ t=t_3 sample muestreará correctamente el valor En_Out. Para este borde de reloj, los requisitos de tiempo de DFF2 se cumplirán porque En_Out no ha cambiado durante más de un período de clk2. En este caso, estamos muestreando En_Out aproximadamente un período de reloj más tarde de lo que realmente hizo la transición. Sin embargo, esto no es un problema porque se asumió que los relojes de los dos dominios de reloj eran independientes y no hicimos ninguna suposición sobre la hora de llegada de la señal En_Out. De hecho, el circuito en el dominio de reloj B realiza el final de los cálculos del dominio de reloj A con un retraso adicional de un período clk2.
- A continuación, supongamos que el registro DFF2 entra en el estado metaestable. En este caso, la salida del registro se suspende a un voltaje entre los voltajes lógicos alto y bajo, pero esto será temporal. El flip-flop eventualmente saldrá del estado metaestable y pasará a lógica alta o lógica baja. El tiempo necesario para salir del estado metaestable se conoce como tiempo de resolución T T_r.. Esto se muestra en la Figura 4. En esta figura, se ha producido la violación del tiempo de configuración y el flip flop ha entrado en el estado metaestable durante un intervalo de tiempo de $ $ T_r.. Después $$T_r$$, el flip flop salida a la lógica de alto ($$Q2_{meta-a-1}$$) o lógico bajo ($$Q2_{meta-a-0}$$).
Figura 4
El tiempo de resolución no es determinista y se describe como una función de distribución de probabilidad
P P (T_r)=e ^ {\frac {- T_r} {\tau}}$$
Donde $ $\tau is es la “constante de tiempo de decaimiento” y está determinada por las características eléctricas de la chancla. Un valor típico para este parámetro será de aproximadamente una fracción de un nanosegundo.
La ecuación anterior da la probabilidad de permanecer en el estado metaestable durante un intervalo de tiempo igual a $ $ T_r after después del borde del reloj de muestreo. Debido a la característica exponencial de la ecuación, la probabilidad disminuirá rápidamente a medida que aumentemos el valor de $ $ T_r$ $. Por ejemplo, para que $$\tau =0.5$$ ns y $$T_r = 5$$ ns, obtenemos una probabilidad de que $$\aprox 4.5 \times 10^{-5}$$.
En resumen, no podemos evitar que se produzca metástasis porque las señales de reloj de los dos dominios de reloj son independientes entre sí. Sin embargo, si proporcionamos el flip-flop con un tiempo de resolución suficientemente grande, se resolverá a un estado estable con una alta probabilidad. Por lo tanto, si nuestro diseño incluye chanclas que podrían entrar en el estado de metástasis, debemos darle a la chancla tiempo suficiente para salir de la metástasis. Luego, podemos propagar de forma segura el valor del flip-flop a las celdas lógicas aguas abajo. Tenga en cuenta que el uso de un valor metaestable puede llevar a todo el sistema a un estado desconocido. Puede conducir a un flujo de corriente alto e incluso al agotamiento de la viruta en el peor de los casos. Por lo tanto, debemos evitar la alimentación de datos inestables al sistema.
Doble Flop
Vimos que dar al flip-flop un tiempo suficiente puede reducir en gran medida la posibilidad de permanecer en el estado metaestable. Veamos cómo se puede usar esto para evitar la propagación de datos metaestables en el sistema. Considere el diagrama de bloques de la Figura 5. Esto muestra una ruta típica en el dominio de reloj B de la Figura 1 que recibe y procesa la señal En_In.
Figura 5
El período de reloj mínimo que se puede usar para operar este circuito será
T T_ {clk,\; min} = T_ {clk-to-Q}+ T_{comb, \; max} + T_{configuración}$$
donde $$T_{clk-a-Q}$$ y $$T_{configuración}$$ son el reloj-a-Q y el tiempo de instalación de los flip-flops y $$T_{peine, \; max}$$ es el tiempo máximo que el circuito combinacional, “el Peine.”, exhibir. Esta ecuación se obtiene asumiendo que los datos de salida de DFF2 son estables. Si no lo es, tenemos que considerar algún tiempo de resolución como en la siguiente ecuación:
T T_ {clk,\; min} = T_ {clk-to-Q}+ T_r + T_{comb, \; max} + T_{configuración}$$
El valor del tiempo de resolución determinará la probabilidad de salir del estado metaestable. Supongamos que el período de clk2 es $ $T_ {clk2}$ $. Entonces, el valor del tiempo de resolución disponible será
T T_r = T_ {clk2} – \ big ( T_{clk-to-Q} + T_{comb,\; max}+ T_ {setup}\ big )$$
Para reducir la probabilidad de permanecer en un estado metaestable, debemos aumentar $ $T_r.. Con un reloj período $$T_{clk2}$$, la única opción de diseño será minimizar el parámetro $$T_{peine, \; max}$$. Por lo tanto, será mejor que pongamos el “Peine”.”bloquear después del flip-flop DFF3 como se muestra en la Figura 6. De esta manera, theoretically T_{comb,\; max} be será teóricamente cero para la ruta entre DFF2 y DFF3. Por lo tanto, tendremos el máximo tiempo de resolución posible.
Figura 6
Esta técnica se denomina doble flop y se usa ampliamente al transferir señales de control como la señal de habilitación anterior entre dos dominios de reloj. Tenga en cuenta que el registro adicional introducirá otro retraso de un período de reloj en la señal enable capturada por el dominio de reloj B. Sin embargo, este retraso vale la pena el beneficio de evitar estados metaestables en el sistema.
En este artículo se analiza el paso de una señal de habilitación de un dominio de reloj lento a un dominio de reloj rápido. Es posible que necesite familiarizarse con varias otras técnicas, como pasar una señal de control del dominio de reloj rápido al lento, la técnica de apretón de manos y la transferencia de datos basada en FIFO entre los dominios de reloj. Puede encontrar algunos detalles en el Capítulo 16 de Diseño de Hardware RTL con VHDL: Codificación para Eficiencia, Portabilidad y Escalabilidad y el Capítulo 6 de Diseño FPGA Avanzado: Arquitectura, Implementación y Optimización.
Resumen
- Hay muchas circunstancias en las que necesitamos emplear diferentes velocidades de reloj para diferentes partes del sistema.
- Dado que las señales de reloj de diferentes dominios de reloj son independientes en general, transferir datos entre los diferentes dominios de reloj puede ser una tarea desafiante.
- El valor de salida de un registro será impredecible cuando se produzca una violación del tiempo de configuración o del tiempo de espera. Podría contener el valor que representa una lógica alta, una lógica baja o, lo que es peor, un valor entre la lógica alta y la lógica baja.
- El tiempo necesario para salir del estado metaestable se conoce como tiempo de resolución T T_r..
- Si nuestro diseño incluye chanclas que podrían entrar en el estado de metástasis, debemos darle a la chancla tiempo suficiente para salir de la metástasis.
- La técnica de “doble flop” se usa ampliamente para transferir señales de control de un solo bit entre dos dominios de reloj.
Para ver una lista completa de mis artículos, visite esta página.