Vous êtes sur la page 1sur 24

TP : Implanter un processeur dans le FPGA.

Programmer ce processeur. Acclrer le code.

0 Prsentation du TP :

Pr-requis : Avoir suivi les TP_description_schmatic_compteur-FPGA


et TP_compteur_VHDL_virtual_instruments-FPGA.
Connaissance du langage C ANSI.
Dure estime : 2 heures.
Objectif : Implanter et programmer un processeur dans un FPGA.

Vocabulaire spcifique au TP :

IP : Intelectual Properties. Les IP sont des descriptions de fonctions intgrer dans un FPGA.
Cela permet un dveloppeur un gain de temps considrable, en implantant le code des fonctions IP dj crites.

Open Bus : Cest un schma fonctionnel mettant en uvre des IP sous ALTIUM.

SoC : Systme on Chip. Cest le concept dintgrer une fonction lectronique dans un composant programmable.

Avantage dun SoC:


Accrotre les performances dun systme
Rduire le cot dassemblage
Rduire la puissance consomme
Assurer lintgrit du signal: limiter la diaphonie, les temps de propagation, la rflexion du signal haute frquence
Amliorer les contraintes mcaniques.

Technologies permettant la mise en uvre dun SoC :


Full custom
Standard cell
FPGA

Durant ce TP vous implanterez un processeur dans un FPGA.


Pour cela vous aller diter un schma Open Bus mettant en uvre
des IP.
Le processeur ainsi dcrit est un SoC.

Sommaire du TP :

1 Crer un nouveau projet FPGA.


2 Editer le fichier OPEN_BUS.
3 Dessin du TOP schma.
4 Dfinir les fichiers de contraintes.
5 Cration du projet embarqu
6 Construction du fichier Softaware platform Mise en place des API .
7 Compiler, Synthtiser, construire, Programmer le FPGA.
8 Acclration matrielle : optimisation du code C en code H.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 1 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Dans ce TP nous serons amens implanter un processeur SoC, puis le programmer en


langage C :

Cela implique le dveloppement de deux programmations en parallles :

Limplantation dans le FPGA du processeur partir dIP : HARDWARE DESIGN FLOW.


La programmation du code en C : SOFWARE DESIGN FLOW.

Organisation fonctionnelle de notre projet :

1 : La partie hard est organise autour du processeur SoC


implant dans le FPGA.

2 : Le soft, crit en langage C, dcrit le programme excut


par le FPGA.

3 : Afin de diminuer le temps dexcution du programme une


partie du code C est converti en VHDL par la fonction ASP

ASP : Application Specific Processor

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 2 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Schmas dessiner durant ce TP4 :

Schma TOP : ( HARDWARE DESIGN FLOW ):

1er Schma Open bus dessiner: tout le code dvelopp est ddi au processeur :
SOFWARE DESIGN FLOW

2me Schma Open bus dessiner: afin dacclrer lexcution la fonction CRC16 est
traduite du C en une structure intgre dans le FPGA: HARDWARE DESIGN FLOW .

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 3 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Code C calculant le CRC16 de la mmoire ( SOFWARE DESIGN FLOW ) :

Fonction main :

fonction CRC16 :

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 4 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

1 Crer un nouveau projet FPGA. Conseil : crer un nouveau rpertoire dans lequel vous
placerez tous les lments du prsent projet dont les
1.1 Repartir dun environnement vide : fichiers main.c et crc16.c

1.2 Ouvrir les fentres projet et message :

Paramtrer lenvironnement de travail dAltium Designer :


Commande System ( en bas droite ) Messages et Projects.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 5 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

1.3 Crer et renommer le projet :

Crer un nouveau projet en utilisant la commande :


File New FPGA Projet.

Cliquer droit sur le nom du nouveau projet.


Choisir la commande Save Projet as FPGA_TP4.PrjFpg pour sauvegarder le projet
dans le rpertoire de travail.

Remarque : Les caractres espace ( ) et/ou tiret (-) ne doivent pas tre utiliss dans les noms du projet ou des
documents. Le caractre underscore (_) peut tre utilis pour amliorer la lisibilit.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 6 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

2 Editer le fichier OPEN_BUS.

2.1 Ajouter au projet un fichier OPEN_BUS et sauvegarder ce fichier :


Clic droit sur le nom du projet FPGA dans longlet Projets
Commande : Add New to Project OpenBus System Document

Clic droit sur le nom Sheet1.SchDoc dans longlet Projets


Commande Save As : Open_Bus_TP4.OpenBus dans le dossier du projet.

2.2 Placer les lments OPEN BUS suivants afin de dessiner le schma en bas de page :

Elments placer :

Le schma OPEN_BUS dessiner : Remarque : le processeur TSK3000A


gre deux plans mmoires distincts :
Le plan mmoire de donnes ( MEM)
Le plan mmoires des entres sorties ( IO )

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 7 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Dessiner les liens entres les lments OPEN_BUS :


Clic gauche pour slectionner le composant WB_INTERCON1.
Menu : Place Add OpenBusPort. Placer le port sur le composant WB_INTERCON1.

Pour dessiner les liens entre les structure OPEN BUS utiliser la fonction LINK

Pour rajouter les ports aux inter connexions


utiliser la fonction ADD open bus port

Paramtrer et renommer le port du Terminal Instrument comme ci-dessous :


Pour paramtrer un lment OPEN BUS : cliquez
droit sur le composant menu CONFIGURE

Paramtrer et renommer le port dentres-sorties comme ci-dessous :

Paramtrer et renommer le port mmoire :

!
En C xram XRAM

xram en lettres minuscules

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 8 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Paramtrer le processeur comme ci-dessous :

Clic droit sur le processeur TSK 3000A Configure TSK3000A

Clic droit sur le processeur TSK 3000A Configure Processor Memory

!
Ne pas oublier de cocher

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 9 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Clic droit sur le processeur TSK 3000A puis dans longlet choisir Configure Processor
Peripherals :

!
Ne pas oublier de cocher

Clic droit sur Open_Bus_TP4.OpenBus

Compiler et sauvegarder le fichier :


Open_Bus_TP4.OpenBus

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 10 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

3 Dessin du TOP schma.

3.1 Cration du fichier schma en tte du projet FPGA :

Ajouter le fichier Sheet1.SchDoc :


Clic droit sur FPGA_TP4_Project1.PrjFpg Add New to Project Schematic.

Remarque : ce stade le schma Sheet1.SchDoc


est hirarchiquement sous le fichier OPEN_BUS.

Recompiler et sauver votre projet :

Ce que vous devez obtenir : suite la compilation du projet FPGA le schma est replac en
tte du projet.

Remarque : si des erreurs apparaissent dans la fentre


message suite la compilation cela est d au fait
que votre schma OPEN BUS nest pas complet :
rechercher et modifier les erreurs.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 11 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

3.2 Placer dans le schma le symbole cr partir du fichier OPEN BUS :

Depuis la fentre Sheet1.SchDoc


Menu : DESIGN
Commande : Create Sheet Symbol from sheet or HDL

Organiser le corps du symbole comme ci-dessous en dplaant les ports en jaune:

3.3 Placer les ports dentres sorties du FPGA dans le schma : voir schma page 2 :

Placer dans le schma les lments suivants :


Description Nom de la fonction Bibliothque
Entre de lhorloge paramtrable CLOCK_BOARD FPGA NB3000 Port-Plugin.IntLib
Test / Reset Button TEST_BUTTON FPGA NB3000 Port-Plugin.IntLib
Commande du Barre-graphe 8 LED 3 couleurs LEDS RGB FPGA NB3000 Port-Plugin.IntLib
Port vers la SRAM0 de la Nanoboard SRAM_DAUGHTER0 FPGA DB Common Port-Plugin.IntLib
Port vers la SRAM0 de la Nanoboard SRAM_DAUGHTER1 FPGA DB Common Port-Plugin.IntLib
Fonction logique inverseuse INV FPGA Generic.IntLib

Pour placer un nouveau composant :

Cliquez sur Librairies sur le bord droit de lcran


Slectionnez la bibliothque du composant
Slectionnez le composants
Placez le composant

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 12 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Schma TOP complet obtenir :

Pour attribuer une rfrence chaque fonction :


Menu : TOOLS
Commande : Annotate Schmatics Quietly

Lier les fils entre eux


A ce stade sauver et compiler le projet.

4 Dfinir les fichiers de contraintes.

4.1 Le fichier contraintes des horloges :

Ajouter un nouveau fichier contrainte au projet : cliquer avec bouton de droite sur le projet.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 13 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Il apparat un fichier texte contrainte complter :

Pour complter ce fichier contrainte nous allons utiliser des fonctions de gnration de
code intgres ALTIUM :

Do la ligne jointe au fichier de contraintes :

Faire de mme pour les contraintes imposes lhorloge du JTAG :

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 14 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Vous devez maintenant obtenir le fichier ci-dessous. Sauvegardez ce fichier.

4.2 Appel du fichier contrainte liant les broches du FPGA aux priphriques implants sur la
Nanoboard 3000 :

Faites apparatre la fentre de visualisation des composants :

Menu : VIEW
Commande : Device VIEW

Assurez-vous que la Nanoboard est bien connecte votre PC :

Cliquez droit sur licne de la Nanoboard et configurez le projet FPGA :

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 15 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

A lissue de cette tape un deuxime fichier contrainte est li votre projet :

La fentre ci-dessous vous invite spcifier les fichiers contraintes que vous voulez
utiliser pour votre prochaine phase de compilation/synthse/programmation.

Pour la prsente application vous devez joindre le


fichier contrainte dcrivant les conditions sur les
horloges et le fichier contrainte spcifiant la connexion
des broches du FPGA aux autres composants de la carte

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 16 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

5 Cration du projet embarqu.

Programmation du code en C : SOFWARE DESIGN FLOW.

5.1 Ajouter un projet embarqu votre environnement

Crer un nouveau projet : Menu File New Embedded Projet.


Un projet nomm Embedded_Projet.PrjEmb apparat dans longlet Projects.

Clic droit sur le nom du projet sur le projet Embedded


Commande Save Projet as Embedded_TP4.PrjFpg dans le rpertoire de travail.

5.2 A ce projet joignez les fonctions C qui seront excutes par le processeur TASK 3000 :

Clic droit pour sur Embedded_TP4.PrjFpg ,


Choisir la commande Add Existing to project slectionner les fichiers C.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 17 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

A joindre : les fonctions main.c et crc16.c

A ce stade le projet FPGA_Project1.PrjFpg dcrivant la


programmation du processeur TASK 30000 et le projet embarqu
en langage C Embedded_Project1.PrjEmb sont indpendants.

Sauvegarder le projet embarqu :


Clic droit sur Embedded_TP3.PrjFpg
Save Project.

5.3 Intgration du projet embarqu sous le projet FPGA :

2 : Faites glisser le projet Embedded_Project1.PrjEmmb


sous le processeur TSK3000A

1 : Cliquer sur structure


Edi

4 : Le projet Embarqu est maintenant sous le projet FPGA


3 : Cliquer sur File View

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 18 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

6 Construction du fichier Softaware platform : Mise en place des API .

API : Application Programming Interface


Une interface de programmation est une fonction fournie par un programme informatique.
Elle permet l'interaction entre le programme et les couches matrielles de bas niveaux.

Un exemple, le paramtrage dune liaison srie : dbit binaire ( 9600 bauds ), nombre de bits
par octet (8) , type de parit (aucune), nombre de bits de stop (1).

Pour plus dinformation lire : Introduction to the Software platform.

clic droit sur le projet embarqu,


commande Add New to Project,
SwPlatform File.

Afin deffectuer une connexion bas niveau avec les modules dcrits dans le fichier OPEN
BUS cliquez sur IMPORT FROM FPGA

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 19 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Slectionner la version
propose par dfaut

Pour obtenir la couche suprieure du port GPIO :


Slectionnez licne vert General Purpose I/O Port
Cliquez sur Grow Stack Up

Afin de visualiser les fonctions C


accessibles clic droit

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 20 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

Cliquer sur la fonction pour obtenir le


prototype et la description de la fonction

Dveloppez la pile lie linstrument virtuel :

7 Compiler, Synthtiser, construire, Programmer le FPGA.

Cliquer sur Compile, cliquer sur Synthetize, cliquer sur Build.


Si une erreur apparat vous devez la corriger en modifiant le fichier source identifi partir
du message derreur.

Appuyer sur la touche TEST/RESET pour lancer le programme.

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 21 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

8 Acclration matrielle : optimisation du code C en code H.

La dure dexcution du programme peut tre rduite : pour cela il nous faut remplacer la
fonction CRC16.c par une structure quivalente dcrite directement en VHDL.
Nous implanterons pour cela un IP ASP dans le fichier OPEN BUS.

8.1 Evolution du fichier Open Bus :

Mise en place de la fonction ASP entre le


processeur et la mmoire SRAM tester.

Ouvrir la palette Open_Bus ( en bas droite )

Placer dans le schma les lments ASP et ARBITRER


Faites voluer votre schma Open_Bus comme ci-dessus.

Rappel de la page 8 : comment dessiner un schma Open_Bus ?


Pour dessiner les liens entre les structure OPEN BUS utiliser la fonction LINK

Pour rajouter les ports aux inter connexions


utiliser la fonction ADD open bus port

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 22 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

8.2 Paramtrage de la fonction ASP :

Double clic sur licne ASP


Slectionner la fonction CRC16

Il est demand au systme ASP de convertir le


code C de la fonction CRC16 en un code VHDL.

!
Ne pas oublier de cocher

Sauvegarder et renommer le fichier OpenBus : Open_bus_TP4_ASP.OpenBus .

8.3 Lier le fichier TOP Sheet1.SchDoc au nouveau fichier Open_bus_TP4_ASP.OpenBus.

Renommez le symbole du nom du nouveau fichier Open Bus :


Clic droit sur le corps du symbole.
Cliquez sur PROPERTIES
Modifiez le nom du symbole :

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 23 / 24


TP : Implanter un processeur dans le FPGA.
Programmer ce processeur. Acclrer le code.

8.4 Re-compiler, re-synthtiser, re-construire, Re-programmer le FPGA.

Aprs compilation il est possible de visualiser les


fichiers VHDL crit partir de la fonction CRC16.C

Comparez les vitesses dexcution des deux solutions mises en oeuvre.

******************************* Fin du TP4 ******************************

Formation ALTIUM - 4 TP_Processeur_embarque_OPEN_BUS 08/04/2013 24 / 24