JTAG: CPLD x FPGA

Jan Waclawek wek@evona.sk
Čtvrtek Červen 1 14:20:04 CEST 2006


Marek Pavlu wrote:
> SVF/XSVF vypada zajimave, ale nemam potuchy o slozitosti tohoto formatu a
> pripadne nutne slozitosti prehravace těchto dat. Zkusim něco pohledat...

Nojo, asi by som nemal pisat take dlhe maily...
u xilinxa xapp058 a su tam aj zdrojaky

wek


PS: SVF vyzera nejako takto (erase XC95216, trocha som to skratil):

// Xilinx SVF File generated by JTAGProgrammer
TRST OFF;
ENDIR IDLE;
ENDDR IDLE;
STATE IDLE;
// Loading device '16010528(Device2)' with 'bypass' instruction.
SIR 16 TDI (ffff) SMASK (ffff) TDO (0101) MASK (ffff) ;
// Loading device '16010528(Device2)' with 'idcode' instruction.
SIR 16 TDI (fffe) SMASK (ffff) ;
SDR 33 TDI (00ffffffff) SMASK (01ffffffff) TDO (0009512093) MASK 
(000fffffff) ;
// Loading device '16010528(Device2)' with 'bypass' instruction.
SIR 16 TDI (ffff) SMASK (ffff) ;
// Loading device '16010528(Device2)' with 'isp enable' instruction.
SIR 16 TDI (ffe8) SMASK (ffff) ;
SDR 17 TDI (003fff) SMASK (01ffff) ;
// Loading device '16010528(Device2)' with 'erase' instruction.
SIR 16 TDI (ffec) SMASK (ffff) ;
SDR 28 TDI (06a957fe) SMASK (0fffffff) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (003ffffe) SMASK (0fffffff) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (00bffffe) SMASK (0fffffff) TDO (00000003) MASK (00000003) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (013ffffe) SMASK (0fffffff) TDO (00000003) MASK (00000003) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (01bffffe) SMASK (0fffffff) TDO (00000003) MASK (00000003) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (05fffffe) SMASK (0fffffff) TDO (00000003) MASK (00000003) ;
RUNTEST 1300000 TCK;
SDR 28 TDI (05fffffe) SMASK (0fffffff) TDO (00000003) MASK (00000003) ;
// Loading device '16010528(Device2)' with 'isp exit' instruction.
SIR 16 TDI (fff0) SMASK (ffff) ;
RUNTEST 100 TCK;
// Loading device '16010528(Device2)' with 'bypass' instruction.
SIR 16 TDI (ffff) SMASK (ffff) ;

SIR je shift do instrukcneho registra, SDR je shift do datoveho 
registra, TDI su data co idu do svabu, smask je preto aby sa vedelo 
kolko tych dat musi ist, TDO je ocakavana hodnota po vymaskovani maskou 
MASK, RUNTEST je delay.

XSVF je predovsetkym troska primitivnejsie, a pouziva akesi 
"odpamatanie" si niektorych "premennych", co sa do nemoty opakuju (napr. 
dlzka shiftu) v ascii tvare to vyzera takto:

XREPEAT 0x20
XSTATE 0x01
XRUNTEST 0x00000000
XSIR 0x10 0xffff
XSIR 0x10 0xfffe
XSDRSIZE 0x00000021
XTDOMASK 0x000fffffff
XSDRTDO 0x00ffffffff 0x0009512093
XSIR 0x10 0xffff
XSIR 0x10 0xffe8
XSDRSIZE 0x00000011
XTDOMASK 0x000000
XSDRTDO 0x003fff 0x000000
XSIR 0x10 0xffec
XRUNTEST 0x0013D620
XSDRSIZE 0x0000001C
XTDOMASK 0x00000000
XSDRTDO 0x06a957fe 0x00000000
XSDRTDO 0x003ffffe 0x00000000
XTDOMASK 0x00000003
XSDRTDO 0x00bffffe 0x00000003
XSDRTDO 0x013ffffe 0x00000003
XSDRTDO 0x01bffffe 0x00000003
XSDRTDO 0x05fffffe 0x00000003
XSDRTDO 0x05fffffe 0x00000003
XRUNTEST 0x00000064
XSIR 0x10 0xfff0
XRUNTEST 0x00000000
XSIR 0x10 0xffff
XCOMPLETE

no a samotny binar xsvf je potom takyto (toto je uz komplet aj vratane 
hore vynechaneho useku):
0720120104000000000210FFFF0210FFFE080000002101000FFFFFFF0900FFFFFFFF00095120930210FFFF0210FFE808000000110100000009003FFF0000000210FFEC040013D620080000001C01000000000906A957FE0000000009003FFFFE0000000001000000030900BFFFFE0000000309013FFFFE000000030901BFFFFE0000000309023FFFFE000000030902BFFFFE0000000309033FFFFE000000030903BFFFFE0000000309043FFFFE000000030904BFFFFE0000000309053FFFFE000000030905BFFFFE0000000309007FFFFE000000030900FFFFFE0000000309017FFFFE000000030901FFFFFE0000000309027FFFFE000000030902FFFFFE0000000309037FFFFE000000030903FFFFFE0000000309047FFFFE000000030904FFFFFE0000000309057FFFFE000000030905FFFFFE000000030905FFFFFE0000000304000000640210FFF004000000000210FFFF00




Další informace o konferenci Hw-list