Cambio de relojes externos para un FPGA

3

Estoy trabajando en un diseño que involucra un FPGA que tiene un reloj externo, se supone que la fuente del reloj es un sintetizador de reloj programable, sin embargo, esto debe ser programado en el encendido por el FPGA para generar la frecuencia de reloj correcta. No tengo una gran experiencia en este dominio, pero estoy seguro de que el FPGA no funcionará correctamente sin un reloj apropiado.

Mi solución a esto es usar un cristal de 125MHz, que está conectado a un multiplexor de reloj programable. Al encenderse, el FPGA recibirá el reloj del oscilador, después de esto programará el sintetizador de reloj y cambiará la fuente de reloj en el multiplexor de reloj. El propósito de esto es tener un sistema sincronizado de fase preciso. Mi gran problema con esto es que no sé si es seguro interrumpir el reloj que se entrega al FPGA y si permanecerá operativo durante esta fase de conmutación. Esperemos que alguien pueda tener una mejor idea de cómo se comportan los FPGA con respecto al reloj.

La FPGA en cuestión es una Xilinx ZC7Z010 Cortex A9. Soy bienvenido a otras ideas, pero el FPGA sin duda necesita ser sincronizado por un oscilador externo.

Muchas gracias por leer esto.

    
pregunta Renegade243

2 respuestas

2

Por los sonidos de la misma, necesitas dividir tu diseño un poco más. Así es como lo haría:

  1. Ejecute la lógica que hace la configuración del reloj en un dominio de reloj diferente por completo. Los FPGA con frecuencia tienen algún oscilador interno de baja calidad que estará disponible después del encendido. Utilice este reloj para controlar la lógica que configura el generador de reloj.

  2. Alimente la lógica que se ejecuta fuera del sintetizador de reloj directamente desde el sintetizador, no ponga un multiplexor en la ruta (puede hacerlo, pero no es necesario).

  3. Al encender, mantenga todo en restablecimiento excepto la lógica en (1). Una vez que se haya programado el generador de reloj, desactive el resto de la lógica.

Siempre y cuando recuerdes agregar un resincronizador de reloj para las señales / banderas que van entre los dos dominios de reloj, estarás bien.

Es frecuente que en los diseños de FPGA tengas una sección de "administración" del diseño que se ejecuta en una fuente de reloj de funcionamiento libre que siempre está disponible. El hardware de administración está ahí para que todo esté listo después de la configuración del FPGA, como la preparación de fuentes de reloj, PLL, etc. Luego, puedes usar ese núcleo para sacar todo lo demás del reinicio una vez que todo esté preparado.

    
respondido por el Tom Carpenter
1

Un FPGA puede tener diferentes bloques controlados por diferentes relojes.

Use un reloj simple no tan preciso que se encenderá tan pronto como el sistema tenga energía para ejecutar los bloques de control básicos. Y use su reloj de referencia de cristal cuidadosamente afinado solo para ejecutar las partes de la lógica FPGA que forman el "sistema sincronizado de fase preciso".

Por supuesto, deberá tener cuidado para sincronizar las señales de control que se conectan entre los dos dominios de reloj, pero existen técnicas bien conocidas para hacerlo.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas