2010-12-14 4 views
4

Je me souviens avoir lu il y a quelque temps que les réinitialisations asynchrones ou synchrones sont implémentées plus efficacement dans les FPGA puisque les bascules en ont déjà une, mais l'autre nécessiterait une logique supplémentaire.FPGA efficace (a) réinitialisations synchrones

Est-ce que quelqu'un sait de quel côté est ce? Est-ce la même chose pour Xilinx, Altera, Other ..

Lors de l'apprentissage, j'avais l'habitude d'ajouter une réinitialisation asynchrone et synchrone à chaque FSM, juste au cas où. Y a-t-il un avantage à cela?

Merci pour vos commentaires!

+2

Peut-être que cette question serait mieux dans http://electronics.stackexchange.com/? – thkala

+0

Bien que cela soit implémenté dans les puces, il est également programmé en VHDL ou Verilog. Cela pourrait aller n'importe où. –

Répondre

2

Eh bien, votre meilleur pari est de consulter la documentation et les livres blancs de votre fournisseur FPGA spécifique. Dans la plupart des équipes de conception professionnelle sur lesquelles j'ai travaillé, nous avons utilisé des réinitialisations asynchrones pour maintenir un contrôle maximal. Cependant, le choix entre les réinitialisations synchrones et asynchrones dépend vraiment de votre conception et de votre application. Par ailleurs, vous pouvez trouver this paper on the topic of resets de Sunburst Design intéressant. Bien qu'il s'adresse principalement à la conception ASIC et Verilog, c'est un document utile pour comprendre les décisions de réinitialisation en général.

+1

+1 pour les papiers Sunburst – Marty

+0

Great link! Merci! – Mark

6

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/)

+0

bon conseil sur l'analyseur de décalage et de synchronisation! –

+0

Merci pour l'information! – Mark

2

La position Xilinx officielle est d'utiliser réinitialiser la synchronisation. Il est expliqué dans ce whitepaper, également mentionné dans le message ci-dessus. Tous les cœurs IP Xilinx fournis avec le code source, tels que le contrôleur de mémoire, utilisent la fonction de réinitialisation de la synchronisation. Mon équipe a expérimenté différentes conceptions et a constaté que l'avantage d'utiliser la réinitialisation de synchronisation en termes d'amélioration de l'utilisation logique est négligeable. Le plus grand avantage de l'utilisation de la réinitialisation asynchrone est la rapidité d'exécution de la construction, ce qui est important pour les grandes conceptions. La raison en est que les chemins de réinitialisation asynchrones ne sont pas couverts par les contraintes de synchronisation synchrones (vous pouvez les couvrir en ajoutant des contraintes séparées, si vous le souhaitez).

+0

Merci pour les infos supplémentaires! – Mark

Questions connexes