Le site de Steve

Accueil > Electronique > FPGA > Round-robin pour FPGA

Round-robin pour FPGA

dimanche 22 novembre 2009, par Steve

Introduction

La description qui suit permet de partager une ressource entre plusieurs processus dans une FPGA. Elle est basée sur deux décaleurs à barillet et une pseudo-bascule RSC par processus.

La description

La description est paramétrable en nombre d’entrées donc de processus.

Le premier décaleur permet la réorganisation des candidats à l’accès de la ressource partagée en fonction du précédent élu. Dès que le précédent élu libère la ressource, elle sera affectée au prochain candidat. Cela permet d’éviter une appropriation par un seul des candidats.

Le second décaleur effectue l’opération inverse du premier afin que chaque allocation soit à associer à la bonne requête.

La bascule RSC mémorise le processus élu. Lorsque le processus n’a plus besoin d’accéder à la ressource, il remet la cellule RSC à zéro afin de permettre à un autre processus d’avoir l’accès à la ressource.

Remarque

L’ordonnanceur tel qu’il est décrit permet d’effectuer une décision par coup d’horloge. Par exemple, un processus est prêt à rendre la main, au prochain coup d’horloge un autre processus est autorisé à accéder à la ressource.

Conclusion

J’ai synthétisé la description sous plusieurs outils et pour plusieurs cibles.

Nombre d’entrées Outil de synthèse Cible Période minimum Niveau logique
4 ISE 11.3 XC3S400-5PQ208 6,213 ns 4
8 ISE 11.3 XC3S400-5PQ208 9,887 ns 7
4 Quartus 9.0sp2 EP3C40Q240C8 5,017 ns  ?
8 Quartus 9.0sp2 EP3C40Q240C8 9,943 ns  ?
4 Quartus 9.0sp2 EP3C16Q240C8 4,796 ns  ?
8 Quartus 9.0sp2 EP3C16Q240C8 11,011 ns  ?

Attention : Ces résultats ne sont donnés qu’à titre indicatif. En effet, il n’y a pas de contraintes sur l’affectation des broches.

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.