Phasenproblem beim NCO

Gast #2256240
Lesenswert?

Ich verwende einen NCO, um Frequenzen zwischen 10 und 30 MHz 
herzustellen. Die Taktfrequenz des FPGA liegt bei 100 MHz. Jetzt ist es 
js so, dass der NCO für Frequenzen von z.B. 29 MHz nicht mit den 100 
harmoniert. Der Phasenakku wird dann um einen "krummen" Wert 
fortgeschrieben.

Je nach Rundung bekomme ich damit eine z.B. etwas zu kleine Frequenz, 
was dazu führt, dass die Phase vom Ideal wegläuft.

Frage: Wird das irgendwie ausgeglichen?

Oder muss ich das per Hand machen, durch z.B: reset?
Gast #2256655
Lesenswert?

Gisbert schrieb:
> Je nach Rundung bekomme ich damit eine z.B. etwas zu kleine Frequenz,
> was dazu führt, dass die Phase vom Ideal wegläuft.
Richtig.

Deine Frequenzauflösung wird durch die Bitbreite des Akkus vorgegeben:
1
F_step = F_sampling / ( 2**akku_width)
Bei 100 MHz und z.B. 8 Bit kannst Du nur Schritte von 390.625 kHz 
einstellen.

> Frage: Wird das irgendwie ausgeglichen?
Nein.

> Oder muss ich das per Hand machen, durch z.B: reset?
Damit hast Du einen Frequenzsprung (und möglicherweise auch einen 
Phasensprung).

Wie genau ist denn Deine Taktquelle?
Und warum brauchst Du eine so genaue Frequenz?
Bei Funksystemen muß man z.B. damit rechnen das die Frequenz der 
Gegenstelle abweicht. (Doppler-Effekt, andere Temperatur etc. pp)

Duke
Gast #2256931
Lesenswert?

>> Oder muss ich das per Hand machen,
>Damit hast Du einen Frequenzsprung
Somit wäre aber die Phase zumindest für eine gewisse Zeit in dem 
gewünschten range zu halten.

Um solche Effekte bei Spüngen zu mindern, kann man in digitalen 
Analog-Systemen (und solchen die beanspruchen, sowas zu sein :-) ein 
künstliches Phasenrauschen aufsetzen und Filtern. Damit "verteilt" sich 
der Sprung.
#2262324
Lesenswert?

Ein NCO hat eigentlich keinen solchen Phasensprung. Selbst wenn ich die 
29 MHz mit einem Takt von "nur" 30 MHz erzeuge, dann addiere ich immer 
einen bestimmten Wert, und nur die Breite des Akkumulators legt die 
Phasenabweichung fest, bzw. die Breite der anschließenden D/A-Wandlung. 
Das geht (fast) mit beliebiger Präzision. Phasensprünge werden zur 
Modulation des NCO verwendet, abrupte Sprünge geben PSK, ein +-Offset 
erzeugt FM, eine binäre Multiplikation des Akkumulators erzeugt AM, und 
so fort......
Gast #2262430
Lesenswert?

Aber es gibt doch ein Ganzzahlprolem!(?) Der Akku wird mit einem Wert 
addiert, der dazu führt, das nach der Zahl der Takte/Sekunde zu einem 
kompletten Akkuüberlauf führt. Wenn aber die gwünschte Freuquenz nicht 
ganzzahlig zur Taktfrequenz üpasst, geht es nicht ganz genau.
Gast #2271385
Lesenswert?

Das sind zwei unterschiedliche Dinge:

1) Phasenrauschen:

Der Sinuswert wird von einem hochgenauen Akku abgenommen und ist 
aufgrund der Rundung in der Phase ungenau. Folglich ist der Wert 
ungenau. Im Mittel stellt sich ein Phasenrauschen um eine Periode ein, 
die exakt der Akkumulatorperiode entspricht.

2) Frequenz:
Der Akku selbst ist nicht beliebig gross und der "Hinzuzählwert" der ja 
die Frequenz bestimmt, unterliegt auch einer Rundung. Die reale Frequenz 
ergibt sich zu f= Akkugroesse / (Taktfrequenz * Schrittweite).

Wenn diese Zahlen nicht optimal zusammenpassen, kommt man zu einer 
gerundeten = falschen Frequenz!

Ein wichtiger Punkt ist auch die Dimensionierung von Akku gegen 
Tabellengrösse.
Gast #2276933
Lesenswert?

Bei der Grafik wird der Akku auf 11 Bit gekürzt, was bei dem grossen 
Akku bei 96kHz reicht, trotzdem stimmt die Frequenz noch nicht gut 
genug. Wenn man die Abtastfreuquenz erhöht, um mehr Bandbreite zu 
bekommen, muss der Akku quadratisch wachsen, weil sonst der 
Schrittfaktor nicht genau eingestellt werden kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren