Hallo zusammen,
ich bin ebenfalls im Datenblatt des AD7401 über die Aussage gestolpert,
dass ein sinc3 gut zu einem Sigma-Delta-Modulator zweiter Ordnung passen
würde. Warum nur...
Ein paar Gedanken dazu, bitte um Kommentar. @Moderator: Eigentlich
gehört das ins DSP-Forum. Verschieben?
Lesenswert als Hintergrund:
[1]
http://www.embedded.com/design/configurable-systems/4006446/Understanding-cascaded-integrator-comb-filters
[2]
http://repository.upenn.edu/cgi/viewcontent.cgi?article=1144&context=ese_papers
Die Sache mit dem Modulator
Wie man als Praktiker weiss (Statistiker bitte weghören oder
präzisieren), halbiert sich das Rauschen, wenn man vier verrauschte
Messwerte mittelt. Auf einen ADC-Ausgang bezogen bekommt man für jede
Halbierung der Abtastrate durch Mittelung ein halbes Bit mehr Auflösung.
Wenn man also einen 1-Bit-ADC hätte und 44 kHz mit 16 Bit haben wollte,
müsste der 44 kHz*2^(16/0.5) = 189 GHz Abtastrate haben. Nicht
praktikabel.
Daher spielt man mit dem Rauschspektrum. Typischerweise hat man einen
1-Bit-Wandler, der mit 16 MHz getaktet ist und man möchte ein Signal bis
1 kHz sehen. Man braucht also nur einen winzigen Teil des ursprünglichen
Spektrums. Man kann jetzt das Rauschen aus dem Frequenzspektrum von 0...
ein paar kHz herausschieben und in den oberen uninteressanten Bereich
verlagern. Dort filtert man es heraus und fertig ist die
Rauschunterdrückung! Genau das machen Sigma-Delta-Modulatoren. Siehe
[2], Bild 12. Wie man sieht, wird das Rauschen von den tiefen in hohe
Frequenzen geschoben, je höher die Ordnung des Modulators ist, umso
stärker. Präziser ausgedrückt erreicht man bei tiefen Frequenzen durch
einen Modulator L-ter Ordnung L+0.5 Bit mehr Auflösung pro Dezimierung
um Faktor 2. Für einen Modulator 2. Ordnung (wie im AD7401) also 2.5 Bit
pro Faktor 2. Damit würde für CD-Qualität 44 kHz*2^(16/2.5) = 3.7 Mhz
reichen, was vernünftiger klingt.
Voraussetzung ist natürlich ein Filter, das die oberen Frequenzbänder
(wohin das Rauschen geschippt wurde) auch entfernen kann.
Sinc3
Sinc3 klingt etwa so kompliziert wie Galliumnitrid-Kaskode oder
Unobtainium-Tunnelkontakt. Tatsächlich sind sinc-Filter aber nur
gleitende Mittelwertfilter. In der üblichen hardwareoptimierten
Inkarnation ist die Länge des Mittelwerts gleich dem
Dezimierungsverhältnis, ein 1:16-dezimierendes Filter mittelt also über
16 Werte. Gleitende Mittelwertfilter sind so ziemlich die schlechtesten
Filter, die man sich ausdenken kann. Tatsächlich macht es Mühe, ein
Filter zu entwickeln, das noch schlechter performt. Verwirrend ist
übrigens auch noch die Bezeichnung sinc - sie kommt daher, dass die
Amplitude im Frequenzbereich einem sin(x)/x ähnelt (was man sinc nennt).
Nicht verwechseln darf man das mit das mit der Impulsantwort (=Kernel)
eines idealen Tiefpass. Bei einem idealen Tiefpass (also
"Brickwall"-Frequenzantwort) ist die Impulsantwort ein sinc (man kann
auch Tiefpass-FIR-Filter so entwerfen - sinc+Fenster - aber
Parks-McClellan ist besser). Im Gegensatz hat der gleitende Mittelwert
eine "Brickwall"-Impulsantwort und eine sinc-Frequenzantwort. Grad
andersherum, nicht verwechseln!
Zur Illustration habe ich das einen Sigma-Delta-Modulator 2. Ordnung mit
verschiedenen Filtern simuliert. Siehe Bild. Man sieht das
Frequenzspektrum des Modulators mit einem Eingangssignal von 1 kHz
(klebt links an der Y-Achse) und einer Modulatorfrequenz von 16 kHz. Man
sieht schön, wie das Rauschen im unteren Frequenzbereich unter -100 dB
geht und oberhalb stark ansteigt. An der orangefarbenen Kurve sieht man,
warum der gleitende Mittelwert so schlecht ist: Mit steigender Frequenz
ist kaum eine Absenkung der Amplitude vorhanden und abgesehen von
regelmässigen Senken (die von der gleichmässigen Verteilung der
Filternullstellen auf dem Einheitskreis in der Z-Ebene kommen, siehe
auch "Kammfilter") kommt das Signal immer wieder hoch.
Warum nimmt man also trotzdem dieses Filter? Weil es mit sensationell
geringem Aufwand zu implementieren ist. Man braucht für eine
Filterordnung nur ein Register für den Integrator und eins für den
Differenzierer - das wars. Ein FIR-Filter mit besserer Qualität bräuchte
ein Koeffizienten-ROM und einen Multiplizierer - um Grössenordnungen
aufwendiger. Ein IIR-Filter hätte Probleme mit Auflösung und Stabilität.
Wie verbessert man ein erbärmliches Filter? Man wendet es mehrfach an.
Das nennt man dann sincx - ein sinc3 sind einfach drei Mittelwertfilter
hintereinandergeschaltet. Auch das geht unglaublich effizient mit der
bekannten CIC-Filterstruktur.
In der Grafik sieht man das Ergebnis. Während ein einzelnes sinc-Filter
bei höheren Frequenzen keine Absenkung bringt, ist sinc2 etwas besser
und sinc3 noch mehr. Tatsächlich dominiert im sinc3-Spektrum der Bereich
um 100-300 kHz - die höherfrequenten "Rauschhügel" haben allesamt eine
viel niedrigere Amplitude und fallen nicht mehr ins Gewicht. Hier sieht
man auch, warum ein sinc4 nicht viel mehr bringen würde: Im unteren
Frequenzbereich bringen die sinc-Filter nur wenig Dämpfung (dort wurde
aber ja auch das Rauschen vom Modulator weggeschoben) und obenraus ist
drei mal sinc gut genug.
In der Grafik sieht man übrigens das gesamte Frequenzspektrum vor der
Dezimierung. Durch die Dezimierung um den Faktor 32 bleibt ein Spektrum
von 0 - 250 kHz übrig und die oberen Frequenzanteile werden einfach nach
unten hineingespiegelt (und dazuaddiert). Man braucht also eine gute
HF-Unterdrückung (sozusagen), damit das aufsummierte Rauschen der oberen
Bänder nicht die SNR im Basisband verringert.
Und nochmal zur Wiederholung: Das Rauschspektrum des Modulators (blaue
Kurve) hängt von der Ordnung ab. Ein SD-Modulator 1., 3. oder höherer
Ordnung würde ein anderes Spektrum erzeugen, wofür dann vielleicht
andere Filter optimal passen würden. Die Aussage im Datenblatt des
AD7401 stammt wohl von einem Praktiker, der das alles schon ein paar mal
durchexerziert hat. Wieviel Knowhow doch in einem so kurzen Satz stecken
kann.
Kommentare, Korrekturen, Verbesserungen?
Gruss Martin
PS: Natürlich aus lesenswert das DSP-Buch von Richard G. Lyons