Forum Discussion

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

Programmatic Reset/Reconfig of Cyclone FPGA

Due to a funny situation, I need to programmatically trigger reboot/reconfiguration of my Cyclone IV E device. I mean that I need to reset/reconfigure the device from inside my VHDL code.

Basically - I'm using a micro to do a firmware upgrade through the FPGA using the ALT_ASMI core to reprogram the serial configuration device. Now, because I unfortunately have no board level access to the reset pins of the FPGA, I have no way to actually reconfigure and use the new FPGA configuration without a power cycle.

I know this issue has been addressed in other forums, and it appears the complex Altera system upgrade IP does this and many other other things... But I just want to reset the FPGA without all the other stuff. Is this really so much to ask? I can't believe there is no quick-n-dirty way to due this. Maybe someone over at Altera can do me a big favor and let me know the secret? Maybe drive the reset pin low myself internally? Maybe some other undocumented trick? Again, it doesn't have to be pretty - we're passed that now ;)

Thanks in advance!

XxZz

4 Replies

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

    You need to pulse nCONFIG low and high again. However, based on your post I suspect you don't have control of this from your micro...

    The only other very, very dirty way I can suggest is to overload one of the FPGA rails (VCCINT or VCCA) - yes, easier said than done - such that it's voltage drops and causes the FPGA's POR circuitry to reconfigure the device.

    Cheers,

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

    You want to look at the ALTREMOTE_UPDATE megafunction. Using it you can pulse the nCONFIG signal internally via logic to reboot your device.

    Document here: https://www.altera.com/literature/ug/ug_altremote.pdf

    (https://www.altera.com/literature/ug/ug_altremote.pdf)

    There is also this global option: set_global_assignment -name ENABLE_NCONFIG_FROM_CORE ON

    However, if you look in the Altera Quartus QSF Reference that describes this variable, it says nothing about how to use it, or what happens when it is set ON vs OFF.

    Maybe some Altera Guru has better insight on what this assignment does and how to use it.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The ENABLE_NCONFIG_FROM_CORE sounded a little too good to be true. From Altera:

    "The ACF variable ENABLE_NCONFIG_FROM_CORE was actually only applicable to MAX 10 devices and, after a little digging I've found that this variable is actually no longer supported and has been removed as a feature.

    "There is no way to toggle nCONFIG from within the core of our FPGAs other than via the Remote Update IP."

    Cheers,

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

    --- Quote Start ---

    The ENABLE_NCONFIG_FROM_CORE sounded a little too good to be true. From Altera:

    "The ACF variable ENABLE_NCONFIG_FROM_CORE was actually only applicable to MAX 10 devices and, after a little digging I've found that this variable is actually no longer supported and has been removed as a feature.

    "There is no way to toggle nCONFIG from within the core of our FPGAs other than via the Remote Update IP."

    Cheers,

    Alex

    --- Quote End ---

    Well that is too bad. In the past when I had to implement this programmable reconfiguration, I explicitly connected the nCONFIG pin on the FPGA to a GPIO port on a microprocessor; or in another case the microprocessor had control of the JTAG interface, and we were able to issue the PULSE_NCONFIG JTAG command to force the reconfiguration to occur.