基于多速率DA的根升余弦濾波器的FPGA實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
根升余弦成形濾波器是數(shù)字信號處理中的重要部件,它能對數(shù)字信號進(jìn)行成形濾波,壓縮旁瓣,減少干擾的影響,從而降低誤碼率。根據(jù)文獻(xiàn)[1],它的傳統(tǒng)FP-GA實(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),對于大規(guī)模乘積和的運(yùn)算,其計(jì)算速度有著明顯的優(yōu)勢。當(dāng)輸入位寬過大時(shí),可以通過將DA算法改進(jìn)成并行結(jié)構(gòu)而獲得更快的處理速度。根據(jù)文獻(xiàn)[3],對多速率系統(tǒng)來說,還可以引入多相結(jié)構(gòu)來減少計(jì)算量,提高處理速度。本文針對根升余弦成形濾波器提出一種基于多速率信號處理技術(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),它是具有奇對稱升余弦形狀過渡帶的一類濾波器,即升余弦濾波器,它的沖激響應(yīng)為:
式中:丁為輸入碼元速率;a為滾降系數(shù),實(shí)際應(yīng)用在0~0.4之間。除了抽樣點(diǎn)n=0之外,它在其余所有抽樣點(diǎn)上均為0,而且它的衰減很快,隨著n的增大,呈平方衰減。這樣,對于減小碼間干擾及對定時(shí)誤差的影響非常有利。
本文要求實(shí)現(xiàn)的基帶成形濾波器滾降系數(shù)為0.35。它的頻率響應(yīng)要求如圖1所示。
[!--empirenews.page--]
由于在FPGA中數(shù)據(jù)由定點(diǎn)數(shù)表示,所以需要對系數(shù)進(jìn)行量化。本設(shè)計(jì)中,采用整系數(shù)表示方法,對濾波器系數(shù)先放大127倍,然后取整量化為8位整數(shù),量化后它的沖激響應(yīng)系數(shù)如表1所示。
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],長度為N的因果有限沖激響應(yīng)濾波器(FIR)可以用下列傳輸函數(shù)H(z)來描述。
在時(shí)域中,上述FIR濾波器的輸入輸出關(guān)系為:
式中:y[n]和x[n]分別是輸出和輸入的序列;h[k]為沖激響應(yīng)在時(shí)間序號k時(shí)的系數(shù)。若y(n)表示濾波器的輸出,Ak表示濾波器的系數(shù),xk(n)表示第忌個(gè)輸入變量,則N階線性、時(shí)不變FIR濾波器的輸出為:
在FPGA的實(shí)現(xiàn)中,根據(jù)文獻(xiàn)[6]數(shù)據(jù)采用二進(jìn)制補(bǔ)碼表示,所以變量xk可以表示為:
式中:xkb為xk的第b比特位;B為輸入變量xk的數(shù)據(jù)位數(shù)。將式(5)代入式(4)可得:
這里,利用一個(gè)查找表來實(shí)現(xiàn),即把所有可能的2N個(gè)中間數(shù)據(jù)存儲(chǔ)在一個(gè)查找表中,以一個(gè)N位輸入向量xb作為地址,輸出為對應(yīng)該向量的一個(gè)特定值。對于并行分布式算法結(jié)構(gòu)濾波器,從低位到高位,依次乘以2N,N=0,1,2,…,然后相加得到輸出值。[!--empirenews.page--]
2.2 多速率FIR的多相表示
設(shè)FIR濾波器轉(zhuǎn)移函數(shù)為:
式中:N為濾波器長度。假設(shè)滿足條件N=DQ(其中D,Q為整數(shù)),則H(z1)可以寫成:
根據(jù)文獻(xiàn)[7],傳統(tǒng)的濾波后再抽取的多速率系統(tǒng)如圖3所示。
圖3中,T2=DT1??梢钥闯?,卷積運(yùn)算在下采樣之前進(jìn)行。通過對濾波器進(jìn)行多相分解,得到多相分解表示如圖4所示。
Ek(z1D)相當(dāng)于一組濾波器,利用多采樣率系統(tǒng)中結(jié)構(gòu)的互易性對濾波器位置進(jìn)行等效變換,將抽取操作前置,這樣卷積運(yùn)算已經(jīng)變換到在低抽樣率下進(jìn)行,濾波運(yùn)算量減少到原來的1/D,大大減少運(yùn)算量,如圖5所示。
由圖5可知,每相仍然相當(dāng)于低階的FIR濾波器,下節(jié)對其采用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)楸疚尼槍Φ氖且粋€(gè)48階平方根升余弦濾波器,從表1可以看到結(jié)構(gòu)是對稱的,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所示??紤]濾波器的對稱性,需要6種LUT,對于每個(gè)4輸入LUT:
b0~b3為x[n]~x[n-3]的第0位,構(gòu)成了一組查找表的查找地址。
LUT表中存儲(chǔ)的是所有可能使用到的數(shù)值,是濾波器系數(shù)的16種組合形式。
[!--empirenews.page--]
3.1 串行實(shí)現(xiàn)結(jié)構(gòu)
對于串行分布式算法結(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所示。
3.2 位并行實(shí)現(xiàn)結(jié)構(gòu)
另一個(gè)DA結(jié)構(gòu)的改進(jìn)即并行算法是以增加額外的LUT、寄存器和加法器為代價(jià)提高速度的。并行算法是速度最優(yōu)的高階分布式算法,實(shí)現(xiàn)框圖如圖8所示。
3.3 濾波器實(shí)現(xiàn)框圖
本設(shè)計(jì)的48階根升余弦濾波器的設(shè)計(jì)框圖如圖9所示。
根據(jù)文獻(xiàn)[10],利用VHDL語言,輸入數(shù)據(jù)位寬限定為8 b,F(xiàn)IR濾波器的系數(shù)是常數(shù),存在ROM中,工作頻率為78.643 2 MHz。
4 結(jié)果分析
本文實(shí)現(xiàn)選用的FPGA是Altera的StratixⅡEP2S60F1040C4,在QuartusⅡ7.2平臺上進(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è)DSPblock 9 b折合成82個(gè)ALUTs和82個(gè)寄存器計(jì)算,得到表2。
可見,傳統(tǒng)的實(shí)現(xiàn)結(jié)構(gòu)占用資源量大,而基于并行DA算法的實(shí)現(xiàn)結(jié)構(gòu)所占用的ALUTs只是前者的27.6%,寄存器只是它的35.7%,只是Memory bits大幅增加,不過相對來說,F(xiàn)PGA中Memory資源很豐富,可以不考慮。
本文所采用的并行DA算法實(shí)現(xiàn)結(jié)構(gòu)與QuartusⅡ自帶的基于DA算法的FIR濾波器IP core相比各有優(yōu)勢,雖然Memory bits比較多,但是關(guān)鍵性指標(biāo)ALUTs和寄存器有大幅減少,約為IP core實(shí)現(xiàn)的60%左右??梢?,本文設(shè)計(jì)實(shí)現(xiàn)的濾波器在資源開銷方面有較明顯的優(yōu)勢。
(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)勢明顯。對于位寬較大的輸入,可以將其拆分,讓電路并行工作成倍地提高處理速度,但速度的提高是以電路規(guī)模的同倍數(shù)擴(kuò)大為代價(jià)的,在實(shí)際工作中需要仔細(xì)斟酌,尋找一個(gè)速度與資源的平衡點(diǎn)。
(3)提高系統(tǒng)工作頻率
對本設(shè)計(jì)而言,系統(tǒng)對速度的要求比較高,該FIR濾波器的工作頻率為64×1.228 8 MHz。對該傳統(tǒng)結(jié)構(gòu)的濾波器設(shè)計(jì)進(jìn)行時(shí)序分析顯示,clock時(shí)鐘的時(shí)序邏輯所需的最小時(shí)鐘周期為5.902 ns,信號的最大時(shí)鐘頻率為169.4 MHz。對基于并行DA算法的根升余弦成形濾波器設(shè)計(jì)進(jìn)行時(shí)序分析顯示,clock時(shí)鐘的時(shí)序邏輯所需的最小時(shí)鐘周期為3.823 ns,信號的最大時(shí)鐘頻率為261.57 MHz。同樣基于并行DA算法的IPcore 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)算法;另一方面由于對濾波器引入多相結(jié)構(gòu),使得大部分電路工作在較低頻率下,減少了計(jì)算量,而且還降低了系統(tǒng)功耗,因此基于多速率處理技術(shù)和并行DA算法實(shí)現(xiàn)的根升余弦濾波器比以往的設(shè)計(jì)具有明顯優(yōu)勢,尤其是在減少邏輯資源開銷方面,非常適合邏輯資源受限的應(yīng)用設(shè)計(jì)中。