Forum: Mikrocontroller und Digitale Elektronik FT2232H und SN74V3690


von Stefan B. (Gast)


Lesenswert?

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?

von Gustl B. (gustl_b)


Lesenswert?

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.

von Stefan B. (Gast)


Lesenswert?

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.

von Gustl B. (gustl_b)


Lesenswert?

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.

von Stefan B. (Gast)


Lesenswert?

Ja werde ich gleich machen. Zumindest mit den drei Bausteinen.

von Stefan B. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Stefan B. (Gast)


Lesenswert?

Noch ein Nachtrag. MRS und PRS werden auch vom FPGA beim Start einmal 
zurückgesetzt.

von Frank K. (Gast)


Lesenswert?

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?

von Gustl B. (-gb-)


Lesenswert?

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.

von Stefan B. (Gast)


Lesenswert?

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.

von Gustl B. (gustl_b)


Lesenswert?

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
Noch kein Account? Hier anmelden.