implémentation d’algorithmes dsp temps réel sur

63
R EPUBLIQUE A LGERIENNE D EMOCRATIQUE ET P OPULAIRE MINISTERE DE LENSEIGNEMENT 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 Akram Abd elouadoud BENHAFSA Dirigé par Mr. Khaled MENDACI Jury de soutenance Pr. M. Khamadja Dr. F. Megri Promotion : juin 2018

Upload: others

Post on 19-Jun-2022

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implémentation d’Algorithmes DSP Temps Réel sur

R E P U B L I Q U E A L G E R I E N N E D E M O C R A T I Q U E E T P O P U L A I R E

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

Akram Abd elouadoud BENHAFSA

Dirigé par

Mr. Khaled MENDACI

Jury de soutenance

Pr. M. Khamadja

Dr. F. Megri

Promotion : juin 2018

Page 2: Implémentation d’Algorithmes DSP Temps Réel sur
Page 3: Implémentation d’Algorithmes DSP Temps Réel sur

I

REMERCIEMENTS

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.

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

e remercie tous les membres de jury pour la pertinence

de leurs remarques.

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

électronique des systèmes embarqués qui ont contribué

à ma formation.

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

là pour moi.

J

J

J J J

Page 4: Implémentation d’Algorithmes DSP Temps Réel sur

II

Dédicace

Au nom de Dieu Allah

Avec toute ma reconnaissance Je dédie ce modeste

mémoire :

mes parents

ma sœur et à mes frères

toute la famille ben hafsa et batoul

tous mes professeurs

tous mes amis

Ben hafsa akram abdeloudoud…..

A

Page 5: Implémentation d’Algorithmes DSP Temps Réel sur

III

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

Page 6: Implémentation d’Algorithmes DSP Temps Réel sur

IV

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

Page 7: Implémentation d’Algorithmes DSP Temps Réel sur

V

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

Page 8: Implémentation d’Algorithmes DSP Temps Réel sur

VI

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

quantifié.

11

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

données Réarranger dans l'ordre du bit inverse

15

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

d'exécution

25

Page 9: Implémentation d’Algorithmes DSP Temps Réel sur

VII

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

DAC.

29

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)

30

Figure III.7

Tracé du signal sinusoïdal envoyé au DAC du codec

en utilisant Matlab

30

Figure III.8

FFT du signal sinusoïdal (envoyé au DAC) en utilisant

Matlab

31

Figure III.9

Sortie analogique générée par le programme sine_

intr.c pour différentes fréquences

32

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.

33

Figure III.11

Simulation Matlab d’un signal équivalent à celui de la

figure III.10

33

Figure III.12

Forme d'onde de sortie analogique générée par un

signal carré de 64 échantillons

34

Figure III.13

réponse impulsionnelle du filtre de reconstruction

DAC WM8731

34

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.

35

Figure III.15

Connexion pour générer un signal carrée depuis le

DAC

35

Figure III.16

Forme d'onde de sortie analogique générée obtenu à

partir d’un générateur de signaux

35

Figure III.17

séquence binaire pseudo-aléatoire obtenue depuis le

programme

36

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

Figure III.19

de connexion pour mesurer la réponse en fréquence de

magnitude du filtre moyen mobile ponctuel mis en

œuvre par le programme average_prbs_intr.c

37

Page 10: Implémentation d’Algorithmes DSP Temps Réel sur

VIII

Figure III.20

l’environnement GoldWave utilisée pour observer les

signaux sur un PC

38

Figure III.21

filtre à moyenne mobile de 5 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

38

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

39

Figure III.23

filtre à moyenne mobile de 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)

40

Figure III.24

filtre à moyenne mobile de 40 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 Kaiser )

40

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

différentes valeurs de fréquence variable

31

Page 11: Implémentation d’Algorithmes DSP Temps Réel sur

Introduction générale

Page 12: Implémentation d’Algorithmes DSP Temps Réel sur

Introduction générale

1

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.

Page 13: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre I Théorie relative du traitement

numérique du signal

Page 14: Implémentation d’Algorithmes DSP Temps Réel sur

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

2

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)=∑ h(k)g(n − kN−1k=0 ) (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 ≤ 𝑛 − 𝑁 + 1 ≤ 𝑁 − 1⇔ 0 ≤ 𝑛 ≤ 2𝑁 − 2

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]

Page 15: Implémentation d’Algorithmes DSP Temps Réel sur

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

3

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.

Page 16: Implémentation d’Algorithmes DSP Temps Réel sur

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

4

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

𝑇∫ 𝑠(𝑡)𝑒−𝑗2𝜋𝑛𝑡/𝑇𝑑𝑡

𝑇

0 (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

Page 17: Implémentation d’Algorithmes DSP Temps Réel sur

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

5

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.

2 3 1

1

4 6

( 1)(N' 1)

0 0

1

2 2(N 1)

2 2

( 1) 2( 1)

1 1

1 1 1 1 1

11

1

1

N

N

N

N N

N

X x

X xW W W

X xW W W W

X xW W W

W

N

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).

Page 18: Implémentation d’Algorithmes DSP Temps Réel sur

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

6

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 :

𝐻(𝑓) = ∑ 𝑎𝑖𝑒−𝑗2𝜋𝑓𝑖𝑇𝑁−1

𝑖=0 (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

période 𝑓𝑒 =1

𝑇. 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.

Page 19: Implémentation d’Algorithmes DSP Temps Réel sur

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

7

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

𝑅𝑝[dB]

Atténuation max

𝐴𝑚𝑎𝑥[dB]

Bande de transition

∆𝛺

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 :

𝑅𝑐 =𝑓1+𝑓2

2(𝑓2−𝑓1) (I.19)

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

Page 20: Implémentation d’Algorithmes DSP Temps Réel sur

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

8

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

𝑓𝑒.

sin 𝜋𝑖𝑓1+𝑓2

𝑓𝑒

𝜋𝑖𝑓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 :

G(f)=NTsin (𝜋𝑓𝑛𝑇)

𝜋𝑓𝑁𝑇 (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]

Page 21: Implémentation d’Algorithmes DSP Temps Réel sur

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

9

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 :

𝑦(𝑛) = ∑ 𝑎𝑖𝑥(𝑛 − 𝑙) − ∑ 𝑏𝑘𝑦(𝑛 − 𝑘)𝐾𝑘=1

𝐿𝑙=0 (I.23)

La fonction de transfert en Z de ce système s’écrit :

𝐻(𝑧) =∑ 𝑎𝑙𝑍−𝑙𝐿

𝑙=0

1+∑ 𝑏𝑘𝑍−𝐾𝐾𝑘=1

(I.24)

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

2𝑗[𝐻′(𝑍)

𝐻(𝑍)+

1

𝑍2

𝐻′(𝑍−1)

𝐻(𝑍−1)]

Pour Z=𝑒𝑗𝜔 il vient :

𝑑𝜑

𝑑𝑍= −

1

𝑗𝑍𝑅𝑒 [𝑍

𝑑

𝑑𝑍ln (𝐻(𝑍))]

Page 22: Implémentation d’Algorithmes DSP Temps Réel sur

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

10

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 :

Page 23: Implémentation d’Algorithmes DSP Temps Réel sur

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

11

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) ∑ δ(t − kk Tech) (I.27)

L’échantillonnage est illustré graphiquement dans le domaine temporel aux points (a), (b) et (c)

de la figure I.7.

Page 24: Implémentation d’Algorithmes DSP Temps Réel sur

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

12

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]

Page 25: Implémentation d’Algorithmes DSP Temps Réel sur

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

13

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𝑁−1 (I.28)

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𝑁−1=

𝑉𝑟𝑒𝑓

2𝑁 (I.29)

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.

Page 26: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II Hardware et software

Page 27: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

14

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

Page 28: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

15

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.

Page 29: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

16

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

Page 30: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

17

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

Page 31: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

18

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.

Page 32: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

19

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.

Page 33: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

20

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é

Page 34: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

21

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

Page 35: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

22

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 :

Page 36: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

23

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]

Page 37: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

24

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é.

Page 38: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

25

μ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

Page 39: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre II hardware et software

26

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

Page 40: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

Page 41: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

27

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

Bouclage du son

DACHP OUT

ADC

LINE IN

Figure III.2: Connexion pour boucler le son

Page 42: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

28

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

Page 43: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

29

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

fef N avecN c’est la dimension du tableau ( 8

ef khz ).

))8/2sin((10000 i[i]sine_table III.1

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

Génerer Signal depuis Tableau

DACHP OUT

oscilloscope

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

Page 44: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

30

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.

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

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1x 10

4

time (s)

sam

ple

valu

e

Page 45: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

31

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.

Tableau III.1 : Fréquence de signal de sortie analogique pour différentes valeurs de

fréquence variable.

101

102

103

104

70

75

80

85

90

95

100

105

110

115

frequency (Hz)

mag

nit

ud

e (

dB

)

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

1500 1500

2573 2573

7000 1000

3500 3500

4500 3500

Page 46: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

32

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é ( 8ef khz ).

Page 47: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

33

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):

𝑓 𝑡 = [𝑏𝑛sin(𝑛𝜔𝑡)]∞𝑛=1 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)

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.

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

-40

-20

0

20

40

60

Page 48: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

34

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

Page 49: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

35

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.

Bouclage

DACHP OUT

oscilloscope

ADC

LINE IN

Générateur de signaux

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

Page 50: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

36

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

Page 51: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

37

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

Filtre à Moyenne

Mobile

DAC

HP OUT

Oscilloscope/GoldWave sur PC

LINE IN

PRBS

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.

Page 52: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

38

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

Page 53: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

39

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

1 1.5 2 2.5 3 3.5 4 4.5 50

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Page 54: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

40

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 ]

Page 55: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

41

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)

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

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

Page 56: Implémentation d’Algorithmes DSP Temps Réel sur

Chapitre III Application sur le traitement du son

42

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.

Page 57: Implémentation d’Algorithmes DSP Temps Réel sur

Conclusion générale

Page 58: Implémentation d’Algorithmes DSP Temps Réel sur

Conclusion générale

43

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.

Page 59: Implémentation d’Algorithmes DSP Temps Réel sur

44

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

Page 60: Implémentation d’Algorithmes DSP Temps Réel sur

45

[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

𝑇∫ 𝑓(𝑡) sin(𝑛𝜔𝑡) . 𝑑𝑡

𝑇2⁄

−𝑇 2⁄

L'intervalle [−𝑇2⁄ , 𝑇 2⁄ ] correspond à une période complète

Calcul de 𝑏𝑛

𝑏𝑛 =2

𝑇∫ 𝑓(𝑡) sin(𝑛𝜔𝑡) . 𝑑𝑡

𝑇2⁄

−𝑇 2⁄

=2

𝑇(∫ (−1) sin(𝑛𝜔𝑡) . 𝑑𝑡 + ∫ (1)

𝑇2⁄

0

0

−𝑇 2⁄

sin(𝑛𝜔𝑡) . 𝑑𝑡)

Sachant que: 𝜔=2𝜋𝑓= 2𝜋

𝑇 donc 𝜔𝑇=2𝜋

Page 61: Implémentation d’Algorithmes DSP Temps Réel sur

46

𝑏𝑛 =2

𝑇([

1

𝑛𝜔cos(𝑛𝜔𝑡)]

−𝑇 2⁄

0

+ [−1

𝑛𝜔cos(𝑛𝜔𝑡)]

0

𝑇2⁄

)

=2

𝑇([

1

𝑛𝜔cos(0) −

1

𝑛𝜔cos(−𝑛𝜋)] − [

1

𝑛𝜔cos(−𝑛𝜋) −

1

𝑛𝜔cos(0)])

Le résultat diffère selon que n est pair ou impair :

En effet :{𝑛𝑝𝑎𝑖𝑟 ⇒ cos(𝑛𝜋) = 0

𝑛𝑖𝑚𝑝𝑎𝑖𝑟 ⇒ cos(𝑛𝜋) = 1

Cas n pair

(𝑛 = 2𝑘; 𝑘 ∈ 𝑁)

𝑏2𝑘 =2

𝑇([

1

2𝑘𝜔cos(0) −

1

2𝑘𝜔cos(−2𝑘𝜋)] − [

1

2𝑘𝜔cos(−2𝑘𝜋) −

1

2𝑘𝜔cos(0)])

𝑏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

𝑛

Puisque 𝜔=2𝜋𝑓 =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

𝜋(sin(𝜔𝑡) +

1

3sin(3𝜔𝑡) +

1

5sin(5𝜔𝑡) +

1

7sin(7𝜔𝑡) +……)

Le facteur 4

𝜋 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).

Page 62: Implémentation d’Algorithmes DSP Temps Réel sur

47

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

Page 63: Implémentation d’Algorithmes DSP Temps Réel sur

48

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