專利名稱:一種維特比硬判決度量更新方法
技術領域:
本發明涉及數字信號處理領域,具體地說,涉及硬判決維特比譯碼算法中的度量更新方法。
先介紹一下卷積碼的概念。卷積碼一般用碼型(n0,k0,L-1)來表示,其中n0代表卷積碼子序列的輸出長度,k0代表卷積碼子序列的輸入長度,L-1代表編碼器狀態機中狀態寄存器的個數。例如(3,1,4)卷積碼,其含義為狀態寄存器4位,狀態16個,子序列的輸入是1比特,輸出3比特,編碼速率為1/3,卷積碼的輸出生成多項式是G0(x)=1+X+X3+X4,G1(x)=1+X2+X4,G2(x)=1+X+X2+X3+X4。k0=1是最常見的子序列輸入長度。根據生成多項式和子序列輸入可以計算出卷積碼的輸出G0(x)G1(x)G2(x)。
在卷積碼的硬判決維特比譯碼中,采用網格圖來選擇路徑,選擇路徑的依據是該路徑的碼字c與量化的接收序列y之間具有最小漢明距離。具體方法如下1)將接收到的序列分成長度為n0的m個子序列進行分析;2)給出所研究的卷積碼的深度為m的網格圖,對于該網格圖的最后L-1個階段,僅給出對應于全0輸入序列的路徑;
3)令w=1,且設初始全0狀態的距離等于0,即累積度量初始化為0;4)計算接收序列的第w個子序列到第w階段狀態與第(w+1)階段狀態相連接的所有支路的距離,這一步稱為計算本地度量;5)將本地度量與第w階段狀態的距離相加,獲得第(w+1)階段狀態的距離可選值,對于第(w+1)階段的每個狀態都有2k0個可供選擇的距離,每個距離都對應著終止于該狀態的一個支路;6)對于第(w+1)階段的每個狀態,在2k0個可供選擇的距離中選出最短距離對應的支路作為幸存路徑,并把最短距離作為第(w+1)階段狀態的距離;步驟5)、6)合起來稱為加比選運算,而把本地度量的計算與加比選運算合起來稱為度量更新;7)如果w=m,就進入步驟8);否則,將w增加1后返回步驟4);8)從第(m+1)階段的全0狀態開始,通過網格圖中的幸存路徑返回到最初的全0狀態,則這條路徑即為最佳路徑,對應于它的接收比特序列是最大似然譯碼信息序列;為了獲得輸入比特序列的最佳估算,去掉接受比特序列中最后k0(L-1)個0,這一步稱為回溯。
從上面的步驟可以看出,維特比算法中的度量更新過程需要進行m次的循環,m與接收序列的長度有關,度量更新是實現維特比算法的關鍵步驟,其速度直接影響整個維特比譯碼的時間開銷。在現有技術中,維特比算法可以用硬件來實現,如采用FPGA、ASIC等,但開發周期長,適用面窄;也可以在通用DSP處理器上用軟件來實現,但一般運行的時間和空間開銷都較大,效率低下。所以目前迫切需要有一種方法來提高度量更新的速度。
本發明維特比硬判決度量更新方法,包括以下步驟一、計算所有2L個狀態轉移在2n0種維特比輸入下的本地漢明距離;二、不改變所有本地漢明距離的相互關系,把所有本地漢明距離按照以0為中心的對稱形式進行變換;三、計算轉換后的本地漢明距離與維特比輸入之間的關系,獲得最多2L-3個轉換因子;四、用轉換因子代替本地漢明距離進行加比選運算,即將到達某一狀態的兩個前態的累積度量分別加或減轉換因子,獲得兩個可選值;比較上述兩個值的大小;選擇其中較小的值作為下一階段該狀態的累積度量。
本發明度量更新方法充分利用狀態轉換的對稱性對本地漢明距離進行變換,使得一個轉換因子可以為多至2L-2個加比選運算提供參數,提高度量更新的速度。本發明可以在多種DSP處理器上實現,不僅適用于移動通信系統的基站和終端,而且也適用于其它應用維特比硬判決譯碼的領域。
本發明只涉及維特比算法的度量更新,不考慮其初始化和回溯過程。
首先,根據卷積碼狀態轉移圖和生成多項式計算所有2L個狀態轉移在所有2n0種維特比輸入情況下的本地漢明距離。
為了方便計算,先介紹卷積碼子序列的輸入輸出及狀態轉移情況。維特比譯碼實際上用到其對應的卷積編碼。表1給出了(2,1,4),(3,1,4),(6,1,4)卷積算法的輸入輸出及狀態轉移情況,根據維特比譯碼的狀態轉移關系,當卷積輸入為0時,次態小于等于2L-2-1;當卷積輸入為1時,次態大于2L-2-1,其中L-1表示編碼器中狀態寄存器的個數。
表1卷積算法的輸入輸出及狀態轉移情況
分析表1可以得知,將卷積輸入比特(0或1)加在現態(以二進制表示)的左邊,就可以得到次態(以二進制表示),如果用u’(k)代表當前輸入,用u’(k-1)、u’(k-2)、u’(k-3)、u’(k-4)代表過去的輸入,那么現態表示為u’(k-1)u’(k-2)u’(k-3)u’(k-4),次態表示為u’(k)u’(k-1)u’(k-2)u’(k-3),其中k表示卷積輸入比特的序號,k=0、1、2、……,這樣可以得出輸出碼c與生成多項式和卷積輸入之間的關系。(2,1,4)卷積碼輸出碼c(2k)c(2k+1)的生成多項式是c(2k)=u’(k)+u’(k-2)+u’(k-4);c(2k+1)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);(3,1,4)卷積碼輸出碼c(3k)c(3k+1)c(3k+2)的生成多項式是c(3k)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);c(3k+1)=u’(k)+u’(k-2)+u’(k-4);c(3k+2)=u’(k)+u’(k-1)+u’(k-2)+u’(k-3)+u’(k-4);(6,1,4)卷積碼輸出碼c(6k)c(6k+1)c(6k+2)c(6k+3)c(6k+4)c(6k+5)的生成多項式是c(6k)=c(6k+3)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);c(6k+1)=c(6k+4)=u’(k)+u’(k-2)+u’(k-4);c(6k+2)=c(6k+5)=u’(k)+u’(k-1)+u’(k-2)+u’(k-3)+u’(k-4);以上“+”代表模2加運算。
結合生成多項式,計算出所有2L種狀態轉移在2n0種輸入下的本地漢明距離,并分成八個區域。
為加快度量更新的速度,減小整個維特比譯碼的時間開銷和空間開銷,根據維特比算法和處理器專用指令的特點,在計算出本地漢明距離后,對所有的本地漢明距離進行變換。如果DSP處理器的加比選指令是取大保留,則進行兩次變換;如果處理器的加比選指令是取小保留,則只需進行第二次變換。第一次變換是交叉變換,即把最大值變為最小值,最小值變為最大值,次大值變為次小值,次小值變為次大值等,以(3,1,4)為例,將0變為3,1變為2,2變為1,3變為0,這樣變換的原因是由于維特比度量更新的原則是取小保留,而處理器的加比選指令可以是取大保留;如果處理器的加比選指令是取小保留,那么就不需要進行第一次變換。第二次變換是對稱變換,即在不改變各個漢明距離的相互關系的前提下,把本地漢明距離變成以0為中心的對稱形式,這樣做可以使一個轉換因子就可以完成一個區域里的四個計算,同時相同的區或對稱的區也可以使用該轉換因子,這樣就大大節省了進行加比選的計算量。
表2是維特比(2,1,4)的本地漢明距離及變換。卷積編碼和維特比譯碼是互逆的過程,且維特比譯碼中還用到卷積編碼的過程。以(2,1,4)為例,卷積編碼的輸入為1比特,通過生成多項式計算,其輸出為2比特,那么相對應的維特比譯碼的輸入是2比特,輸出為1比特。
表2 維特比(2,1,4)的本地漢明距離
在表2中,由于n0=2,所以維特比譯碼的輸入有2n0=4種,即00,01,10和11。0->0,0->8……15->15表明狀態轉移的情況,由于L=5,k0=1,所以共有2k0*L=32種狀態轉移情況。卷積輸出是指在某狀態轉移的情況下,由于狀態轉移與卷積編碼的一位輸入有一一對應關系,卷積編碼的輸入確定了,再結合生成多項式計算得到的兩位輸出值。這一欄的內容與表1中“(2,1,4)卷積輸出”的內容是相同的。“不同維特比輸入情況下的本地漢明距離”一欄中是用兩個“/”隔開的三個數字,其中第一個數字表明是本地漢明距離,它是維特比輸入與卷積輸出之間不同對應位的個數,第二個數字是本地漢明距離經過交叉變換后的值(適用于DSP處理器的指令是取大保留的情況),第三個數字是經過交叉變換后的本地漢明距離再經過對稱變換后的值。例如,狀態轉移是“1->8”,其卷積輸出為00,那么對于00的維特比輸入,其漢明距離是0;對維特比輸入是01的漢明距離是1;對維特比輸入是10的漢明距離是1;對維特比輸入是11的漢明距離是2。由于本實施例所采用的DSP處理器的加比選指令是取大保留,那么需先對上述所有的漢明距離進行交叉變換,獲得變換后的本地漢明距離是2,1,1,0;再將經過交叉變換后的本地漢明距離進行對稱變換,得到本地漢明距離是2,0,0,-2。
表3是維特比(3,1,4)的本地漢明距離及變換。
表3維特比(3,1,4)的本地漢明距離
由于n0=3,所以維特比譯碼的輸入有2n0=8種,即000,001,010,011,100,101,110和111。0->0,0->8……15->15表明狀態轉移的情況,由于L=5,k0=1,所以共有2k0*L=32種狀態轉移情況。卷積輸出是指在某狀態轉移的情況下,由于狀態轉移與卷積編碼的一位輸入有一一對應關系,卷積編碼的輸入確定了,再結合生成多項式計算得到的三位輸出值。這一欄的內容與表1中“(3,1,4)卷積輸出”的內容是相同的。“不同維特比輸入情況下的本地漢明距離”一欄中的內容是用兩個“/”隔開的三個數字,其中第一個數字表明是本地漢明距離,它是維特比輸入與卷積輸出之間不同對應位的個數,第二個數字是本地漢明距離經過交叉變換后的值(適用于DSP處理器的指令是取大保留的情況),第三個數字是經過交叉變換后的本地漢明距離再經過對稱變換后的值。例如,當狀態轉移是“1->8”時,其卷積輸出為000,那么對于000的維特比輸入,其漢明距離是0;對維特比輸入是001的漢明距離是1;對維特比輸入是010的漢明距離是1;對維特比輸入是011的漢明距離是2;對維特比輸入是100的漢明距離是1;對維特比輸入是101的漢明距離是2;對維特比輸入是110的漢明距離是2;對維特比輸入是111的漢明距離是3。由于本實施例所采用的DSP處理器的加比選指令是取大保留,那么需先對上述所有的漢明距離進行交叉變換,獲得變換后的本地漢明距離是3,2,2,1,2,1,1,0;再將經過交叉變換后的本地漢明距離進行對稱變換,得到本地漢明距離是2,1,1,-1,1,-1,-1,-2。
本地漢明距離經過兩次變換后,得到了種類最少的對稱的本地漢明距離,有些維特比算法由于其本身的特殊性,本地漢明距離的種類會少于2L-3種。種類越少,該發明在時間開銷上的優越性越明顯。
在上述變換的基礎上抽象出表4和表5,表明轉換因子T與維特比子序列輸入(SDi)的關系,并據此獲得轉換因子T。轉換因子T是抽象出來的對應于某一維特比輸入子序列的數量已經減少的本地漢明距離的集合,把轉換因子T作為進行加比選運算的參數,可以節省運算時間。
T與維特比子序列輸入(SDi)的關系可以用數學邏輯的方法(如布爾運算)獲得,也可以用枚舉的方法獲得。兩種方法所用的時間開銷基本相當,但前者空間開銷小,后者思路清晰,易擴展。
由表2可以看出,維特比(2,1,4)經過變換后的本地漢明距離有三種,即2,0,-2,但是對應于某一確定的輸入子序列來說,只需用兩個值0和2就可以完成32個計算,這就是轉換因子T。這是因為在前四個區內,I區和II區是對稱關系,III區與IV區是對稱關系,而I區和III區內容相同,II區與IV區內容相同,所以前四個區可以共用一個轉換因子T0;同樣,后四個區可以共用另一個轉換因子T1。從表4所示的維特比(2,1,4)的轉換因子T與子序列輸入的關系中可以得到維特比(2,1,4)的兩個轉換因子T0和T1。
表4 維特比(2,1,4)的T與子序列輸入(SDi)的關系
維特比(2,1,4)的轉換因子T與輸入的關系是T0=(SD0-SD1)×(-2);T1=(SD0 XOR1-SD1)×2。
同樣,由表3可以看出,維特比(3,1,4)變換后的本地漢明距離有四種,即2,1,-1,-2,但是對應某一確定的輸入子序列,有一個固定的四元組合就可以完成32個計算,這就是4個轉換因子T0、T1、T2和T3。這是因為I區和IV區的內容相同,可以共用一個轉換因子T3,;II區與V區的內容相同,可以共用一個轉換因子T2;III區與VIII區的內容相同,可以共用一個轉換因子T1;IV區與VII區的內容相同,可以共用一個轉換因子T0。從表5所示的維特比(3,1,4)的轉換因子T與子序列輸入的關系中可以得到維特比(3,1,4)的四個轉換因子T0,T1,T2和T3。
表5維特比(3,1,4)的T與子序列輸入(SDi)的關系
用枚舉的方法即可以得到4個轉換因子T0、T1、T2和T3。
對于維特比(6,1,4)的情況,它與維特比(3,1,4)相同,所以同樣需要4個轉換因子完成32個計算。
在獲得了轉換因子后,用轉換因子代替本地漢明距離進行加比選運算,即將到達某一狀態的兩個前態的累積度量分別加或減轉換因子獲得兩個可選值,當然一個前態的累積度量與轉換因子相加,那么另一個前態的累積度量就與轉換因子相減;然后比較上述兩個值的大小;選擇其中較小的值作為下一階段該狀態的累積度量。這一步可以用DSP處理器的加比選指令完成,如果DSP處理器沒有類似的指令,也可以用基本指令組合完成此功能。
以維特比(2,1,4)為例,當輸入子序列為01時,經計算得T0=2,T1=0。假設某一階段w對應的16個狀態的累積度量為ma0、ma1,……ma15,選擇的DSP處理器的加比選指令是取大保留,那么階段w+1對應的16個狀態的累積度量可由下面的公式得到ma0’=max(ma0+T0,ma1-T0);ma8’=max(ma0-T0,ma1+T0);完成第I區的計算ma1’=max(ma2-T0,ma3+T0);ma9’=max(ma2+T0,ma3-T0);完成第II區的計算ma2’=max(ma4+T0,ma5-T0);ma10’=max(ma4-T0,ma5+T0);完成第III區的計算ma3’=max(ma6-T0,ma7+T0);ma11’=max(ma6+T0,ma7-T0);完成第IV區的計算ma4’=max(mag+T1,ma9-T1);ma12’=max(ma8-T1,ma9+T1);完成第V區的計算ma5’=max(ma10-T1,ma11+T1);ma13’=max(ma10+T1,ma11-T1);完成第VI區的計算ma6’=max(ma12+T1,ma13-T1);
ma14’=max(ma12-T1,ma13+T1);完成第VII區的計算ma7’=max(ma14-T1,ma15+T1);ma15’=max(ma14+T1,ma15-T1);完成第VIII區的計算在具體的編程中,可以通過有效選用數據尋址方式及合理安排數據存儲區來有效快捷實現上述加比選運算。
權利要求
1.一種維特比硬判決度量更新方法,其特征在于,包括以下步驟一、計算所有2L個狀態轉移在2n0種維特比輸入下的本地漢明距離,其中L是編碼器的狀態寄存器的個數加1,n0是維特比輸入子序列的長度;二、不改變所有本地漢明距離的相互關系,把所有本地漢明距離按照以0為中心的對稱形式進行變換;三、計算轉換后的本地漢明距離與維特比輸入之間的關系,獲得最多2L-3個轉換因子;四、用轉換因子代替本地漢明距離進行加比選運算,即將到達某一狀態的兩個前態的累積度量分別加或減轉換因子,獲得兩個可選值;比較上述兩個值的大小;選擇其中較小的值作為下一階段該狀態的累積度量。
2.根據權利要求1所述的維特比硬判決度量更新方法,其特征在于,所述步驟一中的本地漢明距離是根據卷積碼狀態轉移關系和生成多項式計算所得;(2,1,4)卷積碼輸出碼c(2k)c(2k+1)的生成多項式是c(2k)=u’(k)+u’(k-2)+u’(k-4);c(2k+1)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);(3,1,4)卷積碼輸出碼c(3k)c(3k+1)c(3k+2)的生成多項式是c(3k)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);c(3k+1)=u’(k)+u’(k-2)+u’(k-4);c(3k+2)=u’(k)+u’(k-1)+u’(k-2)+u’(k-3)+u’(k-4);(6,1,4)卷積碼輸出碼c(6k)c(6k+1)c(6k+2)c(6k+3)c(6k+4)c(6k+5)的生成多項式是c(6k)=c(6k+3)=u’(k)+u’(k-1)+u’(k-3)+u’(k-4);c(6k+1)=c(6k+4)=u’(k)+u’(k-2)+u’(k-4);c(6k+2)=c(6k+5)=u’(k)+u’(k-1)+u’(k-2)+u’(k-3)+u’(k-4);其中,k表示卷積輸入比特的序號,k=0、1、2、……;“+”代表模2加運算。
3.根據權利要求1所述的維特比硬判決度量更新方法,其特征在于,所述步驟一的本地漢明距離等于維特比輸入與卷積輸出之間不同對應位的個數。
4.根據權利要求1、2或3所述的維特比硬判決度量更新方法,其特征在于,在所述步驟二之前還包括,如果DSP處理器的加比選指令是取大保留,則將所有的本地漢明距離進行交叉變換,即把最大值變為最小值,最小值變為最大值,次大值變為次小值,次小值變為次大值的步驟。
5.根據權利要求1、2或3所述的維特比硬判決度量更新方法,其特征在于,所述步驟三中的轉換因子可以用數學邏輯的方法(如布爾運算)獲得,也可以用枚舉的方法獲得。
全文摘要
本發明提供一種維特比硬判決度量更新方法,先計算所有文檔編號H03M13/41GK1479451SQ0213681
公開日2004年3月3日 申請日期2002年8月31日 優先權日2002年8月31日
發明者王清理, 尹冬元, 王磊 申請人:深圳市中興通訊股份有限公司