fpga在通信方面的應(yīng)用
現(xiàn)場可編程門陳列(FPGA)芯片在許多領(lǐng)域均有廣泛的應(yīng)用,特別是在無線通信領(lǐng)域里,由于具有極強的實時性和并行處理能力,使其對信號進行實時處理成為可能。本節(jié)不僅對FPGA技術(shù)在現(xiàn)有無線通信中的應(yīng)用領(lǐng)域作了詳細的分析,并對其在未來無線通信中的應(yīng)用發(fā)展作了展望。
FPGA指的是現(xiàn)場可編程門陣列,它的基本功能模塊是由N輸入的查找表,存儲數(shù)據(jù)的觸發(fā)器和復(fù)路器等組成。在正確的設(shè)置下,這三個部分各司其職。查找表能夠通過對數(shù)據(jù)的讀取實現(xiàn)輸入數(shù)據(jù)的任意布爾函數(shù);觸發(fā)器則用來存儲數(shù)據(jù),如有限狀態(tài)機的狀態(tài)信息;復(fù)路器可以選擇不同的輸入信號進行組合,將查找表和觸發(fā)器用可編程的布線資源連接起來,可以實現(xiàn)不同的組合邏輯和時序邏輯。由于FPGA內(nèi)部結(jié)構(gòu)的特點,它可以很容易地實現(xiàn)分布式的算法結(jié)構(gòu),這一點對于實現(xiàn)無線通信中的高速數(shù)字信號處理十分有利。因為在無線通信系統(tǒng)中,許多功能模塊通常都需要大量的濾波運算,而這些濾波函數(shù)往往需要大量的乘和累加操作。而通過FPGA來實現(xiàn)分布式的算術(shù)結(jié)構(gòu),就可以有效地實現(xiàn)這些乘和累加操作。
目前,無線通信一方面正向話音和數(shù)據(jù)綜合的方向發(fā)展,另一方面迫切需要將移動技術(shù)綜合到手持PDA產(chǎn)品中去。因此,隨著無線移動通信系統(tǒng)的發(fā)展,以及對更為完善的便攜式系統(tǒng)的期望,構(gòu)架系統(tǒng)模塊的處理器就必須更加地強有力。這一要求對無線通信的FPGA芯片市場提出了重要的挑戰(zhàn),其中最重要的三個方面是FPGA的功耗、性能和成本。目前已有許多研究來平衡這三方面的要求,如利用系統(tǒng)芯片(SOC)可以將盡可能多的功能集成在一片F(xiàn)PGA芯片上或FPGA芯片集上,使其性能上具有速率高、功耗低;在成本上價格低廉;而且還可以降低復(fù)雜性,便于使用。
特別是在無線通信領(lǐng)域里,SOC由于具有極強的實時性,使其對話音進行實時處理成為可能;由于它是通過面向芯片結(jié)構(gòu)的軟件編程來實現(xiàn)其功能的,因而僅修改軟件而不需改硬件平臺就可以改進系統(tǒng)原有設(shè)計方案或原有功能,因而具有極大的靈活性;又由于這種情況下的FPGA芯片并非專門為某種功能設(shè)計的,因而使用范圍廣、產(chǎn)量大、價格可以降到很低。所以FPGA將會越來越多地應(yīng)用于無線通信系統(tǒng)中,它的優(yōu)良性能將會促進無線通信的發(fā)展;而帶來的無線通信蓬勃發(fā)展又將會進一步促進FPGA技術(shù)的不斷進步。
對于現(xiàn)有移動通信中的許多關(guān)鍵技術(shù),如:CDMA技術(shù),軟件無線電,多用戶檢測等技術(shù)都需要依靠高速、高性能的并行處理器來實現(xiàn)。隨著這些應(yīng)用的日益多樣化,F(xiàn)PGA已經(jīng)不再是一塊獨立的芯片,而演變成了構(gòu)件內(nèi)核。這使得設(shè)計師能選擇合適的內(nèi)核,與專用邏輯“膠結(jié)”在一起形成專用的FPGA方案,以滿足信號處理的需要。目前還出現(xiàn)把DSP核和FPGA集成在一起的芯片。FPGA芯片的一些具體應(yīng)用方面,如:用于實現(xiàn)語音合成,糾錯編碼,基帶調(diào)制解調(diào),以及系統(tǒng)控制等功能;基于DSP核矢量編碼器用于將語音信號壓縮到有限帶寬的信道中;用來實現(xiàn)基帶調(diào)制解調(diào)功能;另外還有定時的恢復(fù)、自動增益和頻率控制、符號檢測、脈沖整形、以及匹配濾波器等。
特別是對于其中的調(diào)制解調(diào)器,由于需要大量的復(fù)雜數(shù)學(xué)運算,并且對調(diào)制解調(diào)器的大小、重量、功耗特別關(guān)注,這就對FPGA的要求就更高,調(diào)制解調(diào)器的速度隨FPGA的速度的提高而不斷提高。FPGA在通信領(lǐng)域的應(yīng)用,大大改善了現(xiàn)代通信系統(tǒng)的性能,也極大地推動了SOC的發(fā)展。但對于當(dāng)今的移動通信設(shè)備,一片F(xiàn)PGA難以達到系統(tǒng)級處理的能力。比如現(xiàn)在的第三代移動通信,一片F(xiàn)PGA只能進行信源和信道方面的物理層處理,不能處理控制和高層信令。只有與另外的DSP或者CPU相結(jié)合才能完成整個任務(wù)。因此,基于DSP/CPU加FPGA的網(wǎng)絡(luò)產(chǎn)品將成為未來的應(yīng)用熱點。隨著移動通信的寬帶GSM,CDMA標(biāo)準的轉(zhuǎn)移和高速數(shù)據(jù)傳送網(wǎng)絡(luò)對XDSL的要求,基于內(nèi)嵌DSP/CPU的FPGA SOC將更有前途。
專家指出,今后高速DSP/CPU加FPGA技術(shù)的發(fā)展趨勢,將是以系統(tǒng)芯片為核心,信息處理速度將達到每秒幾十億次乘加運算,因此,只有多系統(tǒng)芯片才能肩負此重任。嵌入式系統(tǒng)已經(jīng)與SOC技術(shù)融合在一起,成為新一代信息技術(shù)的基礎(chǔ)?;贒SP/CPU加FPGA的嵌入式系統(tǒng)不僅具有其他微處理器和單片機嵌入式系統(tǒng)的優(yōu)點和技術(shù)特性,而且還可能利用并行算法操作,具有更高速的數(shù)字信號處理能力,為實現(xiàn)系統(tǒng)的實時性提供了更為有利的支持。DSP/CPU加FPGA系統(tǒng)必將成為現(xiàn)在以及未來無線通信技術(shù)的重要支柱。
怎么用FPGA做算法
FFT算法除了必需的數(shù)據(jù)存儲器ram和旋轉(zhuǎn)因子rom外,仍需較復(fù)雜的運算和控制電路單元,即使現(xiàn)在實現(xiàn)長點數(shù)的FFT仍然是很困難。本文提出的FFT實現(xiàn)算法是基于FPGA之上的,算法完成對一個序列的FFT計算,完全由脈沖觸發(fā),外部只輸入一脈沖頭和輸入數(shù)據(jù),便可以得到該脈沖頭作為起始標(biāo)志的N點FFT輸出結(jié)果。這個算法實現(xiàn)的可以是基2/4混合基FFT,也可以是純基4FFT和純基2FFT運算。
傅立葉變換和逆變換
對于變換長度為N的序列x(n)其傅立葉變換可以表示如下:
其中,W=exp(-2π/N)。當(dāng)點數(shù)N較大時,必須進行分解,以短點數(shù)實現(xiàn)長點數(shù)的變換。而IDFT的實現(xiàn)在DFT的基礎(chǔ)上就顯得較為簡單了:
由第二個可以看出,在FFT運算模塊的基礎(chǔ)上,只需將輸入序列進行取共軛后再進行FFT運算,輸出結(jié)果再取一次共軛便實現(xiàn)了對輸入序列的IDFT運算,因子1/N對于不同的數(shù)據(jù)表示格式具體實現(xiàn)時的處理方式是不一樣的。IDFT在FFT的基礎(chǔ)上輸入和輸出均有一次共軛操作,但它們共用一個內(nèi)核,仍然是十分方便的。
基4和基2
基4和基2運算流圖及信號之間的運算關(guān)系如圖1所示:
以基4為例,令A(yù)=r0+j×i0;B=r1+j×i1;C=r2+j×i2;D=r3+j×i3;
Wk0=c0+j×s0:Wk1=c1+j×s1;Wk2=c2+j×s2;Wk3=c3+j×s3。分別代入圖1中的基4運算的四個等式中有:
A‘=[r0+(r1×c1-i1×s1)+(r2×c2-i2×s2)+(r3×c3-i3×s3)]+j[i0+(i1×c1+r1×s1)+(i2×c2+r2×s2)+(i3×c3+r3×s3)] 式(3)
B’=[r0+(i1×c1+r1×s1)-(r2×c2-i2×s2)-(i3×c3+r3×s3)]+j[i0-(r1×c1-i1×s1)-(i2×c2+r2×s2)+(r3×c3-i3×s3)] 式(4)
C‘=[r0-(r1×c1-i1×s1)+(r2×c2-i2×s2)-(r3×c3-i3×s3)]+j[i0-(i1×c1+r1×s1)+(i2×c2+r2×s2)-(i3×c3+r3×s3)] 式(5)
D’=[r0-(i1×c1+r1×s1)-(r2×c2-i2×s2)+(i3×c3+r3×s3)]+j[i0+(r1×c1-i1×s1)-(i2×c2+r2×s2)-(r3×c3-i3×s3)] 式(6)
可以看出有多個公共項和類似項,這一點得到充分利用之后可以大大縮減基4和基2運算模塊中的乘法器的個數(shù),如上面A‘至D’的四個等式中的這三對類似項:(r1×c1-i1×s1)與(i1×c1+r1×s1)、(r2×c2-i2×s2)與(i2×c2+r2×s2)、(r3×c3-i3×s3)與(i3×c3+r3×s3)以高于輸入數(shù)據(jù)率的時鐘進行時分復(fù)用,最終可以做到只需要3個甚至1個復(fù)數(shù)乘法器便可以實現(xiàn)。
基2運算之所以采用圖1-(b)中的形式進行基2運算,是為了將基本模塊做成基4/2復(fù)用模塊,它對于N有著更大的適用性和可借鑒性。在基4、基2和基4/2模塊的基礎(chǔ)上,構(gòu)建基16、基8和基16/8模塊有著非常大的意義。
算法實現(xiàn)
傅立葉變換實現(xiàn)時首先進行基2、基4分解,一般來說,如果算法使用基4實現(xiàn),雖然使用的資源多了一些,但速度上的好處足以彌補。如果資源充足,使用基16、基8或基16/8復(fù)用模塊,速度可以大大提高。一般FFT實現(xiàn)簡單框圖如圖2所示。
在圖2中,運算模塊即為基2/4/8/16模塊或它們的復(fù)用模塊,Rom表中存儲的是N點旋轉(zhuǎn)因子表??刂颇K產(chǎn)生所有的控制信號,存儲器1和2的讀寫地址、寫使能、運算模塊的啟動信號及因子表的讀地址等信號。當(dāng)然對于運算模塊為基16/8復(fù)用模塊時,控制模塊就需要產(chǎn)生模式選擇信號,如對于運算模塊是基4/2模塊時,該信號就決定了內(nèi)部運算模塊是進行基4運算還是基2運算。
存儲器1作為當(dāng)前輸入標(biāo)志對應(yīng)輸入N點數(shù)據(jù)的緩沖器,存儲器2作為中間結(jié)果存儲器,用于存儲運算模塊計算出的各Pass的結(jié)果。在圖中的各種地址、使能和數(shù)據(jù)的緊密配合下,經(jīng)過一定延時后輸出計算結(jié)果及其對應(yīng)指示標(biāo)志。
圖2只是一定點或浮點的FFT實現(xiàn)模塊,如果是塊浮點運算,則必須加入一個數(shù)據(jù)因子控制器,控制每遍運算過程中的數(shù)據(jù)大小,并根據(jù)各個Pass的乘性因子之和的大小,對最終輸出進行大小控制,以保證每段FFT運算輸出增益一致。
評論
查看更多