03-02-2009 03:52 AM
I'm programing XCF08P PROM by using FPGA. However, after that FPGA cannot get data from PROM(altough PROM is completely programed). On the other hand, when prom is programed by JTAG with "mcs" file, FPGA gets data. Lack of which command can cause this problem?
Thanks
03-02-2009 07:11 AM
Hi there,
How do you program the PROM?
Are you playing back a SVF file (this would be the preferred way)?
Could you post your flow?
Cheers!
03-03-2009 12:57 AM
03-03-2009 12:59 AM
A bug in the web page, sorry for that:
http://www.xilinx.com/support/answers/30445.htm
03-22-2009 12:46 AM
are u using the following application note?
http://www.xilinx.com/support/documentation/application_notes/xapp975.pdf
03-23-2009 02:11 AM - edited 03-23-2009 02:12 AM
First of all sorry for late reply to subject.
Borisq, yes I'm using all information in that pdf and thanks.
Moreover, I'm using algorithms in xapp972.pdf and some different modified algirithims obtained by tracing jtag programer by logic analyzer.
However all algorithms are almost same, they just differ with a few commands. Here I give one of them which created by using xapp972.pdf below.
*************
//Loading device with 'IDCODE' instruction.
SIR 16 TDI (00fe) SMASK (ffff);
SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f5059093) MASK (0fffffff) ;
STATE RESET;
//Loading device with 'ISPEN' instruction.
SIR 16 TDI (00e8) SMASK (ffff) ;
SDR 8 TDI (03) SMASK (ff) ;// Loading device with 'XSC_DATA_BTC' instruction.
SIR 16 TDI (00f2) SMASK (ffff);
SDR 32 TDI (fffffba4) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 120 TCK;
// XAPP972: Begin Program Data Blocks Sequence
// XAPP972: First 256-bit page program sequence requires start address,
// XAPP972: but page address automatically increments for pages which
follow.
// Loading device with a 'ISC_DATA_SHIFT' instruction.
SIR 16 TDI (00ed) SMASK (ffff);
SDR 256 TDI (256-bits of data…) SMASK (256-bits of mask data…) ;
// Loading device with a 'ISC_ADDRESS_SHIFT' instruction.
SIR 16 TDI (00eb) SMASK (ffff);
SDR 24 TDI (000000) SMASK (ffffff) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 1000 TCK;
// Loading device with a 'ISC_DATA_SHIFT' instruction.
SIR 16 TDI (00ed) SMASK (ffff);
SDR 256 TDI (256-bits of data…) SMASK (256-bits of mask data…) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 1000 TCK;
// XAPP972: …continue ISC_DATA_SHIFT/ISC_PROGRAM sequence
// XAPP972: until all data pages are programmed …
//
// Loading device with a 'XSC_DATA_SUCR' instruction.
SIR 16 TDI (000e) SMASK (ffff);
SDR 16 TDI (fffc) SMASK (ffff) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 60 TCK;
// Loading device with a 'XSC_DATA_CCB' instruction.
SIR 16 TDI (000c) SMASK (ffff);
SDR 16 TDI (fff9) SMASK (ffff) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 60 TCK;
// Loading device with 'XSC_DATA_DONE' instruction.
SIR 16 TDI (0009) SMASK (ffff);
SDR 8 TDI (c0) ;
// Loading device with a 'ISC_PROGRAM' instruction.
SIR 16 TDI (00ea) SMASK (ffff);
RUNTEST 60 TCK;
// Check Device status.
SIR 16 TDI (00e3) SMASK (ffff);
SDR 8 TDI (00) SMASK (ff) TDO (36) MASK (7f) ;
// Loading devices with 'ISC_DISABLE' instruction.
SIR 16 TDI (00f0) SMASK (ffff);
RUNTEST 50 TCK;
// Loading devices with 'BYPASS' instruction.
SIR 16 TDI (ffff) SMASK (ffff);
SDR 1 TDI (00) SMASK (01) ;
************
Moreover, I can write all pages that i want, I just cannot read back when i program prom with fpga or pattern generator and when jtag programmed data flows normally. I think that I ignore one or more command but i cannot find which.
Thanks for your help.