¿Cómo puedo ver, depurar o analizar los datos que se ingresan en mi FPGA?

1

Estoy trabajando con un Xilinx Spartan6 en Tablero Nexys3 de Digilent .

Tambiénhecompradosu PmodMIC para que pueda intentar obtener algo de audio datos en mi tablero para realizar algún procesamiento de señal.

ElPmodMICtieneunaconexiónSPIsimple,ysesuponequedebeemitirenserie12muestraspor"ejecución" que se transfieren a un vector de 12 bits dentro del módulo PmodMIC VHDL.

He creado un código de nivel superior y un código de soporte que creo que podría estar funcionando , pero me siento completamente perdido cuando me pregunto: "¿Cómo verifico que estoy obteniendo los datos correctos? ¿O algún buen dato para el caso? "

Decidí asignar 8 de los 12 bits en el vector de salida a los LED en la placa para poder ver algo. Cuando presiono el botón asignado para iniciar el proceso de conversión, incluso puedo ver qué LED se encienden, cambian y se mueven de vez en cuando, pero sé que esto es esencialmente inútil para cualquier cosa significativa.

En este punto, estoy totalmente despistado. Si solo hubiera una manera de enviar en serie los datos a través de USB a la PC, o congelar el estado de la FPGA y examinar el contenido de su memoria después de almacenar algunas muestras allí. Si existen métodos como este, ciertamente no conozco ninguno de ellos.

Logic Analyzer

Compré el Analog Discovery (otro producto de Digilent) y traté de ver los datos en serie que vienen de PmodMIC al FPGA. Simplemente enruté los datos en serie a otra salida no utilizada en el banco de JA y conecté el analizador, pero mis resultados han sido bastante pobres.

Estoy seguro de que gran parte de esto tiene que ver con mi inexperiencia con el dispositivo (ni siquiera puedo averiguar cómo controlar su frecuencia de muestreo).

Sin embargo, en cualquier caso, mi pregunta final es un poco más amplia, que es:

¿Qué herramientas, métodos o procesos existen para ver, depurar o analizar datos en un FPGA?

    
pregunta krb686

3 respuestas

5

Xilinx tiene una herramienta de depuración en el sistema llamada " ChipScope ". Utiliza recursos FPGA de repuesto (principalmente bloqueos de RAM y contadores) para crear un analizador lógico que puede conectarse a cualquier nodo en su diseño, capturar formas de onda y mostrarlas en su PC host, usando la misma interfaz JTAG a través de la cual usted programa el chip.

    
respondido por el Dave Tweed
3

Tengo un tablero de Atlys y tengo un par de soluciones diferentes que utilizo para validar los datos, dependiendo de la aplicación y el datarate:

Utilizo un UART para transferencia de baja velocidad y lo conecto a mi PC con un cable USB. Creo que el nexys tiene un convertidor de chip FTDI incorporado, así que solo necesitas usar el cable USB. Hay una cantidad de uart opencores , o es relativamente sencillo escribir los suyos. Es una interfaz fácil, en cuanto a protocolo. Sospecho que esto es lo que utiliza la interfaz de depuración USB de Digilent, sin embargo, solo tiene soporte para Windows. Ya que uso principalmente Linux, uso mi propia implementación.

Para las interfaces de alta velocidad, uso una versión modificada de opencores UDP stack a través de Ethernet. UDP no es demasiado difícil de codificar / entender y muchos de los datos del encabezado pueden ser codificados. Hice mi propio encabezado de paquete personalizado y utilicé el direccionamiento MAC para enrutar los paquetes de manera correcta.

En el lado de la PC, normalmente escribo una utilidad de Python para analizar los paquetes UART / UDP y mostrar los datos de manera significativa. También es posible usar algo como hiperterminal en Windows. También uso wireshark para verificar que mis paquetes UDP cumplan con la especificación de Ethernet.

Chipscope es útil para ver lo que ocurre dentro del FPGA (para propósitos de depuración) pero no puede capturar datos por largos períodos de tiempo. Por lo que recuerdo, usa JTAG por lo que tampoco es tan rápido. Para las aplicaciones en las que solo está interesado en una salida de datos específica, es más fácil simplemente alimentar continuamente esa secuencia de datos a una PC a través de alguna interfaz.

    
respondido por el stanri
1

La mayoría de las placas FPGA de Digilent, incluida la Nexys3, implementan una interfaz paralela simple a la que se puede acceder a través de USB. La interfaz está documentada en:

enlace

Vea también: Implementando el EPP de Digilent

Puede interactuar con esta interfaz utilizando las bibliotecas de códigos proporcionadas por Digilent o usando las secciones de E / S de Digilent Adept.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas