mikrocontroller.net

Forum: FPGA, VHDL & Co. USB-Device von opencores


Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander!

Ich versuche mich an dem 'usbHostSlave-Core' von opencores.
Leider läuft die Inbetriebnahme der Hardware überhaupt nicht. Jetzt 
stellt sich die typische Frage:
Liegt es an der Hardware, der Software oder an dem FPGA-Design...

Hat zufällig jemand mal versucht den Core mit einem NIOS in Betrieb zu 
nehmen?

Gruß
Hohenloher

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so...


der Core läuft jetzt mit NIOS-II als Device-Logik.
Ich gebe mich einfach als HID bei Windows aus, so ist das Treiberproblem 
auch aus der Welt geschafft :-)

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Herr Hohenloher,

schoen dass Sie Ihr Problem umschifft haben ohne dass ein Forumsleser 
helfen konnte oder musste.
Ggfls. gibt es in Zukunft andere welche aufgrund der Suchfunktion in 
diesem Thread landen und nach einer Lösung suchen.
Können Sie Ihr Problem und deren Lösung kurz schildern?

Gruß

Andreas

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

ich habe eine bessere Idee:

wenn sich jemand findet der auch an/mit diesem IP-Core arbeitet könnte 
man gemeinsam ein kleines Projekt aufziehen. Cool wäre es, wenn sich 
jemand mit Windows-Treibern auskennt!
Wir könnten einen Core mit kompletter Tool-Chain entwickeln.
Mal sehen ob sich mehr Interessenten dafür finden. Das Interesse an 
meinem Beitrag hielt sich ja bis jetzt doch sehr in Grenzen...

Gruß
Hohenloher

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, Windows Treiber müsste man nicht mal selber entwickeln. Dafür 
gibts ja die universellen Treiber wie LibUSB WIn32, WinUSB, easyUSB...

Autor: xilinxer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!

ich erstelle gerade ein design mit einem spartan 3A und wäre auch an 
einer implementierung einer usb schnittstelle interessiert.
Besteht noch interesse an einer zusammenarbeit?

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Interesse besteht auf alle Fälle :-)

Also, ich denke mal das man muss hauptsächlich am Device-Treiber (am 
besten für Microblaze und NIOS-II über Defines konfigurierbar) und der 
Windows-Seite arbeiten. Der USB-Core ist deswegen sehr interessant, da 
man nicht mal unbedingt einen USB-PHY benötigt. USB1.1 reicht sowieso 
für 99% aller Anwendungen.
Ich habe leider keinerlei Erfahrungen mit einem solchen generischen 
Treiber für Windows. Wie geht man da vor?

Gruß
Hohenloher

Autor: Michael Fischer (mifi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

könnte hier libusb-win32 was für Euch sein?
http://libusb-win32.sourceforge.net/

Ist ein generischer Treiber, und kann sich eigentlich mit jedem USB
Device verbinden, so wie ich das verstehe. Der Treiber wird z.B. im
OpenOCD Projekt benutzt um sich mit dem FT2232 Device oder einem
J-Link zu verbinden. Beim FT2232 übernimmt noch eine zusätzliche
Library die "Protokollumsetzung". Beim J-Link geht das dann direkt.
Hier hat der Hersteller das USB-Protokoll seines Devices veröffentlicht.

Da Ihr das USB-Device selber erstellt, kennt Ihr auch das Protokoll was 
später verwendet wird, somit sollte es eigentlich keine Probleme geben.

Ich würde auch gerne was mit Microblaze und USB mache. Habe hier aber 
überhaupt keine Erfahrungen. Hätte hier ein Spartan-3A DSP Evalboard zur 
Verfügung.

Viele Grüße,

Michael

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Fischer schrieb:
> Hallo zusammen,
>
> könnte hier libusb-win32 was für Euch sein?
> http://libusb-win32.sourceforge.net/

Ja, mit der LibUSB kan man (recht beschränkt, weil nur synchrone 
Operationen) auf alle USB Devices zugreifen.

> Ich würde auch gerne was mit Microblaze und USB mache. Habe hier aber
> überhaupt keine Erfahrungen. Hätte hier ein Spartan-3A DSP Evalboard zur
> Verfügung.

Da bau dir lieber einen Cypress FX2 dran, der kostet nur ein paar Euro 
und macht das komplette USB Protokoll intern. Den kannst du wie ein FIFO 
benutzen, wenn du den Slave FIFO Modus aktivierst. Sehr simpel.

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um diesen andauernden 'ich-hab-ne-bessere-idee, 
weiß-aber-garnicht-was-ihr-eigentlich-machen-wollt' - Sprüchen 
vorzubeugen:

NEIN, das ist kein Thread in dem irgendein Protokoll-Umsetzer verwendet 
werden soll, DAS IST NÄMLICH SINN DER SACHE!!!

So, ich habe erste versuche mit dem easyUSB aus dem Forum hier gemacht, 
so was in die richtung ist für erste Tests auch 'ganz nett'.

Ich denke wir können den auch in den ersten Schritten verwenden um die 
Embedded-Seite, welche die komplexere sein dürfte erst mal zu erstellen.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hohenloher Cr. schrieb:
> Um diesen andauernden 'ich-hab-ne-bessere-idee,
> weiß-aber-garnicht-was-ihr-eigentlich-machen-wollt' - Sprüchen
> vorzubeugen:
>
> NEIN, das ist kein Thread in dem irgendein Protokoll-Umsetzer verwendet
> werden soll, DAS IST NÄMLICH SINN DER SACHE!!!

Das mit dem FX2 galt ja auch nicht dir, sondern Michael Fischer, bei dem 
man schon an der Fragestellung erkennen kann, dass sein Kenntnisstand 
nicht ausreicht um ein USB Device als SoftCore zu entwickeln.

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@supachris:

prima, in anderen threads passiert es halt leider immer, dass das thema 
völlig abdriftet. Dies wollte ich hiermit nur verhindern.
Ich finde es halt immer schade wenn das Problem nicht gelöst, sondern 
immer gleich die Sinnhaftigkeit diskutiert wird.

Zum Thema:
Sicherlich hat schonmal jemand eine 'serielle Schnittstelle' über über 
USB getunnelt. Meine Frage: Welche Kommunikationsart wählt man da am 
besten (synchron, Uni-/Bidirektional) und wieviele Endpunkte würde man 
dafür verwenden?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hohenloher Cr. schrieb:
> @supachris:
>
> prima, in anderen threads passiert es halt leider immer, dass das thema
> völlig abdriftet. Dies wollte ich hiermit nur verhindern.
> Ich finde es halt immer schade wenn das Problem nicht gelöst, sondern
> immer gleich die Sinnhaftigkeit diskutiert wird.

Naja, das stimmt schon leider. War auch nicht meine Absicht. Ich finde 
den Core auch nicht ganz verkehrt, aber er ist in Verilog, wofür wir 
keine ModelSim Lizenz haben, und erfordert das recht aufwendige WishBone 
Interface. Sonst hätt ich ihn mal getestet. Wenn man effektiv und 
zeitnah eine USB 2.0 Kommunikation mit einem FPGA machen soll, kommt man 
meiner Meinung mit dem FX2 am schnellsten voran.

> Zum Thema:
> Sicherlich hat schonmal jemand eine 'serielle Schnittstelle' über über
> USB getunnelt. Meine Frage: Welche Kommunikationsart wählt man da am
> besten (synchron, Uni-/Bidirektional) und wieviele Endpunkte würde man
> dafür verwenden?

Eine UART tunneln? Klar kann man machen, über BULK Endpoints hat man 
immer noch die Datensicherheit, wird ja bis zu 3 mal wiederholt. Bei ISO 
und Interrupt gehts zwar mit weniger Latenz aber eben keine 
Wiederholungen. FTDI arbeitet aber glaub trotzdem mit Interrupt für die 
USB-Serial-Adapter.

Ich würde zu einem FPGA aber lieber eine schnelle Parallel-Verbindung 
aufbauen, die gleich 16 Bit breite Daten ausspuckt. Mit der LibUSB oder 
EasyUSB anzusprechen ist kein Thema, geht sehr gut (mit dem FX2 mal 
probiert). Kommt halt immer drauf an, was man machen will....wie schnell 
willst du denn übertragen?

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Endeffekt suche ich eine Möglichkeit um Worte (32Bit) von a nach b zu 
übertragen. Wenn das nicht nur Byteweise, sondern Wortweise klappt wäre 
das perfekt. Sonst muss ich immer Byteweise fragmentieren (wie beim 
UART).

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, worte bestehen auch nur aus Bytes und über die USB Strippe gehen 
eh nur Bytes. Kannst dem Treiber natürlich einen Pointer auf dein 
Wort-Buffer geben. Die Angabe, wieviel der Treiber transferieren soll, 
erfolgt sowieso in Byte. Auf der Hardware-Seite wäre dann ein 
busmatching FIFO sinnvoll, 16 Bit rein, 32 Bit raus. Also, wenn man das 
mit dem FX2 macht. Da sind dann 40MB/s Datentrasferrate drin...bei dem 
OpenCores Ding ist glaub eh schon 32 Bit alles. Halt etwas aufwendiger 
als die Chip-Lösung.

Autor: Hohenloher Cr. (hohenloher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 'Treiberlösung' ist ja genau die Fragmentierung

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wird ja aber nix fragmentiert. Das ist doch bei fast allen Treibern 
so. Man gibt den Pointer und die Anzahl in Bytes. Der kümmert sich dann 
schon und überträgt dann je nachdem, wie das Interface ausgelegt ist, 
entsprechend. Wo ist denn das Probelm?

Autor: Michael Fischer (mifi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

>Das mit dem FX2 galt ja auch nicht dir, sondern Michael Fischer, bei dem
>man schon an der Fragestellung erkennen kann, dass sein Kenntnisstand
>nicht ausreicht um ein USB Device als SoftCore zu entwickeln.
Das hast Du richtig erkannt, das gebe ich auch ohne Probleme zu.
Ich werde mir mal den FX2 genauer anschauen.

Meine Mail war eher als Anregung im Bezug auf libusb zu verstehen

Viele Grüße,

Michael

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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