ASR1 – TD11 : Un vrai RISC dans mon FPGA ! A. Chis, M. Gallet, B. Pasca
ASR1 – TD11 : Un vrai RISC dans mon FPGA !
{Andreea.Chis,Matthieu.Gallet,Bogdan.Pasca }@ens-lyon.fr
11-12, 18-19, d´
ecembre 2008
Nous allons donc r´
ealiser ici un vrai processeur RISC 16 bits, plus pr´
ecis´
ement celui que
nous sommes parvenus (non sans mal !) `
a sp´
ecifier lors des derniers TD. Pour ce faire, nous
allons le d´
ecrire int´
egralement en VHDL, puis nous l’impl´
ementerons sur un FPGA (Field-
Programmable Gate Array), un circuit int´
egr´
e compl`
etement programmable capable d’impl´
ementer
n’importe quel circuit.
1
ASR1 – TD11 : Un vrai RISC dans mon FPGA ! A. Chis, M. Gallet, B. Pasca
1 FPGA
Cette section n’a pas vocation `
aˆ
etre un cours complet sur les FPGA, mais juste une pr´
esentation
rapide pour que vous ayiez une id´
ee de la mani`
ere dont votre processeur RISC va ˆ
etre im-
plant´
e.
1.1 Vue g´en´erale
Le paradigme qui se cache derri`
ere les FPGA est le parall´
elisme pouss´
e`
a l’extrˆ
eme, jus-
qu’au niveau le plus fin (on parle de fine-grain parallelism) : il s’agit d’avoir un grand nombre
de toutes petites unit´
es de calcul programmables, reli´
es entre eux par suffisamment de fils pour
ne pas risquer de congestion.
Ces unit´
es de calcul (ou PE, pour processing elements) sont toutes identiques et g´
en´
eralement
regroup´
ees en ˆ
ılots de 4ou 8PE en g´
en´
eral. Ces ˆ
ılots sont ensuite dispos´
es sur une grille
bidimensionnelle : un FPGA classique en compte plusieurs milliers1.
Les ˆ
ılots sont ensuite reli´
es entre eux grˆ
ace `
a une matrice de routage programmable, per-
mettant ainsi d’effectuer toutes les connections n´
ecessaires entre les ˆ
ılots d’un circuit, et ce, o `
u
qu’ils soient situ´
es sur le FPGA.
On trouve aussi sur tout le pourtour du FPGA des ports d’entr´
ee/sortie (I/O blocks) eux
aussi programmables et accessibles par la matrice de routage, permettant ainsi de lire ou d’en-
voyer des signaux sur les plots du FPGA, et donc de l’interfacer avec le monde ext´
erieur.
G´
en´
eralement, un FPGA contient aussi de quelques dizaines `
a plusieurs centaines de pe-
tits blocs de RAM (RAM blocks) de 16 ou 18kbits chacun, dispos´
es en colonnes r´
eguli`
erement
r´
eparties sur la surface de la puce.
Sur les mod`
eles les plus r´
ecents, on y trouve aussi des petits multiplieurs 18 ×18 bits, voire
carr´
ement des cœurs de processeurs classiques (PowerPC ou ARM).
Voici de mani`
ere tr`
es simplifi´
ee l’architecture globale d’un FPGA, ainsi que le d´
etail d’un
ˆ
ılot :
Matrice de routageRAM blocksI/O blocks
1Celui que nous allons utiliser en a 13 696, mais c’est un gros mod`
ele.
2
ASR1 – TD11 : Un vrai RISC dans mon FPGA ! A. Chis, M. Gallet, B. Pasca
1.2 Anatomie d’un PE
En simplifiant l`
a aussi grandement, un PE peut ˆ
etre r´
eduit `
a une petite m´
emoire program-
mable de 24×1bit (ou LUT, pour look-up table), `
a laquelle est adjoint un registre de type flip-flop
(FF).
La table permet donc d’implanter n’importe quelle fonction bool´
eenne `
a4variables en
stockant dans la LUT la table de v´
erit´
e de cette fonction. Le bit du r´
esultat de la table peut
alors soit ˆ
etre stock´
e dans le registre, soit ˆ
etre rout´
e directement vers un autre PE pour la suite
du calcul.
x1
x2
x3
x4
clk
d
y
LUT
FF
Ainsi, grˆ
ace `
a la matrice de routage, on peut cascader les PE pour calculer n’importe quelle
fonction bool´
eenne, et les FF nous permettent de cr´
eer des registres pour nos signaux. A priori,
on dispose l`
a de tout ce qu’il nous faut pour y implanter notre processeur RISC !
3
ASR1 – TD11 : Un vrai RISC dans mon FPGA ! A. Chis, M. Gallet, B. Pasca
2 Notre plateforme
2.1 Vue d’ensemble
Le FPGA sur lequel nous allons travailler se trouve sur une carte de d´
eveloppement mu-
nie de plein de ports d’entr´
ee/sortie tels que USB, RS232 (port s´
erie), PS/2, audio, SATA,
VGA,... ainsi que d’un emplacement pour une barrette de m´
emoire DDR. Tous ces ports et
p´
eriph´
eriques sont bien entendu directement interfac´
es avec le FPGA grˆ
ace aux I/O blocks de
celui-ci. La carte dispose en plus d’une horloge cadenc´
ee `
a100MHz, reli´
ee elle aussi `
a un port
d’entr´
ee du FPGA.
2.2 Contrˆoleur vid´eo
Le contrˆ
oleur vid´
eo affiche `
a l’´
ecran une r´
esolution de 640 ×480 pixels en 24 bits / pixel
(16 millions de couleurs).
Il s’agit en effet du contrˆ
oleur ´
etudi´
e par le premier DM. Ce contrˆ
oleur est mapp´
e sur
l’espace d’adressage correspondant `
a : 001X XXXX XXXX XXXX
2.3 Contrˆoleur PS/2
Le protocole PS/2 est un protocole s´
erie sur deux fils, `
a la I2C, le maˆ
ıtre ´
etant le p´
eriph´
erique.
Ce bus est bidirectionnel : le clavier (ou la souris) peut ´
ecrire sur le bus, mais peut aussi recevoir
des donn´
ees, comme par exemple l’´
etat allum´
ee/´
eteinte des LED sur le clavier. Le contrˆ
oleur
´
ecrit pour ce TD ´
etant tr`
es simpliste, il se contente d’´
ecouter sur le bus, mais n’y ´
ecrit jamais
rien.
Les messages envoy´
es par le p´
eriph´
erique font toujours 11 bits de long : 1bit de d´
ebut de
transmission, 8bits de donn´
ees, 1bit de parit´
e impaire et enfin 1bit de fin de transmission.
De mani`
ere `
a ne pas avoir `
a g´
erer les ph´
enom`
enes d’interruptions dans notre processeur, le
contrˆ
oleur PS/2 fonctionnel est equip´
e avec une file d’attente cyclique, longue de 254 ´
el´
ements,
cache pour le processeur. Dans cette file d’attente ne seront stock´
es que les 8bits de donn´
ees
de chaque transmission du p´
eriph´
erique.
Ce contrˆ
oleur est mapp´
e sur l’espace d’adressage correspondant `
a :
010X XXXX XXXX XXXX
2.4 M´emoire
La m´
emoire DDR ´
etant r´
eellement une horreur `
a g´
erer, nous allons nous contenter d’uti-
liser la m´
emoire disponible sur le FPGA sous forme de RAM blocks de 16kbits. En effet, ces
blocs ont le m´
erite d’ˆ
etre rapides d’acc`
es, mais aussi et surtout de disposer de deux paires
ind´
ependantes de ports lecture/´
ecriture. Ainsi, nous n’aurons pas `
a nous soucier des acc`
es si-
multan´
es `
a la m´
emoire. De plus, les RAM blocks proposent plusieurs modes d’adressage, de
16k×1bit `
a512 ×32 bits, ce qui va nous permettre de g´
erer diff´
erentes tailles de donn´
ees de
mani`
ere transparente.
Comme le processeur RISC que nous allons implanter est un processeur 16 bits, les mots
m´
emoire font 16 bits de mˆ
eme que les adresses. L’espace m´
emoire maximal est donc 216 ×16
bits.
4
ASR1 – TD11 : Un vrai RISC dans mon FPGA ! A. Chis, M. Gallet, B. Pasca
Comme nous ne disposons pas de suffisement de RAM blocks pour r´
ealiser cette m´
emoire,
nous allons nous limiter `
a l’utilisation de 8RAM blocks de 1K×16 bits. Nous ne pourrons
donc addresser que 213 mots de 16 bits.
L’interconnexion des blocs se fait d’une mani`
ere transparente en VHDL, en instantiant sim-
plement une m´
emoire de 213×16bits
On a donc le mapping suivant, avec la zone de m´
emoire libre de 0x4001 `
a0xFFFF :
0x1FFF
Processor Memory
0x0000
0x20000x3FFF
Display Controller
0x4000
Keyboard Controller
...
Place to map other pheripherials
2.5 Processeur RISC 16 bits. Nom de code TRAJAN
Voici une sp´
ecification compl`
ete du processeur tel qu’il a ´
et´
e d´
efini lors des TD pr´
ec´
edents,
avec ce que nous avons modifi´
e.
2.5.1 D´ecoupage d’une instruction
Plusieurs registres jouent un rˆ
ole particulier :
PC : Program Counter
ACC : ACCumulateur, alias R0
SP : Stack Pointer, alias R127
SR : Status Register `
a 3 bits, contenant les flags Z,V,N
Le d´
ecoupage d’une instruction se fait de la fac¸on suivante :
7 bits sont utilis´
es pour num´
eroter les registres,
1 bit suppl´
ementaire signale si SR est mis `
a jour par l’instruction,
5 bits sont consacr´
es `
a la d´
efinition de l’instruction, ce qui laisse 32 instructions possibles,
3 bits sont r´
eserv´
es `
a la condition d’ex´
ecution de l’instruction :
1. GT :>0N=Vet Z= 0
2. GE :0N=V
3. EQ := 0 Z= 1
4. NE :6= 0 Z= 0
5. LE :0Z= 1 ou N6=V
6. LT :<0N6=V
7. VS : d´
epassement de capacit´
eV= 1
8. NC : le branchement se fait toujours
3 Liste des instructions
L’instruction est conditionn´
e par les 3 bits ccc, et SR ne sera chang´
e que si sest `
a1.
5
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !