Vous êtes sur la page 1sur 4

A.

U 2023-2024 Bureau d’Etudes : Architecture des circuits numériques complexes


Groupe: 3AGE2 Electronique et Microélectronique

Enseignantes Responsables : Dr. Faten BEN ABDALLAH & Dr. Sawssen LAHIANI

Projet 1 : Prototypage d’un microprocesseur RISC-V sur


FPGA
1. But
Le but de ce projet est le prototypage d’un microprocesseur (µp) RISC-V monocycle sur une
plateforme reconfigurable de type FPGA : ZYBO (ZYnq BOard) basée sur le SoC (System On
Chip) Xilinx Zynq-7010 avec processeur ARM Cortex-A9 double cœur 650 Mhz.

Nous allons au fil des séances réaliser les tâches suivantes :

1. Description des différents éléments du µp RISC-V en VHDL.


2. Simulation et validation avant synthèse du µp.
3. Simulation et validation après placement/routage.
4. Programmation et test sur carte ZYBO (ZYnq BOard).

2. Travail demandé
- Décrire chacun des blocs en VHDL sous l’environnement Questa Sim.
- Simuler l’ensemble du processeur avant synthèse. Pour cela écrire un code qui permet de
tester l’ensemble des instructions sera initialisé dans la mémoire d’instructions. Vous
pouvez utiliser le logiciel Ripes pour récupérer le codage des instructions.
- Synthétiser le µp. Donner le résultat de la synthèse en terme de ressources utilisées (nombre
de pins, nombre de LUTs,…).
- Effectuer une simulation après placement routage. Cette simulation tiendra compte des
contraintes temporelles (temps de propagation...).
- Utiliser la carte de programmation ZYBO (ZYnq BOard) en développant un petit
programme qui permet d’afficher un résultat de calcul sur les LEDs ou les afficheurs 7
segments.

3. Architecture du µp
L’architecture du µp RISC-V monocycle que nous allons implémenter est donnée par la Figure
1. Cette architecture est longuement présentée lors des séances de cours.

Les caractéristiques globales du processeur à prototyper sont les suivantes :


- Instructions codées sur 32 bits.
- 32 registres entiers de 32 bits chacun notés R0 à R31.
- Type de données : 32 bits entiers (mot).
- Mémoire adressable par mot, adresse mémoire sur 6 bits (64 mots).

1
A.U 2023-2024 Bureau d’Etudes : Architecture des circuits numériques complexes

Figure 1 : Chemin de données du RISC-V monocycle

2
A.U 2023-2024 Bureau d’Etudes : Architecture des circuits numériques complexes

3.1. Description du bloc ALU


Il s’agit de l’unité arithmétique et logique (nommé ALU dans la Figure 1). Ce bloc combinatoire
permet de réaliser les calculs arithmétiques et logiques par rapport au jeu d’instructions du
processeur RISC-V.

Le Tableau donne la liste des signaux d’entrée et de sortie utilisés par ce bloc.

Signal Direction Type Description


a entrée 32 bits 1ère opérande
b entrée 32 bits 2ème opérande
op entrée toperation Cette entrée définit l’opération à effectuer par l’ALU
c sortie 32 bits Le résultat de l’opération
Tableau 1 : Liste des signaux d’entrée et de sortie utilisés par l’ALU

Dans le package pack_RISCV32I_types fourni par votre professeur, un type énuméré toperation
est défini afin de désigner les différentes opérations pouvant être réalisés par l’ALU.

Le Tableau 1 donne la dénomination de l’opération à effectuer par l’ALU (défini dans le type
toperation) et sa description.

Opération Description
OP_ADD Addition entière signée sur 32 bits entre 2 opérandes
OP_SUB Soustraction entière signée sur 32 bits entre 2 opérandes
OP_AND « ET » logique entre 2 opérandes entiers
OP_OR « OR » logique entre 2 opérandes entiers
OP_XOR « XOR » logique entre 2 opérandes entiers
Comparaison entre 2 opérandes entiers signés. Le résultat prend la valeur 1 dans le
OP_EQ
cadre d’égalité et 0 sinon
Comparaison entre 2 opérandes entiers signés. Le résultat prend la valeur 1 dans le
OP_NEQ
cadre de non égalité et 0 sinon
Comparaison entre 2 opérandes entiers signés. Le résultat prend la valeur 1 dans le
OP_LT
cadre d’infériorité de l’opérande 1 et 0 sinon
Comparaison entre 2 opérandes entiers non signés. Le résultat prend la valeur 1
OP_LTU
dans le cadre d’infériorité de l’opérande 1 et 0 sinon
Comparaison entre 2 opérandes entiers signés. Le résultat prend la valeur 1 dans le
OP_GE
cadre de supériorité de l’opérande 1 et 0 sinon
Comparaison entre 2 opérandes entiers non signés. Le résultat prend la valeur 1
OP_GEU
dans le cadre de supériorité de l’opérande 1 et 0 sinon
Décalage à gauche du premier opérande entier non signée de n positions. La valeur
OP_SLL
de n est donnée par les 5 bits de poids faible du deuxième opérande non signé
Décalage à droite du premier opérande entier non signée de n positions. La valeur
OP_SRL
de n est donnée par les 5 bits de poids faible du deuxième opérande non signé
Décalage à droite du premier opérande entier non signée de n positions. La valeur
OP_SRA
de n est donnée par les 5 bits de poids faible du deuxième opérande non signé
OP_PASSA Le résultat prend la valeur du premier opérande
OP_PASSB Le résultat prend la valeur du deuxième opérande
Tableau 1 : Description des opérations effectuées par l’ALU

3
A.U 2023-2024 Bureau d’Etudes : Architecture des circuits numériques complexes

3.2. Description du banc de registres


Il s’agit du bloc nommé « RegBank » dans la Figure 1. Il s’agit du banc de registres constitué de
32 registres de 32 bits chacun. Ces registres sont accessibles à la lecture et à l’écriture. Le registre
d’adresse 0 contient toujours 0 même en cas d’écriture.

Le Tableau 3 donne la liste des signaux d’entrée et de sortie utilisés par ce bloc.

Taille
Signal Direction Description
(bits)
Ce signal donne l’adresse du registre source Rs1a (Voir
address_out1 entrée 5 Figure 1). Ce signal peut être lu directement depuis le
registre R
Ce signal donne l’adresse du registre source Rs2a (Voir
address_out2 entrée 5 Figure 1). Ce signal peut être lu directement depuis le
registre R
Ce signal donne l’adresse du registre de destination Rda (voir
address_in entrée 5
(Voir Figure 1). Ce signal est généré par le décodeur
Ce signal véhicule le résultat d’une instruction qui doit être
data_in entrée 32
écrit dans le banc de registres
Horloge du banc de registres. Ces registres sont sensibles aux
Clock entrée 1
fronts montants
Entrée de remise à zéro asynchrone active à niveau haut. Ce
Reset entrée 1
signal remet à zéro uniquement le banc de registres.
enable entrée 1 Entrée d’activation du banc de registre
Si ce signal est à ‘1’ alors le signal data_in est écrit dans le
Wr entrée 1
banc de registres
Ce signal est le contenu d’un registre pointe par le signal
data_out1 sortie 32
address_out1. Ce signal n’est pas synchronisé sur l’horloge
Ce signal est le contenu d’un registre pointe par le signal
data_out2 sortie 32
address_out2. Ce signal n’est pas synchronisé sur l’horloge
Tableau 3 : Liste des signaux d’entrée et de sortie du banc de registres

Vous aimerez peut-être aussi