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
Hallo Andre! Ich hätte Interesse an deinem Programm. Kannst Du mir es irgendwie schicken?
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!
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
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!
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
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)"
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.