La mayoría de los FPGA contienen osciladores de anillo internos para fines de gestión. Cosas como la configuración de la carga en el inicio (¿de dónde cree que el reloj para el SPI maestro y el master selectMAP proviene de los FPGA de Xilinx?). En algunos casos, es posible acceder a este oscilador. Parece que esto es posible al menos en el Virtex 6 y Spartan 6. En estos dispositivos, el oscilador es de aproximadamente 50 MHz +/- 50% (por lo tanto, 25-75 MHz, consulte enlace ). Sin embargo, variará de una parte a otra y con el voltaje y la temperatura, por lo que no puede confiar en una frecuencia muy específica. Esto se puede usar para la lógica de utilidad, como la reconfiguración del transceptor y la lógica de activación de la placa, como las escrituras estáticas I2C en la lógica de gestión de reloj externa y PLL.
Para un Spartan 6, debe crear una instancia de la primitiva STARTUP_SPARTAN6 y conectarse al puerto CFGMCLK. Consulte la guía de usuario de configuración, UG380. Esta es una derivación directa del oscilador del anillo de configuración interna. Tendrá que atar todas las entradas adecuadamente para que todo funcione correctamente. Parece que necesitas unir EOS, GSR, GTS bajo y KEYCLEARB alto. Asegúrese de pasar CFGMCLK a través de un BUFG antes de usarlo para controlar la lógica, y asegúrese de restringirlo a al menos 75 MHz (13 ns) para asegurarse de que las variaciones de frecuencia en el oscilador todavía permitan que su diseño cumpla con los tiempos.
Esto también es posible en el Virtex 6 con la primitiva STARTUP_VIRTEX6. Procedimiento similar, solo diferentes puertos para atar. Puede ser posible con otros FPGAs.