楊 堅(jiān),郭里婷,陳偉強(qiáng)
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
基于FPGA的北斗導(dǎo)航電文譯碼器的研究與設(shè)計(jì)
楊 堅(jiān),郭里婷,陳偉強(qiáng)
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
通過對北斗導(dǎo)航電文BCH糾錯(cuò)編譯碼方式的深入理解和研究,提出了一種基于并行數(shù)據(jù)處理的BCH譯碼器的設(shè)計(jì)方案。該方案利用FPGA對BCH電文進(jìn)行并行處理,在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)電文譯碼,提高了BCH解碼模塊的譯碼效率;同時(shí)給出了系統(tǒng)各個(gè)模塊的Modelsim仿真結(jié)果與分析,驗(yàn)證了設(shè)計(jì)的可行性。本設(shè)計(jì)對提高接收機(jī)的基帶數(shù)據(jù)處理性能有一定的參考和指導(dǎo)意義。
北斗導(dǎo)航電文;BCH譯碼;并行處理;譯碼效率
北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國正在實(shí)施的自主發(fā)展、獨(dú)立運(yùn)行的全球衛(wèi)星導(dǎo)航系統(tǒng),是繼美國的全球定位系統(tǒng)(GPS)、俄羅斯的格洛納斯衛(wèi)星導(dǎo)航系統(tǒng)(GLONASS)之后第三個(gè)成熟的衛(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ù)正式進(jìn)入規(guī)范標(biāo)準(zhǔn)階段。其中空間信號接口控制文件對北斗衛(wèi)星導(dǎo)航系統(tǒng)的目標(biāo)和B1I、B2I信號結(jié)構(gòu)進(jìn)行了詳細(xì)定義[2]。
隨著北斗系統(tǒng)的不斷完善以及應(yīng)用的深入,用戶對北斗接收機(jī)的性能要求越來越高。為了提高接收機(jī)性能,設(shè)計(jì)方案必須考慮處理器的資源、速度以及存儲空間等參數(shù)。如果接收機(jī)的大部分基帶信號能夠通過FPGA并行處理,那么對提高接收機(jī)的性能就具有非常大的意義。本文根據(jù)北斗導(dǎo)航電文BCH譯碼原理,提出了一種基于并行數(shù)據(jù)處理的快速BCH譯碼方式,并在FPGA系統(tǒng)上實(shí)現(xiàn),提高了譯碼器效率。通過Modelsim對系統(tǒng)模塊的功能仿真驗(yàn)證了設(shè)計(jì)的可行性,該設(shè)計(jì)方案具有一定的工程應(yīng)用參考價(jià)值。
導(dǎo)航電文采取BCH(15,11,1)碼加交織方式進(jìn)行糾錯(cuò)[3]。BCH碼位長為15 bit,信息位11 bit,糾錯(cuò)能力1 bit,其生成多項(xiàng)式為g(X)=X4+X+1。一組22 bit的導(dǎo)航電文數(shù)據(jù)碼(表1所示),進(jìn)入糾錯(cuò)編碼系統(tǒng)后,按照每11 bit順序分成兩組后進(jìn)行BCH(15,11,1)編碼、交織操作,輸出30 bit的交織編碼。

表1 22 bit導(dǎo)航電文數(shù)據(jù)碼結(jié)構(gòu)
每兩組 BCH(15,11,1)碼按比特交錯(cuò)方式組成30 bit碼長的交織碼,30 bit碼長的交織碼編碼結(jié)構(gòu)如表2所示。

表2 30 bit交織碼數(shù)據(jù)格式
接收機(jī)接收到數(shù)據(jù)碼信息后按每1 bit順序進(jìn)行串/并變換,然后進(jìn)行 BCH(15,11,1)糾錯(cuò)譯碼,再對交織部分按每11 bit順序進(jìn)行并/串變換,組成22 bit信息碼,其譯碼流程如圖1所示。

圖1 譯碼原理框圖
BCH(15,11,1)譯碼框圖如圖2所示,其中,初始時(shí)移位寄存器清零,BCH 碼組逐位輸入到除法電路和15級糾錯(cuò)緩存器中,當(dāng)BCH 碼的15位全部輸入后,糾錯(cuò)信號ROM表利用除法電路的4級移位寄存器的狀態(tài)D3、D2、D1、D0 查表,得到15位糾錯(cuò)信號與15級糾錯(cuò)緩存器里的值模二加,最后輸出糾錯(cuò)后的信息碼組[2,4]。糾錯(cuò)信號的ROM表詳見參考文獻(xiàn)[2]。

圖2 BCH(15,11,1)譯碼框圖
3.1 系統(tǒng)總體方案
從傳統(tǒng)的北斗導(dǎo)航電文BCH(15,11,1)譯碼原理(圖2所示)可知,BCH譯碼器每一個(gè)時(shí)鐘周期只處理一位碼字,需采用頻繁的循環(huán)移位實(shí)現(xiàn)譯碼,如果碼組多了,將占用大量CPU資源并影響接收機(jī)對信號實(shí)時(shí)處理的要求[5]。鑒于傳統(tǒng)譯碼方式的缺點(diǎn),將圖2所示原理框圖進(jìn)行改進(jìn),提出并行處理的一種運(yùn)算方法。改進(jìn)的糾錯(cuò)譯碼系統(tǒng)總體框圖如圖3所示。

圖3 譯碼系統(tǒng)總體框圖
考慮到數(shù)據(jù)是以數(shù)據(jù)流的格式輸入到糾錯(cuò)譯碼系統(tǒng)中,所以直接將數(shù)據(jù)流給并行數(shù)據(jù)處理的譯碼單元并不現(xiàn)實(shí)。因此在單元前級加一級30 bit的串/并轉(zhuǎn)換模塊,將串行數(shù)據(jù)流轉(zhuǎn)換成并行數(shù)據(jù);為保證輸出同樣是數(shù)據(jù)流格式,譯碼單元后級再加一級22 bit的并/串轉(zhuǎn)換模塊。在實(shí)際應(yīng)用過程中,為使信號保持同步狀態(tài),需要加入幀同步模塊。并行處理的BCH譯碼系統(tǒng),先將輸入的30 bit的交織碼數(shù)據(jù)流進(jìn)行30 bit的串/并轉(zhuǎn)換,輸出30位并行的數(shù)據(jù)后輸入BCH譯碼單元進(jìn)行并行譯碼,在一個(gè)時(shí)鐘周期輸出22 bit的導(dǎo)航電文信息碼進(jìn)行后面的導(dǎo)航解算。
3.2 BCH并行譯碼單元設(shè)計(jì)
假設(shè)BCH譯碼模塊(如圖2所示)輸入的15比特碼為:{X1、X2、X3、X4…X13、X14、X15},那么根據(jù)圖2的數(shù)據(jù)流動(dòng)形式,BCH碼與糾錯(cuò)信號標(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)的糾錯(cuò)標(biāo)識信號{D3D2D1D0},上式中從i=1開始迭代運(yùn)算,最后當(dāng)i=15時(shí),可以分別得到D3、D2、D1、D0的表達(dá)式[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加運(yùn)算。

圖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}進(jìn)行選擇后進(jìn)行模2運(yùn)算得到相應(yīng)的D3、D2、D1、D0值;其次根據(jù)糾錯(cuò)標(biāo)識信號D3D2D1D0查找糾錯(cuò)標(biāo)識信號對應(yīng)的ROM表,得到15位的糾錯(cuò)信號;最后將所得15位糾錯(cuò)信號與輸入的15位數(shù)據(jù)碼進(jìn)行模2運(yùn)算后輸出糾錯(cuò)譯碼。在FPGA系統(tǒng)中,該譯碼單元可以在一個(gè)周期內(nèi)算出D3 D2 D1 D0,大大提高了運(yùn)算速度。圖5是并行譯碼單元的電路RTL視圖。

圖5 并行譯碼單元FPGA設(shè)計(jì)的RTL示意圖
本設(shè)計(jì)采用Verilog語言[8],在Quartus II 11.0開發(fā)軟件平臺下完成,仿真軟件為Quartus II 11.0自帶的Modelsim 6.6d版本。
4.1 30 bit串/并轉(zhuǎn)換器仿真
本設(shè)計(jì)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)時(shí)鐘上升沿時(shí)將實(shí)際記錄的衛(wèi)星電文以數(shù)據(jù)流的形式從data_in輸入,在完成30 bit的導(dǎo)航電文字段接收后,由data_out并行輸出30 bit數(shù)據(jù),同時(shí)在輸出數(shù)據(jù)使能dout_en產(chǎn)生脈沖。
4.2 并行數(shù)據(jù)譯碼單元仿真
并行數(shù)據(jù)譯碼單元根據(jù)圖4原理設(shè)計(jì)。實(shí)際設(shè)計(jì)中將兩路的并行譯碼單元結(jié)構(gòu)進(jìn)行優(yōu)化和合并,設(shè)計(jì)出支持30 bit的輸入的并行譯碼單元,能夠?qū)崿F(xiàn)將30 bit并行輸入的數(shù)據(jù)碼進(jìn)行22 bit BCH譯碼輸出。其中30 bit交織碼的解交織過程在模塊內(nèi)部實(shí)現(xiàn)。模塊的Modelsim仿真圖如圖7所示。

圖7 譯碼單元Modelsim仿真圖
將實(shí)際測試得到的一個(gè)完整無誤碼的30 bit北斗導(dǎo)航電文字段作為仿真測試數(shù)據(jù)源并行輸入。如圖7所示,在一個(gè)時(shí)鐘周期內(nèi),譯碼單元將并行30 bit數(shù)據(jù)解交織為or_data1和or_data2的兩路15 bit數(shù)據(jù),并根據(jù)本文設(shè)計(jì)的并行譯碼器分別計(jì)算出兩路信號的糾錯(cuò)標(biāo)識信號a、b。由于輸入數(shù)據(jù)不存在誤碼,糾錯(cuò)標(biāo)識信號和糾錯(cuò)信號re_data1、re_data2均為0,直接由兩路數(shù)據(jù)中的11 bit信息位拼接得到22 bit數(shù)據(jù)輸出data_out。

圖8 譯碼單元糾錯(cuò)仿真
4.3 22 bit并/串轉(zhuǎn)換器仿真
將譯碼單元的輸出22 bit數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換為數(shù)據(jù)流輸出到后級進(jìn)行電文解算。若后級的處理器支持并行數(shù)據(jù)的輸入,則并/串轉(zhuǎn)換模塊可以省去。模塊的Modelsim仿真結(jié)果如圖9所示。

圖9 22 bit并/串轉(zhuǎn)換模塊Modelsim仿真圖
北斗GEO衛(wèi)星信號每比特電文長2 ms,一個(gè)導(dǎo)航字持續(xù)60 ms,非GEO衛(wèi)星信號每比特電文長20 ms,一個(gè)導(dǎo)航字持續(xù)600 ms。傳統(tǒng)譯碼器需要時(shí)刻記錄導(dǎo)航電文比特流,通過復(fù)雜的移位實(shí)現(xiàn)譯碼,因此一臺12路跟蹤通道的接收機(jī)需要12路獨(dú)立譯碼器。而本文設(shè)計(jì)的并行譯碼器譯碼周期短,只需在各通道增加串并轉(zhuǎn)換模塊和狀態(tài)選擇機(jī)制即可實(shí)現(xiàn)譯碼器的分時(shí)復(fù)用,提高了譯碼器使用效率。傳統(tǒng)接收機(jī)和并行譯碼接收機(jī)的性能對比如表3所示。

表3 兩種方式譯碼的性能對比
經(jīng)過仿真測試,驗(yàn)證了本文提出的基于FPGA的北斗導(dǎo)航電文譯碼器設(shè)計(jì)方案的可行性。該方案采用并行處理方式,在保證譯碼準(zhǔn)確率的前提下有效提高了譯碼器的工作效率。此外,該譯碼器采用模塊化設(shè)計(jì),易于集成至接收機(jī)中,對北斗接收機(jī)譯碼模塊設(shè)計(jì)有一定的參考意義。
[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的糾錯(cuò)編譯碼器的設(shè)計(jì)與實(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)航電文糾錯(cuò)校驗(yàn)設(shè)計(jì)與仿真[J].計(jì)算機(jī)測量與控制,2010,18(10):2344-2347.
[6] 藺曉龍,何文濤,徐建華,等.多模 GNSS接收機(jī)中BCH(15,11,1)并行解碼算法[J].微電子學(xué)與計(jì)算機(jī),2014(2):50-53.
[7] 金婕,于敦山.高速并行BCH譯碼器的VLSI設(shè)計(jì)[J].北京大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,45(2):233-237.
[8] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[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
楊堅(jiān),郭里婷,陳偉強(qiáng).基于FPGA的北斗導(dǎo)航電文譯碼器的研究與設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(1):71-73,80.
2015-08-15)
楊堅(jiān)(1991-),男,碩士研究生,主要研究方向:衛(wèi)星導(dǎo)航基帶信號處理。
郭里婷(1976-),女,博士,副教授,主要研究方向:通信中的信號處理。
陳偉強(qiáng)(1989-),男,碩士,工程師,主要研究方向:衛(wèi)星導(dǎo)航基帶信號處理。
____________________