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