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
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.
Peter C. schrieb: > Fehlt noch etwas in > meiner Fragestellung? Ja, gibt es noch eine weitere Option? Wodurch sind diese beiden festgelegt?
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.
Christoph db1uq K. schrieb: > Das wichtigste Kriterium ist hier, Da wäre DDS in meinen Augen auch der komplett falsche Weg.
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.
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.
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/
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.
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...
Der Chinese hätte einen PT8211 genommen und einfach das Chipgehäuse neu gelasert.
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.
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:
1 | fSin += fFrq * fCos; |
2 | 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.
1 | fCorr = 1.0f +((1.0f - (fSin * fSin + fCos * fCos))*0.01f); |
2 | fCos *= fCorr; |
3 | fSin *= fCorr; |
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
-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.
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
-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.
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
Joe F. schrieb: > Im Mono mode kannst du dir aussuchen, ob du L oder R auf beiden > Ausgängen haben willst. Wird das Signal dann automatisch gedreht oder muss man auf beiden I2S jeweils komplementäre Signale ausgeben?
So wie ich das Datenblatt verstehe suchst du dir raus, ob du die L oder R samples auf beiden Ausgängen haben willst und für die richtige Polarität sorgt der DAC. Der andere I2S Kanal wird dann einfach nicht benutzt. Im Zweifel: nachmessen.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.