Al modificar los relojes, él quiere decirlos de manera que produzcan un nuevo reloj procedente de una puerta lógica.
A menudo, es tentador hacerlo en un FPGA / CPLD: DESACTIVAR relojes para controlar o obtener poca potencia, ejecutar un contador y tomar la salida de un flip-flop como un nuevo reloj CLKIN dividido por n. Un ejemplo podría ser hacer un controlador de comunicaciones (I2C, UART, SPI) produciendo un reloj cerca de la frecuencia de bits.
El problema es que produce un nuevo reloj (llámelo CLKG) que cambia justo después de que lo haga CLKIN original.
Esto se muestra a continuación, con la salida de DFF1 cambiando justo cuando DFF2 está sincronizando su nivel. Esto puede hacer que DFF2 sea metaestable o que tome el nivel incorrecto porque el voltaje de salida de DFF1 no ha hecho la transición suficiente.
simular este circuito : esquema creado usando CircuitLab
Esta podría ser la situación en el circuito del controlador de comunicaciones, pasando los bytes de datos de la lógica CLKIN rápida al registro de cambio CLKG para la transmisión.
Es posible diseñar circuitos de reloj sincronizados perfectamente, circuitos que diseñen estos problemas o los solucionen. Los verás rutinariamente en los ASICs. Pero el circuito es más complicado de diseñar y mantener por otros. El esquema de reloj más simple y confiable es un solo reloj lógico que va desde un PLL o pin de entrada a todos los relojes de flip-flop, el software de síntesis requerirá el menor esfuerzo para producir un circuito confiable. Use más de un dominio de reloj con moderación y porque absolutamente debe hacerlo.