一種北斗導航系統(tǒng)的維特比譯碼裝置及方法
【技術領域】
[0001] 本發(fā)明涉及電子信息領域,特別是指一種北斗導航系統(tǒng)的維特比譯碼裝置及方 法。
【背景技術】
[0002] 公知的卷積碼的譯碼算法方案有多種,但大規(guī)模應用的還是維特比(Viterbi)算 法。Viterbi譯碼算法是A. J. Viterbi在1967年針對卷積碼的譯碼而提出的一種概率譯碼算 法,它是一種最大似然譯碼。在碼的約束度較小時,Vi terb i譯碼的算法效率高、速度快、譯 碼器結構也較簡單,因而自Viterbi算法提出以來,無論在理論上還是實踐上都得到了極其 迅速的發(fā)展,并廣泛地應用于各種數(shù)字傳輸系統(tǒng)中,特別是無線通信系統(tǒng)和衛(wèi)星通信系統(tǒng)。 在北斗RDSS系統(tǒng)中,為了使信號能夠更可靠地在信道中傳輸,在信道編碼中采用卷積碼來 降低信號受噪聲的影響,以降低通信的誤碼率,提高系統(tǒng)的可靠性。
[0003] 北斗RDSS采用(2,1,7)卷積碼,卷積碼編碼器由6個移位寄存器和兩個模2加法器 組成,約束長度K = 7,編碼效率R=l/2,即輸入lbit信息,輸出2bit編碼信息,并分為上、下 兩路并行輸出。其生成多項式為G=(133,171),電路圖如圖1所示。對卷積編碼后的信號,采 用Viterbi算法(VA)譯碼。Viterbi算法是對于卷積碼的最大似然譯碼。最大似然譯碼函數(shù), 就是在已知收到的信道輸出序列,找到最有可能的傳輸序列,即通過網(wǎng)格圖找出一條路徑 對應,要求路徑輸出的碼序列具有對數(shù)最大值。對于二進制對稱信道來說,函數(shù)的最大化等 價于在網(wǎng)格圖中找到與接收序列之間有最小漢明距離的路徑。
[0004] Viterbi譯碼算法是通過動態(tài)規(guī)劃的方法,接收一段,計算、比較一段,選擇一段最 可能的碼段,即分支,找出網(wǎng)格圖中的最大似然路徑,用局部最優(yōu)等效全局最優(yōu),近似達到 整個碼序列是一個有最大似然函數(shù)的序列。在每一步中,它將進入每一狀態(tài)的所有路徑進 行比較,并存儲具有最大度量值的路徑,即幸存路徑,步驟為: (1) 根據(jù)接收到的碼符號,計算出相應的分支度量值; (2) 將進入某一個狀態(tài)的兩條分支度量值與其前面的路徑度量值分別進行累加求和, 得到兩個新的路徑度量值; (3) 比較到達此同一狀態(tài)的兩條新的路徑度量值的大小,選擇較小的作為新的路徑度 量值存儲起來,并存儲與此路徑度量值對應的路徑,稱此路徑為留選(幸存)路徑,刪除另一 條路徑; (4) 對所有的26個狀態(tài)都實施上述加/比/選運算,并存儲所有狀態(tài)的當前的幸存路徑; (5) 重復(1)~(4)步驟,直到結束。
[0005] 該算法主要包括兩個工作:計算路徑度量值并比較,以決定幸存路徑;另一個是記 錄幸存路徑及其相關的度量值。對于結尾卷積碼序列,編碼器從全為0的so狀態(tài)出發(fā),最后 又回到so狀態(tài)時所輸出的碼序列,在路徑挑選的過程中,所有留選路徑將逐漸合并為最后 唯一的一條,該條路徑即為所求。但是這種算法占用了較多的存儲資源,在維特比譯碼器的 實現(xiàn)中,路徑度量值的一般為采用乒乓存儲方式,乒乓方式使用兩組路徑度量存儲單元交 替使用,一組用來存儲新的路徑度量值,另一組用來存儲舊的路徑度量值,完成一次所有狀 態(tài)的幸存路徑度量更新后讀寫改變方向,這樣讀寫就不會發(fā)生沖突,因此耗費了兩倍的路 徑度量值存儲單元。
【發(fā)明內容】
[0006] 本發(fā)明的目的是設計一種北斗導航系統(tǒng)的維特比譯碼裝置及方法,作為北斗RDSS 的電文譯碼器,提供了一種新的分支度量值的存儲方式,只需要使用一組路徑度量存儲單 元就可以滿足存儲需求,從而克服現(xiàn)有技術的不足。
[0007] 本發(fā)明的技術方案是,為了減少資源的消耗,本發(fā)明提供了一種新的分支度量值 的存儲方式,主要包括分支度量值計算單元、加比選單元、系統(tǒng)控制單元、存儲單元、回溯單 元,維特比譯碼器路徑度量值的更新由加比選單元生成的新路徑度量值寫回到原來讀出舊 路徑度量值的地址中去,在譯碼過程中譯碼狀態(tài)會發(fā)生轉移,路徑度量值更新后存儲的是 轉移后狀態(tài)的路徑度量值; 所述分支度量值計算單元,根據(jù)狀態(tài)轉移蝶形對的狀態(tài)轉移規(guī)則,對接收到的兩路卷 積碼數(shù)據(jù)進行計算,得到各對應狀態(tài)的分支度量值; 所述加比選單元,利用分支度量值計算單元計算得到的分支度量值,計算各狀態(tài)前一 時刻的路徑度量值,進行累加、比較、選擇處理; 所述加比選單元由四個并行執(zhí)行的,且具有相同的輸入輸出特性的蝶形運算單元組 成,每個蝶形運算單元處理兩路來自存儲單元RAM0至RAM 7的數(shù)據(jù)data狀態(tài),并由與蝶形運 算單元連接的兩個選擇器通過sel〇至sel3四種控制狀態(tài),將蝶形運算的結果,轉換成輸入 數(shù)據(jù)ramdin,寫入到對應的八個存儲單元RAM中;所述八個RAM用于暫存64個狀態(tài)的數(shù)據(jù),每 個RAM的長度是八;所述64個狀態(tài)由四個蝶形運算單元分八個時鐘周期完成處理;需要計算 的64個狀態(tài)在經過六次循環(huán)后回到初始狀態(tài); 所述系統(tǒng)控制單元主要實現(xiàn)對各運算單元的控制和調度,實現(xiàn)對維特比譯碼的整體流 程控制。
[0008] 本發(fā)明包括以下步驟: 步驟1,RAM0的數(shù)據(jù)dataOO和RAM1的數(shù)據(jù)dataOl輸入蝶形運算單元BF0,生成蝶形運算 的結果dout00、dout01 ;RAM4的數(shù)據(jù)data20和RAM5的數(shù)據(jù)data21輸入蝶形運算單元BF1,生 成蝶形運算的結果dout20、dout21 ;RAM2的數(shù)據(jù)datalO和RAM3的數(shù)據(jù)datall輸入蝶形運算 單元BF2,生成蝶形運算的結果doutl0、doutll ;RAM6的數(shù)據(jù)data30和RAM7的數(shù)據(jù)data31輸 入蝶形運算單元BF3,生成蝶形運算的結果dout30、dout31; 步驟2,所述蝶形運算的結果dout輸入兩個選擇器MUX中,并根據(jù)selO至sel3四種控制 狀態(tài)生成輸入數(shù)據(jù)ramdin; 步驟3,所述(1〇111:00、(1〇111:01、(1〇11丨20、(1〇11丨21輸入選擇器]\11^1,生成輸入數(shù)據(jù)瓜111(1;[110、 ramdin2、ramdin4、ramdin6; doutl0、doutl 1、dout30、dout31輸入選擇器 MUX2,生成輸入數(shù) 據(jù)ramdinl、ramdin3、ramdin5、ramdin7; 步驟4,所述輸入數(shù)據(jù)ramdinO、ramdin2、ramdin4、ramdin6、ramdinl、ramdin3、 ramdin5、ramdin7 分別寫入存儲單元的 RAM0、RAM2、RAM4、RAM6、RAMI、RAM3、RAM5、RAM7 中; 步驟5,重復步驟1至步驟4,需要計算的64個狀態(tài)在經過總計六次循環(huán)后回到初始狀 Ο
[0009] 所述控制狀態(tài)為:控制狀態(tài)為selO時,輸入數(shù)據(jù)ramdinO、ramdin2、ramdin4、 ramdin6、ramdinl、以111(1;!_113、以111(1;!_115、以111(1;!_117,分別對應蝶形運算的結果(1〇11切0、(1〇1^20、 doutOl、dout21、doutl0、dout30、、doutll、dout31; 控制狀態(tài)為8611時,輸入數(shù)據(jù)從111(1;!_11〇、從111(1;!_112、從111(1;!_114、從111(1;!_116、從111(1;!_111、從111(1;!_113、 ramdin5、ramdin7,分別對應蝶形運算的結果doutOl、dout21、dout00、dout20、dout 11、 dout31、、doutl0、dout30; 控制狀態(tài)為8612時,輸入數(shù)據(jù)從111(1;!_11〇、從111(1;!_112、從111(1;!_114、從111(1;!_116、從111(1;!_111、從111(1;!_113、 ramdin5、ramdin7,分別對應蝶形運算的