Forum: FPGA, VHDL & Co. Spartan 3 über JTAG mit FTDI FT2232C programmieren


von Markus H. (mars)


Lesenswert?

Hallo!

Ich versuche derzeit einen Spartan 3 mit davorgeschaltetem 
Konfigurations-PROM über JTAG zu konfigurieren. Da das Konfigurieren 
über USB möglich sein soll, verwende ich einen FTDI FT2232C, der das 
ansteuern der JTAG Leitungen übernimmt. Ich benutze die von FTDI zur 
Verfügung gestellte JTAG-Bibliothek um eine zuvor generiertes XSVF-File 
zum FPGA zu schreiben.
Der Prom lässt sich problemlos konfigurieren, nur beim FPGA funktioniert 
es nicht. Im Moment bin ich mit meinem Latein am Ende, da ich vom FPGA 
nur klappt/klappt nicht bekomme und auch so nur die Daten runterschicke, 
die das vom Xilinx-Programmer generierte XSVF-File beinhaltet.
Über eine Antwort würde ich mich freuen.

lg

von Falk (Gast)


Lesenswert?

@Markus Hofinger

>Ich versuche derzeit einen Spartan 3 mit davorgeschaltetem
>Konfigurations-PROM über JTAG zu konfigurieren. Da das Konfigurieren

Setzte mal die Mode pins auf Slave serial oder so. Aber auf keinen Fall 
auf Master serial!

MFG
Falk



von Markus H. (mars)


Lesenswert?

Hallo Falk!

Danke für deinen Antwort. Werde ich gleich testen.
Was ich vorher noch vergessen habe: Auf dem Board befindet sich auch ein 
Anschluß für ein Xilinx-JTAG-Programmierkabel. Über Impact bzw den 
XSVF-Player von Xilinx lassen sich sowohl PROM als auch FPGA problemlos 
programmieren.

lg

von Martin G. (martin-g)


Lesenswert?

Hi!

Ich arbeite gerade mit einem Kollegen an dem selben Problem.
Ein FTDI FT2232C steuert über den MPSSE-Mode (unter Verwendung der FTDI 
JTAG Lib) den FPGA PROM (Xilinx XCF02S) und den Xilinx Spartan3 400 an.
Der Prom lässt über das erstellte Programm sich problemlos 
programmieren, der FPGA nicht.
Über Impect und den Xilinx-Programmer geht auch der FPGA.
Wir haben es auch bereits mit einer JTAG Kette ohne PROM versucht, 
leider ohne Erfolg.

Den Modus auf JTAG umzustellen ist leider keine Lösung für uns, da dann 
der PROM den FPGA nicht mehr programmieren kann.

Mein Tip ist ja ein Bug in der FTDI JTAG Lib.
Daher versuchen wir gerade den xc3prog 
(http://sourceforge.net/projects/xc3sprog/) unter Linux zum Laufen zu 
bringen. Falls dass geht sollte sich die MPSSE Ansteuerung leicht auf 
Windows protieren lassen.

MfG
Martin

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

Hier der Thread Firmware Updates für FPGA
Beitrag "Firmware Updates für FPGA"

Hint.1)
http://www.mikrocontroller.net/attachment/20569/SCANSTA476.pdf
Der SCANSTA476.pdf ist der Schlüssel für das JTAG Protokoll.

Wichtig bei dem Protokoll-Anwefen ist das bei TMS = HIGH
ein z.B minimal 8 mal Dummy Clock erfolg.
Damit shiftet der die Register erst frei.
Und geht so in die Reset-Grundstellung.
Halt wie bei PIC 16F8477A da ist auch so eine
dummy Clock Krucks drin.

Somit kan man z.B als erstes die 32Bit ID lesen.
Wen die ID ok ist, ist das schon der rechte Weg.
Berichtet mal ob das geklappt hat.
Bei Bedarf kan ich noch den C-Code raussuchen.
-----------------------------------------------------------
Hint.2)
http://www.mikrocontroller.net/attachment/20584/xapp058.pdf
http://www.mikrocontroller.net/attachment/20585/xapp694.pdf
-----------------------------------------------------------
Firmware Updates für FPGA
--------------------------------------
Anlage das JTAG Protokoll. mit Pegeln

Ich habe für JTAG Interface ein Protokoll
für PC oder uC geschrieben.
Mit SCK TMS DATA bzw (TRST)kan man das FPGA
über Command, DATA z.B Bitseriell steuern.
(shift Bits )
Bzw. ein Design in den FPGA up/downladen.
ID. lesen z.B 32Bit 101001.....0101 .
Reset Command machen.Und externe HW TestBench ect.
Der Code dafür ist aber immer als Flussdia. dargestellt.
Und umständlich komplex dargestellt.  IEE 1149.1 ????
CATURE DATA Reg,UPDATE DATA Reg. EXIT DATA Reg.
Wichtig ist das bevor der letzte CLOCK-Bit mit Data-Bit gesendet wird
das TMS-bit auf High angelegt werden muss.
if (i % (8-1) == 0 )

 TMS.bit = High;

Sonst verhaspelt sich die JTAG-State-Maschine.
Zum ersten Start mus man auch noch min z.B 8 dummy
Clocks anlegen.
Sonst Sychronisiert sich das nicht sicher.
TMS&DATA =LOW => Grundstellung.
Danch TMS = HIGH .

Der Befehlssatz ist bis z.B (6) bis 8-Bit breit,gefolgt von DATA usw.


Geht auch für ispPAC30 Reprogrammable Analog-IC.
So kan das Design Füttern u.Fernwarten.
Auf dem PC ist noch ein Prog. das den 011101 BitStream in
HEX 0x0FC,0x03,0xFE wandelt. Zum Code ablegen in uC.
So kan man die Fuses besser lesen, bzw Design CRC fahren.
Wie bei EPROM Optimizer/Vers. Kontrolle ect.
Gruss, Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

http://direct.xilinx.com/bvdocs/appnotes/xapp069.pdf

Den FTDI FT2232C im Bit-Bang Mode ????.
Würde ich erst mal mit der LPT das JTAG Protokoll machen.
Wen man die Chip-ID richtig lesen kan, ist das schon der
richtige Weg. Wichtig bei dem Protokoll-Anwefen ist das bei TMS = HIGH
ein z.B minimal 8 mal Dummy Clock erfolg.
Damit shiftet der die Register erst frei. Und geht so in die
Reset-Grundstellung.
Ich habe da aus Erfahrung so komische Effekte gehabt.
Wenn ich den Dummy-Clock nicht gemacht habe.
Gruss,Holger.


von Martin G. (martin-g)


Lesenswert?

Hi Holger!

Wie ich bereits in meinem Beitrag erklärt habe, funktioniert der JTAG 
über den FTDI ja grundsätzlich.
Der Prom kann programmiert werden und auch die ID des FPGA lässt sich 
auslesen.

Dass problem scheint nur dass der Xilinx die Daten nicht korrekt 
übernimmt.

Das Programm für den FTDI nimmt eine XSVF Datei auf und setzt diese mit 
hilfe der FTDT-JTAG Lib um.
Das SVF-File wurde vorher immer mit XSVF Player v5.01b von Xilinx mit 
dem parallelen JTAG Kabel getestet. Dass funktioniert immer.

MfG
Martin


von Martin G. (martin-g)


Lesenswert?

Grüss euch!

Kurz die Zusammenfassung vom Test auf Linux mit dem xc3prog:
Dieser kann sowohl den Prom wie auch den FPGA programmieren.
Es wurde der Changeset 5 aus dem SVN Repository zusammen mit FTDILIB-0.7 
und Libusb-0.1.8 getestet. Betriebsystem war ein Gentoo 2006.1.

Ich gehe daher von einem Kompatibilitätsproblem in Zusammenhang mit dem 
Xilinx Spartan 3 in der FTDI JTAG Lib aus da auf den ersten Blick der 
xc3prog nichts wirklich anders macht.
Dieser verwendet den MPSSE Mode und ist unerwartet schnell, schneller 
als unser Programm mit der JTAGLIB.

Jetzt heisst es das auf Windows portieren...
Mal sehen ob Zeit bleibt das Problem mit der JTAGLIB und dem Spartan 
genauer zu analysieren sodass sich ein Workaround mit der JTAGLIB machen 
lässt, oder ein Bugreport an FTDI möglich ist.

MfG
Martin

von Uwe Bonnes (Gast)


Lesenswert?

Hallo,

ich habe hier ein eigenes Spartan 3 Board mit FT2232. Mittels (eigenem ) 
xc3progs auf dem ersten FT2232 Kanal programmierbar. Ueber den ersten 
Kanal kann ich auch mittels SPI auf Register im FPGA zugreifen. Ueber 
den zweiten Kanal kann ich im FIFO Mode Daten mit dem FPGA austauschen. 
Dazu noch Spannungsversorgung von USB Bus. Erweisst sich als recht 
praktisch.

PS: xc3sprog braucht nur ein BIT File

@Martin:
LIBUSB gibt es auch fuer Windows

von HB (Gast)


Lesenswert?

Hallo,

mich würde mal intressieren, ob man eine XSVF Datei direkt nehmen kann 
und z.B. bei der FTDI JTAG Libary direkt etwa mit JTAG_ReadWrite() 
Funktion auf die Chain geben???? Im einfachsten Fall die Device ID 
auszulesen sind das ja keine 100Byte an Kommandos...

Nehmen wir mal an, ich hab ne Kette mit Platform Prom und FPGA drin: und 
ich will von einem der Devices die ID auslesen... kann ich dann einfach 
in Impact diese Aktion durchführen, nur diese XSVF Datei aufzeichnen 
anstatt in echt? Und diese XSVF Datei dann "einfach" ohne Änderungen mit 
der JTAG lib übertragen???

Viele Grüße
HB

von Martin G. (martin-g)


Lesenswert?

Hi!

Wennst das XSCF nimmst und umsetzt gehst dass mit der FTDI JTAG LIB 
soweit.
Des Prom konnten wir damit auf anhieb programmieren.
ID auslesen etc beim FPGA ging auch noch, aber den FPGA programmieren 
geht nicht mehr! Der Grund dafür ist mir nicht klar...

MfG
Martin

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Martin Gschwandtner wrote:
> Des Prom konnten wir damit auf anhieb programmieren.


Mit welcher Software kann man denn das Prom programmieren? Ich habe auf 
der FTDI Seite nur ein kleines Delphiprogramm gefunden um paar bytes hin 
und her zuschieben (JTAG Scanning Example) .

Gibt es da noch was? Wenn ja wo?

Gruß

Andreas


von CM (Gast)


Lesenswert?

Hallo,

Wir sitzen hier gerade vor einem FPGA-Board mit einem FTDI 2232D und 
wollte es über xc3sprog programmieren und habe folgende Probleme:

1: Wenn wir USBLIB (unter Windwos) installieren verlienen wir den 
Zugriff auf den B Kanal des FTDI, welchen wir als virtuellen COM-Port im 
FIFO-Modus konfiguriert haben. Dafür klappt dann das aufspielen des 
Bitstreams auf den einen der beiden FPGAs (xc3s400a) auf dem Board.
Gibt es dafür eine Lösung, welche beinhaltet, dass wir die Einstellungen 
für Kanal B weiter nutzen können?

2: Der zweite FPGA auf dem Board ist ein xc5vl50 ,für den es in der 
Device-Liste von xc3sprogs keinen Eintrag gibt. Wie kann man die List 
selber erweitern? Oder was bedeutet ID_CMD?

Ciao,
Christian und Marc

von ich (Gast)


Lesenswert?

3 Jahre später... naja. xc3sprog... Schon der Name deutet an dass man 
damit Spartan3 FPGAs konfigurieren kann und nicht Virtex 5.
Das FTDI Datenblatt sagt, dass man auf Kanal A dem MPSSE Modus betreiben 
kann und Kanal B anderweitig nutzen kann. Müsste also prinzipiell gehen.

von Uwe Bonnes (Gast)


Lesenswert?

@CM:

Die Virtex ID Codes sind in SV Rev 405 eingecheckt.
Mit
svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog
auschecken, testen und Rueckmeldung geben. Unter Linux tut
mkdir build
cd build
cmake ..
make

oder zum Bauen mit mingw unter Linux
cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake ..
make
zum Bauen, cmake sollte eigentlich auch unter Windows spielen, aber mit 
MS vc++ wird da noch nacharbeit gefragt sein und die aAbhaengigkeiten 
von linusb/libftdi sind auch nicht ohen. Gggf mail direkt an mich, dann 
versuch ich unter Linux mit ming zu bauen und schicke das Kompilat.

Welcher libusb Driver ist installiert? Ich wuerde vermuten, dass die
Device Driver Installation im Gegensatz zur Filter Driver Installation 
den zweiten Kanal unangetastet lassen sollte. Ich probiers mal unter 
Linux aus.

Ansonsten habe ich keine V4/5/6 Hardware, so dass da intelligente 
Rueckmeldung/Fragen gefordert sind.

von Uwe Bonnes (Gast)


Lesenswert?

@ ich (Gast)
Die Programmieralgorithmen sind zwischen XCxV und XCxS sehr aehnlich. 
Aus dem Namen abzuleiten, dass XCxV nicht geht, ist gewagt. Inzwischen 
geht auch XC2X und XC95Xx, aber der Name ist historich...

Bessere Vorschlaege ?

von Duke Scarring (Gast)


Lesenswert?

Uwe Bonnes schrieb:
> Bessere Vorschlaege ?

xProg? :-)
So schnell wie die Chipbezeichnungen ändert sich der Firmenname sicher 
nicht...

Duke

von Johann (Gast)


Lesenswert?

Geht es denn inzwischen mit der FTDI Library nicht?

von Uwe Bonnes (Gast)


Lesenswert?

xProg? :-)

Wenn A/L oder sonstwer BSDL1582 File bereitstellt, kann man das auch 
umsetzten. Fuer den ATMEGA/CAN ist es schon halbherzig umgesetzt.

@ Johann (Gast)
Was ist das Problem? Was ist die Frage?

von Johann (Gast)


Lesenswert?

Ich will auf einem neuen Board den neuen FTDI-USB 2.0 High Speed Chip 
verbauen. Dieser bietet inzwischen auch die Möglichkeit den FPGA mit 
JTAG zu programmieren.

Jetzt habe ich gelesen das es früher einige Bugs mit dem FTDI und dem 
JTAG gab. Sind diese inzwischen beseitigt, so das ich den FPGA und den 
externen EEPROM mit Hilfe des FTDI Chips programmieren kann?

von Uwe Bonnes (Gast)


Lesenswert?

@Johann (Gast)

Auf dem Board was ich zur Z. bearbeite ist ein FT2232H, ein XC6SLX45 mit 
SPI Flash M25P32 und ein AT90CAN128. Alles Bausteine kann ich mit dem 
xc3sprog/javr von Sourceforge SVN erreichen.

"externen EEPROM" is SPI Flash oder was sonst?

von Iea (Gast)


Lesenswert?

Hello I need buy a cheap, Usb-Jtag programer, for the driver 
"giveio.sys", and the program, ""Alice03.c - EJTAG Debrick Utility for 
Alice routers v0.3; Heavily based on the WRT54G/GS EJTAG Debrick Utility 
v4.5/v4.8 and on Telsey MAGIC EJTAG Debrick Utility v0.9"", for 
programmer , a Router.
This FTDI FT2232C  programmer, run for this utility?; Or what usb-jtag 
programmer, do you think run for this utility??; thanks, Excuseme for my 
bad English!.

von Christian R. (supachris)


Lesenswert?

The giveio.sys driver only talks to real serial oder parallel ports (COM 
or LPT) with real system IO adresses like 0x378 for LPT. There is no way 
to talk to an USB device such as the FT2232.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

You can talk to the FT2232 with libFTD2XX or libftdi/libusb, on Linux, 
Windows and some other systems...

von Andreas Weschenfelder (Gast)


Lesenswert?

Here's a xsvf player / boundary scan flasher for a ft2232 using the 
mpsse mode:

http://wesche.we.ohost.de/Homepage/Version_3/index.php?section=PC_Delphi_FT2232_JTAG.html

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.