UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Participant manish.ranade
Participant
5,032 Views
Registered: ‎05-12-2009

IDCODE reading

 

Hi,

I am treating Xilinx FPGA (some sp3 device) as a "standard boundary scan" device.

Want to read its Device ID.  Using custom s/w over FTDI chip 2232H which acts as USB-JTAG converter.

 

Test#1:If I shift-in IDCODE instruction then I am able to read 32-bit Device ID correctly.

 

There is another way to read Device ID 

Test#2: After resetting TAP, if one moves directly into SHIFT-DR state, IDCODE instruction gets loaded and one can shift-out 32-bit Device ID.   -- experts let me know if this understating correct

I am getting only 12 lsbs correct (LSB which is mandatory "1" as per JTAG standard and 11-bit manufacturer's ID) - verified against BSDL file for the device. 

 

Test#3: Did test #2 using iMpact s/w and Xilinx platform USB cable. Used iMpact in BSCAN - debug mode. 

The result is as same as #2. 

 

So the question is, do Xilinx FPGAs behave as "standard Boundary scan devices"?

 

 

 

0 Kudos
2 Replies
Scholar austin
Scholar
5,022 Views
Registered: ‎02-27-2008

Re: IDCODE reading

manish,

The devices meet the JTAG standard (verified by third party programmers).

Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
Highlighted
Participant manish.ranade
Participant
5,006 Views
Registered: ‎05-12-2009

Re: IDCODE reading

Hi Austin,

 

Below is the log from impact in batch mode.

The bits other than mandatory LSB and 11-bit manufacturer code are different in 2-methods, hence the doubt

 

The device uses is XC3SD1800A_FG676

 

 

Reset Tap

bsdebug -tms 1 -tdi 1 -tck 7
TMS value: 1
TDI value: 1
NO of pulses7
TDO Capture Data: 1
Elapsed time = 0 sec.
>

read IDCODE instruction
bsdebug -scanir 001001
TDO Capture Data: 010101
Elapsed time = 0 sec.
>

shift-in dummy 32 bits to scan-out device ID
bsdebug -scandr 0x01234567
TDO Capture Data: 00000111000010000000000100100110
Elapsed time = 0 sec.

There's 0 at LSB (lets ignore it for time being, rest of the 31 bits match as per device ID)  

 

Now reading idcode without giving explicit read-IDCODE instruction

 

Reset Tap

bsdebug -tms 1 -tdi 1 -tck 6
TMS value: 1
TDI value: 1
NO of pulses6
TDO Capture Data: 1
Elapsed time = 0 sec.
>

Moving to SHIFT-DR
bsdebug -tms 0 -tdi 0 -tck 1
TMS value: 0
TDI value: 0
NO of pulses1
TDO Capture Data: 1
Elapsed time = 0 sec.
>
bsdebug -tms 1 -tdi 0 -tck 2
TMS value: 1
TDI value: 0
NO of pulses2
TDO Capture Data: 1
Elapsed time = 0 sec.
> IN Shift-DR NOW

 

shift-in dummy 32 bits to scan-out device ID
bsdebug -scandr 0x01234567
TDO Capture Data: 11100101000001010111000010010011
Elapsed time = 0 sec.

mandatory LSB is "1" next 11-bit manufacturer ID also correct.  But the later bits are messed-up

 

0 Kudos