Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

Can an FPGA reset itself?

Hello forum members, 


I'm using a Cyclone IV board and would like to drive the configuration from a microcontroller attached to some pins on its expansion header, as follows: 


* on power-up, the FPGA configs itself using the EPCS flash chip 

* that config simply wires the EPCS chip through to pins on the expansion header 

* the microcontroller can now read and modify the flash chip, i.e. upload a new bitstream 

* the puzzle: how to make the FPGA reset and reload from flash again, triggered by the microcontroller 

* the challenge is to do this without modifying the board, i.e. no re-wiring of the config button 


Preferably, reloading should use a different start address in flash, so that the next full power cycle starts the whole process again. If that's not possible, I could include logic in the application bitstream to wire through as above on startup, and then continue with startup after one second (in case no new bitstream is sent). 


My reason for this is to be able to hand out a pre-configured board, which allows occasional reconfiguration without needing a USB blaster on-site. 


Is it possible? I'm still exploring and looking through the documentation and resources on the web, so any pointers would be most welcome. 





PS. I did find - but it does not seem to lead to an answer.
0 Kudos
4 Replies
Honored Contributor I

This is a tricky one.. I am not sure if an update over Ethernet would be an option for you. If yes, I've seen some design examples that does that.

Honored Contributor I

I'm afraid that Ethernet is not really an option for me. 


A few other thoughts on this: 


* have the microcontroller plug into JTAG as well, and then program either EPCS or FPGA that way 

* just tell people to press the config button manually, but... 

* if I have overwrite the pass-through bitstream, then recovery from a bad one becomes an issue 


If there is no solution, I'm afraid I'll have to modify the board after all, and tie the config button to an I/O pin.
Honored Contributor I

As mentioned in the thread you cited, ug_altremote.pdf is probably what you are looking for. 


The description of Cyclone IV specific capabilities start on page 25. In Figure 10, the line "Set Control Register and Reconfigure" is essentially the behavior you are describing.
Honored Contributor I

Aha - thank you, I missed that. It looks indeed like all the essential info is in there. Chewing on it now!