Forum: FPGA, VHDL & Co. FT2232H JTAG clonen?


von Gustl B. (-gb-)


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.

: Bearbeitet durch User
von Strubi (Gast)


Lesenswert?

Moin,

es reicht ansich, dem FTDI die vid:pid des ML605 zu geben, dann tun die 
gängigen Tools bereits.

von Christian R. (supachris)


Lesenswert?

Bei den Digilent Programmern muss man den EEPROM Inhalt mit klonen, dann 
klappts.

von Gustl B. (-gb-)


Lesenswert?

Juhu! Vielen Dank!

von Edward C. (teddy)


Lesenswert?

Christian R. schrieb:
> Bei den Digilent Programmern muss man den EEPROM Inhalt mit
> klonen, dann
> klappts.

Um genau zu sein, die "User Area" auch. Dazu muss mann ein bissl 
programieren. Das Tolle ist: Der zweite Port is frei definierbar (im 
Rahmen des Moeglichen) ;)

: Bearbeitet durch User
von berndl (Gast)


Lesenswert?


von Gustl B. (-gb-)


Lesenswert?

Ok, Danke. Bin aber noch am gucken ob ich überhaupt was mache, wenn 
wollte ich natürlich direkt Quartus/Vivado verwenden um das FPGA zu 
konfigurieren. Diese ganzen aktuellen FPGAs sind irgendwie nicht sehr 
bastlerfreundlich bis auf den MAX10. Ein Artix wird wohl sogar bei 4 
lagiger Platine anspruchsvoll.

von Lars R. (lrs)


Lesenswert?

@Gustl, Frage aus Interesse: Warum wolltest Du etwas machen in 
Anbetracht existierender Boards und was schwebte Dir vor?

von Gustl B. (-gb-)


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.

von Gustl B. (-gb-)


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 
...

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Wie ist das eigentlich mit diesem Prog_B Pin? Das normale JTAG hat ja 
nur 4 Pins + GND und V+ aber hier an einem Trenz Modul wird auch noch 
ein Prog_B bedient. Sprich wenn ich den FT2232H nur JTAG machen lasse 
funktioniert das nicht.

von Christian R. (supachris)


Lesenswert?

Prog_b dient dazu das FPGA neu booten zu lassen und zwar im per Mode 
Pins eingestellten Boot Mode. Ist quasi Kaltstart.
JTAG geht aber immer und unabhängig davon, wenn nicht durch die Fuse das 
JTAG komplett lahmgelegt wurde.

von Gustl B. (-gb-)


Angehängte Dateien:

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?

: Bearbeitet durch User
von Gustl B. (-gb-)


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.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

sind die bidirektional?

sonst I/O Richtung beachten!

Namaste

von Gustl B. (-gb-)


Lesenswert?

Also der NVT2003 ist bidirektional. Vielleicht hätte ich lieber einen 
ADG3308 verbauen sollen ...

von Frank K. (fchk)


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

von Gustl B. (-gb-)


Lesenswert?

Ja, OK, aber bidirektional sollte doch trotzdem funktionieren?

von Frank K. (fchk)


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

von Gustl B. (-gb-)


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.

von Duke Scarring (Gast)


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

von Gustl B. (-gb-)


Lesenswert?

Danke.

So, jetzt bekomme ich TCK und TMS vom FTDI zum FPGA, TDO bekomme ich vom 
FPGA an den FTDI, aber TDI sehe ich nur auf der FTDI Seite vom NVT 
Pegelwandler und nicht auf der FPGA Seite. Irgendwie seltsam und ich bin 
auch ratlos wie ich das debuggen kann.

von Gustl B. (-gb-)


Lesenswert?

So, funktioniert. Hätte auch schon von Anfang an funktioniert. Ein 
Beinchen vom NVT2003 war minimal nach oben gebogen und hatte keinen 
Kontakt.

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.