bzgl. der FFT eines DDS Signals bin ich mir nicht so ganz im Klaren.
Wenn ich den PhasenAccu zB mit 16 inkrementiere, wird aus der LUT nur
jeder 16 Sinus Wert genommen,entsprechend stufig wird das DAC Signal. An
sich interpoliert/filtert man ja deswegen. Unabhängig davon müsste es
aber dennoch eine Spur im Spektrum hinterlassen, oder? Folgendes
Octave/Matlab Script sollte mir das zeigen, tut's aber nicht so recht
imo
1 | N=4*512 -1;
|
2 | x=[0:N];
|
3 | y=sin(x/N * 2*pi);
|
4 |
|
5 | Q=2^16-1;
|
6 | y_fi = round(y * Q);
|
7 |
|
8 | plot(x, y_fi)
|
9 |
|
10 | fClk = 1e6;
|
11 | Sz = length(x);
|
12 | f = [0:1/Sz *fClk : (Sz-1)/Sz *fClk]/1e3;
|
13 |
|
14 | d=1; % phase accu increment
|
15 | i=[1:d:N];
|
16 |
|
17 | clf;
|
18 |
|
19 | y_fft = fft(y_fi(i));
|
20 | subplot(2,1,1); semilogx(f(i), abs(y_fft));
|
21 | grid on;
|
22 | xlabel('f [kHz]')
|
23 | ylabel('Ampl. Spektrum');
|
24 | subplot(2,1,2); semilogx(f(i), angle(y_fft));
|
25 | grid('on');
|
26 | xlabel('f [kHz]')
|
27 | ylabel('Phase Spektrum');
|
Annahme: LUT mit 512x16 Bit (0..pi/2) - hier einfach aufgebohrt um das
4Q Dedönse nicht machen zu müssen. fDAC=fClk immer 1MHz.
Bei Änderung von d, sollten da nicht Harmonische auftauchen oder ist das
Octave Script falsch, oder ich auf dem Holzweg?