I am planning to use the Lattice XP flash based FPGA in a new design and I have not worked with it before. It seems to be a RAM based FPGA which contains an internal flash for self booting. I need to provide an external JTAG port for factory programming, a system JTAG port for in system programming by an embedded CPU and also allow the XP device to boot itself in normal operation.
I understand how to use the JTAG port and I have set up controls to allow it to be programmed from one of two sources on the JTAG port. But I have not been able to find sufficient info to tell me what to do after the device has been JTAG programmed in system. Once the JTAG port takes over control of the device, how do I exit that mode? The flash will contain the new configuration information, but how do I get the XP device to load the RAM from the flash without cycling power? Is cycling the PROGRAM_N pin sufficient? I am planning to set the CFG pins to 1, 1 for self program mode.
I may have a bit of trouble with this since I am designing a new board to take the place of an older design using a simpler flash based CPLD. In that design the system could drive the JTAG port to reprogram the CPLD. That device would be immediately available with the new load once programming was complete. With the XP device, once the flash is reprogrammed by the system via JTAG, I believe it has to be told to reboot the SRAM from the flash which I don't have a simple way of doing. I may have to share a incoming board pin between a board disable control and the PROGRAM_N control.. if this is what is required to reboot the device.
Anyone here know for sure that toggling the PROGRAM_N pin is needed and sufficient to reload the SRAM from the Flash?