Module EN 216 Conception d un processeur avec jeu d instructions élémentaires Travaux Pratiques EN 216 c 2015 1
D. Dallet, C. Leroux & C. Jego Conception, implémentation et prototypage sur FPGA du processeur minimal 8 bits L objectif de ce module est d assembler des fonctions élémentaires (combinatoires et séquentielles) pour réaliser un processeur programmable avec un jeu d instructions élémentaires. L architecture conçue sera intégrée sur le FPGA d une carte de prototypage. La carte utilisée dans ce module est la carte Spartan3 de la société Digilent (http ://www.digilentinc.com/). De nombreuses informations sur l utilisation des différents périphériques sont disponibles à l adresse suivante : http ://www.digilentinc.com/products/detail.cfm?prod=s3board Fig. 1: Schéma bloc de la carte Spartan3 de chez Digilent Le circuit de la carte est un FPGA Xilinx Spartan3 XC3S200-FT256. En plus de ce circuit, la carte contient quatre afficheurs 7 segments. Un quartz permet également de fournir un signal d horloge à une fréquence de 50 MHz. Des interrupteurs et des LEDs sont aussi présents pour respectivement piloter et afficher des signaux binaires. Le module de transcodage assurant la commande des afficheurs 7 segments doit respecter le codage suivant : Attention la carte est composée de quatre afficheurs 7 segments à anode commune. Chaque segment est activé (allumé) en appliquant un 0 sur l entrée adéquate. Par exemple, pour afficher le nombre deux, il faut la combinaison a=0, b=0, c=1, d=0, e=0, f=1 et g=0 sur les entrées. Par ailleurs, il est possible d accéder qu à un seul des quatre afficheurs à la fois. Cependant, l utilisation de la perception rétinienne permet de s affranchir de cette contrainte. Noter que la gestion des périphériques n est pas à prendre en charge dans les développements. Un fichier VHDL contenant les modules de pilotage des différents périphériques vous sera fournis pour l implémentation D. Dallet, C. Leroux & C. Jego 2 Bordeaux IPB ENSEIRB-MATMECA
Fig. 2: Exemple de trancodage du processeur minimale 8 bits sur la carte Spartan3. Partie 1 : Conception du processeur Règle à respecter : il est demandé de faire une description VHDL pour chaque élément de chacune des trois parties constituant le processeur minimale 8 bits. En outre, un test-bench VHDL doit être également écrit pour valider la fonctionnalité de chacun des éléments. 1 Bloc de la partie opérative Décrire en VHDL puis valider par simulation comportementale la fonctionnalité de chaque élément constituant ce bloc à savoir : registres, bascules, UAL. 2 Bloc de mémorisation Décrire en VHDL puis valider par simulation comportementale la fonctionnalité de la mémoire RAM synchrone simple port décrite dans la partie préliminaire. Rappelons que pour faciliter la mise en œuvre, nous avons choisi d utiliser une mémoire synchrone sur front descendant de l horloge (bloc synchrone qui ne rajoute pas de cycle supplémentaire lors des accès). Aide no.1 : parmi les types disponibles dans le langage VHDL, un type est bien utile pour décrire les mémoires, à savoir les ARRAY (ou tableaux en français), dont l utilisation est la suivante : TYPE un tableau IS ARRAY (0 TO borne max) OF type données tableaux ; Type données tableaux peut être un type énuméré (BIT, STD LOGIC, STD LOGIC VECTOR etc... ) ou un autre type comme entier par exemple. Le nouveau TYPE un tableau peut ensuite être utilisé pour la description d un signal, d une constante ou d une variable, par exemple de la façon suivante : SIGNAL mon tableau : tableau ; D. Dallet, C. Leroux & C. Jego 3 Bordeaux IPB ENSEIRB-MATMECA
Puis l utilisation dans la description architecturale de la déclaration, mon tableau(x) correspond à l élément (du type type données tableaux) placé à la position X dans le tableau mon tableau. Aide no.2 : il est nécessaire dans ce projet de pouvoir correctement transformer un signal de type STD LOGIC VECTOR A std logic vector en signal de type INTEGER A integer. Pour cela il faut ajouter la librairie suivante en début de description : IEEE.NUMERIC STD.ALL Puis utiliser la conversion suivante : A integer <= TO INTEGER(UNSIGNED(A std logic vector)) ; 3 Bloc de contrôle Décrire en VHDL puis valider par simulation comportementale la fonctionnalité de la FSM obtenu à partir du graphe d états défini lors de la partie préliminaire. Une attention particulière vous sera demandée pour l écriture du test-bench de la FSM. Cet élément étant particulièrement critique, vous devez vous assurer que le test-bench est véritablement exhaustif. Décrire en VHDL puis valider par simulation comportementale la fonctionnalité des autres éléments constituant la partie contrôle à savoir : compteur programme PC, registre d instruction IR et multiplexeur. Décrire en VHDL puis valider par simulation comportementale la fonctionnalité de la partie contrôle proprement dite qui correspond à l instanciation de la FSM avec les trois autres éléments. 4 Bloc dit top level (processeur) Décrire en VHDL puis valider par simulation comportementale la fonctionnalité du bloc top level qui correspond à l instanciation : de la partie opérative, de la partie mémorisation, de la partie contrôle. La validation fonctionnelle du processeur implique le positionnement d un programme dans la mémoire. Pour ce faire, il est conseillé d utiliser l exemple de l annexe 1 du document de la partie préliminaire. Partie 2 : implémentation sur la carte Insérer à votre projet sous ISE, le fichier VHDL assurant la gestion des périphériques de la carte Spartan3 de chez Digilent. D. Dallet, C. Leroux & C. Jego 4 Bordeaux IPB ENSEIRB-MATMECA
Le contenu du fichier de contrainte (.ucf) nécessaire à la configuration des pinouts du circuit FPGA pour le projet est fourni en annexe 3. Inspirez vous de ce fichier pour spécifier le votre. Dès lors, l implémentation de l architecture est possible. Effectuer les étapes successives du flot de conception d ISE : synthèse logique, placement-routage et génération du fichier bitstream. Soyez attentif aux messages donnés et évaluer la complexité de votre architecture à l issue de la synthèse puis après placement-routage. La fréquence de fonctionnement obtenue est-elle conforme à la fréquence d horloge du quartz de la carte? Partie 3 : Prototypage de votre projet sur la carte Spartan3. Si vous avez respecté les consignes tout au long du module, cette dernière étape doit être une formalité. Assurer vous du bon fonctionnement de votre processeur lors de l exécution du premier programme. Si tel est le cas, modifier le contenu de la mémoire pour demander la recherche du PGCD des nombres 40 et 24 puis exécuter le projet sur la carte de prototypage. Pour cela, il est nécessaire de recommencer l ensemble des étapes du flot de conception puis de configurer le circuit FPGA à partir du nouveau fichier bitstream. D. Dallet, C. Leroux & C. Jego 5 Bordeaux IPB ENSEIRB-MATMECA