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

Devoire DSP

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTRE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA


RECHERCHE SCIENTIFIQUE

UNIVERSITE SAAD DAHLEB BLIDA-1-


FACULTE DES SCIENCES DE L’ENGINIEUR
DEPARTEMENT D’ELECTRONIQUE
Devoir dsp

Option : INSTRUMENTATION

µp & dsp

 Réalisation : Diriger par :

 Chemali Nassim  Mme: H.Ait Abdesslam


-

Année universitaire : 2019/2020


Filtre Numérique
Définition :
En électronique, un filtre numérique est un élément qui effectue un filtrage à l'aide d'une
succession d'opérations mathématiques sur un signal discret. C'est-à-dire qu'il modifie
le contenu spectral du signal d'entrée en atténuant ou éliminant certaines composantes
spectrales indésirées. Contrairement aux filtres analogiques, qui sont réalisés à l'aide
d'un agencement de composantes physiques (résistance, condensateur, inductance,
transistor, etc.), Les filtres numériques étant généralement réalisés par des
processeurs, ils sont définis à l'aide de langages de programmation [9]. Les filtres
numériques peuvent, en théorie, réaliser la totalité des effets de filtrage pouvant être
définis par des fonctions mathématiques ou des algorithmes. Les deux principales
limitations des filtres numériques sont la vitesse et le coût. La vitesse du filtre est limitée
par la vitesse (l'horloge, le « clock » en anglais) du processeur. Pour ce qui est du coût,
celui-ci dépend du type de processeur utilisé. Par contre, le prix des circuits intégrés ne
cesse de diminuer, et les filtres numériques se retrouvent partout dans notre
environnement, radio, téléphone cellulaire, télévision, lecteurs MP3, etc. Un filtre
numérique peut être défini par une équation aux différences, c'est-à-dire l'opération
mathématique du filtre dans le domaine temporel (discret). La forme générale du filtre
d'ordre M est la suivante :

Filtre FIR
En traitement numérique du signal, le filtre à réponse impulsionnelle finie ou filtre RIF
(en anglais Finite Impulse Responsefilter ou FIR filtre) est un filtre numérique qui est
caractérisé par une réponse uniquement basée sur un nombre fini de valeurs du signal
d'entrée. Par conséquent, quel que soit le filtre, sa réponse impulsionnelle sera stable et
de durée finie dépendante du nombre de coefficients du filtre. Parmi les filtres linéaires,
les filtres à réponse impulsionnelle finie, sont opposés aux filtre à réponse
impulsionnelle infinie (filtre RII) qui eux ne peuvent être réalisés qu'avec des
implémentations récursives qui remplacent une convolution sur une plage infinie, par un
nombre fini d'états internes qui dépendent de l'histoire passée du filtre. De façon
générale le filtre à réponse impulsionnelle finie est décrit par la combinaison linéaire
suivante :

où x[i]1 ≤ i ≤ n représente les valeurs du signal d'entrée et y[i]1 ≤ i ≤ n les valeurs


du signal de sortie. Puisque la réponse est une somme d'un nombre fini de valeurs, le
filtre RIF est naturellement stable d'après le critère Entrée Bornée/Sortie Bornée. Les
remarques générales suivantes peuvent être portées sur les filtres FIR : • Les filtres FIR
sont forcément stables, peu importe les coefficients utilisés • La complexité d'un filtre
IIR(Infinite Impulse Responsefilter )est moindre que celle d'un filtre RIF du même ordre.
Cette propriété peut être utile sur les plateformes limitées en puissance de calcul •
Généralement, les filtres FIR sont moins sensibles aux erreurs de quantification que les
filtres RII. L'absence de récursivité empêche les erreurs cumulatives. • Un filtre FIR est
moins sélectif qu'un filtre IIR du même ordre. C'est-à-dire que la transition entre la
bande passante et la bande rejetée est moins rapide que dans le cas du filtre IIR. •
Contrairement à un IIR, un filtre FIR peut avoir une réponse impulsionnelle symétrique
et introduire un retard sur le signal mais aucun déphasage. Les filtres numériques
peuvent être réalisés à l'aide de trois éléments ou opérations de base. Soit l'élément
gain, l'élément de sommation et le retard unitaire. Ces éléments sont suffisants pour
réaliser tous les filtres numériques linéaires possibles. La réalisation présentée dans la
figure suivante est une réalisation directe de type 1 du filtre FIR
Programme principal en langage C du filtre FIR passe-bas de fréquence de coupure
1500Hz :
#include "dsk6713_aic23.h" // fichier support pour le codec et le DSK
#define Nbr_coeff 81

Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; // fréquence d’échantillonnage


int sorie = 0; //initialiser la sortie du filtre
short h[Nbr_coeff]=
{
-6, 13, 42, 52, 14, -40, -45, 18, 74, 35, -70, -100, 12, 137, 89, -105, -192, -14,
228, 188, -142, -338,-76,361, 361, -179, -579, -208, 569, 685, -209, -1040, 519, 992,
1496,
-229, -2492, -1827, 3237, 9832, 12872, 9832, 3237, -1827, -2492, -229, 1496, 992, -
519,
-1040, -209, 685, 569, -208, -579, -179, 361, 361, -76, -338, -142,188,228, 14, -192, -
105, 89, 137, 12, -100, -70, 35, 74, 18, -45, -40, 14, 52, 42, 13, -6};
short X_retard[Nbr_coeff]; //échantillons retardés
interrupt void c_int11() //ISR
{
short i;

X_retard [0]=input_sample(); //le nouvel échantillon d’entrée


sortie = 0; // initialiser la sortie du filtre
for (i = 0; i< N; i++)
sortie =sortie+ (h[i] * X_retard [i]); //sortie(n) += h(i)* x(n-i)
for (i = Nbr_coeff-1; i > 0; i--)
X_retard [i] = X_retard [i-1]; // déplacer les échantillons retardés
output_sample(sortie >> 15); //échantillon de sortie du filtre en format short
return;
}
void main()
{
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop

TMS320C

TMS320C:
La famille TMS320 de processeurs de signaux numériques à une seule puce 16/32 bits
combine la flexibilité d'un contrôleur avec la capacité numérique d'un processeur de
matrice, offrant ainsi une alternative peu coûteuse à processeurs multi chip bit-slice.
L'architecture hautement parallèle et le jeu d'instructions efficace offrent vitesse et
flexibilité pour produire une famille de microprocesseurs MOS capable d'exécuter plus
de 12,5 MIPS (millions instructions par section). La famille TMS320 optimise la vitesse
en implémentant des fonctions dans le matériel que d'autres les processeurs
implémentent via un microcode ou un logiciel. Cette approche à forte intensité de
matériel fournit la conception ingénieur avec une puissance de traitement auparavant
indisponible sur une seule puce. La famille TMS320 comprend trois générations de
processeurs de signaux numériques. La première génération contient le TMS32010 et
ses retombées. La deuxième génération comprend les TMS32020, TMS320C25 et
TMS320E25, qui sont décrits dans cette fiche technique. Le TMS320C30 est un
appareil DSP à virgule flottante conçu pour encore plus performance. De nombreuses
fonctionnalités sont communes aux processeurs TMS320. Des fonctionnalités
spécifiques sont ajoutées dans chaque processeur pour fournir différents compromis
coût / performance. La compatibilité logicielle est maintenue tout au long du famille pour
protéger l’investissement de l’utilisateur dans l’architecture. Chaque processeur dispose
d'outils logiciels et matériels pour faciliter la conception rapide.
il existe plusieurs modèles de cette famille par exemple TMS320C6713.
Description du DSP TMS320C6713 :
Le TMS320C6713 de la carte DSK est un processeur à virgule flottante basée sur
l'architecture VLIW, il contient une mémoire interne comprend une architecture de
cache à deux niveaux avec 4 Ko de cache de niveau 1 du programme (L1P), 4 Ko de
niveau 1 de cache de données (L1D), et 256 Ko de mémoire de niveau 2 partagé entre
le programme et de l'espace de données. Il dispose d'une interface directe pour les
deux mémoires synchrones (SDRAM et SBSRAM) et les mémoires asynchrones
(SRAM et EPROM). Mémoire synchrone nécessite d'horloge, mais offre un compromis
entre une mémoire statique SRAM et une mémoire dynamique DRAM, avec SRAM est
plus rapide mais plus cher que la DRAM[2]. Périphériques sur puce comprennent deux
McBSPs, deux timers, une interface de port d'hôte (HPI), et un EMIF 32-bit. Il nécessite
3,3 V pour I / O et 1,26 V pour le noyau (interne). Bus internes comprennent un bus
d'adresse programme 32 bits, un bus de données programme 256-bit pour accueillir
huit instructions 32 bits, deux bus de données d'adresses 32 bits, deux bus de données
64 bits et deux bus de données stockent 64 bits. Avec un bus d'adresse de 32bits dont
quatre espaces extérieurs de mémoire : ce0, CE1, CE2 et CE3 et l'espace total de la
mémoire est de 232 = 4 Go.
Les banques de mémoire indépendantes sur la C6x permettent de deux accès mémoire
dans un cycle d'instruction. Deux banques de mémoire indépendantes sont accessibles
via deux bus indépendants. La mémoire interne est organisée dans les banques de
mémoire, deux charges ou deux stocks d'instructions peuvent être exécutées en
parallèle. Aucun résultat de conflits si les données accédées se trouvent dans les
différentes banques de mémoire. Les bus sont séparés pour le programme, les
données, et l'accès direct à la mémoire (DMA) permet de récupérer les données dans
un programme pour lire et écrire. Avec les données et les instructions résidant dans des
espaces mémoire séparés donc on peut accéder simultanés à la mémoire. Le C6x
dispose d'un espace mémoire adressable par octet. La mémoire interne est organisé
mémoire de programme distinct et un autre espace de mémoire de données, avec deux
ports internes de 32 bits pour accéder à la mémoire interne. Le C6713 sur la carte DSK
comprend 264KB de mémoire interne, qui commence à 0x00000000, et 16 Mo de
SDRAM externe, repérés à travers CE0 à partir de 0x80000000. La carte DSK
comprend également 512 Ko de mémoire flash (256 kB facilement disponibles pour
l'utilisateur), tracée à travers CE1 à partir de 0x90000000.

. La carte DSK fonctionne à 225MHz, on peut idéalement atteindre deux se multiplie et


s'accumule par cycle, pour un total de 450 millions multiplie et accumule (MAC) par
seconde. Avec six parmi huit unités fonctionnelles dans la figure 3.1 (pas les unités. D
décrites ci-dessus) capable de gérer des opérations en virgule flottante, il est possible
d'effectuer 1350000000 opérations en virgule flottante par seconde (MFLOPS).
Fonctionnant à 225MHz, cela se traduit par 1,8 milliards d'instructions par seconde
(MIPS) avec un temps de cycle de l'enseignement 4,44 ns.

Vous aimerez peut-être aussi