Ich nutze einen Ft2232 im synchronen FIFO modus in Verbindung mit einem SN74V3690. Das ganze wird per libftdi angesteuert und der callvack thread läuft dauerhaft. Der SN74V3690 wird per fpga mit Daten befüllt. Leider läuft da manchmal etwas schief und der FTDI liefert massenweise Daten wo keine sein sollten. Auch wenn der fifo nicht durch den fpga befüllt wird. Hat schon mal jemand solche Probleme gehabt?
Stefan B. schrieb: > synchronen FIFO modus Verwende ich auch aber direkt von FPGA zu FTDI. Ob man das FT245 Interface dafür gedacht ist. Der FTDI Baustein ist selber ein FIFO. Und leider ist der nicht so ganz einfach zu bedienen. Das TXE entscheidet ob der FTDI die Daten übernommen hat, da sind die Timings suboptimal. Ich verwende den mit dem D2XX Treiber. Funktioniert wunderbar.
Gustl B. schrieb: > Stefan B. schrieb: >> synchronen FIFO modus > > Verwende ich auch aber direkt von FPGA zu FTDI. > > Ob man das FT245 Interface dafür gedacht ist. Der FTDI Baustein ist > selber ein FIFO. Und leider ist der nicht so ganz einfach zu bedienen. > Das TXE entscheidet ob der FTDI die Daten übernommen hat, da sind die > Timings suboptimal. > > Ich verwende den mit dem D2XX Treiber. Funktioniert wunderbar. Die Idee dahinter war den SN74V3690 zu nehmen, da der noch etwas größer ist und ich mehr zwischenspeichern kann. Der SN74V3690 wird im FWFT Modus betrieben und ist definitiv für die 60Mhz Clock des FTDI ausgelegt. Ich weiß auch nicht wo die zusätzlichen Daten herkommen sollen. Kann mir nur vorstellen, dass entweder der FPGA massiv in den FIFO schreibt (Muss ich noch prüfen aber unwahrscheinlich) oder der FTDI irgendwie zu viel liest und an der Stelle etwas nicht stimmt.
Lade mal einen Schaltplan hoch mit allen drei Bausteinen. Ja, die 60 MHz sind nicht kritisch, aber das TXE schon. Das kann auch mitten im Takt High werden und dann nimmt der FTDI in diesem Takt keine Daten.
So auf den beiden Bildern erkennt man FTDI und den FIFO. WEN, MRP, PRS, WCLK gehen direkt zum FPGA. Die Konfiguration des FIFO habe ich jewils markiert. Die sind einfach fix entweder 0 oder 3.3V.
Stefan B. schrieb: > Noch ein Nachtrag. MRS und PRS werden auch vom FPGA beim Start > einmal zurückgesetzt. Schon mal überlegt ob die 27 Ohm sein müssen oder deine FPGA Schaltung Unfug macht?
Frank K. schrieb: > Schon mal überlegt ob die 27 Ohm sein müssen oder deine FPGA Schaltung > Unfug macht? Die 27 Ohm sind schon OK, FPGA Schaltung, ja, kann sein. Ich finde das RT# sollte noch genutzt werden weil das ist ja so: Der FTDI hat TXE# unten, der FIFO/FPGA legt Daten an und legt WR# auf Low. Dann nach der Flanke zieht der FTDI TXE# hoch, das kann recht beliebig passieren. Und das sagt, dass diese Daten die zu der vorherigen Flanke anlagen nicht im FTDI übernommen wurden. Der FIFO/FPGA muss die also nochmal anlegen für einen Takt wenn TXE# wieder unten ist. Das erklärt aber nicht dein Problem. Dir fehlen ja keine Daten sondern du bekommst zu viele. Du könntest mit Oszi/Logikanalysator gucken ob die Daten am FIFO Ausgang irgendwie toggeln während TXE# aber high ist. Das sollte nicht passieren.
Danke für die Antworten. RT ist ein Eingang am FIFO und im Datenblatt des FIFO als Retransmit beschrieben. Das brauche ich nicht daher ist das deaktiviert fest auf 0V. Ich frage mich auch gerade was es für einen Unterschied machen würde wenn die Daten toggleln wenn TXE high ist. Ignoriert der FTDI die Daten dann nicht einfach? Die Kommunikation ist ja folgende: Ich fülle Daten in den FIFO und nicht in den FTDI Chip. Sobald der FIFO read pointer Daten hat geht OR auf 0. Also WR# im FTDI wird zu Null das heißt es kann geschrieben werden. TXE# kann ja prinzipiell immer 0 sein. Damit sagt der FTDI nur, dass er Daten in seinen FIFO schreiben möchte.
Stefan B. schrieb: > Ich frage mich auch gerade was es für einen Unterschied machen würde > wenn die Daten toggleln wenn TXE high ist. Ignoriert der FTDI die Daten > dann nicht einfach? Ja. Stefan B. schrieb: > Also WR# im FTDI wird zu Null das heißt es kann geschrieben werden. Nicht im FTDI. Das besagt, nicht dass geschrieben werden kann, sondern dass geschrieben werden soll in den FTDI. Stefan B. schrieb: > TXE# kann ja prinzipiell immer 0 sein. Damit sagt der FTDI nur, dass er > Daten in seinen FIFO schreiben möchte. Das Signal gibt der FTDI aus und das zeigt an ob der FTDI Daten aufnehmen kann oder nicht. Wenn also WR# low ist und TXE# high, dann nimmt der FTDI keine Daten an. Ja vom Prinzip her machst du alles Richtig. Ich vermute den Fehler eher auf der FPGA Seite, also dass du da mehr in den FIFO schreibst als du schreiben möchtest oder so.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.