Vous êtes sur la page 1sur 17

Utilisation du SOPC builder pour la conception de SOPC

(System On Programmable Chip)

Prpare par : Pr I. LAGRAT


Cycle Ingnieur rseau et tlcommunication FSTS 2013/14

Le SOPC Builder permet, entre autres, de concevoir des microcontrleurs spcifiques une
application. Ces microcontrleurs comportent donc une partie processeur laquelle on
associe des priphriques (PIO, Timers, UART, USB, composants propritaires, ) et de la
mmoire. Cette dernire peut-tre embarque dans le FPGA (on parle alors de RAM/ROM On
Chip) ou lextrieur du composant FPGA. La partie microprocesseur proprement dite est le
NIOS2 de ALTERA, processeur de 32 bits qui se dcline en trois versions : conomique,
standard, rapide. La version conomique, la moins puissante, utilise le moins de ressources du
FPGA. Bien sr il est possible dintgrer dautres types de processeurs pour peu quon
dispose de leurs modles (VHDL, Verilog, ). La cration dune application SOPC
comprend les tapes suivantes :
- Cration du composant matriel (processeur + priphriques) dans lenvironnement Quartus II
- Tlchargement dans le composant FPGA (configuration) (environnement Quartus II)
- Cration du logiciel dans lenvironnement NIOS2IDE et tlchargement dans le FPGA.

Exemple : projet compteur


Pour illustrer la dmarche on propose de crer un microcontrleur disposant de huit entres et
huit sorties logiques. Le logiciel, dvelopp en langage C, effectue une incrmentation et un
affichage sur des leds dune variable via un port de sortie. Dans cette application la mmoire
utilise est intgre au composant FPGA : il sagira donc de RAM/ROM On Chip.
Environnement de travail :
PC avec Windows XP service Pack 2.
Quartus II version 8.1
Nios 2 IDE version 8.1
Dmarrer Quartus II et crer un projet en spcifiant le rpertoire de travail, le nom du projet
(SOPC2 par exemple) et le composant FPGA utilis : ici on utilise une carte Terasic DE1
quipe dun FPGA cyclone 2 EP2C20F484C7.
Dans lenvironnement Quartus lancer le SOPC Builder.
Dans la fentre Create new system , donner un nom au SOPC que lon va concevoir (ici
mon_processeur).

Dfinir lhorloge du processeur : lhorloge de la carte DE1 est de 50 MHz.

Dans la colonne de gauche, slectionner Nios II processor et faire add puis


slectionner la version conomique parmi les trois proposes. Faire next et accepter les
options par dfaut (slectionner le debugger niveau 1).

On obtient :

Dans la colonne de gauche, slectionner la mmoire puis faire add et accepter la


configuration propose:

De la mme manire, ajouter deux PIO de huit bits chacun (Parallel Inputs Outputs) : un en
entre et un en sortie. Nota : on peut les renommer en faisant un clic droit sur le composant.

Rajouter le composant JTAG UART qui permettra de communiquer avec le PC hte et


tlcharger le logiciel dans le circuit.

Revenir sur le processeur en double-cliquant dessus puis slectionner on-chip ram dans les
zones reset vector et exception vector .

Faire ensuite System puis auto-assign base adress . Ceci a pour effet dassigner
automatiquement une adresse logique chaque ressource dans lespace mmoire adress par
le processeur. A ce stade le SOPC est dfini : type de processeur, horloge, priphriques
utiliss, taille mmoire, adresses physiques des composants.
6

Pour des raisons de scurit on peut rajouter un composant sysid : celui-ci a pour rle de
donner un numro didentification au systme que lon a conu et viter ainsi de tlcharger
par erreur un programme qui ne correspondrait pas lapplication.

Une fois tous les composants rajouts, cliquer sur Generate : ceci a pour effet de gnrer
le fichier VHDL (ou Verilog suivant le choix qui a t fait) et le symbole graphique associs
au SOPC que lon vient de dfinir. A ce stade le composant a t cr.
Ouvrir une fentre graphique et double-cliquer dedans (comme lorsquon fait une saisie de
schma classique). Dans le rpertoire projet, rcuprer le symbole du SOPC cr et le placer
dans la feuille de travail. Rajouter les ports dentres-sorties et affecter les broches.

Compiler le projet : ce stade on a un fichier de programmation SOPC2.sof qui permet de


configurer le FPGA.

Dveloppement du logiciel
On peut lancer NIOS2IDE depuis le SOPC Builder de Quartus (onglet nios II) ou directement
depuis le menu programmes de windows. Les tapes sont les suivantes :
- dfinition dun espace de travail (Workspace)
- cration du projet
- cration de la bibliothque
- cration du programme
- compilation
- tlchargement et excution

1) Dfinition de lespace de travail (Workspace)


Au lancement de NIOS2IDE, un espace de travail est slectionn par dfaut. La fentre
Navigator gnralement situe gauche, rpertorie tous les projets dj existant dans cet
espace de travail. Si on souhaite changer despace faire : File => Switch Workspace puis
slectionner le nouvel espace de travail.

2) Cration du projet
Faire File => New project, cliquer sur NIOS II C/C++ application , faire next

puis slectionner un projet blanc et lui donner un nom (ex. : compteur). Dans la rubrique
select target hardware slectionner le systme sur lequel sexcutera le logiciel (ici cest le
systme mon_processeur cr prcdemment) ;

3) Cration de la bibliothque
Faire next et slectionner create a new system library puis finish.

10

A ce stade le dossier compteur apparat dans le navigateur avec le dossier


compteur_syslib .

4) Cration du programme
Faire un clic droit sur compteur et slectionner New=> source file (qui correspond au
programme en c crer).

11

Donner un nom au programme avec lextension .c (ici compteur.c).

Cliquer sur finish. Une fentre souvre dans laquelle il ny a plus qu taper le programme
dapplication.

12

Remarque : ladjonction de #include system.h permet dviter de renseigner les adresses


physiques des priphriques du systme qui a t cr.
Configuration de la librairie compteur : faire un clic droit sur
compteur_syslib[mon_processeur] et slectionner properties . Dans la bote de dialogue
slectionner system library et renseigner la bote comme ci-dessous.

13

5) Compilation
Faire un clic droit sur le projet compteur puis slectionner build project .

6) Tlchargement du programme et excution sur la cible (NIOS II HW configuration)


Le tlchargement et lexcution du programme se font par la commande run ou debug
. Cliquer droit sur le projet et slectionner :
- Run as : pour tlcharger et excuter le programme immdiatement.
- Debug as : pour tlcharger et excuter le programme en mode debug.
Commande Run as : la bote de dialogue ci-dessous souvre. Slectionner Nios II
Hardware, renseigner les rubriques Name et Project puis faire Run .

Le programme est tlcharg dans la cible puis est automatiquement excut.


Commande debug as : Le mme type de bote de dialogue que dans le mode run as
souvre. Slectionner Nios II Hardware, renseigner les rubriques Name et Project puis
14

faire Debug . La fentre de debug souvre avec le pointeur positionn sur la premire
instruction du programme excuter.
La commande Resume lance/relance lexcution.
La commande Suspend suspend lexcution du programme.
La commande Terminate arrte lexcution et clt la session.
Un double-clic dans la colonne de gauche de la fentre du programme insre un point darrt.
Un autre double-clic lenlve.

Pour visualiser et/ou modifier une variable :


a) Suspendre lexcution du programme (touche suspend), ce qui se traduit par Thread[0]
(suspended)
b) Slectionner (mise en surbrillance) alt_main(). Dans la fentre variables faire un clic
droit et slectionner add global variables . Slectionner les variables visualiser. Celles-ci
apparaissent dans la fentre, il est alors possible de slectionner le format de la variable (clic
droit sur la variable) et de modifier si besoin sa valeur (clic gauche dans value ).
15

7) Tlchargement du programme et excution sur lISS (NIOS II ISS configuration)


Cette possibilit permet de tester le programme lorsquon na pas de carte cible. Cest lISS
(Instruction Set Simulator) qui effectue la simulation du programme. La procdure est la
mme que dans le chapitre 6) sauf quon slectionne NIOS II ISS configuration.

16

Attention cependant car les entres/sorties physiques ne sont pas simules !!!!

17