be_chti/challenge/Src/calcul_dft.s

272 lines
No EOL
7.7 KiB
ArmAsm
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

thumb
AREA moncode, code, readonly
export dft
N equ 64
dft proc
push {lr, r4, r5, r0} ; empilage de l'adresse de retour
ldr r2, =TabCos ; on met l'addr de TabCos
bl cal_comp ; on calcule Re(k) | format : 5.28
smull r4, r5, r0, r0 ; (r4,r5) = Re(k)² | format : 10.54
pop {r0}
ldr r2, =TabSin ; on met l'addr de TabSin
bl cal_comp ; on calcule -Im(k) | format : 5.28
smlal r4, r5, r0, r0 ; (r4,r5) = Re(k)² + Im(k)² | format : 10.54
mov r0, r5 ; On prend les 32 bits de poids fort pour convertir au format 10.22/3.29 ?
pop {pc, r4, r5} ; dépilage de l'adresse de retour
endp
cal_comp proc ; r0 = x (signal), r1 = k, r2 = sin ou cos
push {r4, r5, r6, r7}
mov r3, #0 ; r3 = i
mov r5, #0 ; r5 = ik
mov r7, #0 ; r7 = 0
deb_somme ldrh r4, [r0, r3, LSL #1] ; r4 = x[i], LSL #1 pour faire ×2 car chaque valeur est sur 2 octets | format 4.12
ldrsh r6, [r2, r5, LSL #1] ; r6 = cos ou sin [ik%N] | format 1.15
mla r7, r4, r6, r7 ; r7 += x[i] * cos|sin[ik%n] | format 5.27
add r5, r1 ; r5 = (i-1)k + k
and r5, #N-1 ; r5 = r5 % 64
add r3, #1 ; on incrémente i
cmp r3, #N ;
bne deb_somme
mov r0, r7
pop {r4, r5, r6, r7}
bx lr
endp
AREA Signal, DATA, READONLY
export TabSig
; Fnor1 = 23.000
; Ph1 = -26.565
; A1 = 62.000 env. 50mV/3300mV
; Fnor2 = 24.000
; Ph2 = -116.565
; A2 = 1024.000
; valeurs attendues pour k = 23 :
; Re 0x0378FDBD
; Im 0x01BAD0C5 env 0.5 * Re, car tan(26.565) ~= 0.5
; M2 0x000F0D16 986390
;
; valeurs attendues pour k = 24 :
; Re 0xE36136DD env -0.447 * 2^30
; Im 0x393E61CA env -2 * Re, car tan(116.565) ~= 2.0
; M2 0x0FFFF53C env 2^28
;
; pour les autres valeurs de k sauf les alias de 23 et 24 :
; M2 < 0x0000000F
TabSig
DCW 1646 ; 0 0x066e 0.40186
DCW 3006 ; 1 0x0bbe 0.73389
DCW 1094 ; 2 0x0446 0.26709
DCW 2434 ; 3 0x0982 0.59424
DCW 2465 ; 4 0x09a1 0.60181
DCW 1066 ; 5 0x042a 0.26025
DCW 3018 ; 6 0x0bca 0.73682
DCW 1666 ; 7 0x0682 0.40674
DCW 1610 ; 8 0x064a 0.39307
DCW 3052 ; 9 0x0bec 0.74512
DCW 1071 ; 10 0x042f 0.26147
DCW 2417 ; 11 0x0971 0.59009
DCW 2510 ; 12 0x09ce 0.61279
DCW 1026 ; 13 0x0402 0.25049
DCW 3024 ; 14 0x0bd0 0.73828
DCW 1699 ; 15 0x06a3 0.41479
DCW 1562 ; 16 0x061a 0.38135
DCW 3080 ; 17 0x0c08 0.75195
DCW 1083 ; 18 0x043b 0.26440
DCW 2374 ; 19 0x0946 0.57959
DCW 2553 ; 20 0x09f9 0.62329
DCW 1015 ; 21 0x03f7 0.24780
DCW 2995 ; 22 0x0bb3 0.73120
DCW 1746 ; 23 0x06d2 0.42627
DCW 1531 ; 24 0x05fb 0.37378
DCW 3072 ; 25 0x0c00 0.75000
DCW 1124 ; 26 0x0464 0.27441
DCW 2329 ; 27 0x0919 0.56860
DCW 2568 ; 28 0x0a08 0.62695
DCW 1041 ; 29 0x0411 0.25415
DCW 2948 ; 30 0x0b84 0.71973
DCW 1781 ; 31 0x06f5 0.43481
DCW 1535 ; 32 0x05ff 0.37476
DCW 3033 ; 33 0x0bd9 0.74048
DCW 1170 ; 34 0x0492 0.28564
DCW 2310 ; 35 0x0906 0.56396
DCW 2547 ; 36 0x09f3 0.62183
DCW 1087 ; 37 0x043f 0.26538
DCW 2910 ; 38 0x0b5e 0.71045
DCW 1782 ; 39 0x06f6 0.43506
DCW 1570 ; 40 0x0622 0.38330
DCW 2986 ; 41 0x0baa 0.72900
DCW 1194 ; 42 0x04aa 0.29150
DCW 2327 ; 43 0x0917 0.56812
DCW 2502 ; 44 0x09c6 0.61084
DCW 1127 ; 45 0x0467 0.27515
DCW 2904 ; 46 0x0b58 0.70898
DCW 1749 ; 47 0x06d5 0.42700
DCW 1618 ; 48 0x0652 0.39502
DCW 2959 ; 49 0x0b8f 0.72241
DCW 1181 ; 50 0x049d 0.28833
DCW 2370 ; 51 0x0942 0.57861
DCW 2459 ; 52 0x099b 0.60034
DCW 1138 ; 53 0x0472 0.27783
DCW 2933 ; 54 0x0b75 0.71606
DCW 1702 ; 55 0x06a6 0.41553
DCW 1649 ; 56 0x0671 0.40259
DCW 2967 ; 57 0x0b97 0.72437
DCW 1140 ; 58 0x0474 0.27832
DCW 2414 ; 59 0x096e 0.58936
DCW 2444 ; 60 0x098c 0.59668
DCW 1112 ; 61 0x0458 0.27148
DCW 2980 ; 62 0x0ba4 0.72754
DCW 1668 ; 63 0x0684 0.40723
AREA Trigo, DATA, READONLY
export TabSin
export TabCos
TabCos
DCW 32767 ; 0 0x7fff 0.99997
DCW 32610 ; 1 0x7f62 0.99518
DCW 32138 ; 2 0x7d8a 0.98077
DCW 31357 ; 3 0x7a7d 0.95694
DCW 30274 ; 4 0x7642 0.92389
DCW 28899 ; 5 0x70e3 0.88193
DCW 27246 ; 6 0x6a6e 0.83148
DCW 25330 ; 7 0x62f2 0.77301
DCW 23170 ; 8 0x5a82 0.70709
DCW 20788 ; 9 0x5134 0.63440
DCW 18205 ; 10 0x471d 0.55557
DCW 15447 ; 11 0x3c57 0.47141
DCW 12540 ; 12 0x30fc 0.38269
DCW 9512 ; 13 0x2528 0.29028
DCW 6393 ; 14 0x18f9 0.19510
DCW 3212 ; 15 0x0c8c 0.09802
DCW 0 ; 16 0x0000 0.00000
DCW -3212 ; 17 0xf374 -0.09802
DCW -6393 ; 18 0xe707 -0.19510
DCW -9512 ; 19 0xdad8 -0.29028
DCW -12540 ; 20 0xcf04 -0.38269
DCW -15447 ; 21 0xc3a9 -0.47141
DCW -18205 ; 22 0xb8e3 -0.55557
DCW -20788 ; 23 0xaecc -0.63440
DCW -23170 ; 24 0xa57e -0.70709
DCW -25330 ; 25 0x9d0e -0.77301
DCW -27246 ; 26 0x9592 -0.83148
DCW -28899 ; 27 0x8f1d -0.88193
DCW -30274 ; 28 0x89be -0.92389
DCW -31357 ; 29 0x8583 -0.95694
DCW -32138 ; 30 0x8276 -0.98077
DCW -32610 ; 31 0x809e -0.99518
DCW -32768 ; 32 0x8000 -1.00000
DCW -32610 ; 33 0x809e -0.99518
DCW -32138 ; 34 0x8276 -0.98077
DCW -31357 ; 35 0x8583 -0.95694
DCW -30274 ; 36 0x89be -0.92389
DCW -28899 ; 37 0x8f1d -0.88193
DCW -27246 ; 38 0x9592 -0.83148
DCW -25330 ; 39 0x9d0e -0.77301
DCW -23170 ; 40 0xa57e -0.70709
DCW -20788 ; 41 0xaecc -0.63440
DCW -18205 ; 42 0xb8e3 -0.55557
DCW -15447 ; 43 0xc3a9 -0.47141
DCW -12540 ; 44 0xcf04 -0.38269
DCW -9512 ; 45 0xdad8 -0.29028
DCW -6393 ; 46 0xe707 -0.19510
DCW -3212 ; 47 0xf374 -0.09802
DCW 0 ; 48 0x0000 0.00000
DCW 3212 ; 49 0x0c8c 0.09802
DCW 6393 ; 50 0x18f9 0.19510
DCW 9512 ; 51 0x2528 0.29028
DCW 12540 ; 52 0x30fc 0.38269
DCW 15447 ; 53 0x3c57 0.47141
DCW 18205 ; 54 0x471d 0.55557
DCW 20788 ; 55 0x5134 0.63440
DCW 23170 ; 56 0x5a82 0.70709
DCW 25330 ; 57 0x62f2 0.77301
DCW 27246 ; 58 0x6a6e 0.83148
DCW 28899 ; 59 0x70e3 0.88193
DCW 30274 ; 60 0x7642 0.92389
DCW 31357 ; 61 0x7a7d 0.95694
DCW 32138 ; 62 0x7d8a 0.98077
DCW 32610 ; 63 0x7f62 0.99518
TabSin
DCW 0 ; 0 0x0000 0.00000
DCW 3212 ; 1 0x0c8c 0.09802
DCW 6393 ; 2 0x18f9 0.19510
DCW 9512 ; 3 0x2528 0.29028
DCW 12540 ; 4 0x30fc 0.38269
DCW 15447 ; 5 0x3c57 0.47141
DCW 18205 ; 6 0x471d 0.55557
DCW 20788 ; 7 0x5134 0.63440
DCW 23170 ; 8 0x5a82 0.70709
DCW 25330 ; 9 0x62f2 0.77301
DCW 27246 ; 10 0x6a6e 0.83148
DCW 28899 ; 11 0x70e3 0.88193
DCW 30274 ; 12 0x7642 0.92389
DCW 31357 ; 13 0x7a7d 0.95694
DCW 32138 ; 14 0x7d8a 0.98077
DCW 32610 ; 15 0x7f62 0.99518
DCW 32767 ; 16 0x7fff 0.99997
DCW 32610 ; 17 0x7f62 0.99518
DCW 32138 ; 18 0x7d8a 0.98077
DCW 31357 ; 19 0x7a7d 0.95694
DCW 30274 ; 20 0x7642 0.92389
DCW 28899 ; 21 0x70e3 0.88193
DCW 27246 ; 22 0x6a6e 0.83148
DCW 25330 ; 23 0x62f2 0.77301
DCW 23170 ; 24 0x5a82 0.70709
DCW 20788 ; 25 0x5134 0.63440
DCW 18205 ; 26 0x471d 0.55557
DCW 15447 ; 27 0x3c57 0.47141
DCW 12540 ; 28 0x30fc 0.38269
DCW 9512 ; 29 0x2528 0.29028
DCW 6393 ; 30 0x18f9 0.19510
DCW 3212 ; 31 0x0c8c 0.09802
DCW 0 ; 32 0x0000 0.00000
DCW -3212 ; 33 0xf374 -0.09802
DCW -6393 ; 34 0xe707 -0.19510
DCW -9512 ; 35 0xdad8 -0.29028
DCW -12540 ; 36 0xcf04 -0.38269
DCW -15447 ; 37 0xc3a9 -0.47141
DCW -18205 ; 38 0xb8e3 -0.55557
DCW -20788 ; 39 0xaecc -0.63440
DCW -23170 ; 40 0xa57e -0.70709
DCW -25330 ; 41 0x9d0e -0.77301
DCW -27246 ; 42 0x9592 -0.83148
DCW -28899 ; 43 0x8f1d -0.88193
DCW -30274 ; 44 0x89be -0.92389
DCW -31357 ; 45 0x8583 -0.95694
DCW -32138 ; 46 0x8276 -0.98077
DCW -32610 ; 47 0x809e -0.99518
DCW -32768 ; 48 0x8000 -1.00000
DCW -32610 ; 49 0x809e -0.99518
DCW -32138 ; 50 0x8276 -0.98077
DCW -31357 ; 51 0x8583 -0.95694
DCW -30274 ; 52 0x89be -0.92389
DCW -28899 ; 53 0x8f1d -0.88193
DCW -27246 ; 54 0x9592 -0.83148
DCW -25330 ; 55 0x9d0e -0.77301
DCW -23170 ; 56 0xa57e -0.70709
DCW -20788 ; 57 0xaecc -0.63440
DCW -18205 ; 58 0xb8e3 -0.55557
DCW -15447 ; 59 0xc3a9 -0.47141
DCW -12540 ; 60 0xcf04 -0.38269
DCW -9512 ; 61 0xdad8 -0.29028
DCW -6393 ; 62 0xe707 -0.19510
DCW -3212 ; 63 0xf374 -0.09802
END