etape 1 et etape 2 de la DFT
This commit is contained in:
parent
53da396e3a
commit
73ca68e69d
1 changed files with 37 additions and 3 deletions
|
@ -2,7 +2,7 @@
|
||||||
THUMB
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
; ====================== zone de réservation de données, ======================================
|
; ====================== zone de réservation de données, ======================================
|
||||||
;Section RAM (read only) :
|
;Section RAM (read only) :
|
||||||
area mesdata,data,readonly
|
area mesdata,data,readonly
|
||||||
|
|
||||||
|
@ -19,8 +19,42 @@
|
||||||
|
|
||||||
;Section ROM code (read only) :
|
;Section ROM code (read only) :
|
||||||
area moncode,code,readonly
|
area moncode,code,readonly
|
||||||
; écrire le code ici
|
; écrire le code ici
|
||||||
|
|
||||||
|
export DFT_ModuleAuCarre
|
||||||
|
DFT_ModuleAuCarre proc
|
||||||
|
push{r4-r10}; sauvegarde des registres dans la pile
|
||||||
|
mov r2, #0 ;initialisation de la partie imaginaire à zero
|
||||||
|
mov r3, #0 ;initialisation de la partie relle à zero
|
||||||
|
mov r7 ,#0 ;initialisation de p(=n*k) à zero
|
||||||
|
mov r4 ,#0 ;initialisation de l'indice n à zero
|
||||||
|
ldr r5, =TabCos ; chargement de l'adresse de TabCos dans r5
|
||||||
|
ldr r6, =TabSin ; chargement de l'adresse de TabCos dans r5
|
||||||
|
|
||||||
|
|
||||||
|
Sommation
|
||||||
|
;Rsom += Signal[i] * TabCos[k*i]
|
||||||
|
ldrsh r8,[r0, r4, lsl#1] ; chargement du LeSignal[n] dans r8
|
||||||
|
ldrsh r9,[r5, r7, lsl #1] ; chargement de TabCos[p] dans r9
|
||||||
|
ldrsh r10,[r6, r7, lsl #1] ; chargement de TabSin[p] dans r10
|
||||||
|
mul r9, r8, r9 ; multiplication de LeSignal[n] par TabCos[n*k]
|
||||||
|
mul r10, r8, r10 ; multiplication de LeSignal[n] par TabCos[n*k]
|
||||||
|
asr r9, #15 ; décalage de 15 bits vers la droite pour rétablir le format 1.15
|
||||||
|
asr r10, #15 ; décalage de 15 bits vers la droite pour rétablir le format 1.15
|
||||||
|
add r3,r3, r9 ;ajout de la partie réelle au résultat (conservation du format)
|
||||||
|
add r2,r2, r10 ;ajout de la partie imaginaire au résultat (conservation du format)
|
||||||
|
|
||||||
|
add r7, r1 ; ajout de k à n*k ce qui fait p= (n+1)*k
|
||||||
|
add r4, r4, #1 ; incrémentation de l'indice n
|
||||||
|
cmp r4 ,#64 ; comparaison de n à 64
|
||||||
|
blt Sommation ; si n<64 on recommence la boucle
|
||||||
|
|
||||||
|
mov r0, r3 ; copie de la partie rélle dans r0
|
||||||
|
mov r1, r2 ; copie de la partie rélle dans r1
|
||||||
|
|
||||||
|
pop{r4-r10} ; restauration des registres depuis la pile
|
||||||
|
bx lr
|
||||||
|
endp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue