Vous êtes sur la page 1sur 41

Compte rendu des Tps Socs

Réalisé par : Encadré par :


 Nada El BOUSTAOUI  Mr Z. ALAOUI
 Aicha BIROUTI
 Hamza AL ABKADRI
 Yassine KARDID

Année universitaire 2017/2018


Introduction général
Un system on a chip (SoC) ou système sur une puce est un circuit intégré qui
rassemble les principaux composants d'un ordinateur sur une seule puce
électronique.
Un system on a chip comprend ainsi le processeur central à un ou plusieurs
cœurs de calcul, un processeur graphique, de la mémoire statique ou dynamique
(Flash, RAM, ROM,EPROM...),des capteurs ou coprocesseurs et une
puce radio pour les communications sans fil (Bluetooth, Wi-Fi) ou cellulaires.
Avantages et inconvénients du SoC
Le SoC s'est popularisé avec l'informatique nomade, en particulier
les smartphones et les tablettes tactiles ainsi que les systèmes embarqués. Son
faible encombrement ainsi que sa consommation d'énergie réduite facilitent le
design des terminaux mobiles.
Là ou un ordinateur équipé d'une carte mère permet de faire évoluer les
composants individuellement, l'extrême intégration du SoC présente en revanche
l'inconvénient de n'autoriser aucune mise à jour du matériel.
Les concepteurs de SoC
Les principaux concepteurs de system on a chip sont :

 Apple ;
 Broadcom ;
 Intel ;
 Nvidia ;
 Qualcomm ;
 Samsung ;
 Texas Instrument.

Leurs system on a chip sont basés soit sur une architecture x86 (Intel
uniquement) soit sur une architecture ARM, qui est la plus répandue.
TP VGA
TP01

Test de fonctionnement des Leds par le


Microblaze

1-Introduction
Dans ce TP, nous allons créer un projet matériel contenant le processeur
Microblaze et un projet logiciel contenant le code C pour faire clignoter 8 Leds
dans la carte de démonstration en séquence.

2- création du processeur Microblaze


Pour créer un projet matériel contenant le processeur Microblaze il faut suivre les
étapes suivantes :
D’abord il faut démarrer Xilinx Platform Studio et choisir l’emplacement du projet.

Après sélectionner la première option pour créer un nouveau design


Ensuit on Choisit la carte qu’on va utiliser dans notre cas on travaille la carte FPGA
SPARTAN 3E.

Maintenant on choisit la première option qui nous permettra de générer un seul


processeur.
Dans cette étape on va sélectionner les périphériques à utiliser.
Dans notre projet on a besoin de la liaison RS232 pour le transfert des données et
les Leds 8Bits pour faire le test.

Pour Controller les Leds il faut qu’on les connecte au processeur à travers le bus
local du processeur mb_plb dans le Bus interface.
Ensuit on va vérifier que les Leds sont connecter au port externe.

Après la conception de notre processeur il faut cliquer sur Export Design est lancer
la SDK
Maintenant on va créer un nouveau C Xilinx Project

Ensuit on va embarquer notre processeur dans la carte FPGA SPARTAN 3E il faut


cliquer sur program FPGA.
On test le fonctionnement de notre processeur par un programme qui affiche
‘’Hello World ‘’ dans le console.

3 Test de fonctionnement
Pour tester fonctionnement des Leds on a réalisé un programme avec le langage C
qui permet d’allumer les 8 Leds en séquence.
TP02 et TP03

Création d'un périphérique personnalisé et son ajout à un système


intégré Microblaze

Objectifs :

 Créez un noyau IP avec l'interface PLB.


 Connectez le nouveau noyau IP au système embarqué Microblaze.
 Effectuez la communication avec le nouveau noyau
PARTIE I : Génération du l’IP.
Les étapes de création d’un IPcore :
1. On clique sur « Create or Import Peripheral » Cet assistant va nous guider à
travers les étapes requises pour créer un nouveau périphérique. Cliquer sur
Suivant pour continuer.
2. La deuxième page de l'assistant nous demande si nous souhaitons créer un
nouveau périphérique ou importer un cœur déjà créé. Sélectionner "Créer
un modèle pour un nouveau périphérique", puis appuyer sur "Suivant"
comme illustré à la suivante. L'assistant nous guidera dans les étapes
nécessaires pour créer les fichiers requis pour construire et connecter votre
nouveau périphérique (matériel et logiciel).
3. La fenêtre suivante demande à propos de l'emplacement où nous voulons
stocker les fichiers pour notre nouveau périphérique. Nous avons ici deux
options comme le montre la Figure. La première option stocke le core dans
un référentiel global afin qu'il soit accessible dans tout projet que nous
créons. La seconde option stocke le nouveau périphérique dans le
répertoire local de notre projet et sera donc accessible uniquement dans
notre projet. Comme ce n'est qu'un tutoriel, on sélectionne la deuxième
option, puis on appuie sur "Suivant".
4. Dans la fenêtre illustrée à la figure suivante, nous devons entrer le nom et la
révision du périphérique. L'assistant nous permet de créer différentes
révisions du même noyau ainsi que de partir de zéro. Notons que le nom de
base ne doit contenir que des lettres minuscules et des chiffres. Dans cet
écran, nous pouvons également ajouter une description à notre cœur.
Donnons un nom à notre nouveau noyau IP, par exemple "myip". On tape le
nom et on donne la description si nécessaire, puis on appuie sur "Suivant"
pour continuer.
5. Dans cette étape, nous devons sélectionner le type d'interface pour notre
périphérique. Xilinx EDK prend en charge 3 types de normes d'interface
dans ses systèmes embarqués. Le premier et le plus récent est l'architecture
AXI4 qui est conçue pour différents types de stratégies de communication.
Le second type est le "Bus Local du Processeur (PLB 4.0)" qui est une
architecture de bus standard pour connecter Microblaze et son
périphérique dans une structure de bus partagée. Ce standard de bus sera
utilisé dans ce tutoriel. Le dernier type d'interface est le "Fast Simplex Link
(FSL)" qui est un lien FIFO dédié entre le processeur et le périphérique. Le
Microblaze prend en charge un nombre limité de liaisons FSL mais ce canal
de communication garantit la communication la plus rapide entre le
périphérique et le processeur. Sélectionnons le "Processeur Bus local (PLB
4.0) "puis appuyons sur" Suivant ".

6. Le bus PLB est basé sur une configuration maître / esclave. Le bus peut avoir
plusieurs maîtres et esclaves. Le maître initie les transactions et contrôle le
flux de données, tandis que le périphérique esclave attend une transaction
du maître. Le maître du bus envoie des demandes à un espace adresse
spécifique, et le périphérique esclave décode cette adresse et répond à la
requête si l'adresse est reconnue. L'adresse de chaque périphérique est
unique et toutes les transactions sont mappées en mémoire. Dans cette
étape, nous spécifions la configuration du cœur que nous allons créer.
L'assistant ajoutera un bloc logique VHDL pour l'esclave, le maître ou les
deux si nécessaire. Vous pouvez ajouter un contrôle d'interruption, une
réinitialisation logicielle, une FIFO en lecture / écriture, des registres
utilisateur, etc.
Pour les besoins de ce tutoriel, sélectionnez les options illustrées à la figure
suivante, puis appuyez sur "Suivant".

7. Dans la fenêtre représentée dans la figure suivante, nous avons la


possibilité d'ajouter la prise en charge du cache pour notre périphérique et
de modifier la largeur du bus de données. Dans notre cas, nous n'avons pas
besoin de faire des changements dans cet écran. On appuie sur "Suivant"
pour continuer.

8. Dans cette étape, nous devons spécifier le nombre de registres dans notre
conception comme le montre la figure suivante. Dans notre projet, on aura
besoin de 4 registres. Ensuite on clique sur "Suivant" pour continuer.
9. Après avoir défini la configuration principale et les composants internes, la
fenêtre de l'assistant illustrée à la Figure suivante nous permet de modifier
l'interface entre notre nouvelle logique ajoutée (IP) et l'interface de bus.
L'assistant va créer l'interface de bus pour nous et ensuite créer un module
user_logic qui contient toute la logique que nous avons sélectionnée dans
l'assistant. Cet écran nous permet de changer les signaux entre l'interface
du bus et notre logique utilisateur. Appuyons sur "Suivant" pour continuer.
10.Pour effectuer la simulation des conceptions EDK, des fichiers
supplémentaires seront nécessaires et ajoutés. Dans notre cas, on n’aura
pas besoin de la plate-forme de simulation BFM. Alors on passe en cliquant
sur « suivant ».
11.La dernière étape de l'assistant contient trois options finales :
 L'option de générer le module user_logic dans Verilog plutôt que dans
VHDL.
 L'option de générer un projet ISE pour aider à la mise en œuvre de notre
noyau. Le projet ISE généré peut être utilisé pour vérifier le noyau avant
l'intégration dans l'EDK.
 La dernière option consiste à créer un pilote logiciel pour le noyau à utiliser
lors du développement logiciel. On effectue la sélection comme indiqué
dans la Figure suivante, puis on appuie sur "Suivant" pour continuer. Les
étapes de l'assistant sont maintenant terminées et le modèle de notre
conception est créé.
PARTIE II : Modification du l’IP généré.
Dans la première partie on a créé tous les fichiers nécessaires à l'intégration de
notre core dans une conception EDK. Les fichiers créés sont stockés dans deux
répertoires principaux "pcores" et "drivers". Le premier inclut tous les fichiers
pour la construction matérielle tandis que le second contient les pilotes logiciels
créés par l'assistant.
Etape1 : on ouvre le projet « myip » dans le « ISE navigator » , et puis, le fichier
"user_logic.vhd". L'assistant a créé une entité appelée "user_logic". La déclaration
pour cette entité est illustrée dans la figure suivante.
L'architecture du "user_logic" est composée de plusieurs blocs:
 Déclaration du signal: Les signaux sont définis pour chacun des quatre
registres "slv_reg0" à "slv_reg3". Des signaux sont également définis pour
les signaux de sélection en lecture / écriture et l'accusé de réception en
lecture / écriture.
 Signaux de sélection de registre: Les signaux de bus sont décodés ici pour
générer des signaux de sélection de lecture / écriture et d'acquittement de
lecture / écriture, comme indiqué sur la figure.
 Processus d'inscription et d'écriture: Ce segment de code décrit un
processus utilisé pour écrire dans chacun des quatre registres.
 La dernière partie de l'architecture connecte les signaux d'acquittement et
les signaux de données dans les signaux de bus.

Après avoir étudié chaque composant du module "user_logic", nous allons le


modifier pour effectuer des opérations de soustraction et d'addition simples.
Nous allons simplement soustraire le contenu des deux premiers registres et
stocker les résultats dans le Registre2. Nous ajouterons également le contenu des
deux premiers registres et enregistrerons les résultats dans le registre 3.
PARTIE III : Ajout du noyau IP généré au système Microblaze
En troisième partie, Nous allons ajouter le périphérique nouvellement créé à notre
système Microblaze créé dans le tutoriel précédent. Le noyau IP que nous avons
créé dans les parties 1 et 2 prend en charge le bus PLB qui est le bus commun
utilisé dans le système Microblaze. Maintenant, nous allons ajouter le nouveau
noyau au système, le connecter au bus, lui donner un espace d'adressage, puis
reconstruire le système pour générer un nouveau flux de données (fichier). Et ceci,
en appliquant les étapes suivantes :
1. On ouvre le kit EDK après avoir créé le nouveau core, on sélectionne le
"catalogue IP" dans la partie gauche de la fenêtre principale de Platform
Studio, comme indiqué dans la figure suivante.
2. Nous remarquons que le noyau que nous avons créé apparaît sous le chemin
de catalogue suivant: "Project Local Pcores-> User". Double-cliquer sur le
noyau dirigera l'outil pour ajouter une instance de ce composant à votre
conception. D'abord, il va nous demander si nous voulons ajouter "myip" à
notre conception. On appuie sur "Oui". Ensuite, il affichera une fenêtre comme
le montre la figure suivante.
Sur cette fenêtre, on peut éditer le nom de l’instance et on cliquant sur « OK », on
ajoute le composant à notre conception. Le composant est alors prêt à être
connecté au bus PLB commun de MicroBlaze. On Clique sur le "+" signe à côté du
nom du noyau ("myip_0"), vous remarquerez une connexion nommée "SPLB" qui
signifie "esclave PLB". Cela indique simplement que ce composant peut être
connecté au bus PLB en tant que composant esclave. Donc on choisit la connexion
"mb_plb" dans la liste.
3. Nous devons donner à notre composant nouvellement ajouté un espace
d'adresse à utiliser pour accéder à ses registres. Pour ce faire, on clique sur
l'onglet d'adresse dans la partie droite de la fenêtre du studio de la plate-
forme.
À ce stade, nous n'avons qu'à donner à notre nouveau composant une adresse de
départ. Cela peut être n'importe quelle adresse tant qu'elle n'est utilisée par
aucun autre composant.
Nous sommes maintenant prêts à construire le nouveau matériel. On clique sur
"Générer BitStream".
PARTIE IV: Modification du logiciel
1. On démarre le SDK, ensuite, on sélectionne "Xilinx Tools-> Repositories".
Cela nous permettra d'ajouter le répertoire local du projet comme source
pour les pilotes. Dans les "Dépôts locaux", cliquez sur "Nouveau", puis
sélectionnez le répertoire local du projet.
2. On crée un projet logiciel , Dans ce projet, nous allons écrire un logiciel pour
accéder au noyau et tester ses fonctionnalités. Les valeurs
MYCORE_SLV_REGX_OFFSET sont définies par le pilote pour chaque
registre. La sortie est dirigée vers la sortie standard. Cette sortie standard
peut être le port série RS232. Les paramètres de la sortie standard, du
système d'exploitation et des pilotes peuvent être modifiés en cliquant sur
"Modifier les paramètres de ce BSP" dans le fichier "System.mss" du projet
BSP (par exemple "Hello_world_bsp").
On compile le code, puis on sélectionne "Xilinx Tools-> Program FPGA" pour
télécharger le design sur le FPGA et l'exécuter.
TP04

Création d’une IP pour afficher un message dans la


LCD

1-Introduction
En utilisant l'assistant de création et importation de périphériques de Xilinx
Platform Studio (XPS) pour générer les modèles de périphériques. Nous aavons
ajouter une logique d'interface LCD dans notre modèle de MicroBlaze. Ensuite
nous avons connecté le périphérique au système et ajouter des contraintes
d'emplacement de broche pour connecter le périphérique du contrôleur LCD à
l'écran LCD intégré. Enfin, on a vérifié l’opération dans le matériel en utilisant
l'application logicielle fournie.

2-Création de l’IP
On va ajouter une nouvelle IP ‘’lcd_ip’’ à notre processeur qu’elle va contrôler
notre LCD.
On va sélectionner le bus local processeur pour le transfert des donnée
On va utiliser un seul registre dans notre IP

L’IP qu’on a créé s’apparait parmi les catalogues des IP


Ensuit on va modifier le contenu du fichier MPD

on définit le port du LCD dans le fichier MPD qu’il est composé


de 7 pins
Dans le fichier user_logic.vhd on ajoute le port ‘’lcd’’

on fait la déclaration du signaux qui contrôle la LCD.


Ensuite on ajoute le code suivant dans la partie user implémentation

Après on déclare le port ‘’lcd’’ dans user port.


Après on fait la mapping de notre port que nous avons déjà déclaré.

On clique sur Rescan User Respetories, dans projet pour prendre en compte les modification
ajouées.
Maintenant on ajout l’IP qu’on a créé à notre processeur

On connecte par la suite l’IP au local bus du processeur


Dans ports on met l’IP comme port externe.

On affecte une addresse a note IP


Dans le fichier system.ucf on ajoute les contraintes nécessaire.

3-Test du fonctionnement
Après la conception de notre processeur MicroBlaze, on fait Export Design, et
après programmer un code C qui affiche le message suivante dans l’écran LCD