ZTEX USB- und USB-FPGA-Module

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Die Firma ZTEX produziert und vertreibt unter Anderem USB- und USB-FPGA-Module mit EZ-USB Mikrocontroller zum Einsatz in Prototypen, Kleinserien oder als Entwickler bzw. Experimentierboard.

Alle Module haben die Eigenschaft, dass sie dem Entwickler einen schnellen Einstieg ermöglichen. Dies wird durch das auf einem Makro-Ansatz basierende Firmware-Kit ermöglicht.

Dieser Artikel soll schwerpunktmäßig einen Überblick über die Vorteile und Eigenschaften des Firmware-Kits liefern. Dies ist auch für Benutzer anderer EZ-USB basierter Hardware (einschließlich FPGA-Boards) interessant, da das Firmware-Kit quelloffen und nicht an eine bestimmte Hardware gebunden ist. (Der EZ-USB Controller anderer Boards wird normalerweise ohne Anpassungen des Firmware-Kits unterstützt, für die Programmierung von FPGA's müssen normalerweise zusätzliche Routinen ergänzt werden.)

Wer nach der Lektüre dieses Artikel Interesse an dem Firmware-Kit hat, kann kann beim EZ-USB Firmware Kit - Tutorial weiterlesen.

Um diese Wiki nicht mit allzu vielen redundanten Informationen zu fluten, werden die ZTEX-Module, für welche das Firmware-Kit schwerpunktmäßig entwickelt wurde, am Ende dieses Artikels zusammengefasst vorgestellt.

Firmware-Kit[Bearbeiten]

Für den EZ-USB FX2 Mikrocontroller steht ein quelloffenes Firmware-Kit mit plattformunabhängiger Treiber API zur Verfügung.

Die allgemeinen (Modul-unabhängigen) Grundfunktionen sind

  • Hochladen der Firmware direkt in den EZ-USB Mikrocontroller
  • EEPROM-Interface zum Lesen / Scheiben von Daten in den / aus dem EEPROM-Speicher
  • Hochladen der Firmware in den EEPROM

Diese Funktionen werden firmwareseitig mittels Endpoint 0-Interfaces und dazugehörigen Routinen realisiert, welche automatisch in die mit dem Firmware-Kit entwickelte Firmware eingebunden werden. PC-seitig können diese Interfaces mit einem Werkzeug angesprochen oder mittels der Treiber-API in eigene Programme eingebunden werden.

Um einen schnellen Einstieg in die Entwicklung zu ermöglichen, wird die Firmware mittels eine Makro-Prozessors zusammengebaut. Dieser ermöglicht es Beispielsweise, die Endpoint-Konfiguration mittels weniger Makros (ein Makro pro Endpoint) festzulegen. Alle notwendigen Device-Deskriptoren sowie die notwendigen Routinen zur Ausgabe der Deskriptoren werden vom Firmware-Kit automatisch erstellt.

Im Normalfall kann sich der Entwickler also auf seine selbst benötigten Funktionen konzentrieren und sich ein exzessives Studium der Datenblätter zumindest teilweise ersparen. Der Quelltext einer typischen Firmware ist somit recht kompakt, wie im EZ-USB Firmware-Kit Tutorial demonstriert wird.

Zum dem Firmware-Kit gehört ferner eine Java Treiber-API. Mit dieser können plattformunabhängige (zurzeit Linux und Windows, weitere Portierungen möglich) PC-Programme zur Kommunikation mit dem Gerät geschrieben werden. Das Interessante daran ist, dass alle benötigten Dateien (Firmware für den Microcontroller, Bitstream für das FPGA, plattformabhängige Bibliotheken, ...) in ein einzelnes .jar-Archiv verfrachtet werden können. Der (End)Benutzter benötigt / sieht somit nur eine einzige Datei, welche von von jedem Verzeichnis aus aufgerufen werden kann und sowohl unter Windows als auch unter Linux funktioniert.

FPGA-Programmierung[Bearbeiten]

Die Programmierung des FPGA's (genauer gesagt die Konfiguration des FPGA's) bei den ZTEX FPGA Boards erfolgt über den EZ-USB Mikrocontroller und erfordert kein zusätzliches JTAG-Kabel.

Zu diesem Zweck steht ein Endpoint 0-Interface zur Verfügung, welches automatisch in die EZ-USB Firmware für diese Module eingebunden wird. Dieses Interface wird mittels eines zum Firmware-Kit gehörenden Werkzeuges oder mit selbst enwickelter Software mit der JAVA-API angesprochen.

Tutorial[Bearbeiten]

Interesse? Hier gehts weiter zum EZ-USB Firmware-Kit Tutorial.

ZTEX FPGA-Booards[Bearbeiten]

Die ZTEX FPGA-Boards sind hauptsächlich zum Einsatz bei Prototypen und Kleinserien gedacht und verfügen deshalb nur über notwendige oder wichtige Funktionen, d.h. keine Taster, Blinklichter, ... . Derartige Dinge können jedoch mittels Erweiterungskarten nachgerüstet werden.

Mittlerweile gibt es zwei Serien von FPGA-Boards. Da sich die erste Serie im Auslaufen befindet (Stand April 2014) werden hier nur Board der Serie 2 vorgestellt. Gegenwärtig noch verfügbare Serie-1-Board werden jedoch auf Liste der ZTEX FPGA-Boards aufgeführt.

USB-FPGA-Modul 2.13[Bearbeiten]

Eigenschaften[Bearbeiten]

  • USB 2.0-Schnittstelle mit Mini-USB-Buchse (Typ B)
  • Cypress CY7C68013A EZ-USB FX2 Mikrocontroller (100 Pin Version)
  • Vier Artix 7 Varianten: XC7A35T, XC7A50T, XC7A75T und XC7A100T
  • Externer-I/O-Verbinder (bestehend aus zwei 2x32-Pin-Buchsenleisten mit 2.54mm-Raster) liefert:
    • 100 mit dem FPGA verbundene General-Purpose-I/O's (GPIO's)
    • JTAG-Signale
    • Reset-Signal
    • Externer Spannungseingang (4,5 V .. 16 V)
    • 3,3V Ausgang
    • I/O-Spannungs-Ausgang oder -Eingang, siehe Externer-I/O-Verbinder
  • 256 MByte DDR3 SDRAM:
    • Bis zu 400 MHz Speichertakt
    • 16 Bit Busbreite
    • Datenrate bis zu 1600 MByte/s
    • Mit dem Xilinx Memory Interface Generator (MIG) nutzbar, Beispiele befinden sim im SDK
  • 128 MBit on-board Flash Speicher
    • Ermöglicht das Laden des Bitstream vom FPGA (16.5 MByte/s)
    • Zugreifbar vom EZ-USB FX2 und vom FPGA
  • 128 Kbit EEPROM-Speicher (kann zum Laden der Firmware genutzt werden)
  • 2 Kbit MAC-EEPROM: enthält eindeutige, nicht löschbare MAC-Adresse und wird zum Speichern von Firmware-Einstellungen genutzt
  • Schnelle FPGA configuration via USB mittels CPLD: bis zu 24MByte/s
  • On-Board Stromversorgung:
    • 3,3 V: 2000 mA
    • 1,8 V: 1000 mA
    • 1,5 V: 2000 mA
    • 1,0 V; 4000 mA
  • XC7A50T-, XC7A75T- und XC7A100T-Varianten: Kühlkörper für High-Performance- / Hochgeschwindigkeits-Anwendungen, siehe Abschnitt Kühlkörper
  • Optional:
    • Batterie zum Speichern eines Schlüssels für Bitstream-Verschlüsselung
    • On-board JTAG-Steckverbinder

Verweise[Bearbeiten]

USB-FPGA-Modul 2.16[Bearbeiten]

Eigenschaften[Bearbeiten]

  • High-Speed (480 MBit/s) USB-Interface via Mini-USB-Buchse (Typ B)
  • Cypress CY7C68013A EZ-USB FX2 Mikrocontroller (128 Pin-Version)
  • Xilinx Artix 7 XC7A200T FPGA (XC7A100T auf Anfrage)
  • Kompatibler externer-I/O-Verbinder (bestehend aus zwei 2x32-Pin-Buchsenleisten mit 2.54mm-Raster) mit:
    • 100 mit dem FPGA verbundene General-Purpose-I/O's (GPIO's)
    • JTAG-Signale
    • Reset-Signal
    • Externer Spannungseingang (4,5 V .. 16 V)
    • 3,3V Ausgang
    • I/O-Spannungs-Ausgang oder -Eingang, siehe Externer-I/O-Verbinder
  • 128 MBit on-board Flash Speicher
    • Ermöglicht das Laden des Bitstream vom FPGA (16.5 MByte/s)
    • Zugreifbar vom EZ-USB FX2 und vom FPGA
  • Schnelle FPGA-Konfiguration via USB mittels CPLD: bis zu 24MByte/s
  • Memory-Mapped I/O zwischen EZ-USB FX2 und FPGA
  • 128 Kbit EEPROM-Speicher (kann zum Laden der Firmware genutzt werden)
  • 2 Kbit MAC-EEPROM: enthält eindeutige, nicht löschbare MAC-Adresse und wird zum Speichern von Firmware-Einstellungen genutzt
  • On-Board Stromversorgung:
    • 3.3 V: 2000 mA
    • 1.8 V: 1000 mA
    • 1.0 V; 14000 mA
  • Kühlkörper für High-Performance- / Hochgeschwindigkeits-Anwendungen, siehe Abschnitt Kühlkörper
  • Optional:
    • Batterie zum Speichern eines Schlüssels für Bitstream-Verschlüsselung
    • On-board JTAG-Steckverbinder

Verweise[Bearbeiten]

Debug-Board[Bearbeiten]

Eigenschaften[Bearbeiten]

  • 30 LED's: an den I/O-Verbinder der FPGA-Boards angeschlossen und in 5er-Gruppen deaktivierbar
  • 4 Schalter: an den I/O-Verbinder der FPGA-Boards angeschlossen
  • JTAG-Steckverbinder
  • Erhältlich in 2 Varianten:
    • Variante 1 ist mit stapelbaren Buchsenleisten ausgerüstet, kann zwischen das FPGA-Board und die Anwendungsschaltung gesteckt werden und dient hauptsächlich zum Debuggen. Die LED's können deaktiviert werden, falls die GPIO's in der Anwendungsschaltung Verwendung finden.
    • Variante 2 verfügt über ein Prototypen-Raster und kann alleine oder in Kombination mit weiteren Prototypen-Platinen verwendet werden.

Verweise[Bearbeiten]

Bilder[Bearbeiten]