From 2205bde264cef840c262c2efd91291fb25a14c47 Mon Sep 17 00:00:00 2001 From: Axel Olougouna Date: Wed, 10 May 2023 15:28:09 +0200 Subject: [PATCH] step DFT presque finie --- soft/PjtKEIL_StepDFT/Src/DFT.s | 34 +++++++++----- soft/PjtKEIL_StepDFT/Src/Signal2.asm | 68 ++++++++++++++++++++++++++++ soft/PjtKEIL_StepDFT/Src/principal.c | 4 +- soft/PjtKEIL_StepDFT/StepDFT.uvoptx | 24 +++++++++- soft/PjtKEIL_StepDFT/StepDFT.uvprojx | 15 ++++++ soft/Signal.m | 4 +- soft/Signal2.asm | 68 ++++++++++++++++++++++++++++ 7 files changed, 200 insertions(+), 17 deletions(-) create mode 100644 soft/PjtKEIL_StepDFT/Src/Signal2.asm create mode 100644 soft/Signal2.asm diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index ce78b6e..87a19f2 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -22,34 +22,46 @@ ; écrire le code ici DFT_ModuleAuCarre proc - push{lr, r4,r5, r6, r7} + push{lr, r4,r5, r6, r7, r8, r9, r10} mov r2, r0 ; mettre l'adresse du signal dans r2 mov r0, #0 ; r0 peut être utilisé ;dans r1 on a la valeur de k ldr r4,=TabCos + ldr r9,=TabSin mov r5, #0 ; contient notre indice n Boucle - cmp r5,#64 - ble Fin - ldrsh r3,[r2, r5, LSL #1] ; x[n] ; là format 4.12 + cmp r5,#63 + bgt Fin + ldrsh r3,[r2, r5, LSL #1] ; x[n] ; là format 4.12 (1.12) mul r6, r1, r5 ; kn and r6, r6, #63 ; kn & 000000000011111 ldrsh r7,[r4, r6, LSL #1] ; TabCos[kn] ; là format 1.15 - mul r3, r3, r7 ; x[n]*TabCos[n] 5.27 - asr r3, r3, #6 ; 5.21 - asr r0, r0, #6 ; 5.21 + mul r10, r3, r7 ; x[n]*TabCos[n] 5.27 + asr r10, r10, #4 ; 5.23 + asr r0, r0, #4 ; 5.23 ;mla r0, r7, r3, r0 ; x(k) += x[n]*TabCos[n] ;11.27 - add r0, r0, r3 ; 6.21 + add r0, r0, r10 ; 6.24 ; r0 contient la valeur de la somme des Cos + + ldrsh r7,[r9, r6, LSL #1] ; TabSin[kn] ; là format 1.15 + mul r10, r3, r7 ; x[n]*TabSin[n] 5.27 + asr r10, r10, #4 ; 5.23 + asr r8, r8, #4 ; 5.23 + add r8, r8, r10 ; 6.24 ; r8 contient la valeur de la somme des Sin add r5, #1 bl Boucle Fin - asr r0, r0, #16 - mul r0, r0, r0 ; 5. - pop{pc, r4, r5, r6, r7} + asr r0, r0, #16 ; 6.7 + asr r8, r8, #16 ; 6.7 + mul r0, r0, r0 ; 12.14 + mul r8, r8, r8 ; 12.14 + + add r0, r0, r8 ; 13.14 + + pop{pc, r4, r5, r6, r7, r8, r9, r10} endp diff --git a/soft/PjtKEIL_StepDFT/Src/Signal2.asm b/soft/PjtKEIL_StepDFT/Src/Signal2.asm new file mode 100644 index 0000000..4db046b --- /dev/null +++ b/soft/PjtKEIL_StepDFT/Src/Signal2.asm @@ -0,0 +1,68 @@ + AREA Signal, DATA, READONLY + export LeSignal2 +LeSignal2 + DCW 0x0802 ; 0 2050 0.50049 + DCW 0x0801 ; 1 2049 0.50024 + DCW 0x07ff ; 2 2047 0.49976 + DCW 0x07ff ; 3 2047 0.49976 + DCW 0x07ff ; 4 2047 0.49976 + DCW 0x0800 ; 5 2048 0.50000 + DCW 0x0801 ; 6 2049 0.50024 + DCW 0x0801 ; 7 2049 0.50024 + DCW 0x0800 ; 8 2048 0.50000 + DCW 0x07ff ; 9 2047 0.49976 + DCW 0x07ff ; 10 2047 0.49976 + DCW 0x0800 ; 11 2048 0.50000 + DCW 0x0801 ; 12 2049 0.50024 + DCW 0x0801 ; 13 2049 0.50024 + DCW 0x0801 ; 14 2049 0.50024 + DCW 0x07ff ; 15 2047 0.49976 + DCW 0x07ff ; 16 2047 0.49976 + DCW 0x07ff ; 17 2047 0.49976 + DCW 0x0801 ; 18 2049 0.50024 + DCW 0x0801 ; 19 2049 0.50024 + DCW 0x0801 ; 20 2049 0.50024 + DCW 0x0800 ; 21 2048 0.50000 + DCW 0x07ff ; 22 2047 0.49976 + DCW 0x07ff ; 23 2047 0.49976 + DCW 0x0800 ; 24 2048 0.50000 + DCW 0x0801 ; 25 2049 0.50024 + DCW 0x0801 ; 26 2049 0.50024 + DCW 0x0800 ; 27 2048 0.50000 + DCW 0x07ff ; 28 2047 0.49976 + DCW 0x07ff ; 29 2047 0.49976 + DCW 0x07ff ; 30 2047 0.49976 + DCW 0x0801 ; 31 2049 0.50024 + DCW 0x0802 ; 32 2050 0.50049 + DCW 0x0801 ; 33 2049 0.50024 + DCW 0x07ff ; 34 2047 0.49976 + DCW 0x07ff ; 35 2047 0.49976 + DCW 0x07ff ; 36 2047 0.49976 + DCW 0x0800 ; 37 2048 0.50000 + DCW 0x0801 ; 38 2049 0.50024 + DCW 0x0801 ; 39 2049 0.50024 + DCW 0x0800 ; 40 2048 0.50000 + DCW 0x07ff ; 41 2047 0.49976 + DCW 0x07ff ; 42 2047 0.49976 + DCW 0x0800 ; 43 2048 0.50000 + DCW 0x0801 ; 44 2049 0.50024 + DCW 0x0801 ; 45 2049 0.50024 + DCW 0x0801 ; 46 2049 0.50024 + DCW 0x07ff ; 47 2047 0.49976 + DCW 0x07ff ; 48 2047 0.49976 + DCW 0x07ff ; 49 2047 0.49976 + DCW 0x0801 ; 50 2049 0.50024 + DCW 0x0801 ; 51 2049 0.50024 + DCW 0x0801 ; 52 2049 0.50024 + DCW 0x0800 ; 53 2048 0.50000 + DCW 0x07ff ; 54 2047 0.49976 + DCW 0x07ff ; 55 2047 0.49976 + DCW 0x0800 ; 56 2048 0.50000 + DCW 0x0801 ; 57 2049 0.50024 + DCW 0x0801 ; 58 2049 0.50024 + DCW 0x0800 ; 59 2048 0.50000 + DCW 0x07ff ; 60 2047 0.49976 + DCW 0x07ff ; 61 2047 0.49976 + DCW 0x07ff ; 62 2047 0.49976 + DCW 0x0801 ; 63 2049 0.50024 + END diff --git a/soft/PjtKEIL_StepDFT/Src/principal.c b/soft/PjtKEIL_StepDFT/Src/principal.c index 3a74007..137c428 100644 --- a/soft/PjtKEIL_StepDFT/Src/principal.c +++ b/soft/PjtKEIL_StepDFT/Src/principal.c @@ -3,7 +3,7 @@ #include "DriverJeuLaser.h" -extern short int LeSignal; +extern short int LeSignal2; extern int DFT_ModuleAuCarre(short int* Signal64ech, char k); int main(void) @@ -19,7 +19,7 @@ CLOCK_Configure(); for(int i=0; i<64; i++){ - tab[i] = DFT_ModuleAuCarre(&LeSignal, i); + tab[i] = DFT_ModuleAuCarre(&LeSignal2, i); } diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx index f6e9a5b..2de6a5b 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx @@ -154,6 +154,14 @@ + + + 1 + 0 + 0x200003A0 + 0 + + 0 @@ -648,6 +656,18 @@ 0 0 + + 1 + 4 + 2 + 0 + 0 + 0 + .\Src\Signal2.asm + Signal2.asm + 0 + 0 + @@ -658,7 +678,7 @@ 0 2 - 4 + 5 2 0 0 @@ -678,7 +698,7 @@ 0 3 - 5 + 6 4 0 0 diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvprojx b/soft/PjtKEIL_StepDFT/StepDFT.uvprojx index 63375da..44be10a 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvprojx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvprojx @@ -398,6 +398,11 @@ 2 .\Src\Signal.asm + + Signal2.asm + 2 + .\Src\Signal2.asm + @@ -817,6 +822,11 @@ 2 .\Src\Signal.asm + + Signal2.asm + 2 + .\Src\Signal2.asm + @@ -1305,6 +1315,11 @@ 2 .\Src\Signal.asm + + Signal2.asm + 2 + .\Src\Signal2.asm + diff --git a/soft/Signal.m b/soft/Signal.m index b88fee7..37a470e 100644 --- a/soft/Signal.m +++ b/soft/Signal.m @@ -6,11 +6,11 @@ Frel = input('Fr Ph0 = input('Phase a l''origine (en degrés) : '); Ph0 = Ph0 * pi / 180.0; % a present en radian -Ampl = 2048; +Ampl = 1.5; Offset = 2048; %% Création du fichier .asm -fileID = fopen(['Signal.asm'], 'w'); +fileID = fopen(['Signal2.asm'], 'w'); fprintf(fileID,'\tAREA Signal, DATA, READONLY\n'); fprintf(fileID,'\texport LeSignal\n'); diff --git a/soft/Signal2.asm b/soft/Signal2.asm new file mode 100644 index 0000000..4f5a6b5 --- /dev/null +++ b/soft/Signal2.asm @@ -0,0 +1,68 @@ + AREA Signal, DATA, READONLY + export LeSignal +LeSignal + DCW 0x0802 ; 0 2050 0.50049 + DCW 0x0801 ; 1 2049 0.50024 + DCW 0x07ff ; 2 2047 0.49976 + DCW 0x07ff ; 3 2047 0.49976 + DCW 0x07ff ; 4 2047 0.49976 + DCW 0x0800 ; 5 2048 0.50000 + DCW 0x0801 ; 6 2049 0.50024 + DCW 0x0801 ; 7 2049 0.50024 + DCW 0x0800 ; 8 2048 0.50000 + DCW 0x07ff ; 9 2047 0.49976 + DCW 0x07ff ; 10 2047 0.49976 + DCW 0x0800 ; 11 2048 0.50000 + DCW 0x0801 ; 12 2049 0.50024 + DCW 0x0801 ; 13 2049 0.50024 + DCW 0x0801 ; 14 2049 0.50024 + DCW 0x07ff ; 15 2047 0.49976 + DCW 0x07ff ; 16 2047 0.49976 + DCW 0x07ff ; 17 2047 0.49976 + DCW 0x0801 ; 18 2049 0.50024 + DCW 0x0801 ; 19 2049 0.50024 + DCW 0x0801 ; 20 2049 0.50024 + DCW 0x0800 ; 21 2048 0.50000 + DCW 0x07ff ; 22 2047 0.49976 + DCW 0x07ff ; 23 2047 0.49976 + DCW 0x0800 ; 24 2048 0.50000 + DCW 0x0801 ; 25 2049 0.50024 + DCW 0x0801 ; 26 2049 0.50024 + DCW 0x0800 ; 27 2048 0.50000 + DCW 0x07ff ; 28 2047 0.49976 + DCW 0x07ff ; 29 2047 0.49976 + DCW 0x07ff ; 30 2047 0.49976 + DCW 0x0801 ; 31 2049 0.50024 + DCW 0x0802 ; 32 2050 0.50049 + DCW 0x0801 ; 33 2049 0.50024 + DCW 0x07ff ; 34 2047 0.49976 + DCW 0x07ff ; 35 2047 0.49976 + DCW 0x07ff ; 36 2047 0.49976 + DCW 0x0800 ; 37 2048 0.50000 + DCW 0x0801 ; 38 2049 0.50024 + DCW 0x0801 ; 39 2049 0.50024 + DCW 0x0800 ; 40 2048 0.50000 + DCW 0x07ff ; 41 2047 0.49976 + DCW 0x07ff ; 42 2047 0.49976 + DCW 0x0800 ; 43 2048 0.50000 + DCW 0x0801 ; 44 2049 0.50024 + DCW 0x0801 ; 45 2049 0.50024 + DCW 0x0801 ; 46 2049 0.50024 + DCW 0x07ff ; 47 2047 0.49976 + DCW 0x07ff ; 48 2047 0.49976 + DCW 0x07ff ; 49 2047 0.49976 + DCW 0x0801 ; 50 2049 0.50024 + DCW 0x0801 ; 51 2049 0.50024 + DCW 0x0801 ; 52 2049 0.50024 + DCW 0x0800 ; 53 2048 0.50000 + DCW 0x07ff ; 54 2047 0.49976 + DCW 0x07ff ; 55 2047 0.49976 + DCW 0x0800 ; 56 2048 0.50000 + DCW 0x0801 ; 57 2049 0.50024 + DCW 0x0801 ; 58 2049 0.50024 + DCW 0x0800 ; 59 2048 0.50000 + DCW 0x07ff ; 60 2047 0.49976 + DCW 0x07ff ; 61 2047 0.49976 + DCW 0x07ff ; 62 2047 0.49976 + DCW 0x0801 ; 63 2049 0.50024 + END