基于FPGA的生命探測儀算法研究與系統設計
從濾波器的傳遞函數可以知道,它是恒穩定的,不需要回饋。而且只要加權系數h(i)=h(N-1-i)其中,(0≤i≤N-1),FIR濾波器就具有線性相位。一般而言,常用的FIR濾波器是線性相位的,即濾波器的系數滿足某種對稱性。于是線性相位濾波器的輸出為:

這樣,只需要做N/2(當N為奇數時為(N+1)/2)次而不是N次乘法,就可以實現濾波器的功能,可以大大地節約硬件資源的消耗,還可以提高速度。
本文采用Matlab的窗函數方法設計并在FPGA上實現的方案。根據實際要求,可以分為有人靜止存在只有呼吸心跳和有人存在并且有體動兩種情況。經計算,分別為截止頻率0.5 Hz的低通濾波器獲取呼吸心跳信息和通帶頻率1~50 Hz的帶通濾波器獲取體動信息。我們選擇海明窗作為系數計算窗函數,低通濾波器階數N=412階,帶通濾波器階數N=168階。然后通過Matlab中的FIR函數確定各階系數,再由FPGA硬件實現FIR濾波器。由于目前的FPGA器件只能支持定點計算,從Matlab計算所得的系數^是浮點值,需要轉換成定點值,即進行系數量化。為了滿足精度要求,把所有系數乘以216后再四舍五入即可。
用MATLAB設計完成濾波器系數和結構在具體硬件實現之前先對它進行濾波的功能仿真。濾波器應能使通頻帶內的信號通過,對通頻帶外的信號給予極大地衰減,阻止其通過。這里輸入信號由MATLAB產生,頻率分量分別位于濾波器的通頻帶之內和之外。首先驗證截止頻率為0.5 Hz的400階低通濾波器,它的采樣頻率是250 Hz。MATLAB產生幅度為1,頻率分量分別為1 Hz、3 Hz和10 Hz的正弦信號,把它們相迭加并且加入5 dB高斯白噪聲。濾波器的時域波形和頻域波形如圖3所示。本文引用地址:http://www.104case.com/article/190438.htm
對于通頻帶為1~50 Hz的200階帶通濾波器,輸入幅度為1,頻率分量分別為30 Hz和60 Hz的帶噪正弦信號,其濾波器輸入輸出的時域與頻域波形如圖4所示。
由圖3和圖4可以看出,兩路濾波器的通頻帶外的信號都已經被濾除地很干凈,并且通頻帶外的噪聲也得到了極大地抑制。由于MATLAB濾波輸出是將輸入數據與濾波器系數直接卷積而得出的,濾波器的輸出相較于輸入有一定的延遲。兩路濾波器的設計都滿足系統性能要求規范。
評論