0 引 言
根升余弦成形濾波器是數字信號處理中的重要部件,它能對數字信號進行成形濾波,壓縮旁瓣,減少干擾的影響,從而降低誤碼率。根據文獻[1],它的傳統FP-GA實現方式基于乘累加器(Multiplier Add Cell,MAC)結構,設計方便,只需要乘法器、加法器和移位寄存器即可實現,但是在FPGA中實現硬件乘法器十分耗費資源。特別是當濾波器階數很高時,資源耗費不可忽視。若采用乘法器復用的結構,運算速度較慢。分布式算法(Distribute Arithmetic,DA)是另一種應用在FPGA中計算乘積和的算法。根據文獻[2],分布式算法結構的FIR濾波器利用FPGA中的查找表(LUT)來替代乘法器,這種方法可以極大地減少硬件電路規(guī)模,有效提高邏輯資源的利用率,而且有較高的處理速度,滿足實時處理的要求。分布式算法的處理速度僅與輸入的位寬有關,對于大規(guī)模乘積和的運算,其計算速度有著明顯的優(yōu)勢。當輸入位寬過大時,可以通過將DA算法改進成并行結構而獲得更快的處理速度。根據文獻[3],對多速率系統來說,還可以引入多相結構來減少計算量,提高處理速度。本文針對根升余弦成形濾波器提出一種基于多速率信號處理技術和分布式算法的FPGA實現技術,使得計算量大幅減少,處理速度得到較大提高,而且使得FPGA資源利用更合理。
1 根升余弦濾波器原理與結構
奈奎斯特第一準則提出消除碼間干擾,系統從發(fā)送濾波器經信道到接收濾波器總的傳輸特性所應滿足的條件,據此可以求出滿足奈奎斯特準則的成形濾波器。根據文獻[4],在實際中得到廣泛應用的是幅頻響應,它是具有奇對稱升余弦形狀過渡帶的一類濾波器,即升余弦濾波器,它的沖激響應為:
式中:丁為輸入碼元速率;a為滾降系數,實際應用在0~0.4之間。除了抽樣點n=0之外,它在其余所有抽樣點上均為0,而且它的衰減很快,隨著n的增大,呈平方衰減。這樣,對于減小碼間干擾及對定時誤差的影響非常有利。
本文要求實現的基帶成形濾波器滾降系數為0.35。它的頻率響應要求如圖1所示。
[!--empirenews.page--]
由于在FPGA中數據由定點數表示,所以需要對系數進行量化。本設計中,采用整系數表示方法,對濾波器系數先放大127倍,然后取整量化為8位整數,量化后它的沖激響應系數如表1所示。
2 分布式算法與多相原理
2.1 分布式算法原理
分布式最初由Croisier于1973年提出,但直到出現查找表結構的FPGA之后,分布式算法才被廣泛應用于乘積計算中。FIR濾波器采用分布式算法可以極大地減少硬件電路的規(guī)模,很容易實現流水線技術,提高電路的執(zhí)行速度。
根據文獻[5],長度為N的因果有限沖激響應濾波器(FIR)可以用下列傳輸函數H(z)來描述。
在時域中,上述FIR濾波器的輸入輸出關系為:
式中:y[n]和x[n]分別是輸出和輸入的序列;h[k]為沖激響應在時間序號k時的系數。若y(n)表示濾波器的輸出,Ak表示濾波器的系數,xk(n)表示第忌個輸入變量,則N階線性、時不變FIR濾波器的輸出為:
在FPGA的實現中,根據文獻[6]數據采用二進制補碼表示,所以變量xk可以表示為:
式中:xkb為xk的第b比特位;B為輸入變量xk的數據位數。將式(5)代入式(4)可得:
這里,利用一個查找表來實現,即把所有可能的2N個中間數據存儲在一個查找表中,以一個N位輸入向量xb作為地址,輸出為對應該向量的一個特定值。對于并行分布式算法結構濾波器,從低位到高位,依次乘以2N,N=0,1,2,…,然后相加得到輸出值。[!--empirenews.page--]
2.2 多速率FIR的多相表示
設FIR濾波器轉移函數為:
式中:N為濾波器長度。假設滿足條件N=DQ(其中D,Q為整數),則H(z1)可以寫成:
根據文獻[7],傳統的濾波后再抽取的多速率系統如圖3所示。
圖3中,T2=DT1??梢钥闯觯矸e運算在下采樣之前進行。通過對濾波器進行多相分解,得到多相分解表示如圖4所示。
Ek(z1D)相當于一組濾波器,利用多采樣率系統中結構的互易性對濾波器位置進行等效變換,將抽取操作前置,這樣卷積運算已經變換到在低抽樣率下進行,濾波運算量減少到原來的1/D,大大減少運算量,如圖5所示。
由圖5可知,每相仍然相當于低階的FIR濾波器,下節(jié)對其采用DA算法,可以看到運算速度將進一步提高,運算量也將大幅減少。
3 多速率DA根升余弦濾波器的結構及其FPGA實現
按查找表的方式,DA算法可以分為串行實現方式和位并行實現方式兩種。本文采用位并行方式實現。因為本文針對的是一個48階平方根升余弦濾波器,從表1可以看到結構是對稱的,LUT的規(guī)模隨地址空間,也就是輸入系數N的增加而呈指數增加。這里系數N=48,用單個LUT不能夠執(zhí)行全字(輸入LUT位寬等于系數的數量)。為了減小LUT的規(guī)模,根據文獻[8]可以利用部分表計算,并將結果相加,即用m個濾波系數為k的濾波單元構成系數為N(N=m×k)的濾波單元。如果再加上流水線寄存器,這一改進并沒有降低速度,卻可以極大地減少設計規(guī)模,這里采用4輸入LUT,如圖6所示??紤]濾波器的對稱性,需要6種LUT,對于每個4輸入LUT:
b0~b3為x[n]~x[n-3]的第0位,構成了一組查找表的查找地址。
LUT表中存儲的是所有可能使用到的數值,是濾波器系數的16種組合形式。
[!--empirenews.page--]
3.1 串行實現結構
對于串行分布式算法結構濾波器,LUT輸出值與寄存器值左移1位(乘以21)后的數值相加,并將相加后的結果存入寄存器。首先計算高位(b=0),再計算低位,所以寄存器的值要先左移1位再相加,從而減少資源消耗。當b=0時,做減法運算;當b>0時,做加法運算。經過1次減法和B-1次加法,在B次查詢循環(huán)后完成計算,實現框圖如圖7所示。
3.2 位并行實現結構
另一個DA結構的改進即并行算法是以增加額外的LUT、寄存器和加法器為代價提高速度的。并行算法是速度最優(yōu)的高階分布式算法,實現框圖如圖8所示。
3.3 濾波器實現框圖
本設計的48階根升余弦濾波器的設計框圖如圖9所示。
根據文獻[10],利用VHDL語言,輸入數據位寬限定為8 b,FIR濾波器的系數是常數,存在ROM中,工作頻率為78.643 2 MHz。
4 結果分析
本文實現選用的FPGA是Altera的StratixⅡEP2S60F1040C4,在QuartusⅡ7.2平臺上進行仿真。輸入數據位寬限定為8 b,整個處理過程沒有截位,因此該濾波器的頻率響應與其他形式實現的濾波器頻率響應是一樣的。區(qū)別集中在以下三點:
(1)節(jié)省資源開銷
通過仿真綜合后,得到根升余弦濾波器的三種實現方式的資源消耗情況。根據文獻[9],把1個DSPblock 9 b折合成82個ALUTs和82個寄存器計算,得到表2。
可見,傳統的實現結構占用資源量大,而基于并行DA算法的實現結構所占用的ALUTs只是前者的27.6%,寄存器只是它的35.7%,只是Memory bits大幅增加,不過相對來說,FPGA中Memory資源很豐富,可以不考慮。
本文所采用的并行DA算法實現結構與QuartusⅡ自帶的基于DA算法的FIR濾波器IP core相比各有優(yōu)勢,雖然Memory bits比較多,但是關鍵性指標ALUTs和寄存器有大幅減少,約為IP core實現的60%左右。可見,本文設計實現的濾波器在資源開銷方面有較明顯的優(yōu)勢。
(2)提高計算速度
DA算法的計算速度與系統階數無關,只與輸入位寬有關,處理時鐘/輸入位寬即是系統的工作速度,這種工作速度與階數無關的性質非常適合大規(guī)模乘積和的計算,在階數很高的濾波器中運算優(yōu)勢明顯。對于位寬較大的輸入,可以將其拆分,讓電路并行工作成倍地提高處理速度,但速度的提高是以電路規(guī)模的同倍數擴大為代價的,在實際工作中需要仔細斟酌,尋找一個速度與資源的平衡點。
(3)提高系統工作頻率
對本設計而言,系統對速度的要求比較高,該FIR濾波器的工作頻率為64×1.228 8 MHz。對該傳統結構的濾波器設計進行時序分析顯示,clock時鐘的時序邏輯所需的最小時鐘周期為5.902 ns,信號的最大時鐘頻率為169.4 MHz。對基于并行DA算法的根升余弦成形濾波器設計進行時序分析顯示,clock時鐘的時序邏輯所需的最小時鐘周期為3.823 ns,信號的最大時鐘頻率為261.57 MHz。同樣基于并行DA算法的IPcore FIR濾波器相應的指標為292.74 MHz,3.416 ns。可以看出,相比IP core還有差距,但與傳統結構相比,有很大提高。
5 結 語
從結果分析中的幾點可以看出,一方面并行DA算法性價比高于傳統算法;另一方面由于對濾波器引入多相結構,使得大部分電路工作在較低頻率下,減少了計算量,而且還降低了系統功耗,因此基于多速率處理技術和并行DA算法實現的根升余弦濾波器比以往的設計具有明顯優(yōu)勢,尤其是在減少邏輯資源開銷方面,非常適合邏輯資源受限的應用設計中。