FT2232H Datenrate im FIFO Modus

Gast #6642839
Lesenswert?

Ich habe zwei AD Konvertert, die mit mit einer Samplerate von 500kHz 
Daten 4 Byte liefern. Diese gehen in einen FIFO im FPGA und werden dann 
vom FT2232H im synchronen FIFO Modus abgeholt. Das ergibt also eine 
Datenrate von 2MByte/s. Sollte also für USB 2.0 kein Problem sein. 
Manchmal habe ich jedoch aussetzer und die Datenübertragung spinnt 
etwas. Ich benutze libftdi mit der ftdi_readstream funktion. das 
funktioniert ja auch soweit aber irgendwie verstehe ich die Parameter 
packetsPerTransfer und numTransfers nicht so richtig. Wie sind die bei 
einer solchen Datenrate richtig zu wählen. Mit den Daten wird eigentlich 
nicht viel gemacht außer die in eine Datei in einem RAM Dateisystem zu 
schreiben.
Gast #6642877
Lesenswert?

Beim FT2232 im synch FIFO Mode kannst du leicht ein Problem beim 
Interfacetiming bekommen. Wenn du kontinuierlich Daten schreiben willst, 
signalisiert der Baustein über TXE, wenn er keine weiteren Daten mehr 
aufnehmen kann. Die zulässige Reaktionszeit zwischen der Flanke von TXE 
zum Wegnehmen von WE ist gering, und auf dem Weg können Daten verloren 
gehen.

Beitrag "Re: FT2232H Sync FIFO"

Meiner Erfahrung nach kann man zig mal am Design rumschrauben und 
denken, dass jetzt endlich alles passen müsste (indem man das nicht 
richtig übertragene Byte vormerkt und später neu schickt) - und trotzdem 
geht nach einer Woche Dauerbetrieb dann doch wieder sporadisch ein Byte 
auf dem Weg verloren.

Ich bin deswegen bei einem früheren Projekt auf den asynch FIFO Mode 
umgestiegen. Hat vom ersten Design an funktioniert, und hatte keine 
Probleme damit, auch ein Vielfaches der 2MByte/s dauerhaft fehlerfrei zu 
übertragen.
#6642913
Lesenswert?

Achim hat Recht, in dem von ihm verlinkten Post ist aber auch eine 
Lösung für das Problem dabei in Form von Code.
Ganz am Ende vom Thread. Der funktioniert zuverlässig und mit leichten 
Anpassungen auch für den FT601/FT600.
Ich verwende den zusammen mit der D2XX Bibliothek.
Der Code hat ein FIFO Interface, du kannst ihn also direkt an einen BRAM 
FIFO anschließen. Allerdings ist das hier alles in einer Beschreibung 
drinnen. Das sollte ich vielleicht mal in ein eigenes VHD File auslagern 
so wie hier Beitrag "FT600 ucPipeID 0x82 - Bedeutung der Bits?" im letzten 
Post. Damit die volle USB Datenrate ohne Aussätzer funktioniert sollte 
das FIFO im FPGA 64 kByte speichern können. Bei dir mit den 2 MByte/s 
reicht vermutlich ein kleinerer Speicher. 64 kByte reichen bei 40 
MByte/s für 1,6 Sekunden. Bei dir würden schon 3,2 kByte die gleiche 
Zeit puffern können. Aber eben ganz ohne Puffer geht es nicht weil USB 
manchmal Wartepausen hat. Nimm 4 oder besser 8 kByte als FIFO und es 
sollte passen.
Gast #6642949
Lesenswert?

Lars S. schrieb:
> TXE nutze ich auch und in diesem Fall schreibe ich dann auch keine Daten
> mehr in den FIFO und warte etwas.

und hältst du dabei das geforderte Timing sicher ein? darin besteht das 
Problem. Lies dir ggf. die Anforderungen im verlinkten Artikel noch Mal 
durch.
Gast #6642972
Lesenswert?

Achim S. schrieb:
> Lars S. schrieb:
>> TXE nutze ich auch und in diesem Fall schreibe ich dann auch keine Daten
>> mehr in den FIFO und warte etwas.
>
> und hältst du dabei das geforderte Timing sicher ein? darin besteht das
> Problem. Lies dir ggf. die Anforderungen im verlinkten Artikel noch Mal
> durch.

Ich denke schon. Dazwischen ist noch ein SN74V3640 von Texas 
Instruments, der in der 166MHz Version. Der Wird direkt von der 60MHz 
Clock des FTDI getrieben.
Gast #6642995
Lesenswert?

Gustl B. schrieb:
> Ist das ein Duplikat dieses Threads?
>
> Beitrag "FT2232H und SN74V3690"
>
> Ich weiß nicht ob dieser FIFO Baustein das Timing einhält und in diesem
> anderen Thread ist die Fehlerbeschreibung, dass zusätzliche unerwünschte
> Daten ankommen.

Nein ich nutze den FIFO Baustein nur weil da mal eine Alternative ohne 
FPGA vorgesehen war und ein FIFO mehr dazwischen kein Problem sein 
sollte. Die enable setup time liegt bei 1.5ns, was das Timing einhalten 
sollte.

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