mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA mit Cyclone 4 und Nios II mit USB austatten


Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas Winkler (Firma: privat) (diddl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gustl Buheitel (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gustl Buheitel (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gustl Buheitel (-gb-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, gibt es. Interessant wäre eben der Anwendungsfall oder die 
Anforderungen an Datenrate und so, siehe meine Fragen weiter oben.

Autor: Andreas Müller (chillymu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.