楊 堅,郭里婷,陳偉強
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
基于FPGA的北斗導(dǎo)航電文譯碼器的研究與設(shè)計
楊 堅,郭里婷,陳偉強
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
通過對北斗導(dǎo)航電文BCH糾錯編譯碼方式的深入理解和研究,提出了一種基于并行數(shù)據(jù)處理的BCH譯碼器的設(shè)計方案。該方案利用FPGA對BCH電文進行并行處理,在一個時鐘周期內(nèi)實現(xiàn)電文譯碼,提高了BCH解碼模塊的譯碼效率;同時給出了系統(tǒng)各個模塊的Modelsim仿真結(jié)果與分析,驗證了設(shè)計的可行性。本設(shè)計對提高接收機的基帶數(shù)據(jù)處理性能有一定的參考和指導(dǎo)意義。
北斗導(dǎo)航電文;BCH譯碼;并行處理;譯碼效率
北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國正在實施的自主發(fā)展、獨立運行的全球衛(wèi)星導(dǎo)航系統(tǒng),是繼美國的全球定位系統(tǒng)(GPS)、俄羅斯的格洛納斯衛(wèi)星導(dǎo)航系統(tǒng)(GLONASS)之后第三個成熟的衛(wèi)星導(dǎo)航系統(tǒng)[1]。2013年12月,《北斗系統(tǒng)公開服務(wù)性能規(guī)范(1.0版)》和《北斗系統(tǒng)空間信號接口控制文件(2.0版)》正式發(fā)布,意味著北斗衛(wèi)星導(dǎo)航系統(tǒng)對區(qū)域提供的服務(wù)正式進入規(guī)范標(biāo)準(zhǔn)階段。其中空間信號接口控制文件對北斗衛(wèi)星導(dǎo)航系統(tǒng)的目標(biāo)和B1I、B2I信號結(jié)構(gòu)進行了詳細定義[2]。
隨著北斗系統(tǒng)的不斷完善以及應(yīng)用的深入,用戶對北斗接收機的性能要求越來越高。為了提高接收機性能,設(shè)計方案必須考慮處理器的資源、速度以及存儲空間等參數(shù)。如果接收機的大部分基帶信號能夠通過FPGA并行處理,那么對提高接收機的性能就具有非常大的意義。本文根據(jù)北斗導(dǎo)航電文BCH譯碼原理,提出了一種基于并行數(shù)據(jù)處理的快速BCH譯碼方式,并在FPGA系統(tǒng)上實現(xiàn),提高了譯碼器效率。通過Modelsim對系統(tǒng)模塊的功能仿真驗證了設(shè)計的可行性,該設(shè)計方案具有一定的工程應(yīng)用參考價值。
導(dǎo)航電文采取BCH(15,11,1)碼加交織方式進行糾錯[3]。BCH碼位長為15 bit,信息位11 bit,糾錯能力1 bit,其生成多項式為g(X)=X4+X+1。一組22 bit的導(dǎo)航電文數(shù)據(jù)碼(表1所示),進入糾錯編碼系統(tǒng)后,按照每11 bit順序分成兩組后進行BCH(15,11,1)編碼、交織操作,輸出30 bit的交織編碼。
表1 22 bit導(dǎo)航電文數(shù)據(jù)碼結(jié)構(gòu)
每兩組 BCH(15,11,1)碼按比特交錯方式組成30 bit碼長的交織碼,30 bit碼長的交織碼編碼結(jié)構(gòu)如表2所示。
表2 30 bit交織碼數(shù)據(jù)格式
接收機接收到數(shù)據(jù)碼信息后按每1 bit順序進行串/并變換,然后進行 BCH(15,11,1)糾錯譯碼,再對交織部分按每11 bit順序進行并/串變換,組成22 bit信息碼,其譯碼流程如圖1所示。
圖1 譯碼原理框圖
BCH(15,11,1)譯碼框圖如圖2所示,其中,初始時移位寄存器清零,BCH 碼組逐位輸入到除法電路和15級糾錯緩存器中,當(dāng)BCH 碼的15位全部輸入后,糾錯信號ROM表利用除法電路的4級移位寄存器的狀態(tài)D3、D2、D1、D0 查表,得到15位糾錯信號與15級糾錯緩存器里的值模二加,最后輸出糾錯后的信息碼組[2,4]。糾錯信號的ROM表詳見參考文獻[2]。
圖2 BCH(15,11,1)譯碼框圖
3.1 系統(tǒng)總體方案
從傳統(tǒng)的北斗導(dǎo)航電文BCH(15,11,1)譯碼原理(圖2所示)可知,BCH譯碼器每一個時鐘周期只處理一位碼字,需采用頻繁的循環(huán)移位實現(xiàn)譯碼,如果碼組多了,將占用大量CPU資源并影響接收機對信號實時處理的要求[5]。鑒于傳統(tǒng)譯碼方式的缺點,將圖2所示原理框圖進行改進,提出并行處理的一種運算方法。改進的糾錯譯碼系統(tǒng)總體框圖如圖3所示。
圖3 譯碼系統(tǒng)總體框圖
考慮到數(shù)據(jù)是以數(shù)據(jù)流的格式輸入到糾錯譯碼系統(tǒng)中,所以直接將數(shù)據(jù)流給并行數(shù)據(jù)處理的譯碼單元并不現(xiàn)實。因此在單元前級加一級30 bit的串/并轉(zhuǎn)換模塊,將串行數(shù)據(jù)流轉(zhuǎn)換成并行數(shù)據(jù);為保證輸出同樣是數(shù)據(jù)流格式,譯碼單元后級再加一級22 bit的并/串轉(zhuǎn)換模塊。在實際應(yīng)用過程中,為使信號保持同步狀態(tài),需要加入幀同步模塊。并行處理的BCH譯碼系統(tǒng),先將輸入的30 bit的交織碼數(shù)據(jù)流進行30 bit的串/并轉(zhuǎn)換,輸出30位并行的數(shù)據(jù)后輸入BCH譯碼單元進行并行譯碼,在一個時鐘周期輸出22 bit的導(dǎo)航電文信息碼進行后面的導(dǎo)航解算。
3.2 BCH并行譯碼單元設(shè)計
假設(shè)BCH譯碼模塊(如圖2所示)輸入的15比特碼為:{X1、X2、X3、X4…X13、X14、X15},那么根據(jù)圖2的數(shù)據(jù)流動形式,BCH碼與糾錯信號標(biāo)識{D3、D2、D1、D0}之間的關(guān)系可以表示為:
D0(0)=D1(0)=D2(0)=D3(0)=0
(1)
D0(i)=Xi⊕D3(i-1)
(2)
D1(i)=D0(i-1)⊕D3(i-1)
(3)
D2(i)=D1(i-1)
(4)
D3(i)=D2(i-1)
(5)
從最高位X1~X15順序移位,最終得到BCH碼對應(yīng)的糾錯標(biāo)識信號{D3D2D1D0},上式中從i=1開始迭代運算,最后當(dāng)i=15時,可以分別得到D3、D2、D1、D0的表達式[2,6]:
D3=X12⊕X9⊕X8⊕X6⊕X4⊕X3⊕X2⊕X1
(6)
D2=X13⊕X10⊕X9⊕X7⊕X5⊕X4⊕X3⊕X2
(7)
D1=X14⊕X11⊕X10⊕X8⊕X6⊕X5⊕X4⊕X3
(8)
D0=X15⊕X11⊕X8⊕X7⊕X5⊕X3⊕X2⊕X1
(9)
其中X1 X2…X14 X15表示15 bit的BCH碼組。⊕代表模2加運算。
圖4 并行結(jié)構(gòu)譯碼
根據(jù)式(6)~(9),將圖2的譯碼框圖結(jié)構(gòu)等效為圖4所示并行數(shù)據(jù)處理的譯碼結(jié)構(gòu)框圖[7]。模塊輸入端數(shù)據(jù)采用15位的并行數(shù)據(jù)輸入,在15位的數(shù)據(jù)輸入之后,經(jīng)過15通道的開關(guān)門組對輸入的數(shù)據(jù){X1、X2、X3…X14、X15}進行選擇后進行模2運算得到相應(yīng)的D3、D2、D1、D0值;其次根據(jù)糾錯標(biāo)識信號D3D2D1D0查找糾錯標(biāo)識信號對應(yīng)的ROM表,得到15位的糾錯信號;最后將所得15位糾錯信號與輸入的15位數(shù)據(jù)碼進行模2運算后輸出糾錯譯碼。在FPGA系統(tǒng)中,該譯碼單元可以在一個周期內(nèi)算出D3 D2 D1 D0,大大提高了運算速度。圖5是并行譯碼單元的電路RTL視圖。
圖5 并行譯碼單元FPGA設(shè)計的RTL示意圖
本設(shè)計采用Verilog語言[8],在Quartus II 11.0開發(fā)軟件平臺下完成,仿真軟件為Quartus II 11.0自帶的Modelsim 6.6d版本。
4.1 30 bit串/并轉(zhuǎn)換器仿真
本設(shè)計30 bit串/并轉(zhuǎn)換器目的在于將輸入的一字?jǐn)?shù)據(jù)流形式的30 bit交織編碼轉(zhuǎn)換成30 bit的并行數(shù)據(jù)輸出。模塊的Modelsim仿真圖如圖6所示。
圖6 30 bit串/并轉(zhuǎn)換器Modelsim仿真圖
在系統(tǒng)時鐘上升沿時將實際記錄的衛(wèi)星電文以數(shù)據(jù)流的形式從data_in輸入,在完成30 bit的導(dǎo)航電文字段接收后,由data_out并行輸出30 bit數(shù)據(jù),同時在輸出數(shù)據(jù)使能dout_en產(chǎn)生脈沖。
4.2 并行數(shù)據(jù)譯碼單元仿真
并行數(shù)據(jù)譯碼單元根據(jù)圖4原理設(shè)計。實際設(shè)計中將兩路的并行譯碼單元結(jié)構(gòu)進行優(yōu)化和合并,設(shè)計出支持30 bit的輸入的并行譯碼單元,能夠?qū)崿F(xiàn)將30 bit并行輸入的數(shù)據(jù)碼進行22 bit BCH譯碼輸出。其中30 bit交織碼的解交織過程在模塊內(nèi)部實現(xiàn)。模塊的Modelsim仿真圖如圖7所示。
圖7 譯碼單元Modelsim仿真圖
將實際測試得到的一個完整無誤碼的30 bit北斗導(dǎo)航電文字段作為仿真測試數(shù)據(jù)源并行輸入。如圖7所示,在一個時鐘周期內(nèi),譯碼單元將并行30 bit數(shù)據(jù)解交織為or_data1和or_data2的兩路15 bit數(shù)據(jù),并根據(jù)本文設(shè)計的并行譯碼器分別計算出兩路信號的糾錯標(biāo)識信號a、b。由于輸入數(shù)據(jù)不存在誤碼,糾錯標(biāo)識信號和糾錯信號re_data1、re_data2均為0,直接由兩路數(shù)據(jù)中的11 bit信息位拼接得到22 bit數(shù)據(jù)輸出data_out。
圖8 譯碼單元糾錯仿真
4.3 22 bit并/串轉(zhuǎn)換器仿真
將譯碼單元的輸出22 bit數(shù)據(jù)進行并/串轉(zhuǎn)換為數(shù)據(jù)流輸出到后級進行電文解算。若后級的處理器支持并行數(shù)據(jù)的輸入,則并/串轉(zhuǎn)換模塊可以省去。模塊的Modelsim仿真結(jié)果如圖9所示。
圖9 22 bit并/串轉(zhuǎn)換模塊Modelsim仿真圖
北斗GEO衛(wèi)星信號每比特電文長2 ms,一個導(dǎo)航字持續(xù)60 ms,非GEO衛(wèi)星信號每比特電文長20 ms,一個導(dǎo)航字持續(xù)600 ms。傳統(tǒng)譯碼器需要時刻記錄導(dǎo)航電文比特流,通過復(fù)雜的移位實現(xiàn)譯碼,因此一臺12路跟蹤通道的接收機需要12路獨立譯碼器。而本文設(shè)計的并行譯碼器譯碼周期短,只需在各通道增加串并轉(zhuǎn)換模塊和狀態(tài)選擇機制即可實現(xiàn)譯碼器的分時復(fù)用,提高了譯碼器使用效率。傳統(tǒng)接收機和并行譯碼接收機的性能對比如表3所示。
表3 兩種方式譯碼的性能對比
經(jīng)過仿真測試,驗證了本文提出的基于FPGA的北斗導(dǎo)航電文譯碼器設(shè)計方案的可行性。該方案采用并行處理方式,在保證譯碼準(zhǔn)確率的前提下有效提高了譯碼器的工作效率。此外,該譯碼器采用模塊化設(shè)計,易于集成至接收機中,對北斗接收機譯碼模塊設(shè)計有一定的參考意義。
[1] 邢金清,陳泓吉.北斗衛(wèi)星導(dǎo)航系統(tǒng)現(xiàn)狀及發(fā)展意義[J].黑龍江科技信息,2015(13):97.
[2] 中國衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室.北斗衛(wèi)星導(dǎo)航系統(tǒng)空間信號接口控制文件公開服務(wù)信號(2.0版)[Z].2013.
[3] 寧楠,鮑慧,宋文妙,等.一種基于FPGA的糾錯編譯碼器的設(shè)計與實現(xiàn)[J].通信技術(shù),2008,41(8):95-97,100.
[4] 王迪,郝士琦,朱斌,等.“北斗”2代B1I信號導(dǎo)航電文分析[J].航天電子對抗,2013,29(6):30-32.
[5] 連帥,閆利軍,孫科,等.北斗2代衛(wèi)星導(dǎo)航電文糾錯校驗設(shè)計與仿真[J].計算機測量與控制,2010,18(10):2344-2347.
[6] 藺曉龍,何文濤,徐建華,等.多模 GNSS接收機中BCH(15,11,1)并行解碼算法[J].微電子學(xué)與計算機,2014(2):50-53.
[7] 金婕,于敦山.高速并行BCH譯碼器的VLSI設(shè)計[J].北京大學(xué)學(xué)報(自然科學(xué)版),2009,45(2):233-237.
[8] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社, 2008.
Research and design of the navigation message decoder based on FPGA
Yang Jian, Guo Liting,Chen Weiqiang
(College of Physics and Information Engineering, Fuzhou University, Fuzhou 350002,China)
Through the deep understanding and researching of the BCH error correcting codes, a design scheme of BCH decoder based on parallel data processing is proposed. The scheme uses FPGA to process BCH message in parallel, can realize message decoding in one clock cycle, which improves the efficiency of decoding of BCH decoding module. Also the scheme gives each module of the system with Modelsim simulation results and analysis to verify the feasibility of the design. The design has certain reference and guiding significance for improving the receive baseband data processing performance.
BDS navigation message;BCH decoding;;parallel processing;decoding efficiency
TN967.1;TN918.3
A
1674-7720(2016)01-0071-03
楊堅,郭里婷,陳偉強.基于FPGA的北斗導(dǎo)航電文譯碼器的研究與設(shè)計[J].微型機與應(yīng)用,2016,35(1):71-73,80.
2015-08-15)
楊堅(1991-),男,碩士研究生,主要研究方向:衛(wèi)星導(dǎo)航基帶信號處理。
郭里婷(1976-),女,博士,副教授,主要研究方向:通信中的信號處理。
陳偉強(1989-),男,碩士,工程師,主要研究方向:衛(wèi)星導(dǎo)航基帶信號處理。
____________________