高性能維特比在衛(wèi)星導(dǎo)航接收機(jī)中FPGA實(shí)現(xiàn)
摘要:衛(wèi)星定位接收機(jī)中卷積碼譯碼即維特比譯碼器,在處理器中面臨占有資源較多、處理時間過長等問題,為了減少處理器資源的占用和提高處理速度,采用并行加比選蝶形單元的的方法,在FPGA平臺上用硬件描述語言設(shè)計一種高性能維特比譯碼器,作為GPS L2頻點(diǎn)和GALILEO E1頻點(diǎn)接收機(jī)的通用譯碼器,在GPS和GALILEO接收機(jī)上運(yùn)用,大大減少資源使用,提高接收機(jī)的處理速度。
關(guān)鍵詞:Viterbi譯碼器;GPS/GALILEO接收機(jī);卷積碼;FPGA
0 引言
在現(xiàn)代通信系統(tǒng)中,要使信號能夠更可靠地在信道中傳輸,往往需要在信道編碼中采用糾錯碼來降低信號受噪聲的影響,以降低傳輸?shù)恼`碼率。卷積碼及其Viterbi譯碼是常用的信道編碼方案。卷積碼在GNSS接收機(jī)中得到應(yīng)用,其中約束長度K=7,碼率為1/2的卷積碼已經(jīng)成為商業(yè)衛(wèi)星通信系統(tǒng)中的標(biāo)準(zhǔn)編碼方法。在衛(wèi)星定位系統(tǒng)中,GPS L2頻點(diǎn)和GAILILEO E1的電文均采用卷積碼編碼,目前在定位接收機(jī)中用軟件進(jìn)行Viterbi譯碼較多,為了提高處理速度通用性,本文設(shè)計一種基于FPGA的通用高速Viterbi譯碼器,能作為GPS L2和GALILEO E1的電文的譯碼器,大大減少資源使用,提高接收機(jī)的處理速度和減少軟件復(fù)雜度,從而節(jié)約處理器的資源。
1 卷積編碼及Viterbi算法基本原理
卷積碼包含由K個寄存器組(每組包括k個比特,k通常取1)構(gòu)成的移位寄存器和n個模2加法器,其中K是約束長度,編碼器的輸出由當(dāng)前輸入數(shù)據(jù)和寄存器組中的數(shù)據(jù)共同決定。對于GPS L2和GALILEOE1均為(2,1.7)卷積碼,其生成多項(xiàng)式為G=(171,133),電路圖如圖1所示。(2,1,7)卷積碼編碼器由6個延時器(圖1中的q-1模塊,可用寄存器實(shí)現(xiàn))和兩個模2加法器組成,它的編碼約束度為7,碼率為1/2,即輸入端輸入1 b信息,輸出端輸出2 b編碼信息,并分為上、下兩路并行輸出。
對信號進(jìn)行卷積編碼后,通常采用Viterbi算法(VA)譯碼。Viterbi算法是對于卷積碼的最大似然譯碼,即利用概率譯碼。1967年Viterbi第一個提出了這個算法,F(xiàn)orney對這種算法及其性能做了可讀強(qiáng)、見解深刻的描述。最大似然譯碼函數(shù),就是在已知收到的信道輸出序列,找到最有可能的傳輸序列,即通過網(wǎng)格圖找出一條路徑對應(yīng),要求路徑輸出的碼序列具有對數(shù)最大值。對于二進(jìn)制對稱信道來說,函數(shù)的最大化等價于在網(wǎng)格圖中找到與接收序列之間有最小漢明距離的路徑。
Viterbi算法是通過動態(tài)規(guī)劃的方法找出網(wǎng)格圖中具有最大度量的最大似然路徑,即局部最優(yōu)等效全局最優(yōu)。在每一步中,它將進(jìn)入每一狀態(tài)的所有路徑進(jìn)行比較,并存儲具有最大度量值的路徑,即幸存路徑,步驟為:
(1)從時刻l=m開始,計算進(jìn)入某一狀態(tài)的單個路徑的部分度量值,并存儲每一狀態(tài)的幸存路徑及其度量值。
(2)l增加1,l=m+1,將進(jìn)入某一狀態(tài)的分支度量值與前一段時間的幸存度量值累加,然后計算進(jìn)入該狀態(tài)的所有最大度量的路徑,決定并存儲新的幸存路徑及度量,并刪除所有其他路徑。
(3)若ll+m,重復(fù)步驟(2),否則結(jié)束。
該算法主要包括兩個工作:計算度量并比較,其決定幸存路徑;另一個是記錄幸存路徑及其相關(guān)的度量值。
2 基于硬件描述語言的Viterbi算法
Viterbi算法一般采用回溯法和寄存器交換法。為了減少控制的復(fù)雜度,本文采用回溯法,譯碼器由分支度量(BMU)、加比選(ACS)蝶形運(yùn)算、存儲單元、回溯(TB)單元4個基本部分組成,見圖2。
利用二元卷積來說明VA譯碼過程如圖3所示。
圖4為用實(shí)線表示輸入為0時走的分支,虛線表示輸入為1走的分支,任意給定一個序列,在網(wǎng)格圖中就有一個特定路徑,圖4中,u=(1011100),輸出的編碼為c={11_10_00_01_10_01_11}。
2.1 分支度量單元
路徑度量單元是計算實(shí)際接收到的碼元與期望碼元之問的差別。G1與g1比較,G2與g2比較,若接收信號為0,期望值為0時,度量值為0,期望值為1時,度量值為1;若接收信號為1,期望值為0時,度量值為1,期望值為1時,度量值為0。兩個比較結(jié)果和作為最終度量結(jié)果輸出。按此規(guī)律計算當(dāng)前狀態(tài)下進(jìn)入下一個狀態(tài)的度量值。
評論