¿Debo usar una salida FPGA para un reloj MCU?

Estamos diseñando un tablero que fue diseñado hace mucho tiempo, el objetivo principal de la actualización es la obsolescencia parcial. La placa tiene varios PIC uC, así como un FPGA. Cada uno de los PIC necesita un reloj y el sistema tiene un oscilador CTS de 20 MHz para este fin. ¿Hay alguna razón por la que no deberíamos usar el FPGA para generar estas señales de reloj? El FPGA está reemplazando otra lógica digital en la placa, pero no estoy seguro de si hay problemas con los relojes en particular.

Además del hecho de que los uC tendrían que aparecer después de que el FPGA se haya terminado por completo al salir del reinicio, ¿hay otras razones para no reducir el número de piezas de esta manera? (Y no, no puedo usar el FPGA para reemplazar los PIC).

¿Está planeando actualizar su código FPGA a través de uno de los PIC?
No, los PIC no están involucrados con la configuración de FPGA.

Respuestas (1)

Puede controlar los relojes desde la FPGA si desea reducir el número de piezas.

En general, hay dos inconvenientes que se me ocurren:

  1. Jitter del reloj : los pines de E/S del FPGA agregarán jitter al reloj; esto es básicamente donde los bordes del reloj no están exactamente en el lugar correcto y, como resultado, la frecuencia varía en una pequeña cantidad de ciclo a ciclo (el promedio la frecuencia no cambia). Sin embargo, a menos que esté realizando una operación ADC/DAC/sincronización súper crítica que requiera una precisión de menos de un picosegundo, dudo que la fluctuación sea una preocupación. En un reloj MCU de 20 MHz, no veo que esto cause un problema.

  2. Requisitos de pines de E/S : termina requiriendo más pines de E/S de su FPGA para usarlos para la distribución del reloj. Si tiene suficientes pines de repuesto, está bien, pero asegúrese de probar que su FPGA puede alimentar una señal de reloj de todos los pines que desea usar. Algunas FPGA tienen requisitos estrictos sobre qué pines se pueden usar para la salida de la señal del reloj debido a las restricciones de enrutamiento del reloj. Además, si coloca sus salidas de reloj en lados opuestos de la FPGA, comenzará a aumentar el uso de la red de reloj global, ya que el reloj tiene que llegar a ambos lados del chip. La forma más fácil de averiguar si esto es un problema es compilar y probar el diseño antes de enviar la placa para su fabricación.

Aparte de eso, hay ventajas al hacerlo:

  1. Recuento de piezas : necesita menos amortiguadores de distribución de reloj u osciladores en su placa. A veces, puede conectar en cadena los relojes en MCU si pueden volver a alimentar el reloj, pero si no, necesitaría tener fuentes de reloj separadas para cada uno, lo que aumentaría el recuento de partes. El uso de FPGA como distribución elimina la necesidad de partes discretas para hacer esto.

  2. Control de frecuencia : si desea cambiar la frecuencia del reloj de la MCU, puede realizar los ajustes dentro de la FPGA (p. ej., PLL para multiplicar/dividir la frecuencia). Eso podría ser útil en un tablero de uso general en el que quizás desee probar diferentes diseños. También permitiría que diferentes MCU funcionen a diferentes frecuencias desde un solo oscilador.

Posiblemente haya más también, pero eso es lo que se me ocurre.

Si usa el FPGA para esto, entonces, como mencioné anteriormente, asegúrese de revisar el diseño con mucho cuidado. Asegúrese de que los estándares de E/S para la FPGA cumplan con los requisitos de las MCU (y que tenga el voltaje VCCIO correcto para los bancos que controlan las señales de reloj). También asegúrese de probar el firmware de FPGA antes de comprometerse con la fabricación. Como mínimo, haga una compilación de prueba para asegurarse de que el diseño pueda encajar en el FPGA (tanto en recursos de reloj como en restricciones de pines) y cumpla con los requisitos de tiempo de los diseños.