專利名稱:最大后驗概率譯碼方法及譯碼裝置的制作方法
技術領域:
本發(fā)明涉及一種移動通信系統(tǒng)中用于高速數(shù)據(jù)傳輸?shù)募m錯編碼方法,特別是涉及一種基于基4(Radix-4)結(jié)構(gòu)的最大后驗概率(MAP)譯碼方法。本發(fā)明還涉及用于實施該方法的譯碼裝置。
背景技術:
最大后驗概率譯碼方法作為針對有限狀態(tài)網(wǎng)格編碼的最優(yōu)譯碼算法,在移動通信領域特別是高速數(shù)據(jù)傳輸?shù)膽弥?,得到了廣泛的利用。最典型的有限狀態(tài)網(wǎng)格編碼是卷積碼(Convolutional code)。單一的卷積碼應用于糾錯性能要求較低的場合,通常用維特比譯碼即可以獲得滿意的性能。從Claude Berrou等人于1993年提出了一種獨特的卷積碼——特博碼后,特博碼作為一種接近香農(nóng)極限(Shannon’s Limit)的糾錯碼得到了廣泛的應用。特博碼編碼器通常由多個簡單的單元編碼器(ConstituentEncoder)以串聯(lián)或者并聯(lián)的方式構(gòu)成,最常用的單元編碼器即為卷積編碼器。相應地,特博譯碼器也由多個相應的單元譯碼器構(gòu)成。在高速數(shù)據(jù)傳輸?shù)臅r候,通常需要非常高的糾錯性能,比如誤碼率低于10-6。此時利用維特比譯碼器作為單元譯碼器無法得到滿意的性能,通常特博碼譯碼算法中的單元譯碼器均采用最大后驗概率譯碼算法或者其在對數(shù)域的相應算法,即對數(shù)最大后驗概率譯碼(Log-MAP)算法。
最大后驗概率譯碼算法通常包括前向狀態(tài)度量(FSM),反向狀態(tài)度量(BSM)以及分支度量的計算,然后基于前向狀態(tài)度量,反向狀態(tài)度量以及分支度量計算出各個時刻對應編碼器輸入信息比特的似然比(LLRlikelihood Ratio)。該似然比表示對應編碼器輸入信息比特為“0”的概率與為“1”的概率之比,由該似然比即可判斷編碼器輸入信息比特的具體值。
以編碼率(Code Rate)為1/2的卷積編碼器為例,其對應的傳統(tǒng)的最大后驗概率譯碼算法可以用以下遞歸公式表示L(dk)=logΣm=02v-1-1αk0(m)·βk0(m)Σm=02v-1-1αk1(m)·βk1(m)]]>公式1αki(m)=δi(Rk,m)·Σj=01αk-1j(Sbj(m))]]>公式2βki(m)=Σj=01βk+1j(Sfi(m))·δj(Rk+1,Sfi(m))]]>公式3δi(Rk,m)=K·exp(-2xki+2ykYki(m)σ2)]]>公式4上述公式中,k為MAP譯碼器輸入數(shù)據(jù)符號組的時域下標,一個數(shù)據(jù)符號組所包含的數(shù)據(jù)符號個數(shù)等于卷積碼編碼器的編碼率的倒數(shù),本發(fā)明中編碼率為1/2,則一個數(shù)據(jù)符號組包括兩個數(shù)據(jù)符號,即Rk={xk,yk}表示一個輸入數(shù)據(jù)符號組,xk,yk分別對應編碼器輸出的第k個信息比特樣值和校驗比特,m表示卷積碼編碼器狀態(tài)遷移圖中的狀態(tài)下標,v表示卷積編碼器的約束長度,2v-1則為卷積編碼器的總狀態(tài)數(shù),L(dk)表示對應卷積編碼器第k個輸入比特的作為譯碼結(jié)果所計算出的似然比,αki(m)表示在k時刻假定輸入為i時的狀態(tài)m的前向狀態(tài)度量(FSMForward StateMetric),βki(m)表示在k時刻假定輸入為i時的狀態(tài)m的反向狀態(tài)度量(BSMBackward State Metric),δi(Rk,m)表示當前狀態(tài)為m且輸入為i時接收端收到的數(shù)據(jù)為Rk的條件概率,通常稱為分支度量,Sbj(m)表示在編碼器中假定輸入為j∈{0,1}時可遷移到當前狀態(tài)m的前一狀態(tài),Sif(m)表示當前狀態(tài)m下,假定輸入為i∈{0,1}時所遷移到的下一狀態(tài),K和σ2均為由信道條件決定的常數(shù)。Yki(m)表示在狀態(tài)m下輸入信息比特為i∈{0,1}時的編碼器輸出的編碼比特。對似然比輸出進行硬判決即可得到譯碼結(jié)果。似然比也可以作為軟判決符號直接用于數(shù)據(jù)處理的下一階段。比如在特博碼譯碼中,通常利用上一次MAP譯碼的似然比輸出作為下一次MAP譯碼的輸入輔助信息,這樣構(gòu)成迭代譯碼方式,可以大幅度地提高譯碼性能。
如上所述,前向狀態(tài)度量和反向狀態(tài)度量均通過迭代的方式進行計算。每一時刻的每一狀態(tài)的前向狀態(tài)度量是基于前一時刻的某兩個狀態(tài)的前向狀態(tài)度量計算而得;每一時刻的每一狀態(tài)的反向狀態(tài)度量是基于后一時刻的某兩個狀態(tài)的反向狀態(tài)度量計算而得,這種算法實現(xiàn)結(jié)構(gòu)一般被稱為基2(Radix-2)結(jié)構(gòu)。前向狀態(tài)度量和反向狀態(tài)度量迭代計算方式?jīng)Q定了在一個計算周期只能進行一次迭代計算,因此在基2結(jié)構(gòu)的譯碼算法中,當編碼器輸入信息比特長度為N時,狀態(tài)度量的計算就需要N個迭代計算周期。而MAP譯碼器的譯碼速度主要瓶頸就在于狀態(tài)度量的計算,如何提高狀態(tài)度量的計算速度成為MAP譯碼器在移動通信領域高速數(shù)據(jù)業(yè)務中應用的關鍵技術。
發(fā)明內(nèi)容
本發(fā)明要解決的技術問題是提供一種最大后驗概率譯碼方法,它可以將狀態(tài)度量的計算速度提高一倍,從而大大提高MAP譯碼器的譯碼速度;為此,本發(fā)明還要提供一種用于實施該方法的譯碼裝置。
為解決上述技術問題,本發(fā)明的基本構(gòu)思是對卷積碼編碼器的狀態(tài)遷移網(wǎng)格圖進行壓縮處理,基于壓縮的狀態(tài)遷移網(wǎng)格圖,在進行狀態(tài)度量的迭代計算時,只對偶數(shù)時刻計算前向狀態(tài)度量和反向狀態(tài)度量,時刻k的狀態(tài)m的前向狀態(tài)度量是基于時刻k-2的某4個狀態(tài)的前向狀態(tài)度量和相應的分支度量計算而得,時刻k的狀態(tài)m的反向狀態(tài)度量是基于時刻k+2的某4個狀態(tài)的反向狀態(tài)度量和相應的分支度量計算而得;然后基于所述偶數(shù)時刻點的前向狀態(tài)度量和反向狀態(tài)度量以及相應的分支度量計算各個時刻的對應編碼器輸入數(shù)據(jù)的似然比函數(shù)值,最后對前述似然比函數(shù)值進行硬判決處理即可得到譯碼結(jié)果,也可以將這些似然比函數(shù)值作為軟判決符號直接輸出給下一級運算模塊進行后續(xù)處理。
作為實現(xiàn)本發(fā)明基本構(gòu)思的最大后驗概率譯碼方法,包括以下步驟基于輸入接收數(shù)據(jù)序列計算對應每一時刻的所有可能的分支度量;基于以上計算所得的分支度量按迭代的方式計算對應偶數(shù)時刻的前向狀態(tài)度量;基于以上計算所得的分支度量按迭代的方式計算對應偶數(shù)時刻的反向狀態(tài)度量;基于以上計算所得的分支度量、前向狀態(tài)度量以及反向狀態(tài)度量計算每一時刻的信息比特的似然比函數(shù)值;
基于所述似然比函數(shù)值進行硬判決以獲得譯碼結(jié)果,或者將所述似然比函數(shù)值直接應用于后續(xù)數(shù)據(jù)處理。
本發(fā)明用于實施上述最大后驗概率譯碼方法的譯碼裝置,包括分支度量計算模塊,用于計算分支度量,并將計算結(jié)果存儲在分支度量緩存模塊中,供前向狀態(tài)度量、反向狀態(tài)度量和似然比函數(shù)值計算時使用;前向狀態(tài)度量計算模塊,用于計算前向狀態(tài)度量;該模塊根據(jù)輸入的前向狀態(tài)度量及分支度量進行乘法及累加運算,計算新的前向狀態(tài)度量,并將計算結(jié)果存入前向狀態(tài)度量緩存模塊中;反向狀態(tài)度量計算模塊,用于計算反向狀態(tài)度量;該模塊根據(jù)輸入的反向狀態(tài)度量及分支度量進行乘法及累加運算,計算新的反向狀態(tài)度量,并將計算結(jié)果存入反向狀態(tài)度量緩存模塊中;似然比計算模塊,基于以上計算所得的分支度量、前向狀態(tài)度量、反向狀態(tài)度量計算對應每一時刻編碼器的輸入信息比特的似然比;狀態(tài)遷移網(wǎng)格信息模塊,以查找表的形式存儲Ω(0x)、Ω(1x)、Ω(x0)和Ω(x1)四個集合所表示的狀態(tài)遷移信息,在計算似然比函數(shù)L(dk=0)、L(dk=1)、L(dk+1=0)和L(dk+1=1)時,通過查閱該模塊中所存儲的信息,以確定從分支度量緩存模塊、前向狀態(tài)度量緩存模塊和反向狀態(tài)度量緩存模塊中讀取相應的數(shù)據(jù)進行計算。
本發(fā)明只計算偶數(shù)時刻的前向狀態(tài)度量和反向狀態(tài)度量,因此對于同樣編碼器輸入信息比特長度為N的時候,狀態(tài)度量的計算只需要N/2個迭代計算周期,狀態(tài)度量的計算時間便可壓縮為傳統(tǒng)的基2計算方法的一半,因此可以大大提高MAP譯碼器的譯碼速度。本發(fā)明MAP譯碼方法及其譯碼裝置既可基于軟件實現(xiàn),也可基于硬件實現(xiàn),也可以基于軟硬件相結(jié)合的形式實現(xiàn)。
下面結(jié)合附圖與具體實施方式
對本發(fā)明作進一步詳細的說明圖1是本發(fā)明最大后驗概率譯碼器結(jié)構(gòu)示意圖;圖2是正常的狀態(tài)遷移網(wǎng)格圖和壓縮的狀態(tài)遷移網(wǎng)格圖;圖3是圖1中前向狀態(tài)度量計算模塊的結(jié)構(gòu)圖;圖4是圖1中反向狀態(tài)度量計算模塊的結(jié)構(gòu)圖;圖5是本發(fā)明用于對數(shù)似然比函數(shù)LLk0的計算的網(wǎng)格示意圖;圖6是本發(fā)明用于對數(shù)似然比函數(shù)LLk1的計算的網(wǎng)格示意圖;圖7是本發(fā)明用于對數(shù)似然比函數(shù)LLk+10的計算的網(wǎng)格示意圖;圖8是本發(fā)明用于對數(shù)似然比函數(shù)LLk+11的計算的網(wǎng)格示意圖;圖9是圖1中似然比計算模塊的結(jié)構(gòu)圖;圖10是圖9所示似然比計算模塊的一個計算周期的動作時序示意圖。
具體實施例方式
為了方便以下說明,首先假定編碼器的編碼率為1/2,并定義一些變量參數(shù)如下m卷積編碼器的狀態(tài)遷移圖中的狀態(tài)下標。
v卷積碼編碼器的約束長度,在本發(fā)明的實施例中,約束長度為4。
c卷積碼編碼器的編碼率,在本發(fā)明的實施例中,編碼率為1/2。
N原始的編碼前的數(shù)據(jù)塊的長度,包括編碼過程中最后用于清除編碼器狀態(tài)的尾比特(Tail Bit)。
Rk,xk,ykRk為最大后驗概率譯碼器對應k時刻的輸入數(shù)據(jù)符號組,在本發(fā)明中,因為編碼率為1/2,所以包含兩個數(shù)據(jù)xk,yk,分別對應卷積碼編碼器輸出的系統(tǒng)比特dk和校驗比特pk。
如圖1所示,本發(fā)明的最大后驗概率譯碼器由分支度量計算模塊11、前向狀態(tài)度量計算模塊12、反向狀態(tài)度量計算模塊13、狀態(tài)遷移網(wǎng)格信息模塊14以及似然比計算模塊15、分支度量緩存模塊16、反向狀態(tài)度量緩存模塊17和前向狀態(tài)度量緩存模塊18等模塊構(gòu)成。
圖2所示為約束長度為4的卷積碼編碼器的正常狀態(tài)遷移網(wǎng)格圖以及壓縮的狀態(tài)遷移網(wǎng)格圖。在正常的狀態(tài)遷移網(wǎng)格圖中表示的是從一個時刻的狀態(tài)在不同的輸入條件下遷移到下一個時刻的狀態(tài)的遷移關系,而壓縮狀態(tài)遷移網(wǎng)格圖表示的是從一個時刻的各狀態(tài)在不同的連續(xù)兩個比特的輸入條件下遷移到下兩個時刻的狀態(tài)遷移關系。在本發(fā)明的譯碼算法中,前向狀態(tài)度量以及反向狀態(tài)度量均只對偶數(shù)時刻進行計算。
分支度量計算模塊11用于計算分支度量δi(Rk,m),計算方式如公式4所示。其中K以及σ2均為與信道等條件相關的常數(shù)。如公式4所示,由于i和Yki(m)均為二進制數(shù)據(jù)(0,1),兩者共有4種組合,對于每一組輸入數(shù)據(jù)Rk,需要計算4個分支度量。因此當編碼前數(shù)據(jù)塊長度為N時,一共要計算4*N個分支度量。這些分支度量計算好以后,存儲在分支度量緩存模塊16中,供前向狀態(tài)度量、反向狀態(tài)度量和似然比的計算時使用。相應地,分支度量緩存模塊16是包含4*N個存儲單元的存儲模塊。
前向狀態(tài)度量計算模塊12用于計算前向狀態(tài)度量αk(m)。該前向狀態(tài)度量的定義與傳統(tǒng)的基2結(jié)構(gòu)的譯碼算法中的前向狀態(tài)度量的定義不同,其定義如下所示αk(m)=Pr{Sk=m;R1k-1}]]>公式5其中,R1k-1表示從時刻1到時刻k-1的接收數(shù)據(jù)序列,αk(m)的物理含義表示從時刻1到時刻k-1的接收數(shù)據(jù)序列為R1k-1以及時刻k的狀態(tài)為m的聯(lián)合概率。在本發(fā)明中前向狀態(tài)度量αk(m)根據(jù)以下公式以迭代的方式進行計算αk+2(m′′)=Σ(m,m′)αk(m)*γk(m,m′)*γk+1(m′,m′′)]]>公式6其中,γk(m1,m2)=δi(Rk,m1),m2=Sfi(m1)0,m2≠Sfi(m1)]]>公式7其中,δi(Rk,m1)表示當前狀態(tài)為m且輸入為i時接收端收到的數(shù)據(jù)為Rk的條件概率,通常稱之為分支度量,Sif(m1)表示當前狀態(tài)為m1時,假定輸入為i∈{0,1}時所遷移到的下一狀態(tài)。
由狀態(tài)遷移網(wǎng)格圖可知,從某一個狀態(tài)出發(fā),在兩種不同的輸入條件下,可以到達也只能到達兩種不同的狀態(tài)。當m2不屬于從m1可能到達的兩種狀態(tài)之一時,則γk(m1,m2)為“0”;反之,γk(m1,m2)等于相應的分支度量δi(Rk,m1)。
前向狀態(tài)度量計算模塊12的實現(xiàn)結(jié)構(gòu)如圖3所示。前向狀態(tài)度量計算模塊12包括8個輸入前向狀態(tài)度量寄存器α_old
~α_old[7]、8個輸出前向狀態(tài)度量寄存器α_new
~α_new[7]、以及8個乘法和累加運算模塊120~127。
在開始前向狀態(tài)度量計算時,輸入前向狀態(tài)度量寄存器中α_old
被初始化為“1”,而α_old[1]~α_old[7]則被初始化為“0”。
乘法和累加運算模塊120~127分別對輸入的4個前向狀態(tài)度量以及4個分支度量進行如公式6所示的乘法以及累加運算,計算結(jié)果即為新的前向狀態(tài)度量。假定輸入的前向狀態(tài)度量對應k時刻的前向狀態(tài)度量,則計算結(jié)果對應k+2時刻的前向狀態(tài)度量。例如,乘法和累加運算模塊120的輸入為k時刻的前向狀態(tài)度量αk(0),αk(1),αk(2),αk(3),以及相應的分支度量,這些分支度量輸入由公式7決定。
在每一個前向狀態(tài)度量計算周期,由8個輸入的k時刻的前向狀態(tài)度量計算出k+2時刻的8個前向狀態(tài)度量后,一方面,8個新的前向狀態(tài)度量被寫入前向狀態(tài)度量緩存模塊18的相應位置,另一方面,它們被用于更新寄存器α_old
~α_old[7],作為下一個前向狀態(tài)度量計算周期的輸入,計算k+4時刻的前向狀態(tài)度量。當原始的編碼前數(shù)據(jù)塊長度為N時,則前向狀態(tài)度量的計算總共需要N次迭代計算。
反向狀態(tài)度量計算模塊13用于計算反向狀態(tài)度量βk(m)。該反向狀態(tài)度量的定義如下所示βk(m)=Pr{RkN|Sk=m}]]>公式8其中,RkN表示從時刻k到時刻N的接收數(shù)據(jù)序列,βk(m)的物理含義表示在k時刻的狀態(tài)為m的條件下,從時刻k到時刻N的接收數(shù)據(jù)序列為RkN的條件概率。在本發(fā)明中反向狀態(tài)度量βk(m)根據(jù)以下公式以迭代的方式進行計算βk(m)=Σ(m′,m′′)βk+2(m′′)*γk+1(m′,m′′)*γk(m,m′)]]>公式9
其中,γk(m1,m2)的定義參見公式7。
反向狀態(tài)度量計算模塊13的實現(xiàn)結(jié)構(gòu)如圖4所示,包括8個輸入反向狀態(tài)度量寄存器β_old
~β_old[7]、8個輸出反向狀態(tài)度量寄存器β_new
~β_new[7]、以及8個乘法和累加運算模塊130~137。
在開始反向狀態(tài)度量計算時,輸入反向狀態(tài)度量寄存器中β_old
被初始化為“1”,而β_old[1]~β_old[7]則被初始化為“0”。
乘法和累加運算模塊130~137分別對輸入的4個反向狀態(tài)度量以及4個分支度量進行如公式9所示的乘法以及累加運算,計算結(jié)果即為新的反向狀態(tài)度量。假定輸入的反向狀態(tài)度量對應k+2時刻的反向狀態(tài)度量,則計算結(jié)果則對應k時刻的反向狀態(tài)度量。例如,乘法和累加運算模塊130的輸入為k+2時刻的反向狀態(tài)度量βk(0),βk(2),βk(4),βk(6),以及相應的分支度量,這些分支度量輸入由公式7決定。
在每一個反向狀態(tài)度量計算周期,由8個輸入的k+2時刻的反向狀態(tài)度量計算出k時刻的8個反向狀態(tài)度量后,一方面,8個新的反向狀態(tài)度量被寫入反向狀態(tài)度量緩存模塊17的相應位置,另一方面,它們被用于更新寄存器β_old
~β_old[7],作為下一個反向狀態(tài)度量的計算周期的輸入,計算k-2時刻的反向狀態(tài)度量。當原始的編碼前數(shù)據(jù)塊長度為N時,則反向狀態(tài)度量的計算總共需要N次迭代計算。
似然比計算模塊15基于以上計算所得的分支度量、前向狀態(tài)度量、反向狀態(tài)度量計算對應每一時刻編碼器的輸入信息比特的似然比。似然比定義為
LR(dk)=Pr(dk=0|R1N)Pr(dk=|R1N)]]>公式10其中,Pr(dk=i|R1N)]]>表示在接收數(shù)據(jù)序列為R1N的前提條件下編碼器在k時刻的輸入信息比特為“0”或“1”的概率。通過比較兩者的概率,便可得到硬判決的譯碼結(jié)果。似然比也可以作為軟判決符號用于像特博譯碼等迭代譯碼過程中兩次譯碼過程之間的信息傳遞。
在本發(fā)明中,似然比函數(shù)通過以下方式進行計算L(dk=0)=Pr(dk=0|R1N)·Pr(R1N)]]>=Σ{m,m′,m′′}∈Ω(0x)σk(m,m′,m′′)]]>公式11L(dk=1)=Pr(dk=1|R1N)·Pr(R1N)]]>=Σ{m,m′,m′′}∈Ω(1x)1σk(m,m′,m′′)]]>公式12L(dk=0)=Pr(dk+1=0|R1N)·Pr(R1N)]]>=Σ{m,m′,m′′}∈Ω(x0)σk(m,m′,m′′)]]>公式13L(dk+1=1)=Pr(dk=1|R1N)·Pr(R1N)]]>=Σ{m,m′,m′′}∈Ω(x1)σk(m,m′,m′′)]]>公式14LR(dk)=L(dk=0)L(dk=1),LR(dk+1)=L(dk+1=0)L(dk+1=1)]]>公式15其中,σk(m,m′,m″)表示壓縮的狀態(tài)遷移網(wǎng)格圖中的連續(xù)兩個時刻的狀態(tài)遷移信息,其計算方式如下所示σk(m,m′,m″)=αk(m)*γk(m,m′,m″)*βk+2(m″) 公式16其中,γk(m,m′,m″)表示連續(xù)兩個時刻k和k+1的聯(lián)合分支度量,假定k時刻編碼器輸入數(shù)據(jù)為i,k+1時刻編碼器輸入數(shù)據(jù)為j,則有以下4種不同的聯(lián)合分支度量 公式17在公式11、公式12、公式13和公式14中累加數(shù)據(jù)是分別基于集合Ω(0x)、Ω(1x)、Ω(x0)、Ω(x1)進行選擇,這些集合表示相鄰兩個時刻的狀態(tài)遷移關系。假定k時刻、k+1時刻以及k+2時刻的狀態(tài)分別為m、m’和m”,則集合Ω(0x)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0或者1時,狀態(tài)由m’遷移至m”。
集合Ω(1x)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0或者1時,狀態(tài)由m’遷移至m”。
集合Ω(x0)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0或者1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0時,狀態(tài)由m’遷移至m”。
集合Ω(x1)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0或者1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為1時,狀態(tài)由m’遷移至m”。
以上公式11~公式17所定義的似然比函數(shù)的計算方式以及集合Ω(0x)、Ω(1x)、Ω(x0)、Ω(x1)如圖5~圖8所示。
圖5為針對L(dk=0)(參見公式11)計算的壓縮狀態(tài)遷移網(wǎng)格圖中的狀態(tài)遷移關系示意圖。在時刻k輸入信息比特為0時,可能出現(xiàn)的狀態(tài)遷移有如下8種可能狀態(tài)0→狀態(tài)0;狀態(tài)1→狀態(tài)4;狀態(tài)2→狀態(tài)5;狀態(tài)3→狀態(tài)1;狀態(tài)4→狀態(tài)2;狀態(tài)5→狀態(tài)6;狀態(tài)6→狀態(tài)7;狀態(tài)7→狀態(tài)3。而在時刻k+1輸入信息比特為0或者1時可能出現(xiàn)的狀態(tài)遷移共有16種可能狀態(tài)0→狀態(tài)0;狀態(tài)1→狀態(tài)0;狀態(tài)2→狀態(tài)1;狀態(tài)3→狀態(tài)1;狀態(tài)4→狀態(tài)2;狀態(tài)5→狀態(tài)2;狀態(tài)6→狀態(tài)3;狀態(tài)7→狀態(tài)3;狀態(tài)0→狀態(tài)4;狀態(tài)1→狀態(tài)0;狀態(tài)2→狀態(tài)5;狀態(tài)3→狀態(tài)5;狀態(tài)4→狀態(tài)6;狀態(tài)5→狀態(tài)6;狀態(tài)6→狀態(tài)7;狀態(tài)7→狀態(tài)7。因此,在k時刻輸入信息比特為0、k+1時刻的輸入信息比特為0或者為1時,跨越兩個連續(xù)時刻的狀態(tài)遷移共有16種可能狀態(tài)0→狀態(tài)0→狀態(tài)0;狀態(tài)3→狀態(tài)1→狀態(tài)0;狀態(tài)4→狀態(tài)2→狀態(tài)1;狀態(tài)7→狀態(tài)3→狀態(tài)1;狀態(tài)1→狀態(tài)4→狀態(tài)2;狀態(tài)2→狀態(tài)5→狀態(tài)2;狀態(tài)5→狀態(tài)6→狀態(tài)3;狀態(tài)6→狀態(tài)7→狀態(tài)3;狀態(tài)0→狀態(tài)0→狀態(tài)4;狀態(tài)3→狀態(tài)1→狀態(tài)4;狀態(tài)4→狀態(tài)2→狀態(tài)5;狀態(tài)7→狀態(tài)3→狀態(tài)5;狀態(tài)1→狀態(tài)4→狀態(tài)6;狀態(tài)2→狀態(tài)5→狀態(tài)6;狀態(tài)5→狀態(tài)6→狀態(tài)7;狀態(tài)6→狀態(tài)7→狀態(tài)7。這16種狀態(tài)遷移即構(gòu)成了集合Ω(0x)。按照同樣的方式分別參照圖6、圖7和圖8可以得到集合Ω(1x)、Ω(x0)以及Ω(x1)?;谶@些集合的定義以及公式11到公式17即可以分別計算出L(dk=0)、L(dk=1)、L(dk+1=0)和L(dk+1=1)乃至LR(dk)和LR(dk+1)。
狀態(tài)遷移網(wǎng)格圖信息模塊14以查找表(LUTLook-Up Table)的形式存儲上述四個集合Ω(0x)、Ω(1x)、Ω(x0)和Ω(x1)所表示的狀態(tài)遷移信息。在計算似然比函數(shù)L(dk=0)、L(dk=1)、L(dk+1=0)和L(dk+1=1)時,通過查閱狀態(tài)遷移網(wǎng)格圖信息模塊14中所存儲的信息,以確定從分支度量緩存模塊16、前向狀態(tài)度量緩存模塊18和反向狀態(tài)度量緩存模塊17中讀取相應的數(shù)據(jù)進行計算。
似然比計算模塊15的結(jié)構(gòu)以及與其它模塊的連接關系示意圖如圖9所示。似然比計算模塊15由提供時序和地址等信息、用于控制其它模塊動作的控制信息的控制器151、執(zhí)行乘法及累加運算模塊152、153、154和155、以及執(zhí)行似然比除法運算模塊156、157等構(gòu)成。似然比計算模塊15在一個計算周期計算對應連續(xù)兩個時刻的信息比特的似然比函數(shù)值。一個長度為N比特的數(shù)據(jù)塊的譯碼需要似然比計算模塊15的N/2個計算周期的運算。
控制器151根據(jù)譯碼過程的要求查詢狀態(tài)遷移網(wǎng)格圖信息模塊14,以生成從分支度量緩存模塊16、反向狀態(tài)度量緩存模塊17和前向狀態(tài)度量緩存模塊18讀取數(shù)據(jù)的地址信號,并讀取相應的數(shù)據(jù)提供給乘法及累加運算模塊152、153、154和155。同時控制器151還生成相應的時序控制信號以控制乘法及累加運算模塊152、153、154和155以及似然比除法運算模塊156、157在合適的時間執(zhí)行相應的運算動作。
乘法及累加運算模塊152、153、154和155執(zhí)行公式16所示的乘法運算,然后分別執(zhí)行公式11到公式14所示的累加運算。在似然比計算模塊15的每一個計算周期,為了計算對應k時刻和k+1時刻的信息比特的似然比函數(shù)值,乘法及累加運算模塊152、153、154和155分別需要從分支度量緩存模塊16讀取4個對應k時刻的分支度量以及4個對應k+1時刻的分支度量、從前向狀態(tài)度量緩存模塊18讀取8個對應k時刻的前向狀態(tài)度量、從反向狀態(tài)度量緩存模塊17中讀取8個對應k+2時刻的反向狀態(tài)度量作為輸入數(shù)據(jù)。這些數(shù)據(jù)的讀取地址以及讀取時間控制信息由控制器151生成。然后基于這些數(shù)據(jù),乘法及累加運算模塊152、153、154和155分別執(zhí)行每3個數(shù)據(jù)1組的16組數(shù)據(jù)的乘法運算,再對16個乘法結(jié)果執(zhí)行累加運算。
乘法及累加運算模塊152、153、154和155可以以并行的方式也可以以串行的方式執(zhí)行乘法和累加運算。以并行的方式進行計算時,控制器151先將該計算周期所需要的4個對應k時刻的分支度量、4個對應k+1時刻的分支度量、8個對應k時刻的前向狀態(tài)度量以及8個對應k+2時刻的反向狀態(tài)度量全部讀取出來存放在乘法及累加運算模塊152、153、154和155各自的輸入緩存或者輸入寄存器模塊中,然后啟動這些模塊進行乘法和累加運算。以串行的方式進行計算時,控制器151每一次為乘法及累加運算模塊152、153、154和155分別讀取一次乘法運算所需要的數(shù)據(jù),然后啟動這些模塊執(zhí)行乘法運算,并對乘法運算結(jié)果與上一次的乘法運算結(jié)果執(zhí)行累加運算,其后控制器151再為乘法及累加運算模塊152、153、154和155讀取下一次乘法運算所需要的數(shù)據(jù),再次啟動這些模塊執(zhí)行一次乘法運算以及累加運算,這樣重復16次后即完成了似然比計算模塊15的一個運算周期所需要的乘法以及累加運算。
在乘法及累加運算模塊152、153、154和155執(zhí)行完乘法以及累加運算后,控制器151生成時序控制信號啟動似然比除法運算模塊156、157分別計算對應k時刻、k+1時刻的信息比特的似然比函數(shù)值,計算方式如公式15所示。
圖10所示為乘法及累加運算模塊152、153、154和155按串行方式進行乘法和累加運算時,似然比計算模塊15的一個計算周期內(nèi)的動作時序關系示意圖。一個計算周期包括數(shù)據(jù)R[1],…,R[16]的讀入、乘法和累加運算MA[1],…,MA[16],以及似然比函數(shù)值的計算以及輸出。而且,數(shù)據(jù)的讀入以及乘法和累加運算的時序是按流水線的方式進行安排,即從讀入R[2]開始,讀入R[k]的同時進行MA[k-1]的計算。所有MA[k]的計算都結(jié)束后,計算似然比函數(shù)并輸出。然后,又開始下一個計算周期的運算。
本發(fā)明的最典型應用是作為軟輸入軟輸出的單元譯碼器應用于特博碼譯碼器中,也可以作為獨立的軟輸入軟輸出或者軟輸入硬輸出的譯碼器使用。
本發(fā)明在以上說明中,雖然以編碼率為1/2和約束長度為4的卷積碼為例說明,但是事實上對于任意編碼率和任意約束長度,本發(fā)明的譯碼方法均可以適用。
權利要求
1.一種最大后驗概率譯碼方法,其特征在于,包括以下步驟基于輸入接收數(shù)據(jù)序列計算對應每一時刻的所有可能的分支度量;基于前述分支度量序列按迭代的方式計算對應偶數(shù)時刻的前向狀態(tài)度量;基于前述分支度量序列按迭代的方式計算對應偶數(shù)時刻的反向狀態(tài)度量;基于以上計算所得的分支度量、前向狀態(tài)度量以及反向狀態(tài)度量計算每一時刻的信息比特的似然比函數(shù)值;基于所述似然比函數(shù)值進行硬判決以獲得譯碼結(jié)果,或者將所述似然比函數(shù)值直接應用于后續(xù)數(shù)據(jù)處理。
2.如權利要求1所述的最大后驗概率譯碼方法,其特征在于所述分支度量計算采用如下公式,δi(Rk,m)=K·exp(-2xki+2ykYki(m)σ2)]]>其中m表示狀態(tài)遷移圖中的狀態(tài),Rk={xk,yk}表示輸入接收數(shù)據(jù)符號,K以及σ2均為與信道條件相關的常數(shù)。
3.如權利要求1所述的最大后驗概率譯碼方法,其特征在于所述前向狀態(tài)度量根據(jù)以下公式進行計算αk+2(m′′)=Σ(m,m′)αk(m)*γk(m,m′)*γk+1(m′,m′′)]]>其中,γk(m1,m2)=δi(Rk,m1),m2=Sfi(m1)0,m2≠Sfi(m1)]]>δi(Rk,m1)表示分支度量,Sif(m1)表示在編碼器的當前狀態(tài)為m1時,假定輸入為i∈{0,1}時可遷移到的下一個狀態(tài);在每一個前向狀態(tài)度量計算周期,由8個輸入的k時刻的前向狀態(tài)度量計算出k+2時刻的8個前向狀態(tài)度量,8個新的前向狀態(tài)度量存入前向狀態(tài)度量緩存模塊,且同時用于更新輸入前向狀態(tài)度量寄存器,作為下一個前向狀態(tài)度量計算周期的輸入,計算k+4時刻的前向狀態(tài)度量。
4.如權利要求1所述的最大后驗概率譯碼方法,其特征在于所述反向狀態(tài)度量根據(jù)以下公式以迭代的方式進行計算βk(m)=Σ(m′,m′′)βk+2(m′′)*γk+1(m′,m′′)*γk(m,m′)]]>其中,γk(m1,m2)=δi(Rk,m1),m2=Sfi(m1)0,m2≠Sfi(m1)]]>δi(Rk,m1)表示分支度量,Sif(m1)表示當前狀態(tài)m下,假定輸入為i∈{0,1}時所遷移到的下一狀態(tài);在每一個反向狀態(tài)度量計算周期,由8個輸入的k+2時刻的反向狀態(tài)度量計算出k時刻的8個反向狀態(tài)度量,8個新的反向狀態(tài)度量存入反向狀態(tài)度量緩存模塊,且同時用于更新輸入反向狀態(tài)度量寄存器,作為下一個反向狀態(tài)度量的計算周期的輸入,計算k-2時刻的反向狀態(tài)度量。
5.如權利要求1所述的最大后驗概率譯碼方法,其特征在于所述似然比函數(shù)值通過以下方式進行計算L(dk=0)=Σ{m,m′,m′′}∈Ω(0x)σk(m,m′,m′′)]]>L(dk=1)=Σ{m,m′,m′′}∈Ω(1x)σk(m,m′,m′′)]]>L(dk+1=0)=Σ{m,m′,m′′}∈Ω(x0)σk(m,m′,m′′)]]>L(dk=1)=Σ{m,m′,m′′}∈Ω(x1)σk(m,m′,m′′)]]>LR(dk)=L(dk=0)L(dk=1),LR(dk+1)=L(dk+1=0)L(dk+1=1)]]>其中,σk(m,m′,m″)表示壓縮的狀態(tài)遷移網(wǎng)格圖中的連續(xù)兩個時刻的狀態(tài)遷移信息,其計算公式如下所示σk(m,m′,m″)=αk(m)*γk(m,m′,m″)*βk+2(m″)其中,γk(m,m′,m″)表示連續(xù)兩個時刻k和k+1的聯(lián)合分支度量,根據(jù)k時刻和k+1時刻編碼器輸入數(shù)據(jù)為i、j,有以下4種不同的聯(lián)合分支度量 i=0,1;j=0,1;其中,Ω(0x)、Ω(1x)、Ω(x0)、Ω(x1)表示相鄰兩個時刻的狀態(tài)遷移關系的集合,假定k時刻、k+1時刻以及k+2時刻的狀態(tài)分別為m、m’和m”,則集合Ω(0x)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0或者1時,狀態(tài)由m’遷移至m”;集合Ω(1x)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0或者1時,狀態(tài)由m’遷移至m”;集合Ω(x0)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0或者1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為0時,狀態(tài)由m’遷移至m”;集合Ω(x1)表示滿足如下關系的m、m’和m”三者的集合在編碼器輸入信息比特為0或者1時,狀態(tài)由m遷移至m’;在編碼器輸入信息比特為1時,狀態(tài)由m’遷移至m”。
6.一種用于實施如權利要求1所述的譯碼方法的譯碼裝置,其特征在于包括分支度量計算模塊(11),用于計算分支度量,并將計算結(jié)果存儲在分支度量緩存模塊(16)中,供前向狀態(tài)度量、反向狀態(tài)度量和似然比函數(shù)值計算時使用;前向狀態(tài)度量計算模塊(12),用于計算前向狀態(tài)度量;該模塊根據(jù)輸入的前向狀態(tài)度量及分支度量進行乘法及累加運算,計算新的前向狀態(tài)度量,并將計算結(jié)果存入前向狀態(tài)度量緩存模塊(18)中;反向狀態(tài)度量計算模塊(13),用于計算反向狀態(tài)度量;該模塊根據(jù)輸入的反向狀態(tài)度量及分支度量進行乘法及累加運算,計算新的反向狀態(tài)度量,并將計算結(jié)果存入反向狀態(tài)度量緩存模塊(17)中;似然比計算模塊(15),基于以上計算所得的分支度量、前向狀態(tài)度量、反向狀態(tài)度量計算對應每一時刻編碼器的輸入信息比特的似然比;狀態(tài)遷移網(wǎng)格信息模塊(14),以查找表的形式存儲Ω(0x)、Ω(1x)、Ω(x0)和Ω(x1)四個集合所表示的狀態(tài)遷移信息,在計算似然比函數(shù)L(dk=0)、L(dk=1)、L(dk+1=0)和L(dk+1=1)時,通過查閱該模塊中所存儲的信息,以確定從分支度量緩存模塊、前向狀態(tài)度量緩存模塊和反向狀態(tài)度量緩存模塊中讀取相應的數(shù)據(jù)進行計算。
7.如權利要求6所述的譯碼裝置,其特征在于所述分支度量緩存模塊(16)為包含4*N個存儲單元的存儲模塊。
8.如權利要求6所述的譯碼裝置,其特征在于所述前向狀態(tài)度量計算模塊(12)包括8個輸入前向狀態(tài)度量寄存器(α_old
~α_old[7])、8個輸出前向狀態(tài)度量寄存器(α_new
~α_new[7])、以及8個乘法和累加運算模塊(120~127);在開始前向狀態(tài)度量計算時,輸入前向狀態(tài)度量寄存器(α_old
)被初始化為“1”,而輸入前向狀態(tài)度量寄存器(α_old[1]~α_old[7])則被初始化為“0”;乘法和累加運算模塊(120~127)分別對輸入的4個前向狀態(tài)度量以及4個分支度量進行乘法及累加運算,計算結(jié)果即為新的前向狀態(tài)度量;所述新的前向狀態(tài)度量通過輸出前向狀態(tài)度量寄存器(α_new
~α_new[7])存入前向狀態(tài)度量緩存模塊(18),同時用于更新輸入前向狀態(tài)度量寄存器(α_old
~α_old[7])。
9.如權利要求6所述的譯碼裝置,其特征在于所述反向狀態(tài)度量計算模塊(13)包括8個輸入反向狀態(tài)度量寄存器(β_old
~β_old[7])、8個輸出反向狀態(tài)度量寄存器(β_new
~β_new[7])、以及8個乘法和累加運算模塊(130~137);在開始反向狀態(tài)度量計算時,輸入反向狀態(tài)度量寄存器(β_old
)被初始化為“1”,而輸入反向狀態(tài)度量寄存器(β_old[1]~β_old[7])則被初始化為“0”;乘法和累加運算模塊(130~137)分別對輸入的4個反向狀態(tài)度量以及4個分支度量進行乘法以及累加運算,計算結(jié)果即為新的反向狀態(tài)度量;所述新的反向狀態(tài)度量通過輸出反向狀態(tài)度量寄存器(β_new
~β_new[7])存入反向狀態(tài)度量緩存模塊(17),同時用于更新輸入反向狀態(tài)度量寄存器(β_old
~β_old[7])。
10.如權利要求6所述的譯碼裝置,其特征在于所述似然比計算模塊(15)由提供時序和地址信息、用于控制其它模塊動作的控制信息的控制器(151)、乘法及累加運算模塊(152~155)、似然比除法運算模塊(156、157)構(gòu)成;似然比計算模塊(15)在一個計算周期計算對應連續(xù)兩個時刻的信息比特的似然比函數(shù)值;控制器(151)根據(jù)譯碼過程的要求查詢狀態(tài)遷移網(wǎng)格圖信息模塊(14),以生成從分支度量緩存模塊(16)、反向狀態(tài)度量緩存模塊(17)和前向狀態(tài)度量緩存模塊(18)讀取數(shù)據(jù)的地址信號,并讀取相應的數(shù)據(jù)提供給乘法及累加運算模塊(152~155);同時控制器(151)還生成相應的時序控制信號以控制乘法及累加運算模塊(152~155)以及似然比除法運算模塊(156、157)在合適的時間執(zhí)行相應的運算動作。乘法及累加運算模塊(152~155)先進行乘法運算,然后分別執(zhí)行累加運算。
11.如權利要求10所述的譯碼裝置,其特征在于所述乘法及累加運算模塊(152~155)以并行的方式進行乘法和累加運算,控制器(151)先將該計算周期內(nèi)所需的4個對應k時刻的分支度量、4個對應k+1時刻的分支度量、8個對應k時刻的前向狀態(tài)度量以及8個對應k+2時刻的反向狀態(tài)度量全部讀出且存放在乘法及累加運算模塊(152~155)各自的輸入緩存或者輸入寄存器模塊中,然后啟動這些模塊進行乘法和累加運算。
12.如權利要求10所述的譯碼裝置,其特征在于所述乘法及累加運算模塊(152~155)以串行的方式進行乘法和累加運算,控制器(151)每一次為乘法及累加運算模塊(152~155)分別讀取一次乘法運算所需要的數(shù)據(jù),然后啟動這些模塊執(zhí)行乘法運算,并對乘法運算結(jié)果與上一次的乘法運算結(jié)果執(zhí)行累加運算,其后控制器(151)再為乘法及累加運算模塊(152~155)讀取下一次乘法運算所需要的數(shù)據(jù),再次啟動這些模塊執(zhí)行一次乘法運算以及累加運算,這樣重復16次后即完成了似然比計算模塊(15)的一個運算周期所需要的乘法以及累加運算。
13.如權利要求10至12任何一項所述的譯碼裝置,其特征在于所述乘法及累加運算完成后,控制器(151)生成時序控制信號啟動似然比除法運算模塊(156、157)分別計算對應k時刻、k+1時刻的信息比特的似然比函數(shù)值。
全文摘要
本發(fā)明公開了一種最大后驗概率譯碼方法及譯碼裝置。基于壓縮的狀態(tài)遷移網(wǎng)格圖,在進行狀態(tài)度量的迭代計算時,只對偶數(shù)時刻計算前向狀態(tài)度量和反向狀態(tài)度量,最后基于所述偶數(shù)時刻的前向狀態(tài)度量和反向狀態(tài)度量以及相應的分支度量,計算各個時刻的對應編碼器輸入數(shù)據(jù)的似然比函數(shù)值。本發(fā)明在一個處理周期內(nèi)處理兩個接收的數(shù)據(jù)符號集。相比傳統(tǒng)的最大后驗概率譯碼方法,提高了數(shù)據(jù)的吞吐量,同時減少了一些狀態(tài)度量的計算,使得系統(tǒng)的性能得到了優(yōu)化。
文檔編號H04L1/00GK1913366SQ20051002864
公開日2007年2月14日 申請日期2005年8月10日 優(yōu)先權日2005年8月10日
發(fā)明者陳小元 申請人:上海明波通信技術有限公司