Forum: FPGA, VHDL & Co. USB-Port auf Spartan 3E für Anwendung nutzen


von Mac81 (Gast)


Lesenswert?

Hallo,

kann man den USB 2.0-Port des Spartan 3E Starter Boards von Digilent 
(http://www.digilentinc.com/Products/Detail.cfm?NavTop=2&NavSub=423&Prod=S3EBOARD) 
auch vom FPGA aus nutzen, um Daten mit dem PC auszutauschen? Oder ist 
der nur für das konfigurieren des FPGA zuständig und ich müsste mir ein 
solches Board noch kaufen:
http://www.digilentinc.com/Products/Catalog.cfm?Nav1=Products&Nav2=Accessory&Cat=Accessory

Gruß,
Mac

von Christian R. (supachris)


Lesenswert?

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".

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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.

von Mac81 (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Mac81 (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

Oh das weiß ich nicht. Wir hatten solche kleinen Module von Brain 
Technology und mit Kabeln an ein Virtex 4 Board geklemmt.

von Bernhard R. (barnyhh)


Lesenswert?

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

von Mac81 (Gast)


Lesenswert?

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

von Bernhard R. (barnyhh)


Lesenswert?

Dann dürfte das Nexys-2 Board von Digilent durchaus sinnvoll sein, denn 
das hat das!!!

Bernhard

von Mac81 (Gast)


Lesenswert?

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

von Bernhard R. (barnyhh)


Lesenswert?

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

von Mac81 (Gast)


Lesenswert?

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

von Mac81 (Gast)


Lesenswert?

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....

von Mac81 (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Mac81 (Gast)


Lesenswert?

Danke Christian, den Segen habe ich gebraucht! ;-)

von Christian R. (supachris)


Lesenswert?

Lies mal mein Edit oben

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

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.

von Mac81 (Gast)


Lesenswert?

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?

von Christian R. (supachris)


Lesenswert?

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.

von Rainer (Gast)


Lesenswert?

Hallo Mac81,

hast du an deinem spartan 3e jetzt eine USB Verbindung zustande 
bekommen? Hast du es nach dem Vorschlag von Christian gemacht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.