VirtexII-Pro: Full Readback via ICAP/SelectMAP

S

Sean Durkin

Guest
Hi *,

I've been playing around with the internal SelectMAP-port (ICAP) of a
2VP7 hooked up to the internal PPC (using info and code from xapp661).
Reading and writing of registers (like ID code register and such) and
single frames works fine, so the interface itself seems to be doing what
it should.

I then tried to do a full readback (just the CLB data, no
BlockRAM-contents and such), using the information from xapp138 and the
..rba-file, but readback stops somewhere in the middle, as I get no more
data from the ICAP-interface.

Now, as I understand it, a 2VP7 has 1320 frames consisting of 424 Bytes
each, so that should be 559680 Bytes for the configuration data alone
plus the 4 padding bytes that proceed every frame, plus one padding
frame at the beginning. That means a full readback should give me 565384
Bytes of data, which then would have to be stripped of the padding data
and masked with the .msk-file before being compared to the data in the
..rbt-file for verification.

Yet after about 365000 Bytes or so I get no more data from the ICAP and
the transfer stops, even though I issue a command to the ICAP to send me
0x222fa 32bit-data words, exactly as it's done in the .rba-file.

I'm sure I'm missing something obvious here... has someone else done
this, maybe via the external SelectMAP-port?

This is what I send to the ICAP to initiate the transfer:

/* This should initiate a full readback: */
static char cmd_fullReadback[44] = {
0xFF, 0xFF, 0xFF, 0xFF, /* Dummy Word */
0xAA, 0x99, 0x55, 0x66, /* Sync Word */
0x30, 0x01, 0xC0, 0x01, /* Write ID Code Register with next word */
0x01, 0x24, 0xA0, 0x93, /* XC2VP7 Product Code written to ID Register */
0x30, 0x00, 0x80, 0x01, /* Write to CMD Register */
0x00, 0x00, 0x00, 0x04, /* Command RCFG - Read Configuration Data */
0x30, 0x00, 0x20, 0x01, /* Write to Frame Address Register(FAR)*/
0x00, 0x00, 0x00, 0x00, /* Frame Address of Interest: 0x0 (beginning)*/
0x28, 0x00, 0x60, 0x00, /* Read from Frame Data Output Register(FDRO) */
0x48, 0x02, 0x22, 0xFA, /* Read 0x222fa 32bit-data words in
command, as is done in .rba-file */
0x00, 0x00, 0x00, 0x00 /* Pad */
};

I then start reading single bytes and putting them into external RAM.

Any pointers as to what I'm missing would be greatly appreciated...

--
Sean Durkin
Fraunhofer Institute for Integrated Circuits (IIS)
Am Wolfsmantel 33, 91058 Erlangen, Germany

mailto:23@iis.42.de
([23 , 42] <=> [durkinsn , fraunhofer])
 

Welcome to EDABoard.com

Sponsor

Back
Top