Mémoire PFE
Mémoire PFE
Mémoire PFE
Mémoire de Master
Mention Électronique
Spécialité Électronique des systèmes embarqués
présenté par
TAIHI Fatiha
&
BENMAIZA Samia
0
Remerciements
Avant tout, l'éloge à Dieu tout puissant pour tout ce qu'il nous a donné et nous avoir
accordé la force, le courage et les moyens afin de pouvoir accomplir ce modeste
travail, « Dieu merci ».
Nous tenons à remercier Mr le président et les membres du jury, pour avoir accepté
de participer en tant qu’examinateurs à notre soutenance.
Enfin, un grand merci à nos parents, nos collègues et tous ceux qui ont contribué de
près ou de loin à la réalisation du présent travail.
1
:ملخص
لقد درسنا خوارزمية جديدة.يتحدث مشروع نهاية دراستنا على مجال الغاء الصدى الصوتي بواسطة الترشيح المتكيف
.VHDL للتصفية التكييفية (المربعات القياسية الصغرى المحسنة) مخصصة اللغاء الصدى الصوتي ثم قمنا بتنفيذها في
. (NLMSA) المربعات القياسية الصغرى المحسنة, الترشيح المتكيف, الصدى الصوتي:كلمات المفاتيح
Résumé :
Mots clés : écho acoustique ; filtrage adaptatif; moindre carré normalisées amélioré
(NLMSA).
Abstract :
Our project is about acoustic echo cancellation using an adaptive filtering approach.
We have studied and implemented an adaptive filtering algorithm for echo
cancellation on VHDL.
2
Listes des acronymes et abréviations
𝒇𝒄 : Fréquence de coupure.
3
RIF : Réponse Impulsionnelle Finie.
𝜶 : Facteur de Lissage.
𝜷 : L’énergie de l’erreur.
𝛁𝑱𝒌 : Le gradient.
𝝁 : Pas d’adaptation.
𝜹 : Paramètre de régularisation.
𝒓 : Vecteur d’inter-corrélation.
4
Table des matières
INTRODUCTION GÉNÉRALE.................................................................................................. 1
5
3.1 INTRODUCTION .................................................................................................................. 36
3.2 LE LANGAGE VHDL ............................................................................................................. 36
3.2.1 Définition ............................................................................................................... 36
3.2.2 Historique .............................................................................................................. 36
3.2.3 Les caractéristiques du VHDL ................................................................................ 37
3.2.4 Structure du langage VHDL ................................................................................... 37
3.2.5 Types du langage VHDL ......................................................................................... 41
3.2.6 Les opérateurs ....................................................................................................... 43
3.2.7 Les instructions du VHDL ....................................................................................... 44
3.3 QUARTUS .......................................................................................................................... 50
3.3.1 Création d'un projet .............................................................................................. 50
3.3.2 Saisie d’un projet ................................................................................................... 53
3.3.3 Saisie graphique .................................................................................................... 53
3.3.4 Création d'un fichier VHDL .................................................................................... 54
3.3.5 Compilation ........................................................................................................... 56
3.3.6 La simulation du projet ......................................................................................... 58
3.3.7 Programmation d'un circuit .................................................................................. 61
3.4 MODELSIM........................................................................................................................ 62
3.4.1 Lancement des outils............................................................................................. 62
3.4.2 Création des fichiers .............................................................................................. 62
3.4.3 Analyse des fichiers ............................................................................................... 63
3.4.4 Lancement de la simulation .................................................................................. 63
3.5 CIRCUIT FPGA ................................................................................................................... 64
3.5.1 Définition ............................................................................................................... 64
3.5.2 Architecture........................................................................................................... 65
3.6 CONCLUSION ..................................................................................................................... 65
6
4.5 RESULTAT DE SIMULATION DE L’ALGORITHME NLMS AMELIORE EN UTILISANT LE LOGICIEL
MODELSIM ................................................................................................................................ 72
4.5.1 Signal BUSASI sous ModelSim ............................................................................... 72
4.5.2 Signal de la parole sous ModelSim ........................................................................ 73
4.5.3 Comparaison entre les résultats du NLMSA obtenus sous Matlab et VHDL ......... 74
4.5.4 Etude comparative entre NLMS et NLMSA sous ModelSim .................................. 81
4.6 CONCLUSION ..................................................................................................................... 83
BIBLIOGRAPHIE ................................................................................................................. 85
7
Liste des figures
8
Figure 3. 7 Insertion d'un symbole. ................................................................................ 54
9
Figure 4. 7 Signaux d’entrées et sorties [signal de référence, signal désiré et signal
d’erreur de filtrage] de l’implémentation de l’algorithme NLMSA sous ModelSim. Signal
d’entrée est le BUSASI, la taille du filtre est L=128. ....................................................... 73
Figure 4. 9 Comparaison entre les erreurs de filtrage et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec BUSASI, L=32. ............................................. 75
Figure 4. 10 Comparaison entre les erreurs de filtrage et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec le signal BUSASI comme signal d’entrée et
une taille du filtre L=128. ................................................................................................ 76
Figure 4. 13 Comparaison entre les erreurs de filtrage linéaire et les MSE obtenues par
NLMSA implémenté sur Matlab et ModelSim avec le signal de parole comme signal
d’entrée et une taille du filtre adaptatif égale à L=32. ................................................... 78
Figure 4. 14 Comparaison entre les erreurs de filtrage linéaire et les MSE obtenues par
NLMSA implémenté sur Matlab et ModelSim avec le signal de parole comme signal
d’entrée et une taille du filtre adaptatif égale à L=256. ................................................. 79
10
Liste des tableaux
11
Introduction générale
La parole, moyen de communication privilégié entre les humains, constitue une grande
partie des messages transmis en télécommunications. Un phénomène d’écho, qui est la
réverbération du signal à l’émission, pose généralement un problème dans toutes les
communications de type “PC à Téléphone” ou “Téléphone à Téléphone”.
Lorsque l’écho acoustique est présent de façon gênante, c’est à dire clairement distinct
subjectivement de son signal d’origine, un traitement spécifique, appelé “annulation
d’écho acoustique”, doit être impérativement mis en œuvre pour préserver la qualité
de la communication. Le but d’un tel traitement est d’estimer l’écho acoustique entre
1
le signal reçu (signal envoyé dans le haut-parleur) et la sortie de la salle (signal capté par
le microphone) puis de retrancher une estimation de ce signal de sortie, ceci sans
affecter le signal de parole locale dans le cas de double parole (les deux locuteurs parlent
en même temps). L’annulation d’écho acoustique est un problème d’identification d’un
système linéaire (canal acoustique de couplage) excité par un signal de référence connu
(parole alimentant le haut-parleur). Le problème est compliqué par le fait que le signal
d’excitation est fortement non stationnaire et le canal acoustique de couplage varie au
cours du temps (mouvements des personnes, déplacements d’objet, etc.…). Pour tenir
compte de ces problèmes, nous utilisons un annulateur d’écho acoustique où
l’identification de la réponse impulsionnelle finie (FIR : Finie Impulse Response),
représentant le canal acoustique de couplage, est réalisée par des algorithmes du type
gradient stochastique (LMS : Least Mean Squares, NLMS : Normalized LMS, NLMSA:
NLMS amélioré, etc.…).
Notre travail a pour objectif d’implémenter l’algorithme NLMSA qui a été proposé par
le professeur Mohamed Djendi, sous VHDL pour l’annulation d’écho acoustique par le
filtrage adaptatif, pour cela nous présentons ci-après les différents chapitres de ce
rapport :
Chapitre 3 présente les notions de base sur le langage VHDL et les logiciels de simulation
et d’implémentation.
2
Chapitre 1 Filtre et filtrage numérique
1.1 Introduction
Ce chapitre permet de présenter les filtres numériques et leurs différents types,
caractéristiques et structures. Pour cela nous allons étudier les filtres à réponse
impulsionnelle finie et infinie ainsi que les structures de leurs réalisations.
Ue
Circuit (RC,
Us
LRC…)
Le filtre passe bas laisse passer les fréquences qui sont au-dessous de la fréquence de
coupure, et attenue les autres fréquences (voir figure 1.2).
Le filtre passe haut laisse passer les fréquences au-dessus de 𝑓𝐶 (voir figure 1.2).
3
Filtre passe bande
Le filtre passe bande contient un intervalle fréquentiel entre 𝑓𝐶1 et 𝑓𝐶2 qui s'appelle
bande passante, il laisse passer les fréquences comprises entre 𝑓𝐶1 et 𝑓𝐶2 et attenue les
autres fréquences (voir figure 1.2).
Filtre coupe-bande
Le filtre coupe-bande est une combinaison entre le filtre passe bas et le filtre passe haut,
il contient deux fréquences de coupure 𝑓𝐶1 et 𝑓𝐶2 , il atténue les fréquences comprises
entre 𝑓𝐶1 et 𝑓𝐶2 et laisse passer les autres fréquences (voir figure 1.2).
4
1.4.1 Les spécifications d’un filtre numérique
a Linéarité
Le système produit la sortie 𝑦1 (𝑛) pour l’entrée 𝑥1 (𝑛) et la sortie 𝑦2 (𝑛) pour l’entrée
𝑥2 (𝑛) Où :
𝑥3 (𝑛) = 𝑎𝑥1 (𝑛) + 𝑏𝑥2 (𝑛) donc 𝑦3 (𝑛) = ℎ(𝑥3 (𝑛)) ⇔ 𝑎ℎ(𝑥1 (𝑛)) + 𝑏ℎ(𝑥2 (𝑛)) =
𝑎𝑦1 (𝑛) + 𝑏𝑦2 (𝑛) (1.2)
x1 (n)
ah (x1(n)) + bh (x2(n)) = ay1 (n )+ by2 (n)
h (n)
x2 (n)
Un système est invariant en temps si un délai à l’entrée ne cause que le même délai à la
sortie, si 𝑦1 (𝑛) est la sortie qui correspond à l’entrée 𝑥1 (𝑛) et 𝑥2 (𝑛) = 𝑥1 (𝑛 − 𝑛0 ) est
l’entrée qui produit une sortie 𝑦2 (𝑛). Dire que ce système est invariant en temps si
𝑦2 (𝑛) = 𝑦1 (𝑛 − 𝑛0 ) (voir figure 1.4).
x (n-n0) y (n-n0)
Filtre
Numérique
5
1.4.3 Causalité
Un filtre est dit causal si à une entrée nulle pour 𝑛 < 0 correspond une réponse
impulsionnelle 𝑠 = ℎ(𝑒) nulle pour 𝑛 < 0, autrement dit si sa réponse impulsionnelle
ℎ(𝑛) est nulle pour tout 𝑛 < 0. Sa transformée en z converge pour |𝑧 | > 𝑅1 ≥ 0
Un filtre numérique est dit anti causal, si sa réponse impulsionnelle ℎ(𝑛) est nulle pour
𝑛 ≥ 0. Sa transformée en z converge pour| 𝑧 | < 𝑅2 ≤ +∞.
La réponse impulsionnelle
La réponse impulsionnelle est la sortie qui est obtenue lorsque l'entrée est une
impulsion unité discrète 𝛿(𝑛) , c'est-à-dire une variation soudaine et brève du signal.
Principe de stabilité
Un filtre est stable si pour toute entrée 𝑒(𝑛) bornée, la sortie ℎ(𝑛) est elle aussi bornée.
Un filtre numérique peut être définie par une équation aux différences, cette équation
régi l’entrée 𝑒(𝑛) et la sortie 𝑠(𝑛) de système.
La fonction de transfert
𝑦(𝑧) ∑𝑁 𝑏𝑘 𝑧 −𝑘
ℎ(𝑧) = 𝑥(𝑧) = 1+∑𝑘=0
𝑀 −𝑘
(1.4)
𝑘=1 𝑎𝑘 𝑧
6
1.4.5 Réalisation d’un filtre numérique
Les filtres numériques peuvent être réalisés à l'aide des trois éléments ou opérations de
base. Soit l'élément gain, l'élément de sommation et le retard unitaire. Ces éléments
sont suffisants pour réaliser tous les filtres numériques linéaires possibles.
1.5 Convolution
La convolution est une loi de composition entre deux signaux, permettant de calculer le
signal de sortie à partir du signal d’entré et de sa réponse impulsionnelle, cette loi est
définie de la manière suivante :
1.6 Corrélation
La corrélation est un ensemble d’applications fondamentales de détection, extraction,
détermination de caractéristiques dynamiques d’un système linéaire. Les fonctions de
corrélation traduisent la similitude d’un signal ou de deux signaux au niveau de la forme
et de la position en fonction du paramètre de translation t [1].
Autocorrélation
Intercorrélation
7
1.7 Classification des filtres numériques
Il existe deux catégories des filtres numériques linéaires. Selon la durée de la réponse
impulsionnelle.
Les filtres numériques à réponse impulsionnelle finie sont caractérisés par une réponse
impulsionnelle basée sur un nombre limité d’échantillons d’un signal, ils sont cependant
très largement utilisés car ils possèdent des propriétés uniques (phase, linéarité, stabilité,
flexibilité), ces filtres sont aussi connus par nom filtres non récursif.
De façon générale le filtre à réponse impulsionnelle infini est décrit par la fonction de
transfert (1.8) et l'équation aux différences (1.9) suivantes :
−𝑖
𝐻(𝑧) = ∑𝑁−1
𝑖=0 𝑏𝑖 𝑧 (1.8)
On remarque qu’ en exploitant l’équation (I.8) et que les coefficients 𝑏i de filtre sont
également les valeurs de la réponse impulsionnelle ℎ(𝑛), qui se trouve donc être limitée
dans le temps [2].
h(n) = ∑N-1
i=0 bi δ (n-i) (1.10)
𝑏, 0≤𝑛 ≤𝑁−1
ℎ(𝑛) = { 𝑖 (1.11)
0, 𝑎𝑖𝑙𝑙𝑒𝑢𝑟𝑠
Puisque la réponse (1.10) est une somme d'un nombre fini de valeurs, le filtre RIF est
naturellement stable d'après le critère Entrée Bornée/Sortie Bornée.
Le filtre RIF peut être réalisé par deux façon : la structure directe (Voir figure 1.5) et la
structure transposée (Voir figure 1.6).
8
x [n]
b0 b1 b2 bN
y [n]
b1
bN-1
bN
9
c Synthèse des filtres numériques à réponse impulsionnelle finie
L'emploi des filtres RIF peut se révéler attrayant eu égard à ses nombreux avantages :
stabilité inconditionnelle (Tous les pôles sont en 0), phase linéaire possible. Néanmoins,
ils présentent l'inconvénient de nécessiter un plus grand nombre de coefficients que les
filtres RII pour obtenir les mêmes caractéristiques fréquentielles à cause de l'absence de
pôles hors 0. Ainsi, toute fonction de filtrage numérique stable et causale peut être
approchée par la fonction de transfert d'un filtre RIF [4].
Méthode de la fenêtre
𝑓𝑒⁄
1 2
∫ ℎ(𝑓)𝑒 2𝜋𝑗𝑓𝑛𝑇𝑒 𝑑𝑓 𝑁 𝑖𝑚𝑝𝑎𝑖𝑟
𝑓𝑒 −𝑓𝑒⁄2
ℎ(𝑛) = 𝑓𝑒⁄ (1.12)
1
1 2 𝑗2𝜋𝑓(𝑛− )𝑇𝑒
∫ 𝑓𝑒
ℎ(𝑓)𝑒 2 𝑑𝑓 𝑁 𝑝𝑎𝑖𝑟
𝑓𝑒 − ⁄2
{
Cette méthode produit une série infinie de coefficients, on limite, alors la réponse
impulsionnelle à N échantillons (troncature). Sachant que la troncature induit des
ondulations, on peut faire appel aux fenêtres de pondération pour les atténuer. Ainsi, la
réponse impulsionnelle idéale ℎ(𝑛) sera multipliée par la fenêtre discrète 𝜔𝑁 (𝑛) de
longueur 𝑁 [4].
10
Méthode de l'échantillonnage fréquentiel
(𝑁−1)⁄
1 2
ℎ(𝑛) = 𝑁 ∑𝑘=−(𝑁−1) 𝐻(𝑘)𝑒 2𝜋𝑗𝑘𝑛/𝑁 (1.15)
⁄2
Cette méthode de synthèse est très simple et permet de réaliser toute forme de filtre
(chose qu'on ne peut réaliser avec la méthode précédente). Cependant, cette méthode
de synthèse ne garantit que les points fréquentiels 𝐻(𝑘). Entre ces points, la valeur de
𝐻(𝑓) n'est pas maitrisée, il peut y avoir des oscillations qui ne sont pas également
réparties avec un maximum d’erreur entre la réponse idéale et la réponse obtenue se
situant autour de la bande de transition. Pour obtenir la réponse en fréquence du filtre
finalement obtenu, on peut par exemple appliquer une TFD à la réponse impulsionnelle
ℎ(𝑛) de taille 𝑁 obtenue, après avoir ajouté un grand nombre de zéros. Par ailleurs, du
fait de l'emploi d'une TFD inverse sur 𝑁 points, la réponse impulsionnelle ℎ(𝑛) obtenue
est périodique de période 𝑁 bien que la réponse impulsionnelle idéale souhaitée ne soit
pas de durée limitée [4].
11
1.7.2 Filtre à réponse impulsionnelle infinie (RII)
Les RII sont des filtres à "mémoire infinie", c’est-à-dire qu’ils gardent pendant un temps
infini la mémoire du signal d’entrée, grâce à une boucle de retour, Ces filtres sont aussi
connus par nom filtres récursif.
De façon générale le filtre à réponse impulsionnelle infini est décrit par la fonction de
transfert (I.16) et l'équation aux différences (I.17) suivantes :
N(z) ∑N
i=0 bi z
-i
H(z) = = (1.16)
D(z) 1+∑N
i=1 ai z
-i
𝑛
𝑦[𝑛] = ∑𝑁
𝐾=0 𝑏𝑖 𝑥[𝑛 − 𝑖] − ∑𝑖=0 𝑎𝑖 𝑦(𝑛 − 𝑖) (1.17)
Si 𝑁(𝑧) n’est pas divisible par 𝐷(𝑧), on a un nombre infini de termes dans la
division polynomiale de 𝑁(𝑧) par 𝐷(𝑧) [2]:
𝐻(𝑧) = ∑𝑁
𝑛=0 𝑐𝑛 𝑧
−𝑛
(1.18)
Si 𝑁(𝑧) est divisible par 𝐷(𝑧), on a un nombre fini dans la division polynomiale
de 𝑁(𝑧) par 𝐷(𝑧) [2]:
𝐻(𝑧) = ∑𝑁
𝑛=0 𝑐𝑛 𝑧
−𝑛
(1. 20)
Le filtre RII peut être réaliser par deux structures : la structure direct (voir figure 1.7) et
la structure cascade (voir figure 1.8).
12
+ +
+ +
+ +
+ +
13
c Synthèse des filtres numériques à réponse impulsionnelle infinie
Plan des s
Plan des z
r=1
Il existe plusieurs méthodes de synthèse des filtres RII, on va citer deux méthode parmi
eux qui sont les suivantes :
Par cette méthode on obtient un filtre numérique dont la réponse impulsionnelle est
égale à la réponse impulsionnelle échantillonnée du filtre analogique correspondant. En
considérant la fonction de transfert 𝐻(𝑝) ou 𝐻( 𝑓 ) et la réponse impulsionnelle ℎ(𝑡)
du filtre analogique, la réponse impulsionnelle, échantillonnée à la période Te, s’exprime
par :
ℎ𝑒 (𝑡) = 𝑇𝑒 ∑+∞
𝑘=0 ℎ(𝑘𝑇𝑒 )𝛿(𝑡 − 𝑘𝑇𝑒 ) (1.22)
𝐻𝑒 (𝑓) = 𝐻(𝑓) ∗ 𝑃𝑔𝑛𝐹𝑒 (𝑓) d’où ℎ𝑒 (𝑡) = ℎ(𝑡) [𝑇𝑒 𝑃𝑔𝑛𝑇𝑒 (𝑡)] (1.23)
14
Par conséquent la transformée en 𝑧𝐻𝑒 (𝑧) de ℎ𝑒 (𝑡) est donnée par [1]:
𝐻𝑒 (𝑧) = 𝑇𝑒 ∑+∞
𝑘=0 ℎ(𝑘𝑇𝑒 ) 𝑧
−𝑘𝑇𝑒
(1.24)
1
𝑓𝑑 = 𝜋𝑇 tan−1(𝜋𝑓𝑎 𝑇𝑒 ) (1.25)
𝑒
1.8 Conclusion
La présentation faite dans ce chapitre nous a permis d’avoir une vue globale sur les
filtres numériques, pour cela nous allons intéresser aux filtres à réponse impulsionnelle
finie car ils sont plus stables et réalisables.
Dans le prochain chapitre nous allons traiter le problème de l’écho acoustique et les
algorithmes utilisés pour l’annulation de ce dernier par le filtrage adaptatif.
15
Chapitre 2 Annulation d’écho par le filtrage
adaptatif
2.1 Introduction
Dans les systèmes de communication main-libre et conférence (téléconférence,
conférence de bureau…), on trouve le phénomène d’écho acoustique qui est provoqué
à partir du couplage entre le haut-parleur et le microphone, ce phénomène causant la
mauvaise qualité de communication et la fatigue d'auditeur, pour cela on a besoin des
techniques pour la résolution de ce problème et l’amélioration de qualité de
communication. Parmi ces dernières les plus courantes, c’est bien le filtrage adaptatif.
Le filtrage adaptatif intervient quand il faut réaliser, simuler ou modéliser un système
dont les caractéristiques évoluent dans le temps. Il conduit à la mise en œuvre de filtre
aux coefficients variant dans le temps. Les variations des coefficients sont définies par
un critère d’optimisation et réaliser suivant un algorithme d’adaptation, qui est
déterminé en fonction de l’application [5].
16
Figure 2. 1 Exemple de communication bi-directionnelle avec écho acoustique.
L’écho acoustique est provoqué par la transmission du signal émis par le haut-parleur et
reçu par le microphone : cette transmission est composée d’un trajet direct et de
multiples réflexions captées par le microphone, et a pour conséquence de renvoyer vers
le locuteur qui a prononcé la parole dans une salle distante son propre signal. C’est donc
la propagation acoustique d’une onde sonore à l’intérieur d’un volume donné qui
provoque l’écho acoustique.
Le phénomène de l’écho acoustique présente des complexités du fait que ses propriétés
acoustiques sont très variables en fonction de l’environnement correspondant. Il suffit
de s’intéresser à quelques exemples d’utilisation de systèmes mains libres pour
apprécier la difficulté du problème. Les réseaux de télécommunications actuels
supportent des débits d’information considérables et autorisent la transmission
simultanée et en temps réel d’images et de son. Cette avancée technologique permet
par conséquent l’organisation de téléréunions entre locuteurs de sites distants en leur
offrant une sensation de présence et de naturel.
Les exemples les plus standards d’applications de téléréunions sont par exemple, la
téléconférence et la visioconférence sur PC. Pour la téléconférence, une salle
spécialement conçue pour cette application est généralement utilisée.
17
Lorsqu’un son est émis à l’intérieur d’une salle (ou d’une voiture), il subit des
transformations physiques qui peuvent être comprises grâce aux principes de
l’acoustique des salles. Des interprétations théoriques précises peuvent être obtenues
en faisant appel aux domaines de l’acoustique géométrique, ondulatoire et statistique
[7]. Néanmoins, le phénomène physique peut être décrit simplement et succinctement
comme suit. Une onde sonore, émise par un émetteur, se propage suivant les lois de
l’acoustique vers un récepteur. Au cours de son trajet, l’onde subite l’influence de
l’environnement acoustique dans lequel elle se propage. Le phénomène se résume,
dans le cas d’une propagation dans un espace libre, à l’absorption d’une onde sonore
par l’air qui dépend de paramètres (température, pression atmosphérique, etc.…)
variant lentement dans le temps par rapport à l’échelle de stationnarité du signal
sonore. S’ajoutent à cela des phénomènes de réflexion, diffraction, diffusion, et
absorption provoqués par les parois et obstacles présents dans l’espace clos. Le trajet
de propagation d’une onde sonore est appelé canal acoustique. Le canal acoustique
dépend directement de ces différents paramètres.
La réponse impulsionnelle d’un canal acoustique se présente sous la forme d’une onde
directe et d’une succession d’ondes réfléchies par les parois d’une salle particulière.
18
Les ondes se propagent en trajet direct (le trajet le plus court emprunté par l’onde
sonore) jusqu’à ce qu’elles rencontrent un obstacle sur lequel elles se réfléchissent tout
en perdant de l’énergie. En réalité, la réponse impulsionnelle de couplage acoustique
est de durée infinie mais il est généralement admis que son support temporel significatif
est de l’ordre de 50 à 100 ms dans une voiture, et de 250 ms à 300 ms dans une salle de
téléconférence.
La figure (2.2) montre que la perceptibilité d’un signal de parole diminue de 0,5 dB par
milliseconde (de retard d’écho). Le système binaural d’audition humaine gère
remarquablement bien l’effet de réverbération lorsque les personnes en conversations
sont dans la même salle même très réfléchissante.
Ce n'est pas le cas si les mêmes personnes sont en salles différentes et ils utilisent un
haut-parleur pour la conversation. L’écho acoustique devient très gênant et inquiétant
et donc doit être enlevé.
En outre, un sifflement peut se produire si le microphone est placé trop près du haut-
parleur (ce phénomène est connu par l’effet Larzen) et il doit être éliminé par annulation
d'écho acoustique. La salle acoustique est une question complexe, mais elle a été
largement étudiée en profondeur à partir de deux perspectives théoriques et pratiques
(voir figure 2.3).
19
Figure 2. 3 Influence de l’écho sur la perception de la parole.
L’écho acoustique est présent de façon gênante pour un délai de transmission global de
30 ms. Ce délai est largement dépassé que ce soit dans le cadre de la radiotéléphonie
mains libres où le retard de transmission est de l’ordre de 180 ms ou dans des contextes
de téléconférence où le traitement et la transmission de la voix introduisent un retard
supérieur. Dans ce cas, un traitement spécifique doit être impérativement mis en œuvre
pour préserver la qualité de la communication.
Dans le cas de simple parole et pour des retards inférieurs à 25ms, un système
d’annulation d’écho doit fournir une atténuation de l’écho de l’ordre de 24 dB. Ce même
système doit être capable de fournir une atténuation de l’écho de 40 dB pour des retards
excédant 25 ms [8].
20
Nous nous intéressons plus spécifiquement à la résolution du problème posé par l’écho
acoustique, résolution basée sur des techniques de filtrage adaptatif. Les algorithmes
de filtrage adaptatif sont très nombreux et ont été largement étudiés dans la littérature.
Nous en rappelons les principaux en les classifiant par famille, même s’il a été démontré
que tous les algorithmes adaptatifs sont liés entre eux et peuvent se déduire les uns des
autres au moyen d’approximations [9]. Dans ce qui suit, nous présentons l'algorithme
LMS (Least mean square), sa version normlisée NLMS (normalized LMS), et une version
améliorée NLMSA (NLMS améliorée) pour l'annulation d'écho acoustique.
Le rôle primordial d’un filtre adaptatif est d’ajuster le paramètre 𝑤 pour un objectif bien
défini (minimisation de l’EQM : erreur quadratique moyenne).Le principe d’un filtre
adaptatif bouclé par un algorithme d’adaptation est présenté sur la figure suivante.
une étape de filtrage qui permet d’obtenir une estimation du signal inconnu en
convolant le signal d’entrée 𝑥(𝑛) avec les coefficients du filtre adaptatif 𝑊 .
L’erreur d’estimation 𝑒(𝑛) = 𝑑(𝑛) − 𝑦(𝑛) est ensuite utilisée dans la partie adaptation
pour mettre à jour les coefficients du filtre.
21
une étape d’adaptation qui permet d’ajuster les coefficients du filtre adaptatif
𝑊 suivant un algorithme donne [11].
À chaque itération les coefficients du filtre varient en du signal d’erreur 𝑒(𝑛) et ce pour
faire diminuer la différence entre la sortie du filtre 𝑦(𝑛) et le signal désirée 𝑑(𝑛). Le
signal d’erreur diminuer jusqu’atteindre dans certain cas une valeur nulle. À ce moment
les coefficients du filtre adaptatif cessent de s’adapter.
Algorithme
d’adaptation des
coefficients Erreur
Les filtres adaptatifs peuvent être classés en fonction des choix qui sont faits sur les
points suivants:
• le critère d’optimisation,
22
• l’algorithme de mise `à jour des coefficients,
• filtrage de Wiener (ou les signaux considérées 𝑑(𝑛) et 𝑥(𝑛) sont stationnaires),
• filtrage de Kalman (qui est une généralisation du filtre de Wiener valable aussi dans le
cas de processus (Ou de signaux) non stationnaires).
23
La capacité de poursuite (traking) des variations (non-stationnarités) du
système,
La robustesse au bruit,
La complexité,
Les propriétés numériques (stabilité et précision) dans le cas d’une précision
limitée sur les données et les coefficients du filtre.
d (n)
Filtre de Wiener
x (n) y (n) -
w(n) +
e (n)
Le principe du filtre de Wiener est de trouver en sortie une réponse 𝑦(𝑛) la plus proche
possible d’une réponse désirée 𝑑(𝑛) lorsque l’entrée est une certaine séquence 𝑥(𝑛).
On note : 𝑒(𝑛) = 𝑑(𝑛) − 𝑦(𝑛) l’erreur entre la réponse désirée 𝑑(𝑛)et la sortie de filtre
𝑦(𝑛).On note également 𝑤𝑛 la réponse impulsionnelle du filtre.
𝒚(𝒏) = ∑𝑴−𝟏
𝒌=𝟎 𝒘(𝑘) 𝒙(𝒏 − 𝒌) (2.1)
Où
Le filtre de Wiener est celui qui minimise l’erreur quadratique moyenne (EQM).
24
En introduisant les vecteurs 𝒘(𝑛) et 𝒙(𝑛) on aura :
Avec
On prend
Donc on aura :
𝜕𝑒 ∗ 𝜕𝑒 𝜕𝑒 ∗ 𝜕𝑒
𝑛
∇𝐽𝑘 = 𝐸 (𝑒𝑛 𝜕𝑎(𝑘) + 𝑒𝑛∗ 𝜕𝑎(𝑘)
𝑛 𝑛
+ 𝑒𝑛 𝜕𝑏(𝑘) + 𝑒𝑛∗ 𝜕𝑏(𝑘)
𝑛
)
(2.8)
Ou les dérivées partielles intervenant dans l’équation (2.7) sont comme suit :
= −𝑥 ∗ (𝑛 − 𝑘)
= −𝑥(𝑛 − 𝑘)
25
= −𝐽𝑥 ∗ (𝑛 − 𝑘)
= −𝐽𝑥(𝑛 − 𝑘)
Par conséquent on a :
C’est le principe d’orthogonalité [13],signifiant que toutes les entrées 𝑥(𝑛) sont
décorrélées de 𝑒𝑛 (𝑛). (2.11)
Soit :
𝑹𝒘 (𝑛) = 𝒓 (2.13)
Cette relation (2.13) est appelée formule de Wiener ou équation de wiener-Hopf. Cette
solution donne le filtre optimal de Wiener :
26
Où 𝒙(𝑛): est le vecteur colonne des M derniers échantillon du signal haut-parleur.
𝒘𝐻 (𝑛) : désigne un vecteur ligne d’ordre M contenant des coefficients de la réponse
impulsionnelle finie, l’exposant. 𝑇 désigne l’opérateur de transposition. La mise à jour
du filtre à chaque instant est effectuée par un contre réaction de l’erreur d’estimation
proportionnellement au gain d’adaptation (terme de correction).
a La famille LMS
L’un des premiers algorithmes est l’algorithme du gradient stochastique ou LMS (least-
mean-square) conçu par Widrow et Hoff en 1959.Cet algorithme est basé sur une
estimation simple et peu complexe du gradient. Ce type de filtre est très simple, mais il
est inefficace pour la problématique de l’annulation d’écho en raison de la grande
variation d’énergie contenue dans la vois, ces variation d’énergie provoque une
divergence de filtre [9]. Pour résoudre ce problème, Haykin a introduit le gradient
normalisé NLMS, la modification apportée consiste à normaliser la correction des
coefficients en fonction de l’énergie du signale, le pas dans ce calcule varie de façon
inversement proportionnelle à l’énergie contenue dans le signale. Ainsi en présence
d’une grande énergie, l’adaptation du filtre et ralentie. Ce ralentissement permet
d’éviter les cas de divergence qui pourraient subvenir avec le filtre LMS.
𝒓 ≅ 𝑦(𝑛)𝒙(𝑛) (2.17)
et
𝑹 ≅ 𝒙(𝑛)𝒙(𝑛)𝑇 (2.18)
27
Remplaçant (2.17) et (2.18) dans (2.16) on obtient la relation suivante :
Tel que :
2
0 < 𝛼 < 𝜆𝑚𝑎𝑥 (2.21)
Une étude plus précise (en moyenne quadratique), mais qui repose également sur des
hypothèses contestables conduit à la condition plus contraignante :
2 2
0<𝛼< = (2.22)
𝑡𝑟𝑎𝑐𝑒(𝑹) 𝑀𝜎𝑥2
L’algorithme de gradient stochastique normalisé NLMS est une variante du LMS dont le
gain d’adaptation est normalisé par l’énergie de signale d’entré 𝑥(𝑛).
Pour des signaux non stationnaire l’énergie de signal 𝑥(𝑛) varie avec le temps,
l’algorithme LMS aura du mal à fonctionnes correctement puisque µ est constant.
L’algorithme LMS normalisé est obtenu en minimisant la fonction cout suivant [15] :
Avec la contrainte :
Cela revient à minimiser la mise à jour des coefficients du filtre tout en minimisant le
signal d’erreur pour𝑥(𝑛). La solution de ce problème est obtenue en utilisent la
technique des multiplieurs de LaGrange. En effet, on cherchera à minimiser par rapport
à 𝑤(𝑛 + 1).
28
𝐽(𝑛) = ‖𝒘(𝑛 + 1) − 𝒘(𝑛)‖2 + λ [𝑑(𝑛) − 𝒘𝑇 (𝑛 + 1)𝒙(𝑛)] (2.25)
𝜕𝐽(𝑛) 𝜆
= 2 [𝒘(𝑛 + 1) − 𝒘(𝑛)] + 2 𝒙(𝑛)] = 0 𝐿 × 1 (2.26)
𝜕𝑤(𝑛+1)
Soit
𝜆
𝒘(𝑛 + 1) = 𝒘(𝑛) + 2 𝒙(𝑛) (2.27)
Or d’après la contrainte :
𝜆
= 𝒘𝑇 𝒙(𝑛) + 2 𝒙𝑇 (𝑛)𝒙(𝑛) (2.29)
Ce qui donne :
2𝑒(𝑛)
𝜆 = 𝒙𝑇 (𝑛)𝒙(𝑛) (2.30)
𝜆 1
𝒘(𝑛 + 1) = 𝒘(𝑛) + 2 𝒙(𝑛) = 𝒘(𝑛) + 𝒙𝑇 (𝑛)𝒙(𝑛) 𝒙(𝑛)𝑒(𝑛) (2.31)
En pratique, pour mieux contrôler la mise à jour des coefficients du filtre, on introduit
un facteur positif 𝛼 où (0<𝛼<2):
𝛼
𝒘(𝑛 + 1) = 𝒘(𝑛) + 𝒙𝑇 (𝑛)𝒙(𝑛) 𝒙(𝑛)𝑒(𝑛) (2.32)
𝛼 𝛼 𝛼
= ∑𝐿−1 𝑥 2 (𝑛−1) ≈ 𝐿𝜎2 =µ (2.33)
𝒙𝑇 (𝑛)𝒙(𝑛) 𝑖=0 𝑥
Qui est le pas d’adaptation du LMS. Pour éviter des difficultés numériques (division par
des petits nombres) quand l’énergie du signal d’entrée est petite, on modifie
l’algorithme comme suit:
𝛼
𝒘(𝑛 + 1) = 𝒘(𝑛) + 𝛿+ 𝒙𝑇(𝑛)𝒙(𝑛) 𝒙(𝑛)𝑒(𝑛) (2.34)
29
Ou` 𝛿> 0 est un paramètre de régularisation.
Et aussi appelée erreur “a priori” car elle utilise les coefficients du filtre avant la mise à
jour. L’erreur “a postériori” est définie par:
Et se calcule une fois que la mise à jour a été effectuée. L’algorithme peut être considéré
comme stable si la valeur absolue de l’erreur “a posteriori” est plus petite que celle de
l’erreur “a priori”, ce qui est logique puisque e(n) exploite davantage d’informations. En
remplaçant l’équation du NLMS:
𝛼
𝒘(𝑛 + 1) = 𝒘(𝑛) + 𝒙𝑇 (𝑛)𝒙(𝑛) 𝒙(𝑛)𝑒(𝑛) (2.37)
30
La convergence de cet algorithme est garantie pour un pas d’adaptation 0<µ<2. La mise
à jour des coefficients du filtre adaptatif par l’algorithme NLMS est alors donnée par :
µ
𝒘(𝑛 + 1)= 𝒘(𝑛) + 𝒙𝑇 (𝑛)𝒙(𝑛)+𝛿 𝒙(𝑛)𝑒(𝑛) (2.40)
est le vecteur d’erreur de filtrage et donné par : 𝑬(𝑛)=[𝑒(𝑛), 𝑒(𝑛 − 1), … . . , 𝑒(𝑛 − 𝑧 +
1)]. z est le nombre des points sur lesquelles nous calculons l’énergie de l’erreur. La mise
à jour des coefficients du filtre adaptatif par l’algorithme NLMS amélioré est alors
donnée par:
µ
𝒘(𝑛 + 1) = 𝒘(𝑛) + 𝛼𝒙𝑇 (𝑛)𝒙(𝑛)+(1−𝛼)𝛽 𝑒(𝑛)𝒙(𝑛) (2.42)
L’erreur du signal:
Et aussi appelée erreur a priori car elle utilise les coefficients du filtre avant la mise à
jour. L’erreur “a postériori” est définie par:
31
è(𝑛) = 𝑑(𝑛) − 𝒘𝑇 (𝑛 + 1)𝒙(𝑛) (2.44)
µ
𝒘(𝑛 + 1) = 𝒘(𝑛) + 𝑒(𝑛)𝒙(𝑛) (2.45)
𝛼𝒙𝑇 (𝑛)𝒙(𝑛)+(1−𝛼)𝛽
Donc
0<µ<2α (2.49)
32
question peut varier en fonction du temps. Le filtrage adaptatif est l’approche la plus
appropriée dans ce cas pour estimer les paramètres variables du chemin d’écho.
Pour éviter cela, nous estimons de manière adaptative le filtre 𝑤𝑛 après la normalisation
avec l’énergie de l’erreur et nous envoyons sur le haut-parleur de la pièce A uniquement
l’erreur commise.
{x}
{x}
Signal distant
Salle locale
-
{e} + {d} {s}
Eg +
Signal émis Signal local
Energie
33
Début
x ; y ; 𝜇 ; L ; iter ;
w;𝛼;𝛽;
x(n) ; y(n)
𝑍−1
𝛽= |𝐸(𝑛)|2
𝑖=0
µ𝑒(𝑛)𝑥(𝑛)
𝑤(𝑛 + 1) = 𝑤(𝑛) +
𝛼𝑥 𝑇 (𝑛)𝑥(𝑛) + (1 − 𝛼)𝛽
Oui
𝑛 < 𝑖𝑡𝑒𝑟
Non
Fin
34
2.6 Conclusion
Dans ce chapitre nous avons défini le problème posé par la présence de phénomène
d’écho acoustique, ensuite nous avons présentés les algorithmes adaptatifs LMS, NLMS
et sa version améliorée qui permet d’améliorer le taux de convergence du filtre adaptatif
par apport à l’algorithme NLMS.
Dans le prochain chapitre, nous allons présenter un descriptif du langage VHDL et son
circuit FPGA.
35
Chapitre 3 Principe du VHDL
3.1 Introduction
Avant la réalisation de ce projet, il faut d’abord commencer par étudier les notions de
base du langage VHDL qu’on va l’utiliser pour implémenter un filtre RIF pour l’annulation
d’écho acoustique, d’autre part nous allons présenter les outils de conception et
simulation ainsi que les circuits FPGA.
VHDL (le synonyme de langage de description matériel d’un circuit intégré à très haute
vitesse), est un langage de programmation dont la vocation est de donner naissance à
un circuit logique et non à un programme exécutable. Ce circuit peut se matérialiser
dans un CPLD (Complex Programmable Logic Device) ou plus grand encore, dans un
FPGA (Field ProgrammableGate Array).
3.2.2 Historique
Le langage VHDL a été commandé dans les années 1980 par le Département de la Défense
des États-Unis dans le cadre de l'initiative VHSIC. Dans un effort de rationalisation, le
VHDL reprend la même syntaxe que celle utilisée par le langage Ada (ce dernier étant
aussi développé par le département de la défense).
La version initiale de VHDL, standard IEEE 1076-1987, incluait un large éventail de types
de données, numériques (entiers, réels), logiques (bits, booléens), caractères, temps,
plus les tableaux de bits et chaînes de caractères.
36
L'un des principaux problèmes concernait le type bit. Celui-ci ne pouvant prendre que
deux valeurs (0, 1), il était impossible de représenter les signaux de valeur inconnue ou
encore les signaux en haute impédance, ainsi que la « force » d'un signal (faible, forte ou
nulle). La norme IEEE 1164 définit le type std_logic avec 9 états possibles. Ceci a été
adopté dans le VHDL-93 (seconde version de la norme IEEE 1076).
Cette nouvelle norme est une extension de la norme IEEE 1076-1987 déjà existante. Elle
permet la description et la simulation de circuits analogiques, numériques, et mixtes
(analogique et numérique). Pour cela elle utilise en complément des instructions
séquentielles et concurrentes un nouveau type d'instructions, dites « simultanées », et
qui ont valeur d'équations. En pratique, de plus en plus de simulateurs implémentent
cette extension. Par contre, les outils de synthèse analogique associés n'en sont encore
qu'à leurs balbutiements.
37
std_logic_1164 de la libraire IEEE. Cela nous permet entre autres d'utiliser le type
std_logic [16].
Library ieee ;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all ;
b Entité
Port: l’instruction port est utilisé pour la déclaration des entrées et des sorties.
38
Le nom du signal: est composé de caractères, le premier caractère doit être une
lettre, sa longueur est quelconque, mais elle ne doit pas dépasser une ligne de
code.
La direction du signal
Type
La notion de type est très importante en VHDL, chaque entrée, sortie, signal, variable ou
constante, est associé à un type. Sans artifice particulier, il n'est pas question d'effectuer
une opération entre deux grandeurs de type différent.
c Architecture
Une fois l’entité définie, il faut décrire son fonctionnement, c’est ce que l’on fait avec
l’architecture. La syntaxe générale pour une déclaration d’architecture est:
39
Architecture RTL of HALFADD is
-- Déclarations préalables
End RTL
Une architecture fait toujours référence à une entité (ici, HALFADD). Elle est définie par
un nom quelconque (ici RTL), que l’on pourra choisir pour expliciter la façon dont on
code. A la suite de la déclaration de l’architecture, on définira les déclarations préalables
(signaux internes, composants).
Ensuite, viens le mot clé « begin ». A sa suite, on trouvera le code qui décrit le
fonctionnement de l’architecture. Dans une architecture, toutes les lignes
combinatoires ou bloque de process sont exécutées en parallèle.
Description structurelle
Description comportementale
40
On donne, ci-dessous, quelques notes sur la syntaxe d'un programme VHDL [18]:
VHDL est un langage typé où il est obligatoire de spécifier le type des objets utilisés. Ses
types prédéfinis sont [19]:
a Scalaire
41
type boolean is (FALSE, TRUE);
type bit is ('0', '1');
type severity_level is (NOTE, WARNING, ERROR, FAILURE);
type character is ( NUL, SOH, STX, ETX,..., '0','1', ...);
A <= 1.0;
B <= 5.9E10;
C <= -8.5E20;
b Composite
Tableau: Les types TABLEAU ou array sont des collections d'objets de même
type, indexés par des entiers ou des énumérés. Exemples :
42
Enregistrement (RECORD): ce type permet de définir un objet dont les
composantes sont hétérogènes.
end record ;
c Fichier et pointeur
Fichier: Les types fichiers FILE permet l'échange de données entre l'extérieur
et le simulateur VHDL. Il est utilisé principalement pour créer des fichiers de
test ou TESTBENCH de modèles. Un fichier peut être soit en lecture soit en
écriture mais pas les 2 en même temps.
Pointeur: sont peu utilisés en VHDL donc il est préférable d’utiliser les
tableaux indicés qui peuvent être synthétisables.
43
3.2.7 Les instructions du VHDL
Comme tout langage de description de matériel, le VHDL décrit des structures par
assemblage d'instructions concurrentes dont l'ordre d'écriture n'a aucune importance,
contrairement aux instructions séquentielles qui sont exécutées les unes après les
autres, comme c'est le cas du langage C.
Les instructions concurrentes sont les bases du langage VHDL, elles servent
essentiellement à l’affectation. Le mode concurrent représente l’aspect combinatoire
du fonctionnement des circuits. Ces instructions sont prédéfinies comme suit [20]:
Affectation simple
Y <= … oper_logic …;
Exemple:
Affectation conditionnelle
44
Exemple :
...
expression;
45
with .... select Y <= …. when …. <=> with signal_commande select
...
component porte_et is
end component;
entity work.porte_et(flot_don);
begin
..
46
U1: porte_et port map (A_i => entr_i,
..
end struct;
Processus (process)
Tout modèle VHDL peut se décrire de manière équivalente comme un ensemble
de processus communiquant par l'intermédiaire de signaux. Un processus
encapsule une séquence d'instructions exécutées dans un ordre donné.
L'exécution des instructions d'un processus est conditionnée par des
événements (event) sur des signaux.
Les instructions séquentielles sont internes aux processus, aux procédures et aux
fonctions suivante [21]:
Instruction conditionnelle IF
47
If condition then
Instructions
elsif condition
then instructions
else instructions
end if;
end case;
Instruction de boucle
LOOP: loop ………….end loop;
48
while condition loop …………….;
end loop;
end loop;
LOOP imbriquées:
first_loop : loop
second_loop : loop
……do something…….
49
wait on clock;
wait;
3.3 Quartus
Définition: Quartus est un logiciel développé par la société Altera, permettant la gestion
complète d'un flot de conception CPLD ou FPGA. Ce logiciel permet de faire une saisie
graphique ou une description HDL (VHDL ou verilog) d'architecture numérique, d'en
réaliser une simulation, une synthèse et une implémentation sur cible reprogrammable.
Au début cliquez sur Démarrer —Programmes —>Altera —>Quartus II 5.1 pour lancer
le programme
50
Après avoir lancé le programme , faites File —>New Project Wizard . Une nouvelle
fenêtre apparaît qui permettant de configurer le projet
Cliquer sur Next la fenêtre Add Files apparaît elle nous propose d'inclure des fichiers
déjà crées au projet. recliquez sur Next.
Dans la fenêtre suivante intitulée Family & Device Settings, Cocher la case « SPECIFIC
DEVICE SELECTED IN 'AVAILABLE LIST' »,Choisir la famille du composant programmable
ainsi que le circuit cible et cliquer sur Next.
51
Figure 3. 3 Fenêtre Family & Device Settings.
Remarque
Quand la fenêtre EDA Tool Settings apparaît cliquer sur Next. Une fenêtre récapitulative
apparaît:
52
Valider les choix par Finish ou bien faire Back pour des modifications éventuelles. Dans
le navigateur de Projet, un onglet avec le type composant et l'entité maître apparaît:
Cette étape permet de définir et configurer les différentes parties du projet. Quartus
accepte plusieurs types de saisie à savoir:
Pour saisir un projet en mode graphique, aller dans le menu : File —>New La fenêtre
suivante apparaît:
53
Sélectionner le type Block diagram / Schematic file puis faite OK.
Une feuille blanche se crée intitulée Block1.bdf. On prendra soin de sauver cette feuille
sous le nom de l'entité maître C'est maintenant cette feuille de saisie graphique qui a la
hiérarchie la plus haute dans le projet.
Il convient maintenant d'insérer des symboles dans notre feuille. Pour cela, nous
pouvons soit choisir des composants de la librairie Altera soit en créer en les décrivant
en VHD.
L'insertion d'un symbole se fait en cliquant dans la feuille avec le bouton de droite et en
allant dans Insert —>Symbol. La fenêtre suivante s'ouvre:
La saisie d'un composant VHDL se fait de la même manière que précédemment. Pour
cela, aller dans le menu : File —>New La fenêtre suivante apparaît:
54
Figure 3. 8 Création d'un fichier VHDL.
Sélectionner le type VHDL File puis faite OK,Un petit éditeur de texte apparaît.
Une fois le code VHDL saisie, il convient de le sauver (File puis Save As) puis d’en
vérifier la bonne syntaxe de la description en cliquant sur Analyse Current File et
Corriger les éventuelles erreurs.
Lorsque l'édition du fichier est terminée et qu'il est sauvegardé, vérifier la bonne syntaxe
de la description en cliquant sur Analyse Current File.
Remarque: il est important de sauver le fichier sous le même nom que l’entité. Bien
que cela ne soit pas indispensable comme sous MaxplusII, cela évite des intersections
d’entité entre fichiers.
55
Figure 3. 10 Vérification de syntaxe de description.
Une fois que le fichier est OK, on peut alors créer un symbole graphique qui nous
permettra d’insérer le composant dans la feuille graphique initiale. Pour cela, aller dans
3.3.5 Compilation
Pour lancer la compilation, cliquer sur : Processing Compiler Tool. la fenêtre suivante
apparait:
56
Figure 3. 12 Fenêtre de compiler Tool.
Cliquer sur Start. Une fois la compilation est terminée vous pouvez consulter le rapport
en cliquant sur l’icône. Il faut à ce moment corriger les erreurs s’il y a lieu.
Appuyer sur Tools RTL Viewer pour voir comment le schéma contenant le code VHDL
a été transformé en portes et bascules. Cela permet de voir comment la synthèse
logique s'est déroulée.
57
3.3.6 La simulation du projet
La première étape consiste à définir les signaux à appliquer sur les entrées du circuit
Cliquer sur File puis sur New Sélectionner l'onglet "Other Files" et cliquer sur Vector
Waveform File.
Pour modifier la durée de simulation, cliquer sur Edit, puis End Time. Une fois la durée
modifiée, cliquer sur OK.
58
Figure 3. 16 Fenêtre de modification de la durée de simulation.
Sauvegarder le fichier sous son nom définitif avec son extension (l’extension. wvf
«waveform vector file ») en cliquant sur File puis Save As.
Pour insérer les signaux d'entrée et les sorties, dans la fenêtre "Name"cliquer avec le
bouton droit de la souris, puis sélectionner Insert et cliquer sur Insert Node or Bus. La
boite de dialogue suivante qui s'ouvre:
59
Figure 3. 18 Fenêtre de Node Finder.
Dans la catégorie « filter » choisir all Name, cliquer sur List afin apparaitre les signaux
du design, dans la fenêtre selected Nodes sélectionner les signaux voulus puis cliquer
sur la flèche correspondante [22].
Appuyer sur OK pour fermer les déférentes fenêtres et revenir à l’éditeur de signaux.
Afin de donner des valeurs de stimuli, On Clique avec le bouton droit de la souris sur le
nom d'un signal, sélectionner Value, puis choisir la valeur du signal dans le menu.
Il est possible d'effectuer la même opération sur une partie seulement d'un signal en
sélectionnant une zone dans la partie "chronogramme". Il faut pour cela maintenir le
bouton gauche de la souris appuyé en déplaçant le curseur [22].
Tools →Simulator Tool dans la fenêtre de simulation qui s'ouvrira, spécifier le fichier de
simulation et choisir le mode de simulation (Fonctionnelle ou Temporelle) puis cliquer
sur le
bouton Start pour lancer la simulation, il est possible de voir le résultat en cliquant sur
Report.
60
Figure 3. 19 Résultat de simulation.
Afin de choisir quelle broche physique du circuit doit être connectée, lancer l'outil
d'assignement de pins par : Assignements Pins.
Programmation du circuit
Vérifier que les connections entre le PC (port parallèle) et la carte via le module
ByteBlaster sont opérationnelles. Si tout est ok lancer le programmateur Cliquer sur
Tools puis sur Programmer.
61
Figure 3. 20 lancement du programmateur du circuit.
Vérifier que le fichier avec l’extension .sof est bien là (sélectionner le) et que la case
Program/Configure est cochée, puis cliquer sur Start [22].
3.4 ModelSim
Le ModelSim est un environnement de simulation de description de circuits numériques.
Il intègre un gestionnaire de projet, un éditeur de texte et un visualiseur de
chronogrammes qui permet de visualiser le résultat de simulation. Le cœur du logiciel,
le simulateur logique, consomme une description VHDL multi-fichiers et un vecteur de
test. Il produit un résultat de simulation qui est automatiquement affiché à l'écran par
le visualiseur de chronogrammes [16].
Un fichier de code.
Un fichier de simulation (testbench).
Un fichier de configuration.
62
3.4.3 Analyse des fichiers
Il faut toujours analyser avant de tester le circuit, donc il faut ajouter des fichier VHDL à
compiler en suivant les étapes suivantes :
On peut aussi compiler les fichiers d’une façon pas à pas,un éditeur de texte s'ouvre
lorsque l'on double-clique sur les fichiers .vhd.
Pour lancer la simulation il faut choisir l'onglet Library, puis, en double-cliquant sur la
configuration « nom du module » _cfg, la simulation se charge. Ceci est équivalent à :
Après dans le fenêtre "Objects", sélectionnez l'ensemble des signaux et « tirez » les dans
la fenêtre « Wave » ensuite cliquer sur Simulate -> Run->Run 100ns permet de faire
avancer la simulation de 100 ns (ou utilisez les icônes).
63
Figure 3. 21 Fenêtre de simulation en ModelSim avec plusieurs d'autres fenêtres.
FPGA (Field Programmable Gate Arrays) est un circuit intégré qui peut être personnalisé
pour une application spécifique. Il est « programmable sur le terrain », ce qui signifie
qu'il peut être configuré par l'utilisateur après la fabrication.
64
Les FPGA contiennent un réseau de cellules programmables. Chaque cellule est capable
de réaliser une fonction, choisie parmi plusieurs possibles. Les interconnexions sont
également programmables.
3.5.2 Architecture
3.6 Conclusion
Dans ce chapitre, nous avons présenté les étapes et les techniques d’implémentation
d’une application sous le logiciel ModelSim/Quartus. Ce chapitre nous permettre de
présenter et implémenter les filtres numériques sous VHDL.
65
Chapitre 4 Résultats des simulations
4.1 Introduction
Dans ce chapitre nous allons présenter les résultats de l’annulation d’écho acoustique,
en utilisant l’algorithme du gradient stochastique normalisé (NLMS) et l’algorithme
NLMS amélioré (NLMA). Deux types de résultats expérimentaux vont être exposés dans
ce chapitre. Le premier type de résultats concerne les expérimentations faites sur le
logiciel Matlab, le deuxième type concerne les résultats obtenus par l’implémentation
de l’algorithme NLMS amélioré sous VHDL en utilisant le logiciel ModelSim.
Dans ce qui suit, nous allons tout d’abord présenté les signaux de test que nous avons
utilisé dans les deux types de simulations décrites précédemment, puis les résultats
obtenus avec les deux types d’implémentations seront détaillés.
66
10
-2
-4
-6
-8
0 0.5 1 1.5 2 2.5 3 3.5
4
x 10
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
0 0.5 1 1.5 2 2.5
4
x 10
1
𝜎𝑒2 (𝑛)=𝑀 ∑𝑀 2
𝑖=1 𝑒 (𝑛) (4.2)
67
Le deuxième critère est l’ERLE (Echo Return Loss Enhancement) donnée par la relation
suivante :
𝜎𝑦2 (𝑛)
𝐸𝑅𝐿𝐸𝑑𝐵 = 10𝑙𝑜𝑔10 (𝜎2 (𝑛)) (4.3)
𝑒
1
Avec 𝜎𝑦2 (𝑛) = 𝑀 ∑𝑀 2
𝑖=1 𝑦 (𝑛) (4.4)
En utilisant le signal BUSASI, nous avons fait deux tests qui sont basés sur la taille du
filtre L et le pas d’adaptation μ, ces derniers seront bien exposés par la suite:
Les résultats de cette simulation sur l’effet de la taille du filtre sont obtenus en
sélectionnant plusieurs tailles du filtre et en calculant l’erreur quadratique finale (MSE).
Ces résultats obtenus sont donnés à la figure 4.3 suivante:
68
10
L=32 NLMS
L=128 NLMSA
0
L=512
-10
-20
MSE en dB
-30
-40
-50
-60
-70
-80
0 100 200 300 400 500 600 700 800 900 1000
iteration 64
Figure 4. 3 Influence de la taille L sur le NLMS et NLMSA pour L= {32,128,512), μ=0.4, RSB=90
et un signal d’entrée BUSASI.
Selon la figure (4.3), nous remarquons bien que les deux algorithmes convergent mieux
lorsque la taille du filtre adaptatif L est faible, ce qui montre que leur vitesse de
convergence est inversement propostionnelle à la taille du filtre adaptatif, et nous
observons une grande amélioration du convergence de notre algorithme proposé.
Dans cette simulation, nous avons fixé la taille du filtre transverse L à 32 et nous avons
fait varier le pas μ. Nous avons obtenu les résultats qui sont donnés àla figure(4.4)
suivante.
69
20
NLMS
10 NLMSA
mu=0.6 mu=0.3 mu=0.1
0
-10
-20
MSE en dB
-30
-40
-50
X: 897
-60 Y: -65.42
-70
-80
0 100 200 300 400 500 600 700 800 900 1000
iteration 64
Figure 4. 4 Influence du pas d’adaptation pour NLMS et NLMSA μ={0.1,0.3,0.6), L=256, RSB
d’entrée égale à 90 et un signal d’entrée BUSASI.
En se basant sur la figure (4.4), nous remarquons que les deux algorithmes convergent
mieux lorsque le pas d’adaptation du filtre adaptatif µ est grand (µ = 0.6, 0.3 et 0.1
pour les deux algorithmes, et nous observons une grande amélioration de convergence
de notre algorithme proposé en comparsion avec celle du NLMS.
Pour bien voir les performances de notre méthode dans un contexte réel d’AEA
(annulation d’écho acoustique), nous avons réalisé une expérience en utilisant comme
signal d’entrée de la parole réelle. Cette expérience dessous est réalisée avec une taille
du filtre L=32, un pas d’adaptation µ=0.1 et un rapport signal à bruit d’entrée RSB=90
dB sur 160000 itérations. Les résultats obtenus sur le critère MSE et ERLE sont donnés
respectivement par la figure (4.5) et (4.6) :
70
10
NLMS
0 NLMSA
-20
-30
-40
-50
-60
-70
-80
-90
0 500 1000 1500 2000 2500
Bloc of 64 samples
100
NLMS
90 NLMSA
Echo Ratio Lost Error (ERLE) in (dB)
80
70
60
50
40
30
20
10
0
0 500 1000 1500 2000 2500
Bloc of 64 samples
D’après les deux Figures (4.5) (4.6), nous remarquons clairement que la vitesse de
convergence de l’algorithme NLMSA est meilleure que celle du NLMS. Cela montre bien
l’efficacité de l’algorithme NLMSA dans les applications d’AEA.
71
4.5 Résultat de simulation de l’algorithme NLMS amélioré en
utilisant le logiciel ModelSim
Dans cette partie, nous allons présenter les résultats expérimentaux de
l’implémentation des deux algorithmes NLMS et NLMSA sous le logiciel ModelSim avec
des signaux de test qui sont déjà utilisés précédemment, c’est-à-dire le bruit BUSASI et
le signal de parole précédemment décrits.
D’après cette figure, nous avons bien remarqué que le signal d’erreur de filtrage tend
vers zéro après quelques itérations. Cela montre bien que notre algorithme a bien
fonctionné sous le logiciel ModelSim. Aussi, cette tendance est bien montrée par le fait
que le signal en sortie du filtre adaptatif de l’algorithme NLMSA soit égale au signal
d’écho. Cela prouve que le système tel qu’il est implémenté sous ModelSim permet une
de dire que notre implémentation a bien réussie sur ModelSim.
72
Figure 4. 7 Signaux d’entrées et sorties [signal de référence, signal désiré et signal d’erreur de
filtrage] de l’implémentation de l’algorithme NLMSA sous ModelSim. Signal d’entrée est le
BUSASI, la taille du filtre est L=128.
Dans ce deuxième test sous le logiciel ModelSim, nous avons pris les mêmes paramètres
qui sont utilisées pour le signal BUSASI dans l’expérience précédente et nous avons fait
tourner l’algorithme NLMSA sous ModelSim en utilisant un signal de parole comme
signal d’excitation à l’entrée. Ce choix est proche au cas réel car dans les applications de
l’annulation d’écho acoustique et de la réduction du bruit acoustique, le signal
d’excitation est toujours le signal de parole. Un échantillon des résultats obtenus pour
une taille du filtre égale à 28 coefficients sont montré à la figure (4.8) suivante. Les
mêmes remarques que précédemment ont été noté dan cette expérience.
73
Figure 4. 8 7 Signaux d’entrées et sorties [signal de référence, signal désiré et signal d’erreur
de filtrage] de l’implémentation de l’algorithme NLMSA sous ModelSim. Signal d’entrée est de
la parole, la taille du filtre est L=128.
Dans cette section nous allons faire la comparaison des résultats de simulations de
l’algorithme NLMSA sous ModelSim et Matlab en fixant le pas d’adaptation 𝜇 à 1 et
variant la taille du filtre, ces résultats vont être exploité comme suit :
Les figures (4.9), (4.10), (4.11) et (4.12) représentent l’évolution temporelle de l’erreur
de filtrage linéaire, le MSE, et l’ERLE en utilisant le signal BUSASI comme signal d’entrée
des deux expériences faites sur les deux logiciels Matlab et ModelSim, le test
d’implémentation a été réalisé avec deux tailles de filtre différentes à savoir L=32, L=128.
74
NLMSA sous ModelSim
NLMSA sous Matlab
10
5
Amplitude
-5
-10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Samples 4
x 10
20
NLMSA sous ModelSim
10 NLMSA sous Matlab
-10
MSE in (dB)
-20
-30
-40
-50
-60
0 1 2 3 4 5 6 7 8
Samples 4
x 10
Figure 4. 9 Comparaison entre les erreurs de filtrage et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec BUSASI, L=32.
Dans ces figures, que ce soit sur l’erreur de filtrage linéaire ou bien MSE ou encore ERLE,
nous remarquons que la vitesse de convergence de l’algorithme NLMSA est plus rapide
sur matlab que sur ModelSim. En régime transitoire de ces réultts (début de
convergence) nous observons que les évolutions commencent avec une grande
amplitude avec ModelSim alor que sur Matlab c’est tout à fait le contraire. Cela revien
au type de codage des valeurs ur les deux logiciels.
75
20
NLMSA sous ModelSim
15 NLMSA sous Matlab
10
5
Amplitude
-5
-10
-15
0 1 2 3 4 5 6 7 8
Samples 4
x 10
40
NLMSA sous ModelSim
NLMSA sous Matlab
20
0
MSE in (dB)
-20
-40
-60
-80
0 1 2 3 4 5 6 7 8
Samples 4
x 10
Figure 4. 10 Comparaison entre les erreurs de filtrage et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec le signal BUSASI comme signal d’entrée et une taille
du filtre L=128.
Dans cette comparaison (voir les figures (4.9) et (4.10) ) l’erreur et le MSE prennent
beaucoup de temps pour converger sur ModelSim par rapport au Matlab, de plus à
chaque fois qu’ on diminue la taille du filtre la vitesse de convergence devient plus
rapide. Ce résultat confirme les résultats obtenus précédemment lorsque la taille du
filtre varie.
76
50
40
NLMSA sous ModelSim
NLMSA sous Matlab
30
20
ERLE in (dB)
10
-10
-20
0 50 100 150 200 250 300
Samples
Figure 4. 11 Comparaison de ERLE implémenté sur Matlab et ModelSim avec BUSASI, L=32.
50
40
10
-10
-20
0 50 100 150 200 250 300
Samples
Figure 4. 12 Comparaison de ERLE implémenté sur Matlab et ModelSim avec BUSASI, L=128.
D’après les deux figures 4.11 et 4.12 du critère ERLA, nous avons remarqué que la vitesse
de convergence de l’algorithme NLMSA est plus rapide sur Matlab que dans le cas du
logiciel ModelSim. Ces résultats confirme encore une fois la différences de codage des
chiffre qui fait la différence entre les deux logiciels.
Les figure (4.13), (4.14), (4.15) et (4.16) représentent l’évolution temporelle de l’erreur
de filtrage linéaire, le MSE, et l’ERLE, en utilisant le signal de parole comme signal source
pour l’algorithme NLMSA qui est implémenté sous implémenté sous Matlab et sous
ModelSim, le test d’implémentation est réalisé avec deux taille de filtre adaptatif à
savoir L=32, L=256.
77
0.4
NLMSA sous ModelSim
NLMSA sous Matlab
0.2
Amplitude
-0.2
-0.4
-0.6
0 2 4 6 8
Samples 4
x 10
-10
NLMSA sous ModelSim
-20 NLMSA sous Matlab
-30
-40
MSE in (dB)
-50
-60
-70
-80
0 2 4 6 8
Samples 4
x 10
Figure 4. 13 Comparaison entre les erreurs de filtrage linéaire et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec le signal de parole comme signal d’entrée et une
taille du filtre adaptatif égale à L=32.
78
2
NLMSA sous ModelSim
1.5 NLMSA sous Matlab
0.5
Amplitude
0
-0.5
-1
-1.5
0 2 4 6 8
Samples 4
x 10
20
NLMSA sous ModelSim
NLMSA sous Matlab
0
-20
-40
MSE in (dB)
-60
-80
-100
-120
0 2 4 6 8
Samples 4
x 10
Figure 4. 14 Comparaison entre les erreurs de filtrage linéaire et les MSE obtenues par NLMSA
implémenté sur Matlab et ModelSim avec le signal de parole comme signal d’entrée et une
taille du filtre adaptatif égale à L=256.
D’après les deux figures (4.13) et (4.14) nous remarquons que les erreurs de filtrage et
le MSE obtenues par NLMSA sont minimisé quel que soit le régime transitoire jusqu’elles
prennent le régime permanent. Nous remarquons aussi que l’erreur de filtrage sous
Matlab est plus petite que celle sous ModelSim et c’était le même cas pour le MSE.
Nous notons que, nous pouvons mieux voir la différence entre l’implémentation de
NLMSA sous Matlab et l’implémentation de NLMSA sous ModelSim lorsque la taille du
filtre adaptatif L est grande.
79
50
40
30
ERLE in (dB)
10
0
0 50 100 150 200 250 300
Samples
40
30
20
ERLE in (dB)
10
-10
0 20 40 60 80 100 120 140 160 180 200
Samples
D’après les deux figures (4.15) et (4.16), nous remarquons que l’ERLE obtenus sous
Matlab est plus petit que celui obtenus sous ModelSim. La différence entre ces deux
derniers apparaît mieux lorsque la taille du filtre adaptatif est grande, de plus nous
remarquons que le graphe de ERLE sous Matlab commence avant le graphe de ERLE sous
ModelSim quel que soit la taille du filtre.
A la fin de cette comparaison des résultats de Matlab et ModelSim, nous concluons que
les résultats sous Matlab sont plus précis que les résultats sous Modelsim à condition
du mode de codage des valeurs sous les deux logiciels.
80
4.5.4 Etude comparative entre NLMS et NLMSA sous ModelSim
Dans cette section nous allons comparer les deux algorithmes NLMS et NLMSA sous
ModelSim. Cette comparaison est faite dan un contexte d’annulation d’écho acoustique,
c’est-à-dire le signal d’entré est un signal de parole. Les résultats obtenus de cette
comparaison ont été exprimés en termes de l’erreur de filtrage linéaire, le MSE et l’ERLE
et sont donnés aux figures 4.17, 4.18, et 4.18, respectivement.
4
NLMS sous ModelSim
NLMSA sous ModelSim
2
0
Amplitude
-2
-4
-6
0 2 4 6 8
Samples 4
x 10
81
10
NLMS sous ModelSim
0 NLMSA sous ModelSim
-10
-20
MSE in (dB)
-30
-40
-50
-60
0 2 4 6 8
Samples 4
x 10
30
NLMS sous ModelSim
NLMSA sous ModelSim
20
10
ERLE in (dB)
-10
-20
0 50 100 150 200 250 300
Samples
D’après les résultats des trois critères (l’erreur de filtrage linéaire, le MSE, et l’ERLE), données
aux Figures (4.17), (4.18) et (4.19), nous avons constaté que l’algorithme NLMSA est
bien meilleure en termes de vitesse de convergence que l’algorithme NLMS et cela dans
les deux experiences faites sous Matlab ou bien sous ModelSim. Cela nou permet de
82
dire que l’algotithme NLMSA peut faire une bonne alternative pour les appluications
d’AEA en temps réels et sur les systèmes électronique embarqués.
4.6 Conclusion
Dans ce chapitre, nous avons présenté deux types d’algorithmes (NLMS et NLMSA) pour
l’annulation d’écho acoustique (AEA) et qui sont implémenté sur Matlab et ModelSim.
les résultats de simulations ont été obtenus en utiliant le signal BUSASI et le signal de la
parole afin de teste et comparer les performances de ces deux algorithmes dans un
contexte académqie (BUSAI) et aussi dans un cotexte réel d’annulation d’écho
acoustique. Tous les résulats ontenus ont été présentés puis analysés dans ce chapitre.
A l’issu de ces résulats, nous avons montré que la méthode d’annulation d’écho
acoustique en employant l’algorithme NLMSA dans son fonctionnement est plus efficace
que celle basée sur l’algorithme clasique NLMS. Aussi, nous avons remarqué que les
résultats obtenus avec l’algorithme NLMSA en utiliant le logiciel Matlab ont donné des
résultats plus précis que lorque le logiciel ModelSim est utilisé.
83
Conclusion générale
Dans un premier temps, nous avons étudié théoriquement les deux algorithmes du
gradient stochastique normalisée NLMS (Normalised Least Mean Square) et NLMSA
(Normalise Least Mean Square Ameliorate), ensuite nous avons implémenté les deux
algorithmes NLMS et NLMSA sous Matlab et sous ModelSim pour bien évaluer les
performances des deux algorithmes en temps différé et en temps réel.
84
Bibliographie
85
[14] Greet Rombouts « Adaptive filtering algorithms for acoustic echo and noise
cancellation dissertation» KATHOLIEKE UNIVERSITE ITLEUVEN, 2003.
[15] Hugues Benoit-Cattin « Traitement du signal » Département
télécommunications, Services & Usages 3TC/INSA-Lyon.
[16] Mohamed Bendada « Implantation d’algorithme de filtrage numérique sur FPGA
(réseau de portes programmables) » Université Farhat Abbas de Sétif Algérie-
Master électronique.
[17] J.WEBER, M.MEAUDRE « circuits numériques et synthèse logique un outil:
VHDL », Collection technologies de l’université à l’industrie.
[18] Peter J. Ashenden « The designer's guide to VHDL» (3rd edition) Morgan
Kaufmann, 2008.
[19] © Alexis Polti « Cour en ligne: Type de données, expressions » Journal, TELECOM
ParisTech COMELEC, 2005.
[20] E. Messerli « Le langage VHDL, notions de base & synthèse » pp28, (HES-SO /
HEIG-VD / REDS), 2017.
[21] Fabrice CAIGNET « Les circuits logiques programmables – FPGA: Introduction au
langage VHDL Sémantique » LAAS – CNRS.
[22] T.Perisse « Manuel_QuartusII: VHDL » 2009-2010.
[23] M.Djendi‚S.Berkani ‚ H.Dhifallah<<.........>> internationale conférence eu signal
processing SIVA 2016 Guelma Algérie.
86