當(dāng)前位置:首頁(yè) > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]0 引言IIR數(shù)字濾波器在很多領(lǐng)域中都有著廣闊的應(yīng)用。與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得較高的選擇性,而且所用存儲(chǔ)單元少,經(jīng)濟(jì)效率高。一個(gè)N階IIR數(shù)字濾波器的系統(tǒng)函數(shù)為: 其線性常系數(shù)差分

0 引言

IIR數(shù)字濾波器在很多領(lǐng)域中都有著廣闊的應(yīng)用。與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得較高的選擇性,而且所用存儲(chǔ)單元少,經(jīng)濟(jì)效率高。一個(gè)N階IIR數(shù)字濾波器的系統(tǒng)函數(shù)為:

 

 

其線性常系數(shù)差分方程為:

 

 

FPGA實(shí)現(xiàn)濾波的基本思想就是基于式(2)來(lái)實(shí)現(xiàn)的。如果知道了系統(tǒng)的輸入序列(濾波器的輸入),那么,只要根據(jù)所給的濾波器的指標(biāo),然后通過(guò)MATLAB仿真出系數(shù)矢量b和a,再采用遞推算法求解差分方程,就能求出輸出序列(濾波器的輸出)。

1 濾波器的MATLAB設(shè)計(jì)

由于本文采用巴特沃斯濾波器,故需要在工具箱中調(diào)用的兩個(gè)函數(shù)buttord和butter的調(diào)用格式為:

 

 

其中N為濾波器階數(shù);wp和ws分別為通帶截止頻率矢量和阻帶截止頻率矢量,單位為π,一般需要模擬頻率指標(biāo)對(duì)采樣頻率的一半作歸一化;Rp和As分別為通帶最大衰減和阻帶最小衰減,單位dB;wc為3 dB邊緣頻率矢量;b和a即為方程(2)中的系數(shù)矢量。

獲得系數(shù)6和a之后,調(diào)用函數(shù)freqz(b,a,k,F(xiàn)s)即可按照下式計(jì)算k點(diǎn)的復(fù)頻率響應(yīng)矢量H:

 

 

然后便可繪出K點(diǎn)的幅頻和相頻特性曲線,以用于檢查計(jì)算出的系數(shù)是否滿足所需要的濾波器指標(biāo)。

2 編寫VHDL語(yǔ)言代碼注意事項(xiàng)

乘加運(yùn)算過(guò)程中的數(shù)據(jù)是有符號(hào)的二進(jìn)制補(bǔ)碼,通常在Xilinx ISE集成開(kāi)發(fā)環(huán)境下建立的VHDL源文件頭部都會(huì)有“use IEEE.STD_LOG-IC_UNSIGNED_ALL;”,如將其改為“use IEEE.STD_LOGIC_SIGNED.ALL;”即應(yīng)該包含有符號(hào)數(shù)運(yùn)算程序包,這樣就能保證代碼中的所有std_log-ic_vector型數(shù)據(jù)按照有符號(hào)二進(jìn)制補(bǔ)碼的規(guī)則進(jìn)行運(yùn)算。

由于FPGA內(nèi)部不能表示浮點(diǎn)數(shù),因此只能用有限精度方法來(lái)實(shí)現(xiàn)數(shù)據(jù)的運(yùn)算,即用數(shù)據(jù)(包括方程(2)的輸入輸出和系數(shù))的整數(shù)部分(截去小數(shù)部分)作近似運(yùn)算,且需要std_log-ic_vector數(shù)據(jù)類型來(lái)表示數(shù)據(jù)整數(shù)部分的二進(jìn)制補(bǔ)碼形式,但這樣會(huì)產(chǎn)生截?cái)嗾`差。為了減小截?cái)嗾`差,應(yīng)該將數(shù)據(jù)擴(kuò)大適當(dāng)?shù)谋稊?shù)(通常是2L倍,L為正整數(shù)),以使小數(shù)部分可以忽略不計(jì)。擴(kuò)大的倍數(shù)越大,截?cái)嗾`差就越小,得到的數(shù)據(jù)就越精確,但是,用來(lái)表示數(shù)據(jù)整數(shù)部分的std_logic_vector型數(shù)據(jù)長(zhǎng)度會(huì)越大,這樣就會(huì)占用越多的FPGA內(nèi)部資源,因此,適當(dāng)?shù)倪x擇數(shù)據(jù)擴(kuò)大倍數(shù)是個(gè)關(guān)鍵。此外,各種數(shù)據(jù)轉(zhuǎn)換為std_logic_vector型數(shù)據(jù)的長(zhǎng)度選取至少應(yīng)足以表示二進(jìn)制補(bǔ)碼(包括符號(hào)位)。若FPGA內(nèi)部資源充足,可以通過(guò)增加std_logic_vector型數(shù)據(jù)長(zhǎng)度來(lái)減小截?cái)嗾`差,提高運(yùn)算精度。

通常由MATLAB仿真得到的系數(shù)b都遠(yuǎn)小于1,因此要適當(dāng)選擇正整數(shù)L。運(yùn)算時(shí)可給系數(shù)b和a(a的第一個(gè)系數(shù)除外)同乘以2L,之后取整得到B=round(b*2L)和A=round(a*2L)

當(dāng)前時(shí)刻輸入的x(n)有時(shí)可能太小,為減小截?cái)嗾`差,應(yīng)該選擇適當(dāng)?shù)恼麛?shù)M,以給x(n)乘以2M,即給表示當(dāng)前時(shí)刻輸入的std_logic_vec-tor變量后補(bǔ)上M個(gè)‘0’。這樣,得到的當(dāng)前時(shí)刻輸出y (n)就是擴(kuò)大了2L+M倍的數(shù)據(jù),應(yīng)該除以2L+M才是當(dāng)前時(shí)刻的真實(shí)輸出。而VHDL語(yǔ)言不支持除法運(yùn)算,故應(yīng)采用截去末尾(L+M)位的方法來(lái)近似除法運(yùn)算,這種做法相當(dāng)于原始輸出y除以2L+M之后截去小數(shù)部分。

在用示波器觀測(cè)時(shí),濾波器的輸出波形可能帶有許多大幅度尖銳毛刺,從而嚴(yán)重影響了濾波器的性能。毛刺是由于組合電路的競(jìng)爭(zhēng)而使電路輸出發(fā)生瞬時(shí)錯(cuò)誤的現(xiàn)象,通常消除毛刺的方法是在具體的電路中加個(gè)鎖存器。本文采取另一優(yōu)化方法,即在源代碼中通過(guò)符號(hào)“<=”把輸出信號(hào)賦給一個(gè)中間信號(hào),再把中間信號(hào)作為輸出,這相當(dāng)于將信號(hào)作一個(gè)延時(shí)再輸出。這種方法不需要知道具體的電路結(jié)構(gòu),也元需編寫其它代碼模塊,因此優(yōu)化更為簡(jiǎn)便快捷,而且優(yōu)化效果非常好。

3 濾波器MATLAB設(shè)計(jì)的FPGA實(shí)現(xiàn)

下面以一個(gè)簡(jiǎn)單的低通濾波器設(shè)計(jì)實(shí)例來(lái)說(shuō)明從MATLAB設(shè)計(jì)到FPGA實(shí)現(xiàn)的整個(gè)過(guò)程。該低通濾波器的系統(tǒng)采樣頻率為40 MHz,通帶截止頻率為1 MHz,阻帶截止頻率為5 MHz,通帶內(nèi)最大衰減為3 dB,阻帶內(nèi)最小衰減為40 dB,而對(duì)相位不作要求。

而其硬件平臺(tái)上的主要器件有Xilinx公司的Spartan2E系列30萬(wàn)門FPGA芯片XC2S300E及PROM器件XC18V04,模數(shù)轉(zhuǎn)換芯片則采用AD公司的AD9218,數(shù)模轉(zhuǎn)換芯片選用AD公司的AD9765,另外,還有40 MHz晶振等。其系統(tǒng)框圖如圖1所示。

 

 

3.1 MATLAB設(shè)計(jì)

MATLAB設(shè)計(jì)的具體代碼如下:

 

 

這樣,在運(yùn)行之后,便可得到:

 

 

圖2是由系數(shù)B和A繪出的幅頻特性曲線。

 

 

下面是遞推算法的MATLAB描述:

 

 

若以輸入分別為0.5 MHz、3 MHz、6 MHz的正弦波來(lái)測(cè)試濾波器輸出,則可得出如圖3所示的仿真結(jié)果。可見(jiàn),該系數(shù)B和A可以滿足低通濾波器的技術(shù)指標(biāo)。

 

 

 

 

3.2 VHDL代碼頂層模塊

圖4是該MATLAB設(shè)計(jì)的頂層模塊“top_lev-el”的示意圖。圖中,Gclk為FPGA全局時(shí)鐘輸入(來(lái)自40MHz晶振),AD9218clk和AD9765clk是由Gclk直通送往AD9218和AD9765的驅(qū)動(dòng)時(shí)鐘;AD9218data_out(9:0)是來(lái)自AD9218的10位濾波器輸入信號(hào),設(shè)計(jì)時(shí)可與核心模塊“lpf”的輸人data_in(9:0)相連;AD9765data_in(9:0)是送往AD9765的10位濾波器輸出信號(hào),可與核心模塊“lpf”的輸出data_out(9:0)相連。

 

 

圖5給出了頂層模塊的FPGA資源占用情況,由圖5可見(jiàn),該系統(tǒng)的資源占用率非常少。

 

 

3.3 VHDL代碼核心模塊

圖6所示為用于信號(hào)處理的核心模塊“lpf”。

 

 

在核心模塊VHDL代碼編寫時(shí)應(yīng)當(dāng)注意語(yǔ)句“use IEEE.STD_LOGIC_SIGNED.ALL;”,并使用有符號(hào)數(shù)運(yùn)算程序包。另外,在將設(shè)計(jì)好的整數(shù)系數(shù)B和A轉(zhuǎn)換為二進(jìn)制補(bǔ)碼時(shí),為方便起見(jiàn),可使用程序包STD_LOGlC_SIGNED.vhd中的類型轉(zhuǎn)換運(yùn)算符CONV_STD_LOGIC_VECTOR()來(lái)接收整數(shù)和轉(zhuǎn)換后的長(zhǎng)度等兩個(gè)參數(shù),然后返回STD_LOGIC_VECTOR型。

本系統(tǒng)的代碼結(jié)構(gòu)體architecture采用行為描述方式,它類似于高級(jí)語(yǔ)言,其優(yōu)點(diǎn)在于只需描述清楚輸入與輸出的行為,而無(wú)需花費(fèi)更多的時(shí)間和精力關(guān)注設(shè)計(jì)功能的門級(jí)實(shí)現(xiàn),因?yàn)檫@些完全可以由EDA工具綜合生成,因而可大大縮短開(kāi)發(fā)設(shè)計(jì)的時(shí)間。

核心模塊“lpf”的VHDL語(yǔ)言源代碼如下:

librarv IEEE;

 

 

 

 

在modelsim上對(duì)本核心模塊進(jìn)行仿真及代碼優(yōu)化時(shí),其測(cè)試激勵(lì)仍然可以分別選用0.5 MHz、3 MHz和6 MHz的正弦波。產(chǎn)生的方法有兩種:一是采用ISE中集成的測(cè)試激勵(lì)生成器HDL Bencher新建Test bench waveform型文件,并從中輸入一周期正弦數(shù)據(jù);二是將正弦數(shù)據(jù)存為文本文件,然后以TEXTIO方式讀取。限于篇幅,具體操作這里不作介紹。

這種行為仿真(Simulate Behavioral Model)的波形與圖3相同,可見(jiàn),本模塊源代碼在功能上完全正確。但時(shí)序仿真(布局布線后仿真SimulatePost-Place&Route VHDL Model)的濾波器輸出波形中的大幅度尖銳毛刺嚴(yán)重影響了濾波器的性能。消除毛刺的具體做法是將進(jìn)程中的最后一條信號(hào)賦值語(yǔ)句改為:

 

 

經(jīng)過(guò)上述賦值語(yǔ)句的修改,再經(jīng)優(yōu)化之后進(jìn)行時(shí)序仿真以及后面的硬件驗(yàn)證,就會(huì)發(fā)現(xiàn),濾波器輸出中的毛刺全部被消除,波形平滑,可見(jiàn)優(yōu)化效果非常好。

3.4 硬件平臺(tái)的驗(yàn)證

將該設(shè)計(jì)方案在硬件平臺(tái)上進(jìn)行驗(yàn)證時(shí),先給硬件平臺(tái)加電,再將程序通過(guò)JTAG線下載到PROM中,然后給AD9218數(shù)據(jù)輸入端加正弦波信號(hào),示波器CH1和CH2探針?lè)謩e搭在AD9218數(shù)據(jù)輸入端和AD9765數(shù)據(jù)輸出端。這樣。當(dāng)信號(hào)在0.7 MHz頻率以下變化時(shí),兩個(gè)通道的正弦波形相同,只有相位上有一點(diǎn)差別;當(dāng)信號(hào)從0.7~1MHz頻率范圍變化時(shí)。通道CH2波形幅度有微弱減小;當(dāng)信號(hào)從1~5 MHz頻率范圍變化時(shí),通道CH2波形迅速衰減為一條水平線。當(dāng)CH1端分別加0.5 MHz、3 MHz和6 MHz的正弦波時(shí),兩通道顯示的波形相同。

4 一般IIR數(shù)字濾波器的快捷實(shí)現(xiàn)

現(xiàn)在總結(jié)一下一般IIR數(shù)字濾波器的設(shè)計(jì)及實(shí)現(xiàn)方案。

(1) 仿真系數(shù)

根據(jù)所定技術(shù)指標(biāo)通過(guò)MATLAB計(jì)算出原始系數(shù)矢量b和a,然后選擇適當(dāng)?shù)臄U(kuò)大倍數(shù),并將系數(shù)擴(kuò)大后取整得到B和A,再根據(jù)B和A仿真差分方程遞推算法(注意函數(shù)floor()用來(lái)仿真VHDL代碼中std_logic_vector型數(shù)據(jù)截去末尾幾位,以仿真除法運(yùn)算)以及頻域和時(shí)域波形最終確定系數(shù)B和A (當(dāng)前時(shí)刻輸出所對(duì)應(yīng)的系數(shù)A(1)=1)。

(2) 寫VHDL代碼

除了當(dāng)前時(shí)刻所輸出的所對(duì)應(yīng)系數(shù)A(1)外,還應(yīng)當(dāng)將所有系數(shù)都轉(zhuǎn)換為std_logic_vector型常量,同時(shí),還要使初始化程序中所有時(shí)刻的輸入輸出變量都為0,然后再在進(jìn)程process中寫遞推算法代碼。

(3) Modelsim仿真

用行為級(jí)仿真可檢查所寫代碼在功能上是否正確,時(shí)序仿真則用于觀察布局布線后濾波器的輸出波形。

(4) 驗(yàn)證

將程序下載到硬件平臺(tái)上作最終驗(yàn)證時(shí),濾波器的輸出不一定都有毛刺,但若輸出有毛刺,則應(yīng)將代碼中最后的數(shù)據(jù)輸出信號(hào)賦值給一中間信號(hào)再輸出。

5 結(jié)束語(yǔ)

本文以低通濾波器為例,描述了IIR數(shù)字濾波器從MATLAB設(shè)計(jì)到FPGA實(shí)現(xiàn)的整個(gè)過(guò)程,討論了設(shè)計(jì)中遇到的一些關(guān)鍵性問(wèn)題,并在MAT-LAB及modelsim上作了不同層次的仿真,同時(shí)在硬件平臺(tái)上最終驗(yàn)證了濾波器設(shè)計(jì)的技術(shù)指標(biāo)。

基于行為描述方式的遞推算法雖然不是最節(jié)省FPGA內(nèi)部資源的算法,但其優(yōu)點(diǎn)是算法簡(jiǎn)單清晰,代碼簡(jiǎn)短,可大大節(jié)省濾波器設(shè)計(jì)時(shí)間,如果熟練的話,通常十幾分鐘就可以完成一個(gè)滿足性能指標(biāo)的濾波器的設(shè)計(jì);此外本設(shè)計(jì)還有一個(gè)特點(diǎn),就是該算法僅在一個(gè)時(shí)鐘周期內(nèi)就可以做完一次對(duì)輸人數(shù)據(jù)的濾波處理,并得到一個(gè)輸出。所以,這種濾波算法對(duì)那些高頻高采樣率的輸入信號(hào)非常有效。

目前,用這一方法設(shè)計(jì)的帶通濾波器已經(jīng)在LuolanC遠(yuǎn)程無(wú)線導(dǎo)航接收機(jī)的前端數(shù)字信號(hào)處理單元中用于濾除帶外噪聲,其設(shè)計(jì)的低通濾波器也在其它一些導(dǎo)航系統(tǒng)中用于信號(hào)解調(diào)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉