Das wird nicht gehen. Wie bei diesen Boards üblich, ist der USB
Controller lediglich die Platform Cable Emulation. Siehe Seite 3 im
Schaltplan. Du brauchst noch einen extra USB Chip für Datenübertragung.
Sehr einfach ist es mit dem Cypress FX2, da gibts ja bei Digilent das
"USB 2 Module".
Ich hatte so etwas mal mit dem Spartan-3A Starter Kit versucht, das
ebenfalls einen USB -> JTAG Controller verbaut hat, offenbar die selbe
Konstruktion wie beim Spartan-3E-Board. Prinzipiell geht das; zumindest
der 3A hat ein Primitive namens BSCAN_SPARTAN3A, mit welchem dein
eigenes Design sich in die JTAG-Chain einhängen kann; vermutlich hat der
3E etwas ähnliches. Bei JTAG beschreibt der Host ja immer Register in
den Geräten, und wenn er die beiden USER-Register beschreibt, kommen die
Daten aus diesem Primitive heraus und du kannst sie verarbeiten.
Der USB->JTAG Controller auf dem Board ist offenbar der gleiche wie im
Xilinx USB Programmer Cable, und er besteht aus einem Cypress
USB-Controller mit integriertem uC, der mit einem CPLD verbunden ist,
welcher mit deinem FPGA verbunden ist. Die Firmware für diese beiden
Chips ist dummerweise proprietär, genauso wie das
USB-Übertragungsprotokoll, sodass du dir keine eigene Ansteuerung auf
dem PC bauen kannst. Du musst dazu impact benutzen, welches so eine Art
batch-Scripte abarbeiten kann, in denen du angeben kannst, welche Daten
du in die User-Register schreiben willst. Meine Erfahrung war nun, dass
diese Daten zwar teilweise ankamen, aber gelegentlich und offenbar
nicht-deterministisch verschoben, abgeschnitten und damit unauswertbar,
gleiches gilt für die Gegenrichtung, also FPGA->PC. Um meine Nerven zu
schonen, habe ich mir dann einen USB->RS232 Adapter gekauft, das rate
ich dir auch, oder eben diese USB-Erweiterungsplatine von Digilent.
Nach dem Lesen der beiden Antworten werde ich mir wohl doch das Digilent
FPGA Modul besorgen. Kostet zwar knapp 50 Dollar - gut was soll's? Mein
Institut wird's mir hoffentlich bezahlen... ;-)
Was ist denn genau das FX2? Ist das ein anderer Name für CY7C68013?
Ich kenne FX2 nur als Bezeichnung für den Connector für die Digilent
Boards.
Gruß,
Mac
Ja, FX2 ist nur eine Bezeichnung bei Cypress für den CY7C68013 usw. wir
benutzen den recht häufig, wenn man sich einmal in die Firmware
Programmierung gefuchst hat, ist das ganz leicht, beispielsweise über
das Slave-FIFO Interface. Dazu gibts hier schon einige Beiträge.
Und das FPGA 2 Module funktioniert auch sicher mit dem Spartan 3e Board?
Bei dem Spartan 3 passt ja der Stecker einfach in den Port A rein, aber
beim 3e habe ich ja nur so einen "100-pin Hirose FX2 connector". Kann
ich das Modul da einfach so reintecken?
Gruß,
Mac
Der FX2-Connector paßt "mit Sicherheit" nicht mit dem Modul zusammen.
Was spricht eigentlich gegen eine RS232-Lösung (ggf. mit
zwischengeschaltetem USB <---> Seriell-Wandler)?
Bernhard
Echt, das USB-Modul passt nicht an das Spartan 3E? Verdammt!
Gegen USB <-> Seriell-Wandler spricht, dass ich Daten ich schon die
volle Bandbreite von USB 2.0 (also 40 MB/s) benötige.
Gruß,
Mac
Hallo Bernhard,
der Tipp mit dem Nexys-2 ist schon mal ganz gut. Hat aber leider nur 16
MB RAM. Die eierlegende Wollmilchsau scheint Digilent auch nicht zu
haben... ;-)
Gruß,
Mac
Hier taucht für mich die Frage nach der Anwendung auf:
Gefordert sind:
- 40 MB/s Datenrate zum PC
- mehr als 16 MB RAM (n.b. das Spartan IIIE Starterboard besitzt auch
"nur" 32 MB).
Ich frage mich, ob es nicht vielleicht besser ist, erst einmal zu
beschreiben, wozu das Ganze dienen soll.
Bernhard
Ich möchte einen rechenaufwendigen Bildverarbeitungsagorithmus
implementieren. Der FPGA soll Bilder entgegennehmen, verarbeiten und
wieder zurück an den PC schicken. Meiner Abschätzung nach benötigt der
Algorithmus für ein 5 MPixel Bild insgesamt 30 MB RAM.
Gruß,
Mac
Hat jemand schon mal ein Adapterkabel gebaut und versucht das USB-Board
an den Spartan 3E anzuschließen? Oder hat der FX2 Connector noch
"irgendwelche Logik" mehr, die der Port A des Spartan 3 nicht hat?
Ist nur mal so ein Gedanke....
Hat noch nie jemand von euch das Digilent FPGA Modul an den Spartan 3E
angeschlossen?
Nach dem Durchsehen der Datenblätter dürfte das meiner Meinung nach
eigentlich kein Problem sein. Gut, ein entsprechendes Flachbandkabel
müsste ich mir wahrscheinlich selber bauen und die .ucf-Datei anpassen.
Würde nur gerne wissen, ob das schon mal jemand gemacht hat?
Gruß,
Mac
Der elektrische Anschluss ist kein problem. Eher das Kabel usw. da musst
du halt selbst was konstruieren. Ansonsten betreiben wir den Cypress FX2
auch erfolgreich am Spartan 3E. Ich würde aber nicht unbedingt das
Digilent USB 2 Module kaufen, denn das kann nur 8 Bit Transfer zum FPGA.
Kauf dir das kleine Board von Brain Technology, schmeiß deren schrottige
Firmware weg und implementiere eine eigene auf Basis des BulkLoop Demos
von Cypress. Dazu musst du nur die Endpoints auf die Slave FIFOs legen,
den Echo-Kram rauswerfen und gut ist.
Im Anhang mal ein Beispiel, wie die Firmware für den FX2 in etwa
aussehen könnte, wenn man so schnell wie möglich Daten streamen will.
Slave-FIFO Interface, 16 Bit breit, externer Takt, der FX2 hat nach dem
Setup nix mehr zu tun.
Endpoint 2 (Adresse 0x82) IN, 512 Byte Paket-Größe, 4-fach gepuffert
Endpoint 6 (Adresse 0x06) OUT, 512 Byte Paketgröße, 2-fach gepuffert
FIFO-Flags fest an die EP-FIFOs gebunden.
Damit erreicht man bis zu 42 MByte/s in den PC hinein. Wenn der FPGA
schnell genug nachliefert.
Mit den restlichen Dateien, z.B. aus dem Bulk-Loop Demo lässt sich da
schnell eine komplette Firmware machen, mit dem Keil Compiler, der beim
Cypress Paket dabei ist. Die Größe ist auch weniger als die 4k Grenze
für diese kostenlose Version.
Die descr.a51 muss man entsprechend anpassen (Anzahl, Adresse und Größe
der Endpoints, VID/PID usw.)
Diese Anwendung ist Self-Powered, mit Erkennung von VBUS an PA2, nach
Cypress AppNote.
Das sieht aber auch schon wieder kompliziert aus. Das USB ist für mich
eigentlich nur Mittel zum Zweck. Das möchte ich gerne verwenden wie eine
Blackbox, daher ercheint mir das Digilent FPGA Modul sehr geeignet.
16 Bit parallel sind natürlich schöner als 8 Bit. Aber mit 8 Bit sollte
doch eine Highspeed-Übertragung auch möglich sein, oder?
Mit 8 Bit kommst du am FX2 nur mit 40Mhz oder höher im Slave FIFO Modus
zur vollen Geschwindigkeit. Die Firmware von Digilent verwendet aber
sicher das GPIF oder gar den IO Modus der CPU, denn die Steuersignale
passen nicht zum Slave FIFO. Ich denke, mit dem Modul da wirst du keine
40MB/s erreichen. Die Firmware ist nicht so kompliziert, wie man denkt,
im Prinzip kannst du meinen Quelltext 1:1 übernehmen.