Is there a JTAG IR code that reads back the unique chip ID? I'm hoping to read the chip ID back with a code like this:
device_ir_shift -ir_value <CHIP-ID-IR> -no_captured_ir_value device_dr_shift -length 64 -value_in_hex Cheers,連結已複製
5 回應
--- Quote Start --- Is there a JTAG IR code that reads back the unique chip ID? I'm hoping to read the chip ID back with a code like this: device_ir_shift -ir_value <CHIP-ID-IR> -no_captured_ir_value device_dr_shift -length 64 -value_in_hex Cheers, --- Quote End --- You mean the silicon-specific IDCODE value, like this:
******************************************************************************
* Altera Chain Interrogation Version 5.0 *
* Copyright (c) 1999-2007 Altera Corporation. All Rights Reserved. *
******************************************************************************
Chain Continuity Checker
Chain Continuity during IR is not stuck at zero or one
******************************************************************************
Chain Length -- Load IR of all ones then count DR length
Number of Devices is 22
******************************************************************************
IR Length Calculator
Instruction Register Length is 157
******************************************************************************
IDCODE Reader
------ | ---------- | ---- ------------------- ------------- - |
Device | IDCODE | Rev DeviceCode Manufacturer 1 |
------ | ---------- | ---- ------------------- ------------- - |
ID 001 | 0x7A363013 | 0111 1010 0011 0110 0011 0000 0001 001 1 |
ID 002 | 0x85101013 | 1000 0101 0001 0000 0001 0000 0001 001 1 |
ID 003 | 0x95100013 | 1001 0101 0001 0000 0000 0000 0001 001 1 |
ID 004 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 005 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 006 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 007 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 008 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 009 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 010 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 011 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 012 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 013 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 014 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 015 | 0x1000011B | 0001 0000 0000 0000 0000 0001 0001 101 1 |
ID 016 | 0x1874839B | 0001 1000 0111 0100 1000 0011 1001 101 1 |
ID 017 | 0x00000000 | .... .... .... .... .... .... .... ... 0 |
ID 018 | 0x00000000 | .... .... .... .... .... .... .... ... 0 |
ID 019 | 0x175D014B | 0001 0111 0101 1101 0000 0001 0100 101 1 |
ID 020 | 0x4403D093 | 0100 0100 0000 0011 1101 0000 1001 001 1 |
ID 021 | 0xD5059093 | 1101 0101 0000 0101 1001 0000 1001 001 1 |
ID 022 | 0x2402E093 | 0010 0100 0000 0010 1110 0000 1001 001 1 |
------ | ---------- | ---- ------------------- ------------- - |
******************************************************************************
Exit code = 0... Success
I did this using the Altera JAM STAPL player using an Altera USB Blaster connected to a board with lots of devices (22) in the JTAG chain. For a simple example of how to toggle the JTAG lines to read the IDCODE register in devices see: http://www.fpga4fun.com/jtag3.html This page assumes you have a simple way (via GPIO port, for example) of controlling the JTAG lines.
Thank you for the response. Unfortunately that’s not a chip serial number it’s only a 32-bit identifier that gives only the family and stuff. It’s not unique across devices of the same family as you can see in your example.
Altera has a chip id IP that provides a unique 64-bit id but I’d like to read that ID from jtag without instantiating the ip in the design. Cheers,--- Quote Start --- Thank you for the response. Unfortunately that’s not a chip serial number it’s only a 32-bit identifier that gives only the family and stuff. It’s not unique across devices of the same family as you can see in your example. Altera has a chip id IP that provides a unique 64-bit id but I’d like to read that ID from jtag without instantiating the ip in the design. Cheers, --- Quote End --- So this is something only a few of the newer devices support: https://www.altera.com/en_us/pdfs/literature/ug/altchipid.pdf There is a note that the ID is accessible thru JTAG for the Arria 10 and Cyclone 10 GX, but it appears you still need to instantiate the IP block.
--- Quote Start --- So this is something only a few of the newer devices support: https://www.altera.com/en_us/pdfs/literature/ug/altchipid.pdf There is a note that the ID is accessible thru JTAG for the Arria 10 and Cyclone 10 GX, but it appears you still need to instantiate the IP block. --- Quote End --- That note is a bit vague, but I believe it means you cannot have a pending master transaction over JTAG while CHIP ID is being read. Which leads me to believe that CHIPID IP, underneath, is actually using JTAG to retrieve the unique 64-bit number. So I believe there must be a way to read the number from JTAG directly. Unless it's deliberately closed off. You are correct however, CHIPID is not available for all devices. cheers,
