6 votos

Prueba de un chip FTDI

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

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

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

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

0 votos

Yo también estoy haciendo casi exactamente lo mismo. Podrías compartir cómo has procedido exactamente?

11voto

lillq Puntos 4161

Nota: La pregunta puede ser interpretada como un problema de diseño, lo estoy abordando como tal.

Si quieres probar el chip FTDI yo dejaría fuera la FPGA. Si usas eso estarás probando dos cosas a la vez, y no sabrás donde está el error en caso de que no deba funcionar.

El loopback es una buena idea, pero yo iría directamente de la salida del 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ía un byte, compruébalo en el osciloscopio/analizador lógico, y mira si recibes el byte de vuelta.

Una vez que el FTDI esté bien, puedes pasar al siguiente paso, la implementación del SPI en la FPGA.

editar
Para una prueba de producción también podrías usar un loopback. Tu FPGA tiene el SPI implementado, y su registro de desplazamiento actúa como un retraso. Haz que el PC envíe un byte específico, que se desplazará en el registro de desplazamiento SPI. Entonces deja que el PC envíe otro byte, y recuperará el anterior (asumiendo que tienes 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 extra en la FPGA.

Esto te permite obtener una comprobación de bueno/malo para el bucle completo, pero no tienes ninguna información de dónde está el error en caso de que la prueba falle. Por lo tanto, yo dejaría que la FPGA comparara el primer byte recibido con el valor esperado, y emitiera un bit bueno/malo que luego puede ser leído por la plantilla de prueba. Entonces, en caso de error, al menos sabes si el camino desde el PC a la FPGA está bien o no.

0 votos

Esto es para una prueba de producción, por lo que es mejor una prueba automatizada (sin alcance). Además, estoy interesado en el enlace entre la FPGA y el chip FTDI. (Es decir, comprobar si alguno de los pines está defectuoso).

0 votos

@RandomBlue - He editado el enfoque de mi respuesta. Perdón por el malentendido.

0 votos

Hay un proyecto FTCJTAG dll en el sitio de FTDI. Una vez que lo tengo construido y utilizado con USB, FTDI, C#, C++, objetivo JTAG. Si SPI no es suficiente y la FPGA soporta JTAG entonces prueba este proyecto.

1voto

YonahW Puntos 145

Ok para la FPGA necesitarás escribir/crear/obtener un módulo SPI. Con un módulo SPI adecuado podrías ser capaz de hacer un bucle entre la salida y la entrada, pero es probable que necesites algún tipo de buffer para almacenar los datos. La razón es que cuando se recibe el primer bit del byte de entrada ya se ha intentado transmitir el primer byte de la respuesta.

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

En el lado del PC algún tipo de programa de terminal para interactuar con el puerto serie virtual que el FTDI instalará. Tera term es bueno para eso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X