Forum: FPGA, VHDL & Co. Fpga board: Daten an mein PC senden


von Detlef (Gast)


Lesenswert?

Ich würde gerne Daten von meinem Fpga board auf mein PC senden und das 
ziemlich schnell. Ich benötige eine Geschwindigkeit von mindestens 5 
MBit/sec. Und die USB Schnittstelle von meinem  Board (MOJO v3) packt 
gerade mal ca.  200 kbit/sec. Mir wurde vorgeschlagen einen ftdi Chip 
als externes USB interface zu nehmen. In meinem Fall wäre es der Um232h. 
Ich hab noch nie mit ftdi Chips gearbeitet. Wie ist eure Meinung dazu. 
Ist es sinnvoll es mit einem ftdi chip zu machen?  Und wenn ja wie kann 
ich den Schwierigkeitsgrad dazu einstufen? Oder habt ihr vielleicht 
alternative Lösungsvorschläge?

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


Lesenswert?

Detlef schrieb:
> In meinem Fall wäre es der Um232h.
FTDI hat keinen solchen Chip.
http://www.ftdichip.com/Products/ICs.htm
Meinst du den FT232H?
http://www.ftdichip.com/Products/ICs/FT232H.htm

von Detlef (Gast)


Lesenswert?

Lothar M. schrieb:
> Meinst du den FT232H?

Ja genau. Das wäre der Chip auf dem Um232h Modul. Hab überhaupt keine 
Erfahrung mit ftdi, deswegen dachte ich mir, dass das Modul mit dem Chip 
drauf benutzerfreundlicher ist als nur der Chip an sich.

von Detlef (Gast)


Lesenswert?

Ich würde gerne Daten von meinem Fpga board auf mein PC senden und das 
ziemlich schnell. Ich benötige eine Geschwindigkeit von mindestens 5 
MBit/sec. Und die USB Schnittstelle von meinem Board (MOJO v3) packt 
gerade mal ca. 200 kbit/sec. Mir wurde vorgeschlagen einen ftdi Chip als 
externes USB interface zu nehmen. In meinem Fall wäre es der Um232h. Ich 
hab noch nie mit ftdi Chips gearbeitet. Wie ist eure Meinung dazu. Ist 
es sinnvoll es mit einem ftdi chip zu machen? Und wenn ja wie kann ich 
den Schwierigkeitsgrad dazu einstufen? Oder habt ihr vielleicht 
alternative Lösungsvorschläge

von Gabba Gandalf (Gast)


Lesenswert?

Alta, mach ma LAN!

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


Lesenswert?

Detlef, ein Thread reicht!

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Ein zweites Posting ohne auf die vorherigen Antworten einzugehen ist 
nicht besonders nett.

Schau Dir die Ftdi FIFO Modes an. Da kannst Du richtig Durchsatz 
erreichen.

von Balu (Gast)


Lesenswert?

Uwe B. schrieb:
> Ein zweites Posting ohne auf die vorherigen Antworten einzugehen ist
> nicht besonders nett.

Ja es tut mir leid. Hab im Nachhinein gesehen, dass es auch ein Forum 
für Fpgas gibt. Hatte den Thread davor bei den Microcontrollern gepostet 
gehabt. Und als Gast war es mir nicht möglich den ersten Thread zu 
löschen :/

von Robert M. (rmueller)


Lesenswert?

Ich würde auch den FT232H empfehlen! Betrieben als "FT232 im asynchronen 
FT245 FIFO Mode" habe ich mittels d2xx Treiber und dem Beispielcode aus 
dem Progamming Guide auf Anhieb 16MBit/s Durchsatz erreicht. 
Flusskontrolle und Puffer im FPGA vorausgesetzt!

von Detlef (Gast)


Lesenswert?

Robert M. schrieb:
> Ich würde auch den FT232H empfehlen! Betrieben als "FT232 im asynchronen
> FT245 FIFO Mode" habe ich mittels d2xx Treiber und dem Beispielcode aus
> dem Progamming Guide auf Anhieb 16MBit/s Durchsatz erreicht.
> Flusskontrolle und Puffer im FPGA vorausgesetzt!

Welchen Programing guide meinst du da genau? Bin schon länger nach einem 
Guide auf der Suche.

Hab jetzt den ft232h mal bestellt. Bin schon gespannt auf das Teil.

von Robert M. (rmueller)


Lesenswert?

Google sei Dank:

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf

Je nach dem, wie dein DevBoard aussieht, kann es sein, dass Du dem 
FT232H erst beibringen musst, sich wie ein asynchronous FT245 FIFO zu 
benehmen. Auch dazu gibt es bei FTDI ein Tool, um das (hoffentlich 
vorhandene) EEPROM entsprechend zu programmieren:

"FT_PROG 3.3.88.402 - EEPROM Programming Utility"

: Bearbeitet durch User
von Yafes61 (Gast)


Lesenswert?

Ich setze den UM232H Board mit einem Xilinx Virtex 5 (ML507) ein.
Hatte damals den Fifo mode benutzt. Erreicht hatte ich bis zu 45 MB/s. 
Funktionierte soweit stabil. ab und zu hatte ich Bit fehler, was evtl. 
am Aufbau lag, da ich das UM233H auf eine Pfostenleiste gesteckt benutzt 
hatte.

Glaube im Netz gabs auch Beispiele in VHDL zum UM233H. Entsprechend 
konfiguriert über die dll funktionierte er gut.

Bin aber aktuell auf einem Umstieg zum Cypress FX3. Da erreiche ich 
aktuell 150MB/s über eine PCI express angeschlossenen USB 3.0 Buchse was 
für meine Anwendung ausreichen wird.

von Detlef (Gast)


Lesenswert?

Yafes61 schrieb:
> Ich setze den UM232H Board mit einem Xilinx Virtex 5 (ML507) ein.
> Hatte damals den Fifo mode benutzt. Erreicht hatte ich bis zu 45 MB/s.

Was haltest du von dem Morph-IC-II FPGA Development Module von FTDI? Der 
hat ein Altera Cyclone-II als Fpga und als Usb Schnittstelle den 
FT2232H. Damit sollte es doch möglich sein, im Fifo Mode, Daten mit 
einer Geschwindigkeit von 10MBit/s zu empfangen oder nicht?

von Yafes61 (Gast)


Lesenswert?

Das idealste ist natürlich alles in einem Board Lösung. So hast du 
erstmal ein verifiziertes PCB Design. Weiteres hängt von dir und den 
Beispielen zum genannten Board ab.
Ob deine 10MBits im entsprechenden Mode verfügbar sind müsste im 
Datenblatt stehen.
Theoretisch steht der Technologie nichts im Wege, wie gesagt habe ich 
mit dem FT232H dauerhaft 45 MB/s realisieren können.

von Yafes61 (Gast)


Lesenswert?

Wenn du bei google nach "FT232H VHDL" suchst findest du viele 
Beispielprojekte die dir einen Ansatz geben könnten.

von Detlef (Gast)


Lesenswert?

Yafes61 schrieb:
> Theoretisch steht der Technologie nichts im Wege, wie gesagt habe ich
> mit dem FT232H dauerhaft 45 MB/s realisieren können.

Vielen Dank für deine Antworten. Eine Frage hätte ich dann aber noch. 
Wie schafft es dein Rechner 45MB/s zu verarbeiten. Wenn ich in Visual 
Studio alleine nur eine For Schleife in C++ bis 5 Millionen zählen 
lasse, dauert das 20 Sekunden. Deswegen habe ich dich Befürchtung, dass 
ich vielleicht bei gewünschter Datenrate die Daten an mein PC senden 
kann, er sie aber gar nicht so schnell verarbeiten kann. Oder habe ich 
hier irgendwie einen Denkfehler?

von Megabit (Gast)


Lesenswert?

Willst du das es nach mehr aussieht, nimm Megabit.
Schon ist alles achtmal so schnell.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> in C++ bis 5 Millionen zählen lasse, dauert das 20 Sekunden

Da ist aber was faul.

Ein:
1
  for(;;){
2
    *(unsigned short *)0xFFFFD302 = 0x8000;
3
    for(ulLed_Delay=0; ulLed_Delay<1000000; ulLed_Delay++){;}
4
    *(unsigned short *)0xFFFFD302 = 0x0;
5
    for(ulLed_Delay=0; ulLed_Delay<1000000; ulLed_Delay++){;}
6
  }

laesst auf einem mit 40 MHz laufendem SH-2 die LED etwa alle
400 ms an- und ausgehen.

von Detlef (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5308783:
> laesst auf einem mit 40 MHz laufendem SH-2 die LED etwa alle
> 400 ms an- und ausgehen.

Ne also mittlerweile habe ich ja den FTDI Chip im FIFO Mode zum Laufen 
bekommen, aber wie würde denn eine ordentliche Leseroutine aussehen, 
sodass mein Code nicht zum Flaschenhals wird?

Würde gerne alle Bytes die kontinuirlich gesendet werden empfangen 
können und das vielleicht über einige Minuten hinweg.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> aber wie würde denn eine ordentliche Leseroutine aussehen,
> sodass mein Code nicht zum Flaschenhals wird?

Ich nehm fuer sowas den FX2LP aka CY7C68013A.
Der hat den Vorteil, dass Mann mit dem GPIF-Designer sich sein
Interface in Richtung DSP/FPGA selber in gewissen Grenzen
konstruieren/definieren kann.
Die Leseroutinen gibt es im SDK von Cypress.
Von FTDI gibts da sicher auch was.

Aber wenn dein Rechner fuers reine Zaehlen bis 5000000 sich schon
20 Sekunden genehmigt, sehe ich da schwarz.
Das solltest du schon nochmal testen.
Der SH-2* ist zwar eine 1 Takt RISC-CPU, lief aber nur mit 40 MHz.


*) Es war ein SH-7125 (R5F7125)

von Burkhard K. (buks)


Lesenswert?

Detlef schrieb:
> Wenn ich in Visual
> Studio alleine nur eine For Schleife in C++ bis 5 Millionen zählen
> lasse, dauert das 20 Sekunden.

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5311244:
> Aber wenn dein Rechner fuers reine Zaehlen bis 5000000 sich schon
> 20 Sekunden genehmigt, sehe ich da schwarz.

Liegt das wirlich am Rechner - oder an dem von Visual Studio 
instrumentiertem Code?

von Dumdi D. (dumdidum)


Lesenswert?

Detlef schrieb:
> Oder habe ich hier irgendwie einen Denkfehler?

Was fuer ein pc, was fuer source code, was fuer optimierungsschalter. 
Ich habe neulich mal Speicher zu Speicher direkt mit c kopiert und 800 
Mbyte /s sind moeglich. D.h. 250000Schleifeniterationen pro.s sieht nach 
eine 8086 pc aus.

von Yafes61 (Gast)


Lesenswert?

Habe selber Delphi für meine Anwendung benutzt. Wenn du große 
Buffergrößen verwendest, heißt einen großen Fifo für den FTDI Chip, ist 
das ganze mit 45MB/s realisierbar. Wenn du dann die Daten abspeichern 
willst, empfiehlt sich unter Umständen eine SSD.

von Duke Scarring (Gast)


Lesenswert?

Yafes61 schrieb:
> 45MB/s realisierbar. Wenn du dann die Daten abspeichern
> willst, empfiehlt sich unter Umständen eine SSD.
Seit dem Jahr 2000 werden Platten verkauft, die diese Datenrate 
verkraften dürften. Aktuelle HDDs schaffen ungefähr das dreifache (150 
MB/s).

Mit einer SSD hat man natürlich mehr Reserven (500 MB/s).
Wobei ich da bisher nur Datenblätter mit "write data rate up to" 
gefunden habe.
Wäre mal schön einen Hersteller zu haben, der eine "minimum warranted 
write rate" angibt.

Duke

von Sven B. (scummos)


Lesenswert?

Detlef schrieb:
> Yafes61 schrieb:
>> Theoretisch steht der Technologie nichts im Wege, wie gesagt habe ich
>> mit dem FT232H dauerhaft 45 MB/s realisieren können.
>
> Vielen Dank für deine Antworten. Eine Frage hätte ich dann aber noch.
> Wie schafft es dein Rechner 45MB/s zu verarbeiten. Wenn ich in Visual
> Studio alleine nur eine For Schleife in C++ bis 5 Millionen zählen
> lasse, dauert das 20 Sekunden. Deswegen habe ich dich Befürchtung, dass
> ich vielleicht bei gewünschter Datenrate die Daten an mein PC senden
> kann, er sie aber gar nicht so schnell verarbeiten kann. Oder habe ich
> hier irgendwie einen Denkfehler?

Hast du ein printf drin? Das dauert höchstens ein paar hundert µs.
45 MB/s sind schon was, aber du kannst noch einiges damit machen auf 
einer typischen Desktop-CPU. Fouriertransformieren könnte z.B. gerade 
noch gehen.

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.