Program analisis filter digital. Berlatihlah menggunakan filter digital. Merancang Filter Digital

Merancang Filter Digital

4.1.1. Definisi dasar desain filter digital

Filter digital (DF) dalam arti luas dipahami sebagai sistem digital apa pun yang mengekstraksi sinyal digital atau parameternya dari campuran yang ada pada input sistem. sinyal dengan interferensi.

Filter digital dalam arti sempit adalah rangkaian selektif frekuensi yang menyediakan pemilihan sinyal digital berdasarkan frekuensi.

Filter digital dalam arti luas meliputi:

Pengoreksi amplitudo dan fase karakteristik frekuensi;

Pembeda;

transformator Hilbert;

Filter yang cocok.

Filter digital dalam arti sempit mencakup filter selektif frekuensi:

Filter lolos rendah (LPF);

Filter lolos tinggi (HPF);

Filter bandpass (PF);

Filter takik (RF).

Filter digital dapat diimplementasikan:

Perangkat keras;

Perangkat lunak;

Perangkat keras dan perangkat lunak.

Implementasi perangkat keras melibatkan penggunaan elemen fungsional berupa register, penambah, pengganda, perangkat memori, dan elemen logika.

Implementasi perangkat lunak berarti filter direpresentasikan sebagai program yang ditulis dalam bahasa pemrograman.

Implementasi perangkat keras-perangkat lunak berarti menjalankan sebagian fungsi filter di perangkat keras (ADC, DAC, perkalian, penerimaan/transmisi data) sambil menjalankan bagian lain dari fungsi perangkat lunak.

Desain digital digital adalah suatu proses yang menghasilkan pengembangan suatu program atau perangkat digital yang memenuhi persyaratan yang ditentukan.

Perancangan filter digital meliputi tahapan sebagai berikut:

1. Sintesis.

2. Pengembangan algoritma perhitungan.

3. Verifikasi dengan simulasi.

4. Implementasi praktis dan debugging.

Hasilnya sintesis adalah diagram blok filter dan himpunan koefisien dan persamaan selisih serta fungsi transfer.

Pengembangan algoritma perhitungan tergantung pada kapasitas bit register, jumlah baterai prosesor, kemungkinan operasi paralelisasi, dan keberadaan perangkat penggandaan dan akumulasi. Algoritme terakhir harus memastikan filter berfungsi secara real-time dengan penurunan kualitas yang minimal.

Verifikasi simulasi dilakukan secara tidak nyata menggunakan sinyal standar menggunakan emulator perangkat lunak. Dalam hal ini, kesalahan logis dihilangkan dan kepatuhan filter dengan karakteristik yang ditentukan diperiksa.

Implementasi praktis dan debugging dilakukan secara real time menggunakan modul debugging.



Informasi umum tentang sintesis CP

Selama proses sintesis, tindakan berikut dilakukan:

Persyaratan untuk filter telah ditentukan;

Koefisien fungsi transfer atau persamaan selisih dihitung;

Diagram struktural CF sedang dibentuk.

Persyaratan untuk filter digital dapat ditentukan dalam domain waktu atau frekuensi, bergantung pada tujuan filter.

Persyaratan domain waktu biasanya ditentukan untuk filter yang cocok melalui respons impuls yang diperlukan.

Persyaratan dalam domain frekuensi biasanya ditentukan untuk filter selektif frekuensi.

Misalnya, persyaratan untuk filter bandpass dicirikan oleh lima pita frekuensi (Gambar 2.1):

Bandwidth pusat (CB);

Dua jalur penahanan (PZ1, PZ2);

Dua garis transisi.

Gambar 2.1 – diagram persyaratan respon frekuensi PF

Gambar 1 menunjukkan:

Frekuensi cutoff dari pita pemberhentian pertama PZ1, yang lebarnya ;

Frekuensi cutoff pita sandi kiri;

Frekuensi cutoff pita sandi kanan, lebar pita sandi ;

Frekuensi cutoff dari stop band kedua PZ2, yang lebarnya ;

Strip transisi 1 dan 2 memiliki lebar , , masing-masing.

Nilai tersebut mencirikan deviasi maksimum yang diizinkan dari respons frekuensi dari 1 dalam bandwidth. Nilai tersebut mencirikan deviasi maksimum yang diizinkan dari respons frekuensi dari 0 dalam pita stop. Persyaratan untuk karakteristik respons frekuensi dalam pita transisi biasanya tidak ditentukan.

Ada beberapa jenis metode sintesis berikut:

Metode sintesis langsung;

Metode sintesis menggunakan prototype analog.

Metode langsung dibagi menjadi dua kategori:

Praktik Terbaik;

Metode yang kurang optimal.

Dalam metode optimal, fungsi kualitas minimum tertentu dicari dengan menggunakan metode numerik. Norma kesalahan digunakan sebagai ukuran minimum penyimpangan karakteristik filter dari yang ditentukan:



. (2.1)

Metode suboptimal memungkinkan penyederhanaan perhitungan dengan mempertimbangkan masalah spesifik.

Paket perangkat lunak profesional untuk membuat dan menganalisis filter listrik analog dan digital aktif/pasif.

Filter Solutions memiliki antarmuka yang sederhana dan intuitif, yang merupakan sekumpulan jendela terpisah untuk mengatur nilai yang diperlukan dari filter yang sedang dirancang dan menampilkan hasil serta karakteristiknya. Perangkat lunak ini memiliki inti komputasinya sendiri. Algoritme perhitungan yang dioptimalkan memungkinkan Anda melakukan operasi matematika yang kompleks dalam waktu singkat.

Program Solusi Filter mampu membuat filter standar (elips atau Cauer, Bessel, Butterworth, Gauss, Legendre, Chebyshev tipe 1 dan 2, cocok dan beberapa lainnya), serta filter unik dengan parameter fleksibel, dengan respons frekuensi yang ditentukan secara bebas untuk membuat rangkaian fase fase dan koreksi amplitudo. Program ini secara otomatis membangun fungsi transfer, menunjukkan kutub dan nol, dan juga menghasilkan karakteristik waktu rangkaian ketika terkena pulsa. Untuk membuat filter dengan cepat, disediakan wizard yang hanya membutuhkan data pengembangan paling penting.

Dimungkinkan juga untuk menunjukkan karakteristik frekuensi perangkat yang dirancang, nol dan kutub. Filter Solutions akan secara mandiri mengatur urutan filter dan topologi yang diperlukan. Program ini memungkinkan Anda mengembangkan filter dalam desain stripline/mikrostrip. Perhitungannya akan memperhitungkan kerugian pada metalisasi dan dielektrik substrat.
Fitur dari paket perangkat lunak adalah penyediaan beberapa kemungkinan cara untuk menyelesaikan masalah dalam bentuk berbagai solusi rangkaian dan parameter elemen individual. Filter Solutions memantau kelayakan teknologi skema. Program ini akan menunjukkan kemungkinan masalah dan menawarkan opsi alternatif yang memiliki parameter sedikit lebih buruk, namun memungkinkan untuk diterapkan.

Kemampuan Filter Solutions juga tersedia sebagai versi Filter Light dan Filter Free, yang memiliki biaya lebih rendah dibandingkan dengan versi lengkap program. Kisaran fungsi di dalamnya agak disederhanakan, terutama di Filter Free, yang merupakan paket minimum yang tersedia.
Persyaratan sistem untuk perangkat lunak ini kecil. Program ini didistribusikan dalam bentuk versi reguler dan Portabel yang berfungsi dari drive eksternal apa pun.

Filter Solutions adalah produk Nuhertz Technologies http://www.nuhertz.com/. Kantor pusatnya berlokasi di Phoenix (AS, Arizona). Paket ini awalnya dirilis pada tahun 1999. Sejak itu, ia terus berkembang dan memperoleh lebih banyak fungsi dan kemampuan baru. Perangkat lunak yang dikembangkan oleh perusahaan digunakan oleh para insinyur desain di berbagai bidang ilmu pengetahuan dan industri, seperti komunikasi dan komunikasi, elektronik militer, kedokteran, pembuatan instrumen, minyak dan gas, dan desain antena. Nuhertz Technologies juga merupakan pencipta Statmat dan Spectra, program untuk analisis statistik dan presentasi data digital.

Bahasa antarmuka Solusi Filter hanya dalam bahasa Inggris.

Platform kerja program yang dimaksud adalah Windows 9x/Me/2K/NT/XP/Vista/7.

  1. Bagian teoritis untuk pekerjaan laboratorium ini terdapat dalam buku teks "Metode sintesis filter digital" (file filtrs\lecture_dsp.doc)

Bekerja dengan program qedesign 1000.

Jalankan QED.exe untuk memuat program QEDESIGN 1000 Digital Filter Design System.

Di menu utama yang terbuka, pilih submenu Desain, jendela untuk menentukan jenis filter untuk perhitungan akan terbuka:

Gambar.1. Menu "Desain" Gambar 2. Menu opsi

Di sini Anda dapat memilih jenis metode perhitungan filter filter untuk perhitungan:

1. Perhitungan filter IIR (IIR Design).

    untuk filter IIR, buka juga menu Opsi dan pilih salah satu metode

    Transformasi Bilinear

Metode Impuls Invarian

2. Perhitungan filter FIR dengan metode pembobotan window (FIR Design (Windows))

3. Perhitungan filter FIR menggunakan metode filter optimal (FIR Equiripple FIR Filter Design)

Pilih metode yang diperlukan dengan mengklik kiri.

1 - filter lolos rendah

2 - filter lolos tinggi (Highpass)

3 - filter bandpass

4 - filter takik (Bandstop)

Setelah memilih jenis filter, jendela untuk mengatur parameter filter akan terbuka.

Gambar.3. Jendela untuk mengatur parameter filter lolos rendah

Gambar 4. Jendela untuk mengatur parameter filter high-pass

Di jendela ini Anda perlu mengatur: Frekuensi Pengambilan Sampel F

D

Batas frekuensi passband Wп (Frekuensi Passband)

Frekuensi batas pita tunda Wз (Frekuensi Stopband)

Ripple (atenuasi) di passband (Passband Ripple)

Ripple (atenuasi) pada pita tunda (Stopband Ripple)

Dalam hal ini, Anda harus ingat:

untuk filter lolos rendah Wп

untuk filter bandpass Wп1

untuk filter takik Wп1

Frekuensi cutoff harus lebih kecil dari frekuensi sampling dibagi 2.

Kisaran riak (atenuasi) yang umum:

di pita sandi 0,1 - 3 dB

di pita penundaan 20 - 100 dB

Isi semua bidang dan klik tombol "Terima".

D
Selanjutnya, masuk ke menu utama dan pilih item menu “Start”.

Di layar ini, untuk filter IIR, pilih jendela yang ditunjukkan pada Gambar. 5.

Gambar 5. Jendela untuk menghitung filter IIR

Pilih Jenis Filter Analog:

1- Butterworth;

2 – Chebyshev;

3 - membalikkan Chebyshev;

4 – elips;

5 – Besel;

Filter pesanan (Masukkan Pesanan yang Diinginkan)

Urutan filter harus kelipatan 2; tidak lebih besar dari Estimasi Urutan Filter.

Untuk filter FIR yang dihitung dengan metode jendela, sebuah jendela terbuka, Gambar. 6

Beras. 6. Jendela untuk menghitung filter FIR menggunakan metode jendela.

Fungsi Jendela yang mungkin ditampilkan di sini bersama dengan jumlah sampel fungsi pulsa filter yang disarankan (Perkiraan Urutan):

1 – persegi panjang;

2 – segitiga;

4 – Ham;

5 – orang kulit hitam;

dan lainnya.

Masukkan Jumlah Ketukan yang Diinginkan

Jumlah pembacaan tidak boleh kurang dari 2 dan tidak lebih dari yang direkomendasikan.

Untuk filter FIR yang optimal, pilih:

Perkiraan Jumlah ketukan

Jumlah penghitungan tidak boleh kurang dari 3 dan tidak lebih dari yang direkomendasikan.

Pengguna memiliki kemampuan untuk menampilkan grafik berikut di layar dan perangkat pencetakan:

Untuk filter IIR:

Karakteristik amplitudo (Besarnya)

Karakteristik fase (Fase);

Kutub dan Nol fungsi transfer (Kutub dan Nol);

Karakteristik Penundaan Grup;

Untuk filter FIR:

Karakteristik amplitudo (Besaran);

Karakteristik amplitudo pada skala logaritmik (Log10 Magnitude);

Respon Impuls;

Langkah Respon;

Akan terbuka menu untuk menyimpan hasil, Gambar 7.

Beras. 7. Menu untuk menyimpan hasil

Nama file umum (misalnya filtr1) digunakan untuk menyimpan hasilnya.

Jika opsi Simpan Spesifikasi Masalah dipilih, spesifikasi filter akan disimpan dalam file *.spc.

Jika opsi Buat File Koefisien Kuantitas dipilih, koefisien filter akan disimpan.

Sistem melakukan kuantisasi koefisien filter. Opsi Koefisien Kuantitas harus selalu dipilih. Jika tidak, koefisien filter tidak akan disimpan.

Beras. 8. Menu pilihan kuantisasi

Untuk filter IIR, dua bentuk implementasi (Jenis Realisasi) dimungkinkan:

    Bentuk Cascade dengan blok orde ke-2 dalam bentuk langsung (Cascaded Transpose Second Order Section);

    Formulir Cascade dengan blok urutan ke-2 dalam bentuk kanonik (Cascaded Canonic Second Order Section);

    Bagian Orde Kedua yang Ditransposisi Paralel;

    Bagian Orde Kedua yang Ditransposisi Paralel;

Hasil penghitungan koefisien filter disimpan dalam file *.flt.

Di bawah ini adalah contoh isi file koefisien filter bandpass terkuantisasi.

FILE KOEFISIEN FILTER

LULUS BAND JENIS FILTER

FILTER ANALOG JENIS ELIPTIK

RIPPLE PASSBAND DI -dB -3.0000

STOPBAND RIPPLE DALAM -dB -20.0000

FREKUENSI PUTUS PASSBAND .500000E+03 .600000E+03 HERTZ

FREKUENSI CUTOFF STOPBAND .400000E+03 .700000E+03 HERTZ

FREKUENSI SAMPLING .400000E+04 HERTZ

METODE DESAIN FILTER: TRANSFORMASI BILINEAR

FILTER PESANAN 4 0004 jam

JUMLAH BAGIAN 2 0002h

TIDAK. BIT TERKUANTISASI 16 0010h

JENIS KUANTIZASI - BLOK FLOATING POINT

KOEFISIEN SKALA UNTUK BENTUK CASCADE II

4 FFFFFFFC /* jumlah shift untuk penguatan keseluruhan */

21237 000052F5 /* keuntungan keseluruhan */

2 FFFFFFFE /* hitungan shift untuk nilai pembilang bagian 1 */

30006 00007536 /* bagian 1 koefisien B0 */

21867 FFFFAA95 /* bagian 1 koefisien B1 */

30006 00007536 /* bagian 1 koefisien B2 */

1 00000001 /* hitungan shift untuk nilai penyebut bagian 1 */

19208 00004B08 /* bagian 1 koefisien A1 */

15554 FFFFC33E /* bagian 1 koefisien A2 */

3 00000003 /* hitungan shift untuk nilai pembilang bagian 2 */

15490 00003C82 /* bagian 2 koefisien B0 */

25573 FFFF9C1B /* bagian 2 koefisien B1 */

15490 00003C82 /* bagian 2 koefisien B2 */

1 00000001 /* hitungan shift untuk nilai penyebut bagian 2 */

22299 0000571B /* bagian 2 koefisien A1 */

15636 FFFFC2EC ​​​​/* bagian 2 koefisien A2 */

2289276123046875D+00 3FCD4D8000000000 .22893000E+00 /* bagian 1 B0 */

1668319702148437D+00 BFC55AC000000000 -.16683484E+00 /* bagian 1 B1 */

2289276123046875D+00 3FCD4D8000000000 .22893000E+00 /* bagian 1 B2 */

1172363281250000D+01 3FF2C20000000000 -.11723777E+01 /* bagian 1 A1 */

9493560791015625D+00 BFEE612000000000 .94936011E+00 /* bagian 1 A2 */

3781799316406250D+01 400E412000000000 .37818290E+01 /* bagian 2 B0 */

6243408203125000D+01 C018F94000000000 -.62435106E+01 /* bagian 2 B1 */

3781799316406250D+01 400E412000000000 .37818290E+01 /* bagian 2 B2 */

1361022949218750D+01 3FF5C6C000000000 -.13610497E+01 /* bagian 2 A1 */

9543914794921875D+00 BFEE8A6000000000 .95439489E+00 /* bagian 2 A2 */

Implementasi struktur bentuk kaskade filter IIR dengan bagian orde kedua dalam bentuk kanonik (tipe) 2

Filter yang disintesis dapat direpresentasikan sebagai produk dari bagian orde kedua:

,

dimana K adalah bagian bilangan bulat (N=1)/2. H k (z) mempunyai bentuk umum:

Filter dapat diimplementasikan menggunakan formulir berikut untuk setiap bagian orde kedua dalam bentuk kanonik:

Gambar.9. Bagian orde kedua dalam bentuk kanonik

(Apa perbedaan yang signifikan antara implementasi ini dan implementasi dalam bentuk langsung?)

Implementasi struktur bentuk kaskade filter FIR dengan bagian orde kedua dalam bentuk kanonik

Kita bisa membusuk H(z) ke sistem orde kedua:

K – bagian bilangan bulat (M+1)/2 (panjang filter M).

Implementasi bertingkat sederhana dari filter FIR dengan bagian orde kedua:

Beras. 10. Implementasi kaskade sederhana dari filter FIR.

Saya sedang mengerjakan proyek di sini dan saya mengalami masalah ini. Saya menerima data dari sirkuit mikro ADC (delta-sigma) yang memiliki pengontrol dan filter bawaan, tetapi filter ini memiliki respons frekuensi yang agak buruk, akibatnya ada penyumbatan di RF dari 60 Hz dan seterusnya. Ini terlihat seperti ini:

Itu. Respon frekuensi yang tidak merata ini jelas tidak sesuai dengan kami (tidak memenuhi persyaratan teknis), meskipun dimungkinkan untuk meningkatkan frekuensi sampling dari 250Hz ke 500Hz untuk menyamakan respons frekuensi, tetapi kemudian jumlah data yang masih perlu dilakukan peningkatan rata-rata, yang akan mempengaruhi kinerja (proyek pada STM32F103VE) sistem secara keseluruhan dan konsumsi energi total (daya baterai). Tapi ada cara lain.

Anda dapat menyamakan respons frekuensi menggunakan filter digital parametrik, dalam hal ini filter high-pass. Artinya, sama saja dengan equalizer, kita menaikkan beberapa frekuensi, tetapi tidak menyentuh frekuensi lainnya (atau menurunkannya). Cara ini memang bagus, tapi... kami mencoba memulihkan informasi, yang sebagian dihancurkan oleh filter lain pada input (yang ada di sirkuit mikro), tingkat interferensi pada frekuensi tinggi pasti akan meningkat, karena Selain sinyalnya, kami juga akan memperkuatnya, tapi seberapa besar?

Jadi, ide penyelesaian masalahnya sudah ada, tinggal implementasinya saja. Apa yang kita ingat tentang filter digital (bagi mereka yang belum pernah berlatih) dari mata kuliah di universitas? Kecuali kata-kata seperti konvolusi, transformasi Z, respons impuls, dll. Secara umum bahkan tidak jelas pendekatan dari ujung mana, sepertinya kita perlu menghitung beberapa koefisien, tetapi apa dan mengapa tidak jelas, menaikkan kursus dan duduk dengan buku-buku di DSP (ada yang 800 halaman) ada tidak ada waktu lagi, proyek terhenti dan ada sesuatu yang perlu dilakukan, dan dengan cepat.

Oleh karena itu, setelah sedikit googling, kami menemukan sumber seperti itu di Internet. Ini adalah situs untuk menghitung filter digital (dan banyak lagi!) secara online, dan dibuat oleh Dr. Anthony J. Fisher.

Jadi, kami menetapkan persyaratan yang kami perlukan dan memasukkannya ke dalam situs. Pertama, kita perlu respon yang lancar, jadi yang pasti HF Butterworth (highpass) orde pertama. Kedua, tingkat sampel, yaitu jumlah konversi ADC per detik, atau frekuensi pengambilan sampel, bagi kami adalah 250Hz. Ayo masuk. Dan terakhir, ketiga, frekuensi cutoff (-3dB) adalah 50Hz, karena Filter saluran masuk memotong kira-kira di sini. Klik kirim dan kami mendapatkan karakteristik filter masa depan kami berikut:


Grafik amplitudo versus frekuensi Nyquist ditampilkan dengan warna merah, dan perubahan fasa dengan warna biru. 0,5 sama dengan setengah laju pengambilan sampel.

Kami juga mendapatkan kode C dengan koefisien yang dihitung:
#define NZEROS 1 #define NPOLES 1 #define GAIN 1.726542528e+00 static float xv, yv; static void filterloop() ( for (;;) ( xv = xv; xv = nilai masukan berikutnya / GAIN; yv = yv; yv = (xv - xv) + (0.1583844403 * yv); nilai keluaran berikutnya = yv; ) )
Tapi ini hanya filter, kita ingat bahwa kita perlu memperkuat frekuensi dari 50Hz ke atas untuk meluruskan respons frekuensi, dan fungsi dalam bentuk ini tidak akan membantu kita, jadi dengan beberapa manipulasi sederhana kita membawa fungsi ke bentuk ini :
#define NZEROS 1 #define NPOLES 1 #define GAIN 1.726542528e+00F #define OUR_GAIN 2.1F // koefisien kita. filter keuntungan float xv, yv; int void filterloop(int data) ( xv = xv; xv = (float)data / GAIN; yv = yv; yv = (xv - xv) + (0.1583844403F * yv); return (int)((yv0 * OUR_GAIN) + (mengambang)data);

Semua. Untuk menggunakan filter, kita memasukkan data ke dalam parameter fungsi, dan fungsi tersebut mengembalikan data yang difilter. Kami memilih faktor penguatan OUR_GAIN secara eksperimental, mengambil pembacaan dari ADC dan mengukur respons frekuensi.

Jadi, saya berhasil meningkatkan respons frekuensi tanpa beban tambahan pada pengontrol dan proyek saya memenuhi persyaratan teknis (di bidang medis persyaratan tersebut tidak terlalu lemah). Saya khawatir tingkat kebisingan akan meningkat secara signifikan, tetapi tingkat kebisingan meningkat dari 4-5 µV menjadi sekitar 6-8 µV, yang cocok untuk kami. Sebagai kesimpulan, saya dapat merekomendasikan program gratis lainnya untuk menghitung filter digital - WinFilter, Anda dapat mengunduhnya. Saya tidak tahu seberapa efisiennya, saya belum memeriksanya, tetapi dapat menampilkan kode dalam VHDL (dan tentu saja dalam C), yang tentunya akan berguna untuk FPGA. Ada juga program dari Texas Instruments untuk menghitung koefisien filter digital yang disebut TIBQ. Semua. Semoga berhasil merancang filter digital.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat