Forum: FPGA, VHDL & Co. FT2232H Synchronous FIFO Mode


von T. F. (tf2206)


Lesenswert?

Hallo zusammen,

benutze ein FT2232H um Daten von einem FPGA an den PC zu übermitteln. 
Ich hab den FT2232H in den FT245 Synchronous FIFO mode gesetzt (die 
60MHz sind "freigeschaltet"). Wenn ich jetzt mit dem Oszi die beiden 
Ausgänge TXE und RXF anschaue sind allerdings beide permanent auf high.

Hab beim einstellen des BitMode mit dem Befehl FT_Purge den RX-FIFO und 
den TX-FIFO gelöscht.
Ansonsten hab ich mich an das Beispiel, welches in dem User-Guide 
gegeben ist gehalten.

Meines erachtens müsste TXE auf low gehen damit ich Daten in den FIFO 
des FT2232H schreiben kann.
Der Zustand von RXF müsste korrekt sein, weil keine Daten in dem FIFO 
sind.

Hat jemand von euch schonmal das Problem gehabt oder weiß jemand 
zufällig woran es liegen könnte, dass das TXE Signal nicht auf low geht?

Vielen Dank schonmal für eure Tips

TF

von Johann (Gast)


Lesenswert?

Ich habe das damals so gelöst:

S_READ_FIFO_DATA <= FIFO_IS_EMPTY nor FT2232H_TXE;
READ_FIFO_DATA <= S_READ_FIFO_DATA ;


process(FT2232H_CLK)
begin

if(FT2232H_CLK'event and FT2232H_CLK='1')then
   if(SYNC_USB_RESET = '1') then
      FT2232H_WR <= '1';
   elsif(S_READ_FIFO_DATA = '1') then
      FT2232H_WR <= '0';
   else
      FT2232H_WR <= '1';
   end if;
end if;
end process;

von Johann (Gast)


Lesenswert?

Man muss mit FTPROG auf syn FIFO umschalten und man benötigt einen 
externen EEPROM für den sync FIFO Mode

Zudem muss man noch in der PC etwas umstellen damit der sync FIFO 
funktioniert hierzu müste ich allerdings auch noch mal nachschauen.

von T. F. (tf2206)


Angehängte Dateien:

Lesenswert?

Morgen,

hab die Einsellungen mit dem FT-Prog gemäß dem angehängten Bild gemacht. 
Wenn man die nicht macht, bekommt man laut Datenblatt auch nicht den 
Sync Mode...

Hab mir eine FSM gebaut die jenachdem welchen Zustand TXE und RXF haben 
die Zustände wechselt...

Grüße TF

von Johann (Gast)


Lesenswert?

Bitte die Datenblätte genau lesen:

Wie bereits oben beschrieben reicht es nicht nur mit dem FT_Prog oder 
MProg die Einstellung vorzunehmen, sonden man muss auch noch eine PC 
Sotfware schreiben un dort einige Einstellungen vornehemen:

Es gibt in der FTDI DLL die Funktion Set_Bit_Mode. Diese habe ich zuerst 
mit dem Parameter "Reset Bit Mode" ausgeführt als Bitmaske verwende ich 
immer 255.

Wenn kein Fehler aufgetreten ist dann wird die gleiche Funktion mit dem 
Parameter "Single Channel 245 Synchronous FIFO" ausgeführt.

Anschließend rufe ich die Funktion Set_Flow_Control mit dem Parameter 
"RTS-CTS" auf.

Dies muss eingeschaltet werden, damit keine Daten verloren gehen. So 
stand es zumindestens mal im Datenblatt.

Danach hat es bei mir funktioniert.

von T. F. (tf2206)


Lesenswert?

Morgen,

hab ja ein C++ Code geschrieben wo ich über FT_SetBitMode, 
FT_SetLatencyTimer, FT_SetUSBParameters, FT_SetFlowControl die 
entsprechenden Parameter setze. Anschließend lösche ich den RX und TX 
Puffer über FT_Purge.

Mein Problem ist nur wenn ich den Synchronous Mode setze und mein FPGA 
unkonfiguriert ist sehe ich im Abstand von der eingestellten LatencyTime 
wie mein TXE für 150ns auf High geht und anschließend auf Low geht.
Hab ich allerdings meinen FPGA mit meiner FSM konfiguriert dann geht der 
TXE auf dauer high.
Im moment frage ich die beiden Signale (RXF und TXE) über eine FSM mit 3 
Zuständen (idle, RX und TX) ab.

von Cihan Kalayci (Gast)


Lesenswert?

Ich benutze selber einen UM245R mit dem FT245R Chip.

Ich persönlich habe nur ein paar Einstellungen unter FTProg vorgenommen, 
ähnlich wie T.F. es auch gemacht hat. Bei mir hat es auch dann sofort 
funktioniert.

Allerdings hatte ich auch eine FSM programmiert und hatte andauernd 
undefinierte Zustände in der FSM. Irgendwann ist er einfach 
rausgesprungen, obwohl dies unmöglich war. Dann habe ich die Signale TXE 
und RXF vorerst einsynchronisiert und die Probleme waren dann auch 
gelöst.

Benutze ihn schon seit einiger Zeit so und läuft einwandfrei.

Gruß Cihan

von Johann (Gast)


Lesenswert?

Hast Du auch die richtigen Ports auf Eingang gestellt? Hast Du die 
richtigen Spannungen an die Bänke angeschlossen?

Hast Du auch einen externen EEPROM für die FT2232H verwendet?

von Michael (Gast)


Lesenswert?

Hatte gleiches Problem.
lag am SIWU-Pin, der ist low-aktiv (wenn PWREN# high, was bei mir fest 
ist), sthet ein wenig verwirrend im Datenblatt.
Auf high gesetzt und ging.

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.