To directly answer the question - most FPGAs can perform synchronization or asynchronous reset in their triggers these days. Regarding the addition of asynchronous cleaning and synchronization, I'm not sure what you got from this - add the signals necessary for the function of your design (possibly including without reset at all for some failures ...)
Some additional tips ... If you use asynchronous reset, be very careful when you disable it. If there are a lot of distortions on this “slow” grid on your device, you may find some dips included in our reset system, to another clock cycle for others. Chaos is coming!
To avoid this, I recommend creating a top-level block that accepts your external (and supposedly very asynchronous) reset signal, synchronizes it with the clock, and passes it as a synchronous reset to all the flops you want to reset (in this watch domain - you can need more than one). Then the time analyzer will tell you that there is too much device skew, and you will make sure that everything immediately exits reset.
Xilinx has a white paper on this, but it also applies to other FPGAs.
For some applications, you may need an asynchronously declared reset in IO to ensure that some external devices work as you need, but disconnect it synchronously anyway.
(PS, since you mention FPGA, if you don't know, there is a stackexchange proposal related to programmable logic, which you can find in the interesting http://area51.stackexchange.com/proposals/20632/ )
source share