
Utilisation d'un processeur Nios II
|
API |
Aplication Program Interface
|
|
IP |
Intelectual Property,
|
|
FPGA |
Field Programmables Gates Arrays : Circuit intégré programmable (réseau de portes programmables).
|
|
Stratix |
Composant associant un FPGA et un microprocesseur de type NiosII
|
|
NIOSII |
Netware Input/Output Subsystem. Modèle particulier de microprocesseur (intégré à un composant Stratix ou Cyclone par exemple)
|
|
Nios II IDE |
Integrated Drive Electronics. Cette interface intégrée à des disques durs gère les transferts de données. |
|
SOPC builder |
System On a Programmable Chip (peut se traduire par système sur puce programmable). Outil de développement associé à Quartus pour créer des systèmes basés sur des processeurs, périphériques, et mémoires.
|
|
VHDL |
Very High Speed Integrated Circuit Hardware Description Language Langage de description matériel permettant de créer un composant particulier en utilisant un FPGA |
|
IHM |
Interface Homme Machine
|
|
PWM |
Pulse Width Modulation
|
|
POM |
Position d’Origine des Machine. Ce placement du robot est celui de référence et est permis à l’aide de capteurs optiques (un pour chaque moteur). |
I Le Nios II au service du robot Youpi
L’objectif est de réaliser les drivers Hardwares et Softwares de commande d’un bras manipulateur pour une carte de développement disposant d’un FPGA muni d’un microprocesseur Nios II de la société ALTERA. Cette carte devra se connecter au robot à l’aide d’une carte adaptatrice à fabriquer.
Entrées :
- Robot Youpi
- Carte de développement EPC1C12 FPGA NIOS II
- Logiciels Quartus II v5.1, NIOS II, SOPC Builder + docs
Sorties :
- Drivers matériels pour le robot YOUPI, indépendants du type de carte pourvue qu’elle possède suffisamment d’entrées-sorties et un FPGA muni d’un Nios II
- Librairies logicielles d’accès aux ressources matériels
- Documentation d’utilisation des codes fournis
- Carte adaptatrice : carte de développement / robot YOUPI
- Documentations de la carte adaptatrice
- Rapport
- Didacticiel d’utilisation des outils de développements (Quartus, SOPC, NiosII IDE)
Contraintes :
- Doit s’adapter à la partie commandée via Ethernet
- Faible budget alloué (hors carte de développement)
Un FPGA muni d’un processeur Nios II combine les avantages d’un composant logique programmable et d’un microprocesseur. Ainsi, notre IHM sera modifiable en temps réel via un jeu d’instructions (en langage C) exécuté par le processeur Nios II.
Le composant Stratix a été choisi pour contrôler le robot à partir de son modèle virtuel, via une liaison de type Ethernet. Notre objectif est de fournir des fonctions en C de contrôle du robot, que les étudiants pourront utiliser pour développer une liaison Ethernet entre la carte de développement et un ordinateur où sera exécuté le modèle virtuel.
L’architecture des drivers hardware de notre périphérique se compose des blocs suivants :
- Une tâche logique : elle définit les fonctions fondamentales du composant.
- Un registre de fichiers : il est le pont entre les signaux à l’intérieur de la tâche et l’interface de connexion avec le processeur : le bus avalon. Les registres peuvent être lus ou écris via le bus Avalon.
- L’interface Avalon : elle permet au processeur d’accéder et de modifier les registres du périphérique souhaité et donc des signaux de sa tâche logique. Cette interface doit respecter des entrées/sorties spécifiques pour pouvoir communiquer avec le processeur. Elle est intégrée au registrer File
![]() |
La programmation d’un tel composant se résume à l’implémentation des fichiers suivants :
- un fichier de Description : fichier PTF, créé par un programme appelé SOPC Builder qui définit les différents modules (CPU, RAM, 7seg…), intégrés au système,
- des fichiers Hardware : fichiers VHDL qui décrivent l’ensemble des blocs logiques du composant,
- des fichiers Software : fichiers C qui commandent l’écriture ou la lecture des registres, et le programme principal de contrôle du robot.
Voici un tableau récapitulatif des fichiers nécessaires à la configuration du composant Stratix:
|
Répertoires & Noms des fichiers |
Description |
|
\standard |
Fichiers contenant les composants de la carte de développement |
|
\hardware |
Répertoire contenant les fichiers de description hardware |
|
robot_register_file.vhd |
Logique pour écrire ou lire les registres |
|
robot_avalon_interface.vhd |
Relie les tâches
logiques et les registres |
|
autres fichiers vhd de description des différentes taches… |
… |
|
\software |
Répertoire contenant les fichiers de description software |
|
\inc\altera_avalon_robot_regs.h |
Accès au registre |
|
\HAL\inc\altera_avalon_robot_routines.h |
Fonctions prototype d'accès au robot |
|
\HAL\src\altera_avalon_robot_routines.c |
Fonctions d'accès au robot |
|
\Nios_II_IDE\ youpi_altera_avalon_robot.c |
Programme de commande du robot |
Voici de façon schématique comment nous allons aborder d’un point de vue matériel la conception de notre IHM :

Maintenant, voici les étapes pour créer les fichiers de configuration et les implémenter dans un FPGA muni d’un processeur Nios II :
- Ecrire des fichiers VHDL qui décrivent les blocs logiques et notamment le "Register File"
- Tester ces fichiers VHDL seuls
- Ecrire les fichiers C qui dialoguent avec les registres
- Utiliser l’éditeur SOPC Builder pour créer un nouveau composant
- Insérer le composant dans un module pour Quartus II et compiler
- Ecrire le programme principal de contrôle du composant avec Nios II IDE et compiler
- Tester l’accès des registres par les composants grâce au simulateur ModelSim
- Envoyer le fichier de compilation au FPGA via Quartus II Programmer et tester
- Envoyer le fichier de compilation au FPGA via Flash Programmer et tester
- Renvoyer le fichier de compilation au FPGA via Quartus II Programmer et tester
Chacune de ces étapes est détaillée dans le manuel d’utilisation de QuartusII fourni avec ce rapport.
Nous allons maintenant aborder la partie technique du projet.
II.1 Contraintes et spécifications du robot YOUPI
Le robot YOUPI est un bras manipulateur de cinq axes comportant six moteurs. Chaque articulation possède un capteur de position. Le déplacement du robot est réalisé par des moteurs pas à pas qui sont commandés via un port de type parallèle.
Contraintes liées à la vitesse de déplacement du robot :
Les tests effectués montrent que nous atteignons la vitesse maximum de 1,2ms/pas. Au delà, certains moteurs réagissent aléatoirement ou se bloquent.
Contraintes liées aux butées mécaniques :
|
|
Axe1 |
Axe2 |
Axe3 |
Axe4 |
Axe5 |
Axe6 |
|
Nombre de pas Min |
-5100 |
-1200 |
-4400 |
-1300 |
Infini |
0 |
|
Nombre de pas Max |
5500 |
5500 |
3000 |
7100 |
Infini |
-5100 |
|
Plage nombre de pas |
10600 |
6700 |
7400 |
8400 |
Infini |
5100 |
Protocole de production de pas :
Pour faire un pas, il faut suivre un protocole en six étapes, détaillé par la suite au Chapitre II.4.3 (production de pas)
II.2 Vue interne de la carte Stratix 1s10 :

|
Connexions nios/interface robot via l’avalon |
||||
|
Nom du signal en VHDL (interface.vhd) |
Type du signal pour le bus Avalon |
Nombre de Bits |
Sens |
Description |
|
clk |
clk |
1 |
input |
Signal de synchronisation du transfert d’information avec les périphériques |
|
resetn |
reset_n |
1 |
input |
Signal reset actif à l’état bas |
|
avalon_chip_select |
chip_select |
1 |
input |
Indique que le processeur communique avec un périphérique |
|
address |
address |
4 |
input |
Permet de sélectionner un registre |
|
writep |
write |
1 |
input |
Indique l’écriture |
|
write_data |
writedata |
32 |
input |
Données à écrire dans un registre |
|
readp |
read |
1 |
input |
Indique la lecture |
|
read_data |
readdata |
32 |
output |
Données lues dans un registre |
II.3 Vue interne de l’interface robot :
Pour réaliser les fonctionnalités demandées, nous avons créé les blocs suivants :
- Le bloc gestion des registres qui stock des valeurs transmisent par le processeur NiosII ou bien destinées à êtres lue par ce dernier.
- Le bloc POM (position d'origine machine) qui doit mettre le robot en position d'origine.
- Le bloc production de pas qui permet de produire des pas moteur.
- Le bloc butées qui limite le fonctionnement des moteurs au domaine de rotation prévu par le constructeur.
- Le bloc gestion des butées qui détermine si l’on peut produire des pas en fonction des informations transmises par le bloc butées
- Le bloc décompteur qui indique le nombre de pas restant à réaliser.
- Le bloc production de l’horloge qui sert à produire une horloge cadençant la production des pas. Cette horloge est fonction d’un rapport cycle enregistré dans le bloc gestion des registres.
Ainsi que les éléments suivants :
- Un multiplexeur.
- Des tristates qui permettent l’écriture ou la lecture du registre "nb_pas".

| Auteur: Visiteur | Posté le 08/03/2010, 13:37:28 |
| Auteur: | Posté le 08/03/2010, 13:37:29 |
| Auteur: ocladyxb | Posté le 30/12/2009, 12:02:12 |
| Auteur: | Posté le 30/12/2009, 12:02:17 |
Copyright 2006 Quantique.net
Sites partenaires :Grille de sudoku, gratuit
Sudoku expert
Sudoku diabolique
