Forum: FPGA, VHDL & Co. fpga auf eine weitere usbschnittstelle erweitern


von fpgastudent (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich brauche hilfe (Ideen) im Bezug auf folgendes Problem:

ich hab ein FPGA DE0 von Terasic und dieses hat nur eine besetzte USB 
Schnittstelle zum konfigurieren. Jetzt brauche ich ein zweites USB 
Interface zum Datentransfer und bin verzweifelt.
 Da ich mit großen Datenmenge arbeite möchte ich möglichst auf ne USB 
schnittstelle erweitern über die 20pin Header(um weiterhin bei der 
selben Datenrate eines USBs zu bleiben)
allerdings fällt mir schwer von 20Pin Header auf USB zu kommen da ich 
kein geeignetes "Adapter" gefunden habe
wäre für jede Hilfe, Idee sehr Dankbar!!!

dachte es gäbe sowas
http://www.akasa.com.tw/img/product/common/gallery/00/AK-CBUB09-15BK_g01.jpg
ABER konfigurierbar* weil diese nur für USB3.0 ausgelegt sind

Liebsten Grüße

von Martin (Gast)


Lesenswert?

Wie groß sind denn Deine Datenmengen und wie schnell willst Du die 
übertragen?

USB ist etwas mehr als ein Adapterkäbelchen...
Falls Du es wirklich im FPGA machen willst brauchst Du einen IP-Core 
(wie http://opencores.org/project,usb) und einen PHY um die Ein- und 
Ausgänge Deines FPGAs entsprechend in USB-konforme Signale zu 
übersetzen.
Wenn die geforderte Übertragungsrate es erlaubt, ist es deutlich 
einfacher auf ICs von FTDI oder einen µC mit USB (Cypress sieht man in 
diesem Zusammenhang öfters) zurückzugreifen.

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


Lesenswert?

Dir ist hoffentlich schon klar, dass diese "besetzte USB-Schnittstelle" 
dein Programmer ist. Und mitnichten etwas, was du zur Kommunikaiton mit 
dem FPGA verwenden hättest können.

Such mal nach USB-RS232-TTL interface und bastle das an dein FPGA. Dann 
kannst du das Board mit einem simplen Terminalprogramm ansprechen.

> allerdings fällt mir schwer von 20Pin Header auf USB zu kommen da ich
> kein geeignetes "Adapter" gefunden habe
Es hilft auch rein gar nichts, vom Pinheader auf eine USB-Buchse zu 
kommen, wenn du keine USB-Hardware im FPGA hast. Oder meinst du, einfach 
durch einstecken eines Kabel kann das FPGA dann USB?

Und wieder mal: WAS willst du machen?
WAS ist deine eigentliche Aufgabe?


fpgastudent schrieb:
> dachte es gäbe sowas
Sieht aus wie ein simples Adapterkabel...
> ABER konfigurierbar*
Soso...
> fpgastudent
Das gibt mir zu denken...

von berndl (Gast)


Lesenswert?


von fpgastudent (Gast)


Lesenswert?

Danke für die schnelle Antwort

@Martin: ich arbeite mit Bilddaten von einem Datenscanner und deshalb 
möchte ich gerne bei usb datenrate bleiben (~400mbit/s), die variante 
mit einem
zusätzl. µC mit usb schnittstelle wäre meine Notlösung, und dachte 
deshalb auf "so ne Art Adapter"...
@Miller: ja vom Programmer ist auch nicht die Rede und genau das was du 
meinst will ich machen "..USB-RS232-TTL interface.." aber leider ist mir 
S232 zu langsam deswegn bin ich au der Suche nach einer andern Idee

aber wenn ich lese "..Es hilft auch rein gar nichts, vom Pinheader auf 
eine USB-Buchse zu kommen, wenn du keine USB-Hardware im FPGA hast."
un das stimmen sollte dann bin ich etwas pesimist ob da überhaupt ne 
Lösung dafür gäbe denn genau das wollte ich ja machen -.-

es ist mir klar das das kein adapterekäblchn wird nur ob ich in der 
richtung was bastln könnte oder evlt. ohne weiterem baustein auf usb 
kommmen könnte

danke nochmal :)

von Strubi (Gast)


Lesenswert?

Moin,

da fällt mir nur spontan der Cypress FX2 ein, um wenigstens in die Nähe 
der 400 MBit/s zu kommen. Allerdings sollte man sich über einiges im 
Klaren sein:

- Timing u.U. knackig (nicht mit allen FPGAs einfach zu schaffen)
- Isochron gehen nur max. 24 MByte/s in eine Richtung (einigermassen 
stabil laufen bei mir 18 MB/s)
- Der FX2 ist eine "Bitch", d.h. ein 8051, der programmiert werden 
will...
Gibt aber ne Menge OpenSource (siehe usrp/gnuradio)

Alternativ sonst noch: der FTDI 2232H. Aber: Da ist das Timing am FIFO 
noch knackiger, und was iso-Transfer angeht, habe ich keine 
Erfahrung/Messwerte.
Bulk ist ohne Pufferung auf FPGA-Seite eklig, d.h. man braucht schon 
eine DRAM-Anbindung, damits sauber läuft.
Vorteil: Es gibt eine Menge fertiger Platinen mit FTDI, die sich 
möglicherweise gut anstöpseln lassen.
Von den USB-Softcores würde ich erst mal die Finger lassen. Eher noch 
auf UDP-Übertragung gehen...

Viel Erfolg,

- Strubi

von Bruno Pruegel (Gast)


Lesenswert?

fpgastudent schrieb:
> ich hab ein FPGA DE0 von Terasic und dieses hat nur eine besetzte USB
> Schnittstelle zum konfigurieren. Jetzt brauche ich ein zweites USB
> Interface zum Datentransfer und bin verzweifelt.

Schmeiss das Board weg und besorg dir eins mit FPGA und USB-Controller 
(FX2), bspw:
-http://www.ztex.de/index.d.html
-http://www.cesys.com/produkte/kategorie/fpga-karten-spartan/produkt/efm-01/
-http://www.altera.com/education/univ/materials/boards/de2-115/unv-de2-115-board.html

von Schlumpf (Gast)


Lesenswert?

Direkt einfach ein paar FPGA-Pins an nen Stecker löten und schon hast du 
USB.. das funktioniert nicht.
Da steckt immer ein Protokoll und eine Busphysik dahinter und beides ist 
in deinem Fall nicht "einfach so" vorhanden.

Aber schau doch mal, ob es für das Board einen Ethernet-Adapter mit PHY 
gibt (Für den Expansion-Stecker).
Ein paar Daten über nen MAC-Frame zu verschicken ist kein Hexenwerk und 
du brauchst eigentlich erstmal gar kein Protokoll dazu.
Aber ich befürchte fast anhand deiner Fragestellung, dass du im Grunde 
noch viel zu weit von der Materie entfernt bist, als dass dir so ohne 
Weiteres gelingen wird, via MII einen MAC Frame über den PHY 
rauszupusten.
Aber es ist einfacher, als USB in den FPGA zu implementieren.

Ggf musst du mal schauen, ob dir 100MBit Ethernet ausreichen würde.

von Martin (Gast)


Lesenswert?

fpgastudent schrieb:
> @Martin: ich arbeite mit Bilddaten von einem Datenscanner und deshalb
> möchte ich gerne bei usb datenrate bleiben (~400mbit/s), die variante
> mit einem
> zusätzl. µC mit usb schnittstelle wäre meine Notlösung, und dachte
> deshalb auf "so ne Art Adapter"...

Die Datenrate mit USB tatsächlich hinzukriegen ist schonmal nicht ohne.
Lies Dich etwas in die USB-Thematik (Protokoll, Transfer-Modi, Treiber, 
etc.) ein und entscheide dann, ob Du das mit dem USB weiter verfolgen 
willst. Wahrscheinlich ist (Gigabit-)Ethernet die bessere Wahl...

> es ist mir klar das das kein adapterekäblchn wird nur ob ich in der
> richtung was bastln könnte oder evlt. ohne weiterem baustein auf usb
> kommmen könnte

Ohne zusätzliche Hardware oder ein anderes Board wird's so oder so 
nix...


Noch was - Bitte gewöhne Dir an in verständlichen Sätzen mit Punkt und 
Komma zu schreiben, auch wenn es mehr Aufwand auf Deiner Seite bedeutet. 
Durch diese Faulheit machst Du es potentiellen Helfern schwer, Dein 
Problem nachzuvollziehen und vergraulst den einen oder anderen sogar.
Bitte keine faulen Ausreden von wegen "mit dem Handy isses aba so schwär 
vanümpftig zu schreiben" - die kann ich langsam nimmer hören!

von Christian R. (supachris)


Lesenswert?

400MBit/s also 50MB/s sind auch mit 2.0 High Speed nicht drin. Da 
kriegst du per Bulk max. 41 rüber, mit riesigen Puffern. Da müsstest du 
schon den FX3 nehmen. Im 8 Bit Slave Fifo Modus könnte das auch mit 
wenigen Leitungen an einem FX3 Demo Board klappen.

von PittyJ (Gast)


Lesenswert?

Besorg dir ein Altera DE-2 Board (2 Nummern größer)
Das hat auch USB, sowie 2mal Gigabit Ethernet.

Ich würde da aber mit GBit-Ethernet arbeiten, weil es wesentlich 
leichter zu verstehen und implementieren ist. (Meine Erfahrung)

Mit dem DE-0 wirst du nicht weiter kommen.

von Fpgakuechle K. (Gast)


Lesenswert?

PittyJ schrieb:
> Besorg dir ein Altera DE-2 Board (2 Nummern größer)
> Das hat auch USB, sowie 2mal Gigabit Ethernet.


Hm,  DE-2  scheint USB nur bis Full-Speed (12 Mbit/s) zu unterstützen,
da ist der Philips ISP1362 und nicht der cypress FX2 im Einsatz.

MfG

von fpgastudent (Gast)


Lesenswert?

@ Strubi: vielen herzl. Dank ich tendiere eher deinen vorschläge 
nachzugehn und würde s evtl. mit einem FTDI versuchn; scheint laut 
erfahrungsberichte  eher geeignet :) (zb. 
http://www.teamknox.com/ARM/IMG_0021AKI-FTDI2.jpg )

Leider hab ich das Board schon gekauft und bereits einiges fertig 
gemacht (u.a. richtigen Platz im Scanner..) ich hätt mich vllt früher 
erkundigen sollen :), ich hatte ja einen LCPD und war mit DE0 erstmal 
sehr glücklich.
Gesucht war deshalb eine Lösung zum bereits vorhandenen Board8 (kein 
neues Board).

@Martin: danke und ich weiß deine Bemerkung zu schätzen. Von mir kommt 
keine Ausrede :)

Vielen Dank für eure Hilfe!

von Strubi (Gast)


Lesenswert?

Nochmals Warnung: Klär am besten vorher noch ab, ob du a) mit Bulk 
Transfers arbeiten kannst (Pufferung per DRAM möglich?) oder b) dein 
Chip auch wirklich isochron kann. Der 'alte' C Typ und die BM-Varianten 
sollen es können, aber ob es wirklich geht, habe ich nie probiert. Und 
ganz wichtig c): das I/O-Timing solltest du für dein FPGA vorab mal 
simulieren, sonst tut sich ev. gar nichts.

UDP/IP ist insofern kritisch, dass man einiges an mid-level-Kram (ICMP, 
ARP, ...) dazustricken muss, damit das Ding im Netzwerk UDP-Pakete 
verschicken kann, d.h. man kommt schon mal ohne Soft-CPU kaum aus.

von Christian R. (supachris)


Lesenswert?

ISO Streaming erreicht aber unter USB 2.0 High Speed auch "nur" 24MB/s 
also nicht annähernd die gewünschten 400MBit/s. Mit BULK kommt man da 
schon eher hin und hat außerdem noch die Neuversuche bei Fehler.

von Roland Robust (Gast)


Lesenswert?

fpgastudent schrieb:
> Danke für die schnelle Antwort
>
> @Martin: ich arbeite mit Bilddaten von einem Datenscanner und deshalb
> möchte ich gerne bei usb datenrate bleiben (~400mbit/s), die variante
> mit einem
> zusätzl. µC mit usb schnittstelle wäre meine Notlösung, und dachte
> deshalb auf "so ne Art Adapter"...

Meines Wissens arbeit USB mit einer 8b/10b Leitungscodierung bei 480 
Mbit/s Bitrate, so dass Netto bestenfalls 384 Mbit/s möglich sind. Davon 
fressen Paketframing und Protokolldaten (Paket=Header+Payload) nochmals 
ein paar Prozente so dass die 400 Mbit garantiert unerreichbar sind.

von Rainbow Dash (Gast)


Lesenswert?

Strubi schrieb:
> UDP/IP ist insofern kritisch, dass man einiges an mid-level-Kram (ICMP,
> ARP, ...) dazustricken muss, damit das Ding im Netzwerk UDP-Pakete
> verschicken kann, d.h. man kommt schon mal ohne Soft-CPU kaum aus.

Wenn es nur eine Punkt-zu-Punkt Verbindung (wie USB) sein soll, kann man 
auch einfach simple Ethernet II Frames hin und her schicken. Damit 
lassen sich die geforderten Datenraten leicht erreichen.

von PittyJ (Gast)


Lesenswert?

Rainbow Dash schrieb:
> Strubi schrieb:
>> UDP/IP ist insofern kritisch, dass man einiges an mid-level-Kram (ICMP,
>> ARP, ...) dazustricken muss, damit das Ding im Netzwerk UDP-Pakete
>> verschicken kann, d.h. man kommt schon mal ohne Soft-CPU kaum aus.
>
> Wenn es nur eine Punkt-zu-Punkt Verbindung (wie USB) sein soll, kann man
> auch einfach simple Ethernet II Frames hin und her schicken. Damit
> lassen sich die geforderten Datenraten leicht erreichen.

So etwas habe ich schon mit dem DE-2 ohne Softcore gemacht. ICMP und ARP 
sind nicht notwendig, wenn die Gegenseite anständig mitspielt. (Evtl 
kein Windows)

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.