TP Khamlich Niosii1
TP Khamlich Niosii1
TP Khamlich Niosii1
ENSA-Kouribga
Pr.Salaheddine KHAMLICH,
s.khamlich@usms.ma
1
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Consignes
Tous les TP doivent être préparés avant la séance (voir Annexe)
Faites valider chacun des exercices par l’enseignant
Il vous est conseillé de faire un compte-rendu de chacun des TP
Introduction
L’objectif de ce TP est d’utiliser le processeur NIOS II (cœur logiciel) sur une carte
FPGA d’Altera pour exécuter des programmes C et mesurer leurs temps
d’exécution.
Dans la première partie de ce TP, vous allez apprendre à utiliser les outils (Quartus
II et Qsys ou SOPC Builder) qui vont vous permettre de créer votre plate-forme
hardware en implémentant le processeur NiosII et un ensemble de périphériques
de base. Dans une deuxième partie, vous allez utiliser l’outil
NiosII Embedded Design Suite (basé sur Eclipse) qui permet d’écrire et compiler
des programmes en C (software) qui vont être exécutés sur cette plate-forme.
Pour tous les TPs, vous allez utiliser la carte d’expérimentation DE2-35 qui
comprend un FPGA Cyclone 2 de chez Altera et plusieurs composants externes
listés ci-dessous :
I/O Devices
· Built-in USB-BlasterTM cable for FPGA configuration
· RS232
· Video Out (VGA 10-bit DAC)
· Video In (NTSC/PAL/Multi-format)
· USB 2.0 (type A and type B)
2
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
· PS/2 mouse or keyboard port
· Line In/Out, Microphone In (24-bit Audio CODEC)
· Expansion headers (76 signal pins)
· Infrared port
Memory
· 8-MBytes SDRAM, 512K SRAM, 4-MBytes Flash
· SD memory card slot
Displays
· 16 x 2 LCD display
· Eight 7-segment displays
Switches and LEDs
· 18 toggle switches
· 18 red LEDs
· 9 green LEDs
· Four debounced pushbutton switches
Clocks
· 50 MHz crystal for FPGA clock input
· 27 MHz crystal for video applications
· External SMA clock input
Partie 1 : Hardware
Le processeur Nios II est un soft processeur, définit avec un langage de description
matérielle, qui peut être implémenter sur les FPGA Altera en utilisant la suite
logicielle Quartus II. Pour implémenter un système complet, il est nécessaire
d’ajouter d’autres éléments au processeur, tel que des mémoires, des interfaces
d’entrées/sorties, des temporisateurs (timers) et des interfaces de communications.
Un système complet à base de Nios II peut être implémenter sur la carte DE2-35
comme le montre la figure ci-dessous.
On examinera comment
Compiler une version du processeur à l’aide du logiciel Quartus II.
Charger le processeur et l’environnement associé dans le FPGA (charger le
fichier de configuration du processeur sur la carte à l’aide de la connexion USB
– Blaster).
3
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Charger un programme C dans la mémoire du processeur (charger le fichier
correspondant au programme dans le FPGA) et l’exécuter.
Écrire des programmes C sous l’environnement IDE, les charger dans le FPGA
et les exécuter.
Ajouter des instructions spécialisées au processeur NIOS.
Mesurer les temps d’exécution des programmes.
TP1
Pour ce premier TP, nous allons uniquement implémenter les périphériques de base
qui permettent de réaliser des applications simples tel que :
- allumer des LEDs séquentiellement,
- lire les valeurs des interrupteurs et des boutons poussoirs.
- afficher des valeurs sur les afficheurs 7 segments
– communiquer avec le PC via une liaison série de type RS232
Au niveau hardware, pour réaliser ces applications, nous avons besoin
d’implémenter les périphériques suivants (comme le montre les figures ci-
dessous) :
- Un μP et une mémoire pour exécuter le programme.
- Des entrées/sorties d’usages général (GPIO) pour les LEDs, les interrupteurs, les
boutons poussoirs et les afficheurs 7 segments.
- D’un temporisateur pour l’affichage séquentiel sur les LEDs
– D’un UART pour les transmissions séries.
-Pour lancer le logiciel QuartusII , on cliquera sur: (Demarrer --->Tous les
programmes--->Altera --->Quartus II 13.0).
- Aller dans le menu File --->New Project Wizard... afin de créer un nouveau
projet. Dans cette première page, vous devez choisir le nom de votre projet et son
répertoire de travail (par exemple:). A la première ligne, spécifier le répertoire dans
lequel seront stockés tous les fichiers affairant au projet. Le 2éme ligne spécifier le
nom de projet Pour le nom, choisissez par exemple TP1, 3éme ligne spécifier le
nom de l'entité maitre.
4
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Cliquez sur Next, dans cette page vous pouvez ajouter des fichiers (vhdl ou verilog)
à votre projet. Dans cet exercice, nous allons partir de zéro (from scratch) pour
construire votre système donc nous n’avons aucun fichier à rajouter.
Cliquez sur Next, sur cette page, vous devez choisir le composant programmable
(FPGA, CPLD) sur lequel vous allez implémenter votre circuit numérique. Par
exemple La carte DE2 est munie d’un FPGA Cyclone II EP2C35F672C6,
choisissez ce composant dans la liste des composants proposés comme le montre
la figure suivante. Ce numéro est toujours écrit sur la partie visible des composants
programmable.
Cliquez sur Next, dans cette page vous avez la possibilité de spécifier l’utilisation
d’autres outils logiciel (que ceux de Altera) pour réaliser la simulation ou la
synthèse. Il est par exemple possible d’utiliser Modelsim (Mentor Graphics) pour
faire les simulations à la place de l’outil de simulation proposé par Altera. Pour cet
exercice, laissez la page tel quel et cliquez sur Next.
Dans la dernière page, vous avez une synthèse des choix que vous avez fait dans
les pages précédentes, vérifiez que vous vous n’êtes pas trompé et cliquez sur
Finish.
5
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Démarrer SOPC-Builder en allant sur Tools--->SOPC Builder(ou QSys)… ou en
cliquant sur l’icône suivante :
La fenêtre Create New System s’ouvre, remplissez le champ System Name avec
le nom de votre système (utilisez impérativement le nom KHAMLICHniosII).
Vous pouvez aussi choisir le langage HDL de votre choix, VHDL dans notre cas.
Valider en cliquant sur OK. Renommez l’horloge clk en clk_in et fixer la valeur à
50 MHz.
Avant de commencer le TP il faut tracer votre processeur avec les contrôleurs sur
papier suivant votre cahier de charge. Voici un exemple :
Vous allez commencer par ajouter le processeur Nios II à votre système. Dans
la fenêtre de gauche, sélectionnez le Nios II processor et cliquez sur le bouton
Add…
Vous avez la possibilité de sélectionnez la version du coeur : économique (Nios
II/e), standard (Nios II/s) ou rapide (Nios II/f, f comme fast).
En fonction de ce choix, vous avez un processeur plus ou moins puissant mais qui
prend aussi plus ou moins de place sur le FPGA.
Sélectionnez la version standard du coeur :
Nios II/s (s comme Standard).
6
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Dans l’onglet JTAG Debug Module, vous avez la possibilité de choisir les
capacités de débogage du processeur à travers la liaison JTAG. Sélectionnez
l’option Level 1. Comme indiqué, le Level 1 vous permet de vous connecter avec
la cible à travers la liaison JTAG (JTAG Target Connection) de télécharger le code
sur la cible (Download Software), d’avoir des points d’arrêts software (Software
Breakpoints). Comme pour le choix de la version du processeur, plus vous
choisissez de capacité de mise au point (débogage), plus cela prendra beaucoup de
place sur la matrice FPGA. Cliquez sur le bouton Finish et renommez le
périphérique en cpu (bouton droit sur le nom du périphérique et choisir Rename).
1. Configuration matérielle
Afin de construire un nouveau design, on recopiera chez soi le répertoire
Tp_Sopc\ressources\nios_II_lab et son contenu et l’on renommera le répertoire
Tp_simu. Le projet niosII_lab est un projet simple ne contenant que les interfaces
boutons, leds et afficheurs, mémoire Ram et Flash.
Le répertoire Tp_simu contient un sous répertoire software contenant un
programme simple.c utile pour cet exercice.
Ouvrir le projet niosII_lab puis double-cliquer sur le symbole NIOS pour
invoquer le SOPC Builder.
Editer (double clic) l’élément jtag_uart et sélectionner l’onglet Simulation.
Vérifier que l’option Create modelsim alias to open an interactive
Stimulus/response window est bien sélectionnée. Cela signifie qu’en cours de
simulation, des messages pourront être envoyés à l’écran.
Editer (double clic) l’élément button_pio et sélectionner l’onglet Simulation.
Valider Harwire PIO inputs in test bench avec Drive inputs to 0x0001. Cela
permettra une bonne initialisation de la simulation (supprime les états ‘X’).
Par la commande File > SOPC Buider Setup > Modelsim Directory, vérifier le
chemin d’accès à l’exécutable modelsim (c:/modeltech_ae/win32aloem)
Régénérer le système après avoir cocher l’option simulation dans l’onglet System
Generation
2. Développement d’un programme sous l’environnement IDE
Ouvrir le logiciel NIOS IDE
7
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
Ouvrir une nouvelle application C : new | CC++ Application et choisir
Hello_world. Choisir pour SOC Builder System C :
\niosII_cyclone_1c20\quartus_project\system.ptf
Activer le projet en cliquant dessus.
Dans le menu Projet | Properties | C/C++ Build , sélectionner la configuration
Release et un niveau d’optimisation (-O2 ou –O3)
Puis faire Build Projet.
Puis exécuter le projet avec Run | Run as | Nios Hardware.
8
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA
EXERCICE3 : 7seg