Vous êtes sur la page 1sur 34

Développement d’un Système

embarqués à base du processeur


NIOS II
Plan

Développement d’un Système embarqué


Cibles logiciels et matérielles
Co-design Hardware/Software
Processeur Soft Core
Processeur NIOS II
Logiciels de développement
Développement d’un Système Embarqué

La difficulté est comment implémenter une fonctionnalité.

Exemple: un algorithme de compression vidéo :

– Plus rapide par hardware mais plus cher.

– Plus flexible par logiciel mais plus lent.

On doit être capable de jongler en plus avec les paramètres suivants:

– Coût.

– Rapidité.

– Robustesse.

3
Développement d’un Système Embarqué

4
Développement d’un Système Embarqué

1ère étape: Choix du matériel (composants électroniques, processeur…)


pour le système embarqué.

2ème étape: Donner le système conçu aux programmeurs.

3ème étape: Les programmeurs doivent réaliser un logiciel qui « colle » au


matériel en n’exploitant que les ressources offertes.

5
Complexité d’un Système embarqué

 Les systèmes embarqués sont de plus en plus complexes.

 Il est de plus en plus difficile de penser à une solution globale optimisée


du premier jet.

 Il est de plus en plus difficile de corriger les « bugs ».

 Il est de plus en plus difficile de maintenir le système au cours du temps .

 En conséquence, l ’approche traditionnelle de développement d ’un


système embarqué doit évoluer...

6
Solution à la complexité

Dans le processus de conception, on doit garder le système à un niveau


d’abstraction important le plus longtemps possible.

Le système doit pouvoir être décomposer en sous-systèmes suivant une


hiérarchie logique (approche objet).

– Si le design change, on doit pouvoir en réutiliser une bonne partie


(design reuse).

– Il ne faut pas jeter à la poubelle un précédent design et repartir


«from scratch » !

7
Conception d’un Système Embarqué

Concevoir un système embarqué demande au concepteur des


compétences multidisciplinaires :

–Compétences hardware et software : microprocesseur,


microcontrôleur, DSP, FPGA, Co-design, VDHL, assembleur, E/S, C,
RTOS, réseau, Linux, Java...

– Connaissance des systèmes numériques.

– Savoir travailler en équipe avec des ingénieurs d’autres disciplines.

– Comprendre le besoin du client et savoir aussi l’identifier !

8
Co-design Hardware/Software

Définition:
 Le Co-design permet de concevoir en même temps à la fois le matériel
et le logiciel pour une fonctionnalité à implémenter. Cela est
maintenant possible avec les niveaux d’intégration offerts dans les
circuits logiques programmables.

 Le Co-design permet de repousser, le plus loin possible dans la


conception du système, les choix matériels à faire, contrairement à
l’approche classique où les choix matériels sont faits en premier lieu !

9
Conception et Co-design

Conception traditionnelle Co-design

Réalisée par des groupes Réalisée par le même groupe


d’ingénieurs indépendants d’ingénieurs en coopération

10
Conception et Co-design
Cahier des charges

Spec au niveau
système

Partitionnement

Spec HW Spec SW

Synthèse HW Synthèse SW

Tests unitaires Tests unitaires

Tests d’Intégration

Evaluation des perfs 11


Les étapes dans le Co-design

Durant le processus de Co-design, on distingue les étapes suivantes :


– Spécifications : liste des fonctionnalités du système de façon abstraite.
– Modélisation : conceptualisation et affinement des spécifications
produisant un modèle du matériel et du logiciel.
– Partitionnement.
– Synthèse et optimisation : synthèse matérielle et compilation logicielle.
– Validation.
– Intégration.
– Tests d’intégration.

12
Les cibles logicielles :

Les µP, µC et DSP:

 Avantages :
– Simple à mettre en œuvre grâce à la programmation de haut niveau
(langage C) (possibilité de grande abstraction par rapport au matériel)
– Temps de conception courts et coûts de conception faibles
– Flexibilité: il suffit de modifier le programme pour modifier l’application
– Prix de revient faible
 Inconvénients :
- Faibles performances (vitesse de fonctionnement, puissance de calcul,
etc) à cause d’une architecture séquentielle (une opération à la fois)
- Trop nombreux d’accès à la mémoire (instructions + données)
Les cibles matérielles spécialisées (ASIC) :

 Spécialisé pour une application


 Réalisation complexe
 Extrêmement performant
 Circuit = cahier des charges
Les cibles matérielles spécialisées (ASIC) :
Les cibles matérielles spécialisées (ASIC) :

 Avantages :

 Inconvénients :
Les cibles matérielles (FPGA) :
Les cibles matérielles (FPGA) :

 Avantages :
– Possibilité de prototypage,
– Low time to market,
– Adaptabilité aux évolutions futures (reconfiguration),
– Flexibilité.
 Inconvénients :
– Intégration limitée,
– Moins performant qu’un ASIC,
– Prix unitaire élevé en production de masse.
Processeur Soft Core
Processeurs propriétaires:

On retrouve les solutions des deux leaders mondiaux en matière de


circuits logiques programmables, Xilinx et Altera :
 Processeur Microblaze pour Xilinx
 Processeur NIOS II pour Altera.

19
Processeur Soft Core NIOS II

 En 2004, Altera Corporation annonce la disponibilité de processeurs RISC


embarqués à cœur logiciel Nios II 32 bits.

 La deuxième génération du NIOS II affiche une performance supérieure à


200 DMIPS.

 Ce processeur à cœur logiciel affiche:


 La plus grande flexibilité,
 Les meilleures performances ,
 Le plus faible coût.

Avantage:
Comme le processeur Nios II est un soft Core, les développeurs peuvent choisir
un nombre infini de configurations systèmes afin de répondre à leurs objectifs
de performances et de coûts sans avoir à évaluer un ASIC.
Processeur Soft Core NIOS II

La gamme Nios II est composée de trois Soft Core : un cœur pour un


maximum de performances, un cœur optimisé pour une utilisation limitée
de la logique et un cœur qui est un compromis des deux autres.

Cœur NIOS II

FAST STANDARD ECONOMY


Perf max Perf moy Perf min
Processeur Soft Core NIOS II
Le processeur Nios II est définit avec un langage de description matérielle(HDL),
qui peut être implémenté sur les circuit FPGA d’Altera .

système complet

Le processeur Nios II permet aux développeurs d’étendre le jeu d’instructions en


ajoutant jusqu’à 256 instructions définies par l’utilisateur afin d’accélérer les tâches
de traitement dans un délai toujours critique.
Processeur Soft Core NIOS II
Exemple d’un système embarqué:

SoPC
Problème: Coût, Complexité & Power
Processeur Soft Core NIOS II
Flot de design d’un système NIOS II
Outils de développement de ALTERA

Altera fournit une gamme de logiciels facilitant le développeur dans les


différentes étapes de la conception d’un système SoC exploitant le
processeur NIOS II.

Quartus II :
Logiciel de conception utilisé pour concevoir des FPGA, des CPLD et des
ASIC structurés d’Altera.

26
Outils de développement de ALTERA

SOPC Builder :

Un outil de développement qui automatise la définition et les phases


d’intégration système du développement d’un SoC, en simplifiant
énormément la création de ces projets complexes et en diminuant de
façon significative le délai de mise sur le marché des nouveaux produits.
Cet outil est intégré au logiciel Quartus II.

Le processeur NIOS II est un des composants pouvant être proposé dans


la bibliothèque de SoPC Builder.

27
Outils de développement de ALTERA
Quartus II
Outils de développement de ALTERA
Nios II IDE :

 Fournit un environnement graphique de développement logiciel basé


sur Eclipse.
 Permet d’éditer, compiler, télécharger, debugger et programmer la flash.
Carte de développement

30
Exemple de développement d’un SoPC

DE2 115

SOPC(FPGA)
50MHZ

System Interconnect Fabric


RESET
NIOS II On-Chip
POWER
Processor Memory

LCD LCD
USB JTAG
PC Controller
Blaster UART

31
Exemple de développement d’un SoPC
Développement du software

Boucle infinie:
while(1)

Fonction de lecture:
IORD_ALTERA_AVALON_PIO_DATA(ADD_BASE);

Fonction d’écriture:
IOWR_ALTERA_AVALON_PIO_DATA(ADD_BASE, val);

33
Exemple du software
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
int main()
{
int count = 0;
int delay;

while(1)
{
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, count & 0x01);
delay = 0;
while(delay < 2000000)
{
delay++;
}
count++;
}
return 0;
} 34

Vous aimerez peut-être aussi