Conception Et Implementation Du Systeme
Conception Et Implementation Du Systeme
Conception Et Implementation Du Systeme
Nous tenons à remercier dans un premier temps, toute l’équipe pédagogique de l’Ecole
Nationale des Sciences Appliquées de Khouribga , pour avoir assuré la partie théorique de notre
formation.
Nous remercions également M. Ismail Laghrat pour l’aide et les conseils qu’il nous a
apporté lors des différentes étapes de l’élaboration de notre projet. Nous tenons à vous remercier
du fond du cœur également pour chaque minute passée avec nous ; pour chaque information et
pour chaque nouvelle leçon que vous avez enseignée.
On sait bien que n’a pas été du facile de nous enseigner ; parfois dû à notre manque de base
d’autre fois à notre surcharge, merci de ne pas avoir baissé les bras quand même ; de nous avoir
tant soutenu et encourager pour arriver au bout, que Dieu vous bénisse.
1
Table des matières
3 RÉALISATION DU SYSTÈME 20
3.1 Configuration de capteur CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Notre Système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 création de système sur quartus II et SoPC builder . . . . . . . . . . . . . . . . 23
3.4 Le premier test : Hello World ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.5 Programme de traitement d’image . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.1 L’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.2 les fonctions de altera avalon pio regs.h . . . . . . . . . . . . . . . . . . . 26
3.6 L’implémentation du programme . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Conclusion 28
2
Table des figures
3
Résumé
1.1 Introduction
Les avancées actuelles dans la technologie des semi-conducteurs et des méthodologies de
conception permettent le développement de systèmes numériques complexes sur puce SoPC,
des dispositifs pouvant contenir des millions de transistors. Les derniers circuits FPGA (Field
Programmable Gate Array) permettent également le développement de systèmes complets.
Ainsi, un système qui était auparavant implanté sur une carte, peut dorénavant être conçu sur
une puce unique offrant l’avantage d’être compact et de supporter un très grand nombre de
traitements arithmétiques. La tendance actuelle est donc à l’assemblage dans une même puce
de plusieurs composants éventuellement hétérogènes pour répondre au mieux aux exigences
des systèmes multimédia embarqués. Ces composants peuvent être aussi bien des coeurs de
processeurs, des coeurs de DSP, des accélérateurs matériels... La réalisation de ces systèmes
a nécessité la mise en place d’une méthodologie de conception logicielle/matérielle (codesign)
prenant en compte les contraintes de l’embarqué.
1
processeurs contiennent en moyenne près de 100 millions de transistors en 2007 et en prévoit
près de 1.5 milliard pour 2013. L’évolution des technologies de fabrication de circuits permettent
l’intégration d’un système numérique sur un même composant : c’est le concept du single chip.
Ceci est en fait lié à la loi empirique de Moore qui stipule que pour une surface de silicium
donnée, on double le nombre de transistors intégrés tous les 18 mois . La loi de Moore a
radicalement changé la façon de concevoir les systèmes numériques aujourd’hui puisque l’on
peut procéder à l’implantation d’algorithmes complexes pour les systèmes numériques de futures
générations. On travaille maintenant au niveau système (ou fonctionnalité) et non au niveau
porte logique. Cette évolution de la conception peut être résumée sur la figure
2
1.2.2 Réalisation d’un système sur puce SoC ou SoPC
Un SoC est un ensemble de blocs fonctionnels intégrés dans un composant électronique avec
au moins un processeur comme élément de traitement. La figure représente un SoC qui est basé
sur des coeurs de processeurs. A partir de cette figure, on constate que seuls les L’approche
SoC a été créée dans un premier temps pour le développement d’ASIC mais a été étendue pour
le développement de FPGA. On parle alors de SoPC pour System on Programmable Chip. Le
SoC peut être retenu pour les applications destinées au grand public. Il permet des meilleures
performances en termes de consommation, de vitesse et de surface. Mais, la fabrication et le
test sont des étapes longues et coûteuses . De plus, un SoC est figé et n’est donc pas réutilisable
pour une autre application. Par contre, le SoPC est un composant reconfigurable à volonté. Il
permet donc un développement et prototypage rapide du système. Mais, en contrepartie, on
peut avoir une consommation d’énergie plus grande avec une performance plus faible que celle
du SoC.
IP Logiciel
softcore : le composant est livré sous sa forme HDL (Hardware Design Language) synthétisable,
c’est à dire flexible. Son principal avantage est sa portabilité. La propriété du fichier source est
en soi la meilleure documentation. On peut ainsi maintenir le produit pendant des années et
éventuellement modifier la source et même changer de technologie cible. L’inconvénient ma-
jeur est qu’il ne peut être prédictif en termes de superficie, puissance et temps. Le travail
d’optimisation du circuit final est à la charge de l’intégrateur du système.
IP Matériel
hardcore : Dans ce cas, le bloc IP est ciblé sur une technologie particulière et le travail d’opti-
misation est garanti. Cela englobe la netlist entière, le routage et l’optimisation pour une librai-
rie technologique spécifique, un layout personnalisé. L’inconvénient est qu’il est moins flexible
car le processus est dépendant de la technologie. Par contre il a l’avantage d’être prédictif.
3
IP Firm
firmcore : Le bloc IP firmcore offre un compromis entre le softcore et le hardcore, plus
flexible que le hardcore, plus prédictif en termes de performance et de surface que le softcore.
En général, le travail de synthèse HDL est déjà réalisé pour une technologie cible donnant lieu
à une description par netlist (format EDIF par exemple).
4
même niveau, des mémoires de différentes densités (512 bits M512, 4 Kbits M4K et 512 Kbits
MegaRAM) sont réparties sur la matrice, ainsi que des blocs dits ”blocs DSP” apparaissant
sur la figure 28. Ces derniers intègrent des fonctions matérielles telles que multiplieurs, ac-
cumulateurs, additionneurs, multiplexeurs et registres et permettent, entre autre, de réaliser
des multiplieurs 36 bits ou des opérateurs MAC de 18 bits. Au niveau inférieur, les LABs sont
constitués de 8 ALM (Adaptive Logic Module) et d’un réseau de connexions locales. Les ALMs,
schématisés à la figure 29, sont réalisés autour d’un bloc de logique combinatoire à 8 entrées,
de deux additionneurs et des registres de sortie. Le bloc combinatoire est en fait réalisé avec
deux LUTs à quatre entrées et de quatre LUTs à trois entrées.
5
Figure 1.4 – Système Altera NIOS
La figure décrit le système NIOS. Il est constitué du processeur NIOS, du bus Avalon et
des périphériques (contrôleur mémoire, UART, timer. . . ). Le processeur NIOS est le coeur du
système, il est connecté aux différents périphériques à travers le bus Avalon. Ce bus doit être
configuré en maı̂tre/esclave. L’interface du bus Avalon est générée automatiquement par l’outil
de génération d’Altera NIOS (SOPC Builder).
6
Figure 1.5 – CPU NIOS
La société Altera propose trois versions pour le processeur NIOS II. La table illustre ces
trois versions. Une première version Economy qui utilise moins de surface, une deuxième version
Standard qui permet un compromis entre surface et rapidité, une dernière version Fast qui
est plus rapide que les deux autres.
7
Figure 1.7 – Implantation du processeur NIOS II sur différents circuits FPGA d’Altera
8
Figure 1.8 – Bus Avalon
Le bus Avalon permet la connexion entre des composants maı̂tres ou esclaves. Il supporte
plusieurs maı̂tres sur le bus. Un arbitrage est nécessaire au partage d’une même ressource
partagée par les circuits maı̂tres. Cette architecture multi maı̂tre fournit la grande flexibilité
dans la conception des systèmes.
Les figures représentent un exemple de déroulement des cycles de lecture et d’écriture (res-
pectivement) sur le bus Avalon du système.
9
(A) : Le cycle d’écriture commence par un front montant de clk.
(B) : Le maı̂tre fournit les signaux address, write n et writedata.
(C) : si le signal wait request est à “0” sur le front montant de clk, alors le transfert se
termine et un autre cycle de lecture ou écriture peut recommencer.
10
Chapitre 2
CONCEPTION DU SYSTÈME
MULTIMÉDIA EMBARQUÉ
2.1 Introduction
Durant la conception d’un SoC, le concepteur aura à choisir le composant programmable
qui sera le coeur du système, la plupart des architectures sont basées sur des processeurs à
usage général. Ces processeurs sont extensibles du fait que beaucoup d’applications peuvent
y être implantées, tandis que les performances obtenues peuvent être inférieures à celles obte-
nues avec des processeurs dédiées à des applications spécifiques. Mais l’approche de conception
mixte logicielle/matérielle permet à l’application d’atteindre des performances inaccessibles aux
approches de conception classiques. Les réalisations logicielles sont préférées pour des raisons
d’évolution et de coût. Par contre, les réalisations matérielles sont dédiées aux fonctionnalités
nécessitant des circuits spécialisés ou des performances élevées.
11
va être compilé et exécuté sur des processeurs d’usage général. Ensuite, les équipes réalisent
l’intégration physique des deux parties.
Mais, on constate que le manque d’interaction entre ces deux équipes pendant les étapes de
développement peut générer plusieurs problèmes d’intégration. Dans , il est rapporté que 71.5%
des projets système embarqué n’atteignent pas 30 % des performances attendues durant la
phase de conception.
Ces problèmes peuvent être évités par l’utilisation d’une méthodologie de conception conjointe
logicielle/matérielle. En effet, les équipes du logiciel et du matériel travaillent ensemble et
à chaque étape de conception, elles réalisent l’intégration et le test des spécifications. Les
opérations de test et d’intégration génèrent une augmentation du temps de conception. L’intégration
finale lors du prototypage est réalisée sans difficulté. On constate que la méthodologie de concep-
tion conjointe réduit le temps total de conception puisqu’elle réduit le nombre de retours à des
étapes antérieures de conception provoqués par la détection d’erreur.
12
Figure 2.2 – Quartus II 11.0 SP1 interface
Ce logiciel permet de faire une saisie graphique ou une description VHDL/Verilog d’archi-
tecture numérique, d’en réaliser une simulation en utilisant le simulateur ModelSim de Mentor
Graphics, une synthèse et une implantation sur FPGA. Il comprend une suite de fonctions de
conception au niveau système permettant d’accéder à la large bibliothèque d’IPs d’Altera et
un moteur de placement/routage intégrant la technologie d’optimisation et des solutions de
vérification. D’une manière générale, un flot de conception ayant pour but la configuration de
composants programmables se déroulent de la manière suivante
13
L’IDE (Integrated Design Entry) Quartus II intègre l’outil SOPC Builder qui permet de
construire un système SoPC intégrant divers périphériques d’E/S tels que le processeur NIOS
II, les contrôleurs de SRAM et de SDRAM, un contrôleur DMA (Direct Memory Access). . . De
même, on peut intégrer son propre composant dans le design sous forme d’un bloc IP externe
(Interface caméra, LCD ,VGA. . . ). On peut ainsi intégrer autant de périphériques que l’on
veut, n’étant limité que par le nombre de broches et de cellules logiques du circuit FPGA. Le
mapping mémoire et le niveau des interruptions du design sont fixés durant cette phase. La
figure montre la mise en oeuvre de l’outil SOPC Builder. C’est en fait la première passerelle
avec le logiciel embarqué.
14
2.3 Platforme de développement : CycloneII FPGA Mul-
timedia board
Plate-forme Cyclone II multimédia est un outil pour tout ce qu’il couches : Débutant, pré-
intermédiaire et avancé. Ses modules complémentaires fournissent la conjonction de l’école et
les concepteurs de l’entreprise. L’utilisateur peut mettre en œuvre VLSI (Very Large Scale
Intégration) ... avec DHL, la conception de circuit logique numérique et de réaliser davantage
l’ les médias numériques et le processeur d’image
15
7. Deux ensembles de ports de sortie audio
- design audio numérique
8. A 24 bits mis DAC vidéo, support 80MSPS opération, avec un port de sortie
VGA
9. Six séries 7 LEDs segment
- chronomètre, compteur de la fin, compteur, alarme
10. 24 ensembles d’auto-définition LED
- Mettre en œuvre le ticker LED
11. 16 séries de boutons-poussoirs auto-définition
12. séries de commutateurs DIP
13. 8 paires de cristaux pour les utilisateurs : mettre en œuvre la conception du
système de l’horloge multiple avec la variété de users’demands
14. PLL (Phase Lock Loop) sortie d’horloge
- concevoir l’horloge de sortie du système avec le logiciel “Quartus II”
15. Fournir mode USB ByteBlaster JTAG et AS (Active Serial)
16
2.4 Système d’acquisition et de traitement vidéo
Nous avons conçu et réalisé une plateforme matérielle d’acquisition de traitement et de
restitution vidéo servant à l’évaluation de notre méthodologie de conception logicielle/matérielle
pour les systèmes multimédia embarqués . La figure représente notre plateforme.
Le codage d’un pixel dépend du type d’image et nous en recensons trois types :
1. Les images à deux niveaux : une image en noir et blanc est l’exemple le plus courant.
Toute image décrite avec deux valeurs correspond à ce type. Un bit suffira pour coder la
valeur d’un pixel.
2. Les images à plusieurs niveaux de gris : les images de nos téléviseurs en noir et blanc
sont de ce type. La plupart des systèmes définissent 256 niveaux de gris. Mais, seuls 128
niveaux de gris sont détectables par l’oeil.
17
3. Les images couleurs : la couleur peut être codée, soit par composition de couleurs pri-
maires, soit par composition d’informations de luminance et de chrominance. En fait, une
couleur peut être représentée par un ensemble de trois coordonnées, c’est-àdire qu’une cou-
leur peut être reproduite par la superposition de trois couleurs primaires comme montre
la figure 4. Le système RVB (Rouge-Vert-Bleu ou ≪ RGB ≫) utilise les couleurs primaires :
rouge, vert et bleu. La valeur du pixel doit représenter les composantes trichromatiques
de la couleur. En général, nous disposons de huit bits pour coder une composante, soit 24
bits pour coder la valeur d’un pixel. Ce système RVB peut donc définir plus de 16 millions
de couleurs. Des résultats expérimentaux ont prouvé que l’oeil est beaucoup plus sensible
aux variations fines d’intensité lumineuse (luminance) qu’à celles de la couleur (chromi-
nance). Il en résulte que nous pouvons nous contenter de transmettre l’information de
couleur avec moins de détails que l’information de luminance.
18
d’images par seconde, pour que l’oeil ne se rende pas compte qu’il s’agit d’images distinctes. Il
existe deux grandes familles de systèmes vidéo : les systèmes vidéo analogiques et les systèmes
vidéo numériques.
La vidéo analogique
La caméra balaye l’image bidimensionnelle qu’elle a devant elle par un faisceau d’électrons
qui se déplace très rapidement de gauche à droite et plus lentement de haut en bas et produit
une tension en fonction du temps. Elle enregistre ainsi l’intensité lumineuse, et à la fin du
balayage, on a alors une trame. Le faisceau revient à l’origine pour recommencer. Le récepteur
va recevoir cette intensité en fonction du temps, et pour reconstruire l’image, va répéter le
processus de balayage.
Les paramètres précis de ce balayage varient d’un pays à l’autre mais deux grandes familles
existent :
En Europe (système PAL/SECAM, pour Phase Alternating Line / SEquentiel Couleur Avec
Mémoire) ce système utilise 625 lignes (seulement 576 sont affichées), un rapport vertical/ho-
rizontal de 4/3 et un débit de 25 images par seconde.
En Amérique et au Japon (système NTSC, pour National Television Standards Committee),
on a seulement 525 lignes (483 affichées) et un débit de 30 images par seconde
La vidéo numérique
La vidéo numérique est tout simplement une suite d’images formées d’une matrice de pixels.
Pour obtenir des images en couleur, il faut utiliser au moins 8 bits par pixel, ce qui correspond
à 256 couleurs. En fait, avec 8 bits par pixel, on obtient de la vidéo numérique noir et blanc
de haute qualité. Pour la vidéo numérique couleur, on utilise 8 bits pour chaque couleur RVB,
soit donc 24 bits par pixel, ce qui correspond à environ 16,8 millions de couleurs. Le principe
de balayage utilisé est similaire à celui de la vidéo analogique.
19
Chapitre 3
RÉALISATION DU SYSTÈME
Pour réalisé notre système multimédia embarquée on se basons sur les fichiers HDL fournit
par le constructeur de notre carte cible .
Ces fichier HDL sont écrit en Verilog est ont décrit les deux interface de capteurs CMOS
pour l’utilisé comme un slave de I2C : CMOS2BUFFER.v , et CMOSI2C.v et un troisième fichier
de contrôler l affichage de l’LCD DispCntl.v .
afin d’avoir démarrer le capteur camera il faut le configuré pour obtenir la sortie désiré .
le processeur de camera contienne un jeu d’instruction qui assure la configuration de ce
dernier :
20
Figure 3.2 – registres d’instructions de capteur CMOS
Alors in faut toujours inclue dans notre système une ROM de 16x32 pour assurer notre
configuration d’image et de communication I2C ,pour cela on utilise MegaFunctionCore pour
fournir la ROM et un fichier .mif pour l’inutilisé
La caméra sera chargée bien entendu de capturer un flux d’image et devra être configurée
pour fournir les données sur 8 bits sous le format RGB qui est le plus facile à gérer.
21
3.2 Notre Système
pou mieux optimisé notre système on a choisit cette architecture dans la quelle le processeur
NIOS II communique avec la camera (SDRAM) et l’LCD par l’intermédiaire des IP de PIO :
parllele input output
les information image sont enregistré dans les SRAM de 1Mo par les les entités de CMOS
et le sortie de notre système fournie l’image traité a l’interface de l’LCD
22
Figure 3.5 – vue d’ensemble de notre système NIOS
23
Figure 3.6 – le processeur NIOS et leurs périphériques
Après avoir généré les IP on s’intéresse a établir la connexion entre les différentes compo-
santes du système et les association des PIN avec les PIN réel de la pus cyclne II on utilisons
le guide de la carte , et en plus des PIN de capteur CMOS et l’LCD on utilise aussi le PIN N26
pour la clock de système et U24 pour la reset globale.
24
pour notre premier test on va seulement affiché “Hello world ! “ dans le consol NIOS , pour
sela on créé un nouveau BSP projet dans NIOS IDE avec le fichier de configuration de notre
SoPC .
Deux projet sont crée le premier sé’est le projet qu’on va modifier le deuxième est le projet
contienne les fichier de drivers des différent composantes du SoPC ( PIO , RAM , JTAG ...)
1 #include <stdio.h>
2
3 int main()
4 {
5 while(1)
6 printf("Hello from ENSAK !\n");
7
9 return 0;
10 }
11
12 }
25
3.5 Programme de traitement d’image
3.5.1 L’algorithme
Seul un type de traitement a été étudié et appliqué sur l’image fournie par la caméra.
Ce traitement consiste simplement à faire un seuillage sur une des 3 composantes d’un
pixel. Pour ce faire, l’idée est la suivante : on regarde si la somme des 3 composantes est
inférieure à 3 fois la composante que l’on veut garder. Si c’est le cas, on place la valeur
de 255 sur la composante que l’on veut faire ressortir et on met à 0 les autres.
Exemple : On souhaite faire ressortir le bleu dans l’image.
Si :
3.B > R + G + B
alorsB = 255; R = G = 0
Sinon on ne touche pas aux composantes du pixel.
1 /*
2 * FORCAGEb.c
3 *
4 * Created on: 17 juin 2013
5 * Author: yAcine
6 */
7 #include <stdio.h>
8 #include"system.h"
9 #include "altera avalon pio regs.h"
10
14 int main()
15 {
16 //RGB 8 bit
17 unsigned char Color;
18 unsigned char R;
19 unsigned char G;
20 unsigned char B;
26
21 //printf("Hello from Nios II!\n");
22 while(1)
23 {
24 if(READ=0x0)
25 WRITE(0xFFFF);
26 else
27 {
28 R=READ;
29 delay ms(D);
30 G=READ;
31 delay ms(D);
32 B=READ;
33 delay ms(D);
34 }
35
36 if(3*B>R+G+B)
37 {
38 R=0; //0x0000
39 G=0; //0x0000
40 B=255; //0xFFFF
41 }
42
43 WRITE(R);
44 delay ms(D);
45 WRITE(G);
46 delay ms(D);
47 WRITE(B);
48 delay ms(D);
49
50
51 }
52 return 0;
53 }
27
Conclusion
28