Forum: FPGA, VHDL & Co. JTAG-Player mit ATMEGA644 seriell


von Andre S. (lighthammer)


Lesenswert?

Hallo,
nachdem ich nun auch ein neues Notebook ohne parallel Port habe, war ich 
auf der Suche nach einer günstigen Möglichkeit Xilinx 95xx CPLDs zu 
programmieren.
Probiert habe ich den USB zu Parallel-Umsetzer von folgender Seite:
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/
zusammen mit Impact, hat aber nicht funktioniert. Liegt wohl auch eine 
meinem 2-Kern Prozessor.
Ich bin noch auf eine andere Seite gestossen, mit einem Linux Programm, 
was ich nach einigem Probieren auch kompilieren konnte, aber ich habe 
den notwendigen Controller nicht gefunden.
Also habe ich das Rad neu erfunden, und einen JTAG-Player mit einem 
ATMEGA 644 entworfen, da ich für diesen den Atmel USB-Programmer habe 
(Reichelt 40,-).
Die Daten werden von einem (selbst geschriebenem) Windows Programm 
(.Net) über einen USB2Serial-Adapter an den MEGA644 übertragen und in 
die JTAG Signale umgesetzt. Die Daten müssen im XSVF Format vorliegen, 
dass Impact erzeugen kann.
Der Prototyp läuft mit einem ATMEGA32, aber nur mit 5V, daher habe ich 
den MEGA644 vorgesehen, der bei 3,3V noch mit 11,0592MHz laufen sollte. 
Die Programmierung eines XC9572XL mit 24kB Daten dauert ca. 22sec.

Ach ja, eigentlich war das Projekt ein Programmer für serielle EEPROMS 
der Typen 24C(x)xx und 93Cxx.
Den JTAG-Player habe ich dann dazugeschustert.
Also, serielle EEPROMS kann das Teil auch programmieren.

Besteht Interesse an der Veröffentlichung? Wobei hierfür noch das 
Einverständnis von Xilinx fehlt, da der Player auf der XAPP058 basiert 
bzw. den dazu aufgeführten Sourcen.
Reicht die Auswahl zwischen 5V und 3,3V?

Frohe Weihnachten,
Andre

von tom (Gast)


Lesenswert?

An OpenSource-Projekten besteht immer interesse ;-)

von Neuer (Gast)


Lesenswert?

Hallo Andre!

Ich hätte Interesse an deinem Programm. Kannst Du mir es irgendwie 
schicken?

von Joachim W. (bryan)


Lesenswert?

Hallo,

ich stehe vor dem selben Problem. Neues Notebook und keine Möglichkeit 
CPLDs zu flashen. Wenn du den Code online stellen könntest wäre ich dir 
sehr dankbar, müsste dann das Rad nicht neu erfinden...
Danke!

von guido (Gast)


Lesenswert?

Ihr könnt auch mal hier schauen (für Linux),
funktioniert sehr gut:

http://www.cip.physik.uni-muenchen.de/~wwieser/elec/pdev/usb-atmelprg/

guido

von Andreas W. (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite


Lesenswert?

Geil, könnt ich gut gebrauchen!

von Andre (Gast)


Lesenswert?

Hallo Andre,

würde auch gerne in Empfang nehmen und testen. 150 Euro für Xilinx 
original USB->JTAG adapter zu zahlen haben wir alle keine Lust!

Danke im Voraus!

von Andre S. (lighthammer)


Angehängte Dateien:

Lesenswert?

Hallo,

sory, dass ich mich noch nicht gemeldet habe, hatte viel zu tun.

Ein Problem habe ich noch: Xilinx hat sich auf meine Mail bezglich der 
Nutzung des Codes aus der XAPP0568 nicht gemeldet. D.h. direkt 
öffentlich stellen kann ich den Code des Controllers (noch) nicht. Die 
Windows Software habe ich selber geschrieben, da besteht soweit kein 
Problem.

Ich will in den nächsten Tagen einige Platinen der endgültigen Version 
fertigen lassen (bei mir im Betrieb), ich hoffe bei der Änderung 
gegenüber dem Prototyp keine Fehler eingebaut zu haben. Dies dauert 
allerdings noch etwas, da ich den Controller auch noch bestellen muss. 
Wenn es läuft, kann ich die überzähligen Platinen, evtl. mit 
eingelötetem Controller, gegen Kostenerstattung weitergeben. Dies 
allerdings nur mit geschütztem Code im Controller, solange ich von 
Xilinx keine Genehmigung zur Offenlegung habe.

Den Schaltplan und die Platine habe ich mal angehängt.

Gruss
Andre

von Holger (Gast)


Lesenswert?

Ich hoffe das dein Projekt klappt.
Ich habe grosses Interesse an einem self-made JTAG-Brenner.
Habe für LATTICE ispPAC-30(Prog-OP-Analog-CHIP) das JTAG Protokoll
gemacht.
Lese mal den Thread da ganz durch.
Ich poste später noch das JATAG-Protokoll dazu.
So kan man damit gleich den *.JED File in das XC9536.. CPLD brennen.


Lese mal den Thread da ganz durch.
Beitrag "Kleines Programm zum CPLD flashen gesucht (Xilinx)"

von Andre S. (lighthammer)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe die Platine nunmehr fertig, und sie funktioniert.
Im Dateianhang habe ich einige Bilder, ein etwas geändertes Layout, am 
Schaltplan hat sich nur geringfügig was getan, und das Windows Programm.
Notwendig ist das .Net 2.0 und ein kompatibler USB2Seriell-Wandler.
Von meinen 3 Stück funktioniert einer nicht. Liegt wahrscheinlich am 
Treiber, der die Funktion des Overlay-In-/Output nicht richtig 
unterstützt.
Hardware-Handshake muss unterstützt werden, da ich die RS232-Übertragung 
ohne Handshake rausgenommen habe.
An einem Kommandozeilen-Programm nur für den JTAG Part bin ich noch am 
arbeiten, dies muss ich erst auf Overlay Übertragung umstricken.
Der Source-Code für das PC-Programm ist auch dabei. Ein Programmierer 
wird die Hände über dem Kopf zusammen schlagen, da es kaum kommentiert 
ist, und der Programmierstil.... naja, soweit vorhanden, eher in 
Richtung C und nicht C++ geht. Ist auch noch ne Menge Code vom 
Ausprobieren drin. Ist halt mein erstes Programm für Windows, erfüllt 
aber soweit seinen Zweck.

Xilinx reagiert leider nicht, so dass ich die Sourcen für den Controller 
nicht veröffentlichen kann. Was tun:
Ich habe ebenfalls eine Teileliste in den Anhhang gepackt. Wer mir die 
Teile schickt, dem packe ich sie auf eine Platine und programmiere den 
Controller. Den Rest könnt ihr dann selber bestücken. Adresse bitte per 
Mail anfragen.

Insgesamt muss man für die Platine (ohne Textool-Sockel und Porto) ca. 
16 Eur investieren.

Gruss
Andre

von tim (Gast)


Lesenswert?

Mal ne Frage, kann man mit deinem Player eigentlich auch für andere 
JTAG-DInge benutzen? Ich denke da so an ARM programmieren und debuggen? 
Ist dein Player mit dem usbprog vergleichbar?

von Andre S. (lighthammer)


Lesenswert?

Hallo Tim,

für ARM ist der Player nicht gedacht, und ich kann mir nicht vorstellen, 
das es funktioniert. Das debuggen geht auf keinen Fall.

Mit usbprog kann mein Player nicht verglichen werden. Er ist halt nur 
ein Player in erster Linie für Xilinx CPLDs gedacht. Der usbprog kann 
weitaus mehr.

Gruss
Andre

von Holger (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Source-Code für das Xsvf drin.
------------------------------------------------------------------
Mach dir doch keine Sorgen über die Source für das Tool.
Das ist doch schon bei anderen im Einsatz.
Toll ist das wen du direkt den JTAG-File für das jeweilige Derivat 
reinproggen könntest.


Ich habe da mal in Google unter der Abteilung Source Code mit
dem Stichwort FPGMI nachgeschaut.

Hier ein Ausschnitt von der Headerdatei für das JTAG Interface.
Aus dem Anhang habe ich mir das JTAG-Protokoll mit dem TMS-TAB 
angesehen.

In Google ist noch unter "JTAG Programmer Guide".
Was wichtig am Anfang ist das der TMS auf 1 sitz und man die 
Clock-Leitung
mindestens 8 mal  ( CMD_BIT_LENGTH= 8) clockt,
damit der initiiert wird.

Das mit steigender Flanke also clock-High wird das DATA Bit an TDI 
übernommen.
Mit fallender Flanke von Clock  liegt dan an TDO der Ausgang an.

Wichtig ist, das man die TMS Leitung mit dem letzten Bit mit hochzieht.


 for( i=0,i<8,i++)
 {
  if ( )
     SET DATA-TDI
  else
     CLR DATA-TDI

  if ( i == 7 ) /* CMD_BIT_LENGTH -1  */
   {
     SET TMS HIGH /* Last Bit with TMS */
   }
   CLOCK-TCLK = HIGH
   delay  ..........
   CLOCK-TCLK = LOW
 }




/* XC9500XL instructions */
#define CMD_BIT_LENGTH 8
#define DATA_LENGTH 8
#define MAX_SECTOR 108
#define SECTOR_LENGTH 216
#define JTAG_CMD_EXTEST   0x00 /* testing of off-chip circuitry and 
board level interconnections */
#define JTAG_CMD_SAMPLE   0x01 /* allows a snapshot of the normal 
operation of a component to be taken and examined */
#define JTAG_CMD_INTEST   0x02 /* allows testing of the on-chip system 
logic while the compoment is already on the board */
#define JTAG_CMD_FBLANK   0xE5 /* blank check */
#define JTAG_CMD_ISPEN    0xE8 /* activates device for In-System 
Programming */
#define JTAG_CMD_FPGM     0xEA /* programs bits at specified adresses */
#define JTAG_CMD_FPGMI    0xEB /* programs bits at an internally 
generated adress */
#define JTAG_CMD_FERASE   0xEC /* erases a sectors of programming cells 
*/
#define JTAG_CMD_FBULK    0xED /* erase several sectors of programming 
cells */
#define JTAG_CMD_FVFY     0xEE /* verifies the programming at specified 
adresses */
#define JTAG_CMD_FVFYI    0xEF /* verifies the programming at an 
internally generated adress */
#define JTAG_CMD_ISPEX    0xF0 /* transfers memory cell contents to 
internal low power configuration latches */
#define JTAG_CMD_HIGHZ    0xFC /* permits automatic placement of all 
outputs to high impedance */
#define JTAG_CMD_USERCODE 0xFD /* alows a user-programmable 
identification code to be shifted out */
#define JTAG_CMD_IDCODE   0xFE /* allows blind interrogation of the 
components assembled on the board */
#define JTAG_CMD_BYPASS   0xFF /* configures the device to bypass the 
scan registers */

#define IDCODE_XC95144XL 0x09608093
#define IDMASK           0x0FFFFFFF



Gruss Holger.

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.