許起明,余翔
(重慶郵電大學無線定位與空間測試重點實驗室,重慶 400065)
目前我國的移動通信系統(tǒng)正在由2G向3G過渡,二者將在很長一段時間內(nèi)共存。盡管3G有很多優(yōu)勢但GSM及其增強標準EDGE和GPRS是目前世界上覆蓋最廣的移動通信網(wǎng)絡[1-3],在未來很長一段時間內(nèi),移動終端中仍會兼容GSM標準。GSM系統(tǒng)的同步過程是非常關鍵的技術。移動終端MS能否充分享受到小區(qū)提供的服務,與其開機后能否盡快駐留在一個滿足駐留條件的質量較好的小區(qū)息息相關,這對于以后要進行的各種交互過程都有重大的影響。而駐留小區(qū)的第一個關鍵過程就是同步過程。因此研究同步過程不論是對于2G還是3G都具有重大意義。
本文針對GSM系統(tǒng)提出了一種基于FPGA的下行同步算法設計方案,并且選用Altera公司的Cyclone III系列芯片,經(jīng)Modelsim仿真,板級調試,最終該方案得到驗證并應用到了實際項目中。選用的芯片是Altera公司的Cyclone III系列EP3C25Q240C8芯片,功耗小,系統(tǒng)綜合能力強,價格較低,包含了24 624個邏輯單元、594 KB內(nèi)存大小和4個鎖相環(huán),硬件資源完全滿足測試要求。
在移動通信系統(tǒng)應用中,移動終端MS開機后必須盡快搜索到一個合適的小區(qū),然后與這個小區(qū)達到時隙和頻率上的同步,才能獲取該小區(qū)的詳細信息。移動終端只有在登錄到小區(qū)后才能使用網(wǎng)絡服務。通常把從開機搜索到登錄到合適小區(qū)的過程定義為小區(qū)初始搜索過程,簡稱小區(qū)初搜。同步是小區(qū)初搜中的一個關鍵步驟,指的是從開機到與小區(qū)達到時頻同步的過程。
本文是基于GSM系統(tǒng)中的幀同步,在GSM系統(tǒng)中主要是利用專門的幀(FB和SB)來完成幀同步[4]。
GSM系統(tǒng)的基站通過廣播信道(BCH)傳輸信令信息,它包括3種數(shù)據(jù)類型:頻率矯正突發(fā)(FB),同步突發(fā)(SB)和廣播控制信道(BCCH)。小區(qū)初搜的目的就是解讀這些突發(fā)中的信息來駐留小區(qū)。
控制信道(CCH)包括BCH、公共控制信道(CCCH)和一個空閑(Idle)幀,它的幀結構為51復幀,由51個TDMA幀組成,每幀分為8個時隙(0~7),每個時隙的持續(xù)時間約為576.9 μs (15/26 ms),其中攜帶的物理內(nèi)容叫做突發(fā)(Burst),在每幀的時隙0中發(fā)送廣播信息,其結構如圖1所示[5]。
圖1 CCH的51復幀的幀結構
其中F代表FB,S代表SB,I代表Idle。FCCH對應著一個頻率校正突發(fā)脈沖序列(FB),F(xiàn)B主要有兩個用途:一是MS開機時發(fā)現(xiàn)本地可用的網(wǎng)絡,以駐扎到本地小區(qū),二是MS開機運行時內(nèi)部頻率的微調。FB不攜帶信息,由148個全“0”比特組成,它結構簡單,便于檢測。SCH對應一個突發(fā)脈沖序列(SB),它包含一個64 bit的訓練序列并攜帶有基站識別碼(BSIC)和幀信息。BCCH廣播基站的一般信息,MS解讀這些信息,在確認合法后選擇相應小區(qū),完成整個小區(qū)駐留過程。移動臺通過對這兩種邏輯信道(FCCH和SCH)的同步來實現(xiàn)與基站的同步。其中FCCH用來完成粗同步,SCH用來完成精同步。
由于FCCH經(jīng)GMSK調制后是一個頻率高于載波頻率的67.5 kHz正弦波,其頻譜必然具有尖銳的單峰特性[4]。因此,我們可以在其幅度譜中檢測單峰,進而捕獲FCCH。在FPGA中實現(xiàn)時,可以直接對基帶處理過的數(shù)據(jù)進行FFT處理,并尋找最大峰均比,從而確定FCCH的位置。
FFT算法是基于離散傅里葉變換(DFT)及其反變換的求和運算的嵌套分解以及復數(shù)乘法的對稱性來實現(xiàn)的。如式(1)和式(2):
式(1)是傅里葉正變換,式(2)是傅里葉逆變換,其中x(n)是時域周期序列,X(k)是頻域周期序列。
其中一類FFT算法為庫利—圖基(Cooley-Tukey)基r按頻率抽選(DIF)法,將輸入序列循環(huán)分解為N/r個長度為r的序列,并需要級運算。算法的核心是蝶形運算,蝶形運算的速度直接影響整個設計的速度。Altera的FFT IP核選用的是基4運算,若N是2的奇數(shù)冪,則FFT IP核在完成轉換的最后自動使用基2運算。利用FFT IP核大大減小了算法的復雜性。Altera官方提供的FFT IP核具有穩(wěn)定高效等特點,直接調用該IP核,能大大減少開發(fā)周期。
用FPGA實現(xiàn)SCH同步的常見方法有兩種:滑動窗口相關法和基于FFT進行快速相關法。
方法1:滑動窗口相關法?;瑒哟翱谙嚓P法即是對SCH的訓練序列進行滑動延遲并與GSM中頻數(shù)據(jù)序列進行相關處理,獲得最大相關峰,此最大相關峰的位置即是SCH的位置。在FPGA中,在確定完FCCH位置之后,由于這個位置存在一定偏差,這里選取FCCH之后半幀的位置作為起始位置選取1幀數(shù)據(jù)作為GSM中頻數(shù)據(jù)序列,該序列中必然包含SCH的起始位置。選取的這1幀數(shù)據(jù)不變。通過對訓練序列不斷向右滑動,同時將滑動后的序列數(shù)據(jù)與這1幀數(shù)據(jù)做相關。這樣當滑動完這一幀數(shù)據(jù)必然會出現(xiàn)一個最大相關峰,這就是SCH的起始位置。
優(yōu)缺點:這種方法耗費的FPGA的資源較少,實現(xiàn)簡單,但這種方法的實時性不高。
方法2:基于FFT進行快速相關法。FFT快速相關法:在FPGA中可以使用快速傅里葉變換方法來實現(xiàn)相關[6]。
圖2 SCH的算法流程圖
式(3)中序列z(n)是序列x(n)和y(n)的相關結果,由推導可以看出序列z(n)同時也是序列x(-n)和y(n)的卷積。
本文用快速傅里葉變換來實現(xiàn)相關是基于圖2來完成的。本文中所有數(shù)據(jù)都是經(jīng)過4倍采樣處理的,51復幀結構中1幀包含5 000個樣點。具體實現(xiàn)過程如下。
(1) GSM的基帶數(shù)據(jù)用x(n)表示,長度用M表示。SCH的訓練序列的數(shù)據(jù)用y(n)表示,長度用N表示。
(2) 對序列x(n)和y(n)進行補零。在x(n)后面補L-M個零,形成長為L的序列。在y(n)的前面補(M-1)個零,在y(n)的后面補(L-M-N+1)個零,形成長為L的序列。
(3) 選取序列L≥M+N-1,且使L=2r,其中r為正整數(shù)。其中本設計中數(shù)據(jù)長度M為750,SCH訓練序列的數(shù)據(jù)是已知的64bit由于本設計中采用4倍采樣,所以這里訓練序列的長度N為256,L的長度為1 024。
(4) 再對序列x(n)與y(n)分別進行FFT運算,結果分別為X(n)與Y(k)。
(5) 將X(k)的復共軛X*(k)與Y(k)相乘得到Z(k)。
(6) 對Z(k)進行逆傅里葉變換IFFT運算,結果為z(n)。
(7) 最后截取z(n)從第N個到第M個值,找出幅值最大的點的位置,再將所得結果倒序,即得SCH的起始位置。
優(yōu)缺點:算法實現(xiàn)較復雜,耗費FPGA的資源也較多但實時性高,實現(xiàn)同步所需時間短。
實際的應用中要綜合考慮實時性和FPGA芯片資源?;趯崟r性的考慮本文選取基于快速傅里葉變換方法來實現(xiàn)SCH的精同步。實際中選擇的Alter Cyclone III芯片的資源也是完全滿足的。實際測得基于快速傅里葉變換方法來實現(xiàn)SCH的精同步所用時間是毫秒級的而使用滑動窗口相關法則需要幾秒。顯然前者實時性更高。
在完成整個程序的Verilog代碼編寫后,針對實際情況編寫testbench代碼,并用仿真工具Modelsim進行仿真,根據(jù)仿真結果,不斷修改代碼調試,以使仿真結果符合設計要求。
圖3所示是粗同步在Modelsim中的仿真結果,其中datain_real和datain_imag分別是進入FFT的I/Q兩路數(shù)據(jù),dataout_real和dataout_imag分別是經(jīng)過FFT處理后的I/Q兩路數(shù)據(jù)。frames_in是進入FFT的幀數(shù), frames_out是經(jīng)過FFT處理后的幀數(shù)。num是存放FCCH位置的計數(shù)器。如圖num由46幀變?yōu)?54幀,這里的FFT的幀長為512,它們之間的距離轉化為51復幀就是11幀,這就說明frames_in為154的幀就是要找的FCCH的位置。圖4是FCCH在MATLAB中的頻譜分析圖,其中橫坐標代表進行FFT處理的數(shù)據(jù)位置標號,縱坐標代表數(shù)據(jù)經(jīng)過FFT處理過后的峰值大小,這里在Modelsim和MATLAB處理的是同一組數(shù)據(jù),由圖中可以看出的結果和Modelsim仿真結果一致,這里MATLAB是從第1幀開始計數(shù)的,而在FPGA中是從第0幀開始計數(shù)的。
圖3 粗同步仿真時序圖
圖4 粗同步MATLAB仿真時序圖
圖5是精同步在MATLAB中的時序分析圖。其中橫坐標代表進行IFFT處理的數(shù)據(jù)位置標號,縱坐標代表數(shù)據(jù)經(jīng)過IFFT處理過后的峰值大小,這里在Modelsim和MATLAB處理的是同一組數(shù)據(jù),對比發(fā)現(xiàn)其結果和Modelsim仿真出來的結果一致。圖6是精同步在仿真工具Modelsim中的仿真結果,其中source_real-rrr和source_imag_iii分別是經(jīng)IFFT變換后數(shù)據(jù)的I/Q路,max為這I/Q兩路數(shù)據(jù)的幅值比較找出最大幅值點,log為最大幅值點的位置。
圖5 精同步MATLAB仿真時序圖
通過仿真對比驗證可以證明此算法是切實可行的。在FPGA中可以實現(xiàn)整個算法流程。
圖6 精同步仿真時序圖
圖7 粗同步流程圖
本文中調用FFT IP核來實現(xiàn)FFT變換,F(xiàn)FT核的參數(shù)選取如下:變換長度(Transform Length)為512,數(shù)據(jù)精度(Data Precision)為12 bit,數(shù)據(jù)流模式(I/O Data Flow)為流模式,其它選項選擇為默認。從IP核配置界面中可知,占用的LEs為3 265,Memory Bits為90 112,可見實現(xiàn)粗同步對芯片資源耗費還是很高的。最后對經(jīng)過FFT變換的數(shù)據(jù)的模值取峰均比,由于GSM FCCH的特性在一個51復幀會出現(xiàn)5個峰均比很大的點,這5個點之間相距10幀的長度,一個51復幀中最后一個峰均比很大的點與下一個51復幀的第一個峰均比很大的點之間由于有1個Idle幀,它們相隔11幀。所以只要計算這幾個明顯比較大的峰均比的點的距離即可找到FCCH的位置。
當確定FCCH的位置后,由GSM 51復幀結構可以看出FCCH幀與SCH幀相隔1幀,因本文的數(shù)據(jù)為4倍采樣的數(shù)據(jù),因此一幀的距離就有5 000個樣點。實際項目中在確定FCCH位置后選它之后的4 700點開始存750個樣點進入FIFO中,這750個樣點必然包含SCH的起始位置。然后按快速傅里葉變換方法對它進行補零形成1 024序列。再對補零之后的序列進行FFT變換。這里采用的FFT的參數(shù)如下:變換長度為1 024,數(shù)據(jù)精度為12 bit, 數(shù)據(jù)流模式為突發(fā)模式(數(shù)據(jù)吞吐量小但占用資源少),其它選項選擇為默認。從IP核的配置頁面可看出,所占用的LEs是2 814,Memory Bits為 57 344。
GSM的SCH對應一個突發(fā)脈沖序列(SB),它包含一個64 bit的訓練序列是已知的,這里也要對訓練序列進行4倍采樣,然后按快速傅里葉變換方法對它進行補零成1 024序列。實際項目中對補零的1 024序列在MATLAB中做FFT變換然后把變換之后的結果保存在Altera 的ROM IP核中。
根據(jù)快速傅里葉變換方法,對這兩組數(shù)據(jù)補零形成1 024序列再進行共軛點乘。在FPGA中可以利用一個乘法器完成這一功能。實際項目中所選用的乘法器是Alter提供的ALTMULT_ADD這一IP核。這個IP核有4個輸入1個輸出,由于GSM數(shù)據(jù)分為I/Q兩路,選用這一IP核可以一次性計算一組數(shù)據(jù)的點,而不需要使用多個普通的乘法器IP核,因此,該方式節(jié)約了芯片資源。
最后對乘法器輸出的數(shù)據(jù)(24bit)進行IFFT變換。由于芯片上的資源有限,實際中沒有用24bit的FFT IP核,這里采用的FFT是復用上一個FFT。實際中選擇乘法器輸出的數(shù)據(jù)的高12bit進入FFT中進行數(shù)據(jù)的相應處理,實驗證明這種選取偏差很小,實際中可以采用。
對IFFT輸出的最后結果,截取其中第N個到第M個值,找出幅值最大的點的位置,再將所得結果倒序,即得要找的SCH的起始位置。
同頻流程見圖7和圖8。
圖8 精同步流程圖
為驗證Verilog編寫的程序的正確性,使用Quartus II中自帶的邏輯分析儀(SignalTap II Logic Analyzer)對FPGA芯片內(nèi)部的輸入和輸出信號進行實時的采樣,把各個模塊的實際結果與Modelsim仿真的結果進行對比驗證。經(jīng)過不斷地調試使實際處理數(shù)據(jù)得到的結果和Modelsim仿真得出的結果一致。
通過粗同步邏輯分析儀時序圖,可以看出該結果和Modelsim中的仿真結果一致。與精同步的邏輯分析時序圖對比發(fā)現(xiàn)其結果也和Modelsim仿真結果一致。
經(jīng)過邏輯分析儀的驗證,說明此算法在FPGA中實現(xiàn)是可行的且實時性好、穩(wěn)定度高。
本文基于FPGA提出一種高實時性的GSM幀同步實現(xiàn)方案。通過Modelsim對各子模塊進行仿真測試,并借助Altera Cyclone III芯片進行板級聯(lián)調,最后利用Quartus II自帶的邏輯分析儀進行調試和驗證,該方案的可行性已在工程實現(xiàn)中得到了極好的驗證,同時該方案也對其它通信系統(tǒng)幀同步的實現(xiàn)具有一定參考價值。
[1] Halonen T, Romero J, Melero J著,彭木根, 劉萍譯. GSM/ GPRS和EDGE系統(tǒng)及其關鍵技術: 向3G/UMTS系統(tǒng)演化[M] .北京:中國鐵道出版社, 2004.
[2] ETSI EN 300 908, Multiplexing and Multiple Access on the Radio Path(GSM 05.02 Version 8.5.1)[S]. 1999.
[3] ETSI EN 300 959, Modulation (GSM 05.04 version 8.1.2) [S].1999.
[4] 夏玲.GSM/GPRS系統(tǒng)物理層算法仿真及基于ZSP核的優(yōu)化實現(xiàn)[J].浙江大學.2006.
[5] 王正生.GSM接收機同步技術研究與基于FPGA和DSP的接收機設計[J].北京交通大學.2009.
[6] 何方白,張德明,陽莉,李強,劉煥淋.數(shù)字信號處理[M].北京:高等教育出版社.2009.
[7] Altera Corporation.Integer arithmetic megafunctions user guide[EB/OL]. http:// www. altera.com/literature/ug/ug_lpm_alt_mfug.pdf.2010.
[8] Altera Corporation. FFT MegaCore functionuser guide[DB/OL]. http://www.altera. com/literature/ug/ug_fft.pdf. 2011.