TP1_sys_emb_sur_FPGA Fichier

publicité
TP1 - Systèmes embarqués / FPGA
Un système embarqué est une carte électronique programmable dédiée à une tâche bien précise. C’est un
ensemble matériel et logiciel qui applique souvent les techniques du temps réel.
En fonction de l’application, le système embarqué doit répondre à certaines contraintes dictées par le cahier
des charges :
1.
2.
3.
4.
5.
6.
7.
Coût de revient faible
Taille réduite
Peu gourmand en énergie
Puissance de calcul satisfaisante
Fiabilité de fonctionnement
Sécurité des données
Ouvert (interfaces)
Les composants FPGA intègrent toutes les cellules nécessaires pour embarquer des systèmes autonomes :
logique, microprocesseurs, mémoires, entrées/sorties rapides, propriétés intellectuelles couvrant tous les
domaines, …
Ce premier TP, écrit sous forme de tutoriel, montre pas à pas comment embarquer dans une plateforme
FPGA le système représenté par la figure suivante :
Première
partie
Extension
MicroBlaze : microprocesseur soft
BRAM : bloc mémoire de type RAM
LMB cntrl : contrôleur de bus mémoire (Local Memory Bus)
PLB Bus : bus synchrone dédié aux périphériques externes (Peripheral Bus)
MDM : module « debugger »
UART : interface de communication série
GPIO : interface d’entrées sorties à usage général (poussoirs, LED, …)
1
Démarrer >> Programmes >> Xilinx ISE Design >> EDK >> Xilinx Platform Studio
Créer un nouveau projet en utilisant l’outil « wizard »
Définir un répertoire de travail qui accueillera le projet portant obligatoirement le nom « system.xmp ». Choisir le
bus PLB pour la connexion des périphériques et donner le chemin de la bibliothèque du kit « Diligent_Genesys ».
Créer un nouveau « design »
Choisir le kit de développement sur lequel on travaille
2
Choisir de travailler avec un seul cœur du processeur
Sélectionner le type de microprocesseur à implémenter et le paramétrer comme ceci :
Ne garder à droite que l’Uart0, choisir son type (xps_uart1665), ainsi que les 2 contrôleurs (lmb_cntrl)
Un résumé de la configuration choisie est affiché à la fin avec les adresses affectées aux périphériques
3
Plusieurs fenêtres vont s’ouvrir dont 2 essentielles : à gauche la fenêtre projet avec un volet « Platform » et un
volet « IP » et à droite la fenêtre d’édition avec 3 volets. Le volet « Bus Interfaces » est une représentation
graphique du système avec la liste des IP et leur connectique.
Le volet « Ports » liste toutes les entrées-sorties ainsi que les connexions internes
Le volet « Adresses » représente la répartition de l’espace mémoire
4
Project >> Generate Block Diagram : pour générer un schéma bloc de l’application
1.
2.
ouvrir le fichier « system.mhs » et relever :
la liste des entrées sorties
les modules qui reçoivent l’horloge
les interfaces reliées au bus PLB
l’espace mémoire occupé par chaque élément
Ouvrir le fichier de contraintes « system.ucf » et relever les numéros des broches des entrées-sorties.
Hardware >> Generate Netlist : pour générer le fichier de description du système appelé « Netlist »
Hardware >> Generate Bitsteam : pour générer le fichier de configuration « system.bit »
Première partie logicielle :
Maintenant que la plateforme matérielle est prête, il est temps de la faire vivre avec un peu de soft. Il faut
exporter l’application vers une plateforme de développement software de type « Eclipse Platform » qui est
un outil libre.
Project >> Export Hardware Design to SDK
Inclure les fichiers (.bit) et (.bmm) puis sélectionner le répertoire de travail suivant
C:\sat\tp1\SDK\SDK_Export\hw\Workspace
File >> New >> Xilinx C Project : pour créer un nouveau projet Soft
Choisir un nouveau projet vide nommé « tp1_application_0 »
Lui associer une bibliothèque (Board Support Package) nommée « tp1_application_bsp_0 »
5
Copier le fichier « ex10.c » dans le répertoire « tp1_application_0\src » et l’inclure au projet sous SDK en faisant :
clic droit sur « src » et sélectionner « Refresh », le fichier est intégré automatiquement
On arrive à la configuration suivante où trois modules participent à la construction du projet final
Soft
Lib
Hard
Xilinx Tools >> Program FPGA : pour programmer le composant et mettre en place la plateforme matérielle
Sélectionner l’application « tp1_application_0 » et faire Run >> Run as >> Lunch on Hardware pour exécuter
le programme
Il n’y a plus qu’à se connecter au port série pour observer les messages envoyés par le programme. Sélectionner le
voler Terminal_1 et se connecter au port com sur lequel est branché le câble RS232.
Regarder dans le driver xuartns550_l.h pour comprendre la syntaxe et le rôle des fonctions utilisées dans le
programme pour configurer l’UART : XUartNs550_SetBaud et XUartNs550_SetLineControlReg
6
Deuxième partie logicielle :
Dans cette seconde partie, il faudra ajouter 2 nouvelles « IP » qui permettront d’accéder aux « Switchs » et
aux « LED » qui sont sur la platine. Il faut, dans l’ordre :
1.
2.
3.
4.
5.
6.
Ajouter 2 « IP » de type GPIO, les configurer et les renommer : « led » et « sw »
Les connecter au bus PLB
Ajouter les entrées sorties externes : « led_pin » et « sw_pin »
Créer les connexions internes
Affecter un espace mémoire de 64 kb à chacun des 2 périphériques
Compiler la plateforme matérielle
Choix du nombre de bits (led et sw) :
Connexions aux bus :
Entrées-sorties :
Connexions :
Espace mémoire :
7
Compléter le fichier de contraintes system.ucf pour imposer les numéros de broches de LED et SW.
Compiler et transférer la plateforme vers SDK. Travailler sur le même projet soft que la première partie.
Remplacer le fichier source ex11.c par le fichier ex12.c à compléter.
Essayer le fonctionnement du projet sur la platine.
Essayer le mode « debugger » et ses différentes possibilités.
Programme à compléter :
À compléter
À compléter
À compléter
À compléter
8
Téléchargement
Study collections