forked from acco/chti23
fin de la DFT / pb de format
This commit is contained in:
parent
b6baee8edc
commit
99785ea3ac
6 changed files with 2359 additions and 2034 deletions
173
signal/matlab/ScriptDFT.m
Normal file
173
signal/matlab/ScriptDFT.m
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
%%
|
||||||
|
%TUTO BAC A SABLE
|
||||||
|
figure(1);
|
||||||
|
plot(Res.Sinus_Continu);
|
||||||
|
hold on;
|
||||||
|
plot(Res.Sinus_Echanti,'o');
|
||||||
|
grid;
|
||||||
|
title('Courbe temporelle du Sinus');
|
||||||
|
|
||||||
|
tab = linspace(0,M-1,M);
|
||||||
|
tab = tab*(Fe/M);
|
||||||
|
r = fft(Res.Sinus_Echanti.data);
|
||||||
|
|
||||||
|
figure(2);
|
||||||
|
stem(tab,abs(r/M));
|
||||||
|
grid;
|
||||||
|
title('Module de la TFD en fonction de la fréquence');
|
||||||
|
|
||||||
|
|
||||||
|
%%
|
||||||
|
%QUESTION 1 ET 2
|
||||||
|
clear all;
|
||||||
|
close all;
|
||||||
|
clc;
|
||||||
|
|
||||||
|
Fe = 320000;
|
||||||
|
Te = 1/Fe;
|
||||||
|
T = 1/5000;
|
||||||
|
M = T/Te;
|
||||||
|
Tsim = T-Te;
|
||||||
|
|
||||||
|
F1 = 85000;
|
||||||
|
F2 = 90000;
|
||||||
|
F3 = 95000;
|
||||||
|
F4 = 100000;
|
||||||
|
F5 = 115000;
|
||||||
|
F6 = 120000;
|
||||||
|
|
||||||
|
Res = sim('SimuGuns');
|
||||||
|
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||||
|
r = fft(Res.Echanti.data);
|
||||||
|
|
||||||
|
figure(1);
|
||||||
|
plot(Res.Continu);
|
||||||
|
grid;
|
||||||
|
|
||||||
|
figure(2);
|
||||||
|
plot(echelle_freq,abs(r/M),'o');
|
||||||
|
grid;
|
||||||
|
%%
|
||||||
|
%QUESTION 3
|
||||||
|
clear all;
|
||||||
|
close all;
|
||||||
|
clc;
|
||||||
|
|
||||||
|
Fe = 320000;
|
||||||
|
Te = 1/Fe;
|
||||||
|
T = 1/5000;
|
||||||
|
M = T/Te;
|
||||||
|
Tsim = T-Te;
|
||||||
|
|
||||||
|
F1 = 85005.9;
|
||||||
|
F2 = 90000;
|
||||||
|
F3 = 94846.8;
|
||||||
|
F4 = 100000;
|
||||||
|
F5 = 115015.9;
|
||||||
|
F6 = 120000;
|
||||||
|
|
||||||
|
Res = sim('SimuGuns');
|
||||||
|
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||||
|
r = fft(Res.Echanti.data);
|
||||||
|
|
||||||
|
figure(1);
|
||||||
|
plot(Res.Continu);
|
||||||
|
grid;
|
||||||
|
|
||||||
|
hold on;
|
||||||
|
figure(2);
|
||||||
|
|
||||||
|
semilogy(echelle_freq,abs(r/M));
|
||||||
|
grid;
|
||||||
|
|
||||||
|
%%
|
||||||
|
%Question 4
|
||||||
|
clear all;
|
||||||
|
close all;
|
||||||
|
clc;
|
||||||
|
|
||||||
|
Fe = 320000;
|
||||||
|
Te = 1/Fe;
|
||||||
|
T = 1/5000;
|
||||||
|
M = T/Te;
|
||||||
|
Tsim = T-Te;
|
||||||
|
|
||||||
|
F1 = 85005.9;
|
||||||
|
F2 = 90000;
|
||||||
|
F3 = 94846.8;
|
||||||
|
F4 = 100000;
|
||||||
|
F5 = 115015.9;
|
||||||
|
F6 = 120000;
|
||||||
|
|
||||||
|
Res = sim('SimuGuns');
|
||||||
|
for i = 1:32
|
||||||
|
Res.Echanti.data(i) = 0;
|
||||||
|
end
|
||||||
|
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||||
|
r = fft(Res.Echanti.data);
|
||||||
|
|
||||||
|
figure(1);
|
||||||
|
plot(Res.Continu);
|
||||||
|
grid;
|
||||||
|
|
||||||
|
hold on;
|
||||||
|
figure(2);
|
||||||
|
semilogy(echelle_freq,abs(r/M));
|
||||||
|
grid;
|
||||||
|
|
||||||
|
%%
|
||||||
|
%Question 6
|
||||||
|
clear all;
|
||||||
|
close all;
|
||||||
|
clc;
|
||||||
|
F1 = 85000;
|
||||||
|
Fe = 320000;
|
||||||
|
Te = 1/Fe;
|
||||||
|
%T = 1/F1;
|
||||||
|
%M = T/Te;
|
||||||
|
T = 2*10^(-4);
|
||||||
|
M=2^6;
|
||||||
|
Tsim = T-Te;
|
||||||
|
|
||||||
|
Res = sim('SimuGuns');
|
||||||
|
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||||
|
r = fft(Res.carre1.data);
|
||||||
|
|
||||||
|
figure(1);
|
||||||
|
plot(Res.carre1);
|
||||||
|
grid;
|
||||||
|
|
||||||
|
hold on;
|
||||||
|
figure(2);
|
||||||
|
plot(echelle_freq,log10(abs(r/M)),'o');
|
||||||
|
grid;
|
||||||
|
%%
|
||||||
|
% Question 8
|
||||||
|
clear all;
|
||||||
|
close all;
|
||||||
|
clc;
|
||||||
|
F1 = 85000;
|
||||||
|
Fe = 320000;
|
||||||
|
Te = 1/Fe;
|
||||||
|
%T = 1/F1;
|
||||||
|
%M = T/Te;
|
||||||
|
T = 2*10^(-4);
|
||||||
|
M=2^6;
|
||||||
|
Tsim = T-Te;
|
||||||
|
p = tf('p');
|
||||||
|
Fp = 1/(1.7483e-23*p^4 + 7.6663e-18*p^3 + 1.162e-11*p^2 + 3.0332e-6*p+1);
|
||||||
|
|
||||||
|
Res = sim('SimuGuns');
|
||||||
|
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||||
|
r = fft(Res.carre.data);
|
||||||
|
|
||||||
|
figure(1);
|
||||||
|
plot(Res.carre);
|
||||||
|
grid;
|
||||||
|
|
||||||
|
hold on;
|
||||||
|
figure(2);
|
||||||
|
bode(Fp);
|
||||||
|
plot(bode(Fp));
|
||||||
|
%plot(echelle_freq,log10(abs(r/M)),'o');
|
||||||
|
grid;
|
|
@ -1,5 +1,7 @@
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
THUMB
|
THUMB
|
||||||
|
;;IMPORT LeSignal
|
||||||
|
EXPORT DFT_ModuleAuCaree
|
||||||
|
|
||||||
|
|
||||||
; ====================== zone de réservation de données, ======================================
|
; ====================== zone de réservation de données, ======================================
|
||||||
|
@ -22,6 +24,45 @@ Index DCD 0
|
||||||
area moncode,code,readonly
|
area moncode,code,readonly
|
||||||
; écrire le code ici
|
; écrire le code ici
|
||||||
|
|
||||||
|
DFT_ModuleAuCaree
|
||||||
|
;;R0 et R1 sont utilises pour les arg
|
||||||
|
push{r4,r5,r6,r7,r8,r9}
|
||||||
|
mov r5,#0 ;;registre qui va contenir la somme des cos
|
||||||
|
mov r8,#0 ;;registre qui va contenir la somme des sin
|
||||||
|
mov r9,#0 ;;index pour signal64echanti et les tabs
|
||||||
|
mov r2,#0
|
||||||
|
reel
|
||||||
|
cmp r9,#63
|
||||||
|
bgt DFT_ModuleAuCarreFin
|
||||||
|
;;On lit la valeur de l'argument signal64ech
|
||||||
|
;;et on le multiplie à chaque valeur du tabCos
|
||||||
|
ldrsh r3,[r0,r9,lsl #1] ;;on recup le signal64echanti
|
||||||
|
|
||||||
|
|
||||||
|
ldr r4, =TabCos ;;on recup la neme valeur du tableau de cos
|
||||||
|
ldrsh r6, [r4,r2,lsl #1] ;;on stocke la valeur cos a la neme position
|
||||||
|
mul r4,r6,r3 ;; on fait xn*cos
|
||||||
|
|
||||||
|
add r5,r5,r4 ;;et on l'ajoute à la somme des cosinus
|
||||||
|
|
||||||
|
imag
|
||||||
|
ldr r7, =TabSin
|
||||||
|
ldrsh r8,[r7,r2,lsl #1]
|
||||||
|
mul r7,r8,r3
|
||||||
|
add r8,r8,r7 ;;sommre des sin
|
||||||
|
|
||||||
|
add r9,#1
|
||||||
|
add r2,r1
|
||||||
|
b reel
|
||||||
|
|
||||||
|
DFT_ModuleAuCarreFin
|
||||||
|
|
||||||
|
mul r5,r5
|
||||||
|
mul r8,r8
|
||||||
|
add r0,r5,r8
|
||||||
|
pop{r4,r5,r6,r7,r8,r9}
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,17 +71,7 @@ Index DCD 0
|
||||||
AREA Trigo, DATA, READONLY
|
AREA Trigo, DATA, READONLY
|
||||||
; codage fractionnaire 1.15
|
; codage fractionnaire 1.15
|
||||||
|
|
||||||
DFT_ModuleAuCaree proc
|
|
||||||
push{r2,r3,r4,r5,r6,r7,r8,r9}
|
|
||||||
ldr r3,=TabCos
|
|
||||||
ldr r2,=M
|
|
||||||
ldr r2,[r2]
|
|
||||||
ldr r7,=Index
|
|
||||||
ldr r4,[r7]
|
|
||||||
|
|
||||||
etape1
|
|
||||||
ldrsh r5 ,[r3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TabCos
|
TabCos
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include "DriverJeuLaser.h"
|
#include "DriverJeuLaser.h"
|
||||||
|
extern int DFT_ModuleAuCaree(short int * signal , char k );
|
||||||
|
extern short int LeSignal;
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@ -13,21 +13,23 @@ int main(void)
|
||||||
|
|
||||||
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
||||||
CLOCK_Configure();
|
CLOCK_Configure();
|
||||||
|
int Res_DFT[32];
|
||||||
// K1 (85) = 34
|
char K1 = 17;
|
||||||
// K2 (90) = 36
|
// K2 (90) = 18
|
||||||
// K3 (95) = 38
|
// K3 (95) = 19
|
||||||
// K4 (100) = 40
|
// K4 (100) = 20
|
||||||
// K5 (115) = 46
|
// K5 (115) = 23
|
||||||
// K6 (120) = 48
|
// K6 (120) = 24
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
for (int k = 0; k<32;k++){
|
||||||
|
Res_DFT[k] = DFT_ModuleAuCaree(&LeSignal,k);
|
||||||
|
}
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -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>
|
||||||
|
@ -331,7 +331,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>
|
||||||
|
|
Loading…
Reference in a new issue