羅 森,田增山,周啟平
(重慶郵電大學無線定位與空間測試重點實驗室,重慶 400065)
在CDMA(Code Division Multiple Access)擴頻通信系統中,同步技術作為碼分多址的三大支撐技術之一,起著至關重要的作用。在CDMA系統下行同步過程中,利用PN短碼良好的相關性,將前向數據與不同相位的PN短碼序列進行相關,找到最高相關峰值對應的相位,從而完成短碼同步。以往CDMA的同步、解擾和解Walsh等相關算法[1]主要是基于DSP實現,但通常需要多塊DSP來共同完成,且CDMA中長碼生成和實時性處理對DSP來說是相當大的挑戰。但隨著FPGA技術的快速發展和數字信號處理IP核的成熟,如FFT,FIR,DDS和ALTMULT_COMPLEX等IP核,基于FPGA的信號處理得到廣泛的應用。基于FPGA的CDMA同步算法實現,主要以滑動相關法為主,該方法雖然實現簡單,但實時性較差。本文針對CDMA下行同步快速高效的要求,完成了CDMA下行同步的算法設計,并以FPGA的思想構建同步模塊,利用Altera的Stratix II系列芯片作為硬件平臺進行板級調速,該方法最終應用到實際項目中。
CDMA導頻信道中傳輸的數據,是周期為32768個碼片的PN序列。PN序列具有良好的自相關性,只有當序列對齊時,才會產生一個極高的相關峰[2],而如果PN序列未對齊,則理論上相關值趨于0。如圖1所示為PN序列的自相關仿真圖,可以觀察到對齊時有一個極高的相關峰,其余未對齊時刻,相關值很小。

圖1 PN序列的自相關特性
如何選擇適當的數據長度來完成相關運算是一個比較重要的問題。如果選取數據長度過長,會帶來巨大的計算量;而如果選取數據長度過短,則會導致計算結果的精度下降,甚至可能無法正確地完成同步過程。
因此有必要對進行相關運算的數據長度對相關性能的影響進行評估。在此引入一個相關質量指數的概念。定義:相關質量指數=相關結果均值/相關結果峰值。相關質量指數的取值介于0~1,越接近于0,說明相關性能越好;反之,越接近于1,說明相關性能越差。
選取不同長度的實測數據進行相關運算,其對應的相關質量指數如圖2所示。

圖2 數據長度對相關性能的影響圖
圖2中,橫軸值表示進行相關運算的數據長度的冪級(以2為底)。當進行相關運算的數據長度的冪級為11及更大時,即長度為211=2048碼片及以上的時候,已經具有了良好的相關性能,經MATLAB對實測CDMA數據仿真后發現當數據長度為4096時,相關性較好,如圖3所示。從圖中可以看出有2個相關峰值,峰值明顯高于未對齊時所得相關值,該結果完全符合設計要求。

圖3 4096碼片的相關圖
實現前向信道同步的方法很多,常用的搜索法有滑動相關法和使用FFT快速相關的方法。
1.3.1 滑動相關法
對于滑動相關法,即是將PN短碼序列x(i)進行延遲并與CDMA前向信道數據y(i)進行相關處理,獲得相關峰,從而達到同步的目的。在FPGA中實現時,將序列y(i)保持不變,短序列x(i)不斷向右滑動1個點,同時計算在每個位置上,x(i)與y(i)的相關值。如此滑動1個周期后,一定會出現相關峰,相關峰的所在點即是相關點。
使用情況:適合FPGA芯片資源少、對CDMA同步實時性要求不高的系統。
優缺點:該方法實現簡單,占用FPGA資源少,但達到同步所花費的時間長。
1.3.2 FFT快速相關法
使用FFT實現快速同步的方法,由式(1)知,可用卷積的方式來實現相關,即

但是使用卷積來實現相關計算量非常龐大。因此,實際中使用快速傅里葉變換方式實現相關[3],即

從而能達到快速同步的目的。
其過程如下:
1)選擇L滿足

當設計時,選擇PN序列長度M為32768,數據長度N為4096,L長度為65536。
2)用x(n)表示PN序列;用y(n)表示CDMA的前向信道數據。
3)將序列x(n)與y(n)按如下方式補0,形成長為L的序列即

在后面補L-M個0。

即在前面補M-1個0,在后面補L-(M+N-1)個0。
4)對x(n)與y(n)分別進行FFT運算,結果為X(k)與Y(k)。并將X(k)的復共軛X*(k)與Y(k)相乘,即

5)對Z(k)進行IFFT運算,結果為z(n)。并截取z(n)的從第N個到第M個值(從1開始),再將所得結果倒序。
使用情況:適合FPGA芯片資源較多、對CDMA同步實時性要求較高的系統。
優缺點:算法實現較復雜,占用FPGA資源多,但實現同步所需時間短等特點。
基于對實時性要求較高的考慮,本設計選擇FFT快速相關法,參數:PN碼長度M為32768,數據長度N為4096,FFT變換長度為65536。按此方案進行粗略計算,如果系統時鐘為100 MHz時,當使用滑動相關法時,從系統接收完所需長度(4096)的實時CDMA數據后,至少需要2.51 s才能找到同步位置,可見如此長的時間是很多系統所無法容忍的;當使用FFT快速相關法時,PN碼的FFT變換在上電之后先完成,所以其時間不需要計入同步花費時間內,在接收完所需長度(4096)的CDMA數據后,達到同步所需時間僅為4 ms左右,是滑動相關法所需時間的1/600。由此可見,FFT快速相關法在時間開銷上的優越性。
整體設計流程圖如圖4所示,數據由中頻經過14 bit數據I/O口在控制信號下進入基帶數據收發模塊,抽取處理后在IFFT/FFT變換模塊進行FFT變換,變換后數據在數據運算模塊和已經過FFT變換的復共軛PN碼進行點乘,之后傳回IFFT/FFT變換模塊進行IFFT變換,其結果在同步位置判定模塊中進行平方求其最大值。

圖4 整體設計流程框圖
1)同步控制模塊
通過模塊對同步結果進行分析,判定該結果是否有效。當無效時,則再進行一次同步運算,一直到符合所設參數要求為止。
2)PN碼生成模塊
在CDMA系統中,雙極性PN短碼分為I,Q兩路,由1和-1組成,它們的生成多項式為

在FPGA中實現時,主要以移位和異或相結合的方式來產生PN短碼。
3)基帶數據收發模塊
本文中仿真所使用到的數據均采用了4倍采樣I和Q兩路,由于CDMA的碼片速率為1.2288 Mchip/s(兆碼片/s)[4],則基帶接收數據時鐘CLK應該為9.8304 MHz。基帶數據收發模塊在中頻數據有效信號有效時,在時鐘CLK的同步下4倍抽取中頻傳輸的基帶數據用于同步處理,并存放于異步FIFO中,以達到不同時間域的同步。為記錄數據接收的起始位置,在數據接收時,拉高dump信號一個時鐘周期,作為數據起始的標志位,為以后對數據進行接收的開始標志。同時用一個周期為32768×4(CDMA導頻信道中傳輸的數據周期)的加法器進行循環累加,計完一個周期,拉高一次dump信號。基帶數據傳輸到IFFT/FFT變換模塊時,需要有與數據同步拉高的data_source_valid信號,從而使數據能被正確接收。
4)IFFT/FFT變換模塊
IFFT/FFT變換模塊主要實現對基帶數據和PN碼先后進行FFT變換,并對其點乘后的數據進行IFFT變換。為提高開發效率,減小設計風險,因此選用Altera官方提供的FFT IP核[5]。為節約FPGA片內資源,只調用一個FFT核,其參數為:變換長度(Transform Length)為65536;數據精度(Data Precision)為16 bit;數據流模式(I/O Data Flow)為突發模式(數據吞吐量相比較小但占用資源少);其他選項選擇為默認。從IP核配置界面中可知,此參數配置下,占用Memory Bits為4112384,因此對芯片的資源要求很高。
由于同一時刻,FFT IP核只能處理某段數據流,且考慮到數據的實時性和連續性,所以控制好數據流進入FFT IP核的時機和順序非常重要。因此,本模塊中采用狀態機和握手信號來完成。
由于PN碼由值很小的+1和-1組成,而FFT核對值小的數據處理時,其結果也相對很小,甚至會導致結果出錯,因此,設計中將PN碼的值擴大500倍,即變為+500和-500。經ModelSim仿真,其結果和MATLAB仿真結果幅度變化一致,且幅值符合要求。
5)數據運算模塊
數據運算模塊主要實現復共軛點乘Z(k)=X*(k)Y(k),可以調用 ALTMULT_COMPLEX IP 核[6],其可以穩定快速地完成此運算,運算結果再傳輸到IFFT/FFT變換模塊中進行IFFT反變換。由于X(k)和Y(k)不是同時輸入,因此需要用FIFO暫存X(k)數據,當Y(k)輸入時,再從FIFO中讀取出和Y(k)同步輸入到ALTMULT_COMPLEX IP核中。
6)同步位置判定模塊
同步位置依次判定從模塊IFFT/FFT變換模塊中輸出的IFFT反變換結果,對其進行求平方取模,對模值逐一比較大小,保留最大值的位置和值的大小,再推算出同步的位置。
7)中頻模擬模塊
本模塊獨立于基帶處理模塊,單獨用一塊板子來達到模擬中頻數據源的目的。它通過USB接口接收PC機發送的CDMA數據,FPGA通過控制USB芯片將數據接收放入FIFO中,再通過I/O口傳輸到基帶處理模塊的FPGA中。該模塊選用了Alteral的EP3C25Q240C8的FPGA芯片,該芯片具有很高的性價比,而且資源豐富。同時,還選用CY7C68013的USB芯片以實現USB通信。
完成Verilog代碼編寫后,運用ModelSim對上述模塊進行仿真,使仿真結果符合設計要求。圖5為PN碼生成模塊產生PN碼的仿真時序圖,shift_reg_i和shift_reg_q為初始相位(0x8000),pn_code_i和pn_code_q分別為I,Q兩路的PN碼(16 bit),其產生結果符合設計要求。在輸出PN碼到IFFT/FFT變換模塊的同時,out_state信號拉高,表明PN短碼有效,作為其他模塊接收該PN碼的同步信號。

圖5 PN碼仿真時序圖(截圖)
圖6為IFFT/FFT變換模塊的時序仿真圖,為簡化控制時序的驗證,FFT長度采用1024,經驗證,時序符合設計要求。輸入信號中,sink_real和sink_imag為FFT模塊輸入的實部和虛部,sink_valid為輸入數據有效信號,inverse置0時,表示FFT模塊執行的是FFT變換,置1時,該模塊執行FFT反變換,而輸出信號source_real和source_imag為FFT核變換后輸出數據,source_valid為輸出數據有效信號。從圖6中可以觀察到有3段進入到FFT核的數據流,分別為PN碼x(n)、CDMA數據y(n)和它們FFT變換點乘后的數據z(n),可以看出時序符合FFT核的要求。

圖6 FFT/IFFT仿真時序圖(截圖)
在數據運算模塊中,將進行數據(16 bit)點乘運算,其結果導致數據位寬將會增大一倍(32 bit),因此有必要進行數據截取。數據位太寬,會占用過多的資源,而數據精度太低時,會影響數據結果,甚至會導致出錯。本文中在16 bit和24 bit數據位寬兩種情況下進行整個同步模塊的ModelSim仿真,并將相關的結果值用MATLAB繪圖,其結果如圖7和圖8,雖然24 bit的數據均值是16 bit的256倍,但MATLAB計算得出兩種位寬的峰均比分別為13.28和13.29,幾近相等。可以知道,由于CDMA PN碼良好的相關性,只要數據位寬足夠,24 bit寬的數據只是在16 bit寬數據的基礎上增大256倍,但并不影響峰值點的確定。如果在相關性沒這么好的GSM系統中進行同步處理時,如果數據位寬不夠,會導致同步位置偏移幾個點,而在CDMA中影響不大。因此,本文中數據位寬選擇16 bit。


為驗證用Verilog編程的程序算法思想的正確性,將Verilog編寫的每個模塊所生成的數據和用MATLAB仿真產生數據相對比,判定結果是否一致。圖3為用MATLAB仿真的結果,可以看到有3個相關峰(最大峰值的峰均比為13.30),這是由空中截取的CDMA信號包含了相鄰基站的導頻信息所致。但是由于移動終端一般接入最強導頻的基站,本文以最高相關峰為當前服務基站的同步點。而用ModelSim仿真得到的相關數據用MATLAB繪制結果如圖7和圖8,峰均比為13.28和13.29,且得出的同步點和MATLAB的仿真結果一致。因此,用FPGA實現CDMA的短碼同步是可行的。
經過仿真驗證后,進行了板級調試,并用邏輯分析儀觀察FPGA芯片內部信號和輸出信號。圖9為Cyclone III芯片接收USB芯片發送的CDMA數據,CTLO_FLAGA為信號輸出有效信號,FX2FD為接收的數據,每次接收收據大小512 byte,該大小可以通過程序更改。圖10為Stratix II芯片的調試結果,POS_MAX為最大峰值的相位,可以看出該值和之前仿真的結果一致。


本文提出了CDMA下行同步算法,設計了基于Verilog的同步算法模塊,并利用ModelSim對各個模塊進行仿真,并將運算結果和MATLAB仿真結果進行對比,其結果一致。由于PN碼良好的相關性,經過仿真可以得出,在數據位寬為16 bit和24 bit時,雖然得出的數據值不一樣,但最終的峰均值卻幾近相等,因此,為節約FPGA芯片資源,將數據位寬確定為16 bit。最終,經過板級調試和驗證,性能穩定可靠,說明該同步算法是可行的。
[1]徐海燕,田增山,沈建國,等.基于CDMA2000移動目標的探測方法研究[J].重慶郵電大學學報:自然科學版,2008(1):36-38.
[2]OK K M,KANG C G.Generalized window-based PN acquisition scheme in CDMA2000 spread spectrum systems[C]//Proc.Global Telecommunications Conference.[S.l.]:IEEE Press,2005:1530-1534.
[3]殷福亮,宋愛軍.數字信號處理C語言程序集[M].沈陽:遼寧科學技術出版社,1997.
[4]ROSE G,KOIEN G M.Access security in CDMA2000,including a comparison with UMTS access security[J].IEEE Wireless Communications,2004,11(1):19-25.
[5]Altera corporation.FFT MegaCore FunctionuserGuide[EB/OL].[2012-07-10].http://www.altera.com/literature/ug/ug_fft.pdf.2011.
[6]Altera corporation.Integer arithmetic mega functions user guide[DB/OL].[2012-07-10].http://www.altera.com/literature/ug/ug_lpm_alt_mfug.pdf.2010.