《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于XC2V1000型FPGA的FIR抽取濾波器的設(shè)計(jì)
基于XC2V1000型FPGA的FIR抽取濾波器的設(shè)計(jì)
摘要: 現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)有著規(guī)整的內(nèi)部邏輯陣列和豐富的連線(xiàn)資源,特別適用于數(shù)字信號(hào)處理,,但長(zhǎng)期以來(lái),,用FPGA實(shí)現(xiàn)抽取濾波器比較復(fù)雜,其原因主要是FPGA中缺乏實(shí)現(xiàn)乘法運(yùn)算的有效結(jié)構(gòu)?,F(xiàn)在,,F(xiàn)PGA集成了乘法器,使FPGA在數(shù)字信號(hào)處理方面有了長(zhǎng)足的進(jìn)步,。本文介紹用Xilinx公司的XC2V1000型FPGA實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)方法。
Abstract:
Key words :

1 引言

  抽取濾波器廣泛應(yīng)用在數(shù)字接收領(lǐng)域,,是數(shù)字下變頻器的核心部分,。目前,抽取濾波器的實(shí)現(xiàn)方法有3種:?jiǎn)纹ㄓ脭?shù)字濾波器集成電路,、DSP和可編程邏輯器件,。使用單片通用數(shù)字濾波器很方便,但字長(zhǎng)和階數(shù)的規(guī)格較少,,不能完全滿(mǎn)足實(shí)際需要,。使用DSP雖然簡(jiǎn)單,但程序要順序執(zhí)行,,執(zhí)行速度必然慢?,F(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)有著規(guī)整的內(nèi)部邏輯陣列和豐富的連線(xiàn)資源,特別適用于數(shù)字信號(hào)處理,但長(zhǎng)期以來(lái),,用FPGA實(shí)現(xiàn)抽取濾波器比較復(fù)雜,,其原因主要是FPGA中缺乏實(shí)現(xiàn)乘法運(yùn)算的有效結(jié)構(gòu)。現(xiàn)在,,F(xiàn)PGA集成了乘法器,,使FPGA在數(shù)字信號(hào)處理方面有了長(zhǎng)足的進(jìn)步。本文介紹用Xilinx公司的XC2V1000型FPGA實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)方法,。

2 XC2V1000簡(jiǎn)介

  Virtex-Ⅱ系列是Xilinx公司近幾年研發(fā)的具有高性能,、高速度和低功耗特點(diǎn)的新一代FPGA,一經(jīng)問(wèn)世就備受界內(nèi)人士的青睞,。該系列FPGA基于IP核和專(zhuān)用模塊設(shè)計(jì),,能夠?yàn)殡娦拧o(wú)線(xiàn)電,、網(wǎng)絡(luò),、視頻和數(shù)字信號(hào)處理領(lǐng)域的應(yīng)用提供完整的解決方案。XC2V1000是Virtex-Ⅱ家族的一員,,具有如下主要特點(diǎn):

  ●100萬(wàn)個(gè)系統(tǒng)門(mén),;

  ●40×32個(gè)可配置邏輯單元(5120個(gè)slice);

  ●40個(gè)18×18 bits乘法器,,1個(gè)工作時(shí)鐘內(nèi)即可完成乘法運(yùn)算,;

  ●720Kbits RAM,可靈活配置(單口,、雙口,、有使能或無(wú)使能等);

  ●8個(gè)DCM(Digital Clock Manager)模塊,;

  ●328個(gè)用戶(hù)I/O,。

  此外,Xilinx公司還提供了功能強(qiáng)大的開(kāi)發(fā)平臺(tái)(ISE),,開(kāi)發(fā)者可通過(guò)該平臺(tái)完成全部設(shè)計(jì),。

3 抽取濾波器的工作原理

  抽取濾波器的工作原理是在濾波過(guò)程中實(shí)現(xiàn)抽取。對(duì)于抽取率為N的抽取濾波器而言,,不是每進(jìn)入1個(gè)新數(shù)據(jù)就完成1次濾波運(yùn)算,,然后再抽取,而是當(dāng)進(jìn)來(lái)N個(gè)數(shù)據(jù)時(shí)濾波器才完成1次濾波運(yùn)算,,輸出1次濾波結(jié)果,。抽取濾波器的結(jié)果和先濾波后抽取的結(jié)果是一致的,只是對(duì)于同樣的數(shù)據(jù),,進(jìn)行濾波運(yùn)算的次數(shù)大大減少,。在數(shù)字系統(tǒng)中采用抽取濾波器的最大優(yōu)點(diǎn)是增加了每次濾波的可處理時(shí)間,,從而達(dá)到實(shí)現(xiàn)高速輸入數(shù)據(jù)的目的。下面以抽取率為2的具有線(xiàn)性相位的3階FIR抽取濾波器為例介紹抽取濾波器的實(shí)現(xiàn)過(guò)程,。

 

  線(xiàn)性相位的FIR濾波器的系數(shù)具有某種對(duì)稱(chēng)的性質(zhì)[1],,3階Ⅱ類(lèi)FIR線(xiàn)性相位濾波器在數(shù)學(xué)上可以表示為

公式

 

  其中,h(0)=h(3),h(1)=h(2),。其結(jié)構(gòu)如圖1所示,。由圖1可見(jiàn),具有4個(gè)系數(shù)的3階Ⅱ類(lèi)FIR線(xiàn)性相位濾波器只需2次加法,、2次乘法和2次累加就可以完成1次濾波運(yùn)算,。如果IPGA工作時(shí)鐘為80MHz,輸入x(n)的數(shù)據(jù)率也為80MHz,,那么經(jīng)2倍抽取后輸出y(n)為40MHz,。也就是說(shuō),抽取濾波器每完成1次濾波運(yùn)算,,需要2個(gè)工作時(shí)鐘,。如果加法器、乘法器和累加器在單個(gè)時(shí)鐘內(nèi)就能完成1次功能運(yùn)算,,那么只需1個(gè)加法器,、1個(gè)乘法器和1個(gè)累加器采用流水線(xiàn)操作在2個(gè)工作時(shí)鐘內(nèi)就可以完成2次加法、2次乘法和2次累加運(yùn)算,,就可以完成一次抽取濾波,。

3階Ⅱ類(lèi)FIR線(xiàn)性相位濾波器結(jié)構(gòu)

4 具體實(shí)現(xiàn)

4.1 結(jié)構(gòu)設(shè)計(jì)

  基于上述抽取濾波器的工作原理,筆者用XC2V1000實(shí)現(xiàn)了這個(gè)抽取率為2,、具有線(xiàn)性相位的3階FIR抽取濾波器,,利用原理圖和VHDL硬件描述語(yǔ)言共同完成源文件設(shè)計(jì)。圖2是抽取濾波器的頂層原理圖,。其中,,clock是工作時(shí)鐘,reset是復(fù)位信號(hào),,enable是輸入數(shù)據(jù)有效信號(hào),,data_in(17:0)是輸入數(shù)據(jù),data_out(17:0)是輸出數(shù)據(jù),,valid是輸出數(shù)據(jù)有效信號(hào)。addei18是加法器模塊,,mult18是乘法器模塊,,acc36是累加器模塊,signal_36-18是數(shù)據(jù)截位器模塊,,fir_controller是控制器模塊,??刂破鞫〞r(shí)向加法器、乘法器和累加器發(fā)送數(shù)據(jù)或控制信號(hào),,實(shí)現(xiàn)流水線(xiàn)操作,。

抽取濾波器的頂層原理圖

點(diǎn)擊看原圖

 

 

 

4.1.1控制器(fir_controller)

  控制器是抽取濾波器的核心模塊,有2種功能:接收輸入數(shù)據(jù),,向其他模塊發(fā)送數(shù)據(jù)和控制信號(hào),。它根據(jù)加法器、乘法器和累加器的時(shí)序特性,,規(guī)律地向加法器發(fā)送抽頭數(shù)據(jù),,向乘法器發(fā)送系數(shù),向累加器發(fā)送控制信號(hào),,讓加法器,、乘法器和累加器每個(gè)時(shí)鐘都完成指定的任務(wù),從而實(shí)現(xiàn)流水線(xiàn)操作,??刂破饔肶HDL語(yǔ)言描述,用寄存器存放抽頭和系數(shù),。

4.1.2加法器(adder18)

  加法器的輸入和輸出都是18bits,,用VHDL語(yǔ)言描述實(shí)現(xiàn)。它有2個(gè)工作時(shí)鐘的延遲,,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,,第一個(gè)時(shí)鐘得出相加結(jié)果,第二個(gè)時(shí)鐘把相加結(jié)果鎖存輸出,。

 


4.1.3乘法器(multl8)

  乘法 器是18bits輸入和36bits輸出,,用庫(kù)元件MULT18X18S和36bits鎖存器實(shí)現(xiàn)。MULT18Xl8S是XC2V1000自帶的18×18bits乘法器,,單個(gè)時(shí)鐘就可完成乘法運(yùn)算,;36bits鎖存器工作于時(shí)鐘的上升沿,用VHDL語(yǔ)言描述,。乘法器(mult18)也有2個(gè)工作時(shí)鐘的延時(shí),,在輸入數(shù)據(jù)準(zhǔn)備好的情況下,第一個(gè)時(shí)鐘得出相乘結(jié)果,,第二個(gè)時(shí)鐘把相乘結(jié)果鎖存輸出,。加法器和乘法器采用鎖存輸出的結(jié)構(gòu),雖然增加了1個(gè)工作時(shí)鐘的延遲,,但有利于抽取濾波器穩(wěn)定的工作,,提高可靠性。

4.1.4累加器(acc36)

  36bits累加器用于累加乘法器的輸出,,得出濾波結(jié)果,。它有1個(gè)控制端口clr,,當(dāng)clr為高電平時(shí),輸出前一輪累加結(jié)果,,并初始化開(kāi)始新一輪累加,;當(dāng)clr為低電平時(shí).進(jìn)行累加運(yùn)算。累加器用VHDL語(yǔ)言描述,。

4.1.5數(shù)據(jù)截位器(signal_36-18)

  數(shù)據(jù)截位器用VHDL語(yǔ)言描述,,用于把累加器的36位輸出進(jìn)行取舍處理,一般截掉數(shù)據(jù)低位部分,,保留數(shù)據(jù)高位,。為了對(duì)抽取濾波器進(jìn)行功能仿真,這里截掉數(shù)據(jù)高18位,,保留數(shù)據(jù)低18位,。

4.2 工作過(guò)程及功能仿真

  加法器、乘法器和累加器在控制器

 

的作用下每個(gè)時(shí)鐘都要完成指定的任務(wù),,從而形成流水線(xiàn)操作,,實(shí)現(xiàn)抽取濾波。

  下面以抽取濾波器完成1次抽取濾波的全過(guò)程為例,,說(shuō)明抽取濾波器的工作過(guò)程,。假設(shè)時(shí)鐘1、時(shí)鐘2,、時(shí)鐘3和時(shí)鐘4控制器已接收了數(shù)據(jù)x(n-3),、x(n-2)、x(n-1)和x(n),,那么,,

  時(shí)鐘5:控制器向加法器發(fā)送數(shù)據(jù)x(n)和x(n-3);

  時(shí)鐘6:加法器進(jìn)行,。x(n)+x(n-3)運(yùn)算,;控制器向加法器發(fā)送數(shù)據(jù)x(n-1)和x(n-2);

  時(shí)鐘7:加法器進(jìn)行x(n-1)+x(n-2)運(yùn)算,,輸出x (n)+x(n-3)運(yùn)算結(jié)果,。控制器向乘法器發(fā)送系數(shù)h(0),;

  時(shí)鐘8:加法器輸出x(n-1)+x(n-2)運(yùn)算結(jié)果,,乘法器進(jìn)行h(0)[x(n)+x(n-3)]運(yùn)算,控制器向乘法器發(fā)送系數(shù)h(1) ,;

  時(shí)鐘9:乘法器進(jìn)行h(1)[x(n-1)+x(n-2)]運(yùn)算,,輸出h(0)[x(n)+x(n-3)1運(yùn)算結(jié)果??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為高電平),;

  時(shí)鐘10:乘法器輸出h(1)[x(n-1)+x(n-2)]運(yùn)算結(jié)果。累加器初始化開(kāi)始累加操作,??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為低電平);

  時(shí)鐘11:累加器進(jìn)行累加運(yùn)算h(0)[x(n)+x(n-3)]+h(1)[x(n-1)+x(n-2)],??刂破飨蚶奂悠靼l(fā)送控制信號(hào)(clr為高電平),控制器輸出濾波數(shù)據(jù)有效信號(hào)(valid為高電平),;

  時(shí)鐘12:累加器輸出h(0)[x(n)+x(n-3)]+h(1)[x(n-1)+x(n-2)]累加結(jié)果,,并初始化開(kāi)始新一輪累加操作??刂破鬏敵鰹V波數(shù)據(jù)無(wú)效信號(hào)(valid為低電平),;

  以上就是抽取濾波器完成1次抽取濾波的全過(guò)程??梢?jiàn),,從數(shù)據(jù)x(n)輸入到濾波結(jié)果y(n)輸出需要8個(gè)工作時(shí)鐘。如果控制器不停地向加法器,、乘法器和加法器發(fā)送抽頭,、系數(shù)和控制信號(hào),就會(huì)形成流水線(xiàn)操作,,那么每2個(gè)時(shí)鐘,,抽取濾波器就會(huì)輸出1個(gè)濾波結(jié)果。圖3是抽取濾波器的仿真波形圖,,其中在控制器中設(shè)置系數(shù)h(0)=1和h(1)=2,。

抽取濾波器的仿真波形

點(diǎn)擊看原圖

 

 

 

4.3注意事項(xiàng)

  2個(gè)n位二進(jìn)制數(shù)相加,其和至少需要n+l位二進(jìn)制數(shù)才能正確表示,。本設(shè)計(jì)中的加法器輸入輸出都是18位,,為了防止加法器溢出,應(yīng)確保18位輸入數(shù)據(jù)x(n)的最高2位相同(都是符號(hào)位),。

  為了實(shí)現(xiàn)抽取濾波器的多級(jí)串聯(lián)結(jié)構(gòu),,應(yīng)統(tǒng)一輸入數(shù)據(jù)有效信號(hào)enable和輸出數(shù)據(jù)有效信號(hào)valid的時(shí)序要求。本設(shè)計(jì)規(guī)定控制器在累加器輸出濾波結(jié)果數(shù)后下1個(gè)時(shí)鐘送出濾波結(jié)果有效信號(hào),,時(shí)寬為1個(gè)工作時(shí)鐘周期,。

5 設(shè)計(jì)特點(diǎn)

  采用此設(shè)計(jì)結(jié)構(gòu)實(shí)現(xiàn)抽取濾波器具有以下3個(gè)特點(diǎn):

  (1)節(jié)省片內(nèi)資源和提高資源使用效率

  Xilinx公司為了方便用戶(hù)設(shè)計(jì)濾波器,在IP核中集成了通用數(shù)字濾波器的設(shè)計(jì),,但利用IP核生成的數(shù)字濾波器往往不能針對(duì)實(shí)際情況合理地利用片內(nèi)資源,,造成資源浪費(fèi)。本設(shè)計(jì)中采用了流水線(xiàn)結(jié)構(gòu),,所有功能模塊都滿(mǎn)負(fù)荷工作,,沒(méi)有空閑等待時(shí)鐘,,從而節(jié)省了片內(nèi)資源,提高了資源使用率,。

  (2)可以實(shí)現(xiàn)抽取濾波器多級(jí)結(jié)構(gòu)

  針對(duì)抽取濾波器的輸出特性,,可以采取相同的設(shè)計(jì)方法再設(shè)計(jì)一級(jí)抽取濾波器,對(duì)前一級(jí)輸出的數(shù)據(jù)再次抽取濾波,,從而實(shí)現(xiàn)多級(jí)抽取濾波器結(jié)構(gòu),。

  (3)設(shè)計(jì)靈活且擴(kuò)展性強(qiáng)

  用寄存器存放抽頭和系數(shù)適用于濾波器階數(shù)較少的情況,如果需要用上百階的抽取濾波,,最好用片內(nèi):RAM存放抽頭和系 數(shù),,這時(shí)只要稍加改動(dòng)控制器的邏輯設(shè)計(jì)既可實(shí)現(xiàn)。在此基礎(chǔ)上,,還可實(shí)現(xiàn)可編程抽取濾波器,。


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

  本文以實(shí)現(xiàn)抽取率為2的具有線(xiàn)性相位的3階FIR抽取濾波器為例,介紹了一種用XC2V1000型FPGA實(shí)現(xiàn)FIR抽取濾波器的設(shè)計(jì)方法,。用該方法設(shè)計(jì)出的抽取濾波器靈活性強(qiáng),、資源利用率高,能廣泛應(yīng)用于數(shù)字接收領(lǐng)域,。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。