Quanto segue affronta la compensazione CIC e non è una tecnica generale di "distorsione". Ma è un metodo diretto per "compensare" la "distorsione" non variabile. Se la risposta in frequenza è nota, è possibile utilizzare l'inverso della frequenza per compensare. Esempi come il filtro CIC, in cui un filtro scadente potrebbe essere utilizzato a causa della ridotta complessità, vengono compensati successivamente nella catena del segnale. In questo esempio la risposta in frequenza è nota e si può usare l'inverso. Nota, con i filtri multi-rate vuoi usare lo spettro "utilizzabile" solo dopo la decimazione.
In generale, per compensare un filtro CIC è possibile utilizzare l'inverso della risposta dei filtri CIC per generare il filtro di compensazione. Il CIC ha una risposta di (vedi riferimento [r2] o [r3])
H( ω ) = ∣||s i n ( ω D / 2 )s i n ( ω M/ 2)|||N
Dove D è il ritardo di differenziazione, M è la velocità di decimazione e N è l'ordine del filtro (numero di filtri in cascata). L'inverso può essere specificato come
H( ω ) = ∣||s i n ( ω M/ 2)s i n ( ω D / 2 )|||N
Una volta ottenuta la risposta in frequenza del filtro di compensazione, possiamo semplicemente scegliere la lunghezza del filtro FIR che desideriamo. La lunghezza della FIR è specifica dell'applicazione. Ovviamente più è lungo il filtro FIR, migliore è la compensazione.
Di seguito sono riportati i grafici di questa compensazione diretta.
Di seguito è riportato il codice Python per creare le risposte e i grafici della frequenza.
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, "Comprensione dei filtri di compensazione CIC"
[r2] R. Lyons, "Comprensione dell'elaborazione del segnale digitale", 2a edizione, Prentice Hall, Upper Saddle River, New Jersey, 2004
[r3] R. Lyons, "Comprensione dei filtri a pettine per integratore in cascata"