Come creare un filtro di compensazione della distorsione


11

Sto creando un channelizer che consiste in un mixer complesso, un decimatore CIC e un filtro di compensazione / decimazione FIR. Il filtro FIR finale, se importante, può essere implementato come più di un filtro.

La mia domanda è: come posso progettare un filtro in modo tale da compensare la risposta in frequenza molto non piatta del filtro CIC? Crei la risposta in frequenza desiderata calcolando il reciproco della risposta del CIC e quindi eseguendola attraverso una FFT inversa per ottenere la risposta all'impulso?

Come puoi vedere, anche se il mio problema particolare riguarda i filtri CIC, la mia domanda è davvero su come si crea qualsiasi tipo di filtro di compensazione della distorsione.

Grazie per il tuo tempo.


3
Un filtro il cui scopo è compensare la distorsione precedentemente nel sistema di comunicazione è spesso chiamato un equalizzatore ; che potrebbe darti alcune informazioni di cui leggere nel frattempo. I tipi comuni sono l'equalizzatore a forzatura zero (che non è quello che vuoi se il sistema che stai compensando ha zeri nella sua risposta in frequenza) e l'equalizzatore di errore al quadrato medio (MMSE) minimo.
Jason R,

@JasonR Ho familiarità con gli equalizzatori adattivi MMSE nel contesto di equalizzatori orientati alle decisioni di compensazione del canale, ma dubito che questo sia ciò che intendevi. Ti alleneresti l'equalizzatore in qualche modo? Immagino che il punto cruciale sia come si determina qual è l'errore.
Jim Clay,

MMSE si riferisce solo al criterio per cui l'equalizzatore punta; può essere adattivo o non adattivo. Se si conosce la funzione di trasferimento del sistema per compensare e la funzione di autocorrelazione di qualsiasi rumore aggiuntivo, ed entrambi sono invarianti nel tempo, è possibile derivare "l'equalizzatore MMSE", che verrà risolto nel tempo. Le soluzioni adattive possono essere utilizzate quando tali informazioni non sono note con precisione o cambiano nel tempo (cosa piuttosto comune).
Jason R,

I filtri adattivi spesso includono una modalità di allenamento in cui un certo numero di simboli noti vengono trasmessi attraverso il sistema, consentendo al ricevitore di far convergere il suo filtro su un buon insieme di coefficienti. Dopo l'allenamento, è anche comune entrare in una fase di tracciamento, in cui viene utilizzata l'operazione orientata alle decisioni per gli aggiornamenti continui dei rubinetti del filtro. In alternativa, in un regime in cui SNR e ISI sono "abbastanza buone", la modalità orientata alle decisioni potrebbe essere utilizzata fin dall'inizio come uno schema di acquisizione cieco, saltando la fase di addestramento.
Jason R,

Trovare materiale di lettura su questo argomento matematicamente accessibile è alquanto difficile. Mi piace la teoria del filtro adattivo di Haykin , ma ci vuole un po 'di sforzo per superare la matematica (e hai bisogno di un solido background di algebra lineare). È abbastanza complicato che se non lo usi regolarmente, devi prima andare a ripassare gli argomenti sull'elaborazione del segnale statistico.
Jason R,

Risposte:


9

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(ω)=|Sion(ωD/2)Sion(ω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(ω)=|Sion(ωM/2)Sion(ω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')

Sionc-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"


Il riferimento 1 è ottimo, ma usa una terminologia diversa (M = ritardo dello stadio, dove hai usato D. R = Tasso di riduzione, dove hai usato M) quindi mi ci è voluto un po 'per vedere l'errore: usi WM / 2, Altera specifica pi F / R. Dopo una rapida trama di Excel, credo che la versione di Altera sia quella corretta.
Alan Campbell,

@AlanCampbell Se traccia le equazioni sopra (che ho fatto nello snippet di codice) vedrai che non c'è nessun errore. Ciò che non ho esplicitamente richiamato nelle equazioni è il guadagno . Si noti che nel codice snip rimuovo il guadagno. Se si esegue il codice snip e si modifica M=8e N=9crea gli stessi grafici del riferimento 1. Ho usato la nomenclatura più vicina al riferimento 2.
Christopher Felton,

2

Penso che la risposta di Christopher sia buona. Ho pensato di aggiungere uno per noi tipi pigri / imbroglioni.

Mentre cercavo il fdatool di Matlab (Filter Design & Analysis Tool) ho scoperto che può progettare e modellare sia i filtri CIC che i filtri sinc inversi, dove il filtro sinc inverso è il filtro di compensazione della distorsione del CIC.

Generare il filtro CIC andando direttamente alla pagina "Crea un filtro multi-rate" (pulsante a sinistra nella versione R2011b) e specificando il filtro CIC. Puoi quindi impostare tutti i parametri che desideri su di esso, come i tassi di interpolazione / decimazione, il numero di cascate (Matlab lo chiama "sezioni"), ecc.

Si crea il filtro sinc inverso andando alla pagina "Filtro di progettazione" (la pagina a cui lo strumento è impostato per impostazione predefinita all'avvio) e specificando "Inverse Sinc Lowpass" dal menu a discesa Lowpass. È quindi possibile impostare i vari parametri per esso. Ha un paio di parametri unici nella parte Opzioni della finestra di dialogo, tra cui "p", che corrisponde al numero di cascate (esponente sincero).

Il design del filtro sincero inverso non era del tutto soddisfacente, tuttavia, dal momento che farlo correttamente sembrava meno un'istanza di fare la matematica che capire dove fosse la mia banda passante, quale fosse il droop del CIC a quel punto, e quindi progettare un filtro che approssimativamente cancellato fuori da quel pendio. Dal momento che il mio filtro CIC aveva quattro cascate, avrei pensato che avrei dovuto impostare "p" su quattro, ma in questo modo è stato compensato eccessivamente. Ho finito per lasciare "p" su 1, il valore predefinito.

Lo strumento ha davvero brillato quando ho salvato entrambi i filtri nella mia sessione, quindi sono andato nel gestore dei filtri e li ho messi in cascata per vedere la risposta in frequenza complessiva. Questo è stato molto utile e facile da fare.


0

Senza duplicare la risposta qui, vedere

come fare il filtro di compensazione CIC

che mostra una soluzione 3 tap molto semplice per la compensazione CIC.

Questo è specifico per CIC o per qualsiasi applicazione per un Sinc inverso (come prima della conversione D / A).

Per compensare qualsiasi distorsione trasversale generale (quella che potrebbe essere replicata con un filtro trasversale al contrario della distorsione dinamica del rumore), adottarei l'approccio dell'uso delle equazioni di Wiener Hopf per trovare un filtro di compensazione usando l'approccio Errore minimo quadrato, idealmente utilizzando una sequenza di allenamento, se disponibile, per confrontare la risposta desiderata con quella effettiva e allenare l'equalizzatore. Per un'applicazione che mostra questo con il codice sorgente utilizzato vedere:

Risposta in frequenza dell'altoparlante di compensazione in un segnale audio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.