Forum: FPGA, VHDL & Co. USB in VHDL aufbauen


von Rolf S. (audiorolf)


Lesenswert?

Wie aufwändig ist es, ein USB protokoll in VHDL zu schreiben um einen 
Synthesizer zu steuern? Ich möchte ein USB-Keyboard auslesen und die 
Tasten interpretieren.

von Kest (Gast)


Lesenswert?

Sehr aufwändig.
Lieber mit einem uC USB auswerten/steuern und dann zum FPGA über 
SPI/UART/I2C, alles andere ist Murks.

Kest

von Test (Gast)


Lesenswert?

Ohne IP Cores viel zu aufwendig...nimm da lieber etwas richtung 
raspberry pi mit fertigem USB stack

von Cle (Gast)


Lesenswert?

Wenn du eine PS2 Tastatur hast wäre das viel einfacher (falls die 
Alternative besteht).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Cle schrieb:
> Wenn du eine PS2 Tastatur hast
Ich vermute sehr, dass mit "USB-Keyboard" etwa sowas gemeint war:
http://www.procenter-music.de/AKAI-LPK-25-USB-Keyboard-Controller

Und ich würde ststtdessen einfach eine MIDI-Tastatur vorschlagen. Das 
kann jedes halbwegs bessere USB-Keyboard auch ausgeben und es könnte der 
Synthesizer auch von anderen MIDI-Keyboards und Synthesizern angesteuert 
werden.

: Bearbeitet durch Moderator
von Rolf S. (audiorolf)


Lesenswert?

Das MIDI Keyboard habe ich schon implementiert, es geht jetzt in der Tat 
um die neuen Masterkeyboards mit USB2 Schnittstelle, denn die haben ein 
schnelleres und besseres MIDI Protokoll.

von Kest (Gast)


Lesenswert?

OT: "besseres" MIDI Protokoll? Was heißt das genau?

von Fpgakuechle K. (Gast)


Lesenswert?

Rolf Sassinger schrieb:
> Wie aufwändig ist es, ein USB protokoll in VHDL zu schreiben um einen
> Synthesizer zu steuern? Ich möchte ein USB-Keyboard auslesen und die
> Tasten interpretieren.

Sehr aufwendig. So 2002 habe ich mal FPGA-Implementationen evaluiert, 
die einen größeren Virtex-2 benötigten.

Üblichersweise wird ein FPGA mit einem externen Chip (cypress-FX2 war 
sehr beliebt) USB-2 fähig gemacht.


MfG,

von Christoph Z. (christophz)


Lesenswert?

Fpga Kuechle schrieb:
> Üblichersweise wird ein FPGA mit einem externen Chip (cypress-FX2 war
> sehr beliebt) USB-2 fähig gemacht.

Der Fragesteller will ein Masterkeyboard an den FPGA anschliessen. Das 
heisst es wird hier nach einer USB Host Implementierung (Master) gefragt 
(oder mindestens On-the-go Fähigkeit). Weder der FX2 noch der neuere FX3 
bieten sowas.

Grössere Mikroprozessor Bastelboards (z. B. Raspberry Pi, Beagle Bone, 
die Allwinner Boards von Olimex oder die iMX6 basierten Boards) bieten 
USB Host. Mit AVR, FX2 etc. ist nur USB Client möglich.

von Christian R. (supachris)


Lesenswert?

Der FX3 kann schon Host, aber da gibts meines Wissens kein VHDL.Modell. 
USB Host in VHDL ist wirklich sehr viel Aufwand....

von Fpgakuechle K. (Gast)


Lesenswert?

Christoph Z. schrieb:
> Fpga Kuechle schrieb:
>> Üblichersweise wird ein FPGA mit einem externen Chip (cypress-FX2 war
>> sehr beliebt) USB-2 fähig gemacht.
>
> Der Fragesteller will ein Masterkeyboard an den FPGA anschliessen. Das
> heisst es wird hier nach einer USB Host Implementierung (Master) gefragt
> (oder mindestens On-the-go Fähigkeit).

Stimmt, hab ich übersehen. Da Host aber nicht geringer im Aufwand ist 
als USB client bleibt der kern der aussage (Viel FPGA-Aufwand) erhalten.
Wobei das problem bei Host meines Wissens weniger der 
hardwaremehraufwand ist, als die Software (wegen mehr Funktionalität 
(Arbitrierung-anstoß (enumeration))).


> Grössere Mikroprozessor Bastelboards (z. B. Raspberry Pi, Beagle Bone,
> die Allwinner Boards von Olimex oder die iMX6 basierten Boards) bieten
> USB Host. Mit AVR, FX2 etc. ist nur USB Client möglich.

Es stellt sich die Frage ob Host oder OTG gebraucht wird und um wieviel 
einfacher OTG ist. BTW, braucht das Keyboard dann einen USB-OTG-Stecker?

MfG,

von Christoph Z. (christophz)


Lesenswert?

Christian R. schrieb:
> Der FX3 kann schon Host,

Wieder was gelernt, danke.
Darf man den Host Modus auch Benutzen? Du hast ja mal geschrieben, der 
FX3 lässt sich nur mit dem ThreadX RTOS nutzen und nicht Bare-Metall, 
also kann ThreadX auch USB Host?

Fpga Kuechle schrieb:
> BTW, braucht das Keyboard dann einen USB-OTG-Stecker?

Das Keyboard ist und bleibt Client. Das Gerät mit OTG Funktionalität 
(also das Gerät mit temporärer Host Funktionalität) hat eine OTG Buchse. 
So wärs gemäss Standard, in der freien Wildbahn sind auch Geräte mit OTG 
aber nur einer Client Buchse zu sehen.

von Christian R. (supachris)


Lesenswert?

Christoph Z. schrieb:
> Darf man den Host Modus auch Benutzen? Du hast ja mal geschrieben, der
> FX3 lässt sich nur mit dem ThreadX RTOS nutzen und nicht Bare-Metall,
> also kann ThreadX auch USB Host?

Klar, soweit ich weiß, wurde die Host-Funtkionalität aber erst später 
ins SDK aufgenommen, ich glaube sogar erst in der 1.3.x Version. Du 
kannst den FX3 natürlich auch ohne ThreadX nehmen, aber dann musst du 
halt alles zu Fuß machen...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fpga Kuechle schrieb:
> Üblichersweise wird ein FPGA mit einem externen Chip (cypress-FX2 war
> sehr beliebt) USB-2 fähig gemacht.
Wobei ich nicht so richtig sicher bin, ob und wofür eine mechanische 
Tastatur 480MBit/s zu übertragen hat. So schnell kann keiner 
irgendwelche Tasten drücken...

Kest schrieb:
> OT: "besseres" MIDI Protokoll? Was heißt das genau?
Würde mich auch interessieren, was mit "besser" gemeint ist.

von Christian R. (supachris)


Lesenswert?

Naja, die HIDs sind ja alle Low- oder allerhöchstens Fullspeed. Und der 
FX2 ist eh nur USB Device, der kann keinen Host spielen.

von Uwe (Gast)


Lesenswert?

STM32F4 kann Host, das Discovery kostet nur 14€.

von Rolf S. (audiorolf)


Lesenswert?

Lothar Miller schrieb:
> Fpga Kuechle schrieb:
>> Üblichersweise wird ein FPGA mit einem externen Chip (cypress-FX2 war
>> sehr beliebt) USB-2 fähig gemacht.
Einen solchen Chip habe ich auf dem PCB drauf. Weiters gibt es noch die 
Möglichkeit, einen ARM ins Spiel zu bringen (Cyclone 5).

> Wobei ich nicht so richtig sicher bin, ob und wofür eine /mechanische/
> Tastatur 480MBit/s zu übertragen hat. So schnell kann keiner
> irgendwelche Tasten drücken...
Solange sie on-/off überträgt ja, aber mittlerweie gibt es 
anschlagsdynamische Tastaturen, die den Druck und die Geschwindigkeit 
"analog" per Controller übertragen, statt einfach eine velocity Kurve im 
Synth zu benutzen. Das sind viel mehr Informationen. Und es geht auch um 
das Spielen in Echtzeit und damit das gleichzeitige Übertragen von 
Daten. Schau mal hier:

Beitrag "MIDI Clock in MIDI Timecode wandeln"

> Kest schrieb:
>> OT: "besseres" MIDI Protokoll? Was heißt das genau?
> Würde mich auch interessieren, was mit "besser" gemeint ist.

http://www.usb.org/developers/devclass_docs/midi10.pdf
http://www.midi.org/aboutus/projects.php

von Lattice User (Gast)


Lesenswert?

Rolf S. schrieb:
> es geht jetzt in der Tat
> um die neuen Masterkeyboards mit USB2 Schnittstelle, denn die haben ein
> schnelleres und besseres MIDI Protokoll.

Es gilt erst mal zu klären ob das Full oder Highspeed ist.

Viele µC können kein Highspeed obwohl im Datasheet USB2 angegeben wird.

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
Noch kein Account? Hier anmelden.