StepSon & StepDFT done

This commit is contained in:
elouali403 2023-04-21 20:40:09 +02:00
parent 2306ac577e
commit beb2eb3cdd
4 changed files with 157 additions and 9 deletions

View file

@ -1,6 +1,8 @@
PRESERVE8 PRESERVE8
THUMB THUMB
export DFT_ModuleAuCarre
export TabCos
; ====================== zone de réservation de données, ====================================== ; ====================== zone de réservation de données, ======================================
;Section RAM (read only) : ;Section RAM (read only) :
@ -20,10 +22,63 @@
;Section ROM code (read only) : ;Section ROM code (read only) :
area moncode,code,readonly area moncode,code,readonly
; écrire le code ici ; écrire le code ici
;r0 : signal d'entrée
;r1 : k
;r2 : n (compteur de boucle)
;r3 : TabCos ou TabSin selon le moment
;r4 : 64 = taille du tableau
;r5 : somme incrémentée à chaque itération de la boucle (partie imaginaire ou réelle selon l'itération
;r6 : LeSignal(i) = la bonne case du tableau de signal
;r7 : cos(2*pi*k*n/M) = la bonne case du tableau de cos ou sin
;r8 : signal entrée sécurisé (pour être sur su'il ne soit pas écrasé)
;r9 : k sécurisé (pour être sur qu'il ne soit pas écrasé)
DFT_ModuleAuCarre
push {LR, r9, r8}
;sécuriser r0 r1
mov r8, r0 ; stocker l'adresse du signal passée en argument
ldr r3, =TabCos
bl DFT_PartieRouI ; calcul de la partie réelle
mov r9, r0 ; stocker le résultat = partie réelle au format 12.20 dans un registre
mov r0, r8 ; renvoyer l'adresse du signal dans r0 pour qu'elle soit passée en argument du calcul de la partie imaginaire
ldr r3, =TabSin
bl DFT_PartieRouI ; résultat = partie imaginaire au format 12.20
;Calcul du module
asr r0, r0, #16 ;décalage de 16 vers la droite (on enlève de la précision) pour avoir la place de stocker le résultat du carré - format 12.4
lsr r1, r9, #16 ;décalage de 16 vers la droite (on enlève de la précision) pour avoir la place de stocker le résultat du carré - format 12.4
mul r0, r0 ; partie imaginaire au carré au format 26.6
mul r1, r1 ; partie réelle au carré au format 26.6
add r0, r9 ;résultat au format 26.6
pop {r8, r9, LR}
bx lr
DFT_PartieRouI ;DFT_UnePartie
;Etape 1 : partie réelle
push {LR, r4, r5, r6, r7}
mov r2, #0 ;initialisation de n à 0
;ldr r3, =TabCos ;récupération de l'adresse de TabCos -- à enlever pour faire le sinus
mov r4, #64
mov r5, #0 ; initialisation de la somme à 0
CalculTerme
cmp r4, r2
ble fin
mul r6, r1, r2 ; k*n stocké dans r7 + modulo
and r6, #63 ; modulo 64
ldrsh r7, [r3, r6, lsl #1] ; récupération de TabCos(2*pi*k*n/M) au format 1.15
ldrsh r6, [r0, r2, lsl #1] ; récupération de LeSignal(n) au format 4.12
mul r7, r6 ; multiplication de x(n)*cos(2*pi*k*n/M) au format 5.27
asr r7, r7, #7 ;décalage de 7 vers la droite (on enlève de la précision) pour avoir la place de stocker les retenues si besoin (64 retenues max, stockées sur 6 bits, mais 7 pour être sur) ; asr pour conserver le bit de signe
add r5, r7 ; ajout de ce terme à la somme totale au format 12.20
add r2, #1 ;incrémentation de n
b CalculTerme
fin
mov r0, r5
pop {r7, r6, r5, r4, LR}
bx lr
;Section ROM code (read only) : ;Section ROM code (read only) :
AREA Trigo, DATA, READONLY AREA Trigo, DATA, READONLY

View file

@ -1,9 +1,11 @@
#include <stdio.h>
#include "DriverJeuLaser.h" #include "DriverJeuLaser.h"
extern short LeSignal ;
extern int DFT_ModuleAuCarre(short int * Signal64ech, char k); //à changer quand la fonction moduleaaucarré sera créée
int T[64];
int main(void) int main(void)
{ {
@ -20,6 +22,15 @@ CLOCK_Configure();
//============================================================================ //============================================================================
//int vf = DFT_ModuleAuCarre(&LeSignal,1);
for (int i=0;i<64;i++){
T[i]=DFT_ModuleAuCarre(&LeSignal,i);
}
while (1) while (1)
{ {

View file

@ -75,7 +75,7 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget> <IsCurrentTarget>1</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>
@ -154,6 +154,34 @@
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>vf</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>T</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>0x080004D4</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<MemoryWindow2>
<Mm>
<WinNumber>2</WinNumber>
<SubType>0</SubType>
<ItemText>&amp;TabCos</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow2>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
@ -267,7 +295,7 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget> <IsCurrentTarget>0</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>
@ -624,6 +652,30 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\DFT.s</PathWithFileName>
<FilenameWithoutPath>DFT.s</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Src\Signal.asm</PathWithFileName>
<FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -634,7 +686,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>2</FileNumber> <FileNumber>4</FileNumber>
<FileType>2</FileType> <FileType>2</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -654,7 +706,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>3</FileNumber> <FileNumber>5</FileNumber>
<FileType>4</FileType> <FileType>4</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>

View file

@ -388,6 +388,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath> <FilePath>.\Src\principal.c</FilePath>
</File> </File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -797,6 +807,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath> <FilePath>.\Src\principal.c</FilePath>
</File> </File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -1275,6 +1295,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\Src\principal.c</FilePath> <FilePath>.\Src\principal.c</FilePath>
</File> </File>
<File>
<FileName>DFT.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\DFT.s</FilePath>
</File>
<File>
<FileName>Signal.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\Signal.asm</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -1322,7 +1352,7 @@
<LayerInfo> <LayerInfo>
<Layers> <Layers>
<Layer> <Layer>
<LayName>&lt;Project Info&gt;</LayName> <LayName>StepDFT</LayName>
<LayTarg>0</LayTarg> <LayTarg>0</LayTarg>
<LayPrjMark>1</LayPrjMark> <LayPrjMark>1</LayPrjMark>
</Layer> </Layer>