劉 俊,劉會(huì)杰,尹增山
摘 要:根升余弦濾波器的傳統(tǒng)實(shí)現(xiàn)結(jié)構(gòu)占用的FPGA邏輯資源較多,針對(duì)一個(gè)特定的多速率系統(tǒng)的實(shí)現(xiàn),首先采用多速率處理技術(shù),較少計(jì)算量,針對(duì)多速率系統(tǒng)中的48階根升余弦濾波器,采用分布式算法,并結(jié)合流水線技術(shù),提出了基于FPGA的實(shí)現(xiàn)方案。與傳統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)的濾波器相比達(dá)到了提高資源利用率、提高系統(tǒng)工作頻率以及提高計(jì)算速度的目的。和Quartus Ⅱ中IP core實(shí)現(xiàn)的濾波器相比,最大工作頻率低但占用資源少。
關(guān)鍵詞:根升余弦濾波器;分布式算法;FPGA;多速率
中圖分類號(hào):TN713文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)19-094-05
FPGA Implementation of Rcos-filter Based on Multi-rate DA
LIU Jun1,2,LIU Huijie1,2,YIN Zengshan1,2
(1.Key Lab of Micro-satellite,Chinese Academy of Sciences,Shanghai,200050,China;
2.Shanghai Institute of Micro-system and Information Technology,Chinese Academy of Sciences,Shanghai,200050,China)
Abstract:The traditional implementation of rising cos-filter requires large FPGA′s logic resource.A multi-rate system is studied.Firstly,it takes multi-rate technology to reduce computing quantity.For the 48 steps rising cos-filter of this system,it is accomplished by a combination of distributed algorithm and pipeline technology.Implemented scheme based on FPGA is proposed.Compared with the traditional implementation,it has advantages of saving in logic resource,work frequency and calculation speed.Compared with DA filter provided by Quartus Ⅱ,it bears the lower frequency but needs less resource.
Keywords:rcos-filter;distributed algorithm;FPGA;multi-rate
0 引 言
根升余弦成形濾波器是數(shù)字信號(hào)處理中的重要部件,它能對(duì)數(shù)字信號(hào)進(jìn)行成形濾波,壓縮旁瓣,減少干擾的影響,從而降低誤碼率。根據(jù)文獻(xiàn)[1],它的傳統(tǒng)FPGA實(shí)現(xiàn)方式基于乘累加器(Multiplier Add Cell,MAC)結(jié)構(gòu),設(shè)計(jì)方便,只需要乘法器、加法器和移位寄存器即可實(shí)現(xiàn),但是在FPGA中實(shí)現(xiàn)硬件乘法器十分耗費(fèi)資源。特別是當(dāng)濾波器階數(shù)很高時(shí),資源耗費(fèi)不可忽視。若采用乘法器復(fù)用的結(jié)構(gòu),運(yùn)算速度較慢。分布式算法(Distribute Arithmetic,DA)是另一種應(yīng)用在FPGA中計(jì)算乘積和的算法。根據(jù)文獻(xiàn)[2],分布式算法結(jié)構(gòu)的FIR濾波器利用FPGA中的查找表(LUT)來替代乘法器,這種方法可以極大地減少硬件電路規(guī)模,有效提高邏輯資源的利用率,而且有較高的處理速度,滿足實(shí)時(shí)處理的要求。分布式算法的處理速度僅與輸入的位寬有關(guān),對(duì)于大規(guī)模乘積和的運(yùn)算,其計(jì)算速度有著明顯的優(yōu)勢(shì)。當(dāng)輸入位寬過大時(shí),可以通過將DA算法改進(jìn)成并行結(jié)構(gòu)而獲得更快的處理速度。根據(jù)文獻(xiàn)[3],對(duì)多速率系統(tǒng)來說,還可以引入多相結(jié)構(gòu)來減少計(jì)算量,提高處理速度。本文針對(duì)根升余弦成形濾波器提出一種基于多速率信號(hào)處理技術(shù)和分布式算法的FPGA實(shí)現(xiàn)技術(shù),使得計(jì)算量大幅減少,處理速度得到較大提高,而且使得FPGA資源利用更合理。
1 根升余弦濾波器原理與結(jié)構(gòu)
奈奎斯特第一準(zhǔn)則提出消除碼間干擾,系統(tǒng)從發(fā)送濾波器經(jīng)信道到接收濾波器總的傳輸特性所應(yīng)滿足的條件,據(jù)此可以求出滿足奈奎斯特準(zhǔn)則的成形濾波器。根據(jù)文獻(xiàn)[4],在實(shí)際中得到廣泛應(yīng)用的是幅頻響應(yīng),它是具有奇對(duì)稱升余弦形狀過渡帶的一類濾波器,即升余弦濾波器,它的沖激響應(yīng)為:
h(n)=sin(πn/T)πn/T?cos(aπn)/T1-(4a2n2)/T2
(1)
式中:T為輸入碼元速率;a為滾降系數(shù),實(shí)際應(yīng)用在0~04之間。
除了抽樣點(diǎn)n=0之外,它在其余所有抽樣點(diǎn)上均為0,而且它的衰減很快,隨著n的增大,呈平方衰減。這樣,對(duì)于減小碼間干擾及對(duì)定時(shí)誤差的影響非常有利。
本文要求實(shí)現(xiàn)的基帶成形濾波器滾降系數(shù)為035。它的頻率響應(yīng)要求如圖1所示。
圖1 基帶成形濾波器的頻響要求
由于在FPGA中數(shù)據(jù)由定點(diǎn)數(shù)表示,所以需要對(duì)系數(shù)進(jìn)行量化。本設(shè)計(jì)中,采用整系數(shù)表示方法,對(duì)濾波器系數(shù)先放大127倍,然后取整量化為8位整數(shù),量化后它的沖激響應(yīng)系數(shù)如表1所示。
圖2 基帶成形濾波器幅頻和相頻
2 分布式算法與多相原理
2.1 分布式算法原理
分布式最初由Croisier于1973年提出,但直到出現(xiàn)查找表結(jié)構(gòu)的FPGA之后,分布式算法才被廣泛應(yīng)用于乘積計(jì)算中。FIR濾波器采用分布式算法可以極大地減少硬件電路的規(guī)模,很容易實(shí)現(xiàn)流水線技術(shù),提高電路的執(zhí)行速度。
根據(jù)文獻(xiàn)[5],長(zhǎng)度為N的因果有限沖激響應(yīng)濾波器(FIR)可以用下列傳輸函數(shù)H(z)來描述。
H(z)=∑N-1k=0h[k]z-k
(2)
在時(shí)域中,上述FIR濾波器的輸入輸出關(guān)系為:
y[n]=∑N-1k=0h[k]x[n-k]
(3)
式中:y[n]和x[n]分別是輸出和輸入的序列;h[k]為沖激響應(yīng)在時(shí)間序號(hào)k時(shí)的系數(shù)。若y(n)表示濾波器的輸出,Ak表示濾波器的系數(shù),xk(n)表示第k個(gè)輸入變量,則N階線性、時(shí)不變FIR濾波器的輸出為:
y(n)=∑N-1k=0Akxk(n)
(4)
在FPGA的實(shí)現(xiàn)中,根據(jù)文獻(xiàn)[6]數(shù)據(jù)采用二進(jìn)制補(bǔ)碼表示,所以變量xk可以表示為:
xk=-xk0+∑B-1b=1xkb2-b
(5)
式中:xkb為xk的第b比特位;B為輸入變量xk的數(shù)據(jù)位數(shù)。將式(5)代入式(4)可得:
y(n)=∑N-1k=0Ak(-xk0+∑B-1b=1xkb2-b)
=-∑N-1k=0Akxk0+∑N-1k=0Ak∑B-1b=1xkb2-b
=-∑N-1k=0Akxk0+∑B-1b-12-b(∑N-1k=0xkbAk)
(6)
這里,∑N-1k=0xkbAk利用一個(gè)查找表來實(shí)現(xiàn),即把所有可能的2N個(gè)中間數(shù)據(jù)存儲(chǔ)在一個(gè)查找表中,以一個(gè)N位輸入向量xb作為地址,輸出為對(duì)應(yīng)該向量的一個(gè)特定值。
對(duì)于并行分布式算法結(jié)構(gòu)濾波器,從低位到高位,依次乘以2N,N=0,1,2,…,然后相加得到輸出值。
2.2 多速率FIR的多相表示
設(shè)FIR濾波器轉(zhuǎn)移函數(shù)為:
H(z1) = ∑N-1n = 0h(n)z-n1
(7)
式中:N為濾波器長(zhǎng)度。假設(shè)滿足條件N=DQ(其中D,Q為整數(shù)),則H(z1)可以寫成:
H(z1) =∑Q-1n = 0h(nD + 0)(zD1)-n +
z-1∑Q-1n = 0h(nD + 1)(zD1)-n +…+
zD-11∑Q-1n = 0h(nD + D-1)(zD1)-n
(8)
令:
Ek(zD1) = ∑Q-1n = 0h((nD + k)T1)(zD1)-n,
k=0,1,…,D-1
(9)
為H(z1)的多相分量,則:
H(z1) = ∑Q-1n = 0z-k1Ek(zD1)
(10)
根據(jù)文獻(xiàn)[7],傳統(tǒng)的濾波后再抽取的多速率系統(tǒng)如圖3所示。
圖3 多速率系統(tǒng)
圖3中,T2=DT1??梢钥闯?卷積運(yùn)算在下采樣之前進(jìn)行。通過對(duì)濾波器進(jìn)行多相分解,得到多相分解表示如圖4所示。
圖4 多相分解表示
Ek(zD1)相當(dāng)于一組濾波器,利用多采樣率系統(tǒng)中結(jié)構(gòu)的互易性對(duì)濾波器位置進(jìn)行等效變換,將抽取操作前置,這樣卷積運(yùn)算已經(jīng)變換到在低抽樣率下進(jìn)行,濾波運(yùn)算量減少到原來的1/D,大大減少運(yùn)算量,如圖5所示。
圖5 多相分解高效結(jié)構(gòu)
由圖5可知,每相仍然相當(dāng)于低階的FIR濾波器,下節(jié)對(duì)其采用DA算法,可以看到運(yùn)算速度將進(jìn)一步提高,運(yùn)算量也將大幅減少。
3 多速率DA根升余弦濾波器的結(jié)構(gòu)及其FPGA實(shí)現(xiàn)
按查找表的方式,DA算法可以分為串行實(shí)現(xiàn)方式和位并行實(shí)現(xiàn)方式兩種。本文采用位并行方式實(shí)現(xiàn)。因?yàn)楸疚尼槍?duì)的是一個(gè)48階平方根升余弦濾波器,從表1可以看到結(jié)構(gòu)是對(duì)稱的,LUT的規(guī)模隨地址空間,也就是輸入系數(shù)N的增加而呈指數(shù)增加。這里系數(shù)N=48,用單個(gè)LUT不能夠執(zhí)行全字(輸入LUT位寬等于系數(shù)的數(shù)量)。為了減小LUT的規(guī)模,根據(jù)文獻(xiàn)[8]可以利用部分表計(jì)算,并將結(jié)果相加,即用m個(gè)濾波系數(shù)為k的濾波單元構(gòu)成系數(shù)為N(N=m×k)的濾波單元。如果再加上流水線寄存器,這一改進(jìn)并沒有降低速度,卻可以極大地減少設(shè)計(jì)規(guī)模,這里采用4輸入LUT,如圖6所示。考慮濾波器的對(duì)稱性,需要6種LUT,對(duì)于每個(gè)4輸入LUT:
b0~b3為x[n]~x[n-3]的第0位,構(gòu)成了一組查找表的查找地址。
LUT表中存儲(chǔ)的是所有可能使用到的數(shù)值,是濾波器系數(shù)的16種組合形式。
圖6 DA FIR濾波器結(jié)構(gòu)圖
3.1 串行實(shí)現(xiàn)結(jié)構(gòu)
對(duì)于串行分布式算法結(jié)構(gòu)濾波器,LUT輸出值與寄存器值左移1位(乘以21)后的數(shù)值相加,并將相加后的結(jié)果存入寄存器。首先計(jì)算高位(b=0),再計(jì)算低位,所以寄存器的值要先左移1位再相加,從而減少資源消耗。當(dāng)b=0時(shí),做減法運(yùn)算;當(dāng)b>0時(shí),做加法運(yùn)算。經(jīng)過1次減法和B-1次加法,在B次查詢循環(huán)后完成計(jì)算,實(shí)現(xiàn)框圖如圖7所示。
圖7 串行實(shí)現(xiàn)框圖
3.2 位并行實(shí)現(xiàn)結(jié)構(gòu)
另一個(gè)DA結(jié)構(gòu)的改進(jìn)即并行算法是以增加額外的LUT、寄存器和加法器為代價(jià)提高速度的。并行算法是速度最優(yōu)的高階分布式算法,實(shí)現(xiàn)框圖如圖8所示。
圖8 位并行實(shí)現(xiàn)框圖
3.3 濾波器實(shí)現(xiàn)框圖
本設(shè)計(jì)的48階根升余弦濾波器的設(shè)計(jì)框圖如圖9所示。
根據(jù)文獻(xiàn)[10],利用VHDL語言,輸入數(shù)據(jù)位寬限定為8 b,FIR濾波器的系數(shù)是常數(shù),存在ROM中,工作頻率為78643 2 MHz。
圖9 濾波器實(shí)現(xiàn)框圖
4 結(jié)果分析
本文實(shí)現(xiàn)選用的FPGA是Altera的Stratix Ⅱ EP2S60F1040C4,在Quartus Ⅱ 7.2平臺(tái)上進(jìn)行仿真。輸入數(shù)據(jù)位寬限定為8 b,整個(gè)處理過程沒有截位,因此該濾波器的頻率響應(yīng)與其他形式實(shí)現(xiàn)的濾波器頻率響應(yīng)是一樣的。區(qū)別集中在以下三點(diǎn):
(1) 節(jié)省資源開銷
通過仿真綜合后,得到根升余弦濾波器的三種實(shí)現(xiàn)方式的資源消耗情況。根據(jù)文獻(xiàn)[9],把1個(gè)DSP block 9 b 折合成82個(gè)ALUTs和82個(gè)寄存器計(jì)算,得到表2。
表2 三種不同結(jié)構(gòu)的FIR濾波器對(duì)比圖
濾波器類型ALUTs寄存器Memory bits
傳統(tǒng)實(shí)現(xiàn)結(jié)構(gòu)241 9279 1 80
IP core(基于并行DA算法)114 4159 1 64
并行DA算法實(shí)現(xiàn)6679963 853
可見,傳統(tǒng)的實(shí)現(xiàn)結(jié)構(gòu)占用資源量大,而基于并行DA算法的實(shí)現(xiàn)結(jié)構(gòu)所占用的ALUTs只是前者的276%,寄存器只是它的35.7%,只是Memory bits大幅增加,不過相對(duì)來說,FPGA中Memory資源很豐富,可以不考慮。
本文所采用的并行DA算法實(shí)現(xiàn)結(jié)構(gòu)與Quartus Ⅱ自帶的基于DA算法的FIR濾波器IP core相比各有優(yōu)勢(shì),雖然Memory bits 比較多,但是關(guān)鍵性指標(biāo)ALUTs和寄存器有大幅減少,約為IP core實(shí)現(xiàn)的60%左右??梢?本文設(shè)計(jì)實(shí)現(xiàn)的濾波器在資源開銷方面有較明顯的優(yōu)勢(shì)。
(2) 提高計(jì)算速度
DA算法的計(jì)算速度與系統(tǒng)階數(shù)無關(guān),只與輸入位寬有關(guān),處理時(shí)鐘/輸入位寬即是系統(tǒng)的工作速度,這種工作速度與階數(shù)無關(guān)的性質(zhì)非常適合大規(guī)模乘積和的計(jì)算,在階數(shù)很高的濾波器中運(yùn)算優(yōu)勢(shì)明顯。對(duì)于位寬較大的輸入,可以將其拆分,讓電路并行工作成倍地提高處理速度,但速度的提高是以電路規(guī)模的同倍數(shù)擴(kuò)大為代價(jià)的,在實(shí)際工作中需要仔細(xì)斟酌,尋找一個(gè)速度與資源的平衡點(diǎn)。
(3) 提高系統(tǒng)工作頻率
對(duì)本設(shè)計(jì)而言,系統(tǒng)對(duì)速度的要求比較高,該FIR濾波器的工作頻率為64×1.228 8 MHz。對(duì)該傳統(tǒng)結(jié)構(gòu)的濾波器設(shè)計(jì)進(jìn)行時(shí)序分析顯示,clock時(shí)鐘的時(shí)序邏輯所需的最小時(shí)鐘周期為5.902 ns,信號(hào)的最大時(shí)鐘頻率為169.4 MHz。對(duì)基于并行DA算法的根升余弦成形濾波器設(shè)計(jì)進(jìn)行時(shí)序分析顯示,clock時(shí)鐘的時(shí)序邏輯所需的最小時(shí)鐘周期為3.823 ns,信號(hào)的最大時(shí)鐘頻率為261.57 MHz。同樣基于并行DA算法的IP core FIR濾波器相應(yīng)的指標(biāo)為292.74 MHz,3.416 ns??梢钥闯?相比IP core還有差距,但與傳統(tǒng)結(jié)構(gòu)相比,有很大提高。
5 結(jié) 語
從結(jié)果分析中的幾點(diǎn)可以看出,一方面并行DA算法性價(jià)比高于傳統(tǒng)算法;另一方面由于對(duì)濾波器引入多相結(jié)構(gòu),使得大部分電路工作在較低頻率下,減少了計(jì)算量,而且還降低了系統(tǒng)功耗,因此基于多速率處理技術(shù)和并行DA算法實(shí)現(xiàn)的根升余弦濾波器比以往的設(shè)計(jì)具有明顯優(yōu)勢(shì),尤其是在減少邏輯資源開銷方面,非常適合邏輯資源受限的應(yīng)用設(shè)計(jì)中。
參考文獻(xiàn)
[1]Sanjit K Mitra.Digital Signal Processing:A Computer-based Approach[M].Mc Graw Hill,1998.
[2]Uwe Meyer-Baese.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,胡永生,譯.北京:清華大學(xué)出版社,2003.
[3]Chi-Tsong Chen.Digital Signal Processing Spectral Computation and Filter Design[M].北京:電子工業(yè)出版社,2002.
[4]張輝,曹麗娜.現(xiàn)代通信原理與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2002.
[5]王世一.數(shù)字信號(hào)處理[M].北京:北京理工大學(xué)出版社,2004.
[6]Wu Dong,Wang Yuhong,Lu Huangzhang.Distributed Arithmetic and its Implementation in FPGA[J].Journal of National Uniersity of Defense Technology,2000,22(3).
[7]宗孔德.多抽樣率信號(hào)處理[M].北京:清華大學(xué)出版社,1996.
[8]陳圣儉,郭晶晶.基于FPGA的FIR升余弦滾降濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].通信電源技術(shù),2007(24):19-21.
[9]吳繼華,王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005.
[10]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2005.