FPGA simula bien y pasa la verificación de tiempo pero falla en PCB

Así que ha terminado su diseño de FPGA. Lo ha simulado con un extenso banco de pruebas creado por un ingeniero diferente y funciona, incluso a gran velocidad después de haber sido compilado, colocado y enrutado. No hay errores ni advertencias de las herramientas fpga. Vas al laboratorio y piensas, OH CHICO, voy a programar el FPGA y ver cómo funciona, pero no funciona. No pasan datos, no hay movimiento de señal. Nada. Compruebas la potencia en la placa y hay más que suficiente, incluso para el ciclo de arranque de la FPGA. Verifica el enrutamiento en la PCB en busca de señales críticas y se ven bien. ¿¿¿Qué vas a hacer después???

Probablemente sea un error simple en la forma en que está ingresando su archivo de bits en el FPGA. ¿Qué FPGA específicamente y qué herramientas está utilizando para cargarlo/depurarlo?
¿Pruebas unitarias (deberían hacerse incluso antes)? ¿Intenta reducir la funcionalidad hasta que algo comience a funcionar? O incluso intente programar un diseño de prueba muy simple, solo para verificar las señales y el chip en sí.
¿Puedes cargar y ejecutar un Bitfile diferente?
¿Revisaste tu fuente de reloj? ¿Está funcionando en el tablero? Tal vez haga un diseño realmente simple que solo emita la mitad del reloj en un pin. A ver si eso funciona. Consulte su manual para ver qué pines puede verificar para obtener comentarios sobre la carga. Altera ha hecho conf, y un pin de error, para informarle lo que sucedió, no estoy seguro acerca de Xilinx.
Uno bueno que he visto (tos hecho) es un reinicio global impulsado desde el nivel lógico incorrecto (invertido). Cargas de diseño, pero no hace nada... muy frustrante. Fácil de arreglar, pero primero hay que encontrarlo .
Una vez tuve un problema con las bolas de soldadura en frío con un FPGA en un paquete BGA, el perfil de soldadura estaba mal durante el montaje. ¿Qué dispositivo? ¿Proporciona retroalimentación para demostrar que está programado? Finalmente colgué un cable de calibre 40 de un telar de cinta adhesiva con otro FPGA colgando y probé que se podía programar. Pinout, (especialmente pines de alimentación). ¿Es la primera vez que su empresa utiliza este dispositivo? (Y presionando el BGA hacia abajo con un pulgar carnoso hizo que funcionara).

Respuestas (1)

Como respuesta a tu pregunta "¿Qué haces a continuación?", aquí hay algunas cosas aleatorias que debes considerar y medir:

¿Se programa bien? ¿Usas algún cable JTAG para conectarlo? ¿Se identifica correctamente con el cable JTAG y el software de programación? ¿O usa algo de EEPROM/FLASH para cargar la configuración al inicio? ¿Programa el archivo de bits en EEPROM/FLASH utilizando las herramientas del proveedor de FPGA o con otras herramientas? ¿Se programa bien la EEPROM/FLASH? ¿La señal FPGA DONE después del arranque/después de cargar la configuración (Xilinx)? ¿Utiliza una cantidad razonable de corriente? ¿Cambia la corriente cuando se carga la configuración?

Con todos los circuitos digitales, todo se reduce a tres elementos básicos: alimentación, reloj y reinicio. Intente confirmarlos, uno por uno. Intente generar y cargar una configuración que haga cosas muy básicas, como subir una salida y otra bajar. Si tiene algunos botones/LED integrados, intente enrutar alguna señal de botón directamente a una señal LED. Cualquier cosa que no requiera un reloj. Luego agregue un contador binario desde la fuente del reloj a algunas salidas. Mida que obtiene algunas salidas alternando arriba/abajo con el reloj.