diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s b/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s index ffda877..4986573 100644 --- a/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -37,20 +37,24 @@ Sommation 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) + mul r9, r8, r9 ; multiplication de LeSignal[n] par TabCos[n*k]-->5.27 + mul r10, r8, r10 ; multiplication de LeSignal[n] par TabSin[n*k] -->5.27 + asr r9, #16 ; -->format 5.11 me probleme de debordement + asr r10,#16 ;-->format 5.11 + add r3,r3, r9 ;ajout de la partie réelle au résultat (conservation du format) -->11.11 + add r2,r2, r10 ;ajout de la partie imaginaire au résultat (conservation du format) -->11.11 a cause de 64 additions 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 + asr r3, #6 ; décalage de 10 bits vers la droite pour rétablir le format --> 11.5 + mul r3, r3, r3 ; la partie relle au carre -->10.22 + asr r2, #6 ; décalage de 10 bits vers la droite pour rétablir le format -->11.5 + mul r2, r2, r2 ; la partie imaginaire au carre -->22.10 mov r0, r3 ; copie de la partie rélle dans r0 - mov r1, r2 ; copie de la partie rélle dans r1 + add r0, r0, r2 ; addition de la partie imaginaire dans r0 forme final--> 22.10 pop{r4-r10} ; restauration des registres depuis la pile bx lr