Zoals sommigen van jullie ondertussen misschien wel weten ben ik m'n eigen video kaartje aan het brouwen, welke onboard onder andere een programmer heeft voor de xilinx ICs. De JTAG chain ziet er zo uit;
http://wacco.mveas.com/inc/chain.png

Nu was m'n originele plan om de programmer, welke gebaseerd is op een FT2232, te flashen met de device string van een Amontec JTAGkey programmer. Daardoor zou ik de SVF Player van Amontec kunnen gebruiken om alles te programmeren. Nu zijn SVF bestanden wel wat groot, zeker als je een 4mbit PROM in je chain hebt zitten, maar dat maakte niet veel uit. Wat wel een probleem bleek te zijn dat ik niet exact dezelfde reset connecties had als de originele programmer waardoor het tooltje niet werkt en ook niet werkend te krijgen is. :(

Verder ben ik aan de slag gegaan met openOCD maar die bleek ook weer z'n eigen set problemen te hebben, wat verder niet heel erg relevant is en ik hier uitleg.

Dus heb ik de documentatie er maar bijgepakt, en ben begonnen met het schrijven van een 'domme' XSVF parser welke XSVF bestanden gegenereerd door iMPACT inleest, en correcte commando's voor FT2232 gebaseerde JTAG programmers uitspuugt. Een groot voordeel van XSVF is dat de bestanden een stuk kleiner zijn. :)

Mijn probleem alleen is dat ik nog steeds niet weet of m'n prototype van m'n videokaart wel volledig functionele hardware heeft. Ik kan ondertussen de CPLD (een XC95144XL in TQ144 behuizing) wel programmeren, maar als ik de FPGA (een Spartan 3 s400 - PQ208) programmeer komen er geen fouten tevoorschijn, maar gebeurd er verder ook niet veel. Wanneer ik de PROM (een XCF04S - VO20) wil programmeren krijg ik flinke errors naar m'n kop. Maar het is dus flink in het duister tasten of het aan de hardware of software ligt.

Nu zijn er wel meer mensen met een Amontec JTAGkey, en hopelijk zijn er ook mensen met een bordje wat een Spartan 3 en/of XCF bevat. Omdat de XSVF Parser verder redelijk los staat van de rest van m'n project hoopte ik dat iemand wel geinteresseerd was in een XSVF parser voor hun Xilinx en Amontec hardware, en wat wilt testen. :)

De code van de parser staat hier; versie 0.2 - Let op dat deze mijn device id bevat, wil je het compilen (instructies hoe staan na de license) voor Amontec JTAGkey dan moet je regel 59 vervangen voor;
char *devID = "Amontec JTAGkey A";

Een voorgecompileerde executable staat hier; parser - Deze bevat de Amontec string, maar is gecompiled onder cygwin dus ik weet niet of je specifieke dll's nodig hebt.

Iig om het te laten werken moet je wel de D2XX drivers geinstalleerd hebben, maar deze heb je zowiezo nodig voor de Amontec programmer.

Wat ik voornamelijk dus wil weten is of het werkt voor anderen met een programmer gebaseerd op een FTDI FT2232, en dan specifiek voor Spartan 3 en XCF proms. Alvast dank & enjoy :)

Ik weet niet of je wel eens heb gekeken naar UR-jtag? Open source JTAG applicatie met daarin een SVF parser die Xilinx en Altera devices kan programmeren.

http://www.urjtag.org/

Voor de rest van je project, ik volg het al een tijdje. Erg interessant!

Ja, had ik naar gekeken. Mijn voornaamste probleem daarmee was dat het weer mega-feature-rijk was maar wederom afaik niet getest voor, well, alle devices die ik in m'n chain heb zitten. En na m'n aanvaring met de misplaatste 'intelligentie' van openOCD had ik niet zin om nog een paar dagen te verknoeien met het werkend krijgen van de volgende 'slimme' applicatie. Dus ik heb eerlijk gezegd niet zoveel tijd in UrJTAG gestoken, maar ga er zeker nog eens mee knoeien als ik meer tijd heb.

In de tussentijd wilde ik gewoon een simpele plug-n-play tool welke een XSVF bestand richting de JTAG chain knalt, en heb dus dit in elkaar geknutselt. :)

Ik heb de hele avond zitten testen en het lijkt er meer en meer op dat een column van m'n prom compleet dood is en altijd op 1 blijft hangen. Daarentegen lijkt het ook alsof de column ernaast altijd op 0 blijft hangen, maar als ik een erase doe van de prom (wat wel altijd lukt - het lijkt erop dat de prom in zo'n geval allemaal 1en terug geeft) gaat het wel goed. Dus niets is zeker. :(

De vraag blijft dus of dit een hardware of software bug is. Is er niemand met een xilinx development bordje en een Amontec (of ander FTDI-gebaseerde) programmer? ;(

Heb zelf wel een Spartan3E devboard, maar geen amontec jtag key, of jtag key tiny. Had je graag geholpen, dat van die ene kolom plat is wel erg vreemd.

Weet je 100% zeker dat je code correct? Het klinkt namelijk iets te specifiek, want een column error zou denk ik wel bij functional testing in de fabriek tevoorschijn zijn gekomen.

Implementatie van de instructie uit de flash zijn BDSL file wel correct? Het lijkt me typisch een argument fout.

Kijk even naar de Bison beschrijving van de SVF parser uit urjtag?

Die 100% zeker kan ik natuurlijk nooit garanderen, daarom vraag ik het hier juist of er anderen zijn om te testen :P

Die column error is idd erg vaag, maar het gebeurd pas nadat ik iets over de 26% van het xsvf bestand heb verwerkt. Dat doet mij denken dat er ondertussen al wel banks zijn beschreven zonder problemen en dat dan pas het probleem opduikt. Verder is de xsvf compleet gegenereerd door iMPACT dus ik denk dat het wel goed zit met wat daarin staat - als iMPACT het al niet correct kan doen, wie wel?

Ik ga vanavond nog eens de output van de ftdi bit voor bit langs de xsvf leggen in de hoop een fout te spotten maar ik heb er weinig vertrouwen in dat ik nog iets achterhaal.