So I looked around and see that there is no power on reset for this module that can be used by internal logic. I've used a board with a Lattice FPGA that also didn't have a power on reset but like this device will initialize all flops to zero when the programming is done. On the lattice board, I just created a counter on the reference clock that counts up to 20 and while counting asserts reset into the PLL. I then used this reset and the locked output from the PLL and more synchronizing flops on the PLL output clock to generate a system reset which is required for 1 hot state machines to work.
I thought I would do the same thing with the Vivado tools but the synthesis tool got pissy about putting flops on the same clock as the reference clock to the MMCM/PLL so that does not work. What I did was tie the MMCM/PLL reset to zero and just use the locked output to generate my reset and things worked.
Did I get lucky or is this the recommended way to generate a power on reset?
P.S. I found that the built in simulator ignored my inital/begin code to set my little counter to zero. Icarus was able to simulate it correctly (and gets me results quicker so I stick with that until I need the built in simulator for some other reason like IP modeling).
Question
trossin
So I looked around and see that there is no power on reset for this module that can be used by internal logic. I've used a board with a Lattice FPGA that also didn't have a power on reset but like this device will initialize all flops to zero when the programming is done. On the lattice board, I just created a counter on the reference clock that counts up to 20 and while counting asserts reset into the PLL. I then used this reset and the locked output from the PLL and more synchronizing flops on the PLL output clock to generate a system reset which is required for 1 hot state machines to work.
I thought I would do the same thing with the Vivado tools but the synthesis tool got pissy about putting flops on the same clock as the reference clock to the MMCM/PLL so that does not work. What I did was tie the MMCM/PLL reset to zero and just use the locked output to generate my reset and things worked.
Did I get lucky or is this the recommended way to generate a power on reset?
P.S. I found that the built in simulator ignored my inital/begin code to set my little counter to zero. Icarus was able to simulate it correctly (and gets me results quicker so I stick with that until I need the built in simulator for some other reason like IP modeling).
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now