Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CR TP DSP

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

TP DSP

Digital Signal Processeur

2020/2021
OUDAD Souad M13IR
MEZIANI Souheila Encadré par : Mr Thiebeaut Bernard

Page 1
Sommaire
Introduction.....................................................................................3

I. Prise en main de l’outil de développement...................................................3


1. Test du logiciel Talkthru..............................................................................4
2. Test du logiciel Bande Passante :..............................................................5

II. Premiers programmes à partir de CANEVAS.C.........................................7


1. Recopier l’entrée gauche (LIN) sur la sortie gauche (LOUT)...................7
2. Recopier l’entrée droite (RIN) sur la sortie droite (ROUT).......................8
3. Changement de la fréquence d’échantillonnage........................................8
4. T_periode et T_count..................................................................................9

III. Générations des signaux..........................................................................10

IV. Filtrage numérique................................................................................... 11


1. Synthèse manuelle.....................................................................................11

Page 2
Introduction
Digital signal Processeur ou autrement dit traitement numérique de signal est un microprocesseur
optimisé pour exécuter des applications de traitement numérique du signal le plus rapidement
possible.
On trouve les DSP partout où on reçoit un signal complexe que l’on doit modifier à l’aide de
filtrage par exemple :
• les modems (ADSL, RTC)
• les téléphones mobiles
• les appareils multimédia (MP3)
• les récepteurs GPS
• chaînes de traitement de son
Le but de ces séances de travaux pratiques est d’avoir une première approche du traitement
numérique du signal ainsi de faire du traitement numérique du signal en temps réel. Pour faire cela
on aura amené dans ce tp à faire le rapport entre les microprocesseurs, les logiciels de simulation
( Matlab) ainsi que la programmation en langage basique C.
Cependant, ce TP est répartie en 5 parties :
I. Prise en main de l’outil de développement
II. Ecriture des premiers programmes C
III. Générations de signaux
IV. Implantation de filtres
V. Autres exemples de TNS

I. Prise en main de l’outil de développement


Dans cette partie on a commencé d’abord par configurer l’oscilloscope GBF émettant un signal
d’amplitude 1Vpp à une fréquence d’ordre 1KHz

Page 3
1. Test du logiciel Talkthru
Logiciel Talkthru est un logiciel fournis par Analog Devices permet de sélectionner une fréquence
d’échantillonnage et un gain.
Avant de lancer la simulation, on a repéré les entrées gauches et droites, ainsi que les sorties gauche
droite :
Pour Input (J23) :
➢ Voie gauche verte: rx_buf[1]
➢ Voie droite rouge : rx_buf[2]
Pour Output (J22) :
➢ Voie gauche verte: tx_buf[1]
➢ Voie droite rouge : tx_buf[2]

1)
on a choisi de travailler avec une fréquence d’échantillonnage de 32KHz et un gain de 0 db(il faut
que le gain soit compatible avec le signal d’entrée.
Rappel de théorème de Shannon  :
Pour que le signal puisse être entièrement reconstruit à partir des échantillons il suffit d’avoir une
fréquence d’échantillonnage supérieure ou égale au double de sa fréquence maximale :

fe>2fmax
On a fait varier par la suite la fréquence sur le GBF et on remarque sur le signal de sortie qu’au delà
de 12KHz qui correspond bien a fe/2 on observe un signal bruité, le théorème de Shannon est
vérifié.
Le signal XL(t) passe par une première résistance puis une deuxième, puis une capacité (qui bloque
le contenu continue) → puis un CAN (on aura XCANL(t) ) le rapport théorique des amplitudes entre le
signal de sortie et celui d’entrée

R∗R e
R∥R e R+R e Re 1
X CANL (t)= = = = =0.4 (filtre anti-repliement)
R∥R e +R R∗R e 2 R e +R 2.5
R+
R+ R e

Le rapport expérimentales des amplitudes entre la sortie et l’entrée est égale à 0.46.

Page 4
On constate que la valeur expérimentale qu’on a trouvé est proche de la valeur théorique avec une
0,46−0,4
erreur de ∗100=15 % est ça est dû a une multitude de composants qui constitue le
0,4
circuit interne de la carte DSP.
Le filtre passif présente l’avantage de ne pas écrêter le signal (à condition de choisir les composants
supportant les tensions et courants qui leur sont appliqués).
Autrement dit, ils ne peuvent qu’atténuer en partie des signaux mais pas les amplifier.
Donc un filtre passif de type RC à l’entrée de chacune des voies du CAN du codec a un rôle de
repliement.
Filtre passif est l’usage exclusif de composants passifs (R,C,L) leur gain gain (rapport de puissance
entre la sortie et l’entrée) ne peut excéder 1 .
En utilisant la documentation du Codec AD1847, le registre interne du Codec qui permet de
modifier la fréquence d’échantillonnage est le Data Format Register (Index Address 8) :

2. Test du logiciel Bande Passante :

Page 5
Dans cette partie, la démo permet de télécharger un filtre à réponse impulsionnelle finie.
On choisit la largeur de bande entre 328 et 448Hz.
On fait varier la fréquence sur le GBF et on note la valeur d’amplitude de sortie et le gain en db

Fréquence (Hz) 280 300 Fmin=328 F0=383 Fmax=448 500 520

Amplitude de Vs(V) 45 56 128 150 140 114 50

Gain (db) -27 -25.03 -17.85 -16.48 -15,64 -17,23 -26.

la fréquence centrale est f 0 = √ f min . f max = √ 328.448=383,33 Hz → c’est un filtre très efficace.

G 2(db)−G 1(db) −17.5+25,8


p(dB /decade)= = =277 dB /décade
f1 300
log ( ) log ( )
f2 280

On a alors un filtre d’ordre 2

Scanned by TapScanner
Page 6
II. Premiers programmes à partir de CANEVAS.C
Dans cette partie on doit gérer les entrées/sorties analogiques de l’EZ-KIT et le but c’est de bien
comprendre le mécanisme des interruptions matérielles.

1. Recopier l’entrée gauche (LIN) sur la sortie gauche (LOUT)


Le codec échantillonne sur les deux voies d’entrée à 8KHz. Ce qu’on constate bien évidemment sur
le fichier Canevas.c

On initialise les valeurs numériques de l’entrée et sortie, par la suite on affecte entrée à inputJ23
voie gauche verte.
Par la suite on doit multiplier l’entrée par une valeur pour compenser l’atténuation, ensuite on
affecte la sortie à output J22 voie gauche verte :

2. Recopier l’entrée droite (RIN) sur la sortie droite (ROUT)


On procède de la même façon que la première question, sauf cette fois-ci tout se passera sur l’entrée
droite et la sortie droite :

Page 7
3. Changement de la fréquence d’échantillonnage
On a choisi d’échantillonner à une fréquence de fe=16Khz.
Pour avoir une fréquence d’échantillonnage qui correspond à 16Khz il faut utiliser le Data Format
Register :

d’après le tableau on aura bien CFS2=2 ce qui donne en binaire 010

0 1 0 1 0 0 1 0

Donc après le calcul on trouve que le registre 8 va contenir la valeur 0xC852

4. T_periode et T_count
Au début on avait pour une interruption de 0.25s T_count=10000000 et T_period=10000000
et dans cette partie on souhaite avoir une interruption chaque 2s donc on a 0.25*8=2s
Alors 10000000 *8=80000000

Page 8
III. Génération de signaux.
III.1. Un exemple simple.
A partir de CANEVAS.C, on écrit un programme GEN_SIN.C qui génère de
façon autonome un signal sinusoïdal sur la sortie LOUT de fréquence fixe
égale à 1 kHz et d’amplitude crête à crête de 1V.

L’expression temporelle en « temps continu » du signal de sortie :

yL(t) = Ym.sin(2pf0t) ; Ym = 0.5 ; f0 = 1khz ;

pour réaliser le programme, il faut qu’on discrétise ce signal et on n’aura accès


à chaque interruption DMA qu’à des instants tn=nTe .

 Pour ce faire, on doit d’abord modifier la fréquence d’échantillonnage.

On a choisit d’échantillonner à Fe=32 Khz ;


Pour modifier la fréquence d’échantillonnage on doit modifier la valeur de
registre DATA FORMAT REGISTER (Index Adress 8):

On remarque que la fréquence Fe=32khz est dans la colonne XTAL1, donc


CSL=0 ; et dans la 4ème ligne, ce qui correspond à CFS 2 :0= 3=011
Donc, on aura :
CFS2 CFS1 CFS0 CSL
res FMT C/L C/M 0 1 1 0
Data7 Data6 Data5 Data4 Data3 Data2 Data1 Data0

0110=6
Sur le programme c : Le registre d’index 8 aura la valeur de 0xC856 (Fe
=32khz).
 Ensuite, on doit calculer le pas de quantification :
n= 16 bits ; nombre de classes N=2^16=65 536
Le pas de quantification : q=(M-m)/N=(1.4-(-1.4))/65536=2.8/65536
q=4.2724609375*10-5
Ym=n*q ; 0.5=n*q ; donc n=0.5/q=0.5/(4.2724609375*10-5)
n=11703

L’expression du signal discrétisé est :

Yn=11703.024*sin(2*π*f0*n*Te)= 11703.024*sin(2*π*1*n*(1/32))
Yn= 11703.024*sin(0.1963495408*n)

Programme :
Le graphe :

Mesure de la fréquence et de l’amplitude du signal de sortie :


On a d’après l’image ci-dessus :
La fréquence : On a 4 carreaux par période, et chaque carreau correspond à 250
us, donc :
Te=250*4=1000 us= 10-3s ; d’où Fe=1/Te= 1/10-3 =103 hz= 1khz.
L’amplitude : On a 4 carreaux par période, et chaque carreau correspond à 200
mv, donc : A=0.8V crête à crête.

III.2. Dans la mesure du temps disponible :

A partir de CANEVAS.C , on génère un signal triangulaire symétrique, à


composante continue nulle et de même caractéristique sur sa sortie ROUT en
écrivant un programme GEN_TRI.C.
On commencera à écrire l’expression par intervalle d’un signal triangulaire
d’amplitude E et de période T0 =1/f0 en « temps continu » puis, comme dans le
cas précédent, on « discrétisera » le temps.
On choisit d’échantillonner à la fréquence Fe=32 khz.
Donc sur le programme c : Le registre d’index 8 aura la valeur de 0xC856
Programme:

Le graphe :
Mesure de la fréquence et de l’amplitude du signal de sortie :
On a d’après l’image ci-dessus :
La fréquence : On a 5 carreaux par période, et chaque carreau correspond à 200
us, donc :
Te=200*5=1000 us= 10-3s ; d’où Fe=1/Te= 1/10-3 =103 hz= 1khz.
L’amplitude : On a 4 carreaux par période, et chaque carreau correspond à 200
mv, donc : A=0.8V crête à crête.

III.3. Synthèse avec deux interruptions : génération de sons.


On écrit un programme MUSIC.C qui génère un petit morceau de musique
d’une dizaine de notes avec une temporisation égale à ½ seconde par note,
pilotée par l’interruption du timer

Donc il s’agit de faire les trois étapes suivantes :

1. Piloter le timer avec une durée de ½ seconde :


On doit modifier les valeurs des registres de timer avec la foncion timer_set :
On calcule la valeur correspondante à ½ seconde :
On a :
0.25 s > 10000000
0.5s >x
x= 0.5*10000000/0.25=20000000

Programme pour piloter le timer :


2. changer la fréquence du signal sinusoïdal toutes les ½ secondes
Programme pour varier la fréquence :

3. générer un signal sinusoïdal à des fréquences différentes


Programme correspondant à l’expression du signal :
IV. Filtrage numérique
Le but dans cette partie est d’implémenter sur le DSP quelques algorithmes de filtrage numérique
(Réponse impulsionnelle finie, Réponse impulsionnelle infinie).

1. Synthèse manuelle
On commence d’abord par calculer les coefficients d’un filtre passe-bas de fréquence de coupure
fc=2KHz et fe=32KHz à partir d’un filtre analogique de Butterworth d’ordre 2
J’ai choisi pour faire les calculs la méthode de transformation bilinéaire

Scanned by TapScanner Page 11


On trouve bien un filtre passe bas et on observe que à -3db on a une fréquence de coupure qui est
égale à fc=2000Hz

Page 12

Vous aimerez peut-être aussi