Conexión de PC y sistema integrado a través de USB

2

Tengo un sistema integrado con USB3300 PHY y FPGA, que tengo que programar como un enlace. Quiero que mi sistema pueda comunicarse con mi PC, pero no estoy seguro de haber recopilado toda la información. Así es como lo veo. Programo FPGA para manejar la interfaz ULPI para poder comunicarme con PHY. Luego escribo un programa de computadora simple para enviar datos a través de USB que mi sistema podrá entender. No estoy seguro de si la PC envía alguna información adicional al comienzo de la transmisión que debo ignorar.

    
pregunta Al Bundy

1 respuesta

4

Parece que tienes el lado incrustado recto. Su FPGA deberá comunicarse con el transceptor USB como se describe en Notas de la aplicación (enlace del PDF) . Sin embargo, esto puede ser bastante complicado, ya que el USB3300 es solo la capa física, creo que todavía necesitará implementar un controlador USB en el FPGA para manejar las transferencias de datos y el intercambio de datos como un cliente USB. Además, asegúrese de marcar todas las casillas en Lista de verificación de diseño de USB (enlace a PDF) para su dispositivo.

En el lado del host, tu PC, necesitarás escribir un controlador. Se requerirá que el controlador maneje el protocolo de enlace con su dispositivo USB y configure los puntos finales para el dispositivo según la clase de dispositivo usted decide implementar en su FPGA. Luego, el controlador pondrá el dispositivo USB a disposición de las aplicaciones del usuario y manejará las transferencias de datos. Exactamente cómo se logra esto dependerá de su sistema operativo, pero hay muchas bibliotecas que pueden ayudarlo. Solo Google "biblioteca de controladores USB" para su sistema operativo.

Una vez que se complete el controlador, puede crear una aplicación de espacio de usuario para interactuar con el controlador, que se comunicará directamente con el FPGA, pero este debería ser el paso más fácil en el proceso.

Una nota sobre su última pregunta: sí, hay una comunicación al comienzo de las transmisiones USB que su aplicación de espacio de usuario puede ignorar, pero su controlador no no las ignora, y tampoco su FPGA. El controlador USB y el controlador que implementa utilizan estos paquetes y encabezados para establecer la comunicación y dirigir el tráfico USB. Si recién está comenzando con el desarrollo de USB, sugeriría leer algo como OSDev USB Wiki para comenzar. Es largo, pero el USB es un protocolo complicado y robusto que está implementando desde cero, por lo que necesitará la información allí.

Por otra parte, su fabricante de FPGA puede tener un código de controlador USB pre-validado de forma gratuita o disponible para su compra, por lo que puede omitir la escritura propia y usar una API en su lugar. Si está disponible, sugiero usarlo para ahorrarte mucho tiempo. Además, si tienen eso disponible, también pueden tener un controlador disponible para ello. Por ejemplo, los chips Cypress PSoC (que son microcontroladores empaquetados con PLD configurables) proporcionan ambos.

Otra alternativa para implementar su propio controlador en el FPGA sería usar un controlador externo como el MAX3420E o dispositivo similar. Es posible que aún necesite implementar un controlador SPI para ese ejemplo si su FPGA no tiene soporte interno, pero sería mucho menos desalentador que un controlador USB, y hay opciones para otros buses como I2C o UART que su FPGA ya puede tener. apoyo.

    
respondido por el skrrgwasme

Lea otras preguntas en las etiquetas