Etape 6 : Le composant cible pour l'implémentation
Notre cible sera implémentée sur un composant FPGA de marque Xilinx, le modèle Spartan III XCS200.
Ce composant est un FPGA, c'est un dire un composant programmable basé sur une technologie à mémoire statique. Cette technologie est à la
fois simple d'aspect et ultra performante : il s'agit d'utiliser de petites cellules de mémoire pour réaliser des opérations logiques comme
nous le faisons lorsque nous écrivons une table de vérité : si l'on écrit la table d'un ET logique de la façon suivante :
A | B | A & B |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Avantage de ce système, le nombre de porte et donc la complexité n'est plus directement liée à la difficulté à traduire l'équation logique en éléments simples mais plutot au nombre d'entrées et de sortie de cette équation. Ces ensemble composés de mémoire sont appelé LUT.
Un FPGA est consitué de cellules appelée CLB, chacune contient des éléments mémoire tels que nous venons de les voir, mais aussi des bascules et de la logique de routage permettant de les relier les unes aux autres. L'unité de base pour ce type de composant, comme le bit l'est pour la mémoire, est, pour les FPGA, la CLB.
Notre composant ( le pavé au centre de la photo ci-dessus ) possède 4320 CLB, chacune contenant les éléments suivants :
- 2 LUT de 16bits permettant de réaliser n'importe quelle équation logique à 4 entrées.
- 2 bascules : éléments de mémorisation synchrones.
- La logique nécessaire à l'interconnexion des CLB permettant la réalisation d'équations logiques complexes.
Les LUT sont des éléments de stockage asynchone, telle que l'est la RAM. Il est possible à n'importe quel moment de lire ou d'écrire dans ce type de composant qui effectuera l'action imédiatement ou plutot après un temps appelé temps de réponse du composant, constant. Les bascules sont, par contre, des éléments de mémorisation synchrone, c'est à dire qu'ils ne traitent pas les ordres reçus immédiatement mais seulement lorsqu'ils reçoivent un top de l'horloge. Ainsi, toutes les bascules du système exécutent en même temps des ordres arrivées indifferement durant le cycle. Les basculent permettent donc la synchronization de l'ensemble d'un système.
Le composant Spartan III intègre aussi quelques composants internes autre que les CLB comme des multiplicateurs déjà cablés et donc optimisés. Il embarque aussi des blocs de mémoire RAM double ports. Ces blocs peuvent être lu et écrit en même temps par deux éléments matériel différent ce qui en fait des composants très utile pour la réalisation de cache ou l'interconnexion de systèmes asynchrones tels que des modules d'entrée-sortie par exemple.
Ayant pris connaissance de l'architecture cible, voyons maintenant comme implémenter Simple-Cpu.