1. 捕獲跟蹤
glonass信号雖然是FDMA調制,但是在經過FPGA降到中頻後,其捕獲過程需要進行相應調節,完成捕獲後轉入跟蹤子產品,其跟蹤環路與GPS/BDS無任何差別,可以參照實作。接下來重點介紹的是其位同步與幀同步的實作過程。
2. 位同步
由于glonass的一個資料比特持續時間為20ms,但是上面調制了一個明德碼,如下圖所示,在一個20ms的完整資料比特中,前10個1ms環路輸出電平相位保持一緻,然後發生反相,後10個1ms環路輸出電平繼續保持一緻。是以glonass位同步需要找到該每10ms發生一次的跳變的起始沿。

程式中使用的方法為直方圖法,其具體實作過程類似于GPS位同步,主要差別是GPS尋找的是20ms電平跳變起始沿,而glonass尋找10ms電平跳變起始沿。是以glonass位同步程式中最大偏移值設定為10,對連續10個位置的電平跳變情況進行統計,當某一位置的跳變次數達到預設門檻值N1時,判斷其它9個偏移位置的跳變次數是否有超過門檻值N2(N1>N2),若沒有,則位同步通過,該位置即為電平跳變起始沿。否則不通過,重置計數器,重新進行上述統計判斷。當重置次數達到一定次數時,認為此衛星信号品質不好,将該衛星踢除,清空通道。
算法流程圖如下圖所示:
3. 幀同步
glonass的資料比特上調制有明德碼,導緻其前10ms的電平與資料比特一緻,後10ms則相反。在衛星通道完成位同步後,其輸入到幀同步的1個資料對應10ms的電平值。找到glonass字元串(類似GPS的子幀,為信号結構的最小單元)的起始位置,對其進行幀同步處理。由于字元串長度為2s,包含85比特(1.7s)的導航資料和長度為0.3s的時間标志。該時間标志類似GPS的同步碼,是一串由30個長度為10ms的資料組成固定序列,用于初步定為字元串起始位置,并獲得電平翻轉辨別,但是其位置處于一個字元串的末尾。其結構如圖所示
對應幀同步算法具體實作步驟為:首先進行資料累積,累積長度達到330後,去資料前30個與時間序列進行互相關,未通過互相關(互相關結果不是30/0),則丢棄資料最前的一位,繼續進行資料輸入。若通過互相關,則每隔1個取85個資料(因為資料比特長度為20ms),并利用互相關結果消除相位模糊。然後對這85個資料進行漢明碼校驗,若通過校驗,則取下一個字元串的頁編号F2,與目前字元串頁編号F1做比較,若兩者連續(F2=F1+1,或者F1=15時F2=1),則判斷完成幀同步。具體算法流程圖如下圖所示。
4. 解碼
glonass解碼實作則比較簡單,對每一字元串的資料,按照其字元串編号進行相應解碼,其結構在ICD檔案中有清楚說明,這裡不作叙述。由于glonass的星曆結構與GPS和BDS不同,是以其需要使用單獨的結構體對星曆進行儲存,并在pvt解算子產品中針對其特殊星曆進行相應調整。