一、功能描述 FIR濾波器,即有限脈沖響應(yīng)濾波器,顧名思義,是指單位脈沖響應(yīng)的長度是有限的濾波器。而根據(jù)FIR濾波器的結(jié)構(gòu)形式,分為直接型、級聯(lián)型、頻率取樣型和快速卷積型。其中直接型又可以采用串行結(jié)構(gòu)、并行結(jié)構(gòu)、分布式結(jié)構(gòu)。本案例實現(xiàn)了具有線性相位的半串行結(jié)構(gòu)的FIR濾波器。 所謂串行結(jié)構(gòu),即串行實現(xiàn)濾波器的累加運算,將每級延時單元與相應(yīng)系數(shù)的乘積結(jié)果進(jìn)行累加后輸出,因此整個濾波器實際上只需要一個乘法器運算單元。串行結(jié)構(gòu)還可以分為全串行和半串行結(jié)構(gòu),全串行結(jié)構(gòu)是指進(jìn)行對稱系數(shù)的加法運算也由一個加法器串行實現(xiàn),半串行結(jié)構(gòu)則指用多個加法器同時實現(xiàn)對稱系數(shù)的加法運算。 本案例設(shè)計了一個15階的低通線性相位FIR濾波器,采用布萊克曼窗函數(shù)設(shè)計,截止頻率為500HZ,采樣頻率為2000HZ;實現(xiàn)全串行結(jié)構(gòu)的濾波器,系數(shù)的量化位數(shù)為12比特,輸入數(shù)據(jù)位寬為12比特,輸出數(shù)據(jù)位寬為29比特,系統(tǒng)時鐘為16kHZ。采用具有白噪聲特性的輸入信號,以及由200HZ及800HZ單點頻信號疊加的輸入信號。 濾波器系數(shù):12'd0,-12'd3,12'd15,12'd46,-12'd117,-12'd263,12'd590,12'd2047 二、平臺效果圖 1.modelsim仿真效果圖 2.MATLAB效果圖 三、實現(xiàn)過程 首先根據(jù)所需要的功能,列出工程頂層的輸入輸出信號列表。
我們可以把工程劃分成三個模塊,分別是FIR濾波器模塊和加法器模塊和乘法器模塊。 1.FIR濾波器模塊 具有線性相位的半串行FIR濾波器結(jié)構(gòu)圖: 在時鐘允許信號的控制下,將數(shù)據(jù)以1/8系統(tǒng)時鐘頻率存入16個移位寄存器中,然后將對稱系數(shù)的輸入數(shù)據(jù)相加,比如X(0)*X(N),X(1)*X(N-1),X(2)*X(N-2),同時將對應(yīng)的濾波器系數(shù)送入乘法器中得到結(jié)果mult_s,再對此乘法結(jié)果進(jìn)行累加sum <= sum + mult_s,并輸出濾波后的數(shù)據(jù)。
以此本模塊實現(xiàn)了具有線性相位的半串行FIR濾波器功能。 本模塊信號列表如下:
2.加法器模塊 調(diào)用了Quartus II 里的加法器IP核,以實現(xiàn)FIR濾波器中的加法器模塊。 信號列表如下:
3.乘法器模塊 調(diào)用了Quartus II 里的乘法器IP核,以實現(xiàn)FIR濾波器中的乘法器模塊。 信號列表如下:
四、MATLAB部分說明 使用MATLAB設(shè)計出濾波器系數(shù),仿真出濾波器測試數(shù)據(jù)、測試數(shù)據(jù)經(jīng)濾波器濾波后的輸出數(shù)據(jù)并轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)寫入文本文件中供Modelsim進(jìn)行仿真。 編寫MATLAB程序,從Modelsim仿真后生成的文本文件中讀取濾波器輸出數(shù)據(jù),對數(shù)據(jù)進(jìn)行時域及頻域分析,程序運行結(jié)果見平臺效果圖。 |