This is a really useful article. If you have a design topic that you would like to write about for me to post here at Programmable Logic Designline, please contact me and let's chat about it (max@CliveMaxfield.com)
A good companion piece to this one would be 'How do I clock my FPGA?' After that 'How do I initialize my FPGA', 'How do I power my FPGA' and then maybe 'How do I design my FPGA for low noise (decouple, route, etc)'. All very basic but critical issues...
This is a great article! I used this reset synchronizer design in an article I wrote. It is at http://nicisdigital.wordpress.com/2012/01/16/digital-design-system-resets/
Another issue to consider is the routing resources that synchronous resets consume. There are easy ways to overcome this.
Very interesting article indeed. I am wondering if this way to synchronize a reset signal (to generate a reset which is synchronous with your clock) would only apply to resets or also to any other type of signal. Say you have a certain signal synchronous to the uBlaze clock at 100MHz for example, and you would like to use it to control a block of logic that runs at 180Mhz, could you also use the 2 flip-flops and use it as async reset (or preset) to generate a sync signal? If not, what is the best way to do this? Thanks
I would recommend a synchronization circuit(rather than the reset bridge) for synchronizing a control signal that crosses between unrelated clock domains.
If your input change is more than one capture clock period of the destination clock apart, use a two FF synchronization circuit which provides meta-stability resolution. The synchronization circuit is a two D-FFs cascaded and clocked by the destination clock. The signal clocked by the source clock is connected to the 'D' input of the first flip flop of the synchronization circuit. Also note that a MAX_DELAY constraint should be placed on the connection between the flip-flops so that they are physically placed close together to reduce the probability of conducting a meta-stable condition.
If your clocks are related then to it should be covered by the relative period constraint.