Marc Jet <
[email protected]> wrote:
> Hi,
> I'm trying to read the DNA of a Spartan3A-DSP chip over JTAG.
> The datasheet gives very little information about this. I found the
> IR code, the note that ISC_ENABLE must be loaded before ISC_DNA, and
> also that ISC_ENABLE implies a shutdown.
> With nothing more than this information, I tried to implement it. It
> works when the chip is not yet loaded with a bitstream. However, if
> it is, then I read only zeroes instead of the DNA.
> Since I have no documentation about how exactly the ISC_ENABLE command
> works, I tried two things:
> a) load ISC_ENABLE and directly afterwards load ISC_DNA
> b) load ISC_ENABLE, then loop 12x or 10000x or 100000x RUN-TEST/IDLE,
> and then load ISC_DNA.
> Neither of these improved anything. I could not find any
> documentation that clarifies this. Unfortunately IMPACT (10.1)
> doesn't seem to read the DNA either, so I can't record and inspect an
> SVF either.
My code in xc3sprog has:
switch(family)
{
case 0x11: /* XC3SA*/
case 0x13: /* XC3SAN*/
case 0x1c: /* SC3SADSP*/
{
byte data[8];
jtag->shiftIR(&ISC_DNA);
jtag->shiftDR(0, data, 64);
io->cycleTCK(1);
if (*(long long*)data != -1LL)
/* ISC_DNA only works on a unconfigured device, see AR #29977*/
printf("DNA is 0x%02x%02x%02x%02x%02x%02x%02x%02x\n",
data[0], data[1], data[2], data[3],
data[4], data[5], data[6], data[7]);
break;
}
}
--
Uwe Bonnes
[email protected]
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------