The internal PROGRAM (IPROG) command is
a subset of the functionality of pulsing the PROGRAM_B pin. The
fundamental difference is that the IPROG command does not erase the
WBSTAR, TIMER, BSPI, and BOOTSTS registers used to initiate MultiBoot and fallback. The
IPROG command triggers an initialization, and both
INIT and DONE go Low when the
IPROG command is issued followed by an attempt to configure.
This command can be issued one of two ways. In the first
way, the IPROG command can be issued through the ICAP, which is
controlled by user logic. This allows user logic to initiate device reconfiguration. In
the second way, the IPROG command can be embedded during bitstream generation. In this
scenario, the WBSTAR and IPROG commands are set at the
beginning of the golden bit file. At power-up, the device starts reading the BIT file
from the flash and reads in the WBSTAR register and IPROG command. The
IPROG command triggers the device to reload from the address
specified. If there is an issue with the upper image, the base address is loaded again.
Now, the IPROG command is skipped by the configuration controller
because the device saw an error. A fallback condition blocks the IPROG
command from being processed, and the device continues to load the golden image. After a
successful configuration, the IPROG command can be issued to the
device, which enables the golden image to trigger configuration from a MultiBoot
image.