challenge vitese : passage de 1726 à 1122 :D
This commit is contained in:
parent
d7f33cd9af
commit
b4f7d05faa
5 changed files with 58 additions and 65 deletions
|
@ -157,34 +157,18 @@
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>7</LineNumber>
|
<LineNumber>0</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>0</EnabledFlag>
|
||||||
<Address>0</Address>
|
<Address>134218136</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
<HtxType>0</HtxType>
|
<HtxType>0</HtxType>
|
||||||
<ManyObjects>0</ManyObjects>
|
<ManyObjects>0</ManyObjects>
|
||||||
<SizeOfObject>0</SizeOfObject>
|
<SizeOfObject>0</SizeOfObject>
|
||||||
<BreakByAccess>0</BreakByAccess>
|
<BreakByAccess>0</BreakByAccess>
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
<Filename>.\Src\calcul_dft.s</Filename>
|
<Filename></Filename>
|
||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression></Expression>
|
<Expression>0x08000198</Expression>
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>19</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>.\Src\calcul_dft.s</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
</Bp>
|
||||||
</Breakpoint>
|
</Breakpoint>
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
|
|
|
@ -37,7 +37,7 @@ deb_somme ldrh r4, [r0, r3, LSL #1] ; r4 = x[i], LSL #1 pour faire
|
||||||
bne deb_somme
|
bne deb_somme
|
||||||
|
|
||||||
mov r0, r7
|
mov r0, r7
|
||||||
pop {r4, r5, r6, r7}¿¿
|
pop {r4, r5, r6, r7}
|
||||||
bx lr
|
bx lr
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
|
@ -157,34 +157,34 @@
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>7</LineNumber>
|
<LineNumber>0</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>0</EnabledFlag>
|
||||||
<Address>0</Address>
|
<Address>134218136</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
<HtxType>0</HtxType>
|
<HtxType>0</HtxType>
|
||||||
<ManyObjects>0</ManyObjects>
|
<ManyObjects>0</ManyObjects>
|
||||||
<SizeOfObject>0</SizeOfObject>
|
<SizeOfObject>0</SizeOfObject>
|
||||||
<BreakByAccess>0</BreakByAccess>
|
<BreakByAccess>0</BreakByAccess>
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
<Filename>.\Src\calcul_dft.s</Filename>
|
<Filename></Filename>
|
||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression></Expression>
|
<Expression>0x08000198</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>1</Number>
|
<Number>1</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>19</LineNumber>
|
<LineNumber>10</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>0</Address>
|
<Address>134218152</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
<HtxType>0</HtxType>
|
<HtxType>0</HtxType>
|
||||||
<ManyObjects>0</ManyObjects>
|
<ManyObjects>0</ManyObjects>
|
||||||
<SizeOfObject>0</SizeOfObject>
|
<SizeOfObject>0</SizeOfObject>
|
||||||
<BreakByAccess>0</BreakByAccess>
|
<BreakByAccess>0</BreakByAccess>
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
<Filename>.\Src\calcul_dft.s</Filename>
|
<Filename>.\Src\principal.c</Filename>
|
||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression></Expression>
|
<Expression>\\CHTI\Src/principal.c\10</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
</Breakpoint>
|
</Breakpoint>
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>0</SubType>
|
||||||
<ItemText>0x08000210</ItemText>
|
<ItemText>0x0801FF95</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
|
@ -208,7 +208,7 @@
|
||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>1</periodic>
|
<periodic>1</periodic>
|
||||||
<aLwin>0</aLwin>
|
<aLwin>1</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
|
|
|
@ -3,41 +3,48 @@
|
||||||
export dft
|
export dft
|
||||||
N equ 64
|
N equ 64
|
||||||
|
|
||||||
|
; vitesse actuelle : 1726
|
||||||
dft proc
|
dft proc
|
||||||
push {lr, r4, r5, r0} ; empilage de l'adresse de retour
|
; r0 = x (signal), r1 = k
|
||||||
ldr r2, =TabCos ; on met l'addr de TabCos
|
push {lr, r4, r5, r6, r7, r8, r9, r10}
|
||||||
bl cal_comp ; on calcule Re(k) | format : 5.28
|
ldr r2, =TabCos
|
||||||
smull r4, r5, r0, r0 ; (r4,r5) = Re(k)² | format : 10.54
|
ldr r3, =TabSin
|
||||||
|
|
||||||
pop {r0}
|
mov r4, #0 ; r4 = i
|
||||||
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 r5, #0 ; r5 = ik
|
||||||
mov r7, #0 ; r7 = 0
|
mov r9, #0 ; r9 = résultat réel
|
||||||
|
mov r10, #0 ; r10 = résultat imaginaire
|
||||||
|
|
||||||
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
|
deb_somme ldrh r6, [r0, r4, LSL #1] ; r6 = 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
|
ldrsh r7, [r2, r5, LSL #1] ; r7 = cos [ik%N] | format 1.15
|
||||||
mla r7, r4, r6, r7 ; r7 += x[i] * cos|sin[ik%n] | format 5.27
|
ldrsh r8, [r3, r5, LSL #1] ; r8 = sin [ik%N] | format 1.15
|
||||||
|
mla r9, r6, r7, r9 ; r9 += x[i] * cos[ik%n] | format 5.27
|
||||||
|
mla r10, r6, r8, r10 ; r10 += x[i] * sin[ik%n] | format 5.27
|
||||||
|
|
||||||
add r5, r1 ; r5 = (i-1)k + k
|
add r5, r1 ; r5 = (i-1)k + k
|
||||||
and r5, #N-1 ; r5 = r5 % 64
|
and r5, #N-1 ; r5 = r5 % 64
|
||||||
add r3, #1 ; on incrémente i
|
add r4, #1 ; on incrémente i
|
||||||
cmp r3, #N ;
|
cmp r4, #N ;
|
||||||
bne deb_somme
|
bne deb_somme
|
||||||
|
|
||||||
mov r0, r7
|
; etat des registres : r0 = x, r1 = k, r9 = Re, r10 = Im, autres libres
|
||||||
pop {r4, r5, r6, r7}
|
|
||||||
|
smull r2, r0, r9, r9 ; (r2,r0) = Re(k)² | format : 10.54
|
||||||
|
|
||||||
|
smlal r2, r0, r10, r10 ; (r2,r0) = Re(k)² + Im(k)² | format : 10.54
|
||||||
|
|
||||||
|
|
||||||
|
pop {pc, r4, r5, r6, r7, r8, r9, r10}
|
||||||
|
endp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cal_comp proc ; r0 = x (signal), r1 = k, r2 = sin ou cos
|
||||||
bx lr
|
bx lr
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ extern short* TabSig[N];
|
||||||
int resultats[N];
|
int resultats[N];
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
resultats[5] = dft(TabSig, 5);
|
for(int i = 1; i < N; ++i){
|
||||||
|
resultats[i] = dft(TabSig, i);
|
||||||
|
}
|
||||||
while(1){}
|
while(1){}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue