272 lines
No EOL
7.7 KiB
ArmAsm
272 lines
No EOL
7.7 KiB
ArmAsm
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 |