小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

FIR濾波器的MATLAB與FPGA的設計實現(xiàn)...

 呂志勇bozrp5jh 2022-06-05 發(fā)布于北京

引言

數(shù)字濾波器是數(shù)字信號系統(tǒng)里面最常用、最重要、最基本的元件之一。有限脈沖響應(Finite Impulse Response,FIR)濾波器可以設計成任意幅頻特性,同時保證精確,嚴格的線性相位特性。因此在電子通信、圖像處理、模式識別等領域,F(xiàn)IR數(shù)字濾波器被廣泛應用。本文主要通過以低通濾波器的MATLAB與FPGA的設計實現(xiàn)來介紹FIR濾波器的原理介紹,架構研究,設計實現(xiàn)等。

原理介紹

FIR濾波器的方程表達式為: y(n)=∑x(k)h(n-k) k=0,1…N-1;0≦n≦N-1;
其方程分解式為:y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+…+h(k)x(n-k);
根據(jù)FIR濾波器的幅頻特性可知,F(xiàn)IR濾波器為奇對稱和偶對稱兩種形式。
例如當濾波器階數(shù)為偶數(shù)n=3時,根據(jù)線性相位跟對稱法則可得:h(0)=h(3),h(1)=h(2);
可得到方程式為:y(n)=h(0){x(n-1)+x(0)}+h(1){x(n-2)+x(1)};
當濾波器階數(shù)為奇數(shù)n=4時,根據(jù)線性相位跟對稱法則可得:h(0)=h(4),h(1)=h(3),h(2)獨立一個;
可得到方程式為:y(n)=h(0){x(n-1)+x(0)}+h(1){x(n-2)+x(n-3)}+h(2)x(n-2);
故其系統(tǒng)函數(shù)為
在這里插入圖片描述
從其系統(tǒng)函數(shù)可以看得出FIR系統(tǒng)是線性時不變系統(tǒng),只在原點上存在極點,這使得FIR系統(tǒng)具有全局穩(wěn)定性。從FIR系統(tǒng)函數(shù)也可以看得出FIR濾波器其實是由一個抽頭延遲線加法器和乘法器的集合構成的。每個乘法器的操作系數(shù)為FIR濾波器系數(shù)。因此這種抽頭延遲線結構的架構實現(xiàn)圖可如下所示:
在這里插入圖片描述

MATLAB設計實現(xiàn)

在matlab里面設計數(shù)字濾波器既可以通過窗函數(shù)自己編寫程序來設計FIR濾波器,也可以通過調(diào)用工具箱來設計FIR濾波器。通過編寫程序來設計FIR濾波器比較普遍,濾波器的參數(shù)等改動也比較方便,與FPGA做聯(lián)合功能仿真驗證也方便。而直接調(diào)用工具箱就直接了當,較節(jié)省設計時間。本文將對兩種方法進行介紹,不過本文設計采用的是凱塞窗函數(shù)來設計FIR濾波器。

窗函數(shù)設計法

利用窗函數(shù)法來設計FIR濾波器是設計FIR濾波器最簡單,最普遍的方法,在MATLAB里面窗函數(shù)有海明(Hamming)窗,漢寧(Hanning)窗,凱塞(Kaiser)窗等,本文設計采用的是凱塞窗函數(shù)來設計FIR濾波器。通過最優(yōu)算法來計算出過渡帶,紋波等參數(shù)供給凱塞窗來計數(shù)出β值,以及濾波器的階數(shù)。
凱塞窗函數(shù)的語法形式為:[n,wn,beta,ftype]=kaiserord(fc,mag,dev,fs)
其中各參數(shù)的意義介紹如下所述:
(1)fc及fs:fc是指過渡帶的起始點和終點,fs指的是采樣評率;
(2)mag:f指定了過渡帶,向量a用于指定這些頻率段的理想幅度值,例如a=[1 0]可以代指低通濾波為1,高頻截止為0;
(3)dev:用于指定通帶或阻帶內(nèi)的容許誤差;
(4)n,wn:n是返回凱塞窗函數(shù)滿足設計的最小階數(shù),wn是返回濾波器的截止頻率點;
(5)beta:為凱塞窗函數(shù)計算得到的β值。
(6)ftype:返回設計濾波器的類型,low,hige等;
通過凱塞窗函數(shù)最終可以得到濾波器的最佳設計階數(shù)n為多少,然后根據(jù)n來設計FIR濾波器,本文采用的是最優(yōu)濾波器設計法,利用firpm函數(shù)根據(jù)最大誤差最小準則來設計濾波器。
最優(yōu)濾波器firpm函數(shù)的語法形式為:b_firpm = firpm(n,fpm,magpm)
其中各參數(shù)的意義介紹如下所述:
(1)n:為濾波器的設計階數(shù);
(2)fpm,magpm:指定濾波器的設計頻率段對應的幅度值magpm;
(3)b_firpm:返回設計濾波器的系數(shù)h(n)。
到此為止設計FIR濾波器的matlab設計實現(xiàn)如下圖所示,本文設計的是一個低通濾波器。
在這里插入圖片描述
現(xiàn)在濾波器的系數(shù)b_firpm是可以求出來,但是注意是小數(shù),在FPGA中實現(xiàn)還是比較麻煩還占用大量資源,所以在這里還進行了量化處理,對matlab數(shù)字濾波器的b_firpm進行14bit的量化處理(我在做量化的時候做了10,12,14bit的設計,發(fā)現(xiàn)14bit的濾波器效果最好)。
在這里插入圖片描述
運行函數(shù)會發(fā)現(xiàn)生成了28階的FIR濾波器系數(shù)如下所示,當n=27,濾波器階數(shù)為28的時候,發(fā)現(xiàn)濾波器系數(shù)為對稱相等的h(14)=h(15)=8191;
可驗證到與前面的原理介紹是一致的。這樣子后面在FPGA設計濾波器的時候可以用線性相位結構來設計。
在這里插入圖片描述
運行函數(shù),設計的低通濾波器性能如下圖所示:
在這里插入圖片描述
接下來生成高斯白噪聲通過MATLAB設計的低通濾波器,來驗證我們設計的低通濾波器性能如何,同時將生成的高斯白噪聲生成數(shù)據(jù)文件txt供給后面的FPGA設計的低通濾波器做modelsim的功能仿真測試。生成白噪聲的程序如下圖所示,q_noise為高斯白噪聲,filter_noise為濾波后噪聲。
在這里插入圖片描述
將生成的高斯白噪聲生成數(shù)據(jù)文件txt供給后面的FPGA設計的低通濾波器做modelsim的功能仿真測試。
在這里插入圖片描述
調(diào)用自己MATLAB設計的低通濾波器對高斯白噪聲進行濾波,程序設計如下圖所示:
在這里插入圖片描述
運行程序看設計的低通濾波器的性能如何,如下圖所示,matlab設計的低通濾波器很完美的把高頻率的數(shù)據(jù)進行截止濾波掉。在低頻率的時候保持原高斯白噪聲的輸出狀態(tài)。
在這里插入圖片描述

tool工具箱設計法

在matlab的應用程序里面有一個filter design & analysis tool點進去即為快速設計濾波器的工具。操作界面如下圖所示,較為簡單不做詳細介紹。
在這里插入圖片描述
點analysis里面的filter coefficient即可出現(xiàn)設計濾波器的FIR濾波器系數(shù),通過file-export可以把濾波器系數(shù)導出到workplace。
在這里插入圖片描述

FPGA設計實現(xiàn)

在前面的原理介紹中可以得知,根據(jù)階數(shù)的系數(shù)為對稱相等的,于是抽頭延遲線結構可以升級為線性相位優(yōu)化結構來設計,具體我的架構設計圖如下所示:
在這里插入圖片描述
從上面的架構設計圖可以看得出,F(xiàn)IR的設計大概可以分為三步分,數(shù)據(jù)流的移位延遲模塊,系數(shù)和乘法器模塊,累加和模塊三大部分。
整體的端口設計介紹如下圖所示:
在這里插入圖片描述

數(shù)據(jù)流的移位延遲模塊

data_mem為28個14位寬的寄存器,進行數(shù)據(jù)流的采集跟移位保存。其設計如下圖所示:
在這里插入圖片描述

累加和的設計模塊

這里的數(shù)據(jù)流有符號正負,所以在運算時為了不溢出,擴展一位,并用signed聲明進行有符號的運算設計。
在這里插入圖片描述

系數(shù)乘法器的設計模塊

乘法器的設計端口介紹如下圖所示:
在這里插入圖片描述
乘法器的設計原理介紹如下圖所示,具體的乘法設計可參考之前的博客章文:基于FPGA的乘法器原理介紹及設計實現(xiàn),具體博文鏈接為:
https://blog.csdn.net/weixin_39015789/article/details/101430566
在這里插入圖片描述
最后再將所有的乘積和進行累加便是對數(shù)據(jù)流進行低通濾波后的結果了。

MATLAB與FPGA的連仿驗證

到現(xiàn)在為止,低通濾波器的FPGA設計實現(xiàn)也已經(jīng)完畢了,接下來就是在modelsim里面讀取matlab產(chǎn)生的高斯白噪聲數(shù)據(jù)流,供給FPGA設計的FIR濾波器進行濾波計算,看兩者的結果是否一模一樣。
FPGA的textbench設計驗證開始

讀取高斯白噪聲數(shù)據(jù)流

從外部txt文件(noise_in.txt)讀入matlab產(chǎn)生的高斯白噪聲數(shù)據(jù)流作為測試激勵輸入數(shù)據(jù)流。具體的設計如下所示:
在這里插入圖片描述

將FPGA濾波后的數(shù)據(jù)流讀取到文件

將FPGA濾波后的數(shù)據(jù)流保存讀取到文件,然后提供給matlab進行傅里葉變換,看FPGA設計的低通濾波器性能是如何的。
在這里插入圖片描述

MATLAB與FPGA的連仿

讀取FPGA濾波后的數(shù)據(jù),進行傅里葉變換,求高斯白噪聲及濾波后信號的幅頻響應,對比濾波前后的信號,查看濾波器的性能如何。
在這里插入圖片描述
通過MATLAB將FPGA的濾波數(shù)據(jù)進行傅里葉變換的頻譜濾波效果圖如下所示,可以看到FPGA設計的低通濾波器在低頻域的時候完美將高斯白噪聲進行輸出,在高頻率的時候,對高斯白噪聲進行濾波處理。效果性能與前面MATLAB設計的濾波器效果性能很是一致,濾波器的效果性能都很好。
在這里插入圖片描述
在這里插入圖片描述

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多