TPs SoC
TPs SoC
TPs SoC
System On Chip
Travaux pratiques
2. Introduction:
● System on Programmable Chip (SOPC):
Un SOPC est un système sur puce (ou SoC) avec des “composants virtuels”.C’est un système
complet embarqué sur une puce reprogrammable de type FPGA. On a alors besoin d’une
conception conjointe logicielle/matérielle (ou codesign). Rupture dans la méthodologie
classique ! La partie matérielle est généralement implémentée dans le FPGA par un
programme (VHDL, Verilog) à l'aide d'outils spécifiques (Quartus II d'Altera ). Le logiciel est
généralement écrit (en règle générale en C ou C++) et compilé à l'aide d'un outil (Altera's
Integrated Development Environment for Nios II).
Le Nios II est un processeur 32-bits soft-core qui est implémenté dans les FPGAs. Soft-core
signifie que le processeur est décrit dans un langage de description du matériel (HDL) tel que
VHDL, Verilog, etc.
➔ Facile à comprendre
➔ Plus flexible: peut-être modifier en modifiant le code source ou certains
paramètres
➔ Portable: peut être synthétisé pour toute technologie de circuit intégré
Le processeur Nios II prend en charge donc toutes les familles FPGA et SoC Intel.
Lorsque vous réalisez un design avec Nios II, il faut encore ajouter un bus, une mémoire et des
périphériques.
● Qsys:
Le SOPC Builder est une application qui fait partie de Quartus II et qui permet de définir et
générer un SOPC. Qsys est le nouvel outil Altera SOPC Builder permettant la configuration
d’un système avec un processeur NIOS II et des périphériques (PIO, Timers, UART, USB,
composants propriétaires, ...) et de la mémoire. Qsys permet de générer automatiquement le
code HDL pour l’instanciation du processeur dans le système
● Bus Avalon:
Avalon est un bus informatique développé par la société Altera et destiné à l’implémentation
sur du matériel programmable (FPGA).
Objectif = Assurer l’interconnexion entre le processeur (NIOS II) et des circuits périphériques
(embarqués dans le FPGA ou non)
3. Présentation de la carte:
Un FPGA Altera Cyclone II
- Horloge de 50, 27 et 24 MHz
- 10 interrupteurs SW0..SW9
- 10 LEDs rouges LEDR0..LEDR9
- 8 LEDs vertes LEDG0..LEDG7
- 4 afficheurs 7 segments
- 1 port JTAG
- 4 Mbyte de mémoire Flash
- 512-Kbyte SRAM
- 8-Mbyte SDRAM
4. Génération du système:
Étape 1:
Étape 2:
- Ajouter on-chip Memory (RAM or ROM) Intel FPGA IP et dans Size, entrer 20000
Bytes.
- Cliquer sur le processeur nios, choisir onchip_memory dans Reset Vectors → Reset
vector memory et dans Exception Vectors → Exception vector memory
Étape 3:
Étape 4:
- Dans Tools, cliquer sur Nios II Software Build Tools for Eclipse pour lancer Nios II
- Eclipse.
- Dans le menu file → New, cliquer sur NIOS II Application and BSP from Template.
- Dans la fenêtre qui apparaît, dans le champ Target Hardware Information, ajouter le
fichier qui se trouve dans votre répertoire de travail, et contient l’extension .sopcinfo.
- Dans Project name, spécifier un nom de projet.
- Dans templates, sélectionner Hello World Small et cliquer sur Finish.
- Dans la fenêtre Projet Explorer, ouvrir sur le fichier que vous venez de créer.
- Double cliquer sur hello_world_small.c.
- Clic droit sur le projet dans project explorer.
- Cliquer sur Build Project.
5. Chargement et test:
Étape 1:
- Brancher la carte.
- Dans le menu Démarrer, accéder au gestionnaire de périphériques.
- Clic droit sur USB-Blaster → Propriétés → Mettre à jour →
C:\altera\13.0sp1\quartus\drivers.
Étape 2:
Étape 3:
- Dans Eclipse, Dans la fenêtre Run As, cliquer sur Nios II Hardware puis sur OK.
- Dans la fenêtre nommée Console, doit s’afficher Hello from Nios II !
TP 2 : Utilisation du processeur nios II pour
allumer les leds
2. Introduction:
Dans le Qsys, il existe ce qu’on appelle un PIO (Parallel Input/Output). Ce composant
représente dans ce TP les leds et les TPs suivants les switchs et les 7 segments.
- Data
- Direction
- Interrupt Mask
- Edge Capture
● Le registre Data:
● Software files:
- #include <Altera_avalon_pio_regs.h>
Pour lire le registre data du PIO (Ex: Switchs), on affecte à une variable de type entier la valeur
de: IORD_ALTERA_AVALON_PIO_DATA(NOM_PIO) où NOM_PIO est le nom du pio entré
lors de l’ajout du composant dans le Qsys.
- #include <System.h>
Fournit une description logicielle complète du matériel du système NIOS II et décrit pour
chaque périphérique du système: la configuration matérielle du périphérique, l'adresse de
base et les informations sur les demandes d'interruption (IRQ).
3. Travail à faire:
Au système généré dans le TP 1, on souhaite ajouter:
- Ajouter PIO (Parallel I/O) Intel FPGA IP avec 10 output et le renommer avec
ledr_pio.
- Ajouter PIO (Parallel I/O) Intel FPGA IP avec 8 output et le renommer avec
ledg_pio.
- Dans System Contents, double cliquer sur la case de la connexion interne qui
correspond à Export pour chaque pio.
Les connections entre les différents composants sont faites de la manière suivante:
Nous avons ajouté deux PIOs au système précédent. Dans pin planner, il faut faire les
affectations suivantes pour les signaux LEDG[7..0]: Y21, Y22, W21, W22, V21, V22, U21, U22
et pour les signaux LEDR[9..0]: R17, R18, U18, Y18, V19, T18, Y19, U19, R19, R20.
2. Travail à faire:
Au système généré dans le TP 2, on souhaite ajouter:
- Ajouter PIO (Parallel I/O) Intel FPGA IP avec 10 output et le renommer avec swi_pio.
- Dans System Contents, double cliquer sur la case de la connexion interne qui
correspond à Export pour le PIO.
- Les connections entre les différents composants sont faites de la manière suivante:
Nous avons ajouté un PIO au système précédent. Dans pin planner, il faut faire les affectations
suivantes pour les signaux SW[9..0]: L2, M1, M2, U11, U12, W12 , V12, M22, L21, L22.
1. Générer et charger le nouveau système dans la carte.
2. Tester si le système fonctionne bien en affichant Hello from Nios II !
3. Écrire un programme qui permet d’afficher la valeur du registre DATA de
SWI_PIO et interpréter.
4. Écrire un programme où chaque switch permet d’allumer une seule LED rouge.
2. Travail à faire:
Au système généré dans le TP 1, on souhaite ajouter:
- Ajouter PIO (Parallel I/O) Intel FPGA IP avec 7 output et le renommer avec
seg1_pio.
- Ajouter PIO (Parallel I/O) Intel FPGA IP avec 7 output et le renommer avec
seg2_pio.
- Dans System Contents, double cliquer sur la case de la connexion interne qui
correspond à Export pour chaque pio.
Les connections entre les différents composants sont faites de la manière suivante:
Nous avons ajouté deux PIOs au système précédent. Dans pin planner, il faut faire les
affectations suivantes pour les signaux SEG1[6..0]: E2, F1, F2, H1, H2, J1, J2 et pour les
signaux SEG2[6..0]: D1, D2, G3, H4, H5, H6, E1.