《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的FIR數(shù)字濾波器的優(yōu)化設(shè)計(jì)
基于FPGA的FIR數(shù)字濾波器的優(yōu)化設(shè)計(jì)
摘要: FPGA最明顯的優(yōu)勢(shì)在于其實(shí)現(xiàn)數(shù)字信號(hào)處理算法的并行性,,可以顯著提高濾波器的數(shù)據(jù)吞吐率,隨著FPGA技術(shù)的不斷發(fā)展,,現(xiàn)在的FPGA不僅包含查找表,、寄存器、多路復(fù)用器,、分布式塊存儲(chǔ)器,,而且還嵌入專用的快速加法器、乘法器和輸入/輸出設(shè)備,,因而成為高性能數(shù)字信號(hào)處理的理想器件,。而在FPGA中,數(shù)字濾波器不同的實(shí)現(xiàn)方法所消耗的FPGA資源是不同的,,且對(duì)濾波器的性能影響也有較大差異,。基于此,,本文從FIR濾波器的系數(shù)考慮,,采用CSD編碼,對(duì)FIR數(shù)字濾波器進(jìn)行優(yōu)化設(shè)計(jì),。
關(guān)鍵詞: FPGA FIR
Abstract:
Key words :
  在圖像處理,、語(yǔ)音識(shí)別等數(shù)字信號(hào)處理中,,數(shù)字濾波器占有重要的地位,,其性能對(duì)系統(tǒng)有直接的影響。隨著系統(tǒng)在寬帶,、高速,、實(shí)時(shí)信號(hào)處理上要求的提高,對(duì)濾波器的處理速度,、性能等也提出更高的要求,。目前數(shù)字濾波器的硬件實(shí)現(xiàn)方法通常采用專用DSP芯片或FPGA,DSP特有的一些硬件結(jié)構(gòu)和特性使其非常適合作數(shù)字濾波電路,,但由于其軟件算法在執(zhí)行時(shí)的串行性,,限制了它在高速和實(shí)時(shí)系統(tǒng)中的應(yīng)。FPGA最明顯的優(yōu)勢(shì)在于其實(shí)現(xiàn)數(shù)字信號(hào)處理算法的并行性,,可以顯著提高濾波器的數(shù)據(jù)吞吐率,,隨著FPGA技術(shù)的不斷發(fā)展,現(xiàn)在的FPGA不僅包含查找表,、寄存器,、多路復(fù)用器、分布式塊存儲(chǔ)器,,而且還嵌入專用的快速加法器,、乘法器和輸入/輸出設(shè)備,,因而成為高性能數(shù)字信號(hào)處理的理想器件。而在FPGA中,,數(shù)字濾波器不同的實(shí)現(xiàn)方法所消耗的FPGA資源是不同的,,且對(duì)濾波器的性能影響也有較大差異?;诖?,本文從FIR濾波器的系數(shù)考慮,采用CSD編碼,,對(duì)FIR數(shù)字濾波器進(jìn)行優(yōu)化設(shè)計(jì),。

  1 FIR濾波器的基本原理

  一個(gè)L階的FIR數(shù)字濾波器的基本系統(tǒng)函數(shù)見(jiàn)式(1):

a.jpg

  式中:h(n)表示濾波器的系數(shù);x(i)表示帶有時(shí)間延遲的輸入序列,,此表達(dá)式對(duì)應(yīng)的直接型實(shí)現(xiàn)結(jié)構(gòu)可用圖1來(lái)表示,。

b.jpg

  可以看出,F(xiàn)IR濾波器是由一個(gè)“抽頭延遲線”加法器和乘法器的集合構(gòu)成的,。傳給每個(gè)乘法器的操作數(shù)就是一個(gè)FIR系數(shù),。對(duì)每次采樣x(n)要進(jìn)行N次連續(xù)的乘法和(N-1)次加法操作,因?qū)嶋H中濾波器的階數(shù)都很高,,實(shí)現(xiàn)高數(shù)據(jù)吞吐率就需要很多的硬件乘法器,,硬件實(shí)現(xiàn)時(shí)將占用大量的資源,同時(shí)也會(huì)因此影響濾波器的速度和性能,。為了解決這個(gè)問(wèn)題,,人們從多個(gè)角度尋求優(yōu)化方法。從數(shù)字濾波器表達(dá)式看,,對(duì)它

  的優(yōu)化操作,,實(shí)際最終轉(zhuǎn)換成兩類改進(jìn)。一類是針對(duì)輸入xi的DA操作的改進(jìn),;另一類是針對(duì)系數(shù)hi編碼的操作,。

  2 DA算法

  分布式算法(Distributed Arithmetic,DA)是為了解決乘法資源問(wèn)題而提出的經(jīng)典優(yōu)化算法這種算法結(jié)構(gòu),,可以有效地將乘法運(yùn)算轉(zhuǎn)換成基于查找表LUT(Look Up Table)的加法運(yùn)算,,利用查表方法快速得到部分積。

  對(duì)于低階而言,,由于LUT表地址空間較小,,與傳統(tǒng)算法相比,分布式算法可極大地減少硬件電路的規(guī)模,,提高電路的執(zhí)行速度,。然而當(dāng)FIR濾波器階數(shù)很高時(shí),作為查找表的ROM將很大,。階數(shù)每增加1位,,ROM容量就增加1倍,,這種以2的冪次遞增的資源占用是硬件資源不可接受的。因而在濾波器系數(shù)較高時(shí),,為了減小查找表的規(guī)模,,常采用一定的方法將大LUT分割為一些小的LUT的方法。如濾波器的多相分解結(jié)構(gòu),、多路復(fù)用器和加法器替代查找表的算法等,。

  3 CSD編碼算法

  常數(shù)乘法可以通過(guò)“移位-加”來(lái)完成,而乘數(shù)中“1”的個(gè)數(shù)決定了“加”操作的次數(shù),,當(dāng)然“1”的個(gè)數(shù)越少越好,,正則有符號(hào)數(shù)字量CSD(Canonic Signed Digit)編碼就可以實(shí)現(xiàn)“1”的個(gè)數(shù)的最小化。

  3.1 CSD編碼

  與傳統(tǒng)的二進(jìn)制編碼的二值表示法不同,,CSD編碼的數(shù)字值域?yàn)?,,1和-1。-1常表示成1,。這種編碼是具有最少非零元素的一種表示法,,用CSD編碼表示數(shù)字的形式具有惟一性。在實(shí)際硬件電路中可以采用如下原則生成最佳CSD編碼:

 ?、?gòu)淖畹陀行婚_(kāi)始,,用10…0l.jpg取代所有大于2的1序列,此外還需要用110l.jpg取代1011,;

 ?、趶淖罡哂行婚_(kāi)始,用011代替10l.jpg,。

  最佳CSD編碼的特點(diǎn)是:

 ?、僭谝粋€(gè)CSD數(shù)據(jù)里,,沒(méi)有兩個(gè)連續(xù)的非零位,;

  ②對(duì)同一個(gè)數(shù)字的CSD編碼是獨(dú)一無(wú)二的,;

  基于CSD編碼,,可以將式(1)做以下的變化:

c.jpgd.jpg

  從以上式子可看出,應(yīng)用CSD表示法,,由于可以降低系數(shù)中非零元素的數(shù)量,,因而在運(yùn)算中能減少加法的次數(shù),有利于提高運(yùn)算速度和減少資源的占用,。

  3.2 最佳CSD編碼設(shè)計(jì)與結(jié)果

  根據(jù)前面所列舉的最佳CSD編碼方法,,用C語(yǔ)言生成最佳CSD編碼,部分偽代碼如下:

e.jpg

 ?、凼菙?shù)字表示法里,,所含非零位數(shù)最少,,相比于二進(jìn)制補(bǔ)碼系統(tǒng)平均減少33%的非零項(xiàng)。

  測(cè)試實(shí)驗(yàn)數(shù)據(jù)及結(jié)果如圖2所示,。在本C語(yǔ)言程序中用X來(lái)指代碼src=/upload/info/news/content/20110817/0862391001313549277.jpg,,輸入數(shù)據(jù)為16位。

f.jpg

  4 實(shí)例設(shè)計(jì)過(guò)程與仿真

  4.1 FIR系數(shù)提取

  利用Matlab中Fdatlool設(shè)計(jì)一個(gè)16階低通FIR濾波器,,各項(xiàng)性能指標(biāo)為:采用頻率fs=48 kHz,,截止頻率fstop=12 kHz,通帶寬度f(wàn)pass=9.6 kHz,。系數(shù)數(shù)據(jù)寬度為16位,;輸出數(shù)據(jù)寬度是16位。為了便于FIR濾波器的FPGA實(shí)現(xiàn),,減小誤差,,將Fdatlool提取的濾波器的系數(shù)量化取整后為:

g.jpg

  4.2 系數(shù)的CSD轉(zhuǎn)換

  讀入量化系數(shù),進(jìn)行CSD轉(zhuǎn)換操作,,生成CSD碼,,表1是部分量化后的系數(shù)及對(duì)應(yīng)的CSD數(shù)。

h.jpg

  4.3 FIR濾波器實(shí)現(xiàn)結(jié)構(gòu)

  采用轉(zhuǎn)置形式的FIR濾波器結(jié)構(gòu),,此結(jié)構(gòu)和直接型結(jié)構(gòu)不同的是,,輸入信號(hào)X『n』是同時(shí)分別和濾波器系數(shù)向量相乘,不需要通過(guò)不同的延時(shí)單元再和相對(duì)應(yīng)的濾波器系數(shù)相乘,。這種結(jié)構(gòu)最大的優(yōu)點(diǎn)是工作頻率較高,,圖3給出了采用CSD編碼算法的設(shè)計(jì)流程圖。

j.jpg

  4.4 FPGA實(shí)現(xiàn)與仿真

  參照?qǐng)D3中給出的設(shè)計(jì)流程,,使用VHDL語(yǔ)言實(shí)現(xiàn)了該常系數(shù)濾波器的行為描述,,圖4是濾波器的實(shí)現(xiàn)頂層圖。FPGA采用AItera公司的EPF 10K40芯片,,該芯片最高的單路運(yùn)行速率為200 MHz,。圖5是在MaxPIusⅡ中的仿真結(jié)果。表2給出了EPF10K40的一些資源占用情況,。

i.jpg

  5 基于FPGA的FIR試驗(yàn)結(jié)果

  為驗(yàn)證本文提出的算法的普遍性,,以并行DA和2C編碼方式設(shè)計(jì)了一系列階數(shù)從16到256階的FIR濾波器,濾波器在Altera公司的開(kāi)發(fā)軟件MaxPlusⅡ中進(jìn)行編譯和布局布線,,采用的目標(biāo)器件為EPF10K40芯片,,在系統(tǒng)中對(duì)3種實(shí)現(xiàn)結(jié)構(gòu)進(jìn)行測(cè)試,測(cè)試數(shù)據(jù)位寬為8位,。通過(guò)表3的比較結(jié)果可以看出,,使用CSD編碼,資源耗用明顯下降,。當(dāng)FIR階數(shù)很高,,系數(shù)很復(fù)雜時(shí),,CSD編碼的優(yōu)勢(shì)會(huì)更加顯著。表4給出了N=64時(shí)DA算法和CSD算法的具體性能指標(biāo),,從結(jié)果來(lái)看,,CSD編碼相對(duì)于單純的DA在系統(tǒng)資源和整個(gè)系統(tǒng)延遲上有明顯的提高。

k.jpg

  6 結(jié)語(yǔ)

  濾波器用VHDL硬件描述語(yǔ)言實(shí)現(xiàn),,采用Altera公司的EPF10K40芯片,,在MaxPlusⅡ中進(jìn)行了仿真驗(yàn)證。從結(jié)果來(lái)看,,文中所提出的CSD編碼算法,,具有一定的研究?jī)r(jià)值和實(shí)用價(jià)值,CSD編碼在處理序列較多的情況下,,在資源占用,、速度處理方面的效果尤為明顯。采用CSD編碼方式對(duì)FIR濾波器進(jìn)行優(yōu)化設(shè)計(jì),,可減少FIR實(shí)現(xiàn)的FPGA資源消耗,。



 

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