Vous êtes sur la page 1sur 63

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE


Université Mohamed Larbi Ben M’hidi - Oum El Bouaghi
Faculté des Sciences et des Sciences Appliquées
Département de Génie Electrique
Filière d’Électronique

MEMOIRE DE FIN D’ETUDES


En vue de l’obtention du diplôme de
Master Académique
Spécialité : Electronique des Systèmes Embarqués

Implémentation d’Algorithmes DSP Temps Réel sur


un Microcontrôleur ARM Cortex M4 pour le
Traitement du Son

Présenté par Dirigé par

Akram Abd elouadoud BENHAFSA Mr. Khaled MENDACI

Jury de soutenance
Pr. M. Khamadja
Dr. F. Megri

Promotion : juin 2018


REMERCIEMENTS

J e remercie ALLAH, le tout puissant, le


miséricordieux, de m’avoir donné le courage, la
volonté et la patience de mener à terme ce présent
travail.

J e veux adresser mes remerciements à mon encadreur


M. MENDACI KHALED, plus personnellement pour
avoir d’abord proposé ce thème et le suivi continuel
tout le long de la réalisation de ce travail et qui n'a pas
cessé de me donner ses conseils

J e remercie tous les membres de jury pour la pertinence


de leurs remarques.

J e remercie aussi tous les enseignants de la spécialité


électronique des systèmes embarqués qui ont contribué
à ma formation.

J e remercie mes très chers parents qui ont toujours été


là pour moi.

I
Dédicace
Au nom de Dieu Allah

Avec toute ma reconnaissance Je dédie ce modeste


mémoire :
mes parents

A ma sœur et à mes frères


toute la famille ben hafsa et batoul
tous mes professeurs
tous mes amis

Ben hafsa akram abdeloudoud…..

II
Sommaire
Remerciment .............................................................................................................................. I
Dédicace ..................................................................................................................................... II
Sommaire ................................................................................................................................ III
Liste des Figures ....................................................................................................................... VI
Liste des Tableaux ................................................................................................................. VIII
Introduction Générale ................................................................................................................. 1
Chapitre I : Théorie relative du traitement numérique du signal
I.1.Introduction ........................................................................................................................... 2
I.2.La convolution ..................................................................................................................... 2
I.3.La corrélation ........................................................................................................................ 3
I.4.Convolution et corrélation .................................................................................................... 3
I.5.La Transformée en Z ............................................................................................................ 3
I.6.L’analyse de Fourier ............................................................................................................. 4
I.6.1.Développement en série de Fourier d’une fonction périodique ......................................... 4
I.6.2.Transformation de Fourier d’une fonction ........................................................................ 4
I.7.La transformation de Fourier discrète .................................................................................. 4
I.8.La transformation de Fourier rapide ..................................................................................... 5
I.9.Les filtres numériques ........................................................................................................... 6
I.9.1.Les filtres à réponse impulsionnelle finie (RIF) ................................................................ 6
I.9.1.1.Les caractéristiques de filtre RIF .................................................................................... 6
I.9.1.2.synthèse des filtres RIF par la méthode de fenétre ......................................................... 6
I.9.1.3.Calcul des coefficients par développement en série de Fourier pour des spécifications
en fréquence ............................................................................................................................... 7
I.9.2.Les filtres à réponse impulsionnelle finie (RII) ................................................................. 9
I.9.2.1.Expressions générales pour les caractéristiques ............................................................. 9
I.9.2.2.Calcul direct des coefficients par les fonctions modèles ............................................. 10
I.10.Conversion analogique numérique ................................................................................... 10
I.10.1.Principe de la conversion analogique numérique .......................................................... 10
I.10.1.1.Définition .................................................................................................................... 10
I.10.1.2.Aspects temporels et fréquentiels de l’échantillonnage .............................................. 11
I.11.Conversion numérique analogique ................................................................................... 12
I.12.Conclusion ........................................................................................................................ 13
Chapitre II : hardware et software

III
II.1.Hardware .......................................................................................................................... 14
II.1.1.Introduction .................................................................................................................. 14
II.1.2.Processeurs de traitement du signal (DSP) ..................................................................... 14
II.1.2.1.Définition .................................................................................................................. 14
II.1.2.2.Traitement numérique du signal ................................................................................ 14
II.1.2.3. Adressage bit inverse ................................................................................................. 14
II.1.2.4.Architecture ............................................................................................................... 15
II.1.2.4.1.Von Neumann ......................................................................................................... 15
II.1.2.4.2.Harvard .................................................................................................................. 15
II.1.2.4.3.Pipelines .................................................................................................................. 16
II.1.2.5.Les différents DSP ....................................................................................................... 16
II.1.2.5.1.A virgule fixe .......................................................................................................... 16
II.1.2.5.2.A virgule flottante ................................................................................................... 17
II.1.2.6.Les avantages du DSP ................................................................................................. 17
II.1.2.7.Caractéristiques ........................................................................................................ 17
II.1.3.Architecture ARM ........................................................................................................ 18
II.1.3.1.SOC ARM ................................................................................................................. 18
II.1.3.2.Technologies des processeurs .................................................................................... 18
II.1.3.3.ARM Cortex-M ......................................................................................................... 19
II.1.3.4.Architecture ARM cortex M4 .................................................................................... 19
II.1.4.Cortex Microcontrôleur Software Interface Standard (CMSIS) .................................... 19
II.1.4.1.Définition .................................................................................................................... 19
II.1.4.2.Les avantages de CMSIS ............................................................................................ 19
II.1.4.3.Les composants de CMSIS ......................................................................................... 20
II.1. 5.FM4-176L-S6E2CC-ETH - Arm® Cortex®-M4 CPU ............................................... 21
II.1. 5.1.Caractéristique globale ............................................................................................. 21
II.1. 5.2.Codec WM8731 ........................................................................................................ 22
II.1. 5.3.I2C ............................................................................................................................ 22
II.1. 5.3.1.Définition ............................................................................................................... 22
II.1. 5.3.2.Interface I2C ........................................................................................................... 22
II.1. 5.3.3.Protocole I2C .......................................................................................................... 23
II.1. 5.4.I2s .............................................................................................................................. 23
II.1. 5.4.1.Définition .............................................................................................................. 23
II.1. 5.4.2.L'interface audio I2S : ............................................................................................. 23
II.2.Software ........................................................................................................................... 24

IV
II.2.1.Introduction : ................................................................................................................. 24
II.2.2.IAR Embedded Workbench IDE .................................................................................. 24
II.2.3.GCC (GNU compiler collection ) .................................................................................. 24
II.2.4.µVision keil .................................................................................................................. 24
II.2.4.1.Gestionnaire de projet μVision et environnement d'exécution ................................... 25
II.2.4.2.μVision Editor ............................................................................................................ 25
II.3.conclusion ........................................................................................................................ 26
Chapitre III : application sur le traitement du son
III.1.Introduction ..................................................................................................................... 27
III.2.Introduction de la carte Cypress FM4 par des opérations d’entrée/sortie analogiques de
base .......................................................................................................................................... 27
III.2.1.Exemple 1 : Bouclage du son ....................................................................................... 27
III.2.2.Exemple 2 : Génération d’un signal sinusoïdal à partir d’un tableau de consultation . 29
III.3. Echantillonnage et analyse fréquentielle par des entrées/sorties analogiques ............... 31
III.3.1.Exemple 1: Echantillonnage et repliement de spectre – génération de sinusoïdes ...... 31
III.3.2.Exemple 2: Echantillonnage et repliement de spectre – génération d'onde carrée à l'aide
du codec WM8731 .................................................................................................................. 32
III.3.3.Exemple 3 : Réponses indicielle et impulsionnelle du filtre de reconstruction du
WM8731 .................................................................................................................................. 33
(a)Depuis un signal carré généré à partir des échantillons programmés ................................. 33
(b)Depuis un signal carré obtenu à partir d’un générateur de signaux .................................... 35
III.3.4.Exemple 4 : Réponse fréquentielle d'amplitude du filtre de reconstruction DAC
WM8731 ................................................................................................................................. 36
III.4.Le filtrage ....................................................................................................................... 37
III.4.1.Le filtre a moyenne mobile .......................................................................................... 37
III.4.1.1.Observation de la réponse en fréquence à l'aide d'un signal d'entrée de type PRBS 37
III.3.2.Filtre à réponse impulsionnelle finie (FIR) .................................................................. 39
III.3.2.1.Filtre passe-bas .......................................................................................................... 39
III.3.2.2.Filtre passe-bande ...................................................................................................... 40
III.5.conclusion ....................................................................................................................... 42
Conclusion générale .............................................................................................................. 43
Bibliographies ......................................................................................................................... 44
Résumé .................................................................................................................................... 48

V
Liste des figures
Figure Nom de figure Numéro
de page
Figure I.1 Affixes des coefficients de la TFD 5
Figure I.2 gabarit de filtre passe-bas 7
Figure I.3 fenêtre rectangulaire 8
Figure I.4 incidence de la limitation du nombre de coefficient 8
Figure I.5 a) signal analogique b) signal échantillonné c)puis 11
quantifié.
Figure I.6 Convertisseur analogique numérique 11
Figure I.7 Echantillonnage d’un signal analogique. 12
Figure I.8 Récupération de l’information par filtrage passe bas 12
Figure I.9 Conversion numérique analogique. 12
Figure I.10 Caractéristique de transfert idéale d’un CNA 3 bits. 13
Figure I.11 Exemple de conversion pour un CNA 3 bits. 13
Figure II.1 Le bit inverse : à gauche l'ordre naturel et à droite les 15
données Réarranger dans l'ordre du bit inverse
Figure II.2 architecture Von Neumann 15

Figure II.3 architecture Harvard 16

Figure II.4 schéma de principe d'un DSP 18


Figure II.5 Structure CMSIS 21
Figure II.6 FM4-176L-S6E2CC-ETH - Arm® Cortex®-M4 CPU 21

Figure II.7 I2C 22


Figure II.8 protocole I2C 23
Figure II.9 L'interface audio I2S 23
Figure II.10 Gestionnaire de projet μVision et environnement 25
d'exécution

VI
Figure II.11 μVision Editor 26
Figure III.1 Système de base pour le traitement numérique du signal 27
Figure III.2 Connexion pour boucler le son 27
Figure III.3 Listing du programme loop_intr.c 28
Figure III.4 Signal observé sur la broche de test ‘TEST_PIN’ 28
Figure III.5 Connexion pour générer un signal sinusoïdal depuis le 29
DAC.
Figure III.6 Sortie analogique sinusoïdale de différentes
fréquences, générée par un tableau de consultation 30
(programme sine_lut_intr.c)
Figure III.7 Tracé du signal sinusoïdal envoyé au DAC du codec 30
en utilisant Matlab
Figure III.8 FFT du signal sinusoïdal (envoyé au DAC) en utilisant 31
Matlab
Figure III.9 Sortie analogique générée par le programme sine_ 32
intr.c pour différentes fréquences
Figure III.10 Forme d'onde de sortie analogique générée en utilisant 33
des échantillons d'une onde carrée de 1 kHz.
Figure III.11 Simulation Matlab d’un signal équivalent à celui de la 33
figure III.10
Figure III.12 Forme d'onde de sortie analogique générée par un 34
signal carré de 64 échantillons
Figure III.13 réponse impulsionnelle du filtre de reconstruction 34
DAC WM8731
Figure III.14 Amplitudes des composantes de fréquence présentes
dans la forme d'onde analogique générée à partir d’une 35
entrée carrée.
Figure III.15 Connexion pour générer un signal carrée depuis le 35
DAC
Figure III.16 Forme d'onde de sortie analogique générée obtenu à 35
partir d’un générateur de signaux
Figure III.17 séquence binaire pseudo-aléatoire obtenue depuis le 36
programme
Figure III.18 Réponse fréquencielle du filtre de reconstruction DAC
WM8731 pour une séquence PRBS pour fe=8Khz zt 36
fe=48Khz
Figure III.19 de connexion pour mesurer la réponse en fréquence de 37
magnitude du filtre moyen mobile ponctuel mis en
œuvre par le programme average_prbs_intr.c

VII
Figure III.20 l’environnement GoldWave utilisée pour observer les 38
signaux sur un PC
Figure III.21 filtre à moyenne mobile de 5 coefficients,en haut : la 38
réponse fréquentielle en utilisant Matlab, en bas : la
réponse fréquentielle de l’amplitude du filtre en
utilisant la carte FM4 et GoldWave sur un pc
Figure III.22 filtre à moyenne mobile de 11 coefficients, en haut : la 39
réponse fréquentielle en utilisant Matlab, en bas : la
réponse fréquentielle de l’amplitude du filtre en
utilisant la carte FM4 et GoldWave sur un pc
Figure III.23 filtre à moyenne mobile de 5 coefficients, en haut : la 40
réponse impulsionnelle, en milieu : la réponse
fréquentielle en utilisant Matlab, en bas : la réponse
fréquentielle de l’amplitude du filtre en utilisant la
carte FM4 et GoldWave sur un pc (fenêtre de Hann)
Figure III.24 filtre à moyenne mobile de 40 coefficients, en haut : la 40
réponse impulsionnelle, en milieu : la réponse
fréquentielle en utilisant Matlab, en bas : la réponse
fréquentielle de l’amplitude du filtre en utilisant la
carte FM4 et GoldWave sur un pc (fenêtre de Kaiser )

Liste des tableaux


Tableau I.1 Performances de quelques fenêtres 7
Tableau II.1 l’architecture pipelines 16
Tableau III.1 Fréquence de signal de sortie analogique pour 31
différentes valeurs de fréquence variable

VIII
Introduction générale
Introduction générale

Introduction générale
Un DSP (traitement numérique de signal) est un microprocesseur optimisé pour exécuter des
applications de traitement numérique du signal (filtrage, extraction de signaux, etc.) le plus
rapidement possible.
Les DSP sont utilisés dans la plupart des applications du traitement numérique du signal en
temps réel. On les trouve dans les modems (modem RTC, modem ADSL), les téléphones
mobiles, les appareils multimédia (lecteur MP3), les récepteurs GPS... Ils sont également
utilisés dans des systèmes vidéo, les chaînes de traitement de son, partout où l'on reçoit un
signal complexe que l'on doit modifier à l'aide du filtrage
Dans ce travail, on se propose de faire l’implémentation de quelques algorithmes de
traitement numérique du son en temps réel sur une plateforme DSP low cost de type Cypress
FM4 basée sur un microcontrôleur ARM Cortex M4.
Pour présentation de notre travail, nous avons organisés ce mémoire en trois chapitres.
Ainsi dans le premier chapitre nous présentons un rappel sur les notions relatives aux
traitements numériques du signal.
Dans le deuxième chapitre nous présentons le matériel et le logiciel que nous utilisons dans
notre travail.
Enfin le troisième chapitre sera consacré à l’implémentation et les résultats de
l’expérimentation.
Et ce travail est finalisé par une conclusion et des perspectives sur l’intérêt des DSP dans des
applications de la vie.

1
Chapitre I
Théorie relative du traitement
numérique du signal
Chapitre I théorie relative du traitement numérique du signal

I.1.Introduction

Le signal est le support de l’information émise par une source et destinée à un récepteur ; c’est le
véhicule de l’intelligence dans les systèmes. Il transporte les ordres dans les équipements de
contrôle et de télécommande, il achemine sur les réseaux l’information, la parole ou l’image. Il
est particulièrement fragile et doit être manipulé avec beaucoup de soins. Le traitement qu’il
subit a pour but d’extraire des informations, de modifier le message qu’il transporte ou de
l’adapter aux moyens de transmission ; c’est la qu’interviennent les techniques numériques. En
effet, si l’on imagine de substituer au signal un ensemble de nombre qui représentent sa
grandeur ou amplitude a des instants convenablement choisis, le traitement, même sa forme la
plus élaborée, se ramène a une séquence d’opération logiques et arithmétiques sur cet ensemble
de nombres, associées a des mises en mémoire.

Le traitement numérique du signal désigne l’ensemble des opération, calculs arithmétiques et


manipulations de nombres, qui sont effectués sur un signal a traiter, représenté par une suite ou
un autre ensemble de nombres, en vue de fournir une autre suite ou un autre ensemble de
nombres, qui représentent le signal traité. Les fonctions les plus variées sont réalisables de cette
manière, comme l’analyse spectrale, le filtrage l’extraction de paramètres. [1]
I.2.La convolution
Si les signaux h et g sont numériques est définie par les suites {h(n)} et {g(n)} et de dimension
N, le produit de convolution s'écrie alors :
s(n)=h(n)∗g(n)=∑N−1
k=0 h(k)g(n − k) (I.1)
les signaux h et g sont tous définis sur l’intervalle [0, N-1] toutefois dans l’opération de
retournement du signal g l’indice n-k sera susceptible de courir de [-N+1,N-1]. Comme g n’est
défini que sur l’intervalle [0,N+1] il importe de se fixer les règles de calcul et ces règles prouvent
être différentes solen l’objectif que l’on se fixe. On voit bien que si l’on part du signal g
retourné, ce signal restera en coïncidence avec le signal h non retourné tant que n appartiendra a
l’intervalle [0,2N-1] .la dimension du signal convolué est donc 2N-1 si les signaux de départ sont
tous deux de dimension N. une façon claire d’établir cette propriété est de considérer que le
signal g n’existe que si la quantité n-k appartient a l’intervalle [0,N-1] avec k contenu dans le
même intervalle .[2]
Supposons que k soit égal soit a l’indice k=0 soit a l’indice k=N-1. Le signal g(n-k) existera si
0≤𝑛 ≤𝑁−1
{ ⇔ 0 ≤ 𝑛 ≤ 2𝑁 − 2
0≤𝑛−𝑁+1≤𝑁−1
Ce qui conduit bien a un signal convolue de dimension 2N-1
Pour effectuer le calcul numérique on adopte les règles suivantes :
Règle n°1
On réalise l’opération en considérant que dans la somme contenue dans l’opération les
échantillons ayant un indice en dehors de l’intervalle [0, N-1] seront nuls. Le problème ne se
pose évidemment pas pour h mais clairement pour g. [2]

2
Chapitre I théorie relative du traitement numérique du signal

On a alors
s(n)=h(n)∗g(n)=∑𝑁−1
𝑘=0 ℎ(𝑘)𝑔(𝑛 − 𝑘) avec n ∈ [0,2N-2] (I.2)
Règle n°2
On réalise l’opération en considérant que les échantillons en dehors de l’intervalle [0, N-1] ont
même valeur que ceux contenus dans l’intervalle ce qui correspond à périodiser le signal
retourné. [2]
Règle n°3
On fait le calcul sur un intervalle moitié de la dimension du signal ce qui revient indirectement à
utiliser la règle 2. [2]
Il est clair que les règles proposées pour ce calcul ne conduisent pas toutes au même résultat.
Ceci sera discuté ultérieurement.
I.3.La corrélation
Pour des signaux numériques (que l’on supposera réels) définis par {s(n)} et {r(n)} et tels que
dim(s)=N et dim(r)=M, on définit la fonction de corrélation par :

𝐶𝑠𝑟 (𝑛) = ∑𝑁−1


𝑚=0 𝑠(𝑚)𝑟(𝑚 − 𝑛) Avec n 𝜖 [0, M+N-1] (I.3)

𝐶𝑠𝑟 (𝑛) = ∑𝑁−1


𝑚=0 𝑠(𝑚 + 𝑛)𝑟(𝑚) (I.4)

Le problème du calcul de la fonction d’intercorrélation des deux signaux s et r est équivalent a


celui rencontré dans l’opération de convolution.[2]

I.4.Convolution et corrélation
Nous avons vu que les deux opérations de convolution et de corrélation s’apparentent fortement.
Nous établissons maintenant le lien formel que existent entre ces deux opérations.

𝐶𝑠𝑟 (𝜏) = 𝑠(𝑡)  𝑟(𝑡) = ∫−∞ 𝑠(𝑡)𝑟 ∗ (𝑡 − 𝜏)𝑑𝑡 (I.5)

=∫−∞ 𝑠(𝑡)𝑟 ∗ (−(𝜏 − 𝑡))𝑑𝑡=s(𝜏)∗ 𝑟 ∗ (−𝜏)

La corrélation apparait donc comme la convolution du premier signal avec le conjugué du


second signal retourné a un instant 𝜏 donné.
Si les deux signaux sont identiques, on voit que la fonction d’autocorrélation est donnée par [2]:
𝐶𝑠𝑠 ( 𝜏)=s(𝜏)∗ 𝑠 ∗ (− 𝜏) (I.6)
I.5.La Transformée en Z :
La transformé en z peut être considéré comme une généralisation de la transformation de Fourier
à laquelle elle peut s'identifier dans un cas particulier.

3
Chapitre I théorie relative du traitement numérique du signal

La transformée en z constitue l’outil privilégie pour l’étude des systèmes discrets. Elle joue un
rôle équivalent à celui de la transformée de Laplace.
Soit un signal discret x(n) ; La transformée en Z (bilatérale) est définie par :
X(z)=Z{x(n)}=∑∞
𝑛=−∞ 𝑥(𝑛)𝑍
−𝑛
(I.7)
Ou z est une variable complexe et où X(z) est un fonction complexe de la variable z.[3]

I.6.L’analyse de Fourier
I.6.1.Développement en série de Fourier d’une fonction périodique
Soit s(t), une fonction de la variable t périodique et de période T, c'est-à-dire satisfaisant la
relation :
s(t+T)=s(t) (I.8)
Sous certaines conditions, on démontre que cette fonction est développable en série de Fourier,
c'est-à-dire que l’égalité suivante est vérifiée :
∑∞
𝑛=−∞ 𝐶𝑛 𝑒
𝑗2𝜋𝑛𝑡/𝑇
(I.9)
L’indice n est un entier et les 𝐶𝑛 sont appelés les coefficients de Fourier ; ils sont définis par
l’expression :
1 𝑇
𝐶𝑛 = 𝑇 ∫0 𝑠(𝑡)𝑒 −𝑗2𝜋𝑛𝑡/𝑇 𝑑𝑡 (I.10)

En fait les coefficients de Fourier minimisent l’écarte quadratique entre la fonction s(t) et le
développement. En effet la valeur est obtenue en dérivant par rapport au coefficient d’indice n
l’expression :
∞ 2
𝑇
∫ (𝑠(𝑡) − ∑ 𝐶𝑚 𝑒 𝑗2𝜋𝑛𝑡/𝑇 ) 𝑑𝑡
0 𝑚=−∞

Et en annulant cette dérivée.[1]


I.6.2.Transformation de Fourier d’une fonction :
Soit s(t) une fonction de la variable t ; sous certaines conditions on démontre l’égalité suivante :

s(t)=∫−∞ 𝑆(𝑓)𝑒 𝑗2𝜋𝑓𝑡 𝑑𝑓 (I.11)
avec

S(f)=∫−∞ 𝑠(𝑡)𝑒 −𝑗2𝜋𝑓𝑡 𝑑𝑡 (I.12)
La fonction S(f) est la transformée de Fourier de s(t). plus communément S(f) est appelé spectre
du signal s(t). [1]
I.7.La transformation de Fourier discrète

4
Chapitre I théorie relative du traitement numérique du signal

Soit deux suites de nombres complexes x(n) et X(k), périodique et de période N. la transformée
de Fourier discrète et la transformée inverse établissent entre ces deux suites les relations
suivantes respectivement :
𝑛𝑘
1 −𝑗2𝜋
𝑋(𝑘) = 𝑁 ∑𝑁−1
𝑛=0 𝑥(𝑛)𝑒 𝑁 (I.13)
𝑘𝑛
𝑗2𝜋
𝑥(𝑛) = ∑𝑁−1
𝑘=0 𝑋(𝑘)𝑒 𝑁 (I.14)
La position du facteur d’échelle 1/N est choisie pour que les X(k) soient les coefficients du
développement en série de Fourier de la suite x(n). [1]
I.8.La transformation de Fourier rapide
Les équations de définition de la TFD fournissent une relation entre deux ensembles de N
nombres complexes, qui s’écrit d’une manière commode sous une forme matricielle, en posant :
2𝜋
𝑊 = 𝑒 −𝑗 𝑁 (I.15)
Les affixes des nombres 𝑊 𝑛 , appelés coefficients de la T.F.D. se trouvent sur le cercle unité
comme le montre la figure I.1. Ce sont les racines de l’équation 𝑍 𝑁 − 1 = 0 ou racines Nièmes
de l’unité.

Figure I.1 : Affixes des coefficients de la TFD [1]


L’équation matricielle est la suivante pour la transformée directe.
 X0  1 1 1 1 1   x0 
 X  1 W W 2
W3 W N 1  x 
 1  1   1 
 X 2   1 W 2 W4 W6 W 2(N 1)
  x2 
  N   
    
 X N 1  1 W ( N 1) W 2( N 1) W ( N 1)(N'1)   xN 1 

Pour la transformer inverse, il suffit de retirer le scalaire 1/N et de changer 𝑊 𝑛 en 𝑊 −𝑛 .


La matrice carrée d’ordre N désignée par 𝑇𝑁 présente des particularités évidentes, les lignes et
les colonnes de même indice ont les mêmes éléments et ces éléments sont des puissances d’un
nombre de base W tel que 𝑊 𝑁 =1. Des simplifications importantes peuvent être envisagées dans
ces conditions, conduisant à des algorithmes de calcul rapide. Quand TFD est calculée à l’aide de
tels algorithmes on dit que l’on effectue une transformation de Fourier rapide (TFR).

5
Chapitre I théorie relative du traitement numérique du signal

Un cas très intéressant est celui ou N est une puissance de deux car il conduit à des algorithmes
peu complexes qui sont particulièrement efficaces. Ces algorithmes sont basés sur une
décomposition de la suite à transformer en sous suite entrelacées. Le cas de l’entrelacement dans
le temps va être considéré d’abord. [1]

I.9.Les filtres numériques


I.9.1.Les filtres à réponse impulsionnelle finie (RIF)
I.9.1.1.Les caractéristiques de filtre RIF
- La suit d’entrée x(n) et la suite de sortie y(n) sont reliées par une équation du type
suivant qui consiste la relation de définition :
y(n)=∑𝑁−1
𝑖=0 𝑎𝑖 𝑥(𝑛 − 𝑖) (I.16)
- Le filtre ainsi défini comporte un nombre N fini de coefficients 𝑎𝑖 : considéré comme un
système discret, il a pour réponse à la suite unitaire la suite h(i) telle que :
ℎ(𝑖) = 𝑎𝑖 𝑠𝑖 0 ≤ 𝑖 ≤ 𝑁 − 1
ℎ(𝑖) = 0 𝑎𝑖𝑙𝑙𝑒𝑢𝑟𝑠.
- C’est-à-dire que la réponse impulsionnelle est simplement la suite des coefficients.
- La fonction de transfert du filtre s’écrit :
𝐻(𝑓) = ∑𝑁−1
𝑖=0 𝑎𝑖 𝑒
−𝑗2𝜋𝑓𝑖𝑇
(I.17)
- Ou encore, exprimée en fonction de la variable Z :
𝐻(𝑍) = ∑𝑁−1
𝑖=0 𝑎𝑖 𝑍 (I.18)
- La fonction 𝐻(𝑓), réponse en fréquence du filtre, est une fonction périodique, de
1
période 𝑓𝑒 = 𝑇. Les coefficients 𝑎𝑖 (0≤ 𝑖 ≤ 𝑁 − 1) constituent le développement en série

de Fourier de cette fonction


- Si les coefficients sont symétriques, la fonction de transfert peut se mettre sous la forme
d’un produit de deux termes dont l’un est une fonction réelle et l’autre un nombre
complexe de module 1 représentant un temps de propagation 𝜏 constant et égal à un
multiple entier de la demi-période d’échantillonnage. Un tel filtre est dit à phase linéaire.
[1]
I.9.1.2. Synthèse des filtres RIF par la méthode de fenêtre
Les spécifications d’un filtre se donnent sous la forme d’un gabarit en valeurs réelles ou
relatives (dB). Le gabarit est représenté sur la figure I.2.
pour un filtre RIF : 𝑏𝐾 =ℎ(𝑘), où h(n) est la réponse impulsionnelle du filtre.
Le problème se ramène donc à la détermination de la réponse impulsionnelle h(n) du filtre
numérique.

6
Chapitre I théorie relative du traitement numérique du signal

Le calcul des coefficients repose sur l’utilisation de la transformée numérique et des fenêtres
spectrales (rectangulaire, Hanning, Hamming,…)
Une fenêtre spectrale est caractérisée dans le domaine fréquentiel par :
- La largeur du lobe principale qui définit la largeur de la transition de Gibbs.
- Les lobes secondaires qui conduisent aux ondulations dans les bandes passantes et
d’arrêt.
On ne peut évidemment comparer que des fenêtres ayant le même nombre d’échantillons N. la
fenêtre rectangulaire est celle qui assure la transition de Gibbs la plus étroite, par contre les
ondulations dans les bandes passante et d’arrét sont importantes.la fenêtre Hamming assure
quant à elle des ondulations moindres, par contre la largeur de la transition de Gibbs est plus
importante. [4]
Fenêtre Ondulation Atténuation max Bande de transition
𝑅𝑝 [dB] 𝐴𝑚𝑎𝑥 [dB] ∆𝛺
Rectangle 0.74 21 1.8𝜋/N
Triangle (barttlett) 0 25 6.1𝜋/N
Cosinus (HAN) 0.055 44 6.2𝜋/N
Kaiser 𝛽=5.06 0.009 60 7.2𝜋/N
Tableau I.1 : performances de quelques fenêtres.[4]
I.9.1.3.Calcul des coefficients par développement en série de Fourier pour des
spécifications en fréquence
Les spécifications en fréquence correspondent a la donnée d’un gabarit. Pour un filtre passe-bas
on impose par exemple a la valeur absolue de la fonction de transfert d’approcher la valeur 1
𝑓
avec la précision 𝜑1 , dans la bande (𝑓2 , 2𝑒), dite bande affaiblie. Le gabarit correspondant est

représenté sur la figure I.2. L’intervalle ∆𝑓 = 𝑓2 − 𝑓1 est appelé bande de transition et la raideur
de coupure désigne le paramètre 𝑅𝐶 tel que :
𝑓 +𝑓
𝑅𝑐 = 2(𝑓1 −𝑓2 ) (I.19)
2 1

Figure I.2 : gabarit de filtre passe-bas [1]

7
Chapitre I théorie relative du traitement numérique du signal

Une méthode très simple pour obtenir les coefficients ℎ𝑖 consiste à développer en série de
Fourier la fonction périodique H(f) à approcher ; il vient alors :
1 𝑓𝑒 −𝑗2𝜋𝑖
𝑓
𝑓𝑒 𝑑𝑓
ℎ𝑖 = ∫ 𝐻(𝑓)𝑒
𝑓𝑒 0
Dans le cas du filtre passe-bas correspondant au gabarit de la figure I.2, la relation suivant :
𝜏
1 𝜏⁄ −𝑗2𝜋𝑛𝑡⁄ 𝛼𝜏 sin(𝜋𝑛𝑇)
𝐶𝑛 = 2 𝛼𝑒 𝑇 𝑑𝑡 =
𝑇
∫−𝜏 ⁄2 𝑇 𝜋𝑛
𝜏 (I.20)
𝑇

Conduit à :
𝑓1 +𝑓2
𝑓1 +𝑓2 sin 𝜋𝑖 𝑓𝑒
ℎ𝑖 = 𝑓 . 𝑓1 +𝑓2 (I.21)
𝑒 𝜋𝑖
𝑓𝑒

Pour que le filtre soit réalisable il faut limiter à N le nombre de coefficients. Cette opération
revient à multiplier la réponse impulsionnelle h(t) par une fenêtre temporelle g(t) telle que :
−𝑁𝑇 𝑁𝑇
𝑔(𝑡) = 1 𝑝𝑜𝑢𝑟 ≤𝑡≤
2 2
𝑔(𝑡) = 0 𝑎𝑖𝑙𝑙𝑒𝑢𝑟𝑠.
La transformée de Fourier de cette fonction s’écrit en appliquant :
sin(𝜋𝑓𝑛𝑇)
G(f)=NT (I.22)
𝜋𝑓𝑁𝑇

La figure I.3 montre ces fonctions.


Le filtre réel, à nombre limité N de coefficients, a pour fonction de transfert 𝐻𝑅 (𝑓), le produit de
convolution suivant :

𝐻𝑅 (𝑓) = ∫ 𝐻(𝑓 ′ )𝐺(𝑓 − 𝑓 ′ )𝑑𝑓′
−∞

La limitation de nombre de coefficients introduit des ondulations et limite la raideur de coupure


du filtre comme le montre la figure I.4, qui correspond au cas où le filtre à réaliser est un passe-
bas idéal de fréquence de coupure 𝑓𝑐 .

Figure I.3: fenêtre rectangulaire [1] figure I.4 : incidence de la limitation


du nombre de coefficient [1]

8
Chapitre I théorie relative du traitement numérique du signal

Les ondulations dépendent de celles de la fonction G(f) et, pour les réduire, if suffit de choisir
comme fenêtre temporelle une fonction dont le spectre présente moins d’ondulation qui celui de
la fenêtre rectangulaire ci-dessus. Par exemple la fenêtre de hamming définie comme suit :
𝑔(𝑡) = 0.54 + 0.46cos(2𝜋𝑡/𝑁𝑇) 𝑝𝑜𝑢𝑟 ǀ𝑡ǀ ≤ 𝑁𝑇/2
𝑔(𝑡) = 0 𝑝𝑜𝑢𝑟 ǀ𝑡ǀ > 𝑁𝑇/2
La contrepartie de la réduction des ondulations en bandes passante et affaiblie est un
élargissement de la bande de transition.
Elle est périodique et sa transformée de Fourier inverse est constituée d’un ensemble de K+1
valeurs discrètes non nulles, utilisées pour pondérer les coefficients du développement en série
de Fourier de la fonction de filtrage à approcher. [1]

I.9.2.Les filtres à réponse impulsionnelle finie (RII)


I.9.2.1.Expressions générales pour les caractéristiques
Le filtre RII général est un système qui, à la suite de données x(n) fait correspondre la suite y(n)
telle que :
𝑦(𝑛) = ∑𝐿𝑙=0 𝑎𝑖 𝑥(𝑛 − 𝑙) − ∑𝐾
𝑘=1 𝑏𝑘 𝑦(𝑛 − 𝑘) (I.23)
La fonction de transfert en Z de ce système s’écrit :
∑𝐿 𝑎𝑙 𝑍 −𝑙
𝐻(𝑧) = 1+∑𝑙=0
𝐾 −𝐾
(I.24)
𝑘=1 𝑏𝑘 𝑍

C’est le quotient de deux polynômes en Z, qui sont souvent de même degré. Les coefficients 𝑎𝑙
et 𝑏𝑘 étant des nombres réels, H(z) est un nombre complexe tel que :

𝐻(𝑍) = 𝐻(𝑍)
La réponse en fréquence du filtre s’écrit :
H(𝜔)=ǀ𝐻(𝜔)ǀ𝑒 −𝑗𝜑(𝜔)
Le module et la phase s’expriment à partir de H (Z) par l’expression suivants :
|𝐻(𝜔)|2=|𝐻(𝑍)𝐻(𝑍 −1 )|𝑍=𝑒 𝑗𝜔 (I.25)
Par élévation de H(𝜔) au carré et en utilisant (I.25) , il vient :
1 𝐻(𝑍)
𝜑(𝜔) = 2𝑗 ln[𝐻(𝑍 −1 )]𝑍=𝑒 𝑗𝜔 (I.26)

En dérivant la fonction 𝜑(𝑍) par rapport à la variable complexe Z, on obtient :


𝑑𝜑 1 𝐻 ′ (𝑍) 1 𝐻 ′ (𝑍 −1 )
=− [ + ]
𝑑𝑍 2𝑗 𝐻(𝑍) 𝑍 2 𝐻(𝑍 −1 )
Pour Z=𝑒 𝑗𝜔 il vient :
𝑑𝜑 1 𝑑
= − 𝑅𝑒 [𝑍 ln(𝐻(𝑍))]
𝑑𝑍 𝑗𝑍 𝑑𝑍

9
Chapitre I théorie relative du traitement numérique du signal

Les équations (I.25) et (I.26) constituent des expressions concises pour le calcul des principales
caractéristiques des filtres RII d’ordre quelconque.[1]
I.9.2.2.Calcul direct des coefficients par les fonctions modèles
Une méthode directe pour calculer les coefficients d’un filtre RII consiste à faire appel à une
fonction modèle, qui est une fonction réelle définie sur l’axe des fréquences.
Les fonctions modèles considérées sont des fonctions connues pour leurs propriétés de
sélectivité, les fonctions de Butterworth, Bessel, Tchebycheff et les fonctions elliptiques. Elles
sont également utilisées pour le calcul des filtres analogiques. Elles constituent un modèle pour
le carré de la fonction de transfert à obtenir. Cependant un obstacle apparait pour leur utilisation
au calcul de filtres numérique car elles ne sont pas périodiques alors que la fonction à obtenir a la
période 𝑓𝑒 . Il faut donc établir une correspondance entre l’axe réel et l’intervalle [0,𝑓𝑒 ]. Une telle
correspondance est fournie par une transformation conforme dans le plan complexe qui doit
posséder les propriétés suivantes :
- Transformer l’axe imaginaire en le cercle unité.
- Transformer une fraction rationnelle de la variable complexe s en une fraction rationnelle
de la variable complexe Z.
- Conserver la stabilité.
Une première approche consiste à chercher à conserver pour le filtre numérique la réponse
impulsionnelle du filtre analogique.[1]

I.10.Conversion analogique numérique.


I.10.1.Principe de la conversion analogique numérique.
I.10.1.1.Définition :
Un convertisseur analogique – numérique (CAN) est un dispositif électronique permettant la
conversion d’un signal analogique en un signal numérique. Cette première définition pour être
complète en appelle deux autres, celles des signaux analogiques et numériques :
Signal analogique : signal continu en temps et en amplitude.
Signal numérique : signal échantillonné et quantifié, discret en temps et en amplitude.
Conceptuellement, la conversion analogique – numérique peut être divisée en trois étapes :
l’échantillonnage temporel, la quantification et le codage.
La figure I.5 présente successivement ces trois étapes pour un CAN dont la sortie du signal
numérique est sur 3 bits :

10
Chapitre I théorie relative du traitement numérique du signal

Figure I.5 – a) signal analogique b) signal échantillonné c)puis quantifié.[5]

Un signal analogique, 𝑉𝑎 (t) continu en temps et en amplitude a) est échantillonné à une période
d’échantillonnage constante 𝑇𝑒𝑐ℎ . On obtient alors un signal échantillonné 𝑉𝑒𝑐ℎ (k.𝑇𝑒𝑐ℎ ) discret en
temps et continu en amplitude b). Ce dernier est ensuite quantifié, on obtient alors un signal
numérique 𝑉𝑞 [k] discret en temps et en amplitude c). La quantification est liée à la résolution du
CAN (son nombre de bits) ; dans l’exemple précédent 𝑉𝑞 [k] peut prendre huit amplitudes
différentes (soit 23 , 3 étant le nombre de bits du CAN). La figure I.5 présente également le code
numérique sur trois bits (en code binaire naturel) associé à 𝑉𝑞 [k] en fonction du temps. [5]
La figure I.6 présente le symbole d’un CAN à N bits

Figure I.6 – Convertisseur analogique numérique. [5]


I.10.1.2.Aspects temporels et fréquentiels de l’échantillonnage.
L’obtention d’un signal échantillonné 𝑥𝑒𝑐ℎ (k.𝑇𝑒𝑐ℎ ) à partir d’un signal analogique x(t) peut être
modélisée mathématiquement dans le domaine temporel par la multiplication de x(t) par un
peigne de Dirac de période 𝑇𝑒𝑐ℎ (noté 𝛿𝑇𝑒𝑐ℎ (t)):
xech (k, Tech ) = x(t). δTech (t) = x(t) ∑k δ(t − k Tech ) (I.27)
L’échantillonnage est illustré graphiquement dans le domaine temporel aux points (a), (b) et (c)
de la figure I.7.

11
Chapitre I théorie relative du traitement numérique du signal

Figure I.7 – Echantillonnage d’un signal analogique.[5]


L’échantillonnage peut également être décris graphiquement dans le domaine fréquentiel. Au
signal analogique x(t), est associé dans le domaine fréquentiel le spectre X(f) voir Fig. I.7.d,
s’étendant sur une bande de fréquence de – 𝑓𝑚𝑎𝑥 . à 𝑓𝑚𝑎𝑥 .
Une approche graphique dans le domaine spectrale permet d’illustrer la récupération de
l’information contenue dans un signal échantillonné par un filtrage passe bas (Figure I.8). En
supposant un filtrage passe bas parfait (un tel filtre est impossible à réaliser) sur la bande de
fréquence de –𝑓𝑒𝑐ℎ /2 à 𝑓𝑒𝑐ℎ //2 (appelée bande de Nyquist, la fréquence 𝑓𝑒𝑐ℎ //2 étant appelée
fréquence de Nyquist), on retrouve le spectre X(f) et donc le signal temporel qui y correspond
x(t). [5]

Figure I.8 – Récupération de l’information par filtrage passe bas.[5]


I.11.Conversion numérique analogique.
La figure I.9 donne le symbole d’un convertisseur numérique analogique à N bits ; il peut être
suivi, ou non, d’un filtre de lissage (passe bas).

Figure I.9 Conversion numérique analogique.[5]

12
Chapitre I théorie relative du traitement numérique du signal

Chacun des 2𝑁 mots binaires pouvant être appliqué en entrée est associé à une tension analogique
de sortie 𝑉𝑠𝑎 (t) telle que :
𝑉
𝑉𝑠𝑎 =(𝑏1 . 2𝑁−1+𝑏2 . 2𝑁−2 +…..+𝑏𝑁−1 . 21 +𝑏𝑁 . 20 ).2𝑁𝑃𝐸 (I.28)
−1
En prenant 𝑏1 comme MSB.
La figure I.10 présente la caractéristique de transfert idéale pour une entrée sur 3 bits.

Figure I.10 Caractéristique de transfert idéale d’un CNA 3 bits.[5]

On définit le LSB, ou quantum, comme étant la plus petite variation possible de la tension de
sortie (Figure I.10) correspondant à un changement du bit de poids faible :
𝑉 𝑉
LSB=2𝑁𝑃𝐸 = 𝑟𝑒𝑓 (I.29)
−1 2𝑁
La figure I.11 illustre la conversion N/A d’une série de mots binaires a) pour N = 3.

Figure I.11 – Exemple de conversion pour un CNA 3 bits.[5]

La sortie analogique b) 𝑉𝑠𝑎 (t), est quantifiée. On ajoute parfois en sortie du CNA un filtre
analogique passe-bas ou filtre de lissage c). [5]

I.12.Conclusion
Dans ce chapitre, nous avons présenté les théorèmes principales du traitement numérique du
signal qui nous avons utilisée dans notre projet.

13
Chapitre II
Hardware et software
Chapitre II hardware et software

II.1.Hardware
II.1.1.Introduction
Les processeurs de traitement du signal, ou DSP en anglais pour Digital Signal Processor, ont fait
leur apparition dans le domaine industriel et audionumérique professionnel depuis les années 80
(pour les premiers). Leur utilisation pour un usage domestique n’est vraiment survenue que vers le
milieu des années 90.

Bien que son nom sous-entende un système numérique complet, cette technologie et les composants
l’entourant couvrent un panel de disciplines plutôt vaste :

 électronique analogique
 électronique numérique
 microprocesseur
 informatique
 mathématiques du signal [6]

Le kit de démarrage cypress FM4 fournit une solution économique pour démarrer rapidement le
développement d'un microcontrôleur ARM® Cortex®-M4. La carte comporte des périphériques
pour démontrer les caractéristiques du microcontrôleur FM4 S6E2CCA. [12]
II.1.2.Processeurs de traitement du signal (DSP) :
II.1.2.1.Définition du DSP
Un DSP (de l'anglais « Digital Signal Processor », qu'on pourrait traduire par « processeur de signal
numérique » ou « traitement numérique de signal ») est un microprocesseur optimisé pour exécuter
des applications de traitement numérique du signal (filtrage, extraction de signaux, etc.) le plus
rapidement possible. [7]
II.1.2.2.Traitement numérique du signal
Le traitement numérique du signal implique la réalisation de nombreuses opérations mathématiques.
En comparaison, un logiciel de traitement de texte ou une base de données va plutôt passer son
temps à manipuler des données en mémoire. Cela implique que des ordinateurs conçus pour la
bureautique ou d'autres applications générales ne sont pas optimisés pour exécuter des algorithmes
de traitement du signal, comme le filtrage numérique ou la réalisation d'une analyse de Fourier.
En ce qui concerne les filtres, les DSP en simplifient grandement la réalisation pour plusieurs
raisons :
 Résultat prédictible et hautement répétable (caractéristique des circuits numériques, par
opposition aux circuits analogiques) ;
 Nombre de composants externes réduit ;
 Changement de filtre dynamique par simple programmation ;
 Filtrage à phase linéaire. [7]
II.1.2.3. Adressage bit inverse
Les DSP supportent un dernier mode d'adressage : l'adressage bit-reverse. Ce mode d'adressage sert
à accélérer les calculs de transformées de Fourier rapides. Ces calculs de transformée de Fourier
étant courants en traitement de signal, un mode d'adressage spécial lui est réservé.
Cet algorithme a la fâcheuse tendance à produire ses résultats dans un ordre différent des données
de départ. En gros, cet algorithme va prendre des données, stockées dans un tableau, et va fournir
des résultats, eux aussi écrits dans un tableau. L'ordre de calcul des résultats dans le tableau

14
Chapitre II hardware et software

d'arrivée suit une logique particulière. Les bits de l'adresse du résultat sont partiellement inversés
comparé aux bits de l'adresse normale.
Par exemple, pour un tableau de 8 cases, numérotées 0,1, 2, 3, 4, 5, 6, 7, les données arrivent dans
cet ordre : 0, 4, 2, 6, 1, 5, 3, 7

Figure II.1 : Le bit inverse : à gauche l'ordre naturel et à droite les données
Réarranger dans l'ordre du bit inverse [7]
Les DSPs disposent donc d'un mode d’adressage qui inverse tout ou partie des bits d'une adresse
mémoire, afin de gérer plus facilement les calculs de FFT. Une autre technique consiste à calculer
nos adresses différemment. Lors de l'ajout d'un indice à notre adresse, la direction de propagation de
la retenue de l'addition est inversée. Certains DSP disposent d'instructions pour faire de genre de
calculs. [7]
II.1.2.4.Architecture DSP
II.1.2.4.1.Von Neumann
Le processeur, via le compteur de programme, sait à tout instant où il se trouve dans le programme
et sait donc ce qu’il doit exécuter ensuite. Ceci étant, il faut donc aller chercher les données en
mémoire programme avec tout ce que cela implique (adressage, lecture…).
L’architecture de Von Neumann a la particularité de ne posséder qu’une seule mémoire dans
laquelle sont stockées instructions et données. Il faut donc partager le bus de données venant de
cette mémoire. Cette structure est souvent utilisée pour les microcontrôleurs et microprocesseurs car
elle est très simple à manier pour le programmeur. Ainsi, c’est celle qui est utilisée dans la famille
des microprocesseurs Motorola 68XXX et Intel 80X86. [1]

Figure II.2 : architecture Von Neumann. [6]

II.1.2.4.2.Harvard
Ce nom est très bien porté par cette architecture puisqu’elle a été conçue outre-Atlantique vers 1930
dans l’Université de Harvard.

15
Chapitre II hardware et software

Figure II.3 : architecture Harvard [6]


On voit tout de suite la différence : les mémoires sont séparées. Cette séparation apporte deux
avantages majeurs : les adressages et le transit des données sont plus simples et il est possible de
placer des données dans la mémoire programme pour les algorithmes complexes.
Cette structure est utilisée pour les microprocesseurs spécialisés et pour des applications en temps
réel. C’est donc le cas pour les DSP, hors DSP « low cost », sachant que l’architecture de Harvard
est plus coûteuse à réaliser. Cependant, pour réduire les frais de production, certains DSP ont la
particularité de ne posséder qu’un seul bus de données et d’adresses à l’extérieur, l’intérieur n’étant
pas modifié.[6]
II.1.2.4.3.Pipelines
Il s’agit plus d’une méthode que d’une spécificité physique. La méthode du pipeline impose une
cadence dans l’exécution des instructions en les divisant en quatre opérations élémentaires,
optimisant ainsi la rapidité d’exécution générale. Ces quatre opérations élémentaires sont :
•Fetch : Extraire l’instruction de la mémoire programme ;
•Decode : Décoder l’instruction et les adresses des opérandes ;
•Read : Lire les opérandes en mémoire de données ;
•Execute : Exécuter l’opération et écrire le résultat.
Chacune de ces tâches prend toujours la même durée ce qui autorise leur exécution en parallèle via
l’ajout d’un registre temporaire. Voici un tableau illustrant ce système, on y voit clairement
l’optimisation.[6]

Tableau II.1 : l’architecture pipelines [6]


II.1.2.5.Les différents DSP :
II.1.2.5.1.A virgule fixe
Dans ce cas, les données sont représentées comme des fractions d’entiers qui sont, par exemple,
comprises entre -1.0 et 1.0, ou comme des entiers simples. L’avantage de la fraction est de
permettre une addition binaire simple des nombres positifs et négatifs (via un complément à 2).
Contrairement aux apparences, un DSP à virgule fixe est plus complexe à programmer qu’un DSP à
virgule flottante. Si on prend comme exemple le TMS230C25 de Texas Instrument, les nombres
sont codés sur 16 bits mais les calculs sont effectués avec une précision de 32 bits, les 16 bits les
moins significatifs étant perdus. Ainsi, le calcul étant sur 32 bits, on évite des erreurs cumulatives.
Et même si les registres (32 bits) sont pleins, on peut toujours stocker les données en RAM (16 bits)
via deux variables : 16 bits de poids faible + 16 bits de poids fort.
Il faut savoir que certains DSP 16 bits à virgule fixe ne possèdent pas de registre 32 bits. Dans ce
cas, la précision est moindre. Et si on doit effectuer un calcul précis, il faudra séparer les parties du
calcul en 16 bits et donc effectuer plus de calcul successif, au détriment du temps. Ce qui nécessite

16
Chapitre II hardware et software

un peu d’astuce et des concepteurs minutieux pour prévoir à l’avance la précision voulue et
optimiser les calculs. [6]
II.1.2.5.2.A virgule flottante
Ces DSP sont bien plus commodes pour les développeurs. Les données sont représentées avec une
mantisse et un exposant selon la formule : n = mantisse*2exposant. On utilise souvent une mantisse
fractionnaire comprise entre -1.0 et 1.0. L’exposant indique la place de la virgule en base 2.
Mais le DSP sait aussi manipuler des entiers, donc avec une précision de 32 bits. Ainsi, cette grande
plage permet de développer sans vraiment trop se préoccuper de la précision. C’est surtout le prix
qui limitera le développement (nombre de broches plus important, surface de silicium du cœur
doublée…).[6]
II.1.2.6.Les avantages du DSP
Après avoir dit un peu de mal de ces bêtes du traitement numérique, nous allons voir ce qui fait leur
force.
•Leur précision : Effectivement, alors que des composants analogiques ont une précision donnée par
le constructeur et s’élevant généralement à quelques pourcents, le DSP aura toute la même précision
et il sera possible de reproduire un dispositif à de nombreux exemplaires sans devoir recourir à un
quelconque étalonnage.
•La constance : Si en numérique le signal est toujours traité de la même façon indépendamment du
vieillissement, de la température… il n’en est pas du tout de même pour un système analogique. Il y
aura donc un équilibre à prendre en compte entre le temps pour calculer ces paramètres en
analogique et le temps pour développer le programme du DSP.
•Algorithme adaptive : C’est bien le plus gros avantage du DSP. Il est possible de choisir
exactement l’algorithme de traitement parfaitement adapté au système. Et dans certains cas, ce
traitement dépend du signal traité, ce qui est généralement très complexe sinon impossible en
analogique. L’algorithme pourra aussi être mis à jour par la suite sans modification matérielle.
•Programmation simple : Les outils de développement pour DSP sont généralement souples du
point de vue du langage de programmation (assembleur, C) mais restent limités à un langage
impératif. [6]
II.1.2.7.Caractéristiques du DSP
Un DSP est un processeur dont l'architecture est optimisée pour effectuer des calculs complexes en
un cycle d'horloge, mais aussi pour accéder très facilement à un grand nombre d'entrées-sorties
(numériques ou analogiques).
Il possède aussi quelques caractéristiques assez spécialisées :
 Seulement des processus parallèles, pas de multitâche. Des contraintes sont imposées car les
DSP n'ont qu'une gestion rudimentaire des interruptions quand ils en ont une.
 La possibilité d'être utilisé comme un périphérique accédant directement à la mémoire dans
un environnement hôte.
 Peut acquérir les données numériques d'un convertisseur analogique-numérique (CAN ou
ADC), appliquer un traitement à ces données et les restituer au monde extérieur grâce à un
convertisseur numérique-analogique (CNA ou DAC).
 Pas de mémoire virtuelle, pour diminuer les couts de fabrication et la latence des accès
mémoires

17
Chapitre II hardware et software

Figure II.4 : schéma de principe d'un DSP [7]


Les DSP peuvent être combinés avec d'autres composants dans le même boîtier. Par exemple, un ou
plusieurs DSP peuvent être combinés avec un microprocesseur classique et des convertisseurs ADC
et DAC. Ce type d'assemblage (circuits intégrés dédiés) permet de réduire les coûts dans des
fabrications de grande série. Les fonctions de traitement de signal peuvent également être réalisées
à l'aide de FPGA, qui peuvent incorporer des « cœurs DSP » (en général des MAC). La
reconfiguration matérielle permet alors d'accroître le parallélisme des opérations. Les différents
types d'architecture disponibles permettent d'adapter les circuits de traitement aux besoins
spécifiques de l'application. [7]
II.1.3.Architecture ARM
Les architectures ARM sont des architectures externes de type RISC 32 bits (ARMv1 à ARMv7) et
64 bits (ARMv8) développées par ARM Ltd depuis 1990 et introduites à partir de 1983 par Acorn
Computers.
Dotés d'une architecture relativement plus simple que d'autres familles de processeurs, et
bénéficiant d'une faible consommation électrique, les processeurs ARM sont devenus dominants
dans le domaine de l'informatique embarquée, en particulier la téléphonie mobile et les tablettes.
Ces processeurs sont fabriqués sous licence par un grand nombre de constructeurs. [8]
II.1.3.1.SOC ARM
Aujourd'hui, ARM est surtout connue pour ses systèmes sur puce (SOC), intégrant sur une seule
puce : microprocesseur, processeur graphique (GPU), DSP, FPU, SIMD, et contrôleur de
périphériques. Ceux-ci sont présents dans la majorité des smartphones et tablettes. ARM propose
des architectures, qui sont vendues sous licence de propriété intellectuelle aux concepteurs. Ils
proposent différentes options dans lesquelles les constructeurs peuvent prendre ce qui les intéresse
pour compléter avec leurs options propres ou de concepteurs tiers. ARM propose ainsi pour les
SOC les plus récents, les microprocesseurs Cortex (Cortex-A pour les dispositifs portables
(smartphones et tablettes), Cortex-M pour le couplage à un microcontrôleur, Cortex-R pour les
microprocesseurs temps réel), des processeurs graphiques, des bus AMBA sous licence libre, ainsi
que les divers autres composants nécessaires à la composition du SOC complet. [8]
II.1.3.2.Technologies des processeurs
Les processeurs qui suivent utilisent les technologies indiquées plus bas :
 MMU (memory management unit) : gestionnaire de mémoire permettant d'avoir une sécurité
accrue (uniquement présente sur l'ARM710 et les ARM9). La MMU permet l'adressage
virtuel de la mémoire, elle est nécessaire pour faire fonctionner certains systèmes
d'exploitation comme Windows CE ou la plupart des Linux3.
 MPU (memory protection unit) : protection de la mémoire, faisant partie du MMU, donc
protection simplifiée.

18
Chapitre II hardware et software

 DSP : composant électronique optimisé pour l'analyse numérique. Son application principale
est le traitement du signal numérique (filtrage, encodage/décodage, extraction de signaux,
etc.).
 FPU : unité de calcul sur les nombres flottants.[8]
II.1.3.3.ARM Cortex-M
ARM Cortex-M est une famille de processeur RISC 32-bits d'architecture ARM servant à la fois de
microprocesseur et de microcontrôleur à destination de l'embarqué. Elle implémente d'abord le jeu
d'instructions ARMv6-M (Cortex-M0, Cortex-M0+ et Cortex-M1) puis le ARMv7-M (Cortex-M3,
Cortex-M4 et Cortex-M7). Cette famille a été développé par ARM Ltd en parallèle à la famille
Cortex-A (ARMv7-A) destinée au marché des Smartphones et tablettes tactiles et à la famille
Cortex-R (ARMv7-R) destinée au temps réel. [9]

II.1.3.4.Architecture ARM cortex M4


Le processeur Arm Cortex-M4 est le processeur embarqué haute performance de Arm.
Le processeur Cortex-M4 est conçu pour répondre aux besoins des marchés du contrôle de signaux
numériques qui exigent un mélange efficace de commandes et de traitement du signal. La
combinaison de la fonctionnalité de traitement du signal à haute efficacité avec les avantages de
faible puissance, faible coût et facilité d'utilisation de la famille de processeurs Cortex-M est conçue
pour satisfaire la catégorie émergente de solutions flexibles ciblant spécifiquement le contrôle
moteur, automobile, la gestion de l'énergie, l'audio embarqué et les marchés de l'automatisation
industrielle. [10]
II.1.4.Cortex Microcontrôleur Software Interface Standard (CMSIS)
II.1.4.1.Définition :
Le standard d'interface logicielle de microcontrôleur Cortex (CMSIS) est une couche d'abstraction
matérielle indépendante du fournisseur pour la série de processeurs Cortex®-M et définit des
interfaces d'outils génériques. Le CMSIS permet une prise en charge cohérente des périphériques et
des interfaces logicielles simples pour le processeur et les périphériques, simplifiant la réutilisation
des logiciels, réduisant la courbe d'apprentissage pour les développeurs de microcontrôleurs et
réduisant les délais de mise sur le marché des nouveaux périphériques.
Le CMSIS est défini en étroite collaboration avec divers fournisseurs de logiciels et de logiciels et
offre une approche commune pour l'interface avec les périphériques, les systèmes d'exploitation en
temps réel et les composants middleware. Le CMSIS est destiné à permettre la combinaison de
composants logiciels provenant de plusieurs fournisseurs de middleware. [11]
II.1.4.2.Les avantages de CMSIS :
les avantages du CMSIS sont:
 Dans l'ensemble, le système CMSIS réduit la courbe d'apprentissage, les coûts de
développement et le délai de mise sur le marché. Les développeurs peuvent écrire des
logiciels plus rapidement grâce à une variété d'interfaces logicielles standardisées faciles à
utiliser.
 Des interfaces logicielles cohérentes améliorent la portabilité et la réutilisabilité du logiciel.
Les bibliothèques de logiciels génériques et les interfaces fournissent un cadre logiciel
cohérent
 Fournit des interfaces pour la connectivité de débogage, le débogage des vues périphériques,
la fourniture de logiciels et la prise en charge des périphériques afin de réduire les délais de
mise sur le marché pour le déploiement de nouveaux microcontrôleurs.

19
Chapitre II hardware et software

 Fournit une couche indépendante du compilateur qui permet d'utiliser différents


compilateurs. CMSIS est pris en charge par les compilateurs traditionnels.
 Améliore le débogage du programme avec des informations sur les débogueurs et les canaux
ITM pour la sortie de type printf et la connaissance du noyau RTOS.
 CMSIS est livré au format CMSIS-Pack, ce qui permet une livraison rapide des logiciels,
simplifie les mises à jour et permet une intégration cohérente dans les outils de
développement.
 CMSIS-Zone simplifiera les ressources système et le partitionnement car il gère la
configuration de plusieurs processeurs, zones de mémoire et périphériques. [11]
II.1.4.3.Les composants de CMSIS :
Les composants CMSIS sont:
 CMSIS-Core (Cortex-M): pour le cœur et les périphériques du processeur Cortex-M. Il
fournit une interface normalisée pour Cortex-M0, Cortex-M0 +, Cortex-M3, Cortex-M4,
Cortex-M7, Cortex-M23, Cortex-M33, SC000 et SC300. Sont également incluses les
fonctions intrinsèques SIMD pour les instructions SIMD Cortex-M4, Cortex-M7 et Cortex-
M33.
 CMSIS-Core (Cortex-A): système d'exécution de base pour le cœur et les périphériques du
processeur Cortex-A5 / A7 / A9
 CMSIS-Driver : définit des interfaces de pilote de périphérique génériques pour le
middleware, ce qui le rend réutilisable sur les périphériques pris en charge. est indépendante
de RTOS et connecte les périphériques du microcontrôleur avec le middleware qui
implémente par exemple des piles de communication, des systèmes de fichiers ou des
interfaces utilisateur graphiques.
 CMSIS-DSP : Collection de bibliothèque DSP avec plus de 60 fonctions pour différents
types de données: point fixe (fractionnaire q7, q15, q31) et virgule flottante simple précision
(32 bits). La bibliothèque est disponible pour tous les cœurs Cortex-M. Les implémentations
optimisées pour le jeu d'instructions SIMD sont disponibles pour Cortex-M4, Cortex-M7 et
Cortex-M33.
 CMSIS-RTOS v1 : pour les systèmes d'exploitation temps réel avec implémentation de
référence basée sur RTX. Il fournit une interface de programmation normalisée qui est
portable pour de nombreux RTOS et permet aux composants logiciels qui peuvent
fonctionner sur plusieurs systèmes RTOS
 CMSIS-RTOS v2: étend CMSIS-RTOS v1 avec la prise en charge de l'architecture
ARMv8-M, la création d'objets dynamiques, les dispositions pour les systèmes multi cœurs
et l'interface compatible binaire entre les compilateurs compatibles ABI.
 CMSIS-Pack: décrit avec un fichier de description de paquetage (PDSC) les parties
pertinentes d'un ensemble de fichiers (appelé pack logiciel) comprenant des fichiers source,
en-tête et bibliothèque, de la documentation, des algorithmes de programmation Flash, des
modèles de code source et des exemples de projets. Les outils de développement et les
infrastructures Web utilisent le fichier PDSC pour extraire les paramètres de l'appareil, les
composants logiciels et les configurations de la carte d'évaluation.
 CMSIS-SVD : System View Description pour les périphériques. Décrit les périphériques
d'un périphérique dans un fichier XML et peut être utilisé pour créer une reconnaissance
périphérique dans les débogueurs ou les fichiers d'en-tête avec des définitions de registre et
d'interruption de périphérique
 CMSIS-DAP : Déboguer le port d'accès. Micro logiciel standardisé pour une unité de
débogage qui se connecte au port d'accès au débogage CoreSight. CMSIS-DAP est distribué

20
Chapitre II hardware et software

en tant que paquet séparé et est bien adapté pour l'intégration sur les cartes d'évaluation. Ce
composant est fourni en téléchargement séparé.
 CMSIS-Zone: Définition et partitionnement des ressources système. Définit des méthodes
pour décrire les ressources système et pour partitionner ces ressources en plusieurs projets et
zones d'exécution. [11]

Figure II.5 : Structure CMSIS [11]

II.1. 5.la carte cypress FM4-176L-S6E2CC-ETH

Figure II.6 :la carte cypress FM4-176L-S6E2CC-ETH [12]

II.1. 5.1.Caractéristique globale


 CPU 200MHz Arm® Cortex® avec DMA
 Cypress FM4 Famille S6E2CCA MCU
 675 MCM CoreMark®
 Unité à virgule flottante conforme à la norme IEEE 754
 Flash de 2 Mo, SRAM de 256 Ko et 190 GPIO.
 Interfaces de communication: Ethernet 10/100 (IEEE 802.3), hôte USB, périphérique USB,
CAN, LIN, Quad SPI haute vitesse, I2S, I2C et UART.
 Adaptateur CMSIS-DAP JTAG
 Ethernet RJ45 (IEEE802.3)
 Interface de périphérique USB
 Mémoire Flash Quad SPI 32Mbit

21
Chapitre II hardware et software

 Mémoire PSRAM externe de 16 Mo


 Codec stéréo
 Contrôleur vocal
 LED RVB
 Capteur d'accélération
 Phototransistor
 Bouton Utilisateur
 Interface compatible Arduino
 Interface JTAG à 10 broches [12]

II.1. 5.2.le codec de la carte


Le WM8731 sont de faible puissance CODEC stéréo avec un pilote de casque intégré. Le WM8731
est conçu spécifiquement pour l'audio MP3 portable et les lecteurs de discours et les enregistreurs.
Le WM8731 est aussi idéal pour les machines MD, CD-RW et les enregistreurs DAT.
Les entrées audio de niveau ligne stéréo et mono microphone sont fourni, avec une fonction de
sourdine, une ligne programmable contrôle du volume de niveau et une sortie de tension de
polarisation appropriée pour un microphone de type électret.
Les CAN et DAC sigma-delta multi-bits stéréo 24 bits sont utilisés avec des filtres d'interpolation
numérique et de décimation à suréchantillonnage. Les longueurs de mots d'entrée audio numériques
de 16 à 32 bits et les fréquences d'échantillonnage de 8 kHz à 96 kHz sont prises en charge.[13]

II.1. 5.3.le bus I2C


II.1. 5.3.1.Définition
I2C est un protocole série pour l'interface bifilaire permettant de connecter des périphériques basses
vitesses tels que des microcontrôleurs, des EEPROM, des convertisseurs A / N et N / A, des
interfaces E / S et d'autres périphériques similaires dans les systèmes embarqués. Il a été inventé par
Philips et maintenant il est utilisé par presque tous les principaux fabricants de circuits intégrés.
Chaque périphérique esclave I2C a besoin d'une adresse - ils doivent toujours être obtenus auprès de
NXP (anciennement Philips semi-conducteurs).
Chaque périphérique esclave a une adresse unique. Le transfert depuis et vers le périphérique maître
est en série et il est divisé en paquets de 8 bits. Toutes ces exigences simples rendent très simple
l'implémentation de l'interface I2C même avec des microcontrôleurs bon marché qui n'ont pas de
contrôleur matériel I2C spécial. Vous n'avez besoin que de 2 broches d'E / S gratuites et de
quelques routines i2C simples pour envoyer et recevoir des commandes. [14]

Figure II.7 : le bus I2C [14]


II.1. 5.3.2.Interface I2C :

22
Chapitre II hardware et software

I2C n'utilise que deux fils: SCL (horloge série) et SDA (données série). Les deux doivent être tirés
avec une résistance a + Vdd. Il y a aussi des shifters de niveau I2C qui peuvent être utilisés pour se
connecter à deux bus I2C avec des tensions différentes. [14]
II.1. 5.3.3.Protocole I2C :
En état normal, les deux lignes (SCL et SDA) sont hautes. La communication est initiée par le
périphérique maître. Il génère la condition de démarrage (S) suivie de l'adresse de l'équipement
esclave (B1). Si le bit 0 de l'octet d'adresse a été mis à 0, le dispositif maître écrira sur le dispositif
esclave (B2). Sinon, l'octet suivant sera lu sur l'appareil esclave. Une fois que tous les octets ont été
lus ou écrits (Bn), le dispositif maître génère la condition d'arrêt (P). Ceci signale aux autres
appareils sur le bus que la communication est terminée et qu'un autre appareil peut utiliser le bus.
La plupart des appareils I2C prennent en charge des conditions de démarrage répétées. Cela signifie
qu'avant que la communication ne se termine par une condition d'arrêt, le dispositif maître peut
répéter la condition de démarrage avec l'octet d'adresse et changer le mode d'écriture en lecture.
[14]

Figure II.8 : protocole I2C [14]

II.1. 5.4.le bus I2s


II.1. 5.4.1.Définition
Le bus I2S est un bus série populaire pour l'interfaçage avec des puces audio telles que des codecs.
I2S est une interface de données simple, sans aucune forme d'adresse ou de sélection d'appareil. Sur
un bus I2S, il n'y a qu'un seul maître bus et un seul émetteur. Le maître peut être un émetteur, un
récepteur ou un contrôleur pour les transferts de données entre d'autres dispositifs agissant comme
émetteur et récepteur. Dans les applications audio de haute qualité impliquant un codec, le codec est
généralement le maître de sorte qu'il a un contrôle précis sur l'horloge du bus I2S.[15]
II.1. 5.4.2.L'interface audio I2S :
L'interface audio I2S fournit une interface série synchrone bidirectionnelle aux périphériques audio
hors puce. Il est conforme à la spécification de bus Inter-IC Sound (I2S) de Philips Semi-conducteur
(spécification de bus I2S, février 1986, révisée le 5 juin 1996) et est la même que celle de l'interface
audio I2S éprouvée par National Semi-conducteur.
L'interface de bus I2S de l'interface audio I2S est un ensemble de signaux unidirectionnels qui se
connectent aux puces E / S pour former les signaux de bus I2S hors puce: horloge série (I2SCLK),
sélection de mots (I2SWS), entrée série (I2SSDI), et sortie de données série (I2SSDO). Pour réduire
le nombre de broches au niveau de la puce, les signaux d'interface de bus I2S peuvent être partagés
avec d'autres fonctions sur la puce via un contrôleur GPIO (General Pur pose I / O) [15]

Figure II.9 :L'interface audio I2S [15]

23
Chapitre II hardware et software

II.2.Software
II.2.1.Introduction :
Dans la deuxième partie du chapitre en va exprimer l’IDE que en va utiliser dans notre Project pour
programmer notre carte.
Il y a plusieurs IDE de programmation en a par exemple : IAR Embedded Workbench IDE, GCC
(GNU compiler collection) et µVision® IDE.
Dans notre Project en utilise µVision® IDE pour programmer notre carte.

II.2.2.IAR Embedded Workbench IDE


L'IDE IAR Embedded Workbench® est un environnement de développement intégré très puissant,
qui vous permet de développer et de gérer des projets d'applications intégrées complètes. C'est une
plate-forme de développement, avec toutes les fonctionnalités que vous vous attendez à trouver
dans votre lieu de travail quotidien.
IAR Embedded Workbench est disponible pour un grand nombre de microprocesseurs et de
microcontrôleurs dans les segments 8, 16 et 32 bits, vous permettant de rester dans un
environnement de développement bien connu également pour votre prochain projet. Il fournit un
environnement de développement facile à apprendre et hautement efficace avec des capacités
d'héritage de code maximum, un support cible complet et spécifique. IAR Embedded Workbench
favorise une méthodologie de travail utile, et ainsi une réduction significative du temps de
développement peut être réalisée en utilisant les outils des systèmes IAR. Nous appelons ce concept
"différentes architectures". Une solution.". [16]

II.2.3.GCC (GNU compiler collection)


Le GCC (GNU Compiler Collection) est largement considéré comme la partie la plus importante du
logiciel libre. Anciennement appelé le compilateur GNU C, le GCC contient maintenant des
compilateurs pour les langages de programmation C, C ++, Objective C, Fortran, Java et Ada.
Un compilateur est généralement un programme qui convertit les versions de code source d'autres
programmes en langage assembleur ou en langage machine, qui peut être lu directement par un
processeur (c'est-à-dire une puce logique). Certains compilateurs, cependant, sont conçus pour
convertir le code source écrit dans un langage de programmation en l'équivalent écrit dans un autre
langage de programmation. Le code source est la version originale du logiciel telle qu'elle est écrite
par un humain en texte brut (c'est-à-dire, des caractères alphanumériques) en utilisant un langage de
programmation.
Le logiciel libre est un logiciel dont la licence le rend accessible à tous sans frais et permet à tout le
monde de l'utiliser pour n'importe quel usage, y compris l'installation sur autant d'ordinateurs,
l'étude, la modification, l'extension et la redistribution. Parmi les exemples les plus connus, citons le
système d'exploitation Linux et le navigateur web Firefox. [17]

II.2.4.µVision keil
L'IDE μVision associe la gestion de projet, l'environnement d'exécution, les fonctions de
génération, l'édition de code source et le débogage de programme dans un seul environnement
puissant. μVision est facile à utiliser et accélère le développement de votre logiciel embarqué.

24
Chapitre II hardware et software

μVision prend en charge plusieurs écrans et vous permet de créer des dispositions de fenêtres
individuelles n'importe où sur la surface visuelle.
Le débogueur μVision fournit un environnement unique dans lequel vous pouvez tester, vérifier et
optimiser le code de votre application. Le débogueur inclut des fonctionnalités traditionnelles telles
que les points d'arrêt simples et complexes, les fenêtres de surveillance et le contrôle d'exécution,
ainsi qu'une visibilité complète sur les périphériques de l'appareil. [18]
II.2.4.1.Gestionnaire de projet μVision et environnement d'exécution
Avec μVision Project Manager et Run-Time Environment, vous créez une application logicielle à
l'aide de composants logiciels préconstructeurs et de la prise en charge de périphériques à partir de
Software Packs. Les composants logiciels contiennent des bibliothèques, des modules source, des
fichiers de configuration, des modèles de code source et de la documentation. Les composants
logiciels peuvent être génériques pour prendre en charge un large éventail de périphériques et
d'applications.

Figure II.10 : Gestionnaire de projet μVision et environnement d'exécution [18]


La fenêtre Projet affiche les fichiers source de l'application et les composants logiciels sélectionnés.
Sous les composants, vous trouverez les fichiers de bibliothèque et de configuration correspondants.
Les projets prennent en charge plusieurs cibles. Ils facilitent la gestion de la configuration et
peuvent être utilisés pour générer des versions de débogage et de publication ou des adoptions pour
différentes plates-formes matérielles
La fenêtre Gérer l'environnement d'exécution affiche tous les composants logiciels compatibles
avec le périphérique sélectionné. Les interdépendances des composants logiciels sont clairement
identifiées avec des messages de validation.
L'assistant de configuration est un utilitaire d'éditeur intégré permettant de générer des commandes
de configuration de type GUI dans les fichiers assembleur, C / C ++ ou d'initialisation. [18]

II.2.4.2.μVision Editor

25
Chapitre II hardware et software

L'éditeur μVision intégré inclut toutes les fonctionnalités standard d'un éditeur de code source
moderne et est également disponible pendant le débogage. La coloration de la couleur, l'indentation
du texte et le contour de la source sont optimisés pour C / C ++.

Figure II.11 : μVision Editor [18]


La fenêtre Fonctions donne un accès rapide aux fonctions de chaque module de code source C / C
++.
La liste d'achèvement de code et les informations de paramètre de fonction vous aident à garder une
trace des symboles, des fonctions et des paramètres.
La vérification dynamique de la syntaxe valide la syntaxe du programme pendant la saisie et fournit
des alertes en temps réel aux violations de code potentielles avant la compilation. [18]

II.3.conclusion
Dans ce chapitre nous avons présenté le hardware et software qui nous avons utilisée dans notre
Project

26
Chapitre III
Application sur le traitement du son
Chapitre III Application sur le traitement du son

III.1.Introduction
Dans ce qui suit, nous allons procéder à l’exploitation la carte Cypress FM4 (FM4-176L-
S6E2CC-ETH Starter Kit) dans des manipulations de traitement du son. Pour ce faire, on
procède en premier lieu à tester la carte avec des programmes de base : bouclage du son,
introduction d’un retard, génération d’un signal sinusoïdal. En deuxième lieu, on va explorer les
concepts d’échantillonnage, repliement de spectre et reconstruction du signal à partir du Codec
WM8731 disponible sur la carte. Et en dernier, on va introduire un filtre de type FIR sur un
signal sonore et analyser l’effet résultant, en étudiant la réponse fréquentielle obtenue.

La carte FM4 sera connectée à un ordinateur hôte via un câble USB. L'environnement de
développement Keil MDK-ARM, exécuté sur le PC hôte, permet de compiler, de lier et de
télécharger/déboguer les programmes écrits en langage C sur le MCU S6E2CCA FM4. Les
entrées / sorties audio en temps réel sont fournies par le codec WM8731 de Wolfson inclus dans
la carte de développement.

Le matériel utilisé consiste en : une carte Cypress FM4, un oscilloscope, un générateur de signal
de fréquence audio, un PC exécutant Keil MDK-ARM, GoldWave/Wavepad MATLAB et des
câbles de connexion appropriés.

Figure III.1: Système de base pour le traitement numérique du signal [19].

III.2. Introduction de la carte Cypress FM4 par des opérations


d’entrée/sortie analogiques de base
III.2.1.Exemple 1 : Bouclage du son

LINE IN

ADC

Bouclage
du son

DAC
HP OUT

Figure III.2: Connexion pour boucler le son

27
Chapitre III Application sur le traitement du son

Le fichier source C pour un programme qui copie les échantillons d'entrée lus depuis le
convertisseur ADC du WM8731 vers le convertisseur DAC du WM8731 est répertorié dans la
figure III.3. En effet, le programme connecte la prise d’entrée microphone à la prise de sortie
casque sur la même carte. Ce programme est basé sur un modèle temps réel piloté par les
interruptions.

La figure III.4 illustre un signal carré de fréquence 24khz (fe=48khz) observé par un oscilloscope
sur la broche de test (P10).

1 // loop_intr.c
2 #include "audio.h"
3
4 volatile int16_t audio_chR=0;
5 volatile int16_t audio_chL=0;
6
7 void I2S_HANDLER(void) {
8 gpio_toggle(P2_10);
9 audio_IN = i2s_rx(); //32-bits; 16-bits channel left + 16-bits channel right
10 audio_chL = (audio_IN & 0x0000FFFF);
11 audio_chR = ((audio_IN >>16)& 0x0000FFFF);
12 audio_OUT = ((audio_chR<<16 & 0xFFFF0000)) + (audio_chL & 0x0000FFFF);
13 i2s_tx(audio_OUT);
14 }
15
16 int main(void)
17 {
18 gpio_set_mode(P2_10,Output);
19 audio_init ( hz48000, mic_in, intr, I2S_HANDLER);
20
21 while(1){}
22 }

Figure III.3: Listing du programme loop_intr.c

Figure III.4: Signal observé sur la broche de test ‘TEST_PIN’

Dans la fonction main (), une fonction d'initialisation audio_init () est appelée. Ceci
configure les entrées / sorties et les interruptions de sorte que le codec WM8731 échantillonne le
signal d'entrée analogique et interrompt le processeur à la fréquence d'échantillonnage
déterminée par le paramètre hz4800 transmis à la fonction. De plus, le paramètre mic_in
spécifie que l'entrée vers le ADC WM8731 proviendra de la ligne de microphone IN de la carte

28
Chapitre III Application sur le traitement du son

FM4. Le paramètre intr transmis à la fonction audio_init() détermine que les E / S


basées sur les interruptions (par opposition à la scrutation ou à la méthode basée sur DMA)
seront utilisées par le programme, et I2S_HANDLER détermine le nom de l'interruption.

Après appel à la fonction audio_init(), les interruptions du processeur de la carte FM4


générées par le périphérique I2S connecté au WM8731 seront activées et chaque fois qu'une
interruption se produira, la fonction de routine de service d'interruption I2S_HANDLER() sera
appelée. Une interruption par période d'échantillonnage se produira- les canaux gauche et droit
sont traités à la même interruption-. Après l'initialisation, la fonction main() entre dans une
boucle infinie while(1), ne faisant rien d'autre qu'attendre des interruptions.

III.2.2.Exemple 2 : Génération d’un signal sinusoïdal à partir d’un tableau de


consultation
Dans cet exemple, on écrit sur le DAC des échantillons d’un tableau générés depuis une
sinusoïde donnée par l’équation (3.1) avec 0 , ce qui donne une sinusoïde de fréquence
f fe N avec N c’est la dimension du tableau ( fe 8khz ).

sine_table[i] 10000sin((2 i / 8)   ) III.1

Pour N=8, sine_table[8] [0, 7071,10000, 7071, 0, 7071, 10000, 7071]

Génerer Signal
depuis Tableau

DAC
HP OUT

oscilloscope

Figure III.5 : Connexion pour générer un signal sinusoïdal depuis le DAC.

29
Chapitre III Application sur le traitement du son

f=485Hz(fT=500 Hz) f=970Hz(fT=1000Hz)

f=1987Hz (fT=2000 Hz)


f=2996Hz(fT=3000Hz)
Figure III.6 : Sortie analogique sinusoïdale de différentes fréquences, générée par un
tableau de consultation (programme sine_lut_intr.c) .

On remarque que les signaux sont continus, ceci est dû au fait que le le Codec contient un filtre
reconstruction passe bas qui introduit une interpolation entre les valeurs des échantillons de
sortie pour donner une sortie analogique sinusoïdale lisse.

La figure III.7 illustre la visualisation des échantillons des sinusoïdes en utilisant Matlab, et la
figure III.8 l’analyse fréquentielle FFT.
4
x 10
1

0.8

0.6

0.4

0.2
sample value

-0.2

-0.4

-0.6

-0.8

-1
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014
time (s)

Figure III.7 : Tracé du signal sinusoïdal envoyé au DAC du codec en utilisant Matlab

30
Chapitre III Application sur le traitement du son

115

110

105

100

magnitude (dB) 95

90

85

80

75

70 1 2 3 4
10 10 10 10
frequency (Hz)

Figure III.8 : FFT du signal sinusoïdal (envoyé au DAC) en utilisant Matlab

III.3.Echantillonnage et analyse fréquentielle par des entrées/sorties


analogiques
III.3.1.Exemple 1: Echantillonnage et repliement de spectre – génération de
sinusoïdes
Ici, nous avons générer des sorties sinusoïdales analogiques de fréquences arbitraires depuis le
WM8731 à partir d’un programme qui appelle la fonction mathématique « sin() »
(contrairement à l’exemple précèdent) avec une fréquence d’échantillonnage de 8khz, pour cela
on reprend les mêmes connexions que dans la figure III.5. Le tableau III.1 résume les fréquences
générées et les fréquences obtenues depuis le DAC, et la figure III.9 reprend les formes d’ondes
obtenues.

valeur affectée à la variable fréquence fréquence du signal de sortie analogique


1500 1500
2573 2573
7000 1000
3500 3500
4500 3500
Tableau III.1 : Fréquence de signal de sortie analogique pour différentes valeurs de
fréquence variable.

31
Chapitre III Application sur le traitement du son

1500 Hz (200 Hz/div) 2573 Hz (100 Hz/div)

3500 Hz (500 Hz/div) 4500 Hz (200 Hz/div)

7000 Hz (500 Hz /div)

Figure III.9 : Sortie analogique générée par le programme sine_ intr.c pour différentes
fréquences.

Depuis les formes d’ondes de la figure III.9 et le tableau III.1, on remarque que : les fréquences
inférieures à 4 KHz dans l’entrée donnent les mêmes fréquences dans la sortie, alors que les fréquences
supérieures à 4 KHz dans l’entrée donnent des fréquences quelconques dans la sortie.

Donc le codec est incapable de reconstruire des signaux sinusoïdaux de fréquence supérieurs à
4khz (𝑓e /2).

Depuis le théorème de Shannon ou théorème d'échantillonnage : 𝑓e ≥ 2𝑓𝑚𝑎𝑥 (dans cet exemple en a


𝑓e =8 KHz alors 𝑓𝑚𝑎𝑥 =4KHz).

III.3.2.Exemple 2: Echantillonnage et repliement de spectre – génération


d'onde carrée à l'aide du codec WM8731

Ici, on procède comme dans l’exemple III.2.2 mais cette fois avec un signal carré ( fe 8khz ).

32
Chapitre III Application sur le traitement du son

signal[8] [10000,10000,10000,10000, 10000, 10000, 10000, 10000]

La fréquence résultante est 1khz.

Figure III.10: Forme d'onde de sortie analogique générée en utilisant des échantillons
d'une onde carrée de 1 kHz. 200 ms/div

On remarque ici, que la forme d’onde de sortie n’est pas carrée, mais elle est la somme de deux
sinusoïdes. La fonction d’entrée étant impaire (f(-t)=-f(t)), elle se décompose en une série de
Fourier ne comprenant que des termes en sinus (voir Annexe):

𝑓 𝑡 = 𝑛=1[𝑏𝑛 sin⁡
(𝑛𝜔𝑡)] III.2

La figure III.11 montre une simulation Matlab d’un signal c=a+b telque : a(t)=50*sin(t),
b(t)=25*sin (3*t)

60

40

20

-20

-40

-60
-15 -10 -5 0 5 10 15

Figure III.11: Simulation Matlab d’un signal équivalent à celui de la figure III.10

III.3.3.Exemple 3 : Réponses indicielle et impulsionnelle du filtre de


reconstruction du WM8731
(a) Depuis un signal carré généré à partir des échantillons programmés

Dans cet exemple, on reprend les mêmes opérations que dans l’exemple précèdent mais avec une
série d’échantillons de 32 valeurs consécutives de ‘10000’ suivis de 32 valeurs consécutives de
‘-10000’. La figure III.12 illustre le signal obtenu.

33
Chapitre III Application sur le traitement du son

Figure III.12 : Forme d'onde de sortie analogique générée par un signal carré de 64
échantillons (0.008 ms /div)

La sortie analogique illustrant la réponse indicielle montre que cette dernière est oscillatoire, et
présente un amortissement.

Pour avoir l’allure de la réponse impulsionnelle, on procède par envoie d’une série
d’échantillons de 64 valeurs consécutives constituée d’un premier échantillon non-nul de
‘10000’ suivis de 63 valeurs consécutives nulles. La figure III.13 illustre le signal obtenu.

Figure III.13 : réponse impulsionnelle du filtre de reconstruction DAC WM8731(0.016 ms


/div)

L’impulsion est la dérivée dans le temps de l’échelon, donc la réponse impulsionnelle du DAC
sera oscillatoire amortie à zéro. Les max (peaks) de la réponse indicielle correspondent au
passage par zéro de la réponse impulsionnelle. La forme d’onde de sortie contient les
composants de la fréquence de 125Hz jusqu’à un maximum de 4khz. Les composants de hautes
fréquences qui peuvent rendre les bords plus lisses sont manquants. Pour illustrer cela, le tracé de
la FFT depuis un oscilloscope moderne est montré sur la figure III.14

34
Chapitre III Application sur le traitement du son

Figure III.14 : Amplitudes des composantes de fréquence présentes dans la forme d'onde
analogique générée à partir d’une entrée carrée.

(b) Depuis un signal carré obtenu à partir d’un générateur de signaux

Ici, on connecte à l’entrée ‘LINE IN’ de la carte, un signal carré d’amplitude env. 0.3v et de
fréquence 200Hz, issu d’un générateur de signaux. La figure III.16 montre la réponse obtenue.

LINE IN
Générateur de
signaux
ADC

Bouclage

DAC
HP OUT

oscilloscope

Figure III.15 : Connexion pour générer un signal carrée depuis le DAC.

Figure III.16 : Forme d'onde de sortie analogique générée obtenu à partir d’un générateur
de signaux plus le signal carrée de générateur

35
Chapitre III Application sur le traitement du son

III.3.4.Exemple 4 : Réponse fréquentielle d'amplitude du filtre de


reconstruction DAC WM8731
Pour étudier la réponse fréquentielle du DAC, on utilisera un programme qui fait appel à une
séquence binaire pseudo-aléatoire SBPA (PRBS). Cette séquence contient en théorie une gamme
complète de composantes de différentes fréquences avec amplitudes égales. Lorsque cette
séquence est écrite sur le DAC, sa sortie reflète la réponse fréquentielle. (On utilise les memes
connections que dans l’expérience III.2.2)

Figure III.17 : séquence binaire pseudo-aléatoire obtenue depuis le programme.

La figures III.16 montre les séquences PRBS et les réponses correspondantes pour les fréquences
8Khz et 48Khz.

Figure III.18 : Réponse fréquencielle du filtre de reconstruction DAC WM8731 pour une
séquence PRBS pour fe=8Khz zt fe=48Khz

36
Chapitre III Application sur le traitement du son

III.4.Le filtrage
III.4.1.Le filtre à moyenne mobile
Ce filtre est largement utilisé dans DSP et, sans doute, est l'un des plus faciles de tous les filtres
numériques à comprendre. Il est particulièrement utile pour supprimer le bruit aléatoire (haute
fréquence) d’un signal.

Le filtre de moyenne mobile opère en prenant la moyenne arithmétique des valeurs d'un certain
nombre d'échantillons d'entrée passés, afin de calculer chaque échantillon de sortie, cela peut être
représenté par l'équation :
1 𝑁=1
𝑦 𝑛 =𝑁 𝑖=0 𝑥(𝑛 − 𝑖) III.3

III.4.1.1.Observation de la réponse fréquentielle à l'aide d'un signal d'entrée


de type PRBS

LINE IN

PRBS

Filtre à
Moyenne
Mobile

DAC
HP OUT

Oscilloscope/
GoldWave sur PC

Figure III.19 : Diagramme de connexion pour mesurer la réponse en fréquence de l’amplitude du


filtre à moyenne mobile

Une indication de la réponse fréquentielle de l’amplitude du filtre peut être obtenue en


appliquant une séquence binaire pseudo-aléatoire PRBS, contenant des composantes équi-
pondérées à toutes les fréquences au filtre et en observant le contenu spectral de la sortie du
filtre.

37
Chapitre III Application sur le traitement du son

Figure III.20 : l’environnement GoldWave utilisé pour l’analyse spectrale des signaux sur un PC.

Les figures suivantes illustrent l’implémentation d’un filtre à moyenne mobile à 05 et à 11


coefficients.

Figure III.21 : filtre à moyenne mobile de 5 coefficients, en haut : La réponse fréquentielle d’un
en utilisant Matlab, en bas : La réponse fréquentielle de l’amplitude du filtre en utilisant la carte
FM4 et GoldWave sur un PC

38
Chapitre III Application sur le traitement du son

Figure III.22 : filtre à moyenne mobile de 11 coefficients , en haut : La réponse fréquentielle en


utilisant Matlab, en bas : La réponse fréquentielle de l’amplitude du filtre en utilisant la carte
FM4 et GoldWave sur un PC

III.4.2.Filtre à réponse impulsionnelle finie (FIR)


III.4.2.1.Filtre passe-bas
Ici on reprend la même expérience précédente et on applique une fenêtre de Hann sur le filtre à
moyenne mobile à 05 coefficients, donc h[n]= [0.0833 0.2500 0.3333 0.2500 0.0833].

On utilise pour la conception, l’outil Matlab ‘fdatool’ illustré dans la figure III.23 avec fe =8khz

0.35

0.3

0.25

0.2

0.15

0.1

0.05

0
1 1.5 2 2.5 3 3.5 4 4.5 5

39
Chapitre III Application sur le traitement du son

Figure III.24 : filtre FIR à 5 coefficients, en haut : la réponse impulsionnelle, en milieu : La


réponse fréquentielle en utilisant Matlab, en bas : La réponse fréquentielle de l’amplitude du
filtre en utilisant la carte FM4 et GoldWave sur un PC (Fenêtre de Hann)

III.4.2.2.Filtre passe-bande
On utilise pour la conception, l’outil Matlab ‘fdatool’ avec une fenêtre de Kaiser fc1= 1500,
fc2=2000Hz et fe =8khz

n=40 h= [ 0.0150 -0.0098 -0.0119 0.0014 -0.0000 -0.0016 0.0156 0.0147 -0.0260
-0.0393 0.0222 0.0672 -0.0000 -0.0868 -0.0373 0.0877 0.0794 -0.0654 -0.1125
0.0242 0.1250 0.0242 -0.1125 -0.0654 0.0794 0.0877 -0.0373 -0.0868 -0.0000
0.0672 0.0222 -0.0393 -0.0260 0.0147 0.0156 -0.0016
-0.0000 0.0014 -0.0119 -0.0098 0.0150 ]

40
Chapitre III Application sur le traitement du son

0.15

0.1

0.05

-0.05

-0.1

-0.15

-0.2
0 5 10 15 20 25 30 35 40 45

Figure III.25 : filtre FIR passe bande à 40 coefficients, en haut : La réponse impulsionnelle, en
milieu : la réponse fréquentielle en utilisant Matlab-Fdatool, en bas : La réponse fréquentielle de
l’amplitude du filtre en utilisant la carte FM4 et GoldWave sur un PC (fenêtre de Kaiser)

41
Chapitre III Application sur le traitement du son

 Dans la partie de filtrage en remarque :


 Dans la figure III.22 que représente Le filtre à moyenne mobile avec un signal
d'entrée PRBS qui la fréquence plus élevée du signal d'entrée a été atténuée et
améliorer par rapport à la figure III.21 que représente le même filtre.
 Dans la figure III.24 que représente le filtre FIR passe-bas la fréquence plus élevée
du signal d'entrée a été atténuée et améliorer par rapport à les figures III.22 et III.21
que représente Le filtre à moyenne mobile avec un signal d'entrée PRBS.
 Dans la figure III.25 que représente le filtre FIR passe-bande la fréquence plus élevée
du signal d'entrée a été atténuée et presque annuler par rapport à tous les figures de
filtrage.

III.5.conclusion
L’expérience menée durant ce chapitre nous a permis d’acquérir plusieurs concepts relatifs à la
programmation C et au traitement du signal, où on a appliqué le traitement du son en temps réel
sur un processeur DSP de type ARM Cortex M4, en utilisant un filtre à réponse impulsionnelle
finie (FIR) tout en montrant pratiquement les notions théoriques de : théorème de Shannon,
l’échantillonnage, le repliement du spectre, analyse spectrale et le filtre à réponse impulsionnelle
finie (FIR). Les résultats obtenus en pratique étaient très proche de ceux obtenus en théorie.

42
Conclusion générale
Conclusion générale

Conclusion générale
Etant donné l’explosion des données digitale dans le monde d’aujourd’hui, l’utilisation des
processeurs DSP est devenue crucial. La plupart des kits de développement disponibles sur le
marché présentent un coût élevé. Pour implémenter quelques algorithmes DSP en temps réel
pour le traitement du son, la carte Cypress FM4 (FM4-176L-S6E2CC-ETH Starter Kit) low
cost basé un microcontrôleur 32 bits de type ARM Cortex M4 était utilisée comme Hardware
et l’environnement keil µVision était utilisé pour la développement Software.

Plusieurs concepts ont étaient démontrés en pratique, notamment les notions


d’échantillonnage, le repliement du spectre et analyse spectrale. Pour conclure, quelques types
de filtres à réponse impulsionnelle finie (FIR) ont étaient implémentés. Les résultats obtenus
en pratique étaient très proche de ceux obtenus en théorie.

Comme travail future, on peut envisager d’implémenter des techniques de filtrage plus
avancées ou utiliser des librairies plus optimisées pour le traitement du signal comme CMSIS-
DSP d’ARM.

43
Bibliographies

[1] : M.Beallanger «traitement numérique du signal » 9ᵉ édition

[2] : http://perso.univ-lemans.fr/~nerrien/Phy308aA_5_C1.pdf

[3] : http://www.prima.imag.fr/jlc/Courses/1999/ENSI2.TS/ENSI2.TS.S11.pdf

[4] : A.DJOUAMBI, "traitement avancée du signal ", cours master électronique


des systèmes embarquée université d’oum el bouaghi 2016/2017

[5] : https://www.emse.fr/~dutertre/documents/cours_convertisseurs.pdf

[6] : http://www.orfony.fr/bdtech/DSP.html

[7] : https://fr.wikipedia.org/wiki/Processeur_de_signal_num%C3%A9rique

[8] : https://fr.wikipedia.org/wiki/Architecture_ARM

[9] : https://fr.wikipedia.org/wiki/ARM_Cortex-M

[10]: https://developer.arm.com/products/processors/cortex-m/cortex-m4

[11]: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
[12]: http://www.cypress.com/documentation/development-kitsboards/sk-fm4-
176l-s6e2cc-fm4-family-quick-start-guide

[13]: https://www.rockbox.org/wiki/pub/Main/DataSheets/WM8731_8731L.pdf

[14]: http://i2c.info/

[15]: https://www.silvaco.com/products/IP/i2s-audio-interface/index.html

[16]: https://www.brown.edu/Departments/Engineering/
Courses/En164/EWARM_UserGuide.ENU.pdf

[17]: http://www.linfo.org/gcc.html

[18]: http://www2.keil.com/mdk5/uvision/

[19]: Reay, D. S. (2016). Digital signal processing using the ARM® cortex®-M4. Wiley. DOI:
10.1002/9781119078227

44
[20]: https://www.silicium628.fr/cours/serie_fourier/page3.php
[21]: www.arm.com

[22] : www.cypress.com

Annexe
Transformer de Fourier d’un signal carrée

Soit la fonction périodique « rectangulaire » (dite aussi « signal carré ») représentée sur la figure
suivante :

Figure 1 : Fonction périodique « rectangulaire » (dite aussi « signal carré »)

Cette fonction étant impaire (f(-t)=-f(t)), elle se décompose en une série de Fourier ne comprenant
que des termes en sinus:

𝑓(𝑡) = ∑[𝑏𝑛 sin⁡(𝑛𝜔𝑡)]


𝑛=1

La valeur moyenne de la fonction étant nulle,𝑎0 est nulle.


Calculons les coefficients 𝑏𝑛 en appliquant les résultats obtenus précédemment:
𝑇
2 ⁄2
𝑏𝑛 = ∫ 𝑓(𝑡) sin(𝑛𝜔𝑡) . 𝑑𝑡
𝑇 −𝑇⁄
2
L'intervalle [− 𝑇⁄2 , 𝑇⁄2] correspond à une période complète
Calcul de 𝑏𝑛
𝑇
2 ⁄2
𝑏𝑛 = ∫ 𝑓(𝑡) sin(𝑛𝜔𝑡) . 𝑑𝑡
𝑇 −𝑇⁄
2
0 𝑇⁄
2 2
= (∫ (−1) sin(𝑛𝜔𝑡) . 𝑑𝑡 + ∫ (1) sin(𝑛𝜔𝑡) . 𝑑𝑡)
𝑇 −𝑇⁄ 0
2
2𝜋
Sachant que: 𝜔=2𝜋𝑓= 𝑇
donc 𝜔𝑇=2𝜋

45
0 ⁄2 𝑇
2 1 −1
𝑏𝑛 = ([ cos(𝑛𝜔𝑡)] + [ cos(𝑛𝜔𝑡)] )
𝑇 𝑛𝜔 −𝑇⁄2 𝑛𝜔 0

2 1 1 1 1
= ([ cos(0) − cos(−𝑛𝜋)] − [ cos(−𝑛𝜋) − cos(0)])
𝑇 𝑛𝜔 𝑛𝜔 𝑛𝜔 𝑛𝜔
Le résultat diffère selon que n est pair ou impair :
𝑛⁡𝑝𝑎𝑖𝑟⁡ ⇒ cos(𝑛𝜋) = 0
En effet :{
𝑛⁡𝑖𝑚𝑝𝑎𝑖𝑟⁡ ⇒ cos(𝑛𝜋) = 1
Cas n pair
(𝑛 = 2𝑘⁡; 𝑘 ∈ 𝑁)
2 1 1 1 1
𝑏2𝑘 = ([ cos(0) − cos(−2𝑘𝜋)] − [ cos(−2𝑘𝜋) − cos(0)])
𝑇 2𝑘𝜔 2𝑘𝜔 2𝑘𝜔 2𝑘𝜔
𝑏2𝑘 =0

Donc il n’y a pas d’harmoniques de rang pair pour cette fonction carrée.

Cas n impair

(n=2k+1)
2 1 1 1 1
𝑏𝑛 = ([ (1) − (−1)] − [ (−1) − (1)])
𝑇 𝑛𝜔 𝑛𝜔 𝑛𝜔 𝑛𝜔
2 2 2
=⁡𝑇 (𝑛𝜔 + 𝑛𝜔)
4 1
=𝜋∗𝑛
2𝜋
Puisque 𝜔=2𝜋𝑓 = 𝑇
donc 𝜔𝑇=2𝜋

Nous obtenons la sérier de Fourier suivante, pour ce signal carré :



4 1
𝑓(𝑡) = ∑ [ ∗ sin(𝑛𝜔𝑡)]
𝜋 𝑛
𝑛=1

Avec n=2k+1 ; k∈ 𝑁
4 1 1 1
𝑓(𝑡) = (sin(𝜔𝑡) + sin(3𝜔𝑡) + sin(5𝜔𝑡) + sin(7𝜔𝑡) + ⁡ … …)
𝜋 3 5 7
4
Le facteur 𝜋 montre que l'amplitude de la fréquence fondamentale est un peu supérieure à celle de la
fonction carrée obtenue.

Nous retrouvons bien les amplitudes en 1⁄𝑛 et les harmoniques de rang n impairs uniquement, comme
nous l'avions proposé lors de l'approche graphique.

Voici d'ailleurs cette synthèse graphique à laquelle j'ai rajouté une sinusoïde d'amplitude 4⁄𝜋 qui
vient en effet tangenter le signal carré (elle ne figure bien sûr pas dans la somme).

46
Figure 2 : Signal carrée appris la transformer de Fourier

47
Résumé
Dans ce travail nous avons implémenté quelques algorithmes DSP en temps réel sur un
microcontrôleur 32 bits de type ARM Cortex M4pour application de traitement du son.

La carte Cypress FM4 (FM4-176L-S6E2CC-ETH Starter Kit) était utilisée comme Hardware
et l’environnement, keil µVision pour la programmation.

Plusieurs concepts ont étaient démontrés en pratique, notamment les notions


d’échantillonnage, le repliement du spectre et analyse spectrale. Pour conclure, quelques types
de filtres à réponse impulsionnelle finie (FIR) ont étaient implémentés. Les résultats obtenus
en pratique étaient très proche de ceux obtenus en théorie.

Abstract
In this work we implements some algorithm DSP real-time on a microcontroller 32 bit type
ARM Cortex M4 for application of treatment sound.

The board Cypress FM4 (FM4-176L-S6E2CC-ETH Starter Kit) was used as hardware and the
environment, keil µVision for programing.

Serveral concepts have been show in pratique, in particular the notions of sampling, the
folding of the spectruem and spectral analysis. To conclude, some type of finite impulse
response filters (FIR) were implemented. Results obtained in pratique were very close to
those obtained in theory

48