2 Diseño del softwareFig. 2 Conexión entre EZUSBFX2andFPGA Figura 2 EZUSBF El software del sistema de transmisión de la conexión entre X2 y la FPGA incluye el programa de control de la FPGA, el programa de firmware, el driver y el programa de aplicación del PC. 2.1 Programación de la FPGA En la Figura 1 se muestra el diagrama de bloques principal del subsistema FPGA. La FPGA se encarga principalmente de recibir datos serie y enviarlos al módulo EZ-USBFX2. El subsistema FPGA recibe y almacena en caché los datos serie multicanal enviados por el detector, y luego espera hasta que los datos se almacenan en caché hasta cierto punto, luego los transmite al chip EZ-USBFX2, y luego el chip USB transmitirá automáticamente los datos al ordenador host a través de USB.
La FPGA contiene internamente dos canales: canal de datos y canal de comandos. Lo que fluye por el canal de datos son los datos de proyección (datos obtenidos por cada canal cada vez que se ilumina el detector). Como se muestra en la Figura 1, los datos de proyección de cada canal se almacenan primero en el FIFO caché correspondiente, y espera hasta que los datos en el FIFO Después de que los datos alcancen una cierta cantidad (aquí se establece en 512), la FPGA transferirá una cierta cantidad de datos (aquí 512) de cada FIFO al búfer de punto final de EZ-USB FX2.
El canal de comandos se utiliza principalmente para la transmisión de comandos de configuración. Cuando el ordenador anfitrión emite un comando de configuración, el USB transmite el comando a la FPGA a través de SlaveFIFO. A continuación, la FPGA almacena los datos del comando recibido en la RAM de configuración. Finalmente, el FPGA interno El módulo de configuración de comandos pasa Consulta los cambios en el valor en la RAM de configuración para determinar si un comando debe ser enviado al detector.
El programa FPGA contiene un total de 7 módulos, como se muestra en la Figura 3. Entre ellos, la FIFO de sincronización y la RAM de configuración utilizan la IP de ALTERA; el módulo de recepción serie y el módulo de envío serie completan principalmente el envío y la recepción de datos serie; el módulo CPU de configuración monitoriza el estado de la RAM de configuración. Si el valor de la RAM de configuración cambia, el módulo CPU de configuración monitoriza el estado de la RAM de configuración. El módulo de envío serie envía el valor cambiado al detector; la RAM de configuración almacena el FIFO de sincronización de comandos de configuración y almacena el bus de datos de proyección. El módulo de arbitraje controla el bus de datos FIFO y el bus de la RAM de configuración, lo que garantiza la puntualidad de la configuración de comandos y la integridad de la transmisión de datos; SlaveFIFO El módulo de interfaz realiza la comunicación entre la FPGA y el EZ-USBFX2.
2.2 Programa Firmware 2.2.1 El papel del Firmware Firmware se refiere al código ejecutable que se ejecuta en la 8051EEPROM mejorada del EZ-USBFX2 (CY7C68013A). El firmware puede desarrollarse utilizando lenguaje ensamblador o C51, y luego compilarse en un archivo hexadecimal (archivo .HEX) y escribirse en el área de código del FX2, realizando así la programación del dispositivo y completando funciones específicas. El programa de firmware completa principalmente el siguiente trabajo: ① Trabajo de inicialización, incluyendo el establecimiento de los valores iniciales de algunos registros de funciones especiales para lograr los atributos o funciones requeridos del dispositivo;
② Asistir al hardware para completar el proceso de re-enumeración del dispositivo, incluyendo la simulación de la desconexión y reconexión del dispositivo, analizando y juzgando el paquete de configuración recibido, con el fin de dar una respuesta adecuada a la solicitud del dispositivo del host y completar la tarea de configuración del dispositivo del host; ③Manejo de interrupciones; ④Recepción y envío de datos; ⑤Control de circuitos periféricos. 2.2.2 Comunicación entre el dispositivo USB y el PC El dispositivo USB se comunica con el programa de aplicación del PC bajo el control del microcontrolador para realizar el envío y la recepción de datos USB. El proceso básico es: cuando el periférico USB se conecta al host, el host Primero enumera el dispositivo, luego descarga el programa de firmware a su RAM en chip a través del punto final por defecto EP0, luego vuelve a enumerar el dispositivo, y configura el dispositivo con el firmware descargado a su RAM interna, es decir, el modo diseñado por el usuario, de acuerdo con el programa de firmware definido por el usuario VID y PID para encontrar el controlador de función del dispositivo, completando así el proceso de configuración del dispositivo. Durante el proceso de transmisión de datos, los datos enviados se escriben en el buffer (FIFOBuffer) en forma de paquete (Pack et). Cuando se llena el búfer o se envían los datos, USB activa el indicador de registro lleno. Si el host está preparado para aceptar datos, envía un paquete de lectura al punto final del dispositivo funcional. El punto final responde a la solicitud juzgando el tipo de punto final y si está listo para enviar datos. Una vez finalizada la transmisión de datos, se completa todo el proceso de comunicación mediante un paquete handshake. 2.2.3 Desarrollo del programa de firmware del modo FIFO esclavo El FX2 proporciona dos modos de interfaz: FIFO esclavo e interfaz programable general. El sistema de transmisión de datos adopta el modo FIFO esclavo, y su firmware incluye principalmente 7 archivos: dscr. a51,lsecyJmpTb. a51, lsecy. h, lsecysdly. h, lsecyregs. h, main. c y function. c. El firmware se almacena en el PC. Cuando el dispositivo se conecta al host, el firmware se carga desde el host a la memoria RAM en chip del EZ-USBFX2 mediante configuración suave para su ejecución.