Cours de MICROINFORMATIQUE
Section de microtechnique
Ann´ee 2005 - 2006
Travaux pratiques
TP: DSPCalcul
Titre: Optimisation de code de calcul par combinaison de C et d’assembleur
But: Compenser les limitations du code g´en´er´e par le compilateur C par des
fonctions coee en assembleur. Utilisation de l’instruction dsp MAC. Ap-
plication au filtrage num´erique
Dur´ee: 3 heures
Support: -
Mat´eriel: -
Introduction
Le traitement de signal demande souvent du calcul performant. Une des instructions cl´e des pro-
cesseurs pour le traitement du signal (DSP) est l’instruction MAC. Les op´erations ex´ecut´ees par
cette instruction s’appliquent parfaitement au calcul de filtres num´erique. Le but de ce TP est de
comprendre le fonctionnement et la puissance de cette instruction.
Calcul DSP
Cr´eez un projet avec le code C exampleTP4.c et product.s qui se trouvent sur le site WEB du
TP. Testez ce code en simulation (n’oubliez pas d’activer la simulation de UART sous Debugger -
Settings ... et de donner une taille au heap sous Project - Build options ...).
Comprenez le code utilis´e. En particulier:
Comment sont d´eclar´es array1 et array2? Pour quelle raison?
Pourquoi array3 est-il d´eclar´e comme long?
Pourquoi est-ce que W8 et W10 sont-il sauv´es sur la pile?
Pourquoi le code assembleur utilise-t-il W8 et W10 comme pointeurs, et non pas des registres
comme W0 et W1?
Comment se fait le balayage de la m´emoire des array? Combien de temps prend cette
op´eration?
Simulez l’ex´ecution en pas `a pas et v´erifiez les op´eration r´ealis´ees par les deux lignes de code
suivantes, en observant en particulier les registres W4,W7,W8,W10 et A:
CLR A, [W8]+=2, W4, [W10]+=2, W7
MPY W4*W7, A, [W8]+=2, W4, [W10]+=2, W7
Comparaison C - assembleur DSP
Re-´ecrivez la fonction product en C et remplacez la fonction ´ecrite en assembleur. Essayez de
copiler avec et sans optimisation (O3). Comparez le codage et les temps d’´ex´ecution des trois
impl´ementations.
Instruction MAC
Remplacez l’instruction MPY par l’instruction MAC et v´erifiez `a nouveau l’ex´ecution en observant que
l’addition a bien lieu.
Moyenne
Changez la efinition de ARRAYSIZE afin de la faire valoir 100 et eclarez une variable locale `a
main qui s’app´elle start. Modifiez le code (C et/ou assembleur) afin de r´ealiser une moyenne
sur 8 valeurs `a partir de l’´el´ement start du vecteur array1. Utilisez array2 pour stocker les
coefficients de moyennage. Stockez la moyenne obtenue dans l’´el´ement num´ero start du vecteur
array3. erifiez le fonctionnement de votre code.
Remarque: pour une boucle d’une seule instruction il faut utiliser l’instruction REPEAT au lieu de
l’instruction DO.
Adressage modulo
Le dsPIC dispose, pour permettre une meilleure efficacit´e lors de l’utilisation de l’instruction MAC,
d’un adressage de type modulo. En quoi consiste ce type d’adressage? Cherchez sa d´efinition dans
la documentation et comprenez sa mise en ouvre (registes impliqu´es, leur initialisation). Appliquez
ce type d’adressage au cas d’une moyenne appliqu´ee `a quatre signaux simultan´ement.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !