FT2232H JTAG clonen?

#5061362
Lesenswert?

Hallo zusammen,

auf vielen FPGA Boards sitzt ja ein FT2232H für JTAG drauf. Jetzt möchte 
ich selber ein kleines FPGA Board basteln und dort natürlich auch gleich 
einen JTAG Adapter drauf haben der entweder von Vivado oder Quartus 
erkannt wird (je nach FPGA). Geht/genügt es, dass man die Konfiguration 
des FT2232H bei anderen FPGA Boards z. B. mit FT_PROG ausliest und dann 
auf den neuen FT2232H auf dem neuen Board flasht oder dort ins EEPROM 
schreibt?
Dass man FT2232H passend mit dem FPGA verbinden muss ist mir klar.
#5061804
Lesenswert?

Tja einfach um das auch mal gemacht zu haben, weil man etwas lernt. Und 
ich habe sogar ein Projekt an die ich viele IOs brauche, das geht zwar 
mit den Lochraster Trenz Modulen gerade noch so, die haben 84 IOs, aber 
mehr wäre besser und die Signale müssten nicht über die Pfostenstecker.
#5405888
Lesenswert?

So, jetzt bin ich gerade mitten drinnen. Mit FT_ReadEE kann ich das 
EEPROM auslesen. Aber das ist seltsam.

Ich verwende C dafür und habe ein

WORD EEPromData[256]={0};

angelegt.

Dann lese ich 256 mal
1
while(READ_ADR < 256){
2
                ftStatus = FT_ReadEE(FT2232H_ftHandle, READ_ADR, &EEPromData[READ_ADR]);
3
                if (ftStatus == FT_OK) {
4
                    printf("FT_EE_READ %i\r\n", READ_ADR);
5
                    READ_ADR = READ_ADR +1;
6
                }
7
                else {
8
                    printf("FT_EE_READ FAILED!\r\n");
9
                    printf("%i\n\r", READ_ADR);
10
                    FT_Close(FT2232H_ftHandle);
11
                    return 0;
12
                }
13
            }

und bekomme tatsächlich sinnvollen Inhalt. Aber warte, wieso 256 WORDS? 
Das EEPROM sind 2kBit, also 256Bytes, aber ein WORD sind doch 16Bits?! 
Oder ist WORD architektorabhängig und ich sollte uint16_t verwenden?

Aber egal ob ich mit WORD oder uint16_t lese, ich bekomme das gleich 
Ergebnis. Und zwar Text in dem immer P.u.n.k.t.e drinnen sind zwischen 
den Buchstaben im Hexeditor. So, als würden jeweils 16Bits für ein 
Zeichen genutzt und die oberen 8Bits wären leer.

Tja ... jedenfalls, wie schreibe ich das wieder zurück ins EEPROM? Mit 
FT_WriteEE habe ich es bereits versucht, aber wenn ich es dann wieder 
auslese sieht es kaputt aus.

Edit:
Funktioniert. Ich hätte die Compilerwarnungen nicht ignorieren sollen 
...
#5406148
Lesenswert?

Ui, das macht Mut, Danke!

Also der FT2232H hat Ausgänge mit 3,3V. Die FPGA Config Bank ist aber 
mit 1,8V versorgt. Also ... habe ich da Pegelwandler dazwischengetan wie 
im Bildchen. Die Pegelwandler sind diese hier 
https://www.nxp.com/docs/en/data-sheet/NVT2003_04_06.pdf . Passt das so?

Und wie ist das mit dem TDI und TDO, kommt das TDO vom FT2232H an das 
TDO vom FPGA oder muss das über Kreuz sein also TDI an TDO und TDO an 
TDI?
Angehängte Dateien:
#5409129
Lesenswert?

Irgendwie funktioniert das mit den Pegelwandlern nicht, wo ist mein 
Fehler? Also zwischen FT2232H und Pegelwandler sehe ich TCK, TDI und 
TMS. Zwischen FPGA und Pegelwandler sehe ich manchmal auch TCK und TMS 
und sogar Flanken bei TDO. Aber TDI und TDO werden irgendwie nicht 
pegelgewandelt ... und die anderen Signale auch nur manchmal. Seltsam 
irgendwie.
#5409194
Lesenswert?

Gustl B. schrieb:
> Irgendwie funktioniert das mit den Pegelwandlern nicht, wo ist mein
> Fehler?

Dein Fehler ist, dass Du ohne Not bidirektionale Bausteine genommen 
hast. Das kann man zwar machen, aber nur, wenn man genau weiß, was man 
da tut.

Du nimmst besser 74AVC2T245 oder 74AVC1T45 oder etwas anderes aus dieser 
Serie. Du könntest auch 74LVC?T(2)45 nehmen, aber die 24mA 
Treiberleistung brauchst Du nicht unbedingt, und im Zweifel verursachen 
die nur Störungen.

fchk
#5409215
Lesenswert?

Gustl B. schrieb:
> Ja, OK, aber bidirektional sollte doch trotzdem funktionieren?

Wenn Du die geeignete Außenbeschaltung wählst und das Datenblatt genau 
liest und auch das nicht gesagte verstehst, und wenn Du die 
Funktionsweise genau verstanden hast, dann und nur dann ja.

Die Erkennung der Datenrichtung ist recht trickreich und auch recht 
empfindlich - da reicht schon ein falscher Pullup oder Pulldown, um die 
zu stören. Daher: Wenn Du die Bidirektionalität nicht brauchst, dann 
Finger weg, wenn Du keine Probleme haben willst.

fchk
#5409221
Lesenswert?

OK, das habe ich schon verstanden. Ich habe den Stein vor allem 
verwendet weil ich den schonmal verwendet hatte. Und bidirektional finde 
ich eben nett weil man flexibel ist. Hier hängen noch weitere FPGA IOs 
am FTDI und vielleicht will man die später mal anders verwenden.

Aber der Hinweis, dass das recht empfindlich ist war gut. Habe den 
Fehler gefunden und werde ihn am Wochenende beheben.
Gast #5412078
Lesenswert?

Mit (automatischen) bidirektionalen Pegelwandler habe ich auch schon 
schlechte Erfahrungen gemacht. Wenn die Pegel und Impedanzen nicht 
richtig passen, schaltet der auch schon mal in die falsche Richtung und 
lässt dann ggf. Strom fließen...

Duke

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