摘要:通過(guò)對(duì)北斗導(dǎo)航電文BCH糾錯(cuò)編譯碼方式的深入理解和研究,,提出了一種基于并行數(shù)據(jù)處理的BCH譯碼器的設(shè)計(jì)方案。該方案利用FPGA對(duì)BCH電文進(jìn)行并行處理,,在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)電文譯碼,,提高了BCH解碼模塊的譯碼效率;同時(shí)給出了系統(tǒng)各個(gè)模塊的Modelsim仿真結(jié)果與分析,,驗(yàn)證了設(shè)計(jì)的可行性,。本設(shè)計(jì)對(duì)提高接收機(jī)的基帶數(shù)據(jù)處理性能有一定的參考和指導(dǎo)意義。
關(guān)鍵詞:北斗導(dǎo)航電文,;BCH譯碼,;并行處理;譯碼效率
0引言
北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國(guó)正在實(shí)施的自主發(fā)展,、獨(dú)立運(yùn)行的全球衛(wèi)星導(dǎo)航系統(tǒng),,是繼美國(guó)的全球定位系統(tǒng)(GPS)、俄羅斯的格洛納斯衛(wèi)星導(dǎo)航系統(tǒng)(GLONASS)之后第三個(gè)成熟的衛(wèi)星導(dǎo)航系統(tǒng)[1],。2013年12月,,《北斗系統(tǒng)公開(kāi)服務(wù)性能規(guī)范(10版)》和《北斗系統(tǒng)空間信號(hào)接口控制文件(20版)》正式發(fā)布,意味著北斗衛(wèi)星導(dǎo)航系統(tǒng)對(duì)區(qū)域提供的服務(wù)正式進(jìn)入規(guī)范標(biāo)準(zhǔn)階段,。其中空間信號(hào)接口控制文件對(duì)北斗衛(wèi)星導(dǎo)航系統(tǒng)的目標(biāo)和B1I,、B2I信號(hào)結(jié)構(gòu)進(jìn)行了詳細(xì)定義[2],。
隨著北斗系統(tǒng)的不斷完善以及應(yīng)用的深入,用戶(hù)對(duì)北斗接收機(jī)的性能要求越來(lái)越高,。為了提高接收機(jī)性能,,設(shè)計(jì)方案必須考慮處理器的資源、速度以及存儲(chǔ)空間等參數(shù),。如果接收機(jī)的大部分基帶信號(hào)能夠通過(guò)FPGA并行處理,,那么對(duì)提高接收機(jī)的性能就具有非常大的意義。本文根據(jù)北斗導(dǎo)航電文BCH譯碼原理,,提出了一種基于并行數(shù)據(jù)處理的快速BCH譯碼方式,,并在FPGA系統(tǒng)上實(shí)現(xiàn),提高了譯碼器效率,。通過(guò)Modelsim對(duì)系統(tǒng)模塊的功能仿真驗(yàn)證了設(shè)計(jì)的可行性,該設(shè)計(jì)方案具有一定的工程應(yīng)用參考價(jià)值,。
1導(dǎo)航電文糾錯(cuò)編碼數(shù)據(jù)格式
導(dǎo)航電文采取BCH(15,,11,1)碼加交織方式進(jìn)行糾錯(cuò)[3],。BCH碼位長(zhǎng)為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的交織編碼。
每?jī)山M BCH(15,,11,,1)碼按比特交錯(cuò)方式組成30 bit碼長(zhǎng)的交織碼,30 bit碼長(zhǎng)的交織碼編碼結(jié)構(gòu)如表2所示,。
表1和表2中:Xji為信息位,,i表示第i組 BCH碼,j表示第i組 BCH 碼中的第j個(gè)信息位,;Pmi為校驗(yàn)位,,i表示第i組BCH 碼;m 表示第i組BCH 碼中的第m個(gè)校驗(yàn)位,。
2導(dǎo)航電文糾錯(cuò)譯碼原理
接收機(jī)接收到數(shù)據(jù)碼信息后按每1 bit順序進(jìn)行串/并變換,,然后進(jìn)行 BCH(15,,11,1)糾錯(cuò)譯碼,,再對(duì)交織部分按每11 bit順序進(jìn)行并/串變換,,組成22 bit信息碼,其譯碼流程如圖1所示,。
BCH(15,,11,1)譯碼框圖如圖2所示,,其中,,初始時(shí)移位寄存器清零,BCH 碼組逐位輸入到除法電路和15級(jí)糾錯(cuò)緩存器中,,當(dāng)BCH 碼的15位全部輸入后,,糾錯(cuò)信號(hào)ROM表利用除法電路的4級(jí)移位寄存器的狀態(tài)D3、D2,、D1,、D0 查表,得到15位糾錯(cuò)信號(hào)與15級(jí)糾錯(cuò)緩存器里的值模二加,,最后輸出糾錯(cuò)后的信息碼組[2,4],。糾錯(cuò)信號(hào)的ROM表詳見(jiàn)參考文獻(xiàn)[2]。
3并行數(shù)據(jù)處理的糾錯(cuò)譯碼系統(tǒng)設(shè)計(jì)
3.1系統(tǒng)總體方案
從傳統(tǒng)的北斗導(dǎo)航電文BCH(15,,11,,1)譯碼原理(圖2所示)可知,BCH譯碼器每一個(gè)時(shí)鐘周期只處理一位碼字,,需采用頻繁的循環(huán)移位實(shí)現(xiàn)譯碼,,如果碼組多了,將占用大量CPU資源并影響接收機(jī)對(duì)信號(hào)實(shí)時(shí)處理的要求[5],。鑒于傳統(tǒng)譯碼方式的缺點(diǎn),,將圖2所示原理框圖進(jìn)行改進(jìn),提出并行處理的一種運(yùn)算方法,。改進(jìn)的糾錯(cuò)譯碼系統(tǒng)總體框圖如圖3所示,。
考慮到數(shù)據(jù)是以數(shù)據(jù)流的格式輸入到糾錯(cuò)譯碼系統(tǒng)中,所以直接將數(shù)據(jù)流給并行數(shù)據(jù)處理的譯碼單元并不現(xiàn)實(shí),。因此在單元前級(jí)加一級(jí)30 bit的串/并轉(zhuǎn)換模塊,,將串行數(shù)據(jù)流轉(zhuǎn)換成并行數(shù)據(jù);為保證輸出同樣是數(shù)據(jù)流格式,,譯碼單元后級(jí)再加一級(jí)22 bit的并/串轉(zhuǎn)換模塊,。在實(shí)際應(yīng)用過(guò)程中,為使信號(hào)保持同步狀態(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.2BCH并行譯碼單元設(shè)計(jì)
假設(shè)BCH譯碼模塊(如圖2所示)輸入的15比特碼為:{X1、X2,、X3,、X4…X13、X14,、X15},,那么根據(jù)圖2的數(shù)據(jù)流動(dòng)形式,BCH碼與糾錯(cuò)信號(hào)標(biāo)識(shí){D3,、D2,、D1、D0}之間的關(guān)系可以表示為:
從最高位X1~X15順序移位,,最終得到BCH碼對(duì)應(yīng)的糾錯(cuò)標(biāo)識(shí)信號(hào){D3D2D1D0},,上式中從i=1開(kāi)始迭代運(yùn)算,最后當(dāng)i=15時(shí),,可以分別得到D3、D2,、D1,、D0的表達(dá)式[2,6]:
其中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)過(guò)15通道的開(kāi)關(guān)門(mén)組對(duì)輸入的數(shù)據(jù){X1、X2,、X3…X14,、X15}進(jìn)行選擇后進(jìn)行模2運(yùn)算得到相應(yīng)的D3、D2,、D1,、D0值;其次根據(jù)糾錯(cuò)標(biāo)識(shí)信號(hào)D3D2D1D0查找糾錯(cuò)標(biāo)識(shí)信號(hào)對(duì)應(yīng)的ROM表,得到15位的糾錯(cuò)信號(hào),;最后將所得15位糾錯(cuò)信號(hào)與輸入的15位數(shù)據(jù)碼進(jìn)行模2運(yùn)算后輸出糾錯(cuò)譯碼,。在FPGA系統(tǒng)中,該譯碼單元可以在一個(gè)周期內(nèi)算出D3 D2 D1 D0,,大大提高了運(yùn)算速度,。圖5是并行譯碼單元的電路RTL視圖,。
4設(shè)計(jì)結(jié)果與仿真
本設(shè)計(jì)采用Verilog語(yǔ)言[8],在Quartus II 110開(kāi)發(fā)軟件平臺(tái)下完成,,仿真軟件為Quartus II 110自帶的Modelsim 66d版本,。
4.130 bit串/并轉(zhuǎn)換器仿真
本設(shè)計(jì)30 bit串/并轉(zhuǎn)換器目的在于將輸入的一字?jǐn)?shù)據(jù)流形式的30 bit交織編碼轉(zhuǎn)換成30 bit的并行數(shù)據(jù)輸出。模塊的Modelsim仿真圖如圖6所示,。
在系統(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交織碼的解交織過(guò)程在模塊內(nèi)部實(shí)現(xiàn),。模塊的Modelsim仿真圖如圖7所示,。
將實(shí)際測(cè)試得到的一個(gè)完整無(wú)誤碼的30 bit北斗導(dǎo)航電文字段作為仿真測(cè)試數(shù)據(jù)源并行輸入。如圖7所示,,在一個(gè)時(shí)鐘周期內(nèi),,譯碼單元將并行30 bit數(shù)據(jù)解交織為or_data1和or_data2的兩路15 bit數(shù)據(jù),并根據(jù)本文設(shè)計(jì)的并行譯碼器分別計(jì)算出兩路信號(hào)的糾錯(cuò)標(biāo)識(shí)信號(hào)a,、b,。由于輸入數(shù)據(jù)不存在誤碼,糾錯(cuò)標(biāo)識(shí)信號(hào)和糾錯(cuò)信號(hào)re_data1,、re_data2均為0,,直接由兩路數(shù)據(jù)中的11 bit信息位拼接得到22 bit數(shù)據(jù)輸出data_out。
將輸入信號(hào)的X61位信息取反得到具有1 bit誤碼的導(dǎo)航電文字段,。根據(jù)表1,、表2可知,誤碼出現(xiàn)在第一組BCH碼的第6個(gè)信息位,。由圖8仿真結(jié)果可以看出,,其中第一組信號(hào)糾錯(cuò)標(biāo)識(shí)變成1010,通過(guò)查找ROM表發(fā)現(xiàn)第一組BCH的第六位數(shù)據(jù)存在錯(cuò)誤,,進(jìn)行糾錯(cuò)得到的BCH譯碼結(jié)果為:data_out=1010110111101001010000,,與圖7譯碼結(jié)果一樣,證明實(shí)現(xiàn)糾錯(cuò)功能,。
4.322 bit并/串轉(zhuǎn)換器仿真
將譯碼單元的輸出22 bit數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換為數(shù)據(jù)流輸出到后級(jí)進(jìn)行電文解算,。若后級(jí)的處理器支持并行數(shù)據(jù)的輸入,則并/串轉(zhuǎn)換模塊可以省去。模塊的Modelsim仿真結(jié)果如圖9所示,。
北斗GEO衛(wèi)星信號(hào)每比特電文長(zhǎng)2 ms,,一個(gè)導(dǎo)航字持續(xù)60 ms,非GEO衛(wèi)星信號(hào)每比特電文長(zhǎng)20 ms,一個(gè)導(dǎo)航字持續(xù)600 ms,。傳統(tǒng)譯碼器需要時(shí)刻記錄導(dǎo)航電文比特流,,通過(guò)復(fù)雜的移位實(shí)現(xiàn)譯碼,因此一臺(tái)12路跟蹤通道的接收機(jī)需要12路獨(dú)立譯碼器,。而本文設(shè)計(jì)的并行譯碼器譯碼周期短,,只需在各通道增加串并轉(zhuǎn)換模塊和狀態(tài)選擇機(jī)制即可實(shí)現(xiàn)譯碼器的分時(shí)復(fù)用,提高了譯碼器使用效率,。傳統(tǒng)接收機(jī)和并行譯碼接收機(jī)的性能對(duì)比如表3所示,。
5結(jié)論
經(jīng)過(guò)仿真測(cè)試,驗(yàn)證了本文提出的基于FPGA的北斗導(dǎo)航電文譯碼器設(shè)計(jì)方案的可行性,。該方案采用并行處理方式,,在保證譯碼準(zhǔn)確率的前提下有效提高了譯碼器的工作效率。此外,,該譯碼器采用模塊化設(shè)計(jì),,易于集成至接收機(jī)中,對(duì)北斗接收機(jī)譯碼模塊設(shè)計(jì)有一定的參考意義,。
參考文獻(xiàn)
?。?] 邢金清,陳泓吉.北斗衛(wèi)星導(dǎo)航系統(tǒng)現(xiàn)狀及發(fā)展意義[J].黑龍江科技信息,,2015(13):97.
?。?] 中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室.北斗衛(wèi)星導(dǎo)航系統(tǒng)空間信號(hào)接口控制文件公開(kāi)服務(wù)信號(hào)(2.0版)[Z].2013.
[3] 寧楠,,鮑慧,宋文妙,,等.一種基于FPGA的糾錯(cuò)編譯碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),,2008,41(8):95-97,,100.
?。?] 王迪,郝士琦,,朱斌,,等.“北斗”2代B1I信號(hào)導(dǎo)航電文分析[J].航天電子對(duì)抗,2013,,29(6):30-32.
?。?] 連帥,閆利軍,,孫科,,等.北斗2代衛(wèi)星導(dǎo)航電文糾錯(cuò)校驗(yàn)設(shè)計(jì)與仿真[J].計(jì)算機(jī)測(cè)量與控制,,2010,18(10):2344-2347.
?。?] 藺曉龍,,何文濤,徐建華,,等.多模 GNSS接收機(jī)中BCH(15,,11,1)并行解碼算法[J].微電子學(xué)與計(jì)算機(jī),,2014(2):50-53.
?。?] 金婕,于敦山.高速并行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.