Vous êtes sur la page 1sur 14

Ecole Nationale d’Électronique et des 2014/2015

Télécommunications de Sfax

2ème année
Génie Télécommunication

TD 1 DSP
Exercice 1 :

1) Donner les résultats après exécution de ces instructions :

SHLMB 0x11223344, 0xFE1A87C2, H ; H = ………..……………


0X1A87C211
MPY 0xFE1A87C2, 0x00000001, I ; I = ………..……………
0X000087C2
MPY2 0x00010002, 0x00020002, J:K ; J = ………..……………
0X00000004
K = ……………………
0X00000002
MPY4 0x24252627, 0x01000101, J:K ; J = ………..……………
0X00260027
K = ……………………..
0X00240000

ENET‘com 2014-2015 Cours DSP, TD 1 2


2) Donner les résultats après exécution de ces instructions, sachant que les
registres A, B, C, D sont initialisés à zéro :

ADD2 0xEFFEEFFE, 0x21011012, A 0x 10 FF 00 10


; A=………………………

MPY 0xEFFEEFFE, 0x0FEA1001, B ; B=……………………….


0x 0F 00 CF FE

MVKH 0x0005 , C ; C=……………………….


0x 00 00 00 00

ADD4 0xEFFEEFFE, 0x11111111, D ; D=………………………


0x 00 0F 00 0F

ENET‘com 2014-2015 Cours DSP, TD 1 3


3) Soit le code suivant :

MVK .S1 0x10000, A2

MVK .S1 0x28, A1

[!A2] SUB .D1 A1, 1, A1

|| [ A2] ADD .S1 A5, A3, A3

Sachant que A5 = 0x10 et A3 = 0x25, quel est la valeur de A1 et A3

après l’exécution de ce code ?

A1 = …………………. Et A3 = ………………….
0x 00000027 0x 00000025

ENET‘com 2014-2015 Cours DSP, TD 1 4


Exercice 2 :
1) Soit l’instruction suivante : LDH *A0++ (2), A1

Sachant que A0 = 0x00001234 et que dans la mémoire à partir de

l’adresse 0x00001234 on a les données suivantes : 0x06, 0x76, 0x54,

0x12, 0x11, 0xAF, 0x72 et 0x52.

Quel est la valeur de A0 et A1 après l’exécution de cette instruction ?

1 cycle A0 = …………………. Et A1 = ………………….


0x 00001238 0x XXXXXXXX
5 cycles A0 = …………………. Et A1 = ………………….
0x 00001238 0x 00007606

ENET‘com 2014-2015 Cours DSP, TD 1 5


2) Soit l’instruction suivante : LDW *++ A0, A1

Sachant que A0 = 0x00001234 et que dans la mémoire à partir de

l’adresse 0x00001234 on a les données suivantes : 0x06, 0x76, 0x54,

0x12, 0x11, 0xAF, 0x72 et 0x52.

Quel est la valeur de A0 et A1 après l’exécution de cette instruction ?

1 cycle A0 = …………………. Et A1 = ………………….


0x 00001238 0x XXXXXXXX
5 cycles A0 = …………………. Et A1 = ………………….
0x 00001238 0x 5272AF11

ENET‘com 2014-2015 Cours DSP, TD 1 6


3) Soit l’instruction suivante : LDW *A0++, A1

Sachant que A0 = 0x00001234 et que dans la mémoire à partir de

l’adresse 0x00001234 on a les données suivantes : 0x06, 0x76, 0x54,

0x12, 0x11, 0xAF, 0x72 et 0x52.

Quel est la valeur de A0 et A1 après l’exécution de cette instruction ?

1 cycle A0 = …………………. Et A1 = ………………….


0x 00001238 0x XXXXXXXX
5 cycles A0 = …………………. Et A1 = ………………….
0x 00001238 0x 12 54 76 06

ENET‘com 2014-2015 Cours DSP, TD 1 7


4) Soit l’instruction suivante : LDW *+A0, A1

Sachant que A0 = 0x00001234 et que dans la mémoire à partir de

l’adresse 0x00001234 on a les données suivantes : 0x06, 0x76, 0x54,

0x12, 0x11, 0xAF, 0x72 et 0x52.

Quel est la valeur de A0 et A1 après l’exécution de cette instruction ?

1 cycle A0 = …………………. Et A1 = ………………….


0x 00001234 0x XXXXXXXX
5 cycles A0 = …………………. Et A1 = ………………….
0x 00001234 0x 52 72 AF 11

ENET‘com 2014-2015 Cours DSP, TD 1 8


5) Dans la mémoire L1D et à partir de l'adresse 0x00001230, on a les
octets suivants : FE, A3, BF, 74, 59, A6, A1, 11, 61, C5, E0, 45, 6D, FF,
29, 5A, 4E, 58, 82, A0, FA, 52, 6B.
Sachant que la valeur initiale de A0=0x00001230, déterminer le contenu
des registres A0 et B0 après exécutions des instructions suivantes :
(Noté bien que les 4 cas sont indépendants)
1er cas : LDW .D1 *++A0(2), B0
Après 1 Cycle A0=………………,
0x 00 00 12 38 B0=………………………
0x XX XX XX XX
Après 5 Cycles A0=………………,
0x 00 00 12 38
B0=………………………
0x 45 E0 C5 61

2ème cas : LDH .D1 *A0++(2), B0


Après 1 Cycle A0=………………,
0x 00 00 12 34 B0=……………………
0x XX XX XX XX
Après 5 Cycles A0=………………, B0=……………………
0x 00 00 A3 FE
0x 00 00 12 34
ENET‘com 2014-2015 Cours DSP, TD 1 9
5) Dans la mémoire L1D et à partir de l'adresse 0x00001230, on a les
octets suivants : FE, A3, BF, 74, 59, A6, A1, 11, 61, C5, E0, 45, 6D, FF,
29, 5A, 4E, 58, 82, A0, FA, 52, 6B.
Sachant que la valeur initiale de A0=0x00001230, déterminer le contenu
des registres A0 et B0 après exécutions des instructions suivantes :
(Noté bien que les 4 cas sont indépendants)
3ème cas : LDW .D1 *+A0(2), B0
Après 1 Cycle A0=…………………,
0x 00 00 12 30 B0=……………………
0x XX XX XX XX
Après 5 Cycles A0=…………………,
0x 00 00 12 30
B0=……………………
0x 45 E0 C5 61

4ème cas : LDW .D1 *++A0, B0


Après 1 Cycle A0=…………………,
0x 00 00 12 34 B0=……………………
0x XX XX XX XX
Après 5 Cycles A0=…………………, B0=……………………
0x 00 00 12 34 0x 11 A1 A6 59
ENET‘com 2014-2015 Cours DSP, TD 1 10
Exercice 3 :

Déterminer si les instructions exécutées sur le C64 suivantes sont


valides. Si non, proposer une correction :

ADD2 .L2 A0, B0, B0 LDW .D2 *B0, A0 MVKH .L1 0x0123, A0

|| LDW .D2 *B1, B2:B3 || STW .D1 A3, *A1 || ADD .S2x B0, A1, A2

|| LDB .D2 *A1, A4 SUB4 .L1 A5, B5, A3 || SUB .L1 A3, B6, A4

Valid : oui non Valid : oui non Valid : oui non

Correction si non: Correction si non: Correction si non:


ADD2 .L2x A0, B0, B0 LDW .D2 *B0, B0 MVKH .L2 0x0123, B1
|| LDW .D2 *B1, B2:B3 || STW .D1 A3, *A1 || ADD .S2x B0, A1, B2
|| LDB .D1 *A1, A4 SUB4 .L1x A5, B5, A3 || SUB .L1x A3, B6, A4

ENET‘com 2014-2015 Cours DSP, TD 1 11


Exercice 5 :
1) Ajouter les instruction NOP pour le bon fonctionnement du code
sur un DSP C6000 :
MVK .L2 0x10, B1

ET1: ADD .L1 A2, A3, A4

MPY .M1 A4, A5, A6

NOP
ADD .L1 A6, A2, A4

SUB .L2 B1, 1, B1

[B1] B .S2 ET1

NOP 5

ENET‘com 2014-2015 Cours DSP, TD 1 12


2) Déterminer le nombre de cycle pour exécuter le code :
16 x 11 = 176 cycles

3) Réécrire le code en optimisant le nombre de cycle d’exécution :


MVK .L2 0x10, B1
ET1: SUB .L2 B1, 1, B1
[B1] B .S2 ET1
ADD .L1 A2, A3, A4
MPY .M1 A4, A5, A6
NOP
ADD .L1 A6, A2, A4
NOP
4) Déterminer de nouveau le nombre de cycle pour exécuter le
code optimisé et déduire le pourcentage de gain :
16 x 7 = 112 cycles => Gain= 36%
ENET‘com 2014-2015 Cours DSP, TD 1 13
FIN

ENET‘com 2014-2015 Cours DSP, TD 1 14