2 Software-DesignAbbildung 2 Verbindung zwischen EZUSBFX2andFPGA Abbildung 2 EZUSBF Die Software für die Verbindungsübertragung zwischen X2 und FPGA umfasst das FPGA-Steuerprogramm, das Firmware-Programm, den Treiber und das PC-Anwendungsprogramm. 2.1 FPGA-Programmierung Das prinzipielle Blockdiagramm des FPGA-Subsystems ist in Abbildung 1 dargestellt. Das FPGA ist hauptsächlich für den Empfang von seriellen Daten und das Senden von Daten an das EZ-USBFX2-Modul zuständig. Das FPGA-Subsystem empfängt und zwischenspeichert die vom Detektor gesendeten seriellen Mehrkanaldaten und wartet dann, bis die Daten bis zu einem gewissen Grad zwischengespeichert sind, um sie dann an den EZ-USBFX2-Chip zu senden, und dann überträgt der USB-Chip die Daten automatisch über USB an den Host-Computer.
FPGA enthält intern zwei Kanäle: Datenkanal und Befehlskanal. Durch den Datenkanal fließen die Projektionsdaten (Daten, die von jedem Kanal jedes Mal, wenn der Detektor beleuchtet wird, erhalten werden). Wie in Abbildung 1 dargestellt, werden die Projektionsdaten jedes Kanals zunächst im entsprechenden Cache-FIFO gespeichert und warten, bis die Daten im FIFO nach Erreichen einer bestimmten Datenmenge (hier 512) vom FPGA an den Endpunktpuffer von EZ-USB FX2 übertragen werden.
Der Befehlskanal wird hauptsächlich für die Übertragung von Konfigurationsbefehlen verwendet. Wenn der Host-Computer einen Konfigurationsbefehl ausgibt, überträgt der USB den Befehl über das SlaveFIFO an das FPGA. Dann speichert das FPGA die empfangenen Befehlsdaten im Konfigurations-RAM. Schließlich fragt das FPGA-interne Das Befehlskonfigurationsmodul die Änderungen des Wertes im Konfigurations-RAM ab, um festzustellen, ob ein Befehl an den Detektor gesendet werden soll.
Das FPGA-Programm enthält insgesamt 7 Module, wie in Abbildung 3 dargestellt. Der Synchronisations-FIFO und das Konfigurations-RAM verwenden das IP von ALTERA; das serielle Empfangsmodul und das serielle Sendemodul erledigen hauptsächlich das Senden und Empfangen serieller Daten; das Konfigurations-CPU-Modul überwacht den Status des Konfigurations-RAM. Wenn sich der Wert des Konfigurations-RAMs ändert, überwacht das Konfigurations-CPU-Modul den Status des Konfigurations-RAMs. Das serielle Sendemodul sendet den geänderten Wert an den Detektor; das Konfigurations-RAM speichert den Konfigurationsbefehl-Synchronisations-FIFO und speichert den Projektionsdatenbus. Das Arbitrierungsmodul steuert den FIFO-Datenbus und den Konfigurations-RAM-Bus, was die Aktualität der Befehlskonfiguration und die Integrität der Datenübertragung gewährleistet; SlaveFIFO Das Schnittstellenmodul realisiert die Kommunikation zwischen FPGA und EZ-USBFX2.

2.2 Firmware-Programm 2.2.1 Die Rolle der Firmware Firmware bezieht sich auf den ausführbaren Code, der im erweiterten 8051EEPROM im EZ-USBFX2 (CY7C68013A) läuft. Die Firmware kann in Assembler oder C51 entwickelt und dann in eine Hexadezimaldatei (.HEX-Datei) kompiliert und in den Codebereich von FX2 geschrieben werden, wodurch die geräteseitige Programmierung und die Ausführung spezifischer Funktionen realisiert werden. Das Firmware-Programm führt hauptsächlich die folgenden Arbeiten durch: ① Initialisierungsarbeiten, einschließlich der Einstellung der Anfangswerte einiger spezieller Funktionsregister, um die erforderlichen Geräteeigenschaften oder Funktionen zu erreichen;
② Unterstützung der Hardware bei der Durchführung des Re-Enumeration-Prozesses des Geräts, einschließlich der Simulation der Trennung und Wiederverbindung des Geräts, Analyse und Beurteilung des empfangenen Einstellungspakets, um eine angemessene Antwort auf die Geräteanforderung des Hosts zu geben und die Konfigurationsaufgabe des Hosts für das Gerät abzuschließen; ③ Behandlung von Interrupts; ④ Empfang und Senden von Daten; ⑤ Steuerung von Peripherieschaltungen. 2.2.2 Kommunikation zwischen USB-Gerät und PC Das USB-Gerät kommuniziert mit dem PC-seitigen Anwendungsprogramm unter der Kontrolle des Mikrocontrollers, um das Senden und Empfangen von USB-Daten zu realisieren. Der grundlegende Prozess ist folgender: Wenn das USB-Peripheriegerät an den Host angeschlossen wird, listet der Host zunächst das Gerät auf, lädt dann das Firmware-Programm über den Standard-Endpunkt EP0 in sein On-Chip-RAM herunter, listet dann das Gerät erneut auf und konfiguriert das Gerät mit der in sein internes RAM heruntergeladenen Firmware, d.h. dem vom Benutzer entworfenen Modus, entsprechend der benutzerdefinierten Firmware-Programm-VID und PID, um den Funktionstreiber des Geräts zu finden, wodurch der Gerätekonfigurationsprozess abgeschlossen wird. Während der Datenübertragung werden die gesendeten Daten in Form eines Pakets (Pack et) in den Puffer (FIFOBuffer) geschrieben. Wenn der Puffer gefüllt ist oder die Daten gesendet wurden, setzt USB das Register full flag. Wenn der Host bereit ist, Daten zu akzeptieren, sendet er ein Lese-Token-Paket an den funktionalen Geräteendpunkt. Der Endpunkt antwortet auf die Anfrage, indem er den Endpunkttyp beurteilt und feststellt, ob er bereit ist, Daten zu senden. Nach Abschluss der Datenübertragung wird der gesamte Kommunikationsprozess durch ein Handshake-Paket abgeschlossen. 2.2.3 Entwicklung von Firmware-Programmen im Slave-FIFO-Modus FX2 bietet zwei Schnittstellenmodi: Slave-FIFO und allgemein programmierbare Schnittstelle. Das Datenübertragungssystem nimmt den Slave-FIFO-Modus an, und seine Firmware umfasst hauptsächlich 7 Dateien: dscr. a51,lsecyJmpTb. a51, lsecy. h, lsecysdly. h, lsecyregs. h, main. c und function. c. Die Firmware wird auf dem PC gespeichert. Wenn das Gerät an den Host angeschlossen ist, wird die Firmware vom Host durch Softkonfiguration zur Ausführung in das On-Chip-RAM der EZ-USBFX2 geladen.