diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index d266085..1074347 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -1,6 +1,8 @@ PRESERVE8 THUMB export DFTReel + export DFTImage + export DFTTotale import LeSignal ; ====================== zone de réservation de données, ====================================== @@ -28,12 +30,12 @@ DFTReel proc mov r3, #0 ;;Pour i allant de 0 à M-1 (ici, M = 64) -SommeFor +SommeForReel ;; Rsom += Signal[i] * TabCos[k*i] ldrsh r4, [r0,r3,lsl #1] mul r5, r1, r3 and r5, #63 - mov r7, r5 + ;;mov r7, r5 ;mul r7, r5 ldr r6, =TabCos ldrsh r5, [r6,r5,lsl #1] @@ -41,7 +43,7 @@ SommeFor mla r2, r4, r5, r2 add r3, #1 cmp r3, #64 - bne SommeFor + bne SommeForReel ;;Fin Pour mov r0, r2 pop {pc} @@ -49,8 +51,52 @@ SommeFor endp ;;// Renvoie Rsom, Isom (format 5.27) ou Rsom^2 + Isom^2 (format 10.54) +;; DFT Partie imaginaire + +DFTImage proc + push {lr} + mov r2, #0 + mov r3, #0 + +;;Pour i allant de 0 à M-1 (ici, M = 64) +SommeForImage +;; Rsom += Signal[i] * TabCos[k*i] + ldrsh r4, [r0,r3,lsl #1] + mul r5, r1, r3 + and r5, #63 + ;;mov r7, r5 + ;mul r7, r5 + ldr r6, =TabSin + ldrsh r5, [r6,r5,lsl #1] + ;;smlal r2, r7, r4, r5 + mla r2, r4, r5, r2 + add r3, #1 + cmp r3, #64 + bne SommeForImage +;;Fin Pour + mov r0, r2 + pop {pc} + + endp +DFTTotale proc + push {lr} + mov r7, r0 + mov r8, r1 + bl DFTReel + mov r3, r7 + mov r7, r0 + mov r0, r4 + mov r3, r8 + mov r8, r1 + mov r1, r3 + bl DFTImage + smull r0, r1, r0, r0 + smlal r0, r1, r7, r7 + + pop {pc} + endp ;Section ROM code (read only) : AREA Trigo, DATA, READONLY