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 cod´ee 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.