USB-Port auf Spartan 3E für Anwendung nutzen

Gast #1188096
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
Persönliche Seite #1188370
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.
Gast #1188476
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
Gast #1190947
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
#1190985
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.
#1191047
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.
Angehängte Dateien:
#1191262
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren