Das Folgende befasst sich mit der CIC-Kompensation und ist keine allgemeine "Verzerrungstechnik". Es ist jedoch eine einfache Methode, nicht variierende "Verzerrungen" zu "kompensieren". Wenn der Frequenzgang bekannt ist, kann die Inverse der Frequenz zur Kompensation verwendet werden. Beispiele wie das CIC-Filter, bei dem aufgrund der verringerten Komplexität ein schlechtes Filter verwendet werden könnte, werden später in der Signalkette kompensiert. In diesem Beispiel ist der Frequenzgang bekannt und das Inverse kann verwendet werden. Beachten Sie, dass Sie bei Filtern mit mehreren Raten das "verwendbare" Spektrum erst nach der Dezimierung verwenden möchten.
Im Allgemeinen kann zur Kompensation eines CIC-Filters die Umkehrung der CIC-Filterantwort verwendet werden, um das Kompensationsfilter zu erzeugen. Der CIC hat eine Antwort von (siehe Referenz [r2] oder [r3])
H.( ω ) = ∣∣∣s i n ( ω D / 2 )s i n ( ω M./ 2)∣∣∣N.
Dabei ist D die Differenzierungsverzögerung, M die Dezimierungsrate und N die Filterreihenfolge (Anzahl der kaskadierten Filter). Die Umkehrung kann angegeben werden als
H.( ω ) = ∣∣∣s i n ( ω M./ 2)s i n ( ω D / 2 )∣∣∣N.
Sobald wir den Frequenzgang des Kompensationsfilters haben, können wir einfach die gewünschte Länge des FIR-Filters auswählen. Die Länge der FIR ist anwendungsspezifisch. Je länger der FIR-Filter ist, desto besser ist natürlich die Kompensation.
Das Folgende sind Diagramme dieser einfachen Kompensation.
Das Folgende ist der Python-Code zum Erstellen der Frequenzantworten und Diagramme.
import numpy as np
from numpy import sin, abs, pi
import pylab
D = 1; M = 7; N = 3
Hfunc = lambda w : abs( (sin((w*M)/2)) / (sin((w*D)/2.)) )**N
HfuncC = lambda w : abs( (sin((w*D)/2.)) / (sin((w*M)/2.)) )**N
w = np.arange(1024) * pi/1024
G = (M*D)**N
H = np.array(map(Hfunc, w))
Hc = np.array(map(HfuncC, w))
# only use the inverse (compensation) roughly to the first null.
Hc[int(1024*pi/M/2):] = 1e-8
plot(w, 20*log10(H/G))
plot(w, 20*log10(Hc*G))
grid('on')
s i n c- 1
[r1] Altera, "CIC-Kompensationsfilter verstehen"
[r2] R. Lyons, "Understanding Digital Signal Processing", 2. Auflage, Prentice Hall, Upper Saddle River, New Jersey, 2004
[r3] R. Lyons, "Kaskadierte Integrator-Kammfilter verstehen"