基於FPGA+MATLAB的串行多階FIR濾波器設計

2021-01-10 電子產品世界

摘要 FIR濾波器的設計分為濾波器係數計算和濾波器結構的具體兩個部分。為說明使用FPGA實現FIR的靈活性,文中列舉了一個多階串行FIR濾波器實例,並給出主要的原始碼和相關模塊的時序和功能說明,最後使用Matlab和Quartusii聯合仿真驗證了FPGA硬濾波器工程的正確性。

本文引用地址:http://www.eepw.com.cn/article/236081.htm

關鍵詞 FPGA;FIR數字濾波器;Matlab;仿真

數字濾波器是用於過濾時間離散信號的數字系統,通過對抽樣數據進行數學處理達到頻域濾波的目的。根據單位衝激響應函數的時域特性可分為兩類:無限衝激響應(Infinite Impulse Response,IIR)濾波器和有限衝激響應(Finite Inpulse Response,FIR)濾波器。與IIR濾波器相比,FIR濾波器的實現是非遞歸的,較穩定;且FIR濾波器可獲得嚴格的線性相位特性。因此,應用領域較廣。

FIR濾波器具有成熟的結構,使用Matlab強大的功能使得本來繁重的計算工作變得輕鬆。在具體應用時,要根據工程當中信號的特點:採樣速率、信號帶寬等具體使用Matlab得到FIR濾波器係數。濾波器的結構實現可以使用PC軟體、單片機、微處理器、FPGA、通用DSP晶片。其需根據信號特性選擇。文中主要使用FPGA實現高速時鐘下的串行FIR濾波器結構,達到速度和邏輯資源情況下的最佳均衡。

1 FIR的特點

有限長單位衝激響應(FIR)濾波器的特點:(1)系統的單位衝激響應h(n)在有限個n值處不為零。(2)系統函數H(z)在|z|>0處收斂,極點全部在z=0處。(3)結構上主要是非遞歸結構,沒有輸出到輸入的反饋,但有些結構中也包含有反饋的遞歸部分。

設FIR濾波器的單位衝激響應h(n)為一個N點序列,0≤n≤N-1,則濾波器的系統函數為

 

 

即有N-1階極點在z=0處,有N-1個零點位於有限z平面的任何位置。

2 使用MatIab Fdatool設計FIR濾波器

FDATool(Fliter Design & Analysis Tool)是Matlab信號處理工具箱專用的濾波器設計分析工具,操作簡單、靈活,可採用多種方法設計FIR和IIR濾波器。在Matlab命令窗口輸入FDATool後回車就會彈出FDATool界面。

帶通濾波器設計已知濾波器的階數n=1 024,beta=3.4。首先在Fiher Ttype中選擇Bandpass;在Design Method選項中選擇FIRWindow,接著在Window選項中選取Blackman—Harris;指定Filter Order項中的Specify Order為1 024;採樣頻率Fs=8 000 Hz,截止頻率Fc1=900 Hz,Fc2=1 200 Hz。設置完以後點擊窗口下方的Design Filter,在窗口上方就會看到所設計濾波器的幅頻響應,通過菜單選項Analysis還可看到濾波器的相頻響應、組延遲、脈衝響應、階躍響應、零極點配置等,如圖1所示。

 

 

這樣選擇File菜單當中的Export導出濾波器係數到文件中。因為得到係數是浮點數,為適合在FPGA中使用,要編寫一個M文件對係數進行整型量化處理並在此文件當中生成FPGA能夠使用的.mif表格文件。

3 FPGA設計和仿真驗證

當已知濾波器係數,信號速率為8 kHz,周期125μs。根據FIR濾波器的結構可知,只要在125μs之內完成1 024次乘加運算,那麼就可達到對8 kHz速率的語音信號的有效濾波。文中使用QuartusII9.1開發平臺,FPGA晶片選用EP3C5E144C8,主時鐘25 MHz,周期40 ns進行1 024次運算,耗時40.96 μs<<125μs。

首先新建在QuartusII中新建一個工程FIR1024,然後使用原理圖和VHDL混合的方式設計出以下FPGA程序。把fircoef.mif表格文件代入到係數ROM存儲器中。

輸入管腳:CLK主時鐘25 MHz;DIN[15..0]語音數據輸入;AFCLK數據速率時鐘8 kHz;信號數據1 024點緩存RAM和濾波器係數ROM。

 

 

 

 

 

濾波器相關文章:濾波器原理

fpga相關文章:fpga是什麼

濾波器相關文章:濾波器原理

電源濾波器相關文章:電源濾波器原理

數字濾波器相關文章:數字濾波器原理

相關焦點

  • 一種改進型的FIR數字濾波器設計
    本文引用地址:http://www.eepw.com.cn/article/20805.htm 針對這一問題,出現了系統級設計方法的構想將matlab算法仿真和dsp的實現融合在一起。文中應用matlab link for ccs development tools進行系統級設計,來完成fir濾波器的設計。
  • 基於FPGA高階FIR濾波器的實現
    並利用FPGA仿真軟體分別時64階FIR帶通濾波器的兩種改進型DA結構進行仿真,結果表明改進型DA結構所消耗的資源大幅度降低。從而驗證了改進型DA結構在降低運算資源和提高性能等方面的優越性。用DSP實現濾波器,其程序順序執行,因此運算速度隨濾波器階數的增加迅速下降;專用晶片實現的濾波器功能相對單一,靈活性小;而FPGA具有靈活的可編程邏輯和並行處理等優點,可很好地實現信號處理的實時性,同時,開發程序的可移植性好,可以縮短開發周期,因此FPGA實現數字濾波器的設計越來越受到重視和廣泛應用,本文數字濾波器的設計就是基於FPGA硬體實現。
  • 基於FPGA的高效FIR濾波器設計與實現
    摘要: 給出了一種基於FPGA的數字濾波器的設計方法。該方法先通過MATLAB設計出一個具有具體指標的FIR濾波器, 再對濾波器係數進行處理, 使之便於在FPGA中實現, 然後採用基於分布式算法和CSD編碼的濾波器結構進行設計, 從而避免了乘法運算, 節約了硬體資源,其流水線的設計方式也提高了運行速度。Matlab和Modelsim仿真表明, 該設計功能正確, 能實現快速濾波。
  • 基於Matlab的FIR數字濾波器設計方案
    本文先介紹FIR數字濾波器的相關概念,並利用MATLAB中的FDA TOOL工具箱和Simulink工具進行FIR帶通數字濾波器的設計,給出了基於Matlab的FIR數字濾波器設計方案。
  • Matlab輔助DSP設計FIR數字濾波器
    3 Matlab輔助DSP實現FIR過程  Matlab輔助DSP實現FIR,其總體過程為在DSP中編寫處理程序;在Matlab中利用濾波器設計、分析工具(FDATool),根據指定的濾波器性能快速設計一個FIR,然後把濾波器係數以頭文件形式導人CCS中,頭文件中含濾波器階數和係數數組,在Matlab中調試、運行DSP程序並顯示、分析處理後的數據。
  • 基於MATLAB的數字基帶傳輸的 FIR濾波器的設計
    為了解決理想低通特性存在的問題,可採用升餘弦滾降特性的系統,以使理想低通濾波器的邊緣緩慢下降,並使振幅特性在滾降段中心頻率處呈奇對稱,從而保證滿足奈奎斯特第一準則。這種系統可減小碼間串擾和位定時誤差。 由於FIR數字濾波器可實現對升餘弦滾降特性的近似,故本文經過FIR數字濾波器設計來對各種窗函數進行選擇,並通過窗函數法實現對升餘弦特性低通濾波器的設計,同時用MATIAB來仿真實現。
  • MATLAB常用的FIR濾波器設計方法之窗函數法
    FIR濾波器很多工科出身的人都不會陌生,在我們的學習和工作中,也常常需要設計FIR濾波器。因為FIR濾波器有兩個特點:濾波器是穩定的以及具有線性相位。FIR濾波器在信號處理相關領域當然也包括本人所在的雷達信號處理領域有著廣泛的應用。本文主要介紹MATLAB最常用的FIR濾波器設計方法之窗函數法。其他的方法將在另一章中介紹。
  • FPGA實現32階FIR數字濾波器的硬體電路方案
    傳統的FIR濾波器一般採用通用DSP處理器,但是DSP處理器採用的是串行運算,而FPGA是現場可編程陣列,可以實現專用集成電路,另外還可以採用純並行結構及考慮流水線結構,因此在處理速度上可以明顯高於DSP處理器。本文採用並行分布式算法在FPGA上設計並實現了高速處理的32階FIR低通濾波器,在此過程中利用Matlab的數值計算與分析功能來提高設計效率。
  • 基於Matlab的FIR數字濾波器設計
    摘要:提出FIR敷字濾波器的設計方案,並基於Matlab實現濾波仿真。通過使用Matlab信號處理工具箱提供的函數,選擇適當的窗函數編寫程序,其中窗函數按照實際信號的處理需求,參數折中選擇。實驗獲得了比較理想的濾波器特性,可以實現較好的濾波作用。
  • 基於FPGA和IP核的FIR低通濾波器的設計與實現
    打開APP 基於FPGA和IP核的FIR低通濾波器的設計與實現 秩名 發表於 2012-12-03 11:50:23   FIR
  • 基於FPGA的實時中值濾波器硬體實現
    文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。文獻[3]、[4]提出了鄰域圖像幀存的存儲結構,該結構充分利用了圖像幀存的數據結構轉換特性,並行高速提供鄰域圖像數據,配以FPGA作為並行處理器,高速實時地實現了中值濾波。但是以上研究都是基於標清圖像的中值濾波器,處理的圖像大小一般為256×256、512×512的灰度圖等,很少有實現高清圖像的中值濾波器。
  • 基於FDATool的FIR濾波器設計方法(一)
    圖1  設計FIR濾波器的方法有多種,其中Matlab軟體提供了很多關於濾波器設計的工具箱,FDATool就是一個很好的工具,如圖2所示就是FDATool的界面,可以在Matlab的Command窗口中直接輸入
  • 基於MATLAB的理想低通濾波器的設計
    打開APP 基於MATLAB的理想低通濾波器的設計 發表於 2018-01-26 13:34:52 對於不同濾波器而言,每個頻率的信號的強弱程度不同
  • 用matlab設計的IIR濾波器源程序-IIR一階低通/高通
    用matlab設計的IIR濾波器源程序(1)IIR一階低通濾波器 P576clear;fi=1;fs=10;Gc2=0.9;wc=2*pi*fi/fs; omegac=tan(wc/2);alpha=(sqrt
  • 什麼是fir數字濾波器 什麼叫FIR濾波器
    IIR濾波器使用反饋,因此當信號輸入後,輸出是根據算法循環的.1.6 FIR濾波器與IIR濾波器比較?每一種都有優缺點.但總得來說, FIR濾波器的優點遠大於缺點,因此在實際運用中,FIR濾波器比IIR濾波器使用的比較多.1.6.1 相對於IIR濾波器, FIR濾波器有什麼優點?
  • 基於FPGA的巴特沃茲IIR數字帶通濾波器設計
    其中IIR數字濾波器和FIR數字濾波器是目前人們使用較多的兩種。數字濾波器通常採用計算機軟體、專用數字濾波器、DSP器件或可編程邏輯器件(如FPGA) 實現。因為,用FPGA實現數字濾波器具有實時性強、靈活性高、處理速度快以及小批量生產成本低等優點,所以得到了較為廣泛的應用。本文以巴特沃思數字帶通濾波器為例,較為詳細地介紹了其設計和實現方法。
  • 一種基於FPGA實現SRRC濾波及多速率變換模塊的方法介紹
    本文基於FPGA設計一種多速率變換器提高信號的採樣率,實現任意倍數的符號率變換(本文主要實現了上採樣變換,下採樣實現方法相同)。採用SRRC濾波與半帶(Half-band,HB)濾波器、級聯積分梳狀(Cascade Integrator Comb,CIC)濾波器、Farrow濾波級聯進行上採樣,實現平方根升餘弦濾波及信號任意倍數的上變頻處理。
  • matlab中的成型濾波器設計
    matlab 中成型濾波器設計有好幾個函數:rcosineFd=9600;Fs=38.4e3;[num,den] = rcosine(Fd,Fs,'sqrt',0.25);freqz(num);其中的Fd表示輸入數據的採樣率
  • FIR與IIR濾波器的區別與特點比較
    圖2 IIR濾波器機構的表示方法 在matlab下設計IIR濾波器可使用buttterworth函數設計出巴特沃斯濾波器,使用cheby1函數設計出契比雪夫i型濾波器,使用cheby2設計出契比雪夫II型濾波器
  • 基於Matlab的FIR型希爾伯特變換器設計
    為了實現數字解調,通常需要藉助希爾伯特變換器對信號進行分解,利用Matlab設計希爾伯特變換器是一種最為快捷、有效的方法。通過具體的設計、仿真及對原始信號和經過希爾伯特變換器輸出延遲信號的比較,說明Matlab是一個在濾波器設計方面很有力的工具。