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
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.
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...
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 :)
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
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.
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!
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.
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.
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
@ 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!
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.
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.
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.
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.
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)