2.4.2 ICSP Read of VISI Register
(CMDRD)
This command shifts the content of the VISI register onto the PGEDx pin for capture by
the programmer. When combined with an Instruction Execution Sequence
(CMDEXEC) that writes to VISI, it may be used to read status
registers and memory content from the target device.
The Read of VISI Register Sequence is:
- The programmer shifts the
‘
01’ bits into the device. As all data follow Least Significant bit first ordering, the ‘1’ bit must be presented on the PGEDx wire before the ‘0’ bit. - One Idle PGECx clock is generated by the programmer to accommodate switching the PGEDx pin direction; the programmer should tri-state PGEDx before the falling edge of this clock, as the target device will begin driving bit 0 of VISI at this time.
- The programmer shifts in the 32-bit VISI register content from the device. The Least Significant bit of the VISI register is presented first. The device updates each data bit on the falling edge of the PGECx pulse. To accommodate propagation delay of the clock into the device and output delay returning the next bit, the programmer should sample the data from the device on or after the PGECx rising edge.
- One Idle PGECx clock is generated by the programmer to accommodate switching the PGEDx pin direction back to an input; the device tri-states PGEDx on the falling edge that completes the VISI bit 31 transfer, so the programmer can begin driving PGEDx anytime during or at the end of this clock.
All Instruction Execution Sequences (CMDEXEC) that write to the VISI
register do not complete execution until several clocks belonging to the next command
have been presented. Therefore, any operation that writes to VISI will not have taken
effect if immediately followed by a read of the VISI Register Sequence
(CMDRD). Placing an operation that writes to VISI immediately
before a read of the VISI Register Sequence (CMDRD) will still execute
normally, but the data returned will be delayed (will contain old VISI data). To receive
the up to date VISI content moved by the preceding CMDEXEC Sequence, a
second CMDEXEC, with any opcode, should be executed before the
CMDRD Sequence.
Figure 2-14 shows an example of the
CMDRD Sequence where the 0x12345678 data are
shifted out from the VISI register to the programmer.
CMDRD Data
Sequence with Data Shifted out from VISI Register to Programmer