Fpga board: Daten an mein PC senden

Gast #5291697
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?
Gast #5291738
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
Gast #5291837
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 :/
Gast #5292514
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.
#5292587
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"
Gast #5308171
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.
Gast #5308242
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?
Gast #5308295
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.
Gast #5308710
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?
Gast #5308783
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.
Gast #5311151
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.
Gast #5311244
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)
#5311323
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?
Gast #5314172
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.
Gast #5314303
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
#5314404
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren