BE télécom 2008-2009 Présentation des bibiothèques mises à disposition pour aborder le filtrage numérique (BPSK / QPSK avec symboles analogiques) 1. Les fonctions DSP – validé Mai 2009 Une seule fonction DSP sera réellement utilisée, il s'agit de la fonction permettant de réaliser un filtre FIR (Finite Impulse Response). Afin de faire fonctionner correctement les opérations de traitement de signal DSP, les développeurs de chez Microchip proposent un type de donnée qui est dérivé de int : il s'agit du type fractional. Le type fractional Il s'agit d'un simple integer dont l'interprétation est particulière. Pour un integer classique, codé sur 16 bits, les valeurs possibles s'étalent de -32 768 à +32 767. Dans le cas d'un type fractional, on considèrera que les valeurs vont de -1,0 à +0,999969...Pour cela il suffit d'associer au bit 0 le poids 2-15, le bit 14 ayant le poids 2-1 et enfin le bit 15 est le bit de signe: Limits : –1 (1.000 0000 0000 0000b = 0x8000 ) à +0.999969... (0.111 1111 1111 1111b = 0x7FFF ) Le DSP est pourvu d'un unité arithmétique justement optimisée pour ce type de donnée. C'est la raison pour laquelle le type fractional est introduit en C (compilateur C30 de Microchip). Le module : FIR_INSA.C Le fichier d'entête : FIR_INSA.h Les fonctions : void Init_FIR(void); – initialise la fonction de filtrage avec le filtre défini dans le fichier SinCardinal_psv.s. fractional Filtre(fractional entree); – Opère le filtrage (convolution : {sn}={en}⊗{hn}) à partir de entree, fournit la réponse s(n). – Temps d'execution : environ 18µs pour tcy = 100ns et un filtre de 100 coefficients. Guide_Bibli_DSPIC_Filtrage.odt 1/2 BE télécom 2008-2009 Comment modifier la réponse imulsionnelle du filtre La réponse du filtre peut être changée en modifiant le fichier assembleur SinCardinal_psv.s. Pour cela, on peut utiliser un tableur et concaténer les nombres obtenus avec le mot « .hword » afin de coller le résultat dans le fichier assembleur. 2. Le pilotage des DAC (liaison SPI) – validé Mai 2009 C'est grâce à la liaison SPI que le DSP peut communiquer les données numériques vers les DAC (il y a deux voies). Le module : SPI_INSA.C Le fichier d'entête : SPI_INSA.h Les fonctions : float Config_SPI(float Tcy_us); – initialise le SPI par défaut à Tck=200ns – Renvoie la durée effective du transfert 16 bits (3,2us par défaut) void OutputDAC_via_SPI( int s, char voie); – Charge la valeur s dans le DAC correspondant à la voie (1 ou 2), mais la sortie du DAC reste encore inchangée. – Met à jour la sortie du DAC de la donnée précédente sur le DAC correspondant à la voie (1 ou 2). Guide_Bibli_DSPIC_Filtrage.odt 2/2