From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
06-05-2021 10:29 PM
Hi everyone,
Solved! Go to Solution.
06-06-2021 03:47 AM - edited 06-06-2021 03:51 AM
When loading an FPGA program the entire FPGA fabric is of course initialized. This causes the digital IO to go into default state which is normally as an input (that way it will never try to drive into an external signal that may be connected to a pin and eventually destroy the FPGA output or external circuitry because of short circuiting it). Your external hardware should be fail safe in that sense that it won’t do strange things when not actively driven (an input pin acts as a very high impedance). And there can be a very short moment during initialization were not all IO are at the same time in either a previously determined state, the reset state, and/or the new state your new program sets after being loaded and started.
Basically you should have external circuitry that is automatically in failsafe state when not actively driven low or high at its inputs and with a seperate enable line that is activated after you configured all the other signals properly. If you only control low voltage digital circuitry this is all somewhat less critical as they mostly survive transient logic level short circuits on their pins but with high current devices you have to be very careful.
06-06-2021 10:15 AM
Dear Rolf,
Your explanation totally made this situation clear to me, and due to my ignorance about this fact, unfortunate event happened.
I am wondering when I stop and then start the same FPGA program, will the digital IO be re-initialized? In other words, does this initialization process only occur when I switch programs, or whenever I start a program even it is the same program?
Thanks!
06-07-2021 05:46 AM - edited 06-07-2021 05:47 AM
I'm not sure. But I NEVER rely on such things in my hardware designs. They will sooner or later come around and bite you in your "derrier".
ALWAYS create fail safe hardware that you have to explicitly enable with a signal, if anything can get damaged. That applies triple as much if human health can get impacted but should be not ignored even for simple hardware.
Then in your software (either in FPGA and/or RT) design a clear initialization sequence that makes sure all signals are set to a sane start value before you enable the hardware.
06-07-2021 10:21 PM
Thank you very much Rolf for your help.