當前位置:首頁 > 公眾號精選 > FPGA技術江湖

本次設計實現8階濾波器,9個系數,由于系數的對稱性,h(0)=h(8),h1(1)=h(7),h(2)=h(6),h(3)=h(5),h(4)為中間單獨一個系數。根據公式:


實現框圖:


推導出當系數N為偶數時,例如N=4:y(n)=h(0)*{x(0)+x(n-3)}+h(1)*{x(n-1)+x(n-2)}
當系數N為奇數時,例如N=5:
y(n)=h(0)*{x(0)+x(n-1)}+h(1)*{x(n-1)+x(n-3)}+h(2)*x(n-2)

1、用matlab生成和量化濾波器系數


設置參數后,點擊“Design Filter”按鈕,“file”—“export”,把濾波器系數導出到workspace,如下圖:

執(zhí)行命令:Num=Num’ ,把濾波器系數拷貝到文件COFFICIENT.dat中。
量化系數:在matlab中運行quantization.m

2、說明
用matlab程序sin_1MHz_gen.m生成正弦波波形表,改變變量f0 = 1.5e6可以生成不同頻率的波形。把第一個周期的波形數據存入signal_1m.dat文件中,存入的數據個數為Fs/Fo的最小正整數之比的分子,比如Fs=25MHz,Fo=0.3MHz,Fs/Fo=250/3(Fs=25/24MHz),則存入文件signal_1m.dat的波形數據個數為開頭的250個數據。相應的signal_gen0.v中的語句if(i0<50)相應的改為if(i0<250)。仿真時signal_1m.dat放在仿真目錄下

3、濾波器的multisim仿真
運行matlab,用sin_1MHz_gen.m產生5MHz(f0 =5e6)正弦波信號,Fs/Fo=5,把數據hex_sin_data的前5個數據存入signal_1m.dat文件,相應的signal_gen0.v中的語句if(i0<50)相應的改為if(i0<5)。
仿真的波形如下圖(fir濾波器的輸入輸出信號):


運行matlab,用sin_1MHz_gen.m產生1MHz(f0 =1e6)正弦波信號,Fs/Fo=25,把數據hex_sin_data的前5個數據存入signal_1m.dat文件,相應的signal_gen0.v中的語句if(i0<5)相應的改為if(i0<25)。
仿真的波形如下圖(fir濾波器的輸入輸出信號):

由此可見FIR對帶外信號起到衰減的作用。

部分代碼:



本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
關閉