Kompensator filter FIR saat menggunakan filter penipisan CIC

Jawaban:

3

Tidak ada jawaban tunggal untuk pertanyaan Anda: karena dengan masalah desain filter, itu tergantung pada kebutuhan Anda. Seperti dijelaskan dengan cukup baik di halaman Wikipedia , filter CIC (cascaded-integrator-comb) terdiri dari sejumlah pasang integrator dan tahap sisir (oleh karena itu namanya). Setiap tahap integrator-comb memiliki respons impuls agregat yang setara dengan filter gerbong (yaitu yang dengan respons frekuensi persegi panjang). Respons frekuensi (magnitudo) gerbong memiliki bentuk yang menyerupai fungsi sinc, sehingga keseluruhan struktur CIC akan memiliki respons magnitudo yang terlihat seperti fungsi sinc yang diambil untuk sejumlah daya , di mana adalah jumlah tahap integrator-sisir.NNN

Namun, tidak ada banyak tombol untuk Anda atur berdasarkan persyaratan spesifik aplikasi apa pun. Anda dapat men-tweak rasio penipisan / interpolasi dari struktur CIC, penundaan sisir, dan jumlah tahapan, tetapi Anda masih terjebak dengan respons frekuensi seperti-sinc, yang tidak terlalu ideal, karena tidak rata di seluruh lobus utama dan memiliki sidelob yang relatif tinggi. Jadi, biasanya CIC diikuti oleh filter lain yang "membersihkan" respons keseluruhan.

Gosok: apa yang Anda butuhkan dari filter kompensasi apa pun yang Anda masukkan setelah CIC akan ditentukan oleh aplikasi Anda. Yang benar-benar penting adalah respons kaskade keseluruhan, yang akan Anda batasi berdasarkan kebutuhan aplikasi Anda. Tidak ada filter khusus yang "paling cocok."

Jason R
sumber
Di mana Anda menulis "satu dengan respons frekuensi persegi panjang", bukankah maksud Anda "satu dengan respons impuls persegi panjang ?
nibot
Ya kau benar. Terima kasih telah menunjukkan kesalahannya.
Jason R
4

Ada pertanyaan serupa, https://dsp.stackexchange.com/a/1551/306 , dan berikut ini adalah bagian dari jawaban dari pos lainnya.

Secara umum, untuk mengkompensasi filter CIC, kebalikan dari respons filter CIC dapat digunakan untuk menghasilkan filter kompensasi. CIC memiliki respons 2

H(ω)=|sin(ωD/2)sin(ωM/2)|N

Di mana D adalah keterlambatan diferensiasi, M adalah laju penipisan, dan N adalah urutan filter (jumlah filter bertingkat). Kebalikannya dapat ditentukan sebagai

H(ω)=|sin(ωM/2)sin(ωD/2)|N

Setelah kami mendapatkan respons frekuensi filter kompensasi, kami cukup memilih panjang filter FIR yang kami inginkan. Panjang FIR adalah spesifik aplikasi. Jelas semakin lama filter FIR kompensasi yang lebih baik.

Berikut ini adalah plot kompensasi langsung ini.

Berikut ini adalah kode Python untuk membuat respons dan plot frekuensi.

impor numpy sebagai np dari dosa impor numpy, abs, pi impor 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')

Lihat, Altera, "Understanding CIC kompensasi filter" , untuk pendekatan lain dan pendekatan 1 .sinc1

1 Altera, "Memahami filter kompensasi CIC"

2 R. Lyons, "Memahami Pemrosesan Sinyal Digital", edisi ke-2, Prentice Hall, Upper Saddle River, New Jersey, 2004

Christopher Felton
sumber
Anda menunjukkan respons frekuensi yang diinginkan dalam filter kompensasi ... tetapi bagaimana Anda mendapatkan koefisien filter yang menghasilkan filter yang mendekati respons ini? Saya pikir itulah pertanyaannya.
nibot
0

ISOP (Interpolated Second Order Polynomial) sering digunakan untuk kompensasi dari CIC yang terkulai.

Respons Matlab dari filter ini dapat ditampilkan menggunakan:

alpha = 0.01 ;
b     = [1, alpha, -alpha] ; 
h     = mfilt.firsrc(1,1,b)
freqz( b )

Memilih alpha untuk kebutuhan Anda adalah bagian yang sulit. Simulasi brute force preform kasus terburuk, mengulang lebih dari 0 hingga 0,5 dengan penambahan 0,001 menemukan alpha yang menghasilkan kompensasi terkulai terbaik. Mendefinisikan kompensasi droop terbaik sebagai kesalahan minimal di tepi passband Anda.

Untuk efisiensi, filter ini biasanya ditempatkan pada kecepatan data yang lebih rendah, sebelum CIC untuk interpolasi, dan setelah CIC untuk penipisan.

Morgan
sumber
Lihat Lihat dsp.stackexchange.com/questions/19584/... untuk interpretasi / penjelasan lain tentang pendekatan kompensasi ini.
Dan Boschen