Probando un chip FTDI

Tengo un chip FTDI (manual de referencia aquí ) que traduce USB de una PC a un canal SPI conectado a un FPGA. Me gustaría probar que la ruta de comunicación entre la PC y el FPGA es funcional.

Probablemente, el enfoque más fácil sería tener una prueba de bucle invertido de algún tipo entre la PC y la FPGA, donde la PC dirige la prueba y la FPGA refleja todo lo que recibe.

El chip FTDI viene con una API C para comunicación SPI (ejemplo disponible aquí ). En el lado de FPGA, quiero tener que escribir un Verilog mínimo.

¿Cuál sería la prueba de bucle invertido más fácil que podría tener en el lado de FPGA que sea compatible con esta API SPI?

También estoy haciendo casi exactamente lo mismo esto. ¿Podría compartir cómo procedió exactamente?

Respuestas (2)

Nota: la pregunta puede interpretarse como un problema de diseño, lo estoy abordando como tal.

Si desea probar el chip FTDI, dejaría de lado el FPGA. Si usa eso, estará probando dos cosas a la vez y no sabrá dónde está el error en caso de que no funcione.

El bucle invertido es una buena idea, pero iría directamente de la salida FTDI a su entrada y conectaría un osciloscopio o analizador lógico a eso. SPI es muy fácil de reconocer y decodificar directamente desde la pantalla. Envíe un byte, verifique el alcance/analizador lógico y vea si recupera el byte.

Una vez que el FTDI está bien, puede continuar con el siguiente paso, la implementación de SPI en el FPGA.

editar
Para una prueba de producción, también podría usar un bucle invertido. Su FPGA tiene implementado el SPI y su registro de desplazamiento actúa como un retardo. Haga que la PC envíe un byte específico, que cambiará en el registro de desplazamiento SPI. Luego, deje que la PC envíe otro byte y recuperará el anterior (suponiendo que tenga un registro de desplazamiento de 8 bits. IIRC, los controladores NXP Cortex tienen un SPI de 16 bits). Eso no requiere ninguna lógica de prueba adicional en el FPGA.

Esto le permite obtener una verificación buena/mala para el ciclo completo, pero no tiene ninguna información sobre dónde está el error en caso de que falle la prueba. Por lo tanto, dejaría que la FPGA compare el primer byte recibido con el valor esperado y genere un bit bueno/malo que luego puede leer la plantilla de prueba. Entonces, en caso de error, al menos sabrá si la ruta de la PC a la FPGA está bien o no.

Esto es para una prueba de producción, por lo que la prueba automatizada (sin alcance) es mejor. Además, estoy interesado en el enlace entre el FPGA y el chip FTDI. (Es decir, verifique si alguno de los pines está defectuoso).
@RandomBlue: edité el enfoque de mi respuesta. Perdón por el malentendido.
Hay un proyecto FTCJTAG dll en el sitio de FTDI. Una vez que lo tengo construido y usado con destino USB, FTDI, C#, C++, JTAG. Si SPI no es suficiente y FPGA es compatible con JTAG, pruebe este proyecto.

ok para el FPGA necesitarás escribir/crear/obtener un módulo SPI. Con un módulo SPI adecuado, es posible que pueda hacer un bucle de la salida a la entrada, pero es probable que necesite algún tipo de búfer para almacenar los datos. La razón de esto es que cuando se recibe el primer bit del byte de entrada, ya habrá intentado transmitir el primer byte de la respuesta.

Por lo tanto, necesitará algunos búferes y lógica para interactuar con el módulo SPI para recibir el byte, almacenarlo en el búfer y enviarlo de regreso al módulo SPI para su retransmisión.

En el lado de la PC, algún tipo de programa de terminal para interactuar con el puerto serie virtual que instalará el FTDI. El término Tera es bueno para eso.