2017-06-20 4 views
2

J'ai un modulateur sigma delta de second ordre dans simulink matlab. ça fonctionne bien j'ai appliqué une forme d'onde sinusoïdale à l'entrée avec Vp-p = 1V et j'ai la même forme d'onde (avec un peu de retard), après le filtrage passe-bas dans la sortie:Je n'ai pas la FFT désirée pour le modulateur sigma-delta

je reçois ceci pour fft: fft

échantillonnage freq = 256 MHz entrée freq = 4MHz

période

de l'échantillon et l'horloge tenir est de 1/256MHZ et également l'instant d'échantillon pour le bloc de adc_out vu dans le pic est de 1/256MHz et i n » t toucher autre chose

et i calculé la freq d'entrée sur la base de la formule suivante: fin = (premier/N) * échantillonnage freq

premier est nombre premier, i a choisi 257 N est le nombre de points FFT, i choisit 16384 freq d'échantillonnage est 256MHz donc j'ai 4MHz comme la meilleure fréquence d'entrée et ces considérations, après fft, étaient censés me donner une belle impulsion à 4MHz et le bruit formé dans les hautes fréquences comme vous pouvez le voir je n'ai pas mon imupulse désiré à 4 MHz! et je ne sais pas pourquoi !!

Répondre

2

Juste en regardant l'image, je dirais que c'est un problème windowing. En particulier, puisque vous n'utilisez pas de fenêtre explicite, vous utilisez une fonction de blocage. La FFT d'un bloc est sin(x)/x, ce qui est compliqué avec votre réponse réelle.

+0

Oui, c'est probablement le problème. Mais comment le résoudre? ce que j'ai fait me semble correct parce que basé sur la théorie du modulateur sigma-delta le niveau de bruit est formé aux fréquences plus élevées et est le plus bas à 4MHz mais le ton de signal manque là! @MSalters – Fateme

+0

@Fateme: Presque toute fonction de fenêtre devrait aider. Multipliez 'x' par cette fenêtre avant d'appeler' fft (x) '. – MSalters

+0

J'ai appliqué une fenêtre hann qui je suppose est le meilleur pour les types de modulateur sigma-delta et pourtant je n'ai pas mon ton! le code: clc, fermez tous x = adc_out; w = hann (16385, 'périodique'); x = x. * W; f = (abs (fft (x)))/16384; dbpsd = 20 * log10 (f); freq = 256 * linspace (0,05,16384/2); plot (freq, dbpsd (1: 1: 16384/2)) – Fateme