Distinguir dominios de reloj en diseños

Me resulta confuso definir varios dominios de reloj en el diseño. Busqué en Internet pero no obtuve una claridad completa sobre esto.

En cierto diseño basado en FPGA (serie Actel ProASIC), estoy generando tres relojes: 48 MHz, 24 MHz y 12 MHz desde una entrada de cristal de 8 MHz usando un PLL. Además, usando uno de estos 3 relojes (48/24/12) tengo que generar señales de reloj de 8 MHz, 4 MHz, 2 MHz y 1 MHz para usar en algunos de los módulos lógicos.

Mi suposición es que dado que 48 MHz, 24 MHz y 12 MHz se generan a partir del mismo PLL y tienen una relación de fase constante, puedo considerarlos como parte de un solo dominio de reloj. Y puedo usar una señal de reinicio común sincronizada con 48 MHz para reiniciar los flip-flops sincronizados a 48 MHz, 24 MHz o 12 MHz. ¿Es correcta la suposición anterior?

Para la generación de señales de reloj de 8 MHz, 4 MHz, 2 MHz y 1 MHz, estoy usando contadores de ejecución libre sincronizados a 48 MHz (podría haber usado 24 MHz también para este propósito, pero 12 MHz requería una división fraccionaria para generar 8 MHz). No estoy seguro de si los relojes generados de 8, 4, 2 y 1MHz pueden considerarse en el mismo dominio de reloj que 48MHz. ¿Cuál debería ser la regla general para diferenciar varios dominios de reloj?

¿Puedo usar la señal de reinicio mencionada anteriormente para reiniciar los flip-flops sincronizados con 8, 4, 2 y 1 MHz? ¿O debería generar señales de reinicio separadas para este propósito?

Respuestas (1)

Primera parte de la respuesta: los relojes que provienen del mismo oscilador y se producen en un PLL interno tienen una relación de fase conocida. Las herramientas lo saben y verifican que las transferencias de uno de estos relojes a otro no terminen en una violación de tiempo. Asegúrese de tener todas las restricciones apropiadas en el diseño y verifique la salida de los informes de tiempo.

Segunda parte de la respuesta: No lo hagas de esta manera. La mejor manera es usar un solo reloj: 48 MHz en su caso. Todos los demás dominios de reloj pueden ser reemplazados por su reloj de 48 MHz y una señal de activación de reloj. Por ejemplo, el dominio de 12 MHz utiliza una señal de habilitación de reloj que es alta en cada cuarto ciclo de reloj de 48 MHz. Esto ahorra muchos problemas con los cruces de dominios de reloj e incluso ahorra recursos.

Gracias. Para aclararme, debo generar un reloj usando el PLL (48 MHz en mi caso) y generar señales de habilitación de reloj para todos los demás relojes en el diseño, a saber. 24, 12, 8, 4, 2 y 1 MHz. Y puedo usar una señal de reinicio común para reiniciar todos los flip-flops en el diseño. ¿Es esto correcto?
@rvkrish Exactamente.