Conexión de FPGA Jtag a la lógica del usuario

Después de algunas lecturas preliminares en jtag, parece ser un medio ingenioso para probar un diseño lógico FPGA de una manera consistente y sostenible.

Usemos altera max 10 como ejemplo. He leído esta Guía del usuario de la prueba de exploración de límites MAX 10 JTAG . Mi lectura es que, para poder acceder a la lógica del usuario, el probador jtag (probablemente una PC host) enviará instrucciones USER0 o USER1.

Las preguntas son:

  • ¿Cómo implementa algo de lógica en el diseño de la lógica del usuario para capturar los comandos y parámetros y devolver algunos resultados? ¿Ejemplos?

  • En el host, ¿cómo envía esos comandos, preferiblemente con una herramienta de código abierto o de bajo costo? Con algo de experiencia, sé que Olimex produce algunos buenos adaptadores jtag, y también altera usb blaster es una herramienta popular. Openocd puede ser un candidato de software popular.

Sería genial si alguien puede arrojar luces sobre cualquier parte de las preguntas.

Respuestas (2)

Las pruebas de escaneo de límites (y escaneo interno), ya sea que usen JTAG o no, están destinadas a la prueba de producción. Esto es completamente diferente a usar JTAG o SWD para la depuración de software. A veces se usarán los mismos pines, pero esto no es un hecho.

Parece que las instrucciones USER0, USER1 de Altera se usan para acceder a cadenas de escaneo internas (conectadas por el usuario). Esto le permite conectar (con un multiplexor de modo de prueba en cada flop) todos los flop de su diseño en (aquí dos) largas cadenas de exploración. Tiene la capacidad de leer y precargar toda la lógica en su diseño.

Las cadenas de escaneo internas como esta se pueden usar para verificar fallas de fabricación en el silicio real. Si usa el escaneo de los pines externos, le brinda una forma de probar si la soldadura está abierta o corta en la PCB.

El escaneo se puede usar para depurar un diseño, pero es el último recurso. Si experimenta un bloqueo que ningún otro método de depuración puede arrojar luz sobre la causa, es posible usar el escaneo para extraer el estado de diseño justo después de su falla (antes es posible, pero eso necesitaría un desencadenante o una falla determinista). Este estado se puede usar para guiar su investigación sobre cuál es el estado de diseño que causa la falla y ayudar a reproducirlo en la simulación.

Herramientas como SignalTap ahora brindan un enfoque más accesible para el usuario para la depuración de FPGA en tiempo real, son mucho más similares a tener un analizador lógico conectado a una selección predefinida de nodos internos; recuerde que el escaneo es un ciclo de 1 a la vez. enfoque de tiempo.

Después de algunas búsquedas y experimentación, se encontraron algunas muestras en línea:

  • Vea el blog hablando con el de0 nano usando la interfaz jtag virtual . El autor muestra en detalle cómo se puede diseñar la lógica en la FPGA como parte de la lógica del usuario.

  • Otro autor del blog urjtag y python a hal ligero , también mencionado en el blog anterior, creó algunos scripts de python guardados en el servidor de documentos de Google. Python se basa en el proyecto svn urjtag . Siga las instrucciones en el blog, compre y cree urjtag en una máquina Linux, luego descargue y ejecute el código python compartido por el autor del blog. Podrá acceder a la lógica FPGA a través de la herramienta jtag USB Blaster. El autor también guardó su código FPGA en github . ¡Así que todo es de código abierto!