2017-06-20 6 views
2

Ich habe einen Sigma-Delta-Modulator zweiter Ordnung in Simulink Matlab. es funktioniert gut ich legte eine sinusförmige Wellenform an den Eingang mit Vp-p = 1V und ich habe die gleiche Wellenform (mit einer kleinen Verzögerung), nach Tiefpass-Filterung in der Ausgabe:Nicht die gewünschte FFT für Sigma-Delta-Modulator

ich bekomme dies für fft: fft

Probenahme freq = 256 MHz Eingang freq = 4MHz

Periode des Abtast-Halte-Takt 1/256 MHz und auch Abtastzeit für adc_out Block in dem Bild zu sehen ist, 1/256 MHz und i didn‘ t nichts anderes berühren

und i die Eingangs FREQ auf dieser Formel basierend berechnet: fin = (Prime/N) * Probenahme freq

prime Primzahl ist, wählte ich 257 N Anzahl von FFT-Punkten ist, i 16384 Probenahme freq gewählt ist 256 MHz deshalb habe ich 4MHz als die beste Eingangsfrequenz und diese Überlegungen, nach fft, sollten mir einen schönen Impuls bei 4MHz geben und das geformte Rauschen in den höheren Frequenzen , wie Sie sehen können, habe ich nicht meine gewünschte imupulse bei 4 MHz! und ich weiß einfach nicht warum !!

Antwort

2

Ich gucke nur auf das Bild, ich würde sagen, es ist ein windowing Problem. Da Sie kein explizites Fenster verwenden, verwenden Sie eine Blockfunktion. Die FFT eines Blocks ist sin(x)/x, die mit Ihrer echten Antwort verschachtelt ist.

+0

Ja, wahrscheinlich ist das das Problem. Aber wie löst man es? Was ich getan habe, scheint mir richtig zu sein, denn basierend auf der Theorie des Sigma-Delta-Modulators ist der Rauschpegel zu höheren Frequenzen geformt und ist mit 4 MHz am niedrigsten, aber der Signalton fehlt dort! @MSalter – Fateme

+0

@Fateme: So ziemlich jede Fensterfunktion sollte helfen. Multiplizieren Sie 'x' mit diesem Fenster, bevor Sie' fft (x) 'aufrufen. – MSalters

+0

Ich habe ein hann-Fenster angewendet, welches ich für Sigma-Delta-Modulatoren am besten finde und trotzdem habe ich keinen Ton! der Code: clc, alle schließen x = adc_out; w = hann (16385, 'periodisch'); x = x. * W; f = (abs (fft (x)))/16384; dbpsd = 20 * log10 (f); Freq = 256 * Innerspace (0,0,5,16384/2); plot (freq, dbpsd (1: 1: 16384/2)) – Fateme

Verwandte Themen