SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
1Filtrage Adaptatif Par SOC
Université ibn Tofail
Faculté des Sciences de Kenitra
Master Microélectronique
IMPLEMENTATION DU FILTRE LMS SUR FPGA PAR S.O.C
Encadrant : Pr. R. EL GOURI
Réalisé par :
BOUGHAIDI Mohammed Taha
KHARMOUDI Ali Mouslim
BENKERROUM Houssam
OUBARI Abed
2Filtrage Adaptatif Par SOC
Introduction :
Dans le cas général lorsqu’on parle du mot filtrage ou bien filtre il s’agit alors d’un
système servant à séparer des éléments dans un flux. Ce flux peut être un flux de matières, un
courant électronique, un flux d'informations, un flux optique, etc. L'action du filtre consiste à
retenir, supprimer, rediriger ou modifier les éléments indésirables du flux, et à en laisser passer
librement les éléments utiles.
Dans le domaine du traitement du signal et de l’électronique, le terme filtre désigne à
l'origine, par analogie avec les filtres de fluides, un circuit qui rejette une partie indésirable du
signal ; par extension, un circuit qui réalise une opération de traitement du signal, On trouve
notamment :
 Des filtres passe-bas (qui coupent les hautes fréquences), passe-haut (qui coupent les
basses fréquences), passe-bande(qui ne laissent passer qu'une bande définie de fréquence), et
coupe band(qui laissent passer toutes les fréquences sauf la bande rejeté).
filtre audio, filtre électronique dédié au traitement du signal dans l'enregistrement et la
reproduction sonore.
Dans le cas général on distingue deux classes fondamentales des filtres : filtres
analogiques et filtres numériques.
Les filtres électroniques analogiques utilisent, éventuellement en combinaison avec des
composants actifs (amplificateurs), des résistances, qui sont des composants indifférents aux
variations dans le temps, avec d'autres dipôles qui emmagasinent l'énergie pour la restituer
ultérieurement, appelés réactances :
sous forme électrostatique : pour les condensateurs dont la capacité s'oppose aux
variations de la tension à leurs bornes, en absorbant ou restituant un courant.
sous forme électromagnétique : pour les bobines dont l'inductance s'oppose aux variations
du courant qui les traverse en élevant ou abaissant la tension.
Certaines constructions utilisent des composants qui introduisent un délai ou retard dans la
transmission du signal.
Un filtre numérique est un élément qui effectue un filtrage à l'aide d'une succession
d'opérations mathématiques sur un signal discret. C'est-à-dire qu'il modifie le contenu spectral
du signal d'entrée en atténuant ou éliminant certaines composantes spectrales indésirables.
3Filtrage Adaptatif Par SOC
Contrairement aux filtres analogiques, qui sont réalisés à l'aide d'un agencement de composantes
physiques (résistance, condensateur, inductance, transistor, etc.), les filtres numériques sont
réalisés soit par des circuits intégrés dédiés, des processeurs programmables (FPGA,
microprocesseur, DSP, microcontrôleur, etc.), soit par logiciel dans un ordinateur.
Les filtres numériques peuvent, en théorie, réaliser la totalité des effets de filtrage pouvant
être définis par des fonctions mathématiques ou des algorithmes. Les deux principales
limitations des filtres numériques sont la vitesse et le coût. La vitesse du filtre est limitée par la
vitesse (l'horloge, le « clock » en anglais) du processeur. Pour ce qui est du coût, celui-ci dépend
du type de processeur utilisé. Par contre, le prix des circuits intégrés ne cesse de diminuer, et
les filtres numériques se retrouvent partout dans notre environnement, radio, téléphone
cellulaire, télévision, lecteurs MP3, etc.
Les filtres numériques étant généralement réalisés par des processeurs, ils sont décrits à l'aide
de langages de programmation.
Un filtre numérique est défini par sa réponse impulsionnelle ou aussi par sa fonction de
transfert ( ) ( )h n H z .
L’équation aux différences dans le cas d’un filtre numériques s’écrit :
( ) ( )k p
k p
a x n k b y n p    , La fonction de transfert d’un tel filtre numérique est défini par :
( )
( ) ( ) ( ). ( )
( )
Y z
H z Y z H z X z
X z
  
Pour les filtres classiques on distingue deux types :
 Filtres à réponse impulsionnelle finie : Ce type de filtre est dit fini, car sa réponse
impulsionnelle se stabilisera ultimement à zéro. Un filtre FIR est non récursif, c'est-à-dire
que la sortie dépend uniquement de l'entrée du signal, il n'y a pas de contre-réaction
 Filtres à réponse impulsionnelle infinie : les RII (Filtre à réponse impulsionnelle infinie), en
l'anglais IIR (infinite impulse response), possèdent une réponse impulsionnelle qui ne se
stabilisera jamais, et ce, même à l'infini. Ce type de filtre est récursif, c'est-à-dire que la
4Filtrage Adaptatif Par SOC
sortie du filtre dépend à la fois du signal d'entrée et du signal de sortie, il possède ainsi une
boucle de contre-réaction
Notre objectif consiste à faire une étude théorique sur le filtre adaptatif à travers l’exemple
des filtres LMS et on va essayer d’implémenter ce filtre sur la carte FPGA en utilisant la
méthode des Systèmes On Chip, pour cela on va décomposer notre projet selon trois chapitre :
Chapitre I : Le Filtrage Adaptatif – Filtre LMS
Chapitre II : SOC – Micro blaze – Carte FPGA
Chapitre III : Implémentation Du Filtre
Réalisation pratique
5Filtrage Adaptatif Par SOC
Chapitre I : Le Filtrage Adaptatif –Filtre LMS
L'annulation de bruit comprend l'ensemble des techniques qui permettent d'annuler le bruit
contenu dans un signal. Le signal peut représenter une image ou un son. Le bruit étant un
composant indésirable, il est nécessaire de l’éliminer le plus possible pour recueillir le signal qui
nous intéresse. Les méthodes d’annulation de bruits touchent au domaine du génie électrique, plus
particulièrement celui des télécommunications.
Il existe de nombreuses applications à l’annulation de bruit. En voici quelques-unes : Domaine de
l’aviation : l’annulation permet aux pilotes d’avion de chasse de communiquer entre eux, malgré le
bruit assourdissant qui règne dans le cockpit.
Domaine de l’automobile : les pilotes de course doivent pouvoir communiquer clairement avec les
membres de son équipe, sans que le bruit du moteur interfère avec le signal utile (la voix).
Domaine des téléphones portables : kit mains libres sans fils accroché permettant de
communiquer clairement, bien que le microphone soit au niveau de l’oreille.
Militaire : le domaine militaire regorge de technologies de pointe, et l’annulation de bruit et
l’une des technologies utilisée depuis longtemps. Elle permet aux militaires dans des situations
délicates confrontés à des environnements très bruyants de pouvoir continuer à communiquer
entre eux.
Sécurité publique : en cas d’interventions, les pompiers sous leurs masques confrontés à des
conditions extrêmes nécessitent ce genre de technologie pour dialoguer.
Médical: lors d'un électrocardiogramme, on obtient un signal qui contient deux informations: le
battement du cœur de la mère et celui du fœtus. L'annulation de bruit permet d'annuler le
battement de la mère dans le signal pour permettre l'analyse du battement du bébé.
Dans notre cas on va utiliser un filtrage adaptatif de type RLS.
I. Algorithme adaptatif :
Un algorithme adaptatif est un algorithme qui est capable de changer automatiquement son
comportement en fonction de son contexte d’exécution pour atteindre des performances
optimales. Les changements peuvent être sur les données manipulées par l’algorithme, des
paramètres de configurations de l’environnement d’exécution et de l'occupation des ressources.
6Filtrage Adaptatif Par SOC
Ces algorithmes sont des algorithme au sens classique, le terme adaptatif est ici utilisé pour
souligné le fait que le comportement de l'algorithme peut varier de façon importante selon
l'environnement.
On parle par exemple d'apprentissage adaptatif pour le boosting en apprentissage automatique
(par exemple l'algorithme Adaboost), de filtrage adaptatif en traitement du signal1 et en
géométrie algorithmique.
II. Filtrage Adaptatif :
a) Notation :
Avant de commencer le traitement on va définir quelques notations :
 une lettre en minuscule désigne un scalaire et une lettre en majuscule désigne un vecteur
  :x n signal scalaire de n.
 ( ) :X n signal vecteur de n.  ( ) ( ), ( 1)................... ( 1)
T
X n x n x n x n L    est un vecteur de
longueur L.
n représente le temps discret.
Filtre RIF àL coefficients:  0 1 1H( ) ( ), ( )................... ( )
T
Ln h n h n h n .
a) Filtrage adaptatif :
Un filtrage est rendu adaptatif si ses paramètres, les coefficients, sont modifiés selon un
critère donné, dés qu’une nouvelle valeur du signal devient disponible. Ces modifications
doivent suivre l’évolution des systèmesdans leur environnement aussi rapidement que possible.Le
filtrage adaptatif est généralement associé avec unfonctionnement en temps réel.
Les filtres adaptatifs peuvent être classés en fonctiondes choix qui sont faits sur les points
suivants :
le critère d’optimisation,
7Filtrage Adaptatif Par SOC
l’algorithme de mise à jour des coefficients,
la structure du filtre programmable
le type de signal traité, mono ou multidimensionnel.
Il existe deux classes importantes de filtres linéairesoptimaux :
A : filtrage de Wiener (où les signaux considérés d(n)et x(n) sont stationnaires),
B : filtrage de Kalman (qui est une généralisation dufiltre deWiener valable aussi dans le cas de
processus(ou de signaux) non stationnaires).
b) Algorithme :
Le choix de l’algorithme se fera en fonction des critèressuivants:
la rapidité de convergence qui sera le nombred’itérations nécessaires pour converger assez
prèsde la solution optimale,
la capacité de poursuite (tracking) des variations(non-stationnarités) du système,
la robustesse au bruit,
la complexité,
la structure (modularité, parallélisme, ...),
 les propriétés numériques (stabilité et précision)dans le cas d’une précision limitée sur les
donnéeset les coefficients du filtre.
Le filtrage adaptatif est un outil puissant en traitementdu signal, communications numériques, et
contrôleautomatique. Les applications sont diverses maisprésentent les caractéristiques
suivantes : on disposed’une entrée ( ) ainsi que de la réponse désirée(référence) d(n) et l’erreur
e(n), qui est la différenceentre d(n) et la sortie du filtre y(n), sert à contrôler(adapter) les
valeurs des coefficients du filtre. Ce quidifférencie essentiellement les applications provient
dela façon de définir la réponse désirée d(n). On peutdistinguer quatre grandes classes
d’applications :
• l’identification de systèmes,
• la prédiction,
• la modélisation inverse,
• l’annulation d’interférences.
8Filtrage Adaptatif Par SOC
 L’identification de systèmes :
( )est la sortie du système que l’on souhaiteidentifier :
 La prédiction :
( )est le signal à l’instant n .Et y(n) le signalprédit à partir du signal aux instants précédents
(retardées)[ ( − 1), ( − 2),· · · ].
La modélisation inverse :
d(n) est l’entrée (retardée) du system que l’on cherche à inverser
9Filtrage Adaptatif Par SOC
 L’annulation d’interférence :
d(n) est un signal contenant le signal utile et lesinterférences à annuler. x(n) est un signal dénué
(ouPresque) d’information et obtenu par un capteur prochedes interférences.
III. Filtre LMS (Least MeanSquare):
L’algorithme du gradient stochastique est uneapproximation de l’algorithme du gradient
déterministe.L’algorithme LMS est certainement l’algorithmeadaptatif le plus populaire qui
existe en raison desa simplicité.
Rappel sur l’algorithme du gradient déterministe :
L’algorithme du gradient déterministe est :
1
( 1) ( ) ( )
2
h n h n g n  
Où
 
 
( )
( ) 2 ( ) ( ) 2 2 ( )
( )
J h n
g n E x n e n p Rh n
h n

      avec ( ) ( ) ( )e n y n d n  et g(n) est le
gradient de la fonction coût    ( ) ²( )J h n E e n Cet algorithme peut encore s’écrire enutilisant
le signal d’erreur :
10Filtrage Adaptatif Par SOC
 
( ) ( ) ( ). ( )
( 1) ( ) ( ). ( )
T
e n d n x n h n
h n h n E x n e n
 
  
Or le problème de cet algorithme se pose en pratique  ( ). ( )E x n e n ou de manière équivalente R
et p ne sont pas connus.
L’algorithme LMS :
Puisque  ( ) ( )T
R E x n x n et  ( ). ( )P E x n d n sontinconnus, on approchera ces grandeurs
déterministespar des estimées ( )R n et ( )P n à l’instant n. Dans lecas du LMS, on choisit les
estimées les plus simplespossibles, àsavoir : ( ) ( ) ( )T
R n x n x n et ( ) ( ) ( )P n x n d n Ce sont
simplement les estimées instantanées descorrélations.En remplaçant : ( )R n et ( )P n dans
l’algorithme dugradient déterministe, on obtient :
 ( 1) ( ) ( ) ( ) (
( 1)
( 1
)
( ) ( ) ( ) ( ) ( )
() ( ) ) ( )
T
h n h n P n R n h n
h n xh n d n x n h n
h e n
n
n xn nh



    
 
   

 
 
L’équation ( 1) ( ) ( ) ( )h n h n x n e n   est l’algorithme LMS. On remarquera que h(n)est
maintenant une variable aléatoire [puisqu’à chaquenouvelle itération n h(n) dépend des
processusaléatoires x(n) et d(n)].
Calcul de la sortie du filtre : ( ) ( ) ( )T
y n h n x n
Calcul du signal d’erreur : ( ) ( ) ( )e n y n d n 
Mise à jour du filtre : ( 1) ( ) ( ) ( )h n h n x n e n  
 μ est le pas d’adaptation de l’algorithme qui démarreavec une initialisation quelconque h(0)
 L’algorithme LMS est très simple : il nécessiteseulement 2L + 1 multiplications et 2L additions
par itération, où L est le nombre de coefficients du filtre.
 Conclusion sur l’algorithme LMS :
Les performances du LMS dépendent de trois facteurs :
1. le pas d’adaptation  .
2. les valeurs propres de la matrice R.
3. la longueur L du filtre h.
11Filtrage Adaptatif Par SOC
Chapitre II: Systèmes On Chip-MicroBlaze - Carte FPGA
I. Les Systèmes On Chip:
 Du transistor au SoC
On se basant aussi sur les études suivants de ces graphes :
le nombre detransistors par circuit
12Filtrage Adaptatif Par SOC
la bandepassante mémoire
On remarque que la technologie évolue en réduisant la taille des transistors selon des
spécifications ce qui permet de :
 Augmenter la fréquence d’horloge
 Augmenter la densité d’intégration
 Augmenter la capacité mémoire
 Augmenter la taille des mots
 Augmenter la consommation de l’énergie
L’évolution de la technologie (Les lois d’évolution) :
1)1965 Modélisation par la Loi de Moore :
La densité d’intégration (le nombre de transistorspar unité de surface sur une puce)
double tous les18 mois (60% l’an)
Prédiction empirique devenu incroyablement exacteet même un objectif à tenir.
Cercle vertueux.
2) Evolution des circuits et des mémoires:
L’augmentation de la taille des puces est moinsprévisible : entre 10 et 25% par an.
L’effet combiné est une augmentation dunombre de transistors par circuit de 60 à 80%
13Filtrage Adaptatif Par SOC
par an.
La densité croit d’un peu moins de 60% par an(x4 en 3 ans).
3) Loi de Nathan :
Le logiciel se comporte comme un gaz : son expansion est tellequ’il remplit tout contenant,
Le logiciel crée une pression d’évolution sur les : Mémoire, Processeurs, Entrées / Sorties.
Concrètement, la quantité de mémoire dont a besoin unprogramme augmente d’un facteur
1,5 à 2 par an.
Augmentation du nombre de bits d’adresse de 0,5 à 1 par an.
4) Loi de Joy :
La puissance CPU des processeurs embarqués enMIPS double tous les 2 ans)
Ils sont de plus en plus communicants :On a besoin d’une bande passante réseau de0,3 à 1
Mb/s par MIPS !!
5) L’industrie électronique ne vit que grâce à son expansion rapide. Aujourd’hui la durée de vie
d’une technologie est d’environ 5 ans.Face à cela, l’industrie électronique doit :Maintenir son taux
de progression, et Révolutionner régulièrement ses méthodes de conception/production.
6)La conception vise aujourd’hui l’intégration deplusieurs composants (d’un système) sur un
seulchip
 Systèmes On Chip :
La conception vise aujourd’hui l’intégration de plusieurs composants (d’un système) sur une seule
puce appelée aussi chip. Ceci a donnée naissance à la technologie des Systèmes On Chip
(SOC)(Système sur puce),
Un système sur une puce, également souvent désigné dans la littérature scientifique par le terme
anglais system on a chip ou son abréviation SOC, est un système complet embarqué sur une seule
puce, pouvant comprendre de la mémoire, un ou plusieurs microprocesseurs, des périphériques
d'interface, ou tout autre composant nécessaire à la réalisation de la fonction attendue.
 Particularités des Systèmes On Chip :
Les contraintes des SOC conditionnent leur conception :
Coûts de conception et de vérification (faibles marges de bénéfice)
Contraintes de temps strictes ou souples
14Filtrage Adaptatif Par SOC
Consommation d’énergie (portables, PDA, Wireless, ...)
Sécurité (automobile, aviation)
Poids, taille (UMTS vs GSM)
Accroissement du logiciel embarqué
 Applications des Systèmes On Chip :
Processeur d'images DIGIC Canon ou EXPEED de Nikon.
Processeur Cell du consortium STI
Architecture ARM : Toutes les puces contenant des processeur ARM Cortex-A, que ce soit,
AllWinner, Exynos de Samsung,MediaTek, OMAP de Texas Instrument, Rockchip, Tegra de
nVidia, Snapdragon de Qualcomm,, etc.
Architecture x86 : différentes déclinaisons du processeur Intel Atom, Intel Core et AMD
Fusion reprennent ce principe, limité au processeur et aux unités de calculs. Les commerciaux des
architectures x86 appellent cela APU, mais en architecture informatique un APU désigne de
façon générique une unité spécialisée dans l'accélération des calculs, que ce soit GPU, GPGPU,
DSP…
II. Micro Blaze:
Le MicroBlaze est un cœur de processeur softcore 32 bits de la société Xilinx. Il est conçu pour
être implémenté sur les FPGA de ce fabricant. Le code source de MicroBlaze est fermé.
 Architecture générale :
Le MicroBlaze est un microprocesseur softcore RISC, d'architecture Harvard, entièrement 32
bits. En effet, il possède :
32 registres internes de 32 bits,
un bus instructions interne (ILMB)
un bus donné interne (DLMB),
un bus d'instructions externe (IOPB),
un bus de données externe (DOPB).
Le processeur comporte 70 options de configuration2 permettant à l’utilisateur de sélectionner
ou de paramétrer les composants internes selon ses besoins :
15Filtrage Adaptatif Par SOC
un pipeline à 3 ou 5 niveaux,
utilisation des multiplieurs câblés du FPGA (sauf sur Spartan II)
opérateur de division
opérateur de décalage (Barrel Shifter)
FPU (Floating Point Unit)
mémoires cache instructions et données
logique de débug (hardware breakpoints)
On-Chip Peripheral Bus (OPB) :
Le bus OPB, conçu par IBM pour ses microcontrôleurs PowerPC, permet de lier plusieurs maîtres
à plusieurs esclaves. Il autorise un maximum de 16 maîtres et un nombre d’esclaves illimité selon
les ressources disponibles. Xilinx conseille néanmoins un maximum de 16 esclaves. Comme ce bus
est multi maîtres, il a donc une politique d’arbitrage paramétrable. Ce bus permet donc d’ajouter
des périphériques au MicroBlaze dont les besoins en communications seront faibles.
Local Memory Bus (LMB) :
Le bus LMB est un bus synchrone utilisé principalement pour accéder aux blocks RAM inclus sur
le FPGA. Il utilise un minimum de signaux de contrôle et protocole simple pour s’assurer d’accéder
à la mémoire rapidement (un front d’horloge).
Fast Simplex Link (FSL) :
Le MicroBlaze comporte 8 liens entrées/sorties FSL. Le bus FSL est un moyen rapide de
communication entre le processeur et une autre entité. Chaque lien FSL 32 bits est
unidirectionnel (simplex) et met en œuvre une FIFO (pour stocker les données) et des signaux de
contrôle (FULL, EMPTY, WRITE, READ, …). Il met aussi à la disposition du développeur plusieurs
fonctions intéressantes dont les plus utilisées sont : “microblaze_bwrite_datafsl” et
“microblaze_bread_datafsl”. Ces deux fonctions permettent d'échanger des données entre
différents microblazes, par exemple, en utilisant la FIFO déjà intégrée dans le bus FSL. Ces
deux fonctions sont bloquantes;bwrite se bloque lorsque la FIFO du bus FSL est saturée et
bread se bloque lorsque la FIFO est vide. Il doit y avoir un bwrite pour débloquer la lecture. Les
communications sur les liens FSL se font très simplement grâce à des instructions prédéfinies.
Elles peuvent atteindre les 300 Mo/s à 150 Mhz.
Xilinx Cache Link (XCL)
16Filtrage Adaptatif Par SOC
Le lien XCL est un lien FSL particulier, dédié à la connexion d'un contrôleur mémoire externe
avec la mémoire cache interne. Ceci permet au contrôleur de cache de ne pas être ralenti par la
latence du bus OPB.
 Périphériques :
De nombreux périphériques sont fournis avec le MicroBlaze, afin de constituer un
microcontrôleur complet et personnalisable. Il y a, entre autres :
contrôleur mémoire (SRAM, Flash)
contrôleur mémoire SDRAM
UART lite
Timer/compteur avec fonction PWM
interface SPI
contrôleur d'interruptions
GPIO (entrées-sorties génériques)
convertisseurs A/N et N/A Delta-Sigma
DMA
De plus, des périphériques payants sont proposés en version d'évaluation, qui ont la particularité
de ne fonctionner que quelques heures :
UART 16550
interface Ethernet
interface I²C
interface PCI
 Méthode de développement :
Un processeur soft-core présente la particularité d'une programmation à deux niveaux :
configuration matérielle du FPGA pour associer un (ou des) processeur(s) et des périphériques,
programmation logicielle sur ce(s) processeur(s).
Cette spécificité nécessite des outils de développement adaptés, et présente plusieurs
avantages :
démarche de CoDesign,
17Filtrage Adaptatif Par SOC
homogénéité entre matériel et logiciel (interfaces et mapping logiciels générés par les outils
hardware),
possibilité de faire une simulation HDL du processeur et de ses périphériques (bien que ce soit
une opération longue),
possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du
FPGA : lorsque le système se "réveille" à la mise sous tension, une partie du code est déjà
présente en mémoire.
 synchronisation entre le module de débug (MDM) et l'"analyseur logique virtuel" ChipScope,
afin de mener un débug combiné matériel/logiciel.
Bien que la chaîne de développement logiciel (outils GNU), et les outils de synthèse, placement-
routage FPGA soient soit tout à fait standard, des outils spécifiques en amont et en aval sont
proposés :
Assistant de configuration pour cartes existantes (choix de périphériques et placement des
entrées-sorties selon le routage de la carte)
sélection et assemblage des périphériques
choix du processeur
connexion des périphériques sur les différents bus, choix des adresses
configuration des périphériques
déclaration des routines d'interruptions, directement associées aux périphériques
compilation des bibliothèques C en fonction des périphériques et options du processeur (FPU,
division) choisis
initialisation des mémoires internes dans le fichier binaire de configuration du FPGA
téléchargement matériel et logiciel, ainsi que débug logiciel, avec le même lien JTAG
 Méthode de développement :
Un processeur soft-core présente la particularité d'une programmation à deux niveaux :
configuration matérielle du FPGA pour associer un (ou des) processeur(s) et des
périphériques,
programmation logicielle sur ce(s) processeur(s).
Cette spécificité nécessite des outils de développement adaptés, et présente plusieurs avantages
:
18Filtrage Adaptatif Par SOC
démarche de CoDesign,
homogénéité entre matériel et logiciel (interfaces et mapping logiciels générés par les outils
hardware),
possibilité de faire une simulation HDL du processeur et de ses périphériques (bien que ce
soit une opération longue),
possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du
FPGA : lorsque le système se "réveille" à la mise sous tension, une partie du code est déjà
présente en mémoire.
synchronisation entre le module de débug (MDM) et l'"analyseur logique virtuel" ChipScope,
afin de mener un débug combiné matériel/logiciel.
Bien que la chaîne de développement logiciel (outils GNU), et les outils de synthèse, placement-
routage FPGA soient soit tout à fait standard, des outils spécifiques en amont et en aval sont
proposés :
Assistant de configuration pour cartes existantes (choix de périphériques et placement des
entrées-sorties selon le routage de la carte)
sélection et assemblage des périphériques
compilation des bibliothèques C en fonction des périphériques et options du processeur
(FPU, division) choisis
possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du
FPGA
téléchargement matériel et logiciel, ainsi que débug logiciel, avec le même lien JTAG
III. Carte FPGA:
Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique
qui peut être reprogrammé après sa fabrication. Notons qu'il serait impropre de parler de
programmation au sens logiciel (contrairement à un microprocesseur, il n'exécute aucune ligne de
code). Ici, mieux vaudrait parler de « reconfiguration » plutôt que de reprogrammation (on
modifie des connexions ou le comportement du composant, on connecte des portes logiques entre
elles, etc.). Le verbe programmer est toutefois le plus fréquent, mais au sens de personnaliser. Il
s'agit bel et bien de réseaux logiques reconfigurables et modifiables.
19Filtrage Adaptatif Par SOC
il est composé de nombreuses cellules logiques élémentaires et bascules logiques librement
connectables (c'est justement la reconfiguration, ou programmation, du composant qui définit les
connexions faites entre portes logiques).
La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien
pour le routage du circuit que pour les blocs logiques à interconnecter.
Un bloc logique est de manière générale constitué d'une table de correspondance (LUT
ou Look-Up-Table) et d'une bascule (Flip-Flop en anglais). La LUT sert à implémenter des
équations logiques ayant généralement 4 à 6 entrées et une sortie. Elle peut toutefois être
considérée comme une petite mémoire, un multiplexeur ou un registre à décalage. Le registre
permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal (pipeline).
Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à
quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable.
Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le
silicium et justifie le coût élevé des composants FPGA. La topologie est dite « Manhattan », en
référence aux rues à angle droit de ce quartier de New York.
Les densités actuelles ne permettent plus un routage manuel, c'est donc un outil de
placement-routage automatique qui fait correspondre le schéma logique voulu par le concepteur
et les ressources matérielles de la puce. Comme les temps de propagation dépendent de la
longueur des liaisons entre cellules logiques, et que les algorithmes d'optimisation des placeurs-
routeurs ne sont pas déterministes, les performances (fréquence max.) obtenues dans un FPGA
sont variables d'un design à l'autre. L'utilisation des ressources est par contre très bonne, et
des taux d'occupation des blocs logiques supérieures à 90 % sont possibles.
Comme la configuration (routage et LUTs) est faite par des points mémoire volatils, il
est nécessaire de sauvegarder le design du FPGA dans une mémoire non volatile externe,
généralement une mémoire Flash série, compatible « JTAG ». Certains fabricants se distinguent
toutefois par l'utilisation de cellules EEPROM pour la configuration, éliminant le recours à une
mémoire externe, ou par une configuration par anti-fusibles (la programmation par une tension
élevée fait « claquer » un diélectrique, créant un contact). Cette dernière technologie n'est
toutefois pas reconfigurable.
20Filtrage Adaptatif Par SOC
Chapitre III :Implémentation Du Filtre
La conception d’un système embarqué en INF3990 se réalise grâce à une série d’outils compris
dans la suite logicielle Xilinx ISE Design Suite. Parmi ceux-ci, deux retiennent notre attention
pour le cours : XPS (Xilinx Platform Studio) et SDK (Software Development Kit). À eux seuls, ils
forment la partie EDK (Embedded Development Kit) de la suite et permettent le design complet
d’une architecture matérielle munie d’un ou plusieurs processeurs, puis le développement et la
compilation d’un logiciel pour ces derniers.
1) Flot de conception :
La conception d’un système embarqué suit un tracé linéaire particulier et inévitable. Le schéma
suivant résume celui-ci (inutile d’y porter attention immédiatement) :
La figure précédente montre bien que la conception nous fait passer d’un logiciel à l’autre, sans
trop avoir à revenir en arrière.
Au départ, tout se passe dans XPS. Ce logiciel permet de créer et de paramétrer tout le côté
matériel du système. Pensez, par exemple, à une maison : avant de la décorer et de la remplir de
meubles, elle doit contenir des planchers, des murs, des entrées et des sorties, de la plomberie,
un réseau électrique, etc., lesquels ont tous été déterminés au préalable par l’architecte. Une
fois le design matériel terminé et implémenté dans le FPGA de la carte, l’exportation de ses
caractéristiques permet de passer à SDK.
21Filtrage Adaptatif Par SOC
SDK, c’est la décoration. Si la maçonnerie d’une maison peut prendre des semaines avant d’être
complétées, changer un cadre d’un mur à l’autre ou déplacer un meuble se fait en un tour de main.
Dans le contexte d’INF3990, on parle d’une quinzaine de minutes pour synthétiser et
implémenter le design matériel contre une dizaine de secondes pour la compilation du logiciel.
Enfin, l’outil XMD, un débogueur, permet d’envoyer le logiciel compilé et assemblé vers la
mémoire de la carte, de l’exécuter et le déboguer.
Sans oublier notre analogie, il faut comprendre que modifier un aspect du design matériel
demande souvent de recommencer une bonne partie de la synthèse et l’implémentation, tout
comme l’ajout d’un étage à une maison demande d’abord une déconstruction partielle. À la lumière
de ce fait, il est important de vérifier tous les paramètres et les modules matériels
correctement avant de lancer la synthèse et l’implémentation.
2) XPS : Xilinx Platform Studio :
Tel que mentionné ci-haut, XPS permet la conception matérielle du système embarqué. Celui-ci
comprendra la plupart du temps un ou plusieurs processeurs, ainsi que plusieurs modules
matériels, nommés cores ou IP cores, interconnectés par un ou plusieurs bus.
BSB : Base System Builder
Un système matériel dans XPS est décrit à l’aide de plusieurs fichiers de spécifications
textuels. Comme leurs formats sont plutôt complexes, surtout en début de cours, il est
préférable d’utiliser l’outil BSB dans XPS. Celui-ci présente un guide intelligent muni d’une
interface graphique et écrit, selon les options choisies, les fichiers de spécifications
automatiquement. Ceux-ci peuvent par la suite être modifiés pour atteindre des objectifs plus
précis, mais le BSB à lui seul permet de créer un système matériel de base complet et
fonctionnel.
Afin d’utiliser le BSB, il suffit de lancer XPS afin de se faire proposer ce choix :
22Filtrage Adaptatif Par SOC
En s’assurant que la première option est
sélectionnée, cliquer sur « OK » lance le BSB. La
fenêtre suivante demande où enregistrer les
fichiers du projet et où se trouvent les
périphériques additionnels :
Le répertoire de recherche des périphériques
additionnels devrait être
C:Xilinx13.1ISE_DSedk_user_repository.
Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new
design » sélectionnée et appuyons sur « Next> ».
La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà
intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision »
22Filtrage Adaptatif Par SOC
En s’assurant que la première option est
sélectionnée, cliquer sur « OK » lance le BSB. La
fenêtre suivante demande où enregistrer les
fichiers du projet et où se trouvent les
périphériques additionnels :
Le répertoire de recherche des périphériques
additionnels devrait être
C:Xilinx13.1ISE_DSedk_user_repository.
Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new
design » sélectionnée et appuyons sur « Next> ».
La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà
intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision »
22Filtrage Adaptatif Par SOC
En s’assurant que la première option est
sélectionnée, cliquer sur « OK » lance le BSB. La
fenêtre suivante demande où enregistrer les
fichiers du projet et où se trouvent les
périphériques additionnels :
Le répertoire de recherche des périphériques
additionnels devrait être
C:Xilinx13.1ISE_DSedk_user_repository.
Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new
design » sélectionnée et appuyons sur « Next> ».
La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà
intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision »
23Filtrage Adaptatif Par SOC
Nous accédons ensuite à la page où un choix doit être fait entre un système à un ou à plusieurs
processeurs. Pour cette introduction simple, nous choisissons un seul processeur :
24Filtrage Adaptatif Par SOC
Il est ensuite possible de configurer le processeur choisi. Ici, nous désirons que celui-ci soit un
MicroBlaze (qui devrait d’ailleurs être le seul choix), avec une fréquence d’horloge de 50 MHz et
32kB de mémoire locale (mémoire contenant éventuellement notre logiciel compilé et assemblé) :
La page suivante est probablement la plus importante. Elle permet d’inclure ou d’exclure des
périphériques au système. Ces périphériques sont liés par un seul et même bus. Ils ne
25Filtrage Adaptatif Par SOC
représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous-
ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL,
les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système :
25Filtrage Adaptatif Par SOC
représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous-
ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL,
les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système :
25Filtrage Adaptatif Par SOC
représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous-
ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL,
les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système :
26Filtrage Adaptatif Par SOC
Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache,
aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre
design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS :
26Filtrage Adaptatif Par SOC
Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache,
aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre
design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS :
26Filtrage Adaptatif Par SOC
Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache,
aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre
design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS :
27Filtrage Adaptatif Par SOC
L’interface régulière de XPS permet de modifier les paramètres des périphériques configurés
par le BSB, d’en ajouter de nouveaux, de modifier les plages d’adresses des bus et de poursuivre
de façon générale le design matériel du système.
28Filtrage Adaptatif Par SOC
Après on rédige l’ucf
29Filtrage Adaptatif Par SOC
# Generic Template
Net fpga_0_RS232_RX_pin LOC="U8";
Net fpga_0_RS232_TX_pin LOC="M13";
Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz;
Net fpga_0_clk_1_sys_clk_pin LOC="C9";
Net fpga_0_rst_1_sys_rst_pin TIG;
Net fpga_0_rst_1_sys_rst_pin LOC="K17";
Pour l’instant, nous nous contentons de synthétiser et d’implémenter le système en appuyant sur
le bouton montré dans la capture suivante :
Il faudra attendre quelques minutes avant de voir apparaitre la ligne « Done! » dans la console au
bas de l’interface.
Que s’est-il alors passé? Le schéma suivant résume de façon générale le processus effectué et
ses produits dérivés :
30Filtrage Adaptatif Par SOC
Suite à la génération du fichier system.bit, le FPGA de la carte de développement peut être
programmée avec notre design, Cette action lancera iMPACT et configurera automatiquement le
FPGA.
Pour passer au développement logiciel, il suffit d’exporter les caractéristiques du système
matériel vers un dossier de travail, ou workspace, où SDK basera ses projets. Pour ce faire, il
faut sélectionner le menu « Project » puis l’item « Export Hardware Design to SDK… ». Ensuite,
le bouton « Export &Launch SDK » peut être appuyé pour lancer automatiquement SDK suite à
l’exportation. SDK demandera alors où placer le dossier de travail : il est conseillé de le placer à
l’extérieur du répertoire de projet XPS.
31Filtrage Adaptatif Par SOC
La partie matérielle du système est créée, le FPGA est programmé et les caractéristiques du
design sont exportées dans un dossier de travail pour SDK : il est maintenant temps de
développer un logiciel pouvant s’exécuter sur notre plateforme personnalisée.
Une fois dans SDK, l’onglet « Project Explorer » à gauche ne liste qu’un item nommé «
hw_platform_0 ». Il s’agit d’une référence aux caractéristiques de notre design matériel; c’est
en fait le produit de l’exportation réalisée précédemment.
32Filtrage Adaptatif Par SOC
Après on va suivre les étapes suivantes :
1- Création d’un Board Support Package :
Avant toute chose, un Board Support Package doit être créé. Celui-ci est un projet logiciel du
dossier de travail qui contient les librairies et entêtes importantes pour nos futurs projets
C/C++. Afin d’en créer un, il faut atteindre l’item de menu « File  New  XilinxBoard Support
Package ». Nous pouvons alors lui donner un nom (sans importance). Nous voyons qu’il cible une
plateforme matérielle particulière : celle exportée par XPS vers notre dossier de travail. Grâce à
celle-ci, il pourra configurer automatiquement certains fichiers et paramètres. À noter
également qu’il est ici possible de choisir un système d’exploitation pour notre système : «
xilkernel » est un petit noyau permettant des services de style POSIX (ordonnancement, fils
d’exécution, synchronisation, compteurs, etc.) tandis que « standalone », que nous choisissons,
est une couche logicielle de très bas-niveau (l’exécution commence à la fonction main et ne gère
pratiquement rien d’autre, un peu comme dans le cours INF1995). En cliquant sur « Finish », la
fenêtre des options du Board Support Package s’affiche.C’est ici qu’il est possible d’inclure des
librairies additionnelles, comme lwIP (couches TCP et IP du réseau) ou Xilinx Memory File
System (système de fichiers en mémoire). Les options du « système d’exploitation » standalone
montrent que les entrée et sortie standards sont redirigées vers l’UART (RS-232).
33Filtrage Adaptatif Par SOC
Nous voyons qu’il cible une plateforme matérielle particulière : celle exportée par XPS vers notre
dossier de travail. Grâce à celle-ci, il pourra configurer automatiquement certains fichiers et
paramètres. À noter également qu’il est ici possible de choisir un système d’exploitation pour
notre système : « xilkernel » est un petit noyau permettant des services de style POSIX
(ordonnancement, fils d’exécution, synchronisation, compteurs, etc.) tandis que « standalone »,
que nous choisissons, est une couche logicielle de très bas-niveau (l’exécution commence à la
fonction main et ne gère pratiquement rien d’autre, un peu comme dans le cours INF1995). En
cliquant sur « Finish », la fenêtre des options du Board Support Package s’affiche.
C’est ici qu’il est possible d’inclure des librairies additionnelles, comme lwIP (couches TCP et IP
du réseau) ou Xilinx Memory File System (système de fichiers en mémoire). Les options du «
système d’exploitation » standalone montrent que les entrée et sortie standards sont redirigées
vers l’UART (RS-232).
2- Création d’un projet C :
Il est maintenant temps de créer un projet C. Via « File -> New ->Xilinx C Project », une fenêtre
présente un choix de modèles pour le nouveau projet; nous choisissons ici un projet vide, « Empty
Application ».
34Filtrage Adaptatif Par SOC
En appuyant sur « Next> », nous avons l’option de créer un nouveau Board Support Package ou
d’en associer un déjà existant au nouveau projet, ce que nous faisons.
Appuyer sur « Finish » termine l’assistant et crée le nouveau projet C.
Nous pouvons désormais créer un nouveau fichier source en cliquant droit sur notre nouveau
projet dans l’onglet « Project Explorer », puis en sélectionnant « New  Source file ». Nous le
nommons ici main.c, mais le nom du fichier est sans importance.
Pour ce test, nous ferons simplement en sorte d’envoyer une chaine vers le canal RS232 en
utilisant la fonction standard printf. Comme nous l’avons déjà vu, la sortie standard est redirigée
vers l’UART (donc tout ce qui est envoyé par printf)
Le programme du filtre LMS :
#include "xparameters.h"
#include "xutil.h"
#include "platform.h"
#include "xuartlite_l.h"
35Filtrage Adaptatif Par SOC
intmain()
{
int I, J;
float D, Y, E, N=21, beta=0.01; // desire - signal sortie - erreur
floath[22] = {0.0}; // coefficients
floatX[22] = {0.0}; // bruit
init_platform();
while(1)
{ Y = 0; //initialisation de la sortie du filtre
for (J = 0; J <= N; J++)
{
X[J] = XUartLite_RecvByte(XPAR_UARTLITE_0_BASEADDR);
Y += (h[J] * X[J]);
//calcul de la sortie du filtre
E = Y - D; // calcul d erreur
if (E>0)
{
for (I = N; I >= 0; I--)
{
h[I] = h[I] + (beta*E*X[I]); //mise a jours de coefficients du filtre
if (I != 0)
X[I] = X[I-1]; //mise a jour des donnees du signal
}
}
XUartLite_SendByte(XPAR_UARTLITE_0_BASEADDR, Y);
}
}
36Filtrage Adaptatif Par SOC
cleanup_platform();
return 0;
}
Aussitôt le fichier enregistré, SDK compile automatiquement notre projet et crée l’exécutable
ELF. Celui-ci se trouve par défaut dans le répertoire Debug du projet.
Envoi de l’exécutable vers la carte
Le fichier ELF compilé et assemblé peut maintenant être envoyé vers la carte. Pour ce faire, nous
utilisons XMD, le débogueur de Xilinx qui est couvert en détails par une autre partie du cours.
Le débogueur peut être lancé dans XPS ou dans SDK. Pour cette introduction, nous utilisons SDK.
Pour le démarrer, il suffit de sélectionner le menu « Xilinx Tools  XMD Console » puis de tapper
la commande
connect mb mdm
ainsi :
Il faut ensuite aller retrouver l’exécutable (fichier ELF) en naviguant dans les dossiers avec les
commandes cd (changer de répertoire), ls (liste des fichiers du répertoire) et pwd (chemin
complet en cours). Dans notre cas, nous tapons
cd Z:/test3_sdk/un_test/Debug
L’utilisation de barres obliques (/) plutôt que des barres obliques inverses () est importante
puisque ce terminal est de type UNIX.
Pour envoyer le fichier un_test.elf, nous utilisons la commande dow :
dowun_test.elf
37Filtrage Adaptatif Par SOC
Le terminal affichera alors l’information suivante aux dernières lignes :
Setting PC with Program Start Address 0x00000000 System Reset .... DONE
Ceci est signe que l’exécutable est désormais dans la mémoire programmable de la carte et que le
logiciel est prêt à être lancé.
Avant l’exécution de ce logiciel qui, nous le rappelons, envoie une chaine par communication RS-
232 vers le PC et se termine, nous devons ouvrir sur le PC un émulateur de terminal. Le logiciel
Termite en est un simple et efficace, qui devrait se connecter automatiquement avec les bons
paramètres au lancement.
38Filtrage Adaptatif Par SOC
Réalisation pratique :
Nous avons utilisé une carte à base de microcontrôleur ATMEGA8 équipée d’un circuit MCP9801
pour mesurer la température et un circuit MAX232 pour la communication série. On a programmé
le microcontrôleur de façon a ce qu’il reçoit la température et l’envoyée vers l’UART.
La broche Tx du circuit Max232 et connectée à la broche Rx de la carte FPGA et la broche Tx
de la carte FPGA et connectée a la broche Rx du PC, comme ça le microcontrôleur envoie a la
carte FPGA les données, cette dernière les traite et les envoie vers le PC ce dernier affiche la
température sur hyper Terminal.

Contenu connexe

Tendances

cours transmission numerique.pdf
cours transmission numerique.pdfcours transmission numerique.pdf
cours transmission numerique.pdfHassnTAI
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning Niji
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURIMansouri Khalifa
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]Assia Mounir
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Samir Tabib
 
Slides capteurs partie 1
Slides capteurs partie 1Slides capteurs partie 1
Slides capteurs partie 1zinoha
 
6sigma ibtissam el hassani-chapitre1
6sigma ibtissam el hassani-chapitre16sigma ibtissam el hassani-chapitre1
6sigma ibtissam el hassani-chapitre1ibtissam el hassani
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Chapitre 1 Rappels sur le filtrage numérique 1.pdf
Chapitre 1 Rappels sur le filtrage numérique 1.pdfChapitre 1 Rappels sur le filtrage numérique 1.pdf
Chapitre 1 Rappels sur le filtrage numérique 1.pdfHeithem2
 
Les QCM : les réponses à toutes vos questions
Les QCM : les réponses à toutes vos questionsLes QCM : les réponses à toutes vos questions
Les QCM : les réponses à toutes vos questionsMarcel Lebrun
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulationPierre Maréchal
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrationsMaxime MIGNANWANDE
 

Tendances (20)

cours transmission numerique.pdf
cours transmission numerique.pdfcours transmission numerique.pdf
cours transmission numerique.pdf
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
 
Qcm physio respiratoire
Qcm physio respiratoireQcm physio respiratoire
Qcm physio respiratoire
 
Chap1 dsp
Chap1 dspChap1 dsp
Chap1 dsp
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1
 
Slides capteurs partie 1
Slides capteurs partie 1Slides capteurs partie 1
Slides capteurs partie 1
 
6sigma ibtissam el hassani-chapitre1
6sigma ibtissam el hassani-chapitre16sigma ibtissam el hassani-chapitre1
6sigma ibtissam el hassani-chapitre1
 
Amdec
AmdecAmdec
Amdec
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Cours1
Cours1Cours1
Cours1
 
Chapitre 1 Rappels sur le filtrage numérique 1.pdf
Chapitre 1 Rappels sur le filtrage numérique 1.pdfChapitre 1 Rappels sur le filtrage numérique 1.pdf
Chapitre 1 Rappels sur le filtrage numérique 1.pdf
 
Les QCM : les réponses à toutes vos questions
Les QCM : les réponses à toutes vos questionsLes QCM : les réponses à toutes vos questions
Les QCM : les réponses à toutes vos questions
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulation
 
Traitement de signal 1
Traitement de signal 1Traitement de signal 1
Traitement de signal 1
 
DSP
DSPDSP
DSP
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrations
 
Chapitre3 prog dsplf3
Chapitre3 prog dsplf3Chapitre3 prog dsplf3
Chapitre3 prog dsplf3
 
Traitement du signal
Traitement du signalTraitement du signal
Traitement du signal
 

Similaire à Filtre adaptatif LMS avec Système On Chi (SOC) sur FPGA

fdocuments.net_traitement-signal.ppt
fdocuments.net_traitement-signal.pptfdocuments.net_traitement-signal.ppt
fdocuments.net_traitement-signal.pptdocteurgyneco1
 
traitement_signal.pdf
traitement_signal.pdftraitement_signal.pdf
traitement_signal.pdfwaelHechmi
 
FiltrageNumérique.pptx
FiltrageNumérique.pptxFiltrageNumérique.pptx
FiltrageNumérique.pptxAyoubELJAFRY1
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfHouBou3
 
Cours traitement de signal partie 1
Cours traitement de signal partie 1Cours traitement de signal partie 1
Cours traitement de signal partie 1sarah Benmerzouk
 
64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.pptdocteurgyneco1
 
Ph.D Defense
Ph.D DefensePh.D Defense
Ph.D Defenseawxzeca
 
Conception d’antennes imprimées pour Identification Radio Fréquence (RFID) d...
Conception d’antennes imprimées pour Identification  Radio Fréquence (RFID) d...Conception d’antennes imprimées pour Identification  Radio Fréquence (RFID) d...
Conception d’antennes imprimées pour Identification Radio Fréquence (RFID) d...Chergui Athman
 
CoursAutomatique_machi_d_ostade.pptx
CoursAutomatique_machi_d_ostade.pptxCoursAutomatique_machi_d_ostade.pptx
CoursAutomatique_machi_d_ostade.pptxHassanMoufassih
 
Elements constitutifs du_plan_de_protection_hta
Elements constitutifs du_plan_de_protection_htaElements constitutifs du_plan_de_protection_hta
Elements constitutifs du_plan_de_protection_htaimene imene
 
LA RF d'un récepteur GNSS par www.OpenGNSS.org
LA RF d'un récepteur GNSS par www.OpenGNSS.orgLA RF d'un récepteur GNSS par www.OpenGNSS.org
LA RF d'un récepteur GNSS par www.OpenGNSS.orgHELILEO
 
Ads etude de cas
Ads etude de casAds etude de cas
Ads etude de casdessouza
 
5 notion de_gnie_lectrique
5 notion de_gnie_lectrique5 notion de_gnie_lectrique
5 notion de_gnie_lectriqueAyoub Bernabio
 
TDSA, Analyse Spectrale et Filtrage continu.pdf
TDSA, Analyse Spectrale et Filtrage continu.pdfTDSA, Analyse Spectrale et Filtrage continu.pdf
TDSA, Analyse Spectrale et Filtrage continu.pdfSAHELAicha
 
Rapport TP SuppTx (Aurele).pdf
Rapport TP SuppTx (Aurele).pdfRapport TP SuppTx (Aurele).pdf
Rapport TP SuppTx (Aurele).pdfstevekambea602
 

Similaire à Filtre adaptatif LMS avec Système On Chi (SOC) sur FPGA (20)

fdocuments.net_traitement-signal.ppt
fdocuments.net_traitement-signal.pptfdocuments.net_traitement-signal.ppt
fdocuments.net_traitement-signal.ppt
 
traitement_signal.pdf
traitement_signal.pdftraitement_signal.pdf
traitement_signal.pdf
 
FiltrageNumérique.pptx
FiltrageNumérique.pptxFiltrageNumérique.pptx
FiltrageNumérique.pptx
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
Cours traitement de signal partie 1
Cours traitement de signal partie 1Cours traitement de signal partie 1
Cours traitement de signal partie 1
 
64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt
 
Capteurs
CapteursCapteurs
Capteurs
 
Ph.D Defense
Ph.D DefensePh.D Defense
Ph.D Defense
 
Conception d’antennes imprimées pour Identification Radio Fréquence (RFID) d...
Conception d’antennes imprimées pour Identification  Radio Fréquence (RFID) d...Conception d’antennes imprimées pour Identification  Radio Fréquence (RFID) d...
Conception d’antennes imprimées pour Identification Radio Fréquence (RFID) d...
 
CoursAutomatique_machi_d_ostade.pptx
CoursAutomatique_machi_d_ostade.pptxCoursAutomatique_machi_d_ostade.pptx
CoursAutomatique_machi_d_ostade.pptx
 
Elements constitutifs du_plan_de_protection_hta
Elements constitutifs du_plan_de_protection_htaElements constitutifs du_plan_de_protection_hta
Elements constitutifs du_plan_de_protection_hta
 
General
GeneralGeneral
General
 
Les detecteurs tout ou rien
Les detecteurs tout ou rienLes detecteurs tout ou rien
Les detecteurs tout ou rien
 
LA RF d'un récepteur GNSS par www.OpenGNSS.org
LA RF d'un récepteur GNSS par www.OpenGNSS.orgLA RF d'un récepteur GNSS par www.OpenGNSS.org
LA RF d'un récepteur GNSS par www.OpenGNSS.org
 
Ads etude de cas
Ads etude de casAds etude de cas
Ads etude de cas
 
Version 01
Version 01Version 01
Version 01
 
005.pdf texte
005.pdf texte005.pdf texte
005.pdf texte
 
5 notion de_gnie_lectrique
5 notion de_gnie_lectrique5 notion de_gnie_lectrique
5 notion de_gnie_lectrique
 
TDSA, Analyse Spectrale et Filtrage continu.pdf
TDSA, Analyse Spectrale et Filtrage continu.pdfTDSA, Analyse Spectrale et Filtrage continu.pdf
TDSA, Analyse Spectrale et Filtrage continu.pdf
 
Rapport TP SuppTx (Aurele).pdf
Rapport TP SuppTx (Aurele).pdfRapport TP SuppTx (Aurele).pdf
Rapport TP SuppTx (Aurele).pdf
 

Filtre adaptatif LMS avec Système On Chi (SOC) sur FPGA

  • 1. 1Filtrage Adaptatif Par SOC Université ibn Tofail Faculté des Sciences de Kenitra Master Microélectronique IMPLEMENTATION DU FILTRE LMS SUR FPGA PAR S.O.C Encadrant : Pr. R. EL GOURI Réalisé par : BOUGHAIDI Mohammed Taha KHARMOUDI Ali Mouslim BENKERROUM Houssam OUBARI Abed
  • 2. 2Filtrage Adaptatif Par SOC Introduction : Dans le cas général lorsqu’on parle du mot filtrage ou bien filtre il s’agit alors d’un système servant à séparer des éléments dans un flux. Ce flux peut être un flux de matières, un courant électronique, un flux d'informations, un flux optique, etc. L'action du filtre consiste à retenir, supprimer, rediriger ou modifier les éléments indésirables du flux, et à en laisser passer librement les éléments utiles. Dans le domaine du traitement du signal et de l’électronique, le terme filtre désigne à l'origine, par analogie avec les filtres de fluides, un circuit qui rejette une partie indésirable du signal ; par extension, un circuit qui réalise une opération de traitement du signal, On trouve notamment :  Des filtres passe-bas (qui coupent les hautes fréquences), passe-haut (qui coupent les basses fréquences), passe-bande(qui ne laissent passer qu'une bande définie de fréquence), et coupe band(qui laissent passer toutes les fréquences sauf la bande rejeté). filtre audio, filtre électronique dédié au traitement du signal dans l'enregistrement et la reproduction sonore. Dans le cas général on distingue deux classes fondamentales des filtres : filtres analogiques et filtres numériques. Les filtres électroniques analogiques utilisent, éventuellement en combinaison avec des composants actifs (amplificateurs), des résistances, qui sont des composants indifférents aux variations dans le temps, avec d'autres dipôles qui emmagasinent l'énergie pour la restituer ultérieurement, appelés réactances : sous forme électrostatique : pour les condensateurs dont la capacité s'oppose aux variations de la tension à leurs bornes, en absorbant ou restituant un courant. sous forme électromagnétique : pour les bobines dont l'inductance s'oppose aux variations du courant qui les traverse en élevant ou abaissant la tension. Certaines constructions utilisent des composants qui introduisent un délai ou retard dans la transmission du signal. Un filtre numérique est un élément qui effectue un filtrage à l'aide d'une succession d'opérations mathématiques sur un signal discret. C'est-à-dire qu'il modifie le contenu spectral du signal d'entrée en atténuant ou éliminant certaines composantes spectrales indésirables.
  • 3. 3Filtrage Adaptatif Par SOC Contrairement aux filtres analogiques, qui sont réalisés à l'aide d'un agencement de composantes physiques (résistance, condensateur, inductance, transistor, etc.), les filtres numériques sont réalisés soit par des circuits intégrés dédiés, des processeurs programmables (FPGA, microprocesseur, DSP, microcontrôleur, etc.), soit par logiciel dans un ordinateur. Les filtres numériques peuvent, en théorie, réaliser la totalité des effets de filtrage pouvant être définis par des fonctions mathématiques ou des algorithmes. Les deux principales limitations des filtres numériques sont la vitesse et le coût. La vitesse du filtre est limitée par la vitesse (l'horloge, le « clock » en anglais) du processeur. Pour ce qui est du coût, celui-ci dépend du type de processeur utilisé. Par contre, le prix des circuits intégrés ne cesse de diminuer, et les filtres numériques se retrouvent partout dans notre environnement, radio, téléphone cellulaire, télévision, lecteurs MP3, etc. Les filtres numériques étant généralement réalisés par des processeurs, ils sont décrits à l'aide de langages de programmation. Un filtre numérique est défini par sa réponse impulsionnelle ou aussi par sa fonction de transfert ( ) ( )h n H z . L’équation aux différences dans le cas d’un filtre numériques s’écrit : ( ) ( )k p k p a x n k b y n p    , La fonction de transfert d’un tel filtre numérique est défini par : ( ) ( ) ( ) ( ). ( ) ( ) Y z H z Y z H z X z X z    Pour les filtres classiques on distingue deux types :  Filtres à réponse impulsionnelle finie : Ce type de filtre est dit fini, car sa réponse impulsionnelle se stabilisera ultimement à zéro. Un filtre FIR est non récursif, c'est-à-dire que la sortie dépend uniquement de l'entrée du signal, il n'y a pas de contre-réaction  Filtres à réponse impulsionnelle infinie : les RII (Filtre à réponse impulsionnelle infinie), en l'anglais IIR (infinite impulse response), possèdent une réponse impulsionnelle qui ne se stabilisera jamais, et ce, même à l'infini. Ce type de filtre est récursif, c'est-à-dire que la
  • 4. 4Filtrage Adaptatif Par SOC sortie du filtre dépend à la fois du signal d'entrée et du signal de sortie, il possède ainsi une boucle de contre-réaction Notre objectif consiste à faire une étude théorique sur le filtre adaptatif à travers l’exemple des filtres LMS et on va essayer d’implémenter ce filtre sur la carte FPGA en utilisant la méthode des Systèmes On Chip, pour cela on va décomposer notre projet selon trois chapitre : Chapitre I : Le Filtrage Adaptatif – Filtre LMS Chapitre II : SOC – Micro blaze – Carte FPGA Chapitre III : Implémentation Du Filtre Réalisation pratique
  • 5. 5Filtrage Adaptatif Par SOC Chapitre I : Le Filtrage Adaptatif –Filtre LMS L'annulation de bruit comprend l'ensemble des techniques qui permettent d'annuler le bruit contenu dans un signal. Le signal peut représenter une image ou un son. Le bruit étant un composant indésirable, il est nécessaire de l’éliminer le plus possible pour recueillir le signal qui nous intéresse. Les méthodes d’annulation de bruits touchent au domaine du génie électrique, plus particulièrement celui des télécommunications. Il existe de nombreuses applications à l’annulation de bruit. En voici quelques-unes : Domaine de l’aviation : l’annulation permet aux pilotes d’avion de chasse de communiquer entre eux, malgré le bruit assourdissant qui règne dans le cockpit. Domaine de l’automobile : les pilotes de course doivent pouvoir communiquer clairement avec les membres de son équipe, sans que le bruit du moteur interfère avec le signal utile (la voix). Domaine des téléphones portables : kit mains libres sans fils accroché permettant de communiquer clairement, bien que le microphone soit au niveau de l’oreille. Militaire : le domaine militaire regorge de technologies de pointe, et l’annulation de bruit et l’une des technologies utilisée depuis longtemps. Elle permet aux militaires dans des situations délicates confrontés à des environnements très bruyants de pouvoir continuer à communiquer entre eux. Sécurité publique : en cas d’interventions, les pompiers sous leurs masques confrontés à des conditions extrêmes nécessitent ce genre de technologie pour dialoguer. Médical: lors d'un électrocardiogramme, on obtient un signal qui contient deux informations: le battement du cœur de la mère et celui du fœtus. L'annulation de bruit permet d'annuler le battement de la mère dans le signal pour permettre l'analyse du battement du bébé. Dans notre cas on va utiliser un filtrage adaptatif de type RLS. I. Algorithme adaptatif : Un algorithme adaptatif est un algorithme qui est capable de changer automatiquement son comportement en fonction de son contexte d’exécution pour atteindre des performances optimales. Les changements peuvent être sur les données manipulées par l’algorithme, des paramètres de configurations de l’environnement d’exécution et de l'occupation des ressources.
  • 6. 6Filtrage Adaptatif Par SOC Ces algorithmes sont des algorithme au sens classique, le terme adaptatif est ici utilisé pour souligné le fait que le comportement de l'algorithme peut varier de façon importante selon l'environnement. On parle par exemple d'apprentissage adaptatif pour le boosting en apprentissage automatique (par exemple l'algorithme Adaboost), de filtrage adaptatif en traitement du signal1 et en géométrie algorithmique. II. Filtrage Adaptatif : a) Notation : Avant de commencer le traitement on va définir quelques notations :  une lettre en minuscule désigne un scalaire et une lettre en majuscule désigne un vecteur   :x n signal scalaire de n.  ( ) :X n signal vecteur de n.  ( ) ( ), ( 1)................... ( 1) T X n x n x n x n L    est un vecteur de longueur L. n représente le temps discret. Filtre RIF àL coefficients:  0 1 1H( ) ( ), ( )................... ( ) T Ln h n h n h n . a) Filtrage adaptatif : Un filtrage est rendu adaptatif si ses paramètres, les coefficients, sont modifiés selon un critère donné, dés qu’une nouvelle valeur du signal devient disponible. Ces modifications doivent suivre l’évolution des systèmesdans leur environnement aussi rapidement que possible.Le filtrage adaptatif est généralement associé avec unfonctionnement en temps réel. Les filtres adaptatifs peuvent être classés en fonctiondes choix qui sont faits sur les points suivants : le critère d’optimisation,
  • 7. 7Filtrage Adaptatif Par SOC l’algorithme de mise à jour des coefficients, la structure du filtre programmable le type de signal traité, mono ou multidimensionnel. Il existe deux classes importantes de filtres linéairesoptimaux : A : filtrage de Wiener (où les signaux considérés d(n)et x(n) sont stationnaires), B : filtrage de Kalman (qui est une généralisation dufiltre deWiener valable aussi dans le cas de processus(ou de signaux) non stationnaires). b) Algorithme : Le choix de l’algorithme se fera en fonction des critèressuivants: la rapidité de convergence qui sera le nombred’itérations nécessaires pour converger assez prèsde la solution optimale, la capacité de poursuite (tracking) des variations(non-stationnarités) du système, la robustesse au bruit, la complexité, la structure (modularité, parallélisme, ...),  les propriétés numériques (stabilité et précision)dans le cas d’une précision limitée sur les donnéeset les coefficients du filtre. Le filtrage adaptatif est un outil puissant en traitementdu signal, communications numériques, et contrôleautomatique. Les applications sont diverses maisprésentent les caractéristiques suivantes : on disposed’une entrée ( ) ainsi que de la réponse désirée(référence) d(n) et l’erreur e(n), qui est la différenceentre d(n) et la sortie du filtre y(n), sert à contrôler(adapter) les valeurs des coefficients du filtre. Ce quidifférencie essentiellement les applications provient dela façon de définir la réponse désirée d(n). On peutdistinguer quatre grandes classes d’applications : • l’identification de systèmes, • la prédiction, • la modélisation inverse, • l’annulation d’interférences.
  • 8. 8Filtrage Adaptatif Par SOC  L’identification de systèmes : ( )est la sortie du système que l’on souhaiteidentifier :  La prédiction : ( )est le signal à l’instant n .Et y(n) le signalprédit à partir du signal aux instants précédents (retardées)[ ( − 1), ( − 2),· · · ]. La modélisation inverse : d(n) est l’entrée (retardée) du system que l’on cherche à inverser
  • 9. 9Filtrage Adaptatif Par SOC  L’annulation d’interférence : d(n) est un signal contenant le signal utile et lesinterférences à annuler. x(n) est un signal dénué (ouPresque) d’information et obtenu par un capteur prochedes interférences. III. Filtre LMS (Least MeanSquare): L’algorithme du gradient stochastique est uneapproximation de l’algorithme du gradient déterministe.L’algorithme LMS est certainement l’algorithmeadaptatif le plus populaire qui existe en raison desa simplicité. Rappel sur l’algorithme du gradient déterministe : L’algorithme du gradient déterministe est : 1 ( 1) ( ) ( ) 2 h n h n g n   Où     ( ) ( ) 2 ( ) ( ) 2 2 ( ) ( ) J h n g n E x n e n p Rh n h n        avec ( ) ( ) ( )e n y n d n  et g(n) est le gradient de la fonction coût    ( ) ²( )J h n E e n Cet algorithme peut encore s’écrire enutilisant le signal d’erreur :
  • 10. 10Filtrage Adaptatif Par SOC   ( ) ( ) ( ). ( ) ( 1) ( ) ( ). ( ) T e n d n x n h n h n h n E x n e n      Or le problème de cet algorithme se pose en pratique  ( ). ( )E x n e n ou de manière équivalente R et p ne sont pas connus. L’algorithme LMS : Puisque  ( ) ( )T R E x n x n et  ( ). ( )P E x n d n sontinconnus, on approchera ces grandeurs déterministespar des estimées ( )R n et ( )P n à l’instant n. Dans lecas du LMS, on choisit les estimées les plus simplespossibles, àsavoir : ( ) ( ) ( )T R n x n x n et ( ) ( ) ( )P n x n d n Ce sont simplement les estimées instantanées descorrélations.En remplaçant : ( )R n et ( )P n dans l’algorithme dugradient déterministe, on obtient :  ( 1) ( ) ( ) ( ) ( ( 1) ( 1 ) ( ) ( ) ( ) ( ) ( ) () ( ) ) ( ) T h n h n P n R n h n h n xh n d n x n h n h e n n n xn nh                    L’équation ( 1) ( ) ( ) ( )h n h n x n e n   est l’algorithme LMS. On remarquera que h(n)est maintenant une variable aléatoire [puisqu’à chaquenouvelle itération n h(n) dépend des processusaléatoires x(n) et d(n)]. Calcul de la sortie du filtre : ( ) ( ) ( )T y n h n x n Calcul du signal d’erreur : ( ) ( ) ( )e n y n d n  Mise à jour du filtre : ( 1) ( ) ( ) ( )h n h n x n e n    μ est le pas d’adaptation de l’algorithme qui démarreavec une initialisation quelconque h(0)  L’algorithme LMS est très simple : il nécessiteseulement 2L + 1 multiplications et 2L additions par itération, où L est le nombre de coefficients du filtre.  Conclusion sur l’algorithme LMS : Les performances du LMS dépendent de trois facteurs : 1. le pas d’adaptation  . 2. les valeurs propres de la matrice R. 3. la longueur L du filtre h.
  • 11. 11Filtrage Adaptatif Par SOC Chapitre II: Systèmes On Chip-MicroBlaze - Carte FPGA I. Les Systèmes On Chip:  Du transistor au SoC On se basant aussi sur les études suivants de ces graphes : le nombre detransistors par circuit
  • 12. 12Filtrage Adaptatif Par SOC la bandepassante mémoire On remarque que la technologie évolue en réduisant la taille des transistors selon des spécifications ce qui permet de :  Augmenter la fréquence d’horloge  Augmenter la densité d’intégration  Augmenter la capacité mémoire  Augmenter la taille des mots  Augmenter la consommation de l’énergie L’évolution de la technologie (Les lois d’évolution) : 1)1965 Modélisation par la Loi de Moore : La densité d’intégration (le nombre de transistorspar unité de surface sur une puce) double tous les18 mois (60% l’an) Prédiction empirique devenu incroyablement exacteet même un objectif à tenir. Cercle vertueux. 2) Evolution des circuits et des mémoires: L’augmentation de la taille des puces est moinsprévisible : entre 10 et 25% par an. L’effet combiné est une augmentation dunombre de transistors par circuit de 60 à 80%
  • 13. 13Filtrage Adaptatif Par SOC par an. La densité croit d’un peu moins de 60% par an(x4 en 3 ans). 3) Loi de Nathan : Le logiciel se comporte comme un gaz : son expansion est tellequ’il remplit tout contenant, Le logiciel crée une pression d’évolution sur les : Mémoire, Processeurs, Entrées / Sorties. Concrètement, la quantité de mémoire dont a besoin unprogramme augmente d’un facteur 1,5 à 2 par an. Augmentation du nombre de bits d’adresse de 0,5 à 1 par an. 4) Loi de Joy : La puissance CPU des processeurs embarqués enMIPS double tous les 2 ans) Ils sont de plus en plus communicants :On a besoin d’une bande passante réseau de0,3 à 1 Mb/s par MIPS !! 5) L’industrie électronique ne vit que grâce à son expansion rapide. Aujourd’hui la durée de vie d’une technologie est d’environ 5 ans.Face à cela, l’industrie électronique doit :Maintenir son taux de progression, et Révolutionner régulièrement ses méthodes de conception/production. 6)La conception vise aujourd’hui l’intégration deplusieurs composants (d’un système) sur un seulchip  Systèmes On Chip : La conception vise aujourd’hui l’intégration de plusieurs composants (d’un système) sur une seule puce appelée aussi chip. Ceci a donnée naissance à la technologie des Systèmes On Chip (SOC)(Système sur puce), Un système sur une puce, également souvent désigné dans la littérature scientifique par le terme anglais system on a chip ou son abréviation SOC, est un système complet embarqué sur une seule puce, pouvant comprendre de la mémoire, un ou plusieurs microprocesseurs, des périphériques d'interface, ou tout autre composant nécessaire à la réalisation de la fonction attendue.  Particularités des Systèmes On Chip : Les contraintes des SOC conditionnent leur conception : Coûts de conception et de vérification (faibles marges de bénéfice) Contraintes de temps strictes ou souples
  • 14. 14Filtrage Adaptatif Par SOC Consommation d’énergie (portables, PDA, Wireless, ...) Sécurité (automobile, aviation) Poids, taille (UMTS vs GSM) Accroissement du logiciel embarqué  Applications des Systèmes On Chip : Processeur d'images DIGIC Canon ou EXPEED de Nikon. Processeur Cell du consortium STI Architecture ARM : Toutes les puces contenant des processeur ARM Cortex-A, que ce soit, AllWinner, Exynos de Samsung,MediaTek, OMAP de Texas Instrument, Rockchip, Tegra de nVidia, Snapdragon de Qualcomm,, etc. Architecture x86 : différentes déclinaisons du processeur Intel Atom, Intel Core et AMD Fusion reprennent ce principe, limité au processeur et aux unités de calculs. Les commerciaux des architectures x86 appellent cela APU, mais en architecture informatique un APU désigne de façon générique une unité spécialisée dans l'accélération des calculs, que ce soit GPU, GPGPU, DSP… II. Micro Blaze: Le MicroBlaze est un cœur de processeur softcore 32 bits de la société Xilinx. Il est conçu pour être implémenté sur les FPGA de ce fabricant. Le code source de MicroBlaze est fermé.  Architecture générale : Le MicroBlaze est un microprocesseur softcore RISC, d'architecture Harvard, entièrement 32 bits. En effet, il possède : 32 registres internes de 32 bits, un bus instructions interne (ILMB) un bus donné interne (DLMB), un bus d'instructions externe (IOPB), un bus de données externe (DOPB). Le processeur comporte 70 options de configuration2 permettant à l’utilisateur de sélectionner ou de paramétrer les composants internes selon ses besoins :
  • 15. 15Filtrage Adaptatif Par SOC un pipeline à 3 ou 5 niveaux, utilisation des multiplieurs câblés du FPGA (sauf sur Spartan II) opérateur de division opérateur de décalage (Barrel Shifter) FPU (Floating Point Unit) mémoires cache instructions et données logique de débug (hardware breakpoints) On-Chip Peripheral Bus (OPB) : Le bus OPB, conçu par IBM pour ses microcontrôleurs PowerPC, permet de lier plusieurs maîtres à plusieurs esclaves. Il autorise un maximum de 16 maîtres et un nombre d’esclaves illimité selon les ressources disponibles. Xilinx conseille néanmoins un maximum de 16 esclaves. Comme ce bus est multi maîtres, il a donc une politique d’arbitrage paramétrable. Ce bus permet donc d’ajouter des périphériques au MicroBlaze dont les besoins en communications seront faibles. Local Memory Bus (LMB) : Le bus LMB est un bus synchrone utilisé principalement pour accéder aux blocks RAM inclus sur le FPGA. Il utilise un minimum de signaux de contrôle et protocole simple pour s’assurer d’accéder à la mémoire rapidement (un front d’horloge). Fast Simplex Link (FSL) : Le MicroBlaze comporte 8 liens entrées/sorties FSL. Le bus FSL est un moyen rapide de communication entre le processeur et une autre entité. Chaque lien FSL 32 bits est unidirectionnel (simplex) et met en œuvre une FIFO (pour stocker les données) et des signaux de contrôle (FULL, EMPTY, WRITE, READ, …). Il met aussi à la disposition du développeur plusieurs fonctions intéressantes dont les plus utilisées sont : “microblaze_bwrite_datafsl” et “microblaze_bread_datafsl”. Ces deux fonctions permettent d'échanger des données entre différents microblazes, par exemple, en utilisant la FIFO déjà intégrée dans le bus FSL. Ces deux fonctions sont bloquantes;bwrite se bloque lorsque la FIFO du bus FSL est saturée et bread se bloque lorsque la FIFO est vide. Il doit y avoir un bwrite pour débloquer la lecture. Les communications sur les liens FSL se font très simplement grâce à des instructions prédéfinies. Elles peuvent atteindre les 300 Mo/s à 150 Mhz. Xilinx Cache Link (XCL)
  • 16. 16Filtrage Adaptatif Par SOC Le lien XCL est un lien FSL particulier, dédié à la connexion d'un contrôleur mémoire externe avec la mémoire cache interne. Ceci permet au contrôleur de cache de ne pas être ralenti par la latence du bus OPB.  Périphériques : De nombreux périphériques sont fournis avec le MicroBlaze, afin de constituer un microcontrôleur complet et personnalisable. Il y a, entre autres : contrôleur mémoire (SRAM, Flash) contrôleur mémoire SDRAM UART lite Timer/compteur avec fonction PWM interface SPI contrôleur d'interruptions GPIO (entrées-sorties génériques) convertisseurs A/N et N/A Delta-Sigma DMA De plus, des périphériques payants sont proposés en version d'évaluation, qui ont la particularité de ne fonctionner que quelques heures : UART 16550 interface Ethernet interface I²C interface PCI  Méthode de développement : Un processeur soft-core présente la particularité d'une programmation à deux niveaux : configuration matérielle du FPGA pour associer un (ou des) processeur(s) et des périphériques, programmation logicielle sur ce(s) processeur(s). Cette spécificité nécessite des outils de développement adaptés, et présente plusieurs avantages : démarche de CoDesign,
  • 17. 17Filtrage Adaptatif Par SOC homogénéité entre matériel et logiciel (interfaces et mapping logiciels générés par les outils hardware), possibilité de faire une simulation HDL du processeur et de ses périphériques (bien que ce soit une opération longue), possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du FPGA : lorsque le système se "réveille" à la mise sous tension, une partie du code est déjà présente en mémoire.  synchronisation entre le module de débug (MDM) et l'"analyseur logique virtuel" ChipScope, afin de mener un débug combiné matériel/logiciel. Bien que la chaîne de développement logiciel (outils GNU), et les outils de synthèse, placement- routage FPGA soient soit tout à fait standard, des outils spécifiques en amont et en aval sont proposés : Assistant de configuration pour cartes existantes (choix de périphériques et placement des entrées-sorties selon le routage de la carte) sélection et assemblage des périphériques choix du processeur connexion des périphériques sur les différents bus, choix des adresses configuration des périphériques déclaration des routines d'interruptions, directement associées aux périphériques compilation des bibliothèques C en fonction des périphériques et options du processeur (FPU, division) choisis initialisation des mémoires internes dans le fichier binaire de configuration du FPGA téléchargement matériel et logiciel, ainsi que débug logiciel, avec le même lien JTAG  Méthode de développement : Un processeur soft-core présente la particularité d'une programmation à deux niveaux : configuration matérielle du FPGA pour associer un (ou des) processeur(s) et des périphériques, programmation logicielle sur ce(s) processeur(s). Cette spécificité nécessite des outils de développement adaptés, et présente plusieurs avantages :
  • 18. 18Filtrage Adaptatif Par SOC démarche de CoDesign, homogénéité entre matériel et logiciel (interfaces et mapping logiciels générés par les outils hardware), possibilité de faire une simulation HDL du processeur et de ses périphériques (bien que ce soit une opération longue), possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du FPGA : lorsque le système se "réveille" à la mise sous tension, une partie du code est déjà présente en mémoire. synchronisation entre le module de débug (MDM) et l'"analyseur logique virtuel" ChipScope, afin de mener un débug combiné matériel/logiciel. Bien que la chaîne de développement logiciel (outils GNU), et les outils de synthèse, placement- routage FPGA soient soit tout à fait standard, des outils spécifiques en amont et en aval sont proposés : Assistant de configuration pour cartes existantes (choix de périphériques et placement des entrées-sorties selon le routage de la carte) sélection et assemblage des périphériques compilation des bibliothèques C en fonction des périphériques et options du processeur (FPU, division) choisis possibilité de pré-chargement du code résidant en RAM interne lors de la configuration du FPGA téléchargement matériel et logiciel, ainsi que débug logiciel, avec le même lien JTAG III. Carte FPGA: Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui peut être reprogrammé après sa fabrication. Notons qu'il serait impropre de parler de programmation au sens logiciel (contrairement à un microprocesseur, il n'exécute aucune ligne de code). Ici, mieux vaudrait parler de « reconfiguration » plutôt que de reprogrammation (on modifie des connexions ou le comportement du composant, on connecte des portes logiques entre elles, etc.). Le verbe programmer est toutefois le plus fréquent, mais au sens de personnaliser. Il s'agit bel et bien de réseaux logiques reconfigurables et modifiables.
  • 19. 19Filtrage Adaptatif Par SOC il est composé de nombreuses cellules logiques élémentaires et bascules logiques librement connectables (c'est justement la reconfiguration, ou programmation, du composant qui définit les connexions faites entre portes logiques). La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien pour le routage du circuit que pour les blocs logiques à interconnecter. Un bloc logique est de manière générale constitué d'une table de correspondance (LUT ou Look-Up-Table) et d'une bascule (Flip-Flop en anglais). La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie. Elle peut toutefois être considérée comme une petite mémoire, un multiplexeur ou un registre à décalage. Le registre permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal (pipeline). Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable. Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le silicium et justifie le coût élevé des composants FPGA. La topologie est dite « Manhattan », en référence aux rues à angle droit de ce quartier de New York. Les densités actuelles ne permettent plus un routage manuel, c'est donc un outil de placement-routage automatique qui fait correspondre le schéma logique voulu par le concepteur et les ressources matérielles de la puce. Comme les temps de propagation dépendent de la longueur des liaisons entre cellules logiques, et que les algorithmes d'optimisation des placeurs- routeurs ne sont pas déterministes, les performances (fréquence max.) obtenues dans un FPGA sont variables d'un design à l'autre. L'utilisation des ressources est par contre très bonne, et des taux d'occupation des blocs logiques supérieures à 90 % sont possibles. Comme la configuration (routage et LUTs) est faite par des points mémoire volatils, il est nécessaire de sauvegarder le design du FPGA dans une mémoire non volatile externe, généralement une mémoire Flash série, compatible « JTAG ». Certains fabricants se distinguent toutefois par l'utilisation de cellules EEPROM pour la configuration, éliminant le recours à une mémoire externe, ou par une configuration par anti-fusibles (la programmation par une tension élevée fait « claquer » un diélectrique, créant un contact). Cette dernière technologie n'est toutefois pas reconfigurable.
  • 20. 20Filtrage Adaptatif Par SOC Chapitre III :Implémentation Du Filtre La conception d’un système embarqué en INF3990 se réalise grâce à une série d’outils compris dans la suite logicielle Xilinx ISE Design Suite. Parmi ceux-ci, deux retiennent notre attention pour le cours : XPS (Xilinx Platform Studio) et SDK (Software Development Kit). À eux seuls, ils forment la partie EDK (Embedded Development Kit) de la suite et permettent le design complet d’une architecture matérielle munie d’un ou plusieurs processeurs, puis le développement et la compilation d’un logiciel pour ces derniers. 1) Flot de conception : La conception d’un système embarqué suit un tracé linéaire particulier et inévitable. Le schéma suivant résume celui-ci (inutile d’y porter attention immédiatement) : La figure précédente montre bien que la conception nous fait passer d’un logiciel à l’autre, sans trop avoir à revenir en arrière. Au départ, tout se passe dans XPS. Ce logiciel permet de créer et de paramétrer tout le côté matériel du système. Pensez, par exemple, à une maison : avant de la décorer et de la remplir de meubles, elle doit contenir des planchers, des murs, des entrées et des sorties, de la plomberie, un réseau électrique, etc., lesquels ont tous été déterminés au préalable par l’architecte. Une fois le design matériel terminé et implémenté dans le FPGA de la carte, l’exportation de ses caractéristiques permet de passer à SDK.
  • 21. 21Filtrage Adaptatif Par SOC SDK, c’est la décoration. Si la maçonnerie d’une maison peut prendre des semaines avant d’être complétées, changer un cadre d’un mur à l’autre ou déplacer un meuble se fait en un tour de main. Dans le contexte d’INF3990, on parle d’une quinzaine de minutes pour synthétiser et implémenter le design matériel contre une dizaine de secondes pour la compilation du logiciel. Enfin, l’outil XMD, un débogueur, permet d’envoyer le logiciel compilé et assemblé vers la mémoire de la carte, de l’exécuter et le déboguer. Sans oublier notre analogie, il faut comprendre que modifier un aspect du design matériel demande souvent de recommencer une bonne partie de la synthèse et l’implémentation, tout comme l’ajout d’un étage à une maison demande d’abord une déconstruction partielle. À la lumière de ce fait, il est important de vérifier tous les paramètres et les modules matériels correctement avant de lancer la synthèse et l’implémentation. 2) XPS : Xilinx Platform Studio : Tel que mentionné ci-haut, XPS permet la conception matérielle du système embarqué. Celui-ci comprendra la plupart du temps un ou plusieurs processeurs, ainsi que plusieurs modules matériels, nommés cores ou IP cores, interconnectés par un ou plusieurs bus. BSB : Base System Builder Un système matériel dans XPS est décrit à l’aide de plusieurs fichiers de spécifications textuels. Comme leurs formats sont plutôt complexes, surtout en début de cours, il est préférable d’utiliser l’outil BSB dans XPS. Celui-ci présente un guide intelligent muni d’une interface graphique et écrit, selon les options choisies, les fichiers de spécifications automatiquement. Ceux-ci peuvent par la suite être modifiés pour atteindre des objectifs plus précis, mais le BSB à lui seul permet de créer un système matériel de base complet et fonctionnel. Afin d’utiliser le BSB, il suffit de lancer XPS afin de se faire proposer ce choix :
  • 22. 22Filtrage Adaptatif Par SOC En s’assurant que la première option est sélectionnée, cliquer sur « OK » lance le BSB. La fenêtre suivante demande où enregistrer les fichiers du projet et où se trouvent les périphériques additionnels : Le répertoire de recherche des périphériques additionnels devrait être C:Xilinx13.1ISE_DSedk_user_repository. Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new design » sélectionnée et appuyons sur « Next> ». La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision » 22Filtrage Adaptatif Par SOC En s’assurant que la première option est sélectionnée, cliquer sur « OK » lance le BSB. La fenêtre suivante demande où enregistrer les fichiers du projet et où se trouvent les périphériques additionnels : Le répertoire de recherche des périphériques additionnels devrait être C:Xilinx13.1ISE_DSedk_user_repository. Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new design » sélectionnée et appuyons sur « Next> ». La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision » 22Filtrage Adaptatif Par SOC En s’assurant que la première option est sélectionnée, cliquer sur « OK » lance le BSB. La fenêtre suivante demande où enregistrer les fichiers du projet et où se trouvent les périphériques additionnels : Le répertoire de recherche des périphériques additionnels devrait être C:Xilinx13.1ISE_DSedk_user_repository. Comme nous désirons créer un nouveau design, nous laissons l’option « I wouldlike to create a new design » sélectionnée et appuyons sur « Next> ». La page suivante demande des informations sur la carte. Ici, une définition de carte est déjà intégrée à la suite et les champs « BoardVendor », « Board Name » et « BoardRevision »
  • 23. 23Filtrage Adaptatif Par SOC Nous accédons ensuite à la page où un choix doit être fait entre un système à un ou à plusieurs processeurs. Pour cette introduction simple, nous choisissons un seul processeur :
  • 24. 24Filtrage Adaptatif Par SOC Il est ensuite possible de configurer le processeur choisi. Ici, nous désirons que celui-ci soit un MicroBlaze (qui devrait d’ailleurs être le seul choix), avec une fréquence d’horloge de 50 MHz et 32kB de mémoire locale (mémoire contenant éventuellement notre logiciel compilé et assemblé) : La page suivante est probablement la plus importante. Elle permet d’inclure ou d’exclure des périphériques au système. Ces périphériques sont liés par un seul et même bus. Ils ne
  • 25. 25Filtrage Adaptatif Par SOC représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous- ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL, les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système : 25Filtrage Adaptatif Par SOC représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous- ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL, les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système : 25Filtrage Adaptatif Par SOC représentent pas la totalité des périphériques, ou cores, disponibles, mais plutôt un sous- ensemble déjà configuré pour nous. Dans cette introduction, nous n’allons inclure que les 8 DEL, les 8 boutons poussoirs et l’UART (pour communication par RS-232) dans le système :
  • 26. 26Filtrage Adaptatif Par SOC Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache, aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS : 26Filtrage Adaptatif Par SOC Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache, aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS : 26Filtrage Adaptatif Par SOC Les étapes suivantes, la cache et le résumé, peuvent être traversées rapidement. Pour la cache, aucune option ne sera disponible puisque nous n’avons pas inclus de mémoire externe dans notre design. Cliquer sur « Finish » termine le BSB, crée le système et ouvre le projet dans XPS :
  • 27. 27Filtrage Adaptatif Par SOC L’interface régulière de XPS permet de modifier les paramètres des périphériques configurés par le BSB, d’en ajouter de nouveaux, de modifier les plages d’adresses des bus et de poursuivre de façon générale le design matériel du système.
  • 28. 28Filtrage Adaptatif Par SOC Après on rédige l’ucf
  • 29. 29Filtrage Adaptatif Par SOC # Generic Template Net fpga_0_RS232_RX_pin LOC="U8"; Net fpga_0_RS232_TX_pin LOC="M13"; Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin; TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz; Net fpga_0_clk_1_sys_clk_pin LOC="C9"; Net fpga_0_rst_1_sys_rst_pin TIG; Net fpga_0_rst_1_sys_rst_pin LOC="K17"; Pour l’instant, nous nous contentons de synthétiser et d’implémenter le système en appuyant sur le bouton montré dans la capture suivante : Il faudra attendre quelques minutes avant de voir apparaitre la ligne « Done! » dans la console au bas de l’interface. Que s’est-il alors passé? Le schéma suivant résume de façon générale le processus effectué et ses produits dérivés :
  • 30. 30Filtrage Adaptatif Par SOC Suite à la génération du fichier system.bit, le FPGA de la carte de développement peut être programmée avec notre design, Cette action lancera iMPACT et configurera automatiquement le FPGA. Pour passer au développement logiciel, il suffit d’exporter les caractéristiques du système matériel vers un dossier de travail, ou workspace, où SDK basera ses projets. Pour ce faire, il faut sélectionner le menu « Project » puis l’item « Export Hardware Design to SDK… ». Ensuite, le bouton « Export &Launch SDK » peut être appuyé pour lancer automatiquement SDK suite à l’exportation. SDK demandera alors où placer le dossier de travail : il est conseillé de le placer à l’extérieur du répertoire de projet XPS.
  • 31. 31Filtrage Adaptatif Par SOC La partie matérielle du système est créée, le FPGA est programmé et les caractéristiques du design sont exportées dans un dossier de travail pour SDK : il est maintenant temps de développer un logiciel pouvant s’exécuter sur notre plateforme personnalisée. Une fois dans SDK, l’onglet « Project Explorer » à gauche ne liste qu’un item nommé « hw_platform_0 ». Il s’agit d’une référence aux caractéristiques de notre design matériel; c’est en fait le produit de l’exportation réalisée précédemment.
  • 32. 32Filtrage Adaptatif Par SOC Après on va suivre les étapes suivantes : 1- Création d’un Board Support Package : Avant toute chose, un Board Support Package doit être créé. Celui-ci est un projet logiciel du dossier de travail qui contient les librairies et entêtes importantes pour nos futurs projets C/C++. Afin d’en créer un, il faut atteindre l’item de menu « File  New  XilinxBoard Support Package ». Nous pouvons alors lui donner un nom (sans importance). Nous voyons qu’il cible une plateforme matérielle particulière : celle exportée par XPS vers notre dossier de travail. Grâce à celle-ci, il pourra configurer automatiquement certains fichiers et paramètres. À noter également qu’il est ici possible de choisir un système d’exploitation pour notre système : « xilkernel » est un petit noyau permettant des services de style POSIX (ordonnancement, fils d’exécution, synchronisation, compteurs, etc.) tandis que « standalone », que nous choisissons, est une couche logicielle de très bas-niveau (l’exécution commence à la fonction main et ne gère pratiquement rien d’autre, un peu comme dans le cours INF1995). En cliquant sur « Finish », la fenêtre des options du Board Support Package s’affiche.C’est ici qu’il est possible d’inclure des librairies additionnelles, comme lwIP (couches TCP et IP du réseau) ou Xilinx Memory File System (système de fichiers en mémoire). Les options du « système d’exploitation » standalone montrent que les entrée et sortie standards sont redirigées vers l’UART (RS-232).
  • 33. 33Filtrage Adaptatif Par SOC Nous voyons qu’il cible une plateforme matérielle particulière : celle exportée par XPS vers notre dossier de travail. Grâce à celle-ci, il pourra configurer automatiquement certains fichiers et paramètres. À noter également qu’il est ici possible de choisir un système d’exploitation pour notre système : « xilkernel » est un petit noyau permettant des services de style POSIX (ordonnancement, fils d’exécution, synchronisation, compteurs, etc.) tandis que « standalone », que nous choisissons, est une couche logicielle de très bas-niveau (l’exécution commence à la fonction main et ne gère pratiquement rien d’autre, un peu comme dans le cours INF1995). En cliquant sur « Finish », la fenêtre des options du Board Support Package s’affiche. C’est ici qu’il est possible d’inclure des librairies additionnelles, comme lwIP (couches TCP et IP du réseau) ou Xilinx Memory File System (système de fichiers en mémoire). Les options du « système d’exploitation » standalone montrent que les entrée et sortie standards sont redirigées vers l’UART (RS-232). 2- Création d’un projet C : Il est maintenant temps de créer un projet C. Via « File -> New ->Xilinx C Project », une fenêtre présente un choix de modèles pour le nouveau projet; nous choisissons ici un projet vide, « Empty Application ».
  • 34. 34Filtrage Adaptatif Par SOC En appuyant sur « Next> », nous avons l’option de créer un nouveau Board Support Package ou d’en associer un déjà existant au nouveau projet, ce que nous faisons. Appuyer sur « Finish » termine l’assistant et crée le nouveau projet C. Nous pouvons désormais créer un nouveau fichier source en cliquant droit sur notre nouveau projet dans l’onglet « Project Explorer », puis en sélectionnant « New  Source file ». Nous le nommons ici main.c, mais le nom du fichier est sans importance. Pour ce test, nous ferons simplement en sorte d’envoyer une chaine vers le canal RS232 en utilisant la fonction standard printf. Comme nous l’avons déjà vu, la sortie standard est redirigée vers l’UART (donc tout ce qui est envoyé par printf) Le programme du filtre LMS : #include "xparameters.h" #include "xutil.h" #include "platform.h" #include "xuartlite_l.h"
  • 35. 35Filtrage Adaptatif Par SOC intmain() { int I, J; float D, Y, E, N=21, beta=0.01; // desire - signal sortie - erreur floath[22] = {0.0}; // coefficients floatX[22] = {0.0}; // bruit init_platform(); while(1) { Y = 0; //initialisation de la sortie du filtre for (J = 0; J <= N; J++) { X[J] = XUartLite_RecvByte(XPAR_UARTLITE_0_BASEADDR); Y += (h[J] * X[J]); //calcul de la sortie du filtre E = Y - D; // calcul d erreur if (E>0) { for (I = N; I >= 0; I--) { h[I] = h[I] + (beta*E*X[I]); //mise a jours de coefficients du filtre if (I != 0) X[I] = X[I-1]; //mise a jour des donnees du signal } } XUartLite_SendByte(XPAR_UARTLITE_0_BASEADDR, Y); } }
  • 36. 36Filtrage Adaptatif Par SOC cleanup_platform(); return 0; } Aussitôt le fichier enregistré, SDK compile automatiquement notre projet et crée l’exécutable ELF. Celui-ci se trouve par défaut dans le répertoire Debug du projet. Envoi de l’exécutable vers la carte Le fichier ELF compilé et assemblé peut maintenant être envoyé vers la carte. Pour ce faire, nous utilisons XMD, le débogueur de Xilinx qui est couvert en détails par une autre partie du cours. Le débogueur peut être lancé dans XPS ou dans SDK. Pour cette introduction, nous utilisons SDK. Pour le démarrer, il suffit de sélectionner le menu « Xilinx Tools  XMD Console » puis de tapper la commande connect mb mdm ainsi : Il faut ensuite aller retrouver l’exécutable (fichier ELF) en naviguant dans les dossiers avec les commandes cd (changer de répertoire), ls (liste des fichiers du répertoire) et pwd (chemin complet en cours). Dans notre cas, nous tapons cd Z:/test3_sdk/un_test/Debug L’utilisation de barres obliques (/) plutôt que des barres obliques inverses () est importante puisque ce terminal est de type UNIX. Pour envoyer le fichier un_test.elf, nous utilisons la commande dow : dowun_test.elf
  • 37. 37Filtrage Adaptatif Par SOC Le terminal affichera alors l’information suivante aux dernières lignes : Setting PC with Program Start Address 0x00000000 System Reset .... DONE Ceci est signe que l’exécutable est désormais dans la mémoire programmable de la carte et que le logiciel est prêt à être lancé. Avant l’exécution de ce logiciel qui, nous le rappelons, envoie une chaine par communication RS- 232 vers le PC et se termine, nous devons ouvrir sur le PC un émulateur de terminal. Le logiciel Termite en est un simple et efficace, qui devrait se connecter automatiquement avec les bons paramètres au lancement.
  • 38. 38Filtrage Adaptatif Par SOC Réalisation pratique : Nous avons utilisé une carte à base de microcontrôleur ATMEGA8 équipée d’un circuit MCP9801 pour mesurer la température et un circuit MAX232 pour la communication série. On a programmé le microcontrôleur de façon a ce qu’il reçoit la température et l’envoyée vers l’UART. La broche Tx du circuit Max232 et connectée à la broche Rx de la carte FPGA et la broche Tx de la carte FPGA et connectée a la broche Rx du PC, comme ça le microcontrôleur envoie a la carte FPGA les données, cette dernière les traite et les envoie vers le PC ce dernier affiche la température sur hyper Terminal.