Vous êtes sur la page 1sur 7

Un softcore Forth sur FPGA

TP de M1
Objectif
Dans ce TP, nous allons raliser un design de processeur Forth sur FPGA Xilinx en utilisant le 3E Spartan de la carte Digilent NEXYS2.
Le but de ce TP vise fournir plateforme dexprimentation de processeur pile. Ce TP suppose que ltudiant a dj install Xilinx ISE,
une version gratuite est disponible http://www.xilinx.com/webpack. (Version 12.4 mini)
Le processeur Forth est le processeur FC16 dvelopp par Haskell & al http://www.richardhaskell.com/files/ForthCoreMM.pdf il a t modifi
pour sadapter la carte nexys, en particulier pour lafficheur X7Seg et la Dpram et une connexion sur le sommet de pile pour laffichage
des LEDs. La version correcte se trouve sur www.lifl.fr/~dekeyser/forthnexsys2/fc16.zip

Le projet
Nous considrons comme acquis les principes fondamentaux de la carte NEXSYS, le segment de switch et lafficheur LED 7-segment, les
boutons BTN. La premire partie consiste implanter le processeur forth crit en VHDL sur la carte et de tester le programme stock en
ROM, Ensuite vous devrez raliser quelques programmes assembleur et les tester sur la carte. La seconde partie vous demande de modifier
le processeur afin dinclure dans le jeu dinstruction des instructions SIMD.

Il faudra rendre un rapport de TP sur toutes les questions poses.


Phase 1
Connectez la carte via le cble USB et placez linterrupteur en position ON. Lancez le logiciel ISE.

Pour commencer la conception, il faut crer un nouveau projet avec "File"->New


Project. Lorsque vous spcifiez le nom du projet et le rpertoire, vitez les
espaces dans le chemin. Respectez la spcification de la carte

Ensuite vous devez ajouter les sources prsentes dans le .zip, les fichiers .vhd et .ucf.
Positionnez votre horloge . Un click droit sur Generate Programming File puis dans le menu sur Process Properties on choisit la clock JTAG

La prochaine tape dans le processus cest l'ISE de Xilinx qui le fait pour vous. L'ensemble du processus peut tre ralis en cliquant
sur Generate Programming File pour votre fichier fc16_.._top.vhd.
Il vous reste charger le fichier rsultat sur la carte
Sous linux :
Chargement du design sur le FPGA sous Linux, soit en ligne de commande.

Vrifiez que votre carte FPGA soit branche et allume.


Ouvrez un terminal, seulement 2 commandes sont utiles.
La commande djtgcfg enum : cette commande permet de lister toutes les cartes connectes lordinateur.
La commande djtgcfg d Nexys2 prog i 0 f toplevel.bit

Etude exprimentale
En affichant le-> view RTL schematic on obtient les schmas suivants :

Figure le FC16 sur la carte

Figure le core FC16

Dans le fichier opcode vous trouverez lensemble de codes des instructions de ce processeur

Questions du TP : (2pts par question)


1) Identifiez les instructions implmentes.
2) Expliquez le fonctionnement du programme stock dans le fichier prom.
a.

La saisie dun nombre de 16 bits

b.

Laffichage sur le 4 digit

c.

Laffichage des Leds

d.

Le calcul sur la pile

3) Ecrire un code assembleur qui empile un mot de 16 bits partir de deux saisies sur les 8 switch puis laffiche. (Il faut
changer la prom et recompiler)
4) Modifiez successivement ce fichier pour calculer et afficher les expressions suivantes sur 8 et 16 bits :
A + B * C
A+A and A+B (on ne saisit quun fois A et B)
5) Ecrire un programme qui allume une LED sur 8 de faon cyclique et infini
6) Ecrire un programme qui converti un nombre hexa en dcimal et affiche le rsultat.
7) Tester le code suivant pour la multiplication des deux sommets de pile. Pourquoi ne pas implmenter une multiplication en
VHDL ?

Ajout dinstruction SIMD


Afin de traiter deux mots de 8 bits en mme temps, on va utiliser les mots de 16 bits et la faon de SSE le deux oprations se feront
sur les 8 bits de poids forts et les 8 bits de poids faibles en mme temps
1) Proposez une liste dinstructions qui peuvent tre SIMDises
2) Modifier le fichier opcode, Funit16 et le fichier control pour implanter ces instructions
3) Proposez un exemple de test qui valide toutes vos propositions.