Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
9 years ago

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.

Cheers,

-jcw

PS. I did find http://www.alteraforum.com/forum/showthread.php?t=52583&highlight=can+an+fpga+reset+itself%3f - but it does not seem to lead to an answer.

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

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