Werte Gemeinde,
ich beschäftige mich im Augenblick mit der ressourcenschonenden Synthese
von nicht sinusförmigen Signalen.
Mein erster Ansatz ist eine DDS mit dem Sonderfall einer
Rechteckschwingung die durch
definiert ist.
Ich habe zwei Fragen zu folgendem Gedankengang:
Meiner Ansicht nach ist es notwendig eine obere Grenze N zu definieren
die verhindert, dass das Abtasttheorem verletzt wird. Zu summierende
Teilschwingungen sollen also kleiner als Fs/2 gehalten werden.
Ich sehe keinen Weg ein allgemeingültiges N zu finden, dass nicht nur
Schwingungen im Umfang einer Duodezime zulässt.
Würde man in der Praxis, eine alle vollständige Rechteckschwingung
benutzen und durch einen Tiefpass ein überschreiten von Fs/2 verhindern?
Da hier nur zwischen zwei Werten alterniert wird, schätze ich kann man
das Konstrukt stark vereinfachen kann?
Ich hänge an der Überlegung fest, dass es streng genommen nicht das
selbe ist einen Tiefpass auf ein unterabgetastes Signal anzuwenden oder
dieses Signal aus Teiltönen zusammenzusetzen.
Herzlichen Dank für alle Hinweise und die nun folgenden freundlichen
Worte
Das schöne an DDS ist doch, daß man den gewünschten Kurvenverlauf
einfach in die LUT schreibt. Also bei Rechteck die Hälfte mit MAX und
die andere mit MIN.
Normalerweise hat man eine konkrete Vorstellung, wie die Kurve aussieht
und macht die Zerlegung in Sinus um die max. Frequenz (bei bestimmte,
minimaler Amplitude) zu bekommen.
Vielen dank Bastler!
Bastler schrieb:> Das schöne an DDS ist doch, daß man den gewünschten Kurvenverlauf> einfach in die LUT schreibt. Also bei Rechteck die Hälfte mit MAX und> die andere mit MIN.
Dann müsste Fs unendlich groß sein um das Abtasttheorem nicht zu
verletzten, denke ich?
Bastler schrieb:> Normalerweise hat man eine konkrete Vorstellung, wie die Kurve aussieht> und macht die Zerlegung in Sinus um die max. Frequenz (bei bestimmte,> minimaler Amplitude) zu bekommen.
Das verstehe ich nicht.
Hallo Schnoer,
vollkommen richtig, ein bischen Theorie - z.B. zur Fouriersynthese -
kann nicht schaden ...
Nur leider ist die Umsetzung theoretischer Betrachtungen in technisch
machbare Ergebnisse nicht immer einfach, manchmal sogar unmöglich.
Besonders wenn es um Grenzwertprozesse oder infinitesimal kleine
Iterationen geht. Das ist eine Wissenschaft für sich. Die technischen
Realisationen unterscheiden sich häufig erheblich von den theoretischen
Ansätzen.
Bastler hat schon einen Ansatz gebracht: Versuche möglichst nicht die
Aufgabe vom theoretischen Ansatz auf eine Realisierung herabzubrechen,
sondern baue mit den verfügbaren Bausteinen (sei es nun Soft- oder
Hardware) Deine gewünschte Lösung.
Du wirst hier an andere Grenzen stoßen, diese heisse es zu erkennen.
Genau das ist die Arbeit die fast alle in diesem Forum leisten und wobei
sie Dir helfen können.
Viele Grüße
Gerd
Schnoer' ist da aber auf ein Problem gestoßen, was durchaus praktische
Relevanz hat.
Ich habe einige Versuche mit DDS und Rechteckschwingung gemacht. Es kann
durch die DDS zu Schwebungen kommen, die man hört. Das klingt dann
irgendwie unsauber.
Schnoer' schrieb:> Dann müsste Fs unendlich groß sein um das Abtasttheorem nicht zu> verletzten, denke ich?
Nein. Die LUT ist ja schon im Diskreten. Dort kannst Du reinschreiben
was Du willst und das Abtasttheorem wird nie verletzt werden. Erst wenn
Du das Diskrete Signal dann wieder in ein kontinuierliches Signal
umwandelst, wirst Du feststellen, dass Du eben keine Frequenzen über
FS/2 haben wirst. Bei einem Rechtecksignal, das in der LUT noch schön
perfekt aussah, wirst Du dann im Kontinuierlichen vermutlich ein paar
Ripple sehen.
Uih, schon so viele Antworten und gute Gedanken. Herzlichen Dank
abcd schrieb:> Nein. Die LUT ist ja schon im Diskreten. Dort kannst Du reinschreiben> was Du willst und das Abtasttheorem wird nie verletzt werden. Erst wenn> Du das Diskrete Signal dann wieder in ein kontinuierliches Signal> umwandelst, wirst Du feststellen, dass Du eben keine Frequenzen über> FS/2 haben wirst. Bei einem Rechtecksignal, das in der LUT noch schön> perfekt aussah, wirst Du dann im Kontinuierlichen vermutlich ein paar> Ripple sehen.
Was übersehe ich?
Ich gehe davon aus, dass zum derzeitigen Disskussionszeitpunkt eine LUT
gemeint ist deren erste Hälfte die Werte MIN und deren zweite Hälfte die
Werte Max aufweist.
Diese Werte würden also auch ausschließlich und ohne Zwischenwerte im
Ausgang auftreten.
Wenn ich diese Werte in ein WavFile schreibe und FFTiere, erscheinen
Frequenzanteile > Fs/2 unterhalb Fs/2. Ich denke, das würde man
verhindern wollen.
Auch der Signalverlauf unterscheidet sich deutlich von, nach der oben
angegebener Formel, diskret summierten Sinussen.
Gerd P. schrieb:> Du wirst hier an andere Grenzen stoßen, diese heisse es zu erkennen.> Genau das ist die Arbeit die fast alle in diesem Forum leisten und wobei> sie Dir helfen können.
Vielen Dank für die Hilfe
Hallo Schnoer',
meiner Ansicht nach lässt sich das Problem nicht exakt lösen. Der Fehler
kann aber minimiert werden und zwar indem man ein LUT mit einer
Abtastfrequenz höher als FS erzeugt.
Hat man z.B. eine Samplingfrequenz von 10kHz kann man eine LUT für 80kHz
erzeugen ( also Faktor 8 höher ). Die LUT für die 80kHz ist keine reine
Rechteckschwingung mehr, sondern muss mit einem TP-Filter auf FS/2
bandbegrenzt werden.
1. Man erzeugt ein Rechtechteckschwingung x für 80kHz
2. Man speichert das gefilterte Signal y=FIR_TP(x) in der LUT
3. Die Schrittweite der DDS wird auf die 80kHz LUT angepasst
Das dürfte den hörbaren Audioeffekt ordentlich reduzieren.
Bei einem Rechteck oder irgendeiner anderen Funktion kommt man nicht
über die Genauigkeit der diskreten Abtastfrequenz hinaus, wenn man das
Ausgangssignal nicht analog filtert, weil nur ein Analogfilter, die
Phasensprünge der DDS weich verteilen kann. Und genau deshalb nimmt man
ja einen Sinus, weil man den entsprechend "hart" filtern kann, nämlich
mit einer Grenzfrequenz kurz oberhalb der höchsten Zielfrequenz.
Eine Lösung für das Problem kann sein, den Sinus mit einem über ein TPF
erzeugten BIAS-wert auszugeben und einen Komparator dranzuhängen. Dann
hat man einen minimpierten Jitter und geringes Phasenrauschen.
Eine weitere Option, die ich mal in einem Synthesizer verwendet habe,
war, mit dem Sinus die doppelte Frequenz zu erzeugen, diese zu filtern
und dann zu ver-Rechtecken, indem sie auf einen Eingang rückgeführt
wird. Das führt aufgrund der Asymmetrie zu nächst zu einem verzerrten
d.c. Verhältnis, nach einem Herunterteilen um Faktor 2 war die Frequenz
sehr stabil und hatte immer geglättete 50% d.c.
Schnoer' schrieb:> Dann müsste Fs unendlich groß sein um das Abtasttheorem nicht zu> verletzten, denke ich?
Das muss sie für ein Rechteck sowieso.
Und wo steht in Stein gemeißelt, dass man das Abtasttheorem nicht
verletzen darf. Man muss dabei lediglich wissen, was man tut.
Hallo und herzlichen dank fürs Mitdenken in die Runde!
Alles in allem bin ich verwundert darüber, dass durch lesen einiger
Artikel und App Notes und Artikel bei mir bisher der Eindruck entstanden
ist, dass es kein Problem darstellt alle möglichen Wellenformen durch
die DDS darzustellen.
Bastler schrieb:> Das schöne an DDS ist doch, daß man den gewünschten Kurvenverlauf> einfach in die LUT schreibt
Ganz so trivial scheint es dennoch nicht zu sein.
die Aussage
Jürgen S. schrieb:> Und genau deshalb nimmt man> ja einen Sinus, weil man den entsprechend "hart" filtern kann
steht für mich im Widerspruch zu Bastlers Aussage.
Chris' Ansatz ist für mich nachvollziehbar und würde, denke ich meine
ursprüngliche Frage
Schnoer' schrieb:> Würde man in der Praxis, eine alle vollständige Rechteckschwingung> benutzen und durch einen Tiefpass ein überschreiten von Fs/2 verhindern?> Da hier nur zwischen zwei Werten alterniert wird, schätze ich kann man> das Konstrukt stark vereinfachen kann?
ganz gut beantworten.
Jürgen S. schrieb:> Eine weitere Option, die ich mal in einem Synthesizer verwendet habe,> war, mit dem Sinus die doppelte Frequenz zu erzeugen, diese zu filtern> und dann zu ver-Rechtecken, indem sie auf einen Eingang rückgeführt> wird. Das führt aufgrund der Asymmetrie zu nächst zu einem verzerrten> d.c. Verhältnis, nach einem Herunterteilen um Faktor 2 war die Frequenz> sehr stabil und hatte immer geglättete 50% d.c.
Mit dem Ansatz werde ich bestimmt herumexperimentieren. Vielen Dank.
Jürgen S. schrieb:> Bei einem Rechteck oder irgendeiner anderen Funktion kommt man nicht> über die Genauigkeit der diskreten Abtastfrequenz hinaus, wenn man das> Ausgangssignal nicht analog filtert, weil nur ein Analogfilter, die> Phasensprünge der DDS weich verteilen kann.
Du meinst das Rekursionsfilter bei der D/A Wandlung?
Ich denke an den Fall der Erzeugung, zum Beispiel eines Wave Files.
C.E.S. schrieb:> Schnoer' schrieb:>> Dann müsste Fs unendlich groß sein um das Abtasttheorem nicht zu>> verletzten, denke ich?>> Das muss sie für ein Rechteck sowieso.> Und wo steht in Stein gemeißelt, dass man das Abtasttheorem nicht> verletzen darf.
Ich habe es zumindest in der Frage mit
Schnoer' schrieb:> Mein erster Ansatz ist eine DDS mit dem Sonderfall einer> Rechteckschwingung die durch [Formel s.o.] definiert ist.
und
Schnoer' schrieb:> Zu summierende> Teilschwingungen sollen also kleiner als Fs/2 gehalten werden.
impliziert.
C.E.S. schrieb:> Man muss dabei lediglich wissen, was man tut.
Du weißt es offensichtlich?
Wie würdest Du die Frage beantworten, ob es möglich ist ohne Filterung
ein Rechtecksignal zu erzeugen, dass nur ungeradzahlig, ganzzahlige
Vielfache seiner Grundschwingung enthält?
Ich hab ja nicht behauptet, das ein Rechteck im LUT auch nach dem Filter
exakt so aussieht. Denn dazu bräuchte man ja eine gegen unendlich
gehende Grenzfrequenz.
Wenn ich alternierend MIN und MAX in eine 1000 LUT eintrage und diese
mit 10Mhz abtaste, habe ich dann einen 5Ghz Sinus? Sicher nicht, denn
ich würde ja max 5Mhz (besser weniger) durch den Filter lassen.
Beliebige Form eintragen sollte bedeuten, ich brauch für ein Dreieck
oder einen Sägezahn keinen Fourier bemühen, ich kann die Form einfach
reinschreiben. Die Ecken beider Kurven haben natürlich wieder das
Unendlichkeits-Problem, aber das hat technisch keine Bedeutung, weil
jede Anwendung ihre Frequenzbereich hat.
Aber ich hab's einfach mit meinem 20Mhz Oszi aus den frühen 80ern.
Außerdem höre ich auch keine 20khz mehr. Also bitte etwas Nachsicht.
C.E.S. schrieb:> Und wo steht in Stein gemeißelt, dass man das Abtasttheorem nicht> verletzen darf.
Sobald man die überschreitet, erhält man Spiegelfrequenzen und das sind
im Einzelnfall sehr niederfreqente, die sich als drift niederschlagen.
'Schnoer schrieb:> steht für mich im Widerspruch zu Bastlers Aussage.
Nun ja: 2 Aussagen, 2 Ziele. Das Ziel bei der Rekonstruktion ist
eigentlich, alle Oberwellen möglichst zu eliminieren. Damit
herumzuspielen ist ein anderer Ansatz. Wie ich an anderer Stelle schon
ausgeführt habe, lassen sich da freilich gezielte Oberwellen
herauspräparieren, aber die dafür nötige Filterung muss der Frequenz
angepasst werden.
'Schnoer schrieb:> Du meinst das Rekursionsfilter bei der D/A Wandlung?
"Rekonstruktionfilter"
Da mir das Thema interessant erscheint, habe ich ein wenig angefangen zu
experimentieren. Hier finden sich zwei DDS Rechtecksignale als Wav-File.
Beim zweiten File kann man den DDS-Fehler ziemlich gut hören:
http://hobby-roboter.de/forum/viewtopic.php?f=5&t=151
>1. Man erzeugt ein Rechtechteckschwingung x für 80kHz>2. Man speichert das gefilterte Signal y=FIR_TP(x) in der LUT>3. Die Schrittweite der DDS wird auf die 80kHz LUT angepasst
Das Verfahren funktioniert leider nur für eine feste DDS-Frequenz, da
sich mit einer Änderung der Abtastrate die Grenzfrequenz welche durch
y=FIR_TP(x) gegeben ist, gleich mit verschiebt.
Ein Verfahren welches funktionieren würde, müsste die Flanken des
Rechtecksignals detektieren und dann das gesampelte DDS-Signal der
Flanke mit konstanter Frequenz abspielen.
Eine andere Möglichkeit wäre, eine bandbegrenzte Sprungfunktion mit
hoher Abtastrate zu sampeln und zwei verschobene DDS-Signale zu
erzeugen. Das Rechtecksignal ergibt sich dann aus der Subtraktion der
beiden Signale.
Ausserdem wäre noch mein obiger Vorschlag:
>Eine gute Naeherung waere den Abtastwert an der Flanke mit Hilfe des>Nachkommanteils des Phasenakkumaltors linear interpolieren.
Das erscheint mir auch noch viel versprechend.
Juergen S. schrieb:
>Bei einem Rechteck oder irgendeiner anderen Funktion kommt man nicht>über die Genauigkeit der diskreten Abtastfrequenz hinaus, wenn man das>Ausgangssignal nicht analog filtert, weil nur ein Analogfilter, die>Phasensprünge der DDS weich verteilen kann. Und
Das ist leider nicht ganz richtig.
>> http://hobby-roboter.de/forum/viewtopic.php?f=5&t=151 )
Hier habe ich ein 1100Hz Rechtecksignal mit folgender Signalkette
erzeugt:
DDS-square wave with 64*8000Hz ==> sinc fir low pass with 4000Hz ==>
subsampling to 8000Hz
Wie man im angehängten WAV-File hören kann, verschwinden die störenden
DDS-Artifakte völlig. Damit ist gezeigt, dass eine geeigneter Algrithmus
auf der Digitalen Seite des Abtastsystem funktioniert und eine
eindeutige Verbesserung bringt.
> Hier habe ich ein 1100Hz Rechtecksignal mit folgender Signalkette> erzeugt:>> DDS-square wave with 64*8000Hz ==> sinc fir low pass with 4000Hz ==>> subsampling to 8000Hz>> Wie man im angehängten WAV-File hören kann, verschwinden die störenden> DDS-Artifakte völlig. Damit ist gezeigt, dass eine geeigneter Algrithmus> auf der Digitalen Seite des Abtastsystem funktioniert und eine> eindeutige Verbesserung bringt.
Stimmt. Funktioniert aber nur wenn man die gewünschte Frequenz beim
Erstellen der Tabelle bereits kennt.
In der fertigen Tabelle einfach samples überspringen bzw. doppelt
auslesen (der eigentliche Grund warum man das eigentlich macht) und
danach fix Filtern reicht nicht. Es können trotzdem niederfrequente
Schwingungen (=Schwebung) entstehen.
Für Frequenzen, welche nicht ganzzahlige Vielfache/Teiler der
Tabellenlänge sind, sind unter Umständen andere Syntheseverfahren
(Stichwort CORDIC: http://en.wikipedia.org/wiki/CORDIC) besser geeignet.
Hängt halt von der Anwendung ab....
Schnoer' schrieb:> Dann müsste Fs unendlich groß sein um das Abtasttheorem nicht zu> verletzten, denke ich?
Denkst du?
Also, rufe dir mal das Abtast-Theorem wieder ins Gedächtnis. Dabei wirst
du feststellen, daß du selbiges mit einer Ausgabe nie und nimmer
verletzen kannst - sondern lediglich manchmal nicht exakt das bekommst,
was du haben willst.
Also, das DDS-Prinzip ist ja gerade das Ausgeben von Stützstellen in
Abständen, die nicht zur auszugebenden Kurvenform in einem harmonischen
Verhältnis stehen, vulgo n*Taktperiode != Funktionsperiode
Sowas stellt man allgemeingültig so dar, daß man die gewünschte
Kurvenform in einem Speicher vorhält und je nach Phasenwinkel einen
Eintrag dieses Speichers ausgibt.
Natürlich ist die höchste ausgebbare Frequenz exakt die halbe
Taktfrequenz - mehr als in jedem Takt den Ausgang komplett umdrehen geht
einfach nicht. Irgendwelche weiteren Bedingungen für die Taktperiode
gibt es nicht.
Also unterscheide bitte zwischen Abtastung (also A-->D) und Ausgabe
(also D-->A). Das sind wirklich zwei verschiedene Dinge.
W.S.
>Stimmt. Funktioniert aber nur wenn man die gewünschte Frequenz beim>Erstellen der Tabelle bereits kennt.
Das entspricht aber nicht meiner vorgeschlagenen Realisierung. Dort ist
die Tabelle konstant. Die erhöhte Genauigkeit kommt durch das UpSampling
um den Faktor 64 und dann die Filterung mit dem SINC-Filter ( idealer
Tiefpass ).
Der Nachteil an der Methode ist, dass man für jeden Abtastwert mit dem
FIR-Filter filtern muss. Das ist bei Upsampling um den Faktor 64 etwas
rechenaufwendig.
W.S. schrieb:
>Also, rufe dir mal das Abtast-Theorem wieder ins Gedächtnis. Dabei wirst>du feststellen, daß du selbiges mit einer Ausgabe nie und nimmer>verletzen kannst - sondern lediglich manchmal nicht exakt das bekommst,>was du haben willst.
Er weiß aber exakt, was er haben will und in diesem Thread geht es
darum, einen Weg dorthin zu finden.
Wir wollen z.B. eine Rechteckschwingung erzeugen, die wie eine
Rechteckschwingung klingt.
Dass das funktioniert, kann man hören, wenn man den CD-Player
einschaltet. Ein CD-Player kann eine für das Ohre hörbare
Rechteckschwingung mit beliebiger Frequenz erzeugen wenn man die
richtige CD einlegt.
chris_ schrieb:> Juergen S. schrieb:>>Bei einem Rechteck oder irgendeiner anderen Funktion kommt man nicht>>über die Genauigkeit der diskreten Abtastfrequenz hinaus,>> Das ist leider nicht ganz richtig.
Doch, denn wie Du selber schreibst, liegt Deine Abtastfrequenz deutlich
höher, als die erzeugte Frequenz. Die Granularität der Phase ist dabei
bestimmend für die maximale Auflösung Deines Rechtecks. Genauer wird es
nur, wenn die Phase durch ein Filter interpoliert wird und
Zwischenzustände erreichen kann.
CD-Player hin oder her.. Das ist egal. Wenn man nur genügend
Stützstellen pro Periode des gewünschten Signals vorsieht, dann kann man
selbiges auch beliebig genau abbilden. Das ist doch von Anfang an völlig
klar gewesen.
Der Weg dorthin führt jedoch nicht über irgend einen in geschlossenen
Formeln darstellbaren Weg wo in Echtzeit berechnet werden muß, sondern
schlicht über Tabellen im Speicher, wo der gewünschte Kurvenverlauf
gespeichert ist. Ob das nun ROM oder RAM ist, sei hier dahingestellt.
Mit der Tabellenvariante haben wir die Möglichkeit zu beliebeigen
willkürlichen Kurvenformen und damit eben auch zu allen nicht
sinusförmigen Formen. Alles Andere ist nur eine Frage des getriebenen
Aufwandes in der Hardware, aber keine Frage von Abtast-Theorem oder
analytischer Darstellbarkeit.
Haben wir's nun?
W.S.
Hmm ... vielleicht reden wir über unterschiedliche Dinge, deshalb will
ich versuchen, die Aufgabenstellung so wie ich sie verstanden habe, zu
beschreiben:
Gegeben sei folgendes System:
Mikroctontroller ==> DAC ==> Anti-Aliasing Filter ==> Ausgangssignal y
Der Mikrocontroller soll den DAC so ansteuern, dass das Signal y
rechteckförmig wird.
chris_ schrieb:> Der Mikrocontroller soll den DAC so ansteuern, dass das Signal y> rechteckförmig wird.
Wie bitte?????
Und deswegen zergrübeln wir uns hier sämtliche Köpfe..
Port hi
warten
Port lo
warten
W.S.
W.S. schrieb:> Und deswegen zergrübeln wir uns hier sämtliche Köpfe..
Naja, so einfach geht es wohl nicht. Der Fragesteller hat eine Tabelle
der Kurvenform hinterlegt. Je nach Frequenz erhält man damit ein
zeitdiskretes Signal, welches einer abgetasteten Version des
"Soll-Signals" entspricht. Wird die Signalfrequenz höher, so werden die
Samplingpunkte dünner. Man kann sich nicht erwarten, dass man, wenn auf
jeder Halbwelle eines Rechtecks nur mehr ein einzelner Abtastwert liegt,
das nachgeschaltete Tiefpassfilter wieder genau das Sollsignal ergibt.
Man stelle sich vor, das gewünschte Signal sei ein Sinus, der nur mehr
zwei mal pro Periode abgetastet wird: Ein ideales Rekonstruktionsfilter
wird hier einen Sinus ergeben, aber wenn man dann auch noch Oberwellen
möchte, wie sie in einem Rechteck drin sind, kann eine 100%
Rekonstruktion nicht mehr funktionieren. Denn natürlich spielt das
Abtasttheorem hier eine Rolle, auch wenn keine eigentliche Abtastung
vorliegt, sondern das "abgetastete" Signal durch die LUP generiert wird.
Oder habe ich hier etwas falsch verstanden?
Michael W. schrieb:> Oder habe ich hier etwas falsch verstanden?
Nein, Du hast das Problem exakt beschrieben. Solange die Auflösung der
Systemfrequenz fein genug ist, das Rechteck direkt zu erzeugen, reicht
das oberste Bit der DDS. Das versagt, wenn die Frequenz steigt. Es
entsteht ein Jitter und ein digitales Phasenrauschen. Beides ist nur zu
"tunneln" indem ein Sinus generiert wird, welcher möglichst gut
gefiltert wird und der dann theoretisch beliebige Phasen haben kann und
sich im Mittel auf d.c. 50% einstellt. Diese Signal muss dann in ein
Rechteck umgewandelt werden. Das geht dann nur durch erneutes Abtasten
mit einem Schmitttrigger-Eingang mit u.U. vorgeschalteten
Symmetrierglied, das den lokalen Signaloffset reduziert und dafür sorgt,
dass wirklich 50% d.c. entstehen.
>Oder habe ich hier etwas falsch verstanden?
Meiner Meinung nach hast Du es richtig verstanden.
Vielleicht war die Aufgabenstellung oben noch nicht präzise genug
formuliert.
Der Mikrocontroller im oben erwähnten System
Mikroctontroller ==> DAC ==> Anti-Aliasing Filter ==> Ausgangssignal y
soll die Daten mit einer konstanten Rate wie z.B. 8kHz aktualisieren.
Damit lassen sich z.B. Sinussignale bis zu 4kHz erzeugen.
Die Aufgabe lautet also z.B.:
Erzeuge mit einer gegebenen Abtastrate von 8kHz ein bandbegrenztes
Rechtecksignal.
an W.S.: wie machst Du das mit diesem System?
Der TO oben hat aber als Beispiel eine Rechtecksignal mit einer
unendlichen Bandbreite verwendet weil das als Beispielsignal relativ
einfach zu verstehen ist. Das Ausgangssignal y hat natürlich eine
begrenzte Bandbreite.
Hier habe ich ein Rechtecksignal mit 1kHz erzeugt und als wav-File mit
Fs=8kHz abgelegt. Man kann es sich herunterladen und anhören:
http://www.hobby-roboter.de/forum/download/file.php?id=186
Das mit Audacity analysierte Spektrum sieht dann wie das Bild oben aus.
Es ist das Spektrum eines idealen Rechtecksignals.
Das Signal im vorigen Post wurde mit Hilfe einer DDS erzeugt.
Gibt man aber 1100Hz statt 1kHz für die Rechteckfrequenz vor, sieht das
Spektrum nicht mehr so sauber aus und der Ton hört sich auch nicht mehr
so gut an:
http://www.hobby-roboter.de/forum/download/file.php?id=186
Was du da siehst sind die Spiegelfrequenzen, die sich aus der
Interferenz der Abtastrate mit der Endfrequenz ergeben. Wenn Du einen
Sinus erzeugen würdest, bekämst du nach einem Filter mit z.B. 1,5kHz
Grenzfrequenz nur die Frequenzen rund um die 1100Hz. Die anderen wären
sehr gering.
Willst Du in der Tat ein 1100 Hz-Rechteck erzeugen, musst du entweder
die Abtastfrequenz auf 8800 Hz erhöhen oder die Tabelle um etwa 10%
verkürzen.
>Willst Du in der Tat ein 1100 Hz-Rechteck erzeugen, musst du entweder>die Abtastfrequenz auf 8800 Hz erhöhen oder die Tabelle um etwa 10%>verkürzen.
Oder die DDS mit einem geeigneten Verfahren erweitern, damit es auch bei
8kHz noch funktioniert.
Im Bild sind damit die Spiegelfrequenzen stark reduziert und der Sound
hört sich wieder klar an:
http://www.hobby-roboter.de/forum/download/file.php?id=189
Man könnte die Spiegelfrequenzen noch weiter unterdrücken, das hätte mir
bei der einfachen Methode aber zu viel Rechenzeit gekostet.
Vielleicht ist ein konkretes Anwendungsbeispiel ganz nützlich.
Man kann versuchen, einen SID auf einem Atmega8 zu realisieren.
SID = C64 sound chip, eine Art Synthesizer
http://www.waitingforfriday.com/index.php/Commodore_SID_6581_Datasheet
Der Chip enthält 3 Tongeneratoren Dreieck, Sägezahn, Rechteck die am
Ausgang noch über einen Filter geleitet werden können.
Das DDS Verfahren bietet sich für die Realisierung an, führt aber zu den
oben genannten Problemen. Es wäre dort schön, wenn man eine Möglichkeit
findet, trotz der beschränken Rechenleistung des Atmega8 Tongeneratoren
mit gutem Klang zu programmieren.
chris_ schrieb:> Das DDS Verfahren bietet sich für die Realisierung an, führt aber zu den> oben genannten Problemen. Es wäre dort schön, wenn man eine Möglichkeit> findet, trotz der beschränken Rechenleistung des Atmega8 Tongeneratoren> mit gutem Klang zu programmieren.
Da würde ich aber dann nach Möglichkeit HW-Timer verwenden.
Soll es wirklich DDS sein, dann kann man das so machen, dass wie oben
schon angedeutet, die DDS einen Sinus macht - gfs einen sehr einfachen
mit ver-n-fachter Frequenz, das auf einen Ausgangspin legt, an dem ein
Doppel-T-Filter hängt und einen sauberen Sinus baut, welher über einen
Schmitt-Trigger wieder auf einen Eingang geht. Der zeigt dann dann einen
frequenzgenaues Rechteck, das man runterteilen kann.
Oder man geht den Weg und verwendet die reine Stimmung und nutzt
ganzzahlige Teiler.
>Da würde ich aber dann nach Möglichkeit HW-Timer verwenden.
Das würde bei einer SID-Emulation nicht gehen, weil hinter den
Tongeneratoren noch ein Filter implementiert werden muss. Der Filter ist
verstimmbar und es macht deshalb Sinn, diesen Filter auch digital zu
realisieren.
Die Theorie der Signalverarbeitung erlaubt es, das System rein digital
zu realisieren ( bis auf den DAC und den Anti-Aliasing Filter natürlich
).
Es ist die Herausforderung, diese Realisierung zu finden
Der Satz im ersten Post von Schnoer deutet für mich darauf hin, dass das
sein Ziel war:
Schnoer schrieb:
>ich beschäftige mich im Augenblick mit der ressourcenschonenden Synthese>von nicht sinusförmigen Signalen.
Was ich meiner Meinung nach mit den Spektren und den Beispielsignalen
hoffentlich gezeigt habe:
Die Synthese der Signale mittels DDS ist fehlerbehaftet und es gibt
digitale Verfahren, diese Fehler zu minimieren.
Hier habe ich mit Excel kurz eine Simulation angefertig, die den
Sachverhalt verdeutlicht:
Ein 5 Bit Phasenvektor wird mit statischem (oben) sowie steigendem
Vortrieb (unten) hochgezählt und der Sinus aus einer 4-Bit Tabelle
(-15...15) abgelesen und gespiegelt.
Es entsteht der dunkelblaue schlechte Sinus, der auch als Rechteck nicht
mehr zu gebrauchen ist.
Durch zwei IIR-Filter erster Orndung, die zwei RC-Gliedern entsprechen,
entstehen die blaue und die türkise Kurve.
Diese wird rückgespeist und erzeugt ein Rechteck, welches sehr stabil
ist und Nulldurchgänge an Stellen hat, die nicht den diskreten
Taktzeitpunkten entsprechen.
Ein Doppel-T ist nicht gerade der Superfilter, eine BIAS-Korrektur ist
nicht drin und zudem erfolgt die Berechnung nur mit 100facher
Überabtastung, d.h. die "Analogwerte" sind auch noch diskret.
Trotzdem ist das Rechteck sauber und es funktioniert sogar der Sweep,
der als Rohdaten sowohl starken Jitter, als auch eine Schwebung
aufzeigt.
>Trotzdem ist das Rechteck sauber und es funktioniert sogar der Sweep,
Sieht schön aus :-)
Jetzt sollten wir es einmal mit einem Sägezahn probieren ;-)
Hier noch zwei Sägezahnsweeps von 100Hz bis 1000Hz, damit das ganze
nicht zu theoretisch bleibt:
http://hobby-roboter.de/forum/download/file.php?id=190
Die mit einer gewöhnlichen DDS erzeugte Version hört sich wesentlich
schlechter an als die erweiterte Version.
Beide sind mit Fs=8kHz.
chris_ schrieb:> Jetzt sollten wir es einmal mit einem Sägezahn probieren ;-)
Bitte sehr. Diesmal wird das Rechteck vor der Bildung noch etwas
symmetriert (Komparator, der den zweifach gefilterten Sinus mit einer
nochmals stark tiefpassgefilterten Version dieses Sinus vergleicht) und
auf einen Aufwärts-Abwärtsintegrator gegeben. Damit wird die Frequenz
halbiert. Das ist nötig, weil das Dreieick sonst wegläuft. Ein Sägezahn
läuft entsprechend mit Reset und der vollen Frequenz. So funktioniert es
bis zu etwa 0,4 fs, bei FPGAs also durchaus bis z.B. 50MHz Das Dreieck
ist dann so gut, wie die jeweilige Analogelektronik zulässt.
Will man das digital machen, muss man den Ausgang auf einen Eingang
zurückführen und einen Zähler anwerfen, der dann die Stufigkeit, also
die Präzision des Dreiecks bestimmt. Bei 10 bit und geschickter
Amplitudenkorrektur sind mit 50 MHz Eingang etwa 25kHz
Ausgangsgrundfrequenz möglich - als Dreieck im Ultraschallbereich. Für
geringe Frequenzen im Audiobereich, wenn die höchste Oberwelle des
Dreiecks nur noch 20kHz betragen muss, nimmt man logischerweise nur den
ursprünglichen Zähler der DDS.
chris_ schrieb:> Die mit einer gewöhnlichen DDS erzeugte Version hört sich wesentlich> schlechter an als die erweiterte Version.
Kommt eben darauf an, wie die erzeugt wurde. Mit einer einstufigen DDS
ist schnell Ende mit der Auflösung, vor allem wenn man krumme Frequenzen
darstellen will. Bei einem FPGA kann man die Frequenz künstlich
strechen, wie ich hier beschrieben habe:
Beitrag "Re: Frequenzumsetzer 1000 : 999"
Wenn man einen Microcontroller nutzt, ist es besser, man macht es
zweistufig und benutzt einen für die DDS-basierte Frequenzsynthese
(Sinus) und den anderen für die Wellenform. Dann kann man jede beliebige
Wellenformen hinterlegen und ziemlich sauber abspielen.
Beitrag "Re: Universell programmierbarer DDS-Funktionsgenerator"
chris_ schrieb:> Hier habe ich ein 1100Hz Rechtecksignal mit folgender Signalkette> erzeugt:>> DDS-square wave with 64*8000Hz ==> sinc fir low pass with 4000Hz ==>> subsampling to 8000Hz>> Wie man im angehängten WAV-File hören kann, verschwinden die störenden> DDS-Artifakte völlig.
Könntest Du bitte nochmal verdeutlichen, wie genau Deine Signalkette
aussieht. Nach dem Satz in Deinem Beitrag arbeitest Du mit 64x8k =
520kHz.
Ist das die Frequenz, auf der Deine FIR läuft?
Wie passt das mit der Forderung zu sammen, dass ein uc das machen soll?
Hallo Frank,
die von mir geposteten WAV-Files haben eine Abtastfrequenz von 8kHz.
Sollte ein Mikrocontroller eine Signal mit 8kHz erzeugen können?
Hier hatte ich mehrere Ansätze vorgeschlagen:
Beitrag "Re: Nicht-Sinus DDS"
Vielleicht fällt Dir auch noch eine gute Methode ein, das würde mich
sehr freuen, weil ich ein Verfahren auch gerne mal auf einem MC umsetzen
würde. Bis jetzt sind es nur Matlab-Simulationen.
chris_ schrieb:> Bis jetzt sind es nur Matlab-Simulationen.
Das scheint mir ein bischen der Kanckpunkt der Angelegenheit zu sein.
Auf welches Rekonstruktionsfilter hin sind denn die Wellen optimiert?
Denn das ist es, was Du mit der digitalen Vorverarbeitung machst: Du
limitierst die Bandbreiten so, dass störende Frequenzen oberhalb der
späteren Fs wegoptimiert werden und gleichzeitig das Signal innerhalb
des Abspielbereiches beim Audio/der SOundkarte noch "rechteckig ist".
Das ist natürlich logisch, dass ein so vorbereitetes Signal besser
klingt, nur wird die Methode so langsam aber sicher versagen, wenn die
fs steigt und kein headroom mehr besteht. Zudem brauchst Du eine für das
Endsignal optimierte Tabelle.
Wenn Du das ganz zielführend machen willst, brauchst Du die umgekehrte
Laplacetransformierte des Filters und des Einspeisesignals und kannst
dann erste so optimieren, dass das Rechteck den gewünschten
Verhältnissen entspricht. Das wird aber so oder so immer eine
Insellösung bleiben, da sie für andere Wellenformen und Frequenzen
sofort versagt, denn der statistisch günstigste, weil fehlerärmste Fall
für jede Signalform unterhalb Fs ist nun mal die Linearität, also gar
kein Filter :-)
Wenn es aber darum geht, ein echtes Rechteck zu beauen, ist es allemal
einfacher, einen echen Rechteckgenerator zu nehmen, also einen
hochsteilen Verstärker, der von einem Sinus gespeist wird. Damit ist wie
gesagt jede Phase und Frequenz bis 0,4 fs gleichberechtigt und
supersauber möglich.
Zurückkommend auf meine Eingangsfrage und die Anmerkung mit dem Filter
in Matlab wäre es nämlich hier konkret so, dass Du ein 1,5kHz
Rekonstruktionsfilter nehmen würdest, um den steuernden Sinus glatt zu
bekommen und das dann extern erzeugte Rechteck untersuchst. So würde man
das bauen, denn dieses Rechteck hat alle benötigten Oberwellen intus.
Zu Deiner Frage, wie man das verbessern könnte:
Angenommen, Du hast wirklich den Fall, dass Du mit einem DA-Wandler
tatsächliche Rechtecke generieren willst. Dann wirst Du erstmal den
AA-Filter am Ausgang des DACs weglassen, um das Bandbreitenlimit zu
umgehen. Gleichzeitig reduzierst Du damit das Problem der
Spiegelfrequenzen.
Wenn das nicht geht, muss der Linearitätsbereich ausgedehnt werden,
indem ein Präsenzaspekt in den vorverzerrenden Filter imtegriert wird,
also eine Anhebung des Frequenzbandes so, dass es dem auslaufenden
AA-Filter entgegeben arbeitet.
>Angenommen, Du hast wirklich den Fall, dass Du mit einem DA-Wandler>tatsächliche Rechtecke generieren willst.
Genau darum habe ich oben genau hingeschrieben, um welche Art von System
es sich in diesem Thread handeln soll, damit in der Diskussion keine
Mißverständnisse aufkommen.
> Mikroctontroller ==> DAC ==> Anti-Aliasing Filter ==> Ausgangssignal y
Es soll in diesem Thread um Abtastsysteme gehen, wie man sie in
Soundkarten, CD-Playern usw. findet.
Diese haben nun einmal einen Antialiasing Filter am Ausgang und können
deshalb nur bandbegrenzte Signale erzeugen.
Wir sprechen in diesem Thread über die Erzeugung von nicht-sinusförmigen
Signalen mittels DDS auf einem Abtastsystem
Michael W. (armeinsteiger) schrieb:
>http://www.analog.com/static/imported-files/tutorials/450968421DDS_Tutorial_rev12-2-99.pdf
Das Dokument ist sehr gut und verdeutlicht die Fehler der DDS um die es
hier geht unter dem Stichpunkt "truncation"
chris_ schrieb:> Das Dokument ist sehr gut und verdeutlicht die Fehler der DDS um die es> hier geht unter dem Stichpunkt "truncation"
Die Thematik ist ja eigentlich hinlänglich bekannt und gerade das
Abschneiden des Vektors durch die endliche Tabelle ist auch hier schon
desöfteren erörtert worden. Mit einem optimierten Filter zur
Vorverarbeitung der Signalform ist da aber nur wenig zu erzielen. Wenn
muss es eine Nachbearbeitung des Signals bei der Erzeugung sein, wenn
der Jitter entsteht, z.B. durch Dithering und/oder Interpolation.
Was mich nochmal interessieren würde:
Welche Einsatzgebiete / Applikationen siehst Du für solche Methoden?
>Die Thematik ist ja eigentlich hinlänglich bekannt
Mit schien es nicht so, als wenn in diesem Thread jedem die Thematik
hinlänglich bekannt ist.
Aber zurück zum Thema: "Der rechenzeiteffizienten Erzeugung von
Nicht-Sinus Signalen wie z.B. Rechteck, Sägezahn, Dreieck usw. "
>Welche Einsatzgebiete / Applikationen siehst Du für solche Methoden?
Hier ist eine schöne Hardware auf der diese Art von Algorithmen laufen
soll:
http://hackaday.io/list/2864-The-Hackaday-Prize%3A-Semifinalists
chris_ schrieb:> Mit schien es nicht so, als wenn in diesem Thread jedem die Thematik> hinlänglich bekannt ist.
Nunja, es gibt hier im Forum etliches dazu und wir haben derzeit 3
Sinus-Threads parallel am Laufen :-)
Jürgen S. schrieb:> Die Thematik ist ja eigentlich hinlänglich bekannt und gerade das> Abschneiden des Vektors durch die endliche Tabelle ist auch hier schon> desöfteren erörtert worden. Mit einem optimierten Filter zur> Vorverarbeitung der Signalform ist da aber nur wenig zu erzielen. Wenn> muss es eine Nachbearbeitung des Signals bei der Erzeugung sein, wenn> der Jitter entsteht, z.B. durch Dithering und/oder Interpolation.
Nanana..
Also, wie genau man eine Stützstelle ausgeben kann, ist natürlich eine
Frage der Größe der Wertetabelle - sowohl in deren Amplituden-Bitbreite
als auch in der schieren Anzahl der Stützstellen.
Aber eines ist klar: die Stützstelle, die gerade ausgegeben wird, ist
wirklich exakt (im Rahmen der Bitbreite). Da kann man garnichts per
Dithering ändern - und eine Interpolation gibt es per se nicht. Das
würde ja bedeuten, daß man Zwischenschritte zwischen den zeitlich
gegebenen Stützstellen hätte, was auf eine vervielfachte Taktfrequenz
hinausliefe.
W.S.
chris_ schrieb:
>> Der Mikrocontroller soll den DAC so ansteuern, dass das Signal y>> rechteckförmig wird.
W.S.schrieb
> Wie bitte?????> Und deswegen zergrübeln wir uns hier sämtliche Köpfe..> Port hi> warten> Port lo> warten
Bist Du Dir sicher, dass Du die Problematik schon vollständig erfasst
hast?
Marcus schrieb:> Bist Du Dir sicher, dass Du die Problematik schon vollständig erfasst> hast?
Die Frage habe ich mir auch gerade gestellt, als ich den Faden
druchgegangen bin. Bit einem so bschriebenen Rechteck würde man nichts
anderes machen können als eben dieses Rechteck und keine DDS-Funktion.
Schon gar keine beliebige.
W.S. schrieb:> Aber eines ist klar: die Stützstelle, die gerade ausgegeben wird, ist> wirklich exakt (im Rahmen der Bitbreite).
Nein, weil die Phase, die zum Ablesen benutzt wird, vorher abgeschnitten
werden muss, um auf die Adresse zu kommen.
> Da kann man garnichts per Dithering ändern
Doch, indem überabtastet wird und der Rund
> und eine Interpolation gibt es per se nicht. Das> würde ja bedeuten, daß man Zwischenschritte zwischen den zeitlich> gegebenen Stützstellen hätte,
Die hat man, denn das sind die vorher abgeschnittenen Kommastellen.
Hallo Erklärbär,
meiner Meinung nach hast Du die Sache gut zusammengefasst und die Fehler
von W.S. und Jürgen erklärt.
>> und eine Interpolation gibt es per se nicht. Das>> würde ja bedeuten, daß man Zwischenschritte zwischen den zeitlich>> gegebenen Stützstellen hätte,>Die hat man, denn das sind die vorher abgeschnittenen Kommastellen.
Spitzfindig gesagt ist das eine lineare Interpolation. Vielleicht wären
andere Interpolationen noch ein wenig besser. Aber leider halt auch
rechenaufwendiger. Man müsste vielleicht mal verschiedene ausprobieren.
Erklärbär schrieb:> Bit einem so bschriebenen Rechteck würde man nichts> anderes machen können als eben dieses Rechteck und keine DDS-Funktion.> Schon gar keine beliebige.
Und genau dieses hat Chris ja geschrieben:
chris_ schrieb:
>> Der Mikrocontroller soll den DAC so ansteuern, dass das Signal y>> rechteckförmig wird.
Wo ist hier irgend eine DDS-Funktionalität? Der DAC soll ein blankes
Rechteck ausgeben - jedenfalls lese ich das aus seinen Worten.
Über die Granularität des Wartens zwischen den Ausgaben können wir uns
ja noch unterhalten. Im Prinzip ist das aber nix anderes als die
Diskussion über die Samples beim DDS. Dort haben wir eben auch ne
Granularität in Form der Samplefrequenz, wo es feiner nicht geht. Es
nützt auch nix, von irgendwelchem Dithering zu schwafeln, denn selbiges
könnte ja frühestens in der nächsten Periode des zu erzeugenden Signale
greifen und würde nur das Jitter erhöhen und keinerlei Nutzbeitrag
liefern.
Erklärbär schrieb:> Nein, weil die Phase, die zum Ablesen benutzt wird, vorher abgeschnitten> werden muss, um auf die Adresse zu kommen.
Und? Auf dieser Adresse findet sich dann ein Wert, der per se ebenfalls
abgeschnitten ist - sprich von endlicher Bitanzahl - und es macht
überhaupt keinen Unterschied, daß da nun der Phasenwert auch nur mit
endlicher Bitzahl eingeht. Du weißt doch noch, daß beim Übergang von
DeltaX zu dx so ziemlich alles entweder konstant oder linear wird.
So, nun erkläre mal, WAS du hier dithern willst. Sowas wie
'Überabtastung' lasse ich nicht gelten, schließlich haben wir immer eine
Samplefrequenz, mit der die Amplitudenwerte ausgegeben werden und wenn
man da Zwischenwerte haben will, muß man selbige eben erhöhen, anders
geht es nicht. Wir reden von einer Ausgabe (also D-->A) und nicht von
einer Abtastung (A-->D), gelle?
chris_ schrieb:> Spitzfindig gesagt ist das eine lineare Interpolation.
Und das ist ein Unsinn. Bei einer Ausgabe von Werten in einem festen
Zeitraster gibt es keine Interpolation, sondern nur die Ausgabe des zu
dem im Raster leigenden Zeitpunkt gehörigen Wertes.
Wenn ich deinen Gedanken mal ausformuliere, dann heißt der so: Wir haben
zwar den Zeitpunkt t zu dem eben der Wart Y(t) gehört, aber ich meine
eigentlich einen anderen Zeitpunkt t+dt, wozu auch der Wert Y(t+dt)
gehören würde, weil ich einen Restbetrag bei meiner Phasenrechnung habe.
Aber in Wirklichkeit haben wir tatsächlich den Zeitpunkt t und nicht
den Zeitpunkt t+dt, weswegen auch eine Ausgabe von Y(t+dt) falsch wäre.
Klaro jetzt?
W.S.
>Wo ist hier irgend eine DDS-Funktionalität? Der DAC soll ein blankes>Rechteck ausgeben - jedenfalls lese ich das aus seinen Worten.
Da liegt Deine falsche Annahme.
Der DAC soll ein Signal ausgeben, dessen Spektrum nach dem Filter am
Ausgang dem Spektrum eines Rechtecksignals entspricht.
( Die Bandbreite des "Rechtecksignals" ist natürlich durch den Filter
begrenzt )
chris_ schrieb:> Spitzfindig gesagt ist das eine lineare Interpolation.
Genau und zwar eine solche, wie ich sie weiter oben und auch hier
Beitrag "Re: DDS Grundlagenfrage"
... vorgeschlagen habe. Nur funktioniert das - anders, als Du es mit
Deiner Vorverarbeitung tust - zur Laufzeit, also für alle auszugebenden
Frequenzen und nicht nur für die, die Du während deines Vorprozessierens
angenommen hast. Der FIR-Filter, den Du applizierst, ist nämlich nichts
anderes, als eine solche Interpolation.
Richtig sauber geht es aber mit einer richtigen Interpolation und einem
anti aliasing Filter am Ausgang.
Zu W.S.
Dass das Signal nach einer Interpolation nicht mehr rechteckig sein
kann, ist augenscheinlich, aber
a) Ist dies dank des AA-Filters ohnehin nicht möglich und es stellt
mithin einen Kompromiss bezüglich des Jitter-Themas dar
b) bezog sich mein Einwurf des Ditherns ausdrücklich auf den Fall der
Erzeugung eines Rechtecks über den Umweg eines Sinus und eines
Schalters, wie ich es oben in der Grafik simuliert habe (und wie man das
auch machen würde, wenn es um ein tatsächliches Rechteck ginge).
Was die Erzeugung von "Rechtecken" innerhalb der von Audioband gesetzten
Grenzen angeht, so ist der oben beschriebene Fall ja ein Sonderfall von
Vielen:
Abtastung 8k, Zielfrequenz 1,1k Bandende geschätzt 20k.
Sicherlich kann man das in der beschriebenen Weise auf diese Frequenz
hin optimieren, aber schon wenn die Bandgrenze verändert wird, muss sich
auch das Signal ändern.
Letztlich läuft es darauf hinaus, dass in dem Bereich, in dem der
Bandfilter beginnt, abzuschnüren, eine Präsenz gesetzt werden muss.
Signalverarbeitungstechnisch läuft es auf eine Modifikation der
FIR-Koeffienten hinaus, elektronisch gesehen, muss ein Hochpassfilter
davor.
Dies führt praktisch zu einem overshoot der Wellenform gegenüber dem
idealen Rechteck und damit zu scheinbar steileren Signalen - indirekt
aber auch zu einem Verlust der maximal möglichen Amplitude, da man mehr
headroom braucht.
Das macht aber praktisch kein Mensch, weil damit die gesamte
Übertragungskennlinie des System weniger linear ist, was besonders in
den Audiosystemen nicht erwünscht ist.
Sicher kann man damit das System etwas rechtecktauglicher machen,
bezahlt aber an anderer Stelle dafür und daher müsste man zur
Feinoptimierung die Randbedingungen genauer spezifizieren, was dann das
"optimale" Rechteck sein soll.
Da man Rechtecke üblicherweise zum Schalten braucht, kommt es auf die
Steilflankigkeit an und die ist nunmal durch die Bandbreite des
AA-Filters absolut limitiert.
Juergen S. schrieb
>Abtastung 8k, Zielfrequenz 1,1k Bandende geschätzt 20k.>Sicherlich kann man das in der beschriebenen Weise auf diese Frequenz>hin optimieren, aber schon wenn die Bandgrenze verändert wird, muss sich>auch das Signal ändern.
Theoretisch ja, praktisch nein. Ich kann auch gerne ein fünf mal so
langes Signal posten, der Anfang wird genau gleich wie beim alten Signal
sein. Der Interpolationsfilter ist 400Taps lang ( was vermutlich schon
viel zu viel ist ).
chris_ schrieb:> Da liegt Deine falsche Annahme.>> Der DAC soll ein Signal ausgeben, dessen Spektrum nach dem Filter am> Ausgang dem Spektrum eines Rechtecksignals entspricht.
ACH?
Also mir ist klar: wenn nach einem Filter ein Rechteck herauskommen
soll, dann hat es auch vor dem Filter ein Rechteck und das Filter ist
ein simpler Draht.
Wir landen allen Verrenkungen zum Trotz immer wieder bei
Port(hi)..Port(lo). Das ist die grundlegend Art, ein Rechtecksignal zu
erzeugen, besser kriegt man es mit nem DAC + irgend einem
signalveränderndem Filter auch nicht hin.
Ist das so schwer?
W.S.
P.S.:
Jürgen S. schrieb:> Richtig sauber geht es aber mit einer richtigen Interpolation und einem> anti aliasing Filter am Ausgang.
Ein Antialiasing-Filter an einem AUSGANG?
Bin ich im falschen Film? An einem Ausgang gibt es keine Alii. Das ist
ein Vorrecht der Eingänge - und es besteht darin, daß das analoge Signal
zwischen zwei Abtastpunkten einen Wendepunkt hat bzw. haben kann.
Ein Ausgang hingegen kann ne Grundwelle und Oberwellen haben, aber das
sind keine Alii.
W.S. schrieb:> in Antialiasing-Filter an einem AUSGANG?
Ja, ein AA-Filter am Ausgang. Du darfst es natürlich gerne auch
klassisch "Rekonstruktionsfilter" nennen, allerdings ist es ja dessen
ureigenste Aufgabe Alias-Frequenzen (alias = andere), nämlich andere,
als erwünschte Frequenzen zu unterdrücken und das tut es ja auch, indem
es die unerwünschten Oberwellen mindert und damit nicht nur lineare
Verzerrungen unterdrückt, sondern auch tatsächliche Spiegelfrequenzen
vermeidet, die an den Nichtlinearitäten der folgenden Signalkette
entstehen.
> Bin ich im falschen Film?
Nein, in der Realität und zwar in einer hier exakt im Detail
betrachteten. Du darfst Dir gerne mal Simulationen mit idealen und
fastidealen Filtern aufbauen und die entstehenden Frequenzen betrachten.
> An einem Ausgang gibt es keine Alii.
Am Ausgang selbst nicht, aber an dem nichtidealen Filter danach.
> Das ist ein Vorrecht der Eingänge
Nein, die Ausgänge haben 1977 erfolgreich gegen das AA-Monopol von
Eingängen geklagt und das Landgericht Hamburg hat entschieden, dass
Ausgänge den Eingängen in diesem Punkt völlig gleichgestellt sein
müssen, da an beiden Abtasteffekt entstehen.
> und es besteht darin, daß das analoge Signal> zwischen zwei Abtastpunkten einen Wendepunkt hat bzw. haben kann.
Ein Wendepunkt ist hier garnicht von Nöten, es reicht ein ausreichender
Beitrag einer entsprechenden Oberwelle. Man kann das Ganze auch auf
Steilheitsbetrachtungen zwischen zwei Punkten herunterbrechen, aber die
Betrachtung im Frequenzbereich ist einfacher.
> Ein Ausgang hingegen kann ne Grundwelle und Oberwellen haben
ja und genau diese Oberwellen, die nicht erwünscht sind und die im
REKO-Filter, welches niemals perfekt ist, nicht zu Null gemacht werden
und später auf einen nichtlinearen Anteil eines Verstärkers treffen,
sind das Problem.
Die folgende Signalkette darf da nicht ganz ausser Acht gelassen werden.
Beim Audio ist das z.B. der oft äusserst unlineare Ohrhörer bzw die
HIFI-Box und auch in unserem Beispiel des hingetrimmten Rechecks in
diesem Thema hier lohnt ein Blick auf das, was nacher kommt, was also
das Supi-Dupi Rechteck mal verarbeiten soll.
Wer schon mal mit Rechtecksignalen bei Synthesizern und Amps, speziell
mit der 1-Bit-Technik experimentiert hat, weiss wovon ich spreche :-)
Ich darf Dir versichern, dass ich durch das Thema Wellensynthese
ziemlich durch bin, mit und ohne DDS. Rechteckfrequenzen sind eine
Standardwelle in Audiosynthesizern, speziell als Quellsignal. Viele
sounddesignen damit herum und den wenigsten ist wirklich im Detail
bewusst, was die vielen netten Filter in den Synthies daraus dann machen
und wie sie durch den hohen Oberwellengehalt getriggert werden, siehe
Durchstimmung.
chris_ schrieb:> Theoretisch ja, praktisch nein. Ich kann auch gerne ein fünf mal so> langes Signal posten, der Anfang wird genau gleich wie beim alten Signal> sein. Der Interpolationsfilter ist 400Taps lang ( was vermutlich schon> viel zu viel ist ).
Ich verstehe den Sinn hinter diesem Satz nicht und auch nicht, inwiefern
dies ein Einwand gegen meine Darstellung sein soll. (?)
Es ging darum, dass Du ein mit Faktor 64 überabgetastetes und
gefiltertes Signal hinterlegst und abspielst, welches ein bessere
Ergebnis bringt / bringen soll, als ein nichtbearbeitetes. Ich führte
aus, dass diese Filterung für eine andere Frequenz wiederholt werden
muss und es nicht reicht, einfach die einmal hinterlegte Frequenz
anders, z.B. 10% schneller abzuspielen um dann ebenfalls ein gutes
Rechteck zu haben. Dies impliziert, dass diese Vorverarbeitung offline
geschieht, denn wäre sie online, würden wir über eine ganz andere
Abtastfrequenz sprechen, für die auch das Filter wiederum anders
aussehen könnte.
W.S. schrieb:> Bin ich im falschen Film? An einem Ausgang gibt es keine Alii.
Sicher gibt es die: in jedem zeitdiskreten Signal sind Frequenzen
vorhanden, die sich im Vielfachen der Abtastfrequenz wiederfinden. Würde
man nicht bandbegrenzen, so hätte man größere Probleme.
Jürgen S. schrieb
>Ich verstehe den Sinn hinter diesem Satz nicht und auch nicht, inwiefern>dies ein Einwand gegen meine Darstellung sein soll. (?)>Es ging darum, dass Du ein mit Faktor 64 überabgetastetes und>gefiltertes Signal hinterlegst und abspielst, welches
Habe ich ja gar nicht. Das war der erste Ansatz, den ich verworfen habe.
Dafür habe ich 3 verschiedene andere Methoden genannt
Beitrag "Re: Nicht-Sinus DDS"
und mit einer davon sogar die Beispielsignale erstellt. Die Signale kann
man sich anhören, analysieren, oder anderen Leuten schenken. Sie sind
real und in der Welt. Die Methoden zur Erzeugung der Signale können
genau so auf dem Mikrocontroller laufen.
Damit ist eindeutig gezeigt, dass sich mit anderen Methoden als der DDS
bessere Rechtecksignale mit beliebiger Frequenz unterhalb von Fs/2 auf
einem einfachen Abtastsystem mit vorgegebenem, konstantem Fs erzeugen
lassen.
Eigentlich wollte ich hier mehr über die Optimierung der Verfahren
diskutieren, als über die Frage, ob es überhaupt Verfahren gibt.
Ich finde dass das ein interessantes Thema sein kann, aber eines bekomme
ich nicht mit:
chris_ schrieb:> Habe ich ja gar nicht. Das war der erste Ansatz, den ich verworfen habe.> Dafür habe ich 3 verschiedene andere Methoden genannt
Diese 3 Schritte dort, sind das jetzt 3 unterschiedliche Methoden oder 3
Steps einer einzigen Methode?
chris_ schrieb:> dass sich mit anderen Methoden als der DDS> bessere Rechtecksignale ... erzeugen lassen.
Du möchtest diese neue(n) Methode(n) nicht als DDS, also direkte
digitale Synthese bezeichnet sehen?
>Ich finde dass das ein interessantes Thema sein kann, aber eines bekomme>ich nicht mit:
Die DDS ist eine sehr weit verbreitete Methode um z.B. Signale für
Audiosynthesizer zu erzeugen.
Im allerersten Post dieses Threads vermutet der TO dass es bei der DDS
Fehler gibt und zwar besonders gut sichtbar bei "nicht Sinus" Signalen
wie einem Rechtecksignal. Er beschäftigt sich mit Signalsynthese und
sucht jetzt nach besseren Methoden.
>Du möchtest diese neue(n) Methode(n) nicht als DDS, also direkte>digitale Synthese bezeichnet sehen?
Der Name der Methode ist egal. Es ist wie mit einem Algortihmus für die
Primzahlsuche: Entwirf einen, diskutiere mit Leuten und mit der Zeit
finden sich effizientere Algorithmen.
chris_ schrieb:> Die DDS ist eine sehr weit verbreitete Methode um z.B. Signale für> Audiosynthesizer zu erzeugen.
Das ist mir schon bekannt, aber beantwortet meine Frage so richtig
nicht.
Ich frage daher nochmals, weil ich den Ablauf der neuen Methode nicht
erkennen kann. Wo und an welcher Stelle wird etwas anders gemacht, als
bei klassischer DDS?
Die erste der 3 vorgeschlagenen Methoden: es wird ein virtuelles
DDS-Signal mit der N-fachen Abtastfrequenz erzeugt mit einem virtuellen
digitalen TP auf Fs/2 gefiltert, dann werden die Werte mit der
Abtastfrequenz an der jeweils N-ten Stelle abgetastet und auf den DAC
ausgegeben.
Die Methode ergibt ein sehr sauberes Signal, wie man weiter oben bei dem
Sägezahn Sweep oder dem Rechteck hören kann, sie ist aber ziemlich
rechenaufwendig.
Der Unterschied zur gewöhnlichen DDS: Die Erzeugung des Zwischensignals
und die Filterung.
>Soll das einmalig geschehen oder bei jeder Sample-Erzeugung?
Man muss das Ganze immer online rechnen, deshalb ist es relativ
rechenaufwendig. Der Tiefpass muss ja mit der N-fachen Frequenz laufen,
das kostet Zeit.
Im ersten Ansatz weiter oben hatte ich überlegt, eine hochauflösende
Tabelle eines abgetasteten Rechtecksignals abzulegen und via DDS
auszulesen. Das geht aber nicht, wie weiter oben schon angemerkt:
"Das Verfahren funktioniert leider nur für eine feste DDS-Frequenz, da
sich mit einer Änderung der Abtastrate die Grenzfrequenz welche durch
y=FIR_TP(x) gegeben ist, gleich mit verschiebt."
chris_ schrieb:> Im ersten Ansatz weiter oben hatte ich überlegt, eine hochauflösende> Tabelle eines abgetasteten Rechtecksignals abzulegen
In Echtzeit lässt sich die vermutlich nicht anlegen, nehme ich an.
>In Echtzeit lässt sich die vermutlich nicht anlegen, nehme ich an.
Das Problem einer Tabelle ist, dass eine Schwingung mit beliebiger
Frequenz nicht immer hineinpasst ( z.B. könnte das Signal um 1/2 Sample
"überstehen" )
Hier noch mal das Ergebnis eines neuen Syntheseverfahrens, das von der
Rechenzeit vermutlich auch auf einem 16MHz AVR laufen könnte:
http://hobby-roboter.de/forum/download/file.php?id=198
Es sind zwei Sweeps von 400Hz bis 1200Hz und Fs=8kHz.
Die Artifakte der gewöhnlichen DDS sind sehr deutlich hörbar.
Jürgen Schuhmacher schrieb:> W.S. schrieb:>> in Antialiasing-Filter an einem AUSGANG?> Ja, ein AA-Filter am Ausgang. Du darfst es natürlich gerne auch> klassisch "Rekonstruktionsfilter" nennen, allerdings...
..allerdings schreibst du Unsinn, weil du dich nicht präzise ausdrückst.
Ein Ausgang ist ein Ausgang und liefert eine Ausgangsspannung und diese
ist etwas ANALOGES. Dort gibt es ganz grundsätzlich keine Alii. Punkt.
Versuche mal, das zu begreifen. Alii sind ein digitales Artefakt und
kommen NUR in der digitalen Domäne vor, nicht jedoch in der analogen
Welt. Deshalb gibt es in der analogen Welt zwar sehr wohl Oberwellen,
aber keine Alii. Halte bitte diese Begrifflichkeiten sauber voneinander
getrennt, sonst reden wir alle immerzu aneinander vorbei und Babylon ist
angesagt.
Jürgen Schuhmacher schrieb:> Ein Wendepunkt ist hier garnicht von Nöten, es reicht ein ausreichender> Beitrag einer entsprechenden Oberwelle.
Genau diese Ungenauigkeit im Ausdruck meine ich. Analoge Signale, die
sich unharmonisch ändern, enthalten Oberwellen, aber das sind keine
Alii. Auf der Eingangsseite eines digitalen Systems hingegen ist ein
Alias eine schlichte Fehlinterpretation, die dadurch entsteht, daß
tatsächlich ein Eingangsspannungsverlauf einen Wendepunkt zwischen zwei
Samples hat, also analog eine höhere Frequenz hat, aber durch die
Nichtsichtbarkeit dieses Wendepunktes als ein Signal unterhalb der
halben Abtastfrequenz digital wahrgenomen wird. Quasi an der halben
Abtastfrequenz gespiegelt. Das ist aber etwas GANZ anderes als eine
Oberwelle eines nicht sinusförmigen analogen Signals.
Haben wir das nun endlich?
W.S.
chris_ schrieb:> Die erste der 3 vorgeschlagenen Methoden: es wird ein virtuelles> DDS-Signal mit der N-fachen Abtastfrequenz erzeugt mit einem virtuellen> digitalen TP auf Fs/2 gefiltert, dann werden die Werte mit der> Abtastfrequenz an der jeweils N-ten Stelle abgetastet und auf den DAC> ausgegeben.
Nun erkläre doch mal, wo der von dir gedachte Nutzen dieses Vefahrens
liegt.
Ich sehe da nämlich gar keinen Nutzen, sondern nur ein gewaltiges
Aufbauschen des Aufwandes ohne echten Nutzen. Es wäre schlicht und
einfach viel besser, dieses "virtuelle" DDS-Signal direktemang
auszugeben. Durch die N-fache Samplefrequenz und die damit mögliche
größere Wertetafel ist auch die Anzahl der Stützstellen pro Periode der
auszugebenden Kurvenform N-fach größer - was dazu führt, daß man es am
analogen Ausgang des DAC sehr viel leichter hat, mit einem nachfolgenden
analogen Filter das Nutzsignal ausreichend sauber zu bekommen, also auf
weniger als 1/2 Taktfrequenz zu begrenzen ohne dabei die ja als nicht
sinusförmig angenommene Kurvenform gar zu sehr zu verfälschen.
Wollte man deinem Vorschlag folgen, so hätte man am DAC-Ausgang ja
wiederum nur den einfachen Takt im Signal und nicht den N-fachen, womit
das nachfolgende analoge Filtern zu N-facher Verfälschung des
gewünschten Signalverlaufes führen würde.
W.S.
W.S. schrieb:> Alii sind ein digitales Artefakt und> kommen NUR in der digitalen Domäne vor, nicht jedoch in der analogen> Welt. Deshalb gibt es in der analogen Welt zwar sehr wohl Oberwellen,> aber keine Alii.
Da bist Du! aber jetzt gründlich daneben. Wenn es die Aliasfrequenzen,
die Du offenbar "Alii" nennst, nicht gäbe, wären sie ja kein Problem,
oder?
Sie würden durch das Filtern ja vollständig verschwinden und blieben im
digitalen System. Das Gegenteil ist aber der Fall. Der Filter, genauer
seine Kurvenform, gibt darüber Aufschluss, wie stark die ungewollten
Frequenzen im Signal enthalten sind und das es keinen perfekten Filter
gibt, sind sie immer enthalten, wenn auch nur ein bischen.
Ich finde das Problem sehr interessant, weil es Ähnlichkeiten mit dem
Teilchen-Welle Dualismus der Heisenbergschen Unschärferelation hat. (
Das meinte zumindest ein Kollege,dem ich diesen Thread gezeigt habe ).
Nur mit dem Modell der Welle kann man die Interferenzen bei eines
Elektronenstrahls nach einem Spalt erklären.
Hier ist es ähnlich: Betrachtet man das Signal nur im Zeitbereich, gibt
es keinen Weg ein Rechtecksignal von 1.1kHz bei Fs=8kHz zur erzeugen.
Erst die Betrachtung im Frequenzbereich erlaubt die richtige Sicht und
eröffnet den Blick auf Lösungen.
Wenn ich die Antworten auf diesen Thread beobachte, komme ich zu
folgender Einschätzung:
Einige Verstehen das Problem nicht, wollen aber trotzdem etwas
schreiben. Die anderen Verstehen das Problem, glauben aber nicht an eine
Lösung und wollen gerne, dass andere ihre Sichtweise teilen und gar
nicht erst nach einer Lösung suchen. Relativ wenige verstehen das
Problem, haben auch die Lösungen schon bemerkt und machen sich so ihre
Gedanken.
z.B. hat Schnoer als TO das Problem schnell durchschaut, das merkt man
schon aus der präzissen und kurzen Einleitung. Allderdings hat er sich
auch relativ schnell aus dem Thread verabschiedet, nachdem er die
wichtigsten Erkenntnisse gewonnen hatte.
W.S. schrieb:> Ein Ausgang ist ein Ausgang und liefert eine Ausgangsspannung und diese> ist etwas ANALOGES. Dort gibt es ganz grundsätzlich keine Alii. Punkt.
Ob etwas nur Analog zu sehen ist (was ja immer der Fall ist) oder auch
als digital betrachtet werden kann, ist Intepretationssache und hat auch
mit der vorliegenden Frage nach der Intepreation von FRequenzen nichts
zu tun (?)
> Alii sind ein digitales Artefakt und> kommen NUR in der digitalen Domäne vor, nicht jedoch in der analogen> Welt.
Nein, dem ist nicht so. In der rein digitalen Domain wären die
Aliasfrequenzen unter bestimmen Umständen gar kein Problem, die Wirkung
entsteht vornehmlich am Ausgang, in der "analogen Welt" wie Du es nennst
und auch dort ist es eine Frage der genauen Beschaltung.
Um dies nochmals etwas zu verdeutlichen:
Es gibt 2 Filter, einen vor dem digitalen System und seiner diskreten
Abtastungmimik und einer dahinter. Beide sollen verhindern, dass
unerwünschte Frequenzen erfasst, generiert oder ausgegeben werden.
Die Abtastfrequenz des digitalen Systems trennt die Eingangswellen, die
man sich aus einer Grundwelle und Oberwellen aufgebaut denken an, in die
zwei Abteile Nutzsignal und Fehlsignal, die beide ebenfalls aus
Grundwellen und Oberwellen aufgebaut sind. Die Unterscheidung ist an der
Stelle aber wenig nutzbringend - wichtiger ist das Verständnis dafür,
dass Aliasfrequenzen entstehen und warum sie entstehen.
Ob man diese bereits als im Ur-Signal befindlich erachtet und so
deklaerit, ist mehr ein verbaler Aspekt, als ein technischer.
Die alleinige Deklaration "Oberwelle" ist jedenfalls nicht zielführend,
denn es sind nicht generell alle Oberwellen im Signal, die Alias
produzieren, sondern nur die oberhalb von Nyquist. Von daher halte ich
die Deklaration "AA-Frequenzen" sehr wohl für aussagefähig und
zielführend.
Die wäre die eine Seite der Signalkette, kommen wir nun zur Gegenseite:
Davon ausgehend, dass wir am Ausgang eines DACs aus den bekannten
Gründen wieder ein dediziertes Filter haben, ist auch hier der Begriff
AA-Filter zweckmässig, denn auch hier werden nicht irgendwelche
Oberwellen beseitigt, sondern es werden wieder nur die unerwünschten
Oberwellen beseitig
t, damit sie nicht zu "anderen" (alias) Frequenzen führen.
Diesmal sind es aber nicht die ehemaligen unerwünschten Oberwellen im
Primärsignal, denn die sind ja bei unzureichender Elimination in Form
von Spiegelfrequenzen unterhalb Nyqusit neu aufgetaucht und durch ein
Ausgangsfilter nicht mehr zu beseitigen.
An dem Ausgang sind es neue Frequenzen, die unerwünscht sind und die
ihrerseits (wie auch die Nutzfrequenzen) an nichtlinearen Folgegliedern
= Filtern Störfreqenzen = alias-Frequenzen erzeugen können. Es handelt
sich nämlich um diejenigen Oberwellen, die bei der stufenförmigen
Ausgabe des DACs = lokales Rechteckverhalten erzeugt werden und die
beseitigt werden müssen. Deren Beseitigung durch das
Rekonstrukionsfilter ist aber wieder nicht einfach nur ein
Oberwellenfilter, sondern ein selektives Filter für unerwünschte
Oberwellen.
Das Rekonstruktionsfilter hat also zwei funktionelle Eigenschaften: Es
interpoliert nicht vorhandene Zeitpunkte und verhindert das Entstehen
von neuen Aliasfrequenzen. Von daher ist auch am Ausgang eines digitalen
Systems / DACs den Begriff AA-Filter definitiv sinnvoll.
Wer das genauer untersuchen möchte, wo der Unterschied der Wirkung
Interpolation / Aliasunterdrückung liegt, der simuliere einen virtuellen
DA-Wandler in Spice, der einmal mit und einmal ohne
Rekonstruktionsfilter arbeitet und einmal auf einen linearen Verstärker
geht (wo es noch keine Alias-Effekte gibt) und alternativ auf einen
"fastidealen" Verstärker und einen Lautsprecher geht. Deren
Tiefpassverhalten ist nämlich nicht dem vergleichpar, was ein gutes
Rekonstruktionsfilter leistet und damit sind auch die Ergebnisse nicht
dieselben, sondern das teilweise nichtlineare Verhalten dieser
Folgeglieder dämpft nicht einfach die neuen Oberwellen weg, sondern
produziert neue Oberwellen aber auch Wellenanteile im gespiegelten
Bereich, also niederfrequente Anteile, die wiederum im Nutzband liegen.
Von daher wird immer ein möglichst optimales Rekonstruktionsfilter
eingesetzt, das nur linear verzerrt, also die unerwünschten Oberwellen
wegdämpft, welches aber keinesfalls nicht-linear verzerrt, damit die
gfs nichtlinearenFolgeglieder solche Frequenzen erst garnicht
mitbekommen. Da es dies tut, wirkt es faktisch als AA-Filter und da es
auf andere Oberwellen wirkt, als jenes am Eingang, hat es typischerweise
auch eine etwas andere Grenzfrequenz und Steilheit.
W.S. schrieb:> Das ist aber etwas GANZ anderes als eine> Oberwelle eines nicht sinusförmigen analogen Signals.
Eben, Du warst es aber, der statt des Begriffes der Aliasfrequenzen mit
"Oberwellen" begonnen hat. :-)
> Haben wir das nun endlich?
Wenn Du meine Ausführung gelesen und verstanden hast, müsste es nun
klar, sein, ja. :-)
Zusammengefasst sprechen wir also sinnigerweise bei dem Thema nicht von
Oberwellen und Nicht-Oberwellen und auch nicht von einer strikten
Zuordnung derselben zu jeweils einer der beiden Domänen, wie Du es tust,
sondern wir sprechen von a) Oberwellen, die zu Alias führen (können) und
b) solchen, die nicht zu Alias führen, weil sie entweder vorgefilter
wurden, korrekt gesampelt wurden, unverfälscht rekonstruiert wurden oder
am Ausgang weggefiltert wurden, bzw. (bei Audio zumindest) nach all den
Prozeduren immer noch oder neuerdings enthalten sind, aber im Unhörbaren
liegen.
Wenn wir das nun auf die vorliegende Methode anwenden, haben wir
zunächst in dem Signal keine Aliasfrequenzen, weil es mutmaßlich clen
erzeugt wird.
Praktisch entstehen aber an der nachfolgenden Signalkette, spätestens am
Lautsprecher unerwüsnchte Störfrequenzen, die von den Oberwellen
herrühren, die
a) von dem digitalen Filter is Signal eingefügt wurden
b) von dem analogen Rekonstruktionsfilter teilgewdämpft wurden
c) von dem Lautsprecher verzeerrt wurden
Von daher stellt sich bei der Betrachtung, die oben durchgeführt wurde,
nämlich "klingt besser" sofort die Frage, an welchem System klingt das
besser?
chris_ schrieb:> Was ich bei meinem ersten Verfahren gemacht habe, ist den Anti-Aliasing> Filter ins Digitale verschoben.
Was Du damit erreichst ist, dass Du die Filterparameter flexibler im
Griff hast und damit unter Umständen eine für Deinen Fall bessere
Rekonstruktion erzielst.
Die "bessere Rekonstruktion" sieht aber so aus, dass Du die zum Rechteck
gehörigen Oberwellen (in dem richtigen Verhältnis) in die Welle
hineintreibst und dies idealerweise unter Berücksichtigung der Kurve des
folgenden analogen Filters. Dass dies prinzipiell gehen muss ist
augenscheinlich, stellt n.E. aber keine neue Erkenntnis dar:
Wenn Du das nämlich weitertreibst, musst Du auch die Kennlinie des
folgenden Verstärkers und des Lautsprechers mit einbeziehen und Deine
Induktionswelle darauf hin optimieren. Wenn du das zielführend tust,
galangst Du zu dem, was in der Industrie Nicht-Lineare-Vorverzerrung
genannt wird:
Das verändernde Verhalten des Ausgangs wird antizipiert und eine dafür
optimale Vorkompenation appliziert. Das ist hinlänglich bekannt und wird
angewendet, z.B. sogar auch im Bereich Audio bei den Digitalverstärkern
mit Rückkoppplung.
Allerdings sind die Kurven dort eben nicht auf Rechtecke getrimmt und
auch nicht auf eine bestimmte Frequenz, sondern es wird so verzerrt,
dass ein möglichst lineares Verhalten herauskommt, weil man ja ein
ganzen Band von z.B. 20..20000 Hz nutzen will.
W.S. schrieb
>Ich sehe da nämlich gar keinen Nutzen, sondern nur ein>gewaltiges Aufbauschen des Aufwandes ohne echten Nutzen.
Nimm mal das Signal im Anhang und höre es Dir genau an. Es hat die selbe
Abtastfrequenz wie ein CD-Player.
Wie würdest Du das Signal für den CD-Player erzeugen, damit es besser
klingt?
Zusammenfassend bleibt also festzustellen, dass das Verfahren
a) nicht neu ist
b) nicht allgemein nutzbar ist
c) unvollständig bleibt
Unvollständig bleibt es, weil
c1) trotz optimierter Ansteuerung immer noch das Filter am Ausgang
wirkt, das ein echtes REchteck verhindert. Man betreibt also nur
Optimierung in dem Bandbereich, zwischen Grundwelle und
Filtergrenzfrequenz
c2) nicht auf den vollständigen Signalpfad hin optimert werden kann,
weil der nicht bekannt ist oder als allgemein angenommen werden muss.
Theoretisch funktioniert das Verfahren also, ich sehe nur kaum einen
praktischen Nutzen, auss dem einen, von mir mal vorgeschlagenen,
nämlich, den analogen Audiopfad zur digitalen Übertragungen zu nutzen.
Dabei wäre es aber erforderlich, mit dem Audiosystem eine erheblich
höhere Abtastrate intern zu fahren und auch einen DAC zu geben, als das
Reko-Filter hinten annimmt, nämlich die etwa 15kHz.
http://www.96khz.org/oldpages/midiasaudio.htm
Somit bleibt das Verfahren auf die Fälle beschränkt, wo ich z.B. eine
9600kHz Datenleitung über 48kHz Audio transortieren will. Auf der
Leitung wären dann durch eine Überbetonung der Flanke, worauf es
faktisch hinausläuft, steilere Rechtecke darstellbar. Das hat aber
tatsächlich auch nicht wieder einen grossen Wert, weil sowas aus
EMV-Gründen keiner nutzt und auch da ist das Signal nur beim Verlassen
des Generatorsystems wirklich rechteckig, hat also den Zielfrequenzgang.
Wie es am Empfänger aussieht, ist wieder was anderes.
Ich muss W.S. hier also zustimmen: Wenig Praxisbezug.
chris_ schrieb:> imm mal das Signal im Anhang und höre es Dir genau an. Es hat die selbe> Abtastfrequenz wie ein CD-Player.
Ein mp3 ist dafür denkbar ungeeignet, weil genau das, was Du authentisch
zeigen willst, nämlich den genauen Verlauf der rechteckformenden
Oberwellen, im mp3 vermatscht wird.
Zudem wird es sich auf meinem 96kHz Studiosystem gänzlich anders
anhören, als auf der 44kHz Soundkarte. Die haben gänzlich andere
Filterkurven. Selbst ein authentisches WAV wird also unterschiedliche
Ergebnisse produzieren.
> a) nicht neu ist
a) Ich nehme an Du meinst das erste der Verfahren
b) Natürlich ist es neu. Zumindest für die Mitleser hier, sonst hätte
schon jemand das Verfahren hier im Thread erwähnt. Ich kann nicht
erkennen, dass Du schon darauf hingewiesen hättest.
Die "erfinderische Höhe" liegt hier in der Kombination von
hochauflösender DDS in Kombination mit einem digitalen Anti-Aliasing
Filter.
W.S.
>Nun erkläre doch mal, wo der von dir gedachte Nutzen dieses Verfahrens>liegt.
Sehr viele digitale Abtastsysteme sind im Consumer-Bereich zu finden.
PC's, Smartphones, digital Radios, CD-Player usw. arbeiten fast alle im
Audiofrequenzbereich mit einer Abtastrate von Fs=44100Hz.
Zuerst habe ich hier nur die Signale mit Fs=8kHz gezeigt, weil bei
niedriger Abtastfrequenz der Störeffekt der DDS besonders gut zu hören
ist.
Umso erstaunter war ich vom Höreindruck des Sweep Signals zwei Posts
weiter oben mit Fs=44100Hz. Ich hätte nicht gedacht, dass bei so einer
hohen Abtastfrequenz die DDS-Artefakte noch so störend sind ( Übrigens
selbst bei der MP3 anstatt der Wav Codierung gut hörbar ).
Zum Vergleich habe ich noch das mit dem erweiterten DDS-Verfahren
erzeugte Signal als MP3 gepostet. Im Unterschied zum Signal der normalen
DDS sind hier die Artefakte völlig verschwunden. Damit sollte gezeigt
sein, dass
1. die DDS störende Artefakte verursachen kann
2. es bessere Verfahren gibt, diese Artefakte zu vermeiden
Ich habe mich auch immer schon gewundert, warum die C64 SID Freaks den
klanglichen Unterschied einer SID-Emulation und dem realen Baustein
bemängeln. Der orginale SID erzeugt seine Wellenformen Sägezahn,
Dreieck, Rechteck mit Zählern und einer Grundfrequenz von 2MHz.
Die hier geposteten Signale und Analysen deuten auf einen Grund für den
klanglichen Unterschied.
Ich hoffe damit den Nutzen des Verfahrens am praktischen Beispiel
gezeigt zu haben.
chris_ schrieb:> Die "erfinderische Höhe" liegt hier in der Kombination von> hochauflösender DDS in Kombination mit einem digitalen Anti-Aliasing> Filter.
Gruezi Chris,
ich möchte Dir nicht zu nahe treten und Dein Engagement, das Du hier an
den Tag legst, um Dein Verfahren der Welt näher zu bringen,
hinunterreden, aber schon muss ich doch das Ausmaß der erfinderischen
Höhe zur Diskussion stellen:
1) Einmal ist die DDS nicht wirklich hochauflösend. Wir arbeiten in
Applikationen mit Ultrasone-Signalen mit 100fach höheren Frequenzen,
weil diese noch moduliert werden. Wird alles per DDS und Filter gemacht
und ist super genau.
2) Zum Zweiten ist eine Verwendung digitaler AntiAliasFilter-Techniken
vor der Ausgabe ein Normal. Den ausgehenden Wellenpaketen wird ein
Marker aufgedrückt, der beim Wiederempfang einen Entscheid ermöglicht,
aus welcher Distanz das Signal empfangen worden ist.
3) Und auch in der Musik hat man das in großen Ausmaß, dass Klangimpulse
mit FIR-Filtern vorbearbeitet werden von daher ist auch der
Benutzungsvorgang einer Soundkarte nicht so ganz neu. Wenn bei Dir das
DDS-Signal auf 1kHz nicht so sauber klingt, wie Du es erwartest, liegt
das an der Art wie Du Deine DDS gemacht hast. Du liest sie bei dem einen
Bespiel brutal aus und erzeugst beim anderen Beispiel mit Deinem
Vorfilter eine Sammlung von Zwischenpunkten im Signal. Wie ich das oben
schon angefragt hatte,
Beitrag "Re: Nicht-Sinus DDS"
bin ich der Ansicht, dass dieses nichts anderes ist, als eine versteckte
Überabtastung der Tabelle mit einer Art von Mittelwertbildung des
Ergebnisses.
Und das ist aber schon das gängige und bekannte Verfahren, um aus
DDS-Tabellen mehr Genauigkeit herauszufischen. Das ist leider nicht neu
sondern machen alle so, wenn Du einmal hier schauen möchtest
http://fpgasynth.beepworld.de/pldaudio.htm
Jürgen Schuhmacher schrieb:> Ob etwas nur Analog zu sehen ist (was ja immer der Fall ist) oder auch> als digital betrachtet werden kann, ist Intepretationssache und hat auch> mit der vorliegenden Frage nach der Intepreation von FRequenzen nichts> zu tun (?)
Herrje nochmal NEIN, NEIN und nochmals NEIN.
Im Analogen haben wir es mit einem stetigen Verlauf einer Größe zu tun,
den man je nach Bedarf und Aufwand beliebig fein anschauen kann.
Im Digitalen haben wir es mit grundsätzlich anderen Dingen zu tun,
nämlich mit Samples, also mit zeit- und amplitudendiskreten Signalen.
Das ist ein himmelweiter Unterschied! Bitte ENDLICH dieses begreifen
zu wollen!
So. Und nun kommen wir zu den "Aliassen" (auf Wunsch eines einzelnen
Mitschreibers. Alias ist Einzahl und solange es keine anständige
Eindeutschung gibt, sag ich sonst eben Alii).. also:
Ein analoges Signal kann eine Grundwelle und Oberwellen und sonstwelche
Signalanteile enthalten - und die sind alle ganz real enthalten. Es
gibt dort keine Ali.., weil das analoge Signal ja ein kontinuierliches
Signal ist und man deshalb sehr wohl alle Signalanteile im Prinzip
voneinander unterscheiden kann.
Ein Alias ist hingegen etwas anderes, nämlich wie gesagt eine
Fehlinterpretation aufgrund der Verletzung des Abtasttheorems, also eine
Input-Angelegenheit analog-->digital.
Dabei passiert folgendes: ein real existierendes Signal oberhalb der
halben Abtastfrequenz wird fälschlich als Signal unterhalb der halben
Abtastfrequenz angesehen - und entsprechend im Digitalen
weiterverarbeitet. Es ist also ein rein digitales Artefakt, das nur
dadurch zustande kommt, daß es sich hier eben nicht um ein
kontinuierliches Signal handelt, sondern um Samples.
chris_ schrieb:> Nimm mal das Signal im Anhang und höre es Dir genau an. Es hat die selbe> Abtastfrequenz wie ein CD-Player.
_WAAAAS?_ Du willst mir eine MP3 Datei als Referenz zeigen? Ich bin
wirklich im falschen Film. Also, mein Lieber, ich kenne zur Genüge die
elenden Artefakte, die aus der MP3-Kompression herrühren. Selbst im sog.
Klassikradio krieg ich Zustände, wenn die mal wieder das Adagio for
Strings spielen, da klirren genau diese Artefakte bei den Stellen wo die
Streicher ganz hoch spielen geradezu unerträglich. Allerdings für
Hörbücher ist MP3 sehr gut geeignet.
So, und nun ganz konkret: wenn du nur ganz wenig Stützstellen pro
Periode hast - z.B. eben 1.1 kHz Rechteck bei 8 kHz Samplefrequenz, dann
klingt ein Rechteck immer häßlich, weil du mit garnix in der Welt es
fertig bringst, einen analogen "mittleren" Wert für eine Flanke des
Rechtecks, die ein Stückchen vor oder hinter der Sampleflanke liegt, zu
errechnen. Dir bleibt in diesem Falle nur die Alternative, entweder
tatsächlich das MSB des DDS direkt auszugeben (Port hi, Port lo) und mit
dem Jitter zu leben - oder ein Gemisch aus Sinus und 3*Sinus in deine
Wertetabelle zu schreiben und anschließend analog bei 4 kHz
tiefpaßzufiltern. Das ist dann zwar kein Rechteck mehr, nicht mal
ansatzweise, aber die einzige Chance, die du hast.
W.S.
>_WAAAAS?_ Du willst mir eine MP3 Datei als Referenz zeigen?>Ich bin wirklich im falschen Film.
Nur mal Interesse halber: Hast Du Dir die beiden Signale im Vergleich
angehört?
Rolf S. (audiorolf)
>http://fpgasynth.beepworld.de/pldaudio.htm
Hallo Rolf,
aus Deinem Link entnehme ich, dass Du jahrzentelange Erfahrung in der
Entwicklung der digitalen Signalverabeitung hast, deshalb brauche ich
Dir sicherlich wenig darüber zu erzählen.
>ich möchte Dir nicht zu nahe treten und Dein Engagement,>das Du hier an den Tag legst, um Dein Verfahren der Welt>näher zu bringen,hinunterreden, aber schon muss ich doch>das Ausmaß der erfinderischen Höhe zur Diskussion stellen
Das Verfahren gehört eher zu den Grundlagen, deshalb ist es für
"eingefleischte" Signalverarbeiter sicherlich keine neue Sache.
Ich nehme aber an, dass Du diesen Thread nicht von oben nach unten
durchgelesen hast. Das solltest Du tun, man lernt sehr viel über die
Anschauungsweise verschiedener Leute auf das Problem und es wird Dir
beim Durchlesen sicherlich nicht langweilig.
Das Ziel meiner Anstrengungen ist eigentlich nur zu zeigen, dass es
überhaupt möglich ist, das Signal einer DDS zu verbessern. Dazu habe ich
Audiosignale erzeugt, die man sich anhören kann in der Annahme, dass
etwas was man sich anhören kann, einen Zweifel daran doch aus der Welt
schaffen könnte.
>3) Und auch in der Musik hat man das in großen Ausmaß,> dass Klangimpulse mit FIR-Filtern vorbearbeitet werden> von daher ist auch der Benutzungsvorgang einer Soundkarte> nicht so ganz neu. Wenn bei Dir das
Hast Du hier eventuell ein paar Literatur-Links? Ich würde gerne meinen
Blick auf ein paar konkrete Implementierungen werfen.
Das Beispiel mit der Soundkarte und den Audiodateien habe ich gemacht,
weil jeder einen PC ein Soundkarte hat und sich die Beispiele hier mit
einem Klick anhören kann. Dadurch ist die Signalverarbeitung nicht mehr
so trocken und theoretisch, sondern kann direkt von jedem Mitleser hier
"erlebt" werden.
>DDS-Signal auf 1kHz nicht so sauber klingt, wie Du es erwartest,>liegt das an der Art wie Du Deine DDS gemacht hast.>Du liest sie bei dem einen Bespiel brutal aus ...
Ich sehe aus Dir sprich die Erfahrungen mit den FPGAs. Hier im
Mikrocontrollernetz wird die DDS üblicherweise in der Form, die Du als
brutal bezeichnest, realisiert. Die hier verwendeten Mikrocontroller
sind eher leistungsschwach, deshalb besteht die DDS meistens nur aus
einem Zeiger, der durch die Tabelle läuft. Ein wirklich elegantes und
auf die Spitze getriebenes Projekt ist dieses hier:
Beitrag "17 Kanal Avr Synthesizer in Asm">2) Zum Zweiten ist eine Verwendung digitaler>AntiAliasFilter-Techniken vor der Ausgabe ein Normal.>Den ausgehenden Wellenpaketen wird ein Marker aufgedrückt,>der beim Wiederempfang einen Entscheid ermöglicht,>aus welcher Distanz das Signal empfangen worden ist.
Bei FPGAS kann ich mir das gut vorstellen, bei den genannten
Mikrocontrollern scheint es mir schwierig, aber vielleicht könntest Du
einen Vorschlag machen, wie das auf einem MC realisiert werden könnte.
W.S. schrieb
> _WAAAAS?_ Du willst mir eine MP3 Datei als Referenz zeigen? Ich bin> wirklich im falschen Film. Also, mein Lieber, ich kenne zur Genüge die> elenden Artefakte, die aus der MP3-Kompression herrühren. Selbst im sog.> Klassikradio krieg ich Zustände, wenn die mal wieder das Adagio for> Strings spielen, da klirren genau diese Artefakte bei den Stellen wo die> Streicher ganz hoch spielen geradezu unerträglich.
keinesfalls wollte ich Dein Gehör durch das posten von MP3-Files
beleidigen, aber es schien mir von Nutzen, dem MC-Netz nicht zu viel
Speicherplatz abzuverlangen. Auch können die MP3-Files ohne große Mühen
im Browser durch einen Klick abgespielt werden.
Da mein unsensibles Gehör die Qualitätsunterschiede der beiden MP3-Files
recht deutlich zu verorten wusste, erschien es mir ausreichend,
MP3-Files zu posten.
Aber es soll auf keinen Fall das ästhetische Empfinden jedweder
Randgruppe verletzt werden und ich würde in diesem Thread (falls
gewünscht) auch Bedürfnisse der Anhänger von veganen Glaubensrichtung
berücksichtigen.
Natürlich will ich den Hörern mit sehr feinem Gehör und puristischem
Anspruch, den Wohlgenuss des reinen Klanges nicht verwehren und stelle
im Anhang die WAV-Files zur Verfügung. So können auch ihre Ohren vom
erstklassigen Sound reiner Rohdaten umschmeichelt werden.
Für die etwas robusteren Mitleser, die Ihrem Gehör aus
Bequemlichkeitsgründen mit einem Klick die minderwertige Qualität der
MP3-Kompression zumuten können, hier noch einmal die Links auf die
beiden Tonstücke:
http://www.mikrocontroller.net/attachment/231480/squareSweep_440Hz_1200Hz_fs44100_dds.mp3http://www.mikrocontroller.net/attachment/231501/squareSweep_440Hz_1200Hz_fs44100_dds_LPCorrection.mp3
W.S. schrieb:> So. Und nun kommen wir zu den "Aliassen" (auf Wunsch eines einzelnen> Mitschreibers.
Damit ist wohl meine Wenigkeit gemeint, nehme ich mal an.
> Ein analoges Signal kann eine Grundwelle und Oberwellen und sonstwelche> Signalanteile enthalten
Welche "sonstigen" Signalanteile siehst Du? Nach allgemeiner Definition
hat es eigentlich nur 1 Grundwelle und viele Oberwellen.
> und die sind alle ganz real enthalten.
Na, im Digitalen sind schon auch alle Signale "real" enthalten, oder :-)
> Es gibt dort keine Ali..
Vorne nicht, aber Du darfst nicht vergessen, dass diese "falsch"
aufgefassten Frequenzen im Signal verbleiben, sobald Du es ausgibts,
deshalb sind sie natürlich auch im Analogsignal vorrätig. Da gibt es
keinen Unterschied. Man weiss es halt nur nicht unbedingt, dass es
falsche Anteile sind, die vorher nicht drin waren.
> weil das analoge Signal ja ein kontinuierliches> Signal ist und man deshalb sehr wohl alle Signalanteile im Prinzip> voneinander unterscheiden kann.
Sobald Du es ausgibts, wird es auch dort ein kontinuierliches Signal.
Nur bekommt es einen Zacken. Das ist ja hier das Problem, umd das es
geht. Ihr beiden diskutiert schon über das Filter, das am Ausgang ist
und welche Funktion es hat, oder?
> Ein Alias ist hingegen etwas anderes, nämlich wie gesagt eine> Fehlinterpretation aufgrund der Verletzung des Abtasttheorems, also eine> Input-Angelegenheit analog-->digital.
Das scheint mir der Knackpunkt des gesamten Disputs. Du lässt den
Begriff Alias oder Allii nur für das zu, was am Eingang bei der
Auffassung der Signale geschieht (neue Frequenzen wegen falscher
Erfassung) und Jürgen bespricht das, was am Ausgang passiert, wenn es
dort neue Fehlsignale gibt, weil das Filter nicht taugt.
Was ich dazu sagen kann ist, daß ich mir um die Details des
Ausgangsfilters noch keine so genauen Gedanken gemacht habe. Solange das
linear ist, kann dort eigentlich nicht viel passieren. Es muss nur so
gebaut sein, dass es die hohen Frequenzen über dem, was das digitale
Signal darstellen kann, platt macht. Der Übergangsbereich ist natürlich
eine gewisse Challenge, wenn es keine Überabtastung hat.
Jetzt kommt dann eben die Frage auf, wie das Filter hier aussehen
sollte, wenn man Rechtecktsignale ausgeben möchte?
chris_ schrieb:> Bei FPGAS kann ich mir das gut vorstellen, bei den genannten> Mikrocontrollern scheint es mir schwierig, aber vielleicht könntest Du> einen Vorschlag machen, wie das auf einem MC realisiert werden könnte.
Grundsätzlich sehe ich da keinen grossen Unterschied. Sobald Du mehr tun
willst, als Tabellen lesen, braucht es CPU-Power. Wenn es einen
Controller hat, der ausreichend leiset, kann man sicher solche Methoden
anwenden um das Signal steiler zu machen. Jedesmal ein Filter
vorzuschieben scheint mir doch sehr aufwändig, da ist eine größere
Tabelle vielleicht empfehlenswerter.
Rolf S. (audiorolf)
>Grundsätzlich sehe ich da keinen grossen Unterschied. Sobald Du mehr tun>willst, als Tabellen lesen, braucht es CPU-Power. Wenn es einen>Controller hat, der ausreichend leiset,
Oder eben ( und das ist der Ausgangspunkt des TOs und die höhere Kunst )
rechenzeitoptimierte Algorithmen zu finden, die auch auf
leistungsschwachen MCs laufen.
Im ersten Schritt ging es darum überhaupt Möglichkeiten aufzuzeigen,
dass es geht. Es mag hier den ein oder anderen geben, der es trotz
größter Bemühungen nicht verstehen kann. Aber fortgeschrittenen
Signalverarbeiungsfachleuten, die nicht mehr am grundlegenden
Verständnis festhängen, wird bestimmt etwas einfallen.
Nun dann gebe ich mal meinen Senf dazu:
Wenn es darum ginge, mit bandbegrenzten Signalen das Beste rauszuholen,
was machbar ist, dann bestehen immer Möglichkeiten der Optimierung. Und
wenn man das zu sendene Signal kennt, dann geht das einmal mehr, weil
der zu optimierende Bandbereich bekannt ist. Da sind immer Reserven
drin.
Wie gesagt, "wenn es darum ginge". Das ist aber eine so derart kleine
Niesche, dass auch mir keine Anwendungsfälle einfallen möchten, die
nicht durch weniger aufwenige Vorgangsweisen locker zu toppen sind. Für
mich hat das auch mit DDS nicht so ganz viel zu tun, da sich hinter
diesem Begriff die Gewinnung eines Sinussignals verbirgt, weil sich eben
damit am Meisten anfangen lässt.
Was hier betrieben wird, wäre als Impulsformung besser beschrieben und
welche Qualität sich damit darstellen lässt, sollte man durch einen
Oberwellenvergleich untersuchen: Wenn schon ein bekanntes Signal, ein
Rechteck Verwendung findet, dann müsste sich das Fouriertechnisch
analysieren lassen, was rauskommt. Das möchte ich sehen und nicht ein
mp3, das wieder deformiert.
chris_ schrieb:> Oder eben ( und das ist der Ausgangspunkt des TOs und die höhere Kunst )> rechenzeitoptimierte Algorithmen zu finden, die auch auf> leistungsschwachen MCs laufen.
Ich habe den Beitragsstrang durchforstet, finde aber nirgends eine
solche rechenzeitoptimierte Methode. Dass ein hochfrequent abgetastetes
FIR-Filter die Lösung sein sollte, will ich so recht nicht glauben. Das
würde ja bedeuten, für jeden auszugebenden Punkt ein Mehrfaches an
Berechnungen (Summationen und Division) durchzuführen, nur um
Zwischenwerte zu erhalten. Außerdem ist mir noch nicht klar, was daran
anderes sein soll, als ein direkt ausgerechneter Zwischenwert.
Wenn der ideale Zeitpunkt für die Flanke des Rechtecks nicht genau
getroffen werden kann, liesse sich das doch so ausrechnen, dass einfach
das duty cycle Verhältnis herangezogen wird. Wenn die ideale Flanke z.B.
zwischen Punkt 4 und 5 läge und an der Stelle 4.2 kommen müsste, gibt
man einfach das 0,2fache der Amplitude aus.
Jenaer schrieb:> Wenn der ideale Zeitpunkt für die Flanke des Rechtecks nicht genau> getroffen werden kann, liesse sich das doch so ausrechnen, dass einfach> das duty cycle Verhältnis herangezogen wird. Wenn die ideale Flanke z.B.> zwischen Punkt 4 und 5 läge und an der Stelle 4.2 kommen müsste, gibt> man einfach das 0,2fache der Amplitude aus.http://en.wikipedia.org/wiki/Gibbs_phenomenon
Rolf S. schrieb:> Das scheint mir der Knackpunkt des gesamten Disputs. Du lässt den> Begriff Alias oder Allii nur für das zu, was am Eingang bei der> Auffassung der Signale geschieht (neue Frequenzen wegen falscher> Erfassung) und Jürgen bespricht das, was am Ausgang passiert, wenn es> dort neue Fehlsignale gibt, weil das Filter nicht taugt.
Ja, so langsam nähern wir uns dem Problem. Es ist nämlich genau das,
was ich viel weiter oben schon einmal angemahnt habe: Klarheit im
Ausdruck und nicht die Begriffe verwechseln, sonst herrscht hier nur
noch Babylon und alle reden aneinander vorbei.
Und zum Ausgangsspektrum bei DDS und allen anderen Ausgängen mit
jitterndem Verhalten: Dort haben wir nicht nur ne Grundwelle mit ihren
Oberwellen, sondern auch Mischprodukte, also Faus*Ftakt, 7*Faus*3*FTakt,
um nur mal zwei Beispiele aus Dutzenden herauszugreifen. Aber das sind
keine Fehlinterpretationen, sondern ganz reale Signalanteile. Ein Alias
hingegen ist eine scheinbare Grundwelle, die es realiter nicht gibt.
Sowas wird schon seit Jahrzehnten technisch ausgenutzt beim sog.
Sampling-Oszilloskop. Durch das Samplen kann man Kurven im GHz-Bereich
darstellen, die man mit nem braven analogen Oszi nie und nimmer
darstellen könnte.
W.S.
Jenaer schrieb:
>Wenn der ideale Zeitpunkt für die Flanke des Rechtecks nicht genau>getroffen werden kann, liesse sich das doch so ausrechnen, dass einfach>das duty cycle Verhältnis herangezogen wird. Wenn die ideale Flanke z.B.>zwischen Punkt 4 und 5 läge und an der Stelle 4.2 kommen müsste, gibt>man einfach das 0,2fache der Amplitude aus.
Hallo Jenaer,
daran hatte ich auch schon gedacht und hier erwähnt:
Beitrag "Re: Nicht-Sinus DDS"
Von der Rechenzeit wäre es super, aber leider ist der Effekt nicht ganz
so gut, wie man erwarten würde.
Der Höreindruck des TP-interpolierten ist wirklich viel besser:
http://www.hobby-roboter.de/forum/download/file.php?id=189
Raymund H. schrieb:> http://en.wikipedia.org/wiki/Gibbs_phenomenon
Ich erkenne noch nicht, wie dieser Beitrag mit meinem in Zusammenhang
steht - könntest Du das bitte erläutern?
chris_ schrieb:> Von der Rechenzeit wäre es super, aber leider ist der Effekt nicht ganz> so gut, wie man erwarten würde.
Es ist eben eine einfache Interpolation mit einem Knick zwischendurch.
>Es ist eben eine einfache Interpolation mit einem Knick zwischendurch.
Naja, wenn Du Dir die Files im Vergleich anhörst, merkst Du den
Unterschied. Bei der linearen Interpolation muss man wirklich genau hin
hören um überhaupt einen Unterschied zur normalen DDS festzustellen. Im
Spektrum "sieht" man es besser, als dass man es hören kann. Das hätte
ich wie gesagt, so nicht erwartet.
W.S. schrieb:> Dort haben wir nicht nur ne Grundwelle mit ihren> Oberwellen, sondern auch Mischprodukte, also Faus*Ftakt, 7*Faus*3*FTakt,> um nur mal zwei Beispiele aus Dutzenden herauszugreifen. Aber das sind> keine Fehlinterpretationen, sondern ganz reale Signalanteile.
Na also, Du scheinst also verstanden zu haben, dass im Ausgangssignal
Aliasfrequenzen gibt, die es zu unterdrücken gilt, bzw genauer: dass es
sie dort gäbe, wenn man das Filter nicht einsetzt. Damit ist es mir
vollkommen unbegreiflich, warum Du hier eine Gegenargumentation aufbauen
möchtest.
Sieh Dir doch mal diese Grafik an:
http://www.analog.com/static/imported-files/application_notes/351016224AN_837.pdf
Das Rekonstruktionsfilter am Ausgang eines DACs, wirkt funktioniell
immer auch Alias-Effekten entgegen und dies insbesondere dann, wenn
diese wie hier durch die DDS und ihre Probleme erst generiert
werden/würden. Das ist also ganz unabhängig von irgendwelchen
Alias-Effekten an einem Eingang die durch Sampling erzeugt werden.
W.S. schrieb:> Herrje nochmal NEIN, NEIN und nochmals NEIN.
Doch, doch und nochmal doch :-)
Auch wenn man die Thematik aus Deiner Sicht sieht, also strikt zwischen
Digital und Analog trennt und dabei dem Digitalen nur die diskreten
Zustände zuordnet und der Analogwelt wiederum nur die kontinuierlichen,
wie Du es oben tust, wird doch eines evident:
Das Signal, das eben noch diskret war, wird durch die Ausgabe am Ausgang
urplötzlich kontinuierlich und zwar in der Weise, dass das Analogsignal
zu den Zeitpunkten, die vorher diskret bestimmt waren, nämlich den
Takten, 100% korrekt abgebildet wird, während es in den Zwischenzeiten
durch das Halten des Wertes mit völlig falschen "Spannungen" aufgefüllt
wird. Dieses Signal, das ich nach wie vor "digital" nenne, da es zwar
physikalisch gesehen "kontinuierlich" ist, aber aus funktioneller Sicht
nicht analog dem Eingang oder dem gewollten Signal ist (von "analog" =
sich entsprechend), enthält also völlig falsche Frequenzen, die es zu
beseitigen gilt.
Ob man jetzt die durch die Recheckbildung des DACs verursachten falschen
Frequenzen als wörtlich "andere" = alias sieht oder nur/auch die durch
die DDS (Phasenjitter) verursachten Frequenzen so nennt, ist
Geschmackssache. Es sind jeweils Vielfache und Mischungen der
Grundfrequenzen, also einmal der Abtastfrequenz am DAC und einmal der
erzeugenden DDS Frequenz.
Jetzt aber mal wieder zurück zur inhaltlichen Fragestellung:
Es ging ja um die Optimierung der Stützpunkte im Hinblick auf die
optimale Zielwellenform, hier beispielhaft das Rechteck. Dazu nochmal
folgender Einwurf:
chris_ schrieb:> ei der linearen Interpolation muss man wirklich genau hin> hören um überhaupt einen Unterschied zur normalen DDS festzustellen. Im> Spektrum "sieht" man es besser,
Beim Spektrum, das du optisch betrachtest, ist der analoge Filter am
Ausgang des DAC nicht enthalten, von daher ist das nicht vergleichbar
dem, was Du hörst. Und was Du da im Detail hörst ist wiederum vom
Einzelfall DEINES Filters abhängig. Gerade weil es hier nicht darum
geht, wie üblich, ein eindeutig bandbegrenztes Signal = Sinus im
Hörbaren, zu übermitteln, bei dem der Filterverlauf unberücksichtigt
bleibt, weil er schon auf den Frequenzhang des systems angepasst ist,
sondern weil hier der Filter optmiert angesteuert werden muss, ist er
wichtig.
Rolf S. schrieb:> Was ich dazu sagen kann ist, daß ich mir um die Details des> Ausgangsfilters noch keine so genauen Gedanken gemacht habe.
Darum musst Du Dir normal auch keine grossen Gedanken machen, für
Audioapplikationen kommt es allein auf ein sinnvolles Filterdesign im
Hinblick auf PassBand/StoppBand-Verlauf an, sodass die Eckfrequenzen
richtig liegen und zu der Samplingfrequenz passen.
Wie du schon richtig vermutest, ist das hier in der Applikation aber
anders. Der genaue Filterverlauf muss bekannt sein, wenn ich darüber ein
optimiertes Rechteck bringen will und damit wird auch klar, worin der
Unterschied der Interpolation mit den Geraden und dem Filter liegt:
Bei einer nennen wir es echten Audioapplikation werden die
höherfrequenten Anteile bewusst gedämpft und im Signal ignoriert bzw sie
werden, soweit noch vorhanden nicht gehört, von daher ist die
Knickbildung im Signal kein Problem. Die DDS mit dem Ziel einer
Sinuserzeugung gewinnt durch eine Interpolation generell und mit einer,
die mit einem Filter hergestellt wurde, erst recht, denn der Filter
dämpft die Knicke in der Kurver besser.
Hingegen ist es hier so, dass eine DDS mit dem Ziel einer
Rechteckerzeugung durch eine Interpolation nicht generell gewinnt, weil
die Steilheit verloren geht und die neu entstehenden Frequenzen (oder
besser die jetzt fehlenden) nicht zu dem anderen Ziel passen, sondern
irgendwelche Oberwellen generieren / wegnehmen. Damit ist auch der
Unterschiede zwischen einem interpolierenden Filter und der
Geradeninterpolation grosser: Die Geradeninterpolation hat mehr
Oberwellen bzw das falsche Oberwellenverhältnis.
Es muss also ein Kompromiss zwischen Filterung des Jitters und
Aufrechterhalt der Steilheit des Rechtecks gefunden werden. Wie sich das
im Detail dann anhört, ist also immer auch Zufall. Hindrehen kann man
das, wie ich schon sagte nur im Groben und auch nur in dem zur Verfügung
stehenden Bandbereich zwischen der Grundfrequenz des Rechtecks und dem
Bandende das der Filter am DAC definiert. Bei einem 50Hz hätte man genug
Resserve, um ein Rechteck zu produzieren, wobei das gelinkte
GibbsPhänoman ja bedeutet, dass dies nur theoretisch klappt und eine
Annäherung an das Rechteck bei praktisch realisierbaren Oberwellen nicht
gelingen kann.
Man kann nur versuchen, den effektiven Bandbereich zu erweitern, indem
man ein vorverzerrendes Filter benutzt. Ich habe hier nochmal eine Datei
angehängt, die zeigt, was ich oben beschreibe:
Das Ausgangsfilter wird mit einer Präsenzanhebung so verzerrt
angesteuert, dass das Ergebnis steiler wird. Dieser Filter muss dem
Interpolationsfilter in der DDS überlagert werden, um das Signal weiter
zu optimieren. Je weiter man das treibt, desto geringer wird die
Signalamplitude und auch hier ergibt sich irgendwann der Punkt, dass der
"Hochpass" denn man da für benötigt, die reale Filtercharakteristik
nicht komplett ausgleichen kann.
> Jetzt kommt dann eben die Frage auf, wie das Filter hier aussehen> sollte, wenn man Rechtecktsignale ausgeben möchte?
Die besten Rechtecke bekommt man mit der DDS-Anordnung dann, wenn man
das Filter am DAC komplett weglässt und den DAC mit der Zielfrequenz
ansteuert und dabei voll durchsteuert :-)
>>chris_ schrieb:>> Bis jetzt sind es nur Matlab-Simulationen.> Jürgen Schuhmacher>Das scheint mir ein bischen der Kanckpunkt der Angelegenheit zu sein.>Auf welches Rekonstruktionsfilter hin sind denn die Wellen optimiert?
Auf die Filterkette "deine Soundkarte=>deine Lautsprecher=> deine
Ohren".
Als Meßgerät zur Beurteilung der Signale kannst Du Deine Ohren
verwenden.
Angedacht ist dabei ein differentielles Verfahren:
1. Signal 1 anhören
2. Signal 2 anhören
3. Schlussfolgerungen ziehen.
Jaja, aber dann läufst Du doch genau in den Iterationsprozess hinein,
den ich oben indirekt andeutete, nämlich in die schrittweise Optimierung
der Vorverzerrung hin zu einer bestimmten Anordnung eines einzelnden
Benutzers.
Das kann aber doch kein Ziel sein, jeweils für die eigene (falsche)
Signalkette exemplarisch zu optimieren. Besonders die Ohren sind ja sehr
falsch wie man weiss.
Die Vorgehensweise müsste sein, die Vorverzerrung aus einer Funktion
abzuleiten, in die das Zielsignal und der anzunehmende Filterverlauf der
DAC-Anordnung eingeworfen werden und da landen wir wieder bei inverser
Fourier und Faltung wie schon vorgeschlagen. Dann hätte man ein Optimum
für den Durchschnitt der abbildenen Systeme, die auf minderwertigen
Audioanlagen zwar schlechter klingen, aber grundsätzlich "richtig" sind.
Jürgen Schuhmacher schrieb:> Das Ausgangsfilter wird mit einer Präsenzanhebung so verzerrt> angesteuert, dass das Ergebnis steiler wird. Dieser Filter muss dem> Interpolationsfilter in der DDS überlagert werden, um das Signal weiter> zu optimieren.
sehr schöne idee, wir praktiker nehmen dafür einfach einen Kondensator,
der den höherfrequenten Anteil im Signal weiterleitet und die Kurze
wieder steiler macht:-)
Jürgen Schuhmacher schrieb:> W.S. schrieb:>> Herrje nochmal NEIN, NEIN und nochmals NEIN.> Doch, doch und nochmal doch :-)
Nochmals N_E_I_N !
So, jetzt habe ich mehrfach versucht, euch das Brett vom Kopfe
abzureißen und es ist mit nicht gelungen. Ich geb's auf, redet von mir
aus durcheinander wie ihr wollt und versteht euch so wie die Leute in
Babylon.
Grrrmpf.. alias W.S.
Marc schrieb:> Neulich im Autoradio:> "Achtung, es kommt Ihnen ein Falschfahrer entgegen">> W.S. darauf: "Wieso einer, es sing ganz viele"
:D
Naja, W.S. ist nicht wirklich ein Falschfahrer, er versteht nur meinen
Fahrstil nicht, bzw er guckt in den Rückspiegel und sieht die falschen
Frequenzen von der anderen Seite. Der ganze Aufhänger war ja, ob man die
per DDS erzeugten ungewollten Frequenzen, die mit einem
DAC-Ausgangsfilter gedämpft werden, nun Aliasfrequenzen nennen darf, und
dies auch dann darf, wenn nur ihre Wirkung im späteren Ausgangssignal
betrachtet und damit dieser Filter am Ausgang, ein "AA"-Filter genannt
werden darf. Ich bleibe beim Ja, respektiere aber, wenn es jemand anders
sieht.
chris_ schrieb:> die von mir geposteten WAV-Files haben eine Abtastfrequenz von 8kHz.> Sollte ein Mikrocontroller eine Signal mit 8kHz erzeugen können?
sicher kann der uc die 8kHz erzeugen, aber die Anforderung besteht in
Deiner Anwengung doch in der Berechnung des Filters und damit tritt eine
effektiv viel höhere Abtastfrequenz auf. Die Welle, die Du inten
behandelst hat also eine virtuell 64fache Abtastrate.
> Vielleicht fällt Dir auch noch eine gute Methode ein, das würde mich> sehr freuen, weil ich ein Verfahren auch gerne mal auf einem MC umsetzen> würde.
Ich würde das strikt empfehlen, das umzusetzen und real zu testen, dabei
Laufzeiten und Rechenbedarf ermitteln.
> Bis jetzt sind es nur Matlab-Simulationen
Könntest / Möchtest du diese publizieren?