mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Mischfrequenzen: DDS oder Singlebuffer


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.
Autor: Peter C. (spacetec)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage an die Signalspezialisten:

ich muss ein gemischtes Sinussignal mit zwei unterschiedlichen 
Frequenzen generieren (per 16bit-DAC, konkret LTC1668).

Die Frequenzen betragen 1kHz - 10kHz.

Ich habe da jetzt zwei Möglichkeiten:
1.) 2xDDS in einem FPGA, diese dann intern mischen und auf den DAC legen
2.) Da schon im System vorhanden: ein STM32 mit einem Puffer, in den ich 
die vorher berechneten Werte lege und diese dann mit timergetriggertem 
DMA zyklisch zum DAC schicke. Den Puffer würde ich in den SRAM2 des 
STM32 legen, der hat ja einen eigenen Bus, damit ich möglichen Jitter 
umgehe.

Wo seht ihr Vor-/Nachteile der beiden Möglichkeiten? Fehlt noch etwas in 
meiner Fragestellung?

Danke im Voraus,
Peter

Autor: Horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du vergleichst hier zwei Dinge gleichzeitig, nämlich 2 Methoden und 2 
Plattformen. Die Methode 2 der vorberechneten Analogwerte ist um Klassen 
besser, lässt sich aber in beiden Plattformen realisieren. In FPGAs noch 
feiner.

Autor: Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter C. schrieb:
> Fehlt noch etwas in
> meiner Fragestellung?

Ja, gibt es noch eine weitere Option? Wodurch sind diese beiden 
festgelegt?

Autor: Christoph db1uq K. (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne solche Zweitonsignale aus der Sendermesstechnik. Damit werden 
die Verzerrungen 2. Ordnung mit dem Spektrumanalysator gemessen.
Das wichtigste Kriterium ist hier, dass die beiden Töne nicht schon von 
Anfang an Verzerrungen haben. Die sollen erst im Messobjekt entstehen.

Autor: Hans Kanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph db1uq K. schrieb:
> Das wichtigste Kriterium ist hier,

Da wäre DDS in meinen Augen auch der komplett falsche Weg.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Kanns schrieb:
> Christoph db1uq K. schrieb:
>> Das wichtigste Kriterium ist hier,
>
> Da wäre DDS in meinen Augen auch der komplett falsche Weg.

...und ein LTC1668 auch ein unpassender Wandler.
Warum 50 Msps für 10 Khz?
16 bit, naja -> thd entsprechend.

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph db1uq K. schrieb:
> Ich kenne solche Zweitonsignale aus der Sendermesstechnik. Damit werden
> die Verzerrungen 2. Ordnung mit dem Spektrumanalysator gemessen.

Genau. Ist aber im Audio-Bereich genauso ein üblicher Test für 
Verzerrungen.
Und die Frequenzen hier sind genau die üblichen Audio-Frequenzen.

> Das wichtigste Kriterium ist hier, dass die beiden Töne nicht schon von
> Anfang an Verzerrungen haben. Die sollen erst im Messobjekt entstehen.

Ganz genau. Die Frage ist welchen Teil der Signalkette der TO hier 
messen möchte. Den DAC? Die Analogkette wie Opamps und Filter hinter dem 
DAC? Oder ein anderes Gerät (z.B. Verstärker) mit Analogeingang?

Joe F. schrieb:
>> Da wäre DDS in meinen Augen auch der komplett falsche Weg.
>
> ...und ein LTC1668 auch ein unpassender Wandler.
> Warum 50 Msps für 10 Khz?
> 16 bit, naja -> thd entsprechend.

Ja, denke ich auch. Ich würde mich nach Audio-DACs umschauen, z.B. 
AK4490, und die dann mit I2S ansteuern. Das können die meisten STM32 
direkt. Also einfach die beiden Sinusse in Software mischen und in einen 
kleinen Puffer schreiben. Diesen Puffer dann per DMA aufs I2S geben. Und 
nimm einen STM32 der eine extra Audio-PLL hat, das gibt deutlich bessere 
Jitter-Werte als mit der normalen PLL.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd E. schrieb:
> Ich würde mich nach Audio-DACs umschauen, z.B.
> AK4490, und die dann mit I2S ansteuern.

Genau. Oder super high-end: DAC von ESS
http://www.esstech.com/index.php/en/products/sabre-digital-analog-converters/audiophile-dacs/

Autor: Gerd E. (robberknight)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joe F. schrieb:
> Gerd E. schrieb:
>> Ich würde mich nach Audio-DACs umschauen, z.B.
>> AK4490, und die dann mit I2S ansteuern.
>
> Genau. Oder super high-end: DAC von ESS
> 
http://www.esstech.com/index.php/en/products/sabre-digital-analog-converters/audiophile-dacs/

ESS ist Stress. Du kriegst die Datenblätter nur gegen NDA, dann 
erfordert der Current-Output eine I/V-Wandlung,...

AKM ist dagegen zahm und einfach und der AK4490 auch preislich 
interessant.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd E. schrieb:
> ESS ist Stress. Du kriegst die Datenblätter nur gegen NDA, dann
> erfordert der Current-Output eine I/V-Wandlung,...

Klar, ist nicht ganz einfach zu bekommen. Der LTC1668 ist auch ein 
current DAC, daher dachte ich ja, könnte ganz gut passen...

Autor: Follsplunk dulch Telchnik (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Der Chinese hätte einen PT8211 genommen und einfach das
Chipgehäuse neu gelasert.

Autor: -gb- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man die beiden Frequenzen auch mit einem DDS Akku erzeugen? Also 
dass man z. B. die Schrittweite abwechselt die man draufaddiert. Mal 
großen Wert für die niedrigere Frequenz und mal kleineren Wert für die 
höhere Frequenz.

Autor: stm32er (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst Sinussignale auch in Echtzeit berechnen. Algorithmus ist ganz 
einfach. Und auf nem STM32 mit FPU theoretisch in 4 Takten gemacht.

Das erzeugt einen Sinus:
fSin += fFrq * fCos;
fCos -= fFrq * fSin;


Und damit regelst Du die Amplitude nach, damit sie auch über längere 
Zeit 1.0 bleibt. (Wegen Rundungsfehler). Kannst Du aber in einer 
langsameren Task machen.
fCorr = 1.0f +((1.0f - (fSin * fSin + fCos * fCos))*0.01f);
fCos *= fCorr;
fSin *= fCorr;

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

-gb- schrieb:
> Kann man die beiden Frequenzen auch mit einem DDS Akku erzeugen?
> Also
> dass man z. B. die Schrittweite abwechselt die man draufaddiert. Mal
> großen Wert für die niedrigere Frequenz und mal kleineren Wert für die
> höhere Frequenz.

Nein. Sowas gaebe irgendeine wilde Phasenmodulation mit jeder Menge 
Frequenzen zusaetzlich zu 1 und 10 kHz.

Gruss
WK

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-gb- schrieb:
> Kann man die beiden Frequenzen auch mit einem DDS Akku erzeugen? Also
> dass man z. B. die Schrittweite abwechselt die man draufaddiert. Mal
> großen Wert für die niedrigere Frequenz und mal kleineren Wert für die
> höhere Frequenz.

Also eigentlich ist die Schrittweite proportional zur erzeugten 
Frequenz, also grosse Schrittweite für hohe Frequenzen.
Und du würdest einfach nur einen Sinus erhalten, mit der Frequenz aus 
der Summe der beiden Schrittweiten mit leichter Verzerrung.

Wenn man 2 Frequenzen mit ganzzahligem Frequenzverhältnis, also z.B. 
1kHz und 10kHz mit einer DDS erzeugen will, kann man die Wellentabelle 
entsprechend vorberechnen. Statt nur einem Sinus enthält die Tabelle 
noch die 10 fache Frequenz dazugemischt. Allerdings lässt sich dann 
weder das Frequenverhältnis, noch die Amplitude der beiden nachträglich 
beinflussen.

Autor: Peter C. (spacetec)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für das rege Feedback.

Es geht in der Tat um eine Zweitonmessung zur Bestimmung von 
Intermodulations-Verzerrungen.

Ich bin an sich nicht an die zwei Optionen gebunden. Den LTC1668 habe 
ich halt bereits verfügbar, aber die THD ist im Vergleich zu anderen 
DACs ohnehin nicht so berauschend.

Die Lösung mit den Audio-DACs klingt schon sehr interessant, die Teile 
und Datenblätter von ESS scheinen aber nicht sehr leicht verfügbar zu 
sein.
Ich habe mir jetzt den TI PCM1795 mal genauer angeschaut, der dürfte für 
meine Zwecke schon gut passen.

Mir ist aber nicht ganz klar, wie der Mono-Mode funktioniert und wie die 
"balanced outputs" zu verstehen sind.
Werden da beide Kanäle über den Bus übertragen und dann nur einer der 
beiden ausgewertet? Reicht es, z.B. nur den linken Ausgang zu 
beschalten?

Danke,
Peter

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-gb- schrieb:
> Kann man die beiden Frequenzen auch mit einem DDS Akku erzeugen? Also
> dass man z. B. die Schrittweite abwechselt die man draufaddiert. Mal
> großen Wert für die niedrigere Frequenz und mal kleineren Wert für die
> höhere Frequenz.

klar, dann hat man 2 Werte mit je 16 Bit Auflösung, die man zu einem 
Wert mit 16 Bit herunterrechnen kann / muss. Das geht dann auch mit 
anderen Oberwellen.

Wenn man vorher die Frequenzen weiß, kann man es direkt in die Tabelle 
einbauen.

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter C. schrieb:
> Mir ist aber nicht ganz klar, wie der Mono-Mode funktioniert und wie die
> "balanced outputs" zu verstehen sind.

balanced = differential

> Werden da beide Kanäle über den Bus übertragen und dann nur einer der
> beiden ausgewertet?

Genau, I2S ist für Stereosignale gemacht.
https://en.wikipedia.org/wiki/I²S

Im Mono mode kannst du dir aussuchen, ob du L oder R auf beiden 
Ausgängen haben willst.
Macht aber auch nur Sinn, wenn du beide Ausgänge zu einem balanced mono 
out zusammenfassen willst, wie in Figure 55 dargestellt.
Damit kitzelt man halt noch das letzte Quäntchen Qualität heraus.

> Reicht es, z.B. nur den linken Ausgang zu beschalten?

Ja.
Dann brauchst du auch im Prinzip nichtmal den "mono mode".

: Bearbeitet durch User

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.