Saya membuat channelizer yang terdiri dari mixer kompleks, decimator CIC , dan filter kompensasi / penipisan FIR. Filter FIR akhir dapat, jika penting, diimplementasikan sebagai lebih dari satu filter.
Pertanyaan saya adalah, bagaimana cara mendesain filter sehingga mengimbangi respons frekuensi sangat datar dari filter CIC? Apakah Anda membuat respons frekuensi yang Anda inginkan dengan menghitung kebalikan dari respons CIC dan kemudian menjalankannya melalui FFT terbalik untuk mendapatkan respons impuls?
Seperti yang Anda lihat, meskipun masalah khusus saya berkaitan dengan filter CIC, pertanyaan saya sebenarnya adalah bagaimana Anda membuat segala jenis filter kompensasi distorsi.
Terima kasih atas waktunya.
filters
fft
filter-design
Jim Clay
sumber
sumber
Jawaban:
Berikut ini membahas kompensasi CIC dan bukan teknik "distorsi" umum. Tetapi ini adalah metode langsung untuk "mengganti" "distorsi" yang tidak bervariasi. Jika respons frekuensi diketahui, kebalikan dari frekuensi dapat digunakan untuk mengkompensasi. Contoh-contoh seperti filter CIC, di mana filter yang buruk dapat digunakan karena kompleksitas yang berkurang, dikompensasi kemudian dengan rantai sinyal. Dalam contoh ini respons frekuensi diketahui dan kebalikannya dapat digunakan. Catatan, dengan filter multi-rate Anda hanya ingin menggunakan spektrum "dapat digunakan" setelah penghancuran.
Secara umum, untuk mengkompensasi filter CIC, kebalikan dari respons filter CIC dapat digunakan untuk menghasilkan filter kompensasi. CIC memiliki respons (lihat referensi [r2] atau [r3])
Di mana D adalah keterlambatan diferensiasi, M adalah laju penipisan, dan N adalah urutan filter (jumlah filter bertingkat). Kebalikannya dapat ditentukan sebagai
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.
[r1] Altera, "Memahami filter kompensasi CIC"
[r2] R. Lyons, "Memahami Pemrosesan Sinyal Digital", edisi ke-2, Prentice Hall, Upper Saddle River, New Jersey, 2004
[r3] R. Lyons, "Memahami Filter Sisir Integrator Bertingkat"
sumber
M=8
danN=9
menciptakan plot yang sama dengan referensi 1. Saya menggunakan nomenklatur yang lebih dekat dengan referensi 2.Saya pikir jawaban Christopher adalah jawaban yang bagus. Saya pikir saya akan menambahkan satu untuk kita tipe pemalas / penipu.
Saat menggali di sekitar Matlab's fdatool (Desain Filter & Alat Analisis) saya menemukan bahwa ia dapat merancang dan memodelkan baik CIC dan filter sinc invers, di mana filter sinc invers adalah filter kompensasi distorsi CIC.
Anda menghasilkan filter CIC dengan langsung ke halaman "Buat filter multi-rate" (tombol di sebelah kiri dalam versi R2011b) dan menentukan filter CIC. Anda kemudian dapat mengatur semua parameter yang Anda inginkan, seperti tingkat interpolasi / penipisan, jumlah kaskade (Matlab menyebutnya "bagian"), dll.
Anda membuat filter sinc terbalik dengan pergi ke halaman "Desain filter" (halaman yang default alat ketika dimulai), dan menentukan "Inverse Sinc Lowpass" dari menu tarik turun Lowpass. Anda kemudian dapat mengatur berbagai parameter untuk itu. Ini memiliki beberapa parameter unik di bagian Opsi dialog, termasuk "p", yang sesuai dengan jumlah kaskade (eksponen sinc).
Namun, desain filter invers tulus tidak sepenuhnya memuaskan, karena melakukannya dengan benar sepertinya bukan contoh melakukan perhitungan matematika daripada mencari tahu di mana band pass saya, apa yang terkulai CIC pada saat itu, dan kemudian merancang filter yang dibatalkan secara kasar keluar terkulai itu. Karena filter CIC saya memiliki empat kaskade, saya akan berpikir bahwa saya perlu mengatur "p" menjadi empat, tetapi cara itu terlalu dikompensasi ketika saya melakukan itu. Saya akhirnya meninggalkan "p" pada 1, nilai default.
Alat ini benar-benar bersinar ketika saya menyimpan kedua filter dalam sesi saya, dan kemudian pergi ke manajer filter dan mengalirkannya untuk melihat respons frekuensi secara keseluruhan. Ini sangat membantu, dan mudah dilakukan.
sumber
Tanpa menduplikasi respons di sini, silakan lihat
cara membuat filter kompensasi CIC
yang menunjukkan solusi 3 tap yang sangat sederhana untuk kompensasi CIC.
Ini khusus untuk CIC atau aplikasi apa pun untuk Sinc terbalik yang diperlukan (seperti sebelum konversi D / A).
Untuk mengkompensasi distorsi transversal umum (yang dapat direplikasi dengan filter transversal sebagai lawan distorsi noise dinamis) saya akan mengambil pendekatan menggunakan persamaan Wiener Hopf untuk menghasilkan filter kompensasi menggunakan pendekatan Least Squared Error, idealnya menggunakan urutan pelatihan jika tersedia untuk membandingkan diinginkan dengan respons aktual dan melatih equalizer. Untuk aplikasi yang menunjukkan ini dengan kode sumber yang digunakan lihat:
Mengkompensasi respons frekuensi Loudspeaker dalam sinyal audio
sumber