Hallo Leute, ich habe mal eine grundsätzliche Frage. Ich habe eine Leiterplatte mit einem Cyclone 4. Darauf läuft ein Nios II. Nun möchte ich gern die Leiterplatte erweitern und USB 2.0 als Schnittstelle anbieten. Wie würdet Ihr das realisieren? Externer Controller? USB-IP-Core? Mich würde eure Meinung brennend interessieren, da ich mir sehr unsicher bin und etwas stabiles und sicheres haben möchte. Danke schon mal für eure Antworten. Gruß Andreas
Du meinst einen USB Host? Möglichst mit Unterstützung aller gängigen USB Geräte?? Boah, da hast du dir was aufgeladen ... Was läuft auf dem NIOS für Software? Emulatoren? Ein Betriebssystem? Linux? Mit anständiger Treiber Unterstützung? Dir ist klar dass du im NIOS einen USB STack implementieren musst samt aller möglichen USB Varianten? Ganz ehrlich, ich würde einen Controller mit ordentlicher USB Unterstützung vorschalten. Einen USB AVR oder einen STM32. Die sollen sich um den USB kümmern und die relevanten Daten über SPI rein schieben. Für die AVR gibt es eine sehr gute USB lib, die schon erprobt ist und alle gängigen Anwendungsfälle abdeckt.
Hallo Thomas, ja ich bin mir bewusst das dies nicht trivial ist. Die LP kommt in ein Gerät und soll im Prinzip eine USB 2.0-Device darstellen. In einem anderen Projekt wird ein Cycpress CY7C68013A verwendet in den ein 8051 Code geschrieben wird und dann im NiosII angeschrochen wird. Dafür gibt es einen Windowstreiber. Da gibt es aber immer wieder Probleme und ich frage mich ob es da nicht eine stabilere und einfachere Lösung gibt. Gruß Andreas
Ich denke man sollte da anders rangehen. Was brauchst Du? Daten in Richtung FPGA -> PC mit welcher Datenrate? Daten Richtung PC -> FPGA mit welcher Datenrate? Sind das viele Daten am Stück und dann lange Pause, gleichmäßig viele Daten je Zeit, also ein Datenstrom, ...? Mit einem FT232H kommt man recht weit. UART bis 12MBit/s und auch mit FIFO Interface dann bis so 35MBytes/s. Treiber gibt es auch und man kann da einfach Software für schreiben. IM FPGA ist das auch einigermaßen entspannt. Man braucht etwas Pufferspeicher, ein dual clock FIFO mit so 64kBytes ist gut geeignet.
Andreas M. schrieb: > In einem anderen Projekt wird ein Cycpress CY7C68013A verwendet in den > ein 8051 Code geschrieben wird und dann im NiosII angeschrochen wird. > Dafür gibt es einen Windowstreiber. Da gibt es aber immer wieder > Probleme und ich frage mich ob es da nicht eine stabilere und einfachere > Lösung gibt. Welche Probleme habt ihr denn? Man muss ja nicht den ollen Cypress Treiber nehmen. Der Cypress FX2 ist quasi DER USB 2.0 device controller, der selber läuft super stabil und ist simpel und trotzdem flexibel. Wir setzen den auch in unseren Geräten ein, benutzen aber den WinUSB Treiber. Das läuft stabil und ist so transparent, dass wir ohne jegliche Änderungen der Host Software auch den FX3 ansprechen können. Speed ist so ca. 40MB/s im BULK Modus.
Ich hatte mir den Cypress auch angeguckt, aber der sah mir komplizierter aus als der FT232H. Sowohl auf PC als auch auf FPGA Seite. Wie kompliziert der wirklich ist weiß ich aber nicht, alleine das mit diesen Endpunkten die man irgendwie ansprechen muss und der Software die dann auf dem Cypress Stein läuft hat mich abgeschreckt.
Der Cypress an sich scheint nicht schlecht zu sein. Es ist nur leider so, dass alle die sich irgendwann mal damit auskannten und die Anbindung gemacht haben, nicht mehr da sind. Derzeit habe ich Probleme das bei Zeichenketten über 3000 hin und wieder Zeichen verloren gehen. Ob dies am Cypress liegt kann ich nicht genau sagen. Ich weiß nur das die Zeichen richtig aus dem SoftCore raus gehen. Ich muss mir diesen Controller sowieso mal anschauen. Die Frage war nur ob es gute und vielleicht auch einfachere alternativen gibt.
Ja, gibt es. Interessant wäre eben der Anwendungsfall oder die Anforderungen an Datenrate und so, siehe meine Fragen weiter oben.
Allen erstmal ein gesundes neues Jahr. Mein Anwendungsfall ist folgender: Ich habe eine Leiterplatte mit einem Cyclone II (darauf der SoftCor NiosII)und dem USB-Controller CY7C68013A. Diese Leiterplatte wird über USB an einen PC angeschlossen und gesteuert. Die Anbindung des USB habe ich nicht gemacht und der Kollege ist nicht mehr da. Somit habe ich das ganze jetzt an der Backe. Bis jetzt war das ganze für mich eine Blackbox. Nun muss ich diese Box höchstwahrscheinlich öffnen. Bis dato hat alles gut funktioniert und ich hatte mit der Kommunikation keine größeren Probleme. Die Datenrate ist auch nicht so wichtig ich schaffe bei einem USB-Test ungefähr 2700 kB/s Aktuell tritt verhäuft das Problem auf, dass bei Größeren Datenpaketen(größer 3072) die ich aus dem FPGA in den USB_Controller schicke und nur bei manchen Laptops/PC plötzlich Zeichen fehlen. Ich habe einen Rechner bei dem fehlt immer das Byte 3073 und das auch nicht immer. Ich kann mir das einfach nicht erklären und vermute ein Timing-Problem oder ähnliches. Vielleicht kann sich das jemand von euch erklären. Gruß Andreas
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.