composant cible : la FPGA xilinx spartan III
Les instructions d'appel des procédure et de gestion de la pile

Etape 6 : Le composant cible pour l'implémentation

Le composant Xilinx Spartan III 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 :
ABA & B
000
010
100
111
Alors, les données de la colonne "A & B" sont mémorisées dans une mémoire. Les signaux A et B correspondent alors à l'adresse, dans cette mémoire du résultat de l'opération logique : à l'adresse 0 (00) est stocké le bit "0", à l'adresse 3 (11) le bit "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 :

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.

Architecture générale
Simple-Cpu The Simple CPU project The Simple CPU project
Un projet de disk91
Small CPU project