Pour répondre directement à la question - la plupart des FPGA peuvent effectuer des réinitialisations synchrones ou asynchrones dans leurs flipflops ces jours-ci. En termes d'ajout d'un repos asynchrone et synchrone, je ne suis pas sûr de ce que vous avez obtenu - ajoutez les signaux qui sont nécessaires pour la fonction de votre conception (y compris éventuellement aucune réinitialisation pour certains flops ...)
Quelques conseils supplémentaires ... Si vous utilisez une réinitialisation asynchrone, soyez très prudent lorsque vous l'annulez. S'il y a beaucoup d'asymétrie sur ce réseau "lent" sur votre appareil, vous trouverez peut-être des flops à réinitialiser sur un cycle d'horloge différent. Le chaos s'ensuit!
Pour éviter cela, je suis en faveur de créer un bloc de premier niveau qui prend dans votre externe (et probablement très asynchrone) signal de réinitialisation, il synchronise l'horloge et se nourrit comme un synchrone remis à tous les flops que vous voulez remettre à zéro (dans ce domaine d'horloge - vous pouvez avoir besoin de plus d'un). Ensuite, l'analyseur de temps vous dira si le biais est trop l'appareil, et vous vous assurerez que tout sort de réinitialisation à la fois.
Xilinx have a whitepaper sur ce sujet, mais il s'applique également à d'autres FPGA. Pour certaines applications, vous devrez peut-être réinitialiser de manière asynchrone les E/S afin de vous assurer que certains périphériques externes fonctionnent comme vous le souhaitez, tout en les désactivant de manière synchrone.
(PS. Comme vous le mentionnez FPGAs, si vous n'êtes pas au courant, il y a une proposition de StackExchange liée à la logique programmable que vous pouvez trouver d'intérêt http://area51.stackexchange.com/proposals/20632/)
Peut-être que cette question serait mieux dans http://electronics.stackexchange.com/? – thkala
Bien que cela soit implémenté dans les puces, il est également programmé en VHDL ou Verilog. Cela pourrait aller n'importe où. –