The process for reading configuration memory from the FDRO register is similar to the process for reading from other registers. Additional steps are needed to accommodate the configuration logic. Configuration data coming from the FDRO register passes through the frame buffer.
- Write the bus width detection sequence and synchronization word to the device.
- Write at least one
NOOPcommand. - Write the
Shutdowncommand, and write oneNOOPcommand. - Write the
RCRCcommand to the CMD register, and write oneNOOPcommand. - Write five
NOOPinstructions to ensure the shutdown sequence has completed.DONEgoes Low during the shutdown sequence. - Write the
RCFGcommand to the CMD register, and write oneNOOPcommand. - Write the starting frame address to the
FAR (typically
0x00000000). - Write the read FDRO register
packet header to the device. The FDRO read length is:
- Kintex UltraScale and Virtex UltraScale
- FDRO read length = (words per frame) x (frames to read +1) + 10
- Artix UltraScale+, Kintex UltraScale+, and Virtex UltraScale+
- FDRO read length = (words per frame) x (frames to read + 1) + 25
One extra frame is read to account for the frame buffer. The frame buffer produces one dummy frame at the beginning of the read. 10 or 25 extra words are read to account for pipelining.
- Write 64 dummy words to the device to flush the packet buffer.
- Read the FDRO register from the SelectMAP
interface. The FDRO read length is the same as in step 8. Readback data is valid
deterministically three clock cycles after the
CSI_Bpin is asserted during readback. - Write one
NOOPinstruction. - Write the
STARTcommand and write oneNOOPcommand. - Write the
RCRCcommand and write oneNOOPcommand. - Write the
DESYNCcommand. - Write at least 64 bits of
NOOPcommands to flush the packet buffer. Continue sendingCCLKpulses untilDONEgoes High.
The following table shows the readback command sequence.
| Step | SelectMAP Port Direction | Configuration Data | Explanation |
|---|---|---|---|
| 1 | Write |
FFFFFFFF
|
Dummy word |
000000BB
|
Bus width sync word | ||
11220044
|
Bus width detect | ||
FFFFFFFF
|
Dummy word | ||
AA995566
|
Sync word | ||
| 2 | Write |
02000000
|
Type 1 NOOP word 0 |
| 3 | Write |
30008001
|
Type 1 write 1 word to CMD |
0000000B
|
SHUTDOWN command | ||
02000000
|
Type 1 NOOP word 0 | ||
| 4 | Write |
30008001
|
Type 1 write 1 word to CMD |
00000007
|
RCRC command | ||
20000000
|
Type 1 NOOP word 0 | ||
| 5 | Write |
20000000
|
Type 1 NOOP word 0 |
20000000
|
Type 1 NOOP word 0 | ||
20000000
|
Type 1 NOOP word 0 | ||
20000000
|
Type 1 NOOP word 0 | ||
20000000
|
Type 1 NOOP word 0 | ||
| 6 | Write |
30008001
|
Type 1 write 1 word to CMD |
00000004
|
RCFG command | ||
20000000
|
Type 1 NOOP word 0 | ||
| 7 | Write |
30002001
|
Type 1 write 1 word to FAR |
00000000
|
FAR Address = 00000000
|
||
| 8 | Write |
28006000
|
Type 1 read 0 words from FDRO |
483D0E2B
|
Type 2 read 4,001,323 words from FDRO (for KU040) | ||
| 9 | Write |
20000000
|
Type 1 NOOP word 0 |
...
|
Type 1 63 more NOOPs word 0 | ||
| 10 | Read |
00000000
|
Packet data read FDRO word 0 |
...
|
|||
00000000
|
Packet data read FDRO word 4,001,322 | ||
| 11 | Write |
20000000
|
Type 1 NOOP word 0 |
| 12 | Write |
30008001
|
Type 1 write 1 word to CMD |
00000005
|
START command | ||
20000000
|
Type 1 NOOP word 0 | ||
| 13 | Write |
30008001
|
Type 1 write 1 word to CMD |
00000007
|
RCRC command | ||
20000000
|
Type 1 NOOP word 0 | ||
| 14 | Write |
30008001
|
Type 1 write 1 word to CMD |
0000000D
|
DESYNC command | ||
| 15 | Write |
20000000
|
Type 1 NOOP word 0 |
20000000
|
Type 1 NOOP word 0 |