diff --git a/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s b/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s index a97462a..f196410 100644 --- a/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s +++ b/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s @@ -48,7 +48,7 @@ SumLoop and r7, #0x3F ; mod 64 add r4, #1 ; ++n cmp r4, #64 ; - bcc SumLoop ; if n < 64 refaire + blt SumLoop ; if n < 64 refaire mov r0, r3 ; 5.27 smull r0, r9, r3, r3 ; reel*reel diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index a97462a..2d2353c 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -24,7 +24,7 @@ export DFT_ModuleAuCarre ;for i in 0...63 -;signal[i]*Cos[k*i] +;signal[i]*Cos[k*i] += DFT_ModuleAuCarre proc push {r4, r5, r6, r8, r9, r10} ; @@ -36,25 +36,31 @@ DFT_ModuleAuCarre proc ldr r6, =TabSin ; les adresses du tableau "TabSin" SumLoop - ldrsh r8, [r0, r4, lsl #1] ; Chargement des éléments du signal d'entrée - ldrsh r9, [r5, r7, lsl #1] ;Cos - ldrsh r10,[r6, r7, lsl #1] ;Sin - mul r9, r8, r9 ; Multiplication de l'élément du signal d'entrée avec l'élément correspondant des tableaux "TabCos" et "TabSin" (en utilisant une multiplication longue pour éviter la saturation). - mul r10, r8, r10 - add r3, r3, r9 ; Mise à jour des parties réelles et imaginaires du résultat. - add r2, r2, r10 + ldrsh r8, [r0, r4, lsl #1] ; Chargement des éléments du signal d'entrée 4.12 + ldrsh r9, [r5, r7, lsl #1] ;Cos 1.15 + ldrsh r10,[r6, r7, lsl #1] ;Sin 1.15 + mul r9, r8, r9 ;* Multiplication de l'élément du signal d'entrée avec l'élément correspondant des tableaux "TabCos" et "TabSin" (en utilisant une multiplication longue pour éviter la saturation). + mul r10, r8, r10 ;5.27 + asr r9, #6 + asr r10, #6 + add r3, r3, r9 ; +=Mise à jour des parties réelles et imaginaires du résultat. + add r2, r2, r10 ;5+6 11.21 mul r7, r4, r1 ; i*k and r7, #0x3F ; mod 64 - add r4, #1 ; ++n + add r4, r4, #1 ; ++n cmp r4, #64 ; - bcc SumLoop ; if n < 64 refaire + blt SumLoop ; if n < 64 refaire - mov r0, r3 ; 5.27 - smull r0, r9, r3, r3 ; reel*reel + mov r0, r3 ; 5.27 reel + asr r3, #16 + mul r9, r3, r3 ; reel*reel mov r0, r9 - smull r0, r10, r2, r2 ; im*im + asr r2, #16 + mul r10, r2, r2 ; im*im add r0, r9, r10 ; 10.22 + + ;mov r0, r2 ;test im pop {r4, r5, r6, r8, r9, r10} bx lr diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx index c58527a..4a552af 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx @@ -165,6 +165,11 @@ 1 test[k] + + 2 + 1 + \\StepDFT\Src/principal.c\test[32] +