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?
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.
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
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.
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 :/
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!
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.
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"
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.
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?
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.
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?
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· 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.
> 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)
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?
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.
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.
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
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.