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
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
Oh das weiß ich nicht. Wir hatten solche kleinen Module von Brain Technology und mit Kabeln an ein Virtex 4 Board geklemmt.
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
Dann dürfte das Nexys-2 Board von Digilent durchaus sinnvoll sein, denn das hat das!!! Bernhard
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.