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