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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht lesenswert
Bei den Digilent Programmern muss man den EEPROM Inhalt mit klonen, dann 
klappts.

von Gustl B. (-gb-)


Bewertung
1 lesenswert
nicht lesenswert
Juhu! Vielen Dank!

von Edward C. (teddy)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht 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)


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

von Gustl B. (-gb-)


Bewertung
1 lesenswert
nicht 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-)


Bewertung
1 lesenswert
nicht 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-)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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-)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
sind die bidirektional?

sonst I/O Richtung beachten!

Namaste

von Gustl B. (-gb-)


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

von Frank K. (fchk)


Bewertung
1 lesenswert
nicht 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-)


Bewertung
0 lesenswert
nicht lesenswert
Ja, OK, aber bidirektional sollte doch trotzdem funktionieren?

von Frank K. (fchk)


Bewertung
1 lesenswert
nicht 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-)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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-)


Bewertung
0 lesenswert
nicht 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-)


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.