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

表1 22 bit導航電文數據碼結構
每兩組 BCH(15,11,1)碼按比特交錯方式組成30 bit碼長的交織碼,30 bit碼長的交織碼編碼結構如表2所示。

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

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

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

圖3 譯碼系統總體框圖
考慮到數據是以數據流的格式輸入到糾錯譯碼系統中,所以直接將數據流給并行數據處理的譯碼單元并不現實。因此在單元前級加一級30 bit的串/并轉換模塊,將串行數據流轉換成并行數據;為保證輸出同樣是數據流格式,譯碼單元后級再加一級22 bit的并/串轉換模塊。在實際應用過程中,為使信號保持同步狀態,需要加入幀同步模塊。并行處理的BCH譯碼系統,先將輸入的30 bit的交織碼數據流進行30 bit的串/并轉換,輸出30位并行的數據后輸入BCH譯碼單元進行并行譯碼,在一個時鐘周期輸出22 bit的導航電文信息碼進行后面的導航解算。
3.2 BCH并行譯碼單元設計
假設BCH譯碼模塊(如圖2所示)輸入的15比特碼為:{X1、X2、X3、X4…X13、X14、X15},那么根據圖2的數據流動形式,BCH碼與糾錯信號標識{D3、D2、D1、D0}之間的關系可以表示為:
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碼對應的糾錯標識信號{D3D2D1D0},上式中從i=1開始迭代運算,最后當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 并行結構譯碼
根據式(6)~(9),將圖2的譯碼框圖結構等效為圖4所示并行數據處理的譯碼結構框圖[7]。模塊輸入端數據采用15位的并行數據輸入,在15位的數據輸入之后,經過15通道的開關門組對輸入的數據{X1、X2、X3…X14、X15}進行選擇后進行模2運算得到相應的D3、D2、D1、D0值;其次根據糾錯標識信號D3D2D1D0查找糾錯標識信號對應的ROM表,得到15位的糾錯信號;最后將所得15位糾錯信號與輸入的15位數據碼進行模2運算后輸出糾錯譯碼。在FPGA系統中,該譯碼單元可以在一個周期內算出D3 D2 D1 D0,大大提高了運算速度。圖5是并行譯碼單元的電路RTL視圖。

圖5 并行譯碼單元FPGA設計的RTL示意圖
本設計采用Verilog語言[8],在Quartus II 11.0開發軟件平臺下完成,仿真軟件為Quartus II 11.0自帶的Modelsim 6.6d版本。
4.1 30 bit串/并轉換器仿真
本設計30 bit串/并轉換器目的在于將輸入的一字數據流形式的30 bit交織編碼轉換成30 bit的并行數據輸出。模塊的Modelsim仿真圖如圖6所示。

圖6 30 bit串/并轉換器Modelsim仿真圖
在系統時鐘上升沿時將實際記錄的衛星電文以數據流的形式從data_in輸入,在完成30 bit的導航電文字段接收后,由data_out并行輸出30 bit數據,同時在輸出數據使能dout_en產生脈沖。
4.2 并行數據譯碼單元仿真
并行數據譯碼單元根據圖4原理設計。實際設計中將兩路的并行譯碼單元結構進行優化和合并,設計出支持30 bit的輸入的并行譯碼單元,能夠實現將30 bit并行輸入的數據碼進行22 bit BCH譯碼輸出。其中30 bit交織碼的解交織過程在模塊內部實現。模塊的Modelsim仿真圖如圖7所示。

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

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

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

表3 兩種方式譯碼的性能對比
經過仿真測試,驗證了本文提出的基于FPGA的北斗導航電文譯碼器設計方案的可行性。該方案采用并行處理方式,在保證譯碼準確率的前提下有效提高了譯碼器的工作效率。此外,該譯碼器采用模塊化設計,易于集成至接收機中,對北斗接收機譯碼模塊設計有一定的參考意義。
[1] 邢金清,陳泓吉.北斗衛星導航系統現狀及發展意義[J].黑龍江科技信息,2015(13):97.
[2] 中國衛星導航系統管理辦公室.北斗衛星導航系統空間信號接口控制文件公開服務信號(2.0版)[Z].2013.
[3] 寧楠,鮑慧,宋文妙,等.一種基于FPGA的糾錯編譯碼器的設計與實現[J].通信技術,2008,41(8):95-97,100.
[4] 王迪,郝士琦,朱斌,等.“北斗”2代B1I信號導航電文分析[J].航天電子對抗,2013,29(6):30-32.
[5] 連帥,閆利軍,孫科,等.北斗2代衛星導航電文糾錯校驗設計與仿真[J].計算機測量與控制,2010,18(10):2344-2347.
[6] 藺曉龍,何文濤,徐建華,等.多模 GNSS接收機中BCH(15,11,1)并行解碼算法[J].微電子學與計算機,2014(2):50-53.
[7] 金婕,于敦山.高速并行BCH譯碼器的VLSI設計[J].北京大學學報(自然科學版),2009,45(2):233-237.
[8] 夏宇聞. Verilog數字系統設計教程[M].北京:北京航空航天大學出版社, 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的北斗導航電文譯碼器的研究與設計[J].微型機與應用,2016,35(1):71-73,80.
2015-08-15)
楊堅(1991-),男,碩士研究生,主要研究方向:衛星導航基帶信號處理。
郭里婷(1976-),女,博士,副教授,主要研究方向:通信中的信號處理。
陳偉強(1989-),男,碩士,工程師,主要研究方向:衛星導航基帶信號處理。
____________________