Vous êtes sur la page 1sur 9

UNIVERSITE Sultan Moulay Slimane

ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA

DEPARTEMENT GENIE ELECTRIQUE

Fascicule des travaux pratiques

Système programmable sur la puce


Carte ALTERA Cyclone II, Le modèle : EP2C70F896C6

Spécialités : Génie Electrique

ENSA-Kouribga

Année universitaire 2022-2023

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

Le processeur NIOSII (2ème génération du processeur NIOS) est un processeur


embarqué 32 bits RISC softcore entièrement synchrone, son architecture interne
étant de type Harvard. Il possède au maximum 6 niveaux de pipeline, cadencé à
quelques dizaines de MHz, avec une largeur de bus de 32 bits. Ses performances
sont de 30 à 80 MIPS (Million Instructions per Second).
Objectifs :
 Découvrir la carte d’étude basée sur un FPGA EP2C70F896C6
 Familiarisation avec l’outil Qsys ou SOPC-Builder
 Création d’un système complet à base du NIOS II.
 Compiler et exécuter du code sur le NiosII.

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.

EXERCICE1 : CLIGNOTEMENT DES LED


Le but de ce premier exercice est de manipuler les E/S sorties classiques de la
carte DE2 à base de processeur NIOSII. Dans un premier temps, nous allons nous
charger de manipuler les LEDs présentes sur la carte.
Le petit programme suivant en C permettant de clignoter une LED sur la carte
FPGA.

clk BP LEDR0 LEDR1 LEDR2 LEDR3 LEDR4 LEDR5 LEDR6 LEDR7


(reset)
Pin_AD15 Pin_T29 Pin_ Pin_ Pin_AJ5 Pin_AJ4 Pin_AK3 Pin_AH4 Pin_AJ3 Pin_AJ2
AJ6 AK5

EXERCICE2 : COMPTEUR BINAIRE


Créer un programme réalise un affichage en compteur binaire sur les LEDs.
Chaque LED visualise directement l'état d'un bit de l'octet utilisé pour le comptage.
Ce programme est à visée purement didactique afin de comprendre ce qui se passe
à l'intérieur d'un octet du microprocesseur NIOSII lorsque l'on réalise un comptage.

8
UNIVERSITE Sultan Moulay Slimane
ECOLE NATIONAL DES SCIENCES APPLIQUEE - KHOURIBGA

clk LEDR0 LEDR1 LEDR2 LEDR3 LEDR4 LEDR5 LEDR6 LEDR7


Pin_AD15 Pin_ AJ6 Pin_ Pin_AJ5 Pin_AJ4 Pin_AK3 Pin_AH4 Pin_AJ3 Pin_AJ2
AK5
reset U11/SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7
Pin_K2 PIN- PIN- PIN- PIN- PIN- PIN- PIN- PIN-
AA23 AB26 AB25 AC27 AC26 AC24 AC23 AD25

EXERCICE3 : 7seg

Vous aimerez peut-être aussi