Transferencia de datos de FPGA a PC (nuevo para FPGAs)

1

Principiante de FPGA aquí.

Tengo una placa FPGA Basys2 (código i en verilog) y deseo comunicarla con mi PC. Actualmente recibe datos de un dispositivo esclavo y los almacena en un registro de 64 bits. Sin embargo, quiero enviar estos datos a mi computadora para procesarlos y procesarlos en matlab.

He hecho algunas investigaciones. Parece que puedo usar la API de EPP de Digilent o simplemente usar la comunicación UART. [: Parece que esto ya no tiene opción, ya que no tengo acceso a un traductor UART]. Sin embargo, no encuentro suficientes ejemplos explicativos sobre ninguno de los métodos. Los ejemplos existentes parecen tener un montón de código "que simplemente funciona". Pero la falta de explicación me impide adaptarlo a mi

Por ejemplo, hay una función DeppGetReg (hIF hif, BYTE bAddr, BYTE * pbData, BOOL fOverlap) en la API, pero no sé qué ingresar (específicamente la dirección) para proporcionarle para leer los valores de FPGA. El único documento que pude encontrar estaba en este enlace . No tengo ni idea de UART.

Aquí están los puertos de E / S disponibles de FPGA. El único puerto USB se usa para programar el FPGA, no estoy seguro si también puedo tener comunicación a través de ese puerto.

Le agradecería que me diera alguna idea sobre dónde comenzar a considerar mi placa FPGA. Gracias de antemano.

    
pregunta vasf

1 respuesta

2

El puerto USB se puede usar para comunicarse con un diseño que se ejecuta en el FPGA, así como para programarlo. El software Digilent Adept se puede utilizar para interactuar con un diseño que implementa este protocolo; También es posible usar las bibliotecas de Digilent para escribir su propio software que utiliza este protocolo. (También he escrito un módulo Perl, Device::Digilent , si prefieres hacerlo a C.)

La información sobre el protocolo está disponible en:

enlace

En resumen, sin embargo: hay un bus paralelo entre el chip de interfaz USB y FPGA que consiste en:

  • Un bus bidireccional de 8 bits, utilizado tanto para direcciones como para datos.
  • Las luces estroboscópicas de direcciones y datos, y una marca de escritura, todas señalizadas desde el host
  • Una señal de "espera" utilizada por el FPGA para indicar cuándo se ha mantenido una lectura / escritura

El protocolo utilizado trata el FPGA como si tuviera "registros" de 256 bytes, cada uno de los cuales puede ser leído o escrito por el host en cualquier momento. El orden de los eventos para una lectura es:

  • El host afirma la luz estroboscópica de la dirección con la marca de escritura activada y dirige el bus de datos con el índice del registro que escribirá.
  • El host afirma la luz estroboscópica de datos con la marca de escritura desactivada y el FPGA controla el bus de datos con el valor del registro.

Una escritura funciona de manera similar, excepto que la segunda transferencia tiene la marca de escritura activada, y el host impulsa el bus de datos con el valor a escribir.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas