Forum: Mikrocontroller und Digitale Elektronik Pic: Numerically controlled Oscillator als Timer?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Daniel (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Wie in der Überschrift erwähnt: Da der NCO periodisch Interrupts 
erzeugen kann, was spricht dagegen ihn als Timer zu verwenden?

Ich würde ihn zum Abtasten eines Signals benutzen wollen.

von my2ct (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Wie in der Überschrift erwähnt: Da der NCO periodisch Interrupts
> erzeugen kann, was spricht dagegen ihn als Timer zu verwenden?

Keine Ahnung. Wie kommst du drauf, dass es da ein Problem geben könnte?

von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
my2ct schrieb:
> Keine Ahnung. Wie kommst du drauf, dass es da ein Problem geben könnte?

Ich frage mich, warum man ihn nicht einfach Timer nennt, so wie üblich.

von my2ct (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Ich frage mich, warum man ihn nicht einfach Timer nennt, so wie üblich.

Weil bei einem NCO gegenüber einem einfachen, als Zähler aufgebautem 
Timer, insbesondere bei hohen Frequenzen ein kräftiger Jitter der 
Taktflanken dazu kommt. Bei Steuerung zur Abtastung eines Signals wird 
dadurch die Anzahl der effektiven Bits reduziert. Guck dir das 
Funktionsprinzip an.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
So ein NCO arbeitet meist auf dem Prinzip der DDS. Dessen 
Grundeigenschaft ist es, daß die Periodendauer des Ausgangssignals in 
den allermeisten Fällen um 1 Zählertakt schwankt (Jitter). Ein einfacher 
Zähler macht das nicht, dort ist die Periodendauer konstant.

DDS: deutlich höhere Frequenzauflösung, dafür aber Jitter
Zähler: deutlich kleinere Frequenzauflösung, dafür jitterfrei

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> was spricht dagegen ihn als Timer zu verwenden?
>
> Ich würde ihn zum Abtasten eines Signals benutzen wollen.

Wenn du das NCO Signal nach aussen führst, tiefpass filterst
(damit der Jitter weg ist) und dann der Abtastung zuführst
dann geht das.

Sonst:

Falk B. schrieb:
> Dessen
> Grundeigenschaft ist es, daß die Periodendauer des Ausgangssignals in
> den allermeisten Fällen um 1 Zählertakt schwankt (Jitter)

von sparfux (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> tiefpass filterst (damit der Jitter weg ist)

Mit einem Tiefpass bekommt man den Phasenjitter nicht weg.
Wenn du keine Ahnung hast dann halt die Finger still.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
> So ein NCO arbeitet meist auf dem Prinzip der DDS.

Das mein Microchip auch bzgl. seiner Produkte:
https://www.microchip.com/design-centers/8-bit/peripherals/core-independent/numerically-controlled-oscillator

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Ich frage mich, warum man ihn nicht einfach Timer nennt, so wie üblich

Weil es kein Timer ist, sondern eben ein Oszillator?

Daniel schrieb:
> Ich würde ihn zum Abtasten eines Signals benutzen wollen

Ja. Machen. Deine Anwendung kennen wir ja nicht.
Muß du wissen, ob es paßt...

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
sparfux schrieb:
> Mit einem Tiefpass bekommt man den Phasenjitter nicht weg.

Bekommt man schon. Ein Jitter ist spektral gesehen nichts anderes
als eine zusätzliche Frequenz neben der Hauptlinie. Im Falle eines
DDS ist der Jitter hauptsächlich die Spektrallinie des DAC-Taktes.
Und dieser/diese lässt sich durch Tiefpassfilterung unterdrücken.

Manchen Leute sagen zu diesem Tiefpass auch Rekonstruktionsfilter.

sparfux schrieb:
> Wenn du keine Ahnung hast dann halt die Finger still.

Das fragt man sich wer da keine Ahnung hat.

von merciMerci (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
> Und genau das ist DDS.

... nee, dafür totaler Unsinn!
Dann erklär mal bitte du Schlaumann, warum der NCO ein DDS sein soll.
Und all die anderen Schlauen können auch mal erklären, wie bei dem NCO 
Prinzip ein Jitter entstehen soll!

Ich würde zuerst mal nachlesen , wie NCO aufgebaut ist und was DDS 
konkret bedeutet.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> Falk B. schrieb:
>> Und genau das ist DDS.
>
> ... nee, dafür totaler Unsinn!

Wenn du das sagt, muss es wohl so sein.

> Dann erklär mal bitte du Schlaumann, warum der NCO ein DDS sein soll.

Ein NCO KANN auf DDS basieren.

NCO numeric controlled oscillator

Das ist ein allgemeiner Begriff, der KEINE spezifische Implementierung 
beschreibt. So wie Auto keine spezifische Marke oder Modell!

> Und all die anderen Schlauen können auch mal erklären, wie bei dem NCO
> Prinzip ein Jitter entstehen soll!

Es ging um den NCO in einigen PIC-Mikrocontrollern, der Wolfgang hatte 
einen Link gesetzt, und auf der Seite sieht man ein Blockschaltbild, 
welches klar als DDS identifiziert werden kann. Natürlich ein DDS ohne 
Sinustabelle und DAC! Nur der reine Akkumulator und das Register. Das 
MSB wird als Takt verwendet. Das reicht aber für viele Anwendungen.

> Ich würde zuerst mal nachlesen , wie NCO aufgebaut ist und was DDS
> konkret bedeutet.

In der Tat, das solltest du tun ;-)

von merciMerci (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
> In der Tat, das solltest du tun ;-)

Wenn ein NCO ein DDS sein soll, dann glaube ich auch wieder an den 
Weihnachtsmann!

NCO könnte eine Funktionsgruppe einer DDS sein, aber sicher kein DDS 
selbst.

see here
https://www.analog.com/media/en/training-seminars/tutorials/MT-085.pdf

von merciMerci (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> see here

oder auch hier
http://ww1.microchip.com/downloads/en/AppNotes/90003131A.pdf

Also ich sehe da keine DDS!?

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> NCO könnte eine Funktionsgruppe einer DDS sein, aber sicher kein DDS
> selbst.

Grob gesprochen fehlt dem NCO einfach nur die Analog-Schnittstelle,
also der DAC der aus dem digitalen (NCO-) Datenstrom ein analoges
Signal macht.

Also Krümelkacker oder Erbsenzähler haben Recht, aber trotzdem
ist das Syntheseprinzip eines DDS ein NCO. Und damit lässt
sich vereinfacht sagen: NCO = DDS.

von merciMerci (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Signal Veredler schrieb:
> sich vereinfacht sagen: NCO = DDS.

OK/ja, der 1-bit DAC wäre ja immer da.
https://en.wikipedia.org/wiki/Direct_digital_synthesis

Wo soll bei dem NCO/vereinfachten DDS der Jitter entstehen?

von merciMerci (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> Wo soll bei dem NCO/vereinfachten DDS der Jitter entstehen?

https://en.wikipedia.org/wiki/Direct_digital_synthesis
At offsets far removed from the carrier, the phase-noise floor of a DDS 
is determined by the power sum of the DAC quantization noise floor and 
the reference clock phase noise floor.

Hier ja dann wohl nur der ref clock Jitter, den das Signal schon 
mitbringt?!

von Toxic (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Fuer's allgemeine Verstaendnis und ohne gross Datenblaetter zum Thema 
NCO lesen zu muessen:
Microchip Self-Paced Training – Numerically Controlled Oscillator (NCO)

Youtube-Video "Microchip Self-Paced Training – Numerically Controlled Oscillator (NCO)"

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> Wo soll bei dem NCO/vereinfachten DDS der Jitter entstehen?

Dadurch dass die Periode des synthetisierten Ausgangssignals
(je nach eingestelltem Frequenzwert) nicht einem ganzzahligen
Teilungsfaktor des Systemtaktes entsprechen muss. Eine Bit-
Änderung der Synthese kann in diesem Fall +- einer Periode
des Systemtakts verschoben auftreten.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> Ich würde zuerst mal nachlesen , wie NCO aufgebaut ist und was DDS
> konkret bedeutet.

Hast du den Link auf die MCP-Seite wenigstens mal angeklickt?
Genau so sieht ein DDS-Generator aus. Von einem Oszillator ist der 
übrigens weit entfernt - der Takt muss extern zu geführt werden.
Ohne den läuft da gar nichts - k.A. wie die auf das "O" in "NCO" kommen.

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> k.A. wie die auf das "O" in "NCO" kommen.

Daher dass der Schrittweiten-Akkumulator (auch oft Phasen-
Akkumulator genannt) zwischen seinen Min- und Maxwerten hin-
und her oszilliert.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> At offsets far removed from the carrier, the phase-noise floor of a DDS
> is determined by the power sum of the DAC quantization noise floor and
> the reference clock phase noise floor.

Es geht hier um die Erzeugung eines digitalen Taktes mit einer 
bestimmten Frequenz. Den DAC kannst du ganz schnell wieder vergessen - 
falscher Film.

von Achim S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
merciMerci schrieb:
> https://en.wikipedia.org/wiki/Direct_digital_synthesis
> At offsets far removed from the carrier, the phase-noise floor of a DDS
> is determined by the power sum of the DAC quantization noise floor and
> the reference clock phase noise floor.
>
> Hier ja dann wohl nur der ref clock Jitter, den das Signal schon
> mitbringt?!

Wenn man es so macht wie im Wiki-Artikel beschrieben - also eine 
sinusförmige Spannung erzeugt und ein analoges Rekonstruktionsfilter 
nachschaltet, und dann meintwegen einen Komparator auf den Nulldurchgang 
des Sinus schalten lässt - dann stimmt die Betrachtung. Aber wenn nicht 
den Umweg über eine Sinus-Erzeugung und eine analoge Filterung geht, 
dann stimmt sie nicht.

Der TO spricht von einem NCO als Timer-Ersatz. Er hat sein Vorhaben zwar 
nicht ganz eindeutig beschrieben, aber es ist zumindest naheliegend, 
dass er einfach den Überlauf des Phasenakkumulators nutzen will, um 
seine Abtastpulse zu generieren. Dann kommt zusätzlicher Jitter dazu, 
weil die Abtastperiode mit dem µC-Takt quantisiert sind.

Würde er direkt einen Timer nutzen, dann könnte er nur solch 
Abtastperioden einstellen, die sich direkt aus dem Prozessortakt 
herunterteilen lassen - es gibt keinen zusätzlichen Jitter.

Der NCO hat aber eine höhere Frequenzauflösung. Mit ihm lassen sich auch 
Abtastfrequenzen einstellen, die sich nicht direkt aus dem Prozessortakt 
teilen lassen. Und dann entsteht der Jitter.

Ein Rechenbeispiel: die Grundtakt des Prozessors sei meintwegen 10MHz, 
eine Periode also 100ns. Mit einem Timer lässt sich dann z.B. eine 
Abtastfrequenz von 1Mhz einstellen (10 Grundtakte, 1µs) oder eine von 
909,09kHz (11 Grundtakte, 1,1µs). Beide Frequenzen könnten vom Timer 
jitterfrei erzeugt werden, aber Zwischenfreuqenzen wären nicht möglich.

Mit dem NCO und seiner höheren Frequenzauflösung lassen sich dagegen 
auch Zwischenfrequenzen erzeugen. Bei passender Wahl des 
Phaseninkrements lässt sich eine Abtastfrequenz von 952,38kHz einstellen 
(also 10,5 Perioden des Grundtakts 1,05µs). Dann erzeugt der "einfache" 
NCO abwechselnd Perioden von 1µs und von 1,1µs. Im Mittel werden die 
gewünschten 1,05µs erreicht, jede einzelne Periode jittert aber um 0,5µs 
hin und her.

von Signal Veredler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Achim S. schrieb:
> jede einzelne Periode jittert aber um 0,5µs hin und her.

Na sach ich doch.

von Toby P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel schrieb:
> Wie in der Überschrift erwähnt: Da der NCO periodisch Interrupts
> erzeugen kann, was spricht dagegen ihn als Timer zu verwenden?


Nichts.

von sparfux (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> was spricht dagegen ihn als Timer zu verwenden?
> Nichts.

Der NCO kann keine PWM und hat auch sonst nichts extra
was eigentlich zu einem richtigen Timer gehoert.

Wenn einem eine immanent jitternde Taktquelle reicht,
dann mag das reichen.

von Toby P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke dem TE für den Hinweis, kannte das Teil noch nicht

sparfux schrieb:
> Wenn einem eine immanent jitternde Taktquelle reicht,
> dann mag das reichen.

Wenn ich das richtig verstanden habe dann ist das ein Timer bei dem dem 
Vorteiler und Zähler durch einen 2x20 bit Addierer ersetzt wurden

Das Ding teilt eine Frequenz nicht in 1,2,8 usw auf sondern mit einer 
Auflösung von max. 2^20 = 1.xx Mio. DDS sehe ich da nicht.

Da ist natürlich (wie bei jede digitalen Verarbeitung) ein Jitter von 
einem 1/2 LSB Bit (oder 1 Bit bin nicht so theoriefest). Wird das Teil 
voll ausgenutzt dann sind das 0,5 ppm (1ppm). Kenne Anwendungen wo das 
akzeptabel ist ;-).

von sparfux (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wer einen Phasenakkumlator nicht sieht

> DDS sehe ich da nicht.

braucht eine Brille.

Und es ist kein Timer, sondern ein Oszillator.
Steht ja auch schon im Namen.

Fuer manches mag das reichen, einen Timer mit allen
Bells & Whistles ersetzt der NCO eben nicht.

von Toby P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
sparfux schrieb:
> Wer einen Phasenakkumlator nicht sieht

Da sehe ich einen Addierer wie er auch im Akku eines DDS Systems 
verwendet wird. Den gibt es aber auch in einer ALU.


sparfux schrieb:
> Und es ist kein Timer, sondern ein Oszillator.

Kommt vielleicht darauf an wie man Oszillator definiert. Bei dem NCO 
schwingt nichts, das Teil braucht einen externen Takt und geht auch bei 
null Hertz los.

Kann ja sein das ich falsch liege, aber ich sehe einen Teiler der durch 
einen Addierer realisiert ist. Das hat Microchip gemacht um sehr feine 
Teilschritte erzeugen zu können wie das auch bei DDS gemacht wird.

Meinetwegen kann man das auch DDS nennen, hat dann halt nur 2 
Phasenlagen (nur ein Carry bit).

Den Namen finde ich etwas unglücklich, auch die Darstellung im 
Datenblatt.

von Toby P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
sparfux schrieb:
> Fuer manches mag das reichen, einen Timer mit allen
> Bells & Whistles ersetzt der NCO eben nicht.

Man kann ihn ja vor einen Timer hängen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.