mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP DDS Frequenz


Autor: Frage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

eine kurze Frage, Ich verstehe wie Direkte Digitale Synthese 
funktioniert. Jedoch wenn ich die Frequnez meines z.B. Sinussignals 
veränder, wird das SIgnal dann Frequenz dann Moduliert? Also bezeichnet 
man das dann als modulation?

Autor: dl1hwo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Einprägen einer Information auf ein Trägersignal bezeichnet man als 
Modulation. Es gibt verschiedene Arten von Modulationen. Die Information 
kann durch Änderung von Frequenz, oder Signalamplitude oder 
Phasenveränderung, ... aufgeprägt werden.

Wenn Du natürlich nur am Signalgenerator von Hand auf eine andere 
Frequenz drehst, dann ist das keine Modulation, sondern einfach eine 
Frequenzänderung.

Das Thema hatten wir aber erst gerade im Forum!

Autor: Frage (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Ja und da liegt ja mein Problem. Ich gehe von einem Digitalen 
Funktionsgenerator aus, der sein Signal (egal ob rechteck, Sinus, etc.) 
per DDS generiert. Da der Digitale Funktionsgenerator das SIgnal mit 
seinem eigenen Takt abtastet und verändert, müsste es doch eine 
Frequenzmodulation sein, wenn ich mich nicht täusche?!?

Autor: Püschologe (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
> Da der Digitale Funktionsgenerator das SIgnal mit
> seinem eigenen Takt abtastet und verändert, müsste es doch eine
> Frequenzmodulation sein, wenn ich mich nicht täusche?!?

Du redest wirr. Nimm erstmal ein Baldrian.

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Püschologe schrieb:
> Du redest wirr. Nimm erstmal ein Baldrian.

Er hat sogar Recht, weil die Abtastfrequenz nie zur Erzeugten passt, 
also immer eine Art Störspektru reinmoduliert wird.

Gute Nacht!

Beitrag #5670751 wurde vom Autor gelöscht.
Autor: dl1hwo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage schrieb:
> Ja und da liegt ja mein Problem. Ich gehe von einem Digitalen
> Funktionsgenerator aus, der sein Signal (egal ob rechteck, Sinus, etc.)
> per DDS generiert. Da der Digitale Funktionsgenerator das SIgnal mit
> seinem eigenen Takt abtastet und verändert, müsste es doch eine
> Frequenzmodulation sein, wenn ich mich nicht täusche?!?

Der DDS hat nur eine Tabelle mit zeitdiskreten Werten des zu 
erstellenden Signals (z.Bsp. Sinus) im Speicher und geht mit einem 
Zeiger im Systemtakt durch die Tabelle, schreibt den jeweiligen Wert in 
einen DAC und das war es.

Da wird nichts moduliert sondern nur eine "Welle" ausgegeben.

Die Modulation entsteht doch erst wenn Du mit einem zweiten Signal diese 
ausgegeben Welle veränderst. Und in dieser Wellenänderung steckt die 
Information die übertragen werden soll, das ist dann die Modulation. Bei 
der Demodulation wird dann aus dieser Veränderung der Trägerwelle die 
Information zurück gewonnen.

Autor: Frage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh Ok ich habe meinen Fehler erkannt. Tut mir an dieser Stelle leid für 
die Verwirrung... war wohl ein starker anfall vom Weihnachtsfieber ^^

Ich hätte trotzdem noch eine Frage zum DDS. Stellen wir uns einen 
Phasenakkumulator mit 10 Bit vor und die Grundfrequenz des 
Phasenakkumulators zum abarbeiten seiner Liste beträgt 1MHz. Also 
beträgt die Frequenz eines Signals, mit Schrittweite 1, 976,5625HZ. Ich 
habe es bisher so verstanden, das die Schrittweite immer eine Ganze Zahl 
sein muss, damit wäre die Auflösung der Frequenz des DDS Abhängig von 
dem Phasenakkumulator. Gerade eben habe ich eine Arbeit gelesen, in der 
man die Schrittweite um 0.5 erweitert hat. Wenn dies Möglich ist und dem 
DDS erlaubt ist, kann man doch eine beliebig genaue Frequenz erzeugen, 
oder täusche ich mich da?

Autor: Christian S. (roehrenvorheizer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: nachtmix (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Frage schrieb:
> wird das SIgnal dann Frequenz dann Moduliert? Also bezeichnet
> man das dann als modulation?

Dann, dann, dann

Dann und wann.

Autor: Cornelius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also
>beträgt die Frequenz eines Signals, mit Schrittweite 1, 976,5625HZ. Ich
>habe es bisher so verstanden, das die Schrittweite immer eine Ganze Zahl
>sein muss, damit wäre die Auflösung der Frequenz des DDS Abhängig von
>dem Phasenakkumulator.

Nein, der Gag am DDS-Verfahren ist genau der, dass es keine ganze Zahl 
sein muss.
Wenn man Töne im Hörbereich damit erzeugt merkt man aber, dass es 
hörbare Artefakte gibt. Generell kann man sagen: Je höher die 
Abtastfrequenz gegenüber der gewünschten Ausgabefrequenz, desto weniger 
Artefakte.

Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Frage schrieb:
> Ich
> habe es bisher so verstanden, das die Schrittweite immer eine Ganze Zahl
> sein muss..

..und damit liegst du grundfalsch.

Die Schrittweite eines DDS ist IMMER eine gebrochene Zahl im Bereich

0 < Schrittweite < 0.5

So herum wird das was. Und wenn genug Schritte aufaddiert worden sind, 
so daß der Phasenakku überläuft, dann wird das gerade "übergelaufene" 
Bit einfach weggeschmissen. Genau so, wie du beim Aufaddieren von 1.25 
Grad auf deinen Winkelmesser, der gerade 359 Grad anzeigt, nicht 360.25 
Grad angezeigt kriegst, sondern 0.25 Grad.

Klaro?

W.S.

Autor: Halb Wissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Die Schrittweite eines DDS ist IMMER eine gebrochene Zahl im Bereich
>
> 0 < Schrittweite < 0.5

öömmmm, ich dachte der Schrittweitenakku eines DDS hätte die
Auflösung der (seiner) charakteristischen Bitbreite, und somit
müsste die Schrittweite eines DDS minimal ein Bit, und maximal
die Bitbreite, also (2 hoch n)-1 sein (n = Bitbreite)?

W.S. schrieb:
> eine gebrochene Zahl

Wie soll eine gebrochene Zahl in einem Register drinstecken?
Geht nicht ... nur durch Kunst-Darstellung.

Autor: Achim S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halb Wissender schrieb:
> Wie soll eine gebrochene Zahl in einem Register drinstecken?

Das ist ein Streit um Betrachtungsweisen.

ein Zahlenbeispiel: der Phasenakkumulator hat 16 Bit.

Ein Phasenincrement von 0x0080 würdest du als Ganzzahlenwert von 128 
betrachten.

W.S. betrachtet das selbe Phasenincrement als Bruchteil des 
Phasenakkumulators, also 2^7 / 2^16 = 1 / 512 (d.h. nach 512 
Phasenadditionen ist eine Periode um)

Für manche Spezialanwendungen mit sehr genauen Frequenzanforderungen 
gibt es tatsächlich auch Sinusgeneratoren, die mit gebrochenen Zahlen 
angesteuert werden (z.B. in diesem DAC, um die Mischerfrequenz im 
GHz-Bereich exakt einstellen zu können):

https://www.analog.com/media/en/technical-documentation/data-sheets/AD9176.pdf

Dort wird das Phasenincrement durch X+A/B angegeben, wobei jeder der 
Werte 48 Bit breit ist. (siehe S. 59)

Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Halb Wissender schrieb:
> öömmmm, ich dachte der Schrittweitenakku eines DDS hätte die
> Auflösung der (seiner) charakteristischen Bitbreite, und somit
> müsste die Schrittweite eines DDS minimal ein Bit, und maximal
> die Bitbreite, also (2 hoch n)-1 sein (n = Bitbreite)?

Du denkst eben NICHT. Das ist das Problem.

Betrachte doch mal ein Byte. (Für C-Leute ein uhintachtunterstrichtee)
Das sind erstmal nur 8 Bits, die da so herumlungern.

Zur Zahl wird das erst, wenn du den Bits eine Wertigkeit zuordnest.

Als normaler Halbwissender denkt man, OK - das Bit ganz rechts in der 
Ecke hat den Wert 1 und folglich hat das Bit links daneben den Wert 2 
und so fort, bis du beim Bit mit dem Wer 128 angekommen bist.

Aber diese ganze Zuordnung ist reine Willkür deinerseits.

Du könntest auch sagen: OK, das Bit ganz links soll den Wert 1 haben, 
folglich das Bit rechts daneben den Wert 1/2, dann 1/4 dann 1/8 und so 
weiter. Dann hast du ne gebrochene Zahl, mit der du von 0 bis 1.995 (so 
etwa) zählen kannst.

Und für eine echt gebrochene Zahl ordnest du dem Bit ganz links den Wert 
0.5 zu. Damit kannst du dann von 0 bis 0.995 (etwa) zählen. Genau DAS 
macht man beim DDS. Das Phaseninkrement wird mit jedem Takt dazu addiert 
und wenn dabei der Akku überläuft, dann ist eben eine Periode um. Der 
Phasenwinkel im Akku bleibt dabei immer im Bereich 0 .. kleiner 1

Verstehe das mal richtig: Am Rechenwerk für Addition und Subtraktion 
ändert sich dadurch GARNICHTS. Aber für das Multiplizieren ändert sich 
etwas: Die Bitbreite, die sich ja beim Multiplizieren verdoppelt, tut 
dies bei Integerzahlen nach links, also in Richtung MSB - aber bei echt 
gebrochenen Zahlen verdoppelt sie sich nach rechts, also in Richtung LSB 
und kann dadurch problemlos weggekürzt werden, ohne die Zahl wieder in 
die richtige Bitposition verschieben zu müssen.

Wichtig ist so etwas bei DSP und FPGA's.

W.S.

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die WS-Variant solle dann wohl auch bedeuten, die Sinus-Tabelle hat 
nicht 1024 Einträge, sondern nur einen, der aber in 1024 Teile gebrochen 
wurde.

Und warum sollte man zum (fixed-Point 10.22) Phase-Akku nur Werte 
kleiner 0,5 addieren dürfen? Ob das der Hersteller der AD98nn-Serie 
schon weiß?

BTW, Winkel zwischen 0 und (fast) 1, gängig wären 0..359 Grad, 0..2Π.
Oder eben 0..1023, wenn's die HW vereinfacht.

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage schrieb:
> Ahh Ok ich habe meinen Fehler erkannt. Tut mir an dieser Stelle leid für
> die Verwirrung... war wohl ein starker anfall vom Weihnachtsfieber ^^
>
> Ich hätte trotzdem noch eine Frage zum DDS. Stellen wir uns einen
> Phasenakkumulator mit 10 Bit vor und die Grundfrequenz des
> Phasenakkumulators zum abarbeiten seiner Liste beträgt 1MHz. Also
> beträgt die Frequenz eines Signals, mit Schrittweite 1, 976,5625HZ.

So ein Phase-Akku hat Real eher 32Bit, von denen man die obersten 10 
verwendet, um die Sinus-Tabelle auszulesen. Man kann dann auch 1/2^22 
jede μs draufaddieren und damit die Frequenz in den mHz-Bereich 
auflösen. Dann wird eben in der Tabelle ganz lange der gleiche Wert 
ausgegeben.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carl D. schrieb:
> Dann wird eben in der Tabelle ganz lange der gleiche Wert
> ausgegeben.

... was man tunlichst vermeiden sollte. Wie das gelöst wird, habe ich im 
Artikel Dithering dargestellt.

Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> ... was man tunlichst vermeiden sollte.

Was man aber nicht wirklich vermeiden kann. Dithern ist dabei auch nur 
ein Versuch, die beschränkte Bitbreite des DAC etwas zu erweitern - Peak 
gegen Jittern tauschen, gelle?

Besser wäre es allemal, gleich einen DAC mit größerer Bitbreite zu haben 
- wenn man den denn kriegen KÖNNTE.

Aber in gewissen Grenzen geht das: Viele HF-Bastler hatten sich so einen 
chinesischen Modul mit nem AD9850 gekauft - in der Hoffnung, damit einen 
guten HF-Generator zu haben. Denkste! Die haben nur 10 Bit an 
DAC-Auflösung. Weitaus besser ist es, etwas mehr Geld zu investieren und 
einen AD9951 zu kaufen. Der löst 14 Bit auf und das ist schon eine viel 
bessere Klasse.

Carl D. schrieb:
> BTW, Winkel zwischen 0 und (fast) 1, gängig wären 0..359 Grad, 0..2Π.
> Oder eben 0..1023, wenn's die HW vereinfacht.

Und du hast offensichtlich garnichts verstanden. Lies meinen Beitrag 
einfach noch einmal und versuche, selbigen zu verstehen.
Tip:
Die Bits in einem DDS haben die Wertigkeiten
Vollkreis/2
Vollkreis/4
Vollkreis/8
Vollkreis/16
usw. je nach Bitbreite des Phasenakkus.
Lies dazu einfach auch mal die Doku zu einem der üblichen DDS-Chips. 
Dort findest du z.B. (bei einem 32 Bit Phasenakku)

Frequenz = Taktfrequenz * (Phaseninkrement / 4294967296)

Und der Ausdruck in der Klammer ist eben eine echt gebrochene Zahl, also 
kleiner als 1.

Kapito?

W.S.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Jürgen S. schrieb:
>> ... was man tunlichst vermeiden sollte.
>
> Was man aber nicht wirklich vermeiden kann. Dithern ist dabei auch nur
> ein Versuch, die beschränkte Bitbreite des DAC etwas zu erweitern - Peak
> gegen Jittern tauschen, gelle?

Das "Jittern" - also ein Phasenrauschen - erzeugt aber ein passend 
moduliertes Signal, wie du weißt, welches tiefpassgefiltert einen 
"analogen" Mittelwert zwischen den Stufen ergibt und damit die Auflösung 
tatsächlich erhöht.

Das funktioniert deshalb, weil die DDS ein TPF haben muss, das auf die 
Abtastfrequenz abgestimmt sein muss. Mithin wird ein PDM-Signal, wie es 
der DAC selbst auch tut, sofern es ein Delta-Sigma ist (... was er in 
der Regel ist).

Der Unterschied zu einem "richtigen" DAC mit einer entsprechenden (aber 
dann sehr viel höheren) Auflösung ist der, dass zweimal Rauschspektren 
entstehen und diese gefaltet werden, was dazu führt, dass man mehr im 
unteren, wahrnehmbaren Bereich unerhalb der Grenzfrequenz des Filters 
hat.
Das ist aber im Ausmaß erheblich kleiner, als das Störspektrum, das die 
Phasensprünge aufwirft.

http://www.96khz.org/oldpages/limitsofdds.htm

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Carl D. schrieb:
>> BTW, Winkel zwischen 0 und (fast) 1, gängig wären 0..359 Grad, 0..2Π.
>> Oder eben 0..1023, wenn's die HW vereinfacht.
>
> Und du hast offensichtlich garnichts verstanden. Lies meinen Beitrag
> einfach noch einmal und versuche, selbigen zu verstehen.

Wend meinst.

Es gibt halt mehrere Sichtweisen und deine versteh ich.
Nur nicht umgekehrt.
>
> Kapito?
>

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.