本發(fā)明是關于通訊系統(tǒng),尤其是關于對于卷積碼通訊的一接收器所用的一軟輸出解碼器。
背景技術:
在數(shù)字通訊系統(tǒng)傳輸數(shù)據(jù)的過程中,往往因為不可預測的干擾而導致接收端接收到錯誤的訊息。在不增加傳輸功率的考量下,信道編碼能有效降低錯誤率,其缺點是會占用傳輸?shù)念l寬。然而鑒于大眾對數(shù)據(jù)傳輸與儲存系統(tǒng)的需求與日俱增,未來的傳輸速率將會更快,且越來越講究服務品質(quality of service,QoS)之下,由于使用信道編碼可以保證傳輸比特的錯誤率控制在一定范圍內,信道編碼仍成為系統(tǒng)設計的重要考量。
卷積編碼(convolutional code)經(jīng)常使用于信道編碼,來避免接收端接收到錯誤的訊息。在發(fā)送端,送出去的一碼向量(code vector)或是一信息區(qū)塊,可以用一柵欄圖(trellis diagram)來描述,而柵欄圖的復雜度是取決于編碼器的限制記憶長度(constraint length)。盡管限制記憶長度越長,計算上就越復雜,但是相對的,這樣的編碼就越穩(wěn)健(robustness)。
在接收端,可以采用一軟判決解碼器(soft-decision decoder),通過維特比(Viterbi)等運算法,運用柵欄(trellis)架構找出最可能的碼向量(maximum likelihood code vector)以進行解碼。但是,維特比運算法的運算復雜度,會隨著限制記憶長度增加而指數(shù)化的增加。換言之,對于限制記憶長度比較長的卷積編碼來說,維特比解碼器將會需要相當可觀的存儲器以及消耗相當多功率來處理運算。
渦輪碼(turbo code)被證明可以比一般編碼技術有更佳的表現(xiàn)。渦輪碼一般是由兩個或以上的卷積碼,以渦輪交織器處理后所構成。渦輪碼的解碼則是以迭代的方式,使用一軟判決解碼器來解碼個別卷積碼。軟判決解碼器針對一卷 積碼進行解碼,以提供外部信息(extrinsic information),而這外部信息可以讓軟判決解碼器針對另一卷積碼進行解碼時更準確。已知技術中,軟判決解碼可以采用最大后驗概率(Maximum a posteriori probability,MAP)運算法或是軟式輸出維特比運算法(soft output Viterbi algorithm,SOVA),前述二者都需要前向遞歸(forward recursion)以及后向遞歸(backward recursion)來進行解碼,以便決定一信息區(qū)塊(block)的軟式輸出。一般而言在較低的信噪比的環(huán)境下,渦輪碼比起其他的卷積碼有更佳的表現(xiàn)。
MAP演算法的計算量相當?shù)卮笄覐碗s,而且關系到指數(shù)的運算。如果不特別處理的話,往往會大幅地增加解碼硬件需求或是解碼過程中所產生的時間延遲。
技術實現(xiàn)要素:
本發(fā)明的實施例提供一種應用于一卷積編碼信號的解碼方法,該方法包含下列步驟:(a)以一第一調整因子調整一第一輸入信息,以產生一第一先驗信息;(b)依據(jù)一系統(tǒng)信息與該第一先驗信息對該卷積編碼信號進行解碼,產生一第一外部信息;(c)以一第二調整因子調整一第二輸入信息,以產生一第二先驗信息,其中該第二調整因子是依據(jù)該第一外部信息與該第一先驗信息而產生;以及,(d)依據(jù)該系統(tǒng)信息與該第二先驗信息對該卷積編碼信號進行解碼,產生一第二外部信息。其中,步驟(b)和(d)其中之一更產生一后驗信息以作為一解碼結果。
本發(fā)明的實施例提供一種應用于一卷積編碼信號的解碼裝置。該裝置包含有一第一軟進軟出解碼器、一第二數(shù)據(jù)轉換器、一第二軟進軟出解碼器、一第一數(shù)據(jù)轉換器、一第一調整因子產生器、以及一第二調整因子產生器。該第一軟進軟出解碼器依據(jù)一系統(tǒng)信息與一第一先驗信息對該卷積編碼信號進行解碼,產生一第一外部信息。該第二數(shù)據(jù)轉換器依據(jù)一第二調整因子,將該第一外部信息轉換成一第二先驗信息。該第二軟進軟出解碼器,依據(jù)該系統(tǒng)信息與該第二先驗信息對該卷積編碼信號進行解碼,產生一第二外部信息。該第一數(shù)據(jù)轉換器依據(jù)一第一調整因子,將該第二外部信息轉換成該第一先驗信息。該第一調整因子產生器依據(jù)該第一先驗信息以及該第一外部信息,產生該第一調整因子與該第二調整因子其中之一。該第二調整因子產生器依據(jù)該第二先驗信 息以及該第二外部信息,產生該第一調整因子與該第二調整因子其中之另一。該第一與第二軟進軟出解碼器其中之一更產生一后驗信息以作為一解碼結果。
附圖說明
為讓本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,以下結合附圖對本發(fā)明的具體實施方式作詳細說明,其中:
圖1顯示一柵欄。
圖2顯示一渦輪編碼器與解碼器。
圖3與圖4顯示依據(jù)本發(fā)明實施的二個渦輪解碼器。
圖5與圖6顯示依據(jù)本發(fā)明實施的另二個渦輪解碼器。
圖中元件標號說明:
12:遞歸系統(tǒng)卷積編碼器
14:遞歸系統(tǒng)卷積編碼器
16:交織器
18:交織器
20:軟進軟出解碼器
22:軟進軟出解碼器
24:交織器
26:解交織器
32:乘法器
34:因子產生器
36:乘法器
38:因子產生器
40、42:因子產生器
50、52、54、56:渦輪解碼器
La1、La2:先驗信息
Le1、Le2:外部信息
s1、s2:調整因子
X:區(qū)塊碼
Xp1、Xp2:檢查碼
Xs:系統(tǒng)區(qū)塊碼
解碼結果
Yp1:檢查信息
Yp2:檢查信息
Ys:系統(tǒng)信息
具體實施方式
本發(fā)明可以改善軟判決解碼器于迭代處理下的收斂速度。本發(fā)明實施例中的解碼器引進了調整因子,用來調整由外部信息經(jīng)過交織或是解交織處理后所產生的先驗信息。此調整因子并不是一個常數(shù),而是會隨著先前迭代解碼所產生的結果以及先前調整因子的值,動態(tài)的變化。
一般來說,卷積碼、渦輪碼等可以用柵欄(trellis)來表示,如同圖1所示。在圖1中的柵欄具有13個時間點(steps),每個時間點有4種可能狀態(tài)(state),代表了編碼器的限制記憶長度為2。換言之解碼圖1的柵欄將會得到區(qū)塊碼長度為12的區(qū)塊碼(code of block)。為了說明上的方便,以下將以K表示區(qū)塊碼長度,表示一個區(qū)塊碼所擁有的時間點。如同已知技術所知的,MAP解碼器是在柵欄上采用前向遞歸與后向遞歸,以產生軟輸出。MAP解碼器基于所收到信息,使解碼后的比特錯誤率最小化。
圖2的左半部顯示一渦輪編碼器;右半部顯示一渦輪解碼器。渦輪編碼器一般是由并行連接(parallel concatenate)的兩個遞歸系統(tǒng)卷積(recursive systematic convolutional)編碼器RSC 12與RSC 14所構成,而兩個遞歸系統(tǒng)卷積編碼器12與14中間以交織器(INT)16相連接。遞歸系統(tǒng)卷積編碼器RSC 12依據(jù)一區(qū)塊碼X,產生一串檢查比特(parity bits)xkp1,整體稱為檢查碼Xp1,其中k=0~K-1。類似的,遞歸系統(tǒng)卷積編碼器RSC 14依據(jù)交織后的區(qū)塊碼xkp2,產生檢查碼Xp2。區(qū)塊碼X又稱為系統(tǒng)區(qū)塊碼(systematic block code)Xs,由一串系統(tǒng)碼xks所構成。系統(tǒng)區(qū)塊碼Xs、檢查碼Xp1、檢查碼Xp2中的比特,可能通過多工器交錯連接而輸出到通訊信道。為了提高編碼率(code rate),可將部分的 檢查比特漏掉不輸出,舉例來說,相同時間點的檢查比特xkp1與xkp2只有部分輸出(puncture)到通訊信道,如此,可以使圖2的渦輪編碼器有較高的編碼率。
圖2的渦輪解碼器接著計算所接收到信息的可靠度,以對數(shù)似然比(log-likelihood ratios,LLR)的形式表示,每個LLR表示一個對應的比特為0或1的概率。相對于系統(tǒng)區(qū)塊碼Xs、檢查碼Xp1與檢查碼Xp2,渦輪解碼器產生了系統(tǒng)信息Ys、檢查信息Yp1與檢查信息Yp2。舉例來說,系統(tǒng)信息Ys由一串LLR yks所構成,檢查信息Yp1由一串LLR ykp1所構成,k=0~K-1。圖2的渦輪解碼器包含了交織器(INT)18與24、軟進軟出解碼器(soft-input-soft-output,SISO)20與22、以及解交織器(deinterleaver)26;他們之間的運作以及迭代的方式,大致依循BCJR(Bahl,Cocke,Jelinek and Raviv)運算法(algorithm),也稱為MAP演算法。SISO 20依據(jù)系統(tǒng)信息Ys以及檢查信息Yp1,外加上先驗信息(a-priori information)La1,計算出軟輸出(通常是以LLR表示的最大后驗概率),稱為外部信息(extrinsic information)Le1。經(jīng)過交織處理后,外部信息Le1變成先驗信息La2。SISO 22依據(jù)交織后的系統(tǒng)信息Ys、檢查信息Yp2、與先驗信息La2,計算出外部信息Le2。外部信息Le2經(jīng)過解交織處理后成為先驗信息La1,回送給SISO 20。經(jīng)過一次SISO 20或22的處理稱為半次迭代(half-iteration),經(jīng)過一次SISO 20與22的運算過程稱為一次迭代(iteration)。一般來說,這樣的迭代循環(huán)重復一定固定的次數(shù),或是直到迭代循環(huán)中的外部信息Le1或Le2的符號變化數(shù)量少到一定程度為止。在圖2中,當?shù)h(huán)重復結束后,SISO 22可以產生一后驗信息,其經(jīng)過解交織處理以及硬判決(hard decision)后,作為解碼結果圖2并非用于限制本發(fā)明,舉例來說,在另一實施例中,當?shù)h(huán)重復結束后,SISO 20也可以產生另一后驗信息,其經(jīng)過硬判決后,也可以作為解碼結果
前述MAP演算法計算在一接收訊息Y的條件下,在時間點k上的訊息比特為數(shù)字上的1或0的概率,或是稱為后驗對數(shù)似然比(a posteriori log-likelihood ratio)L(uk|Y),其定義如下。
MAP演算法是通過在柵欄上前向與后向遞歸運算,來計算出每個時間點k上的L(uk|Y),其整理后,可以表示為
其中,分支計量(branch metric)rk(n,m)表示,假定時間點k-1時為狀態(tài)n的條件下,接收訊息為Y,并且到時間點k時變成狀態(tài)m的概率;前向狀態(tài)計量(forward state metric)αk-1(n)表示,在接收訊息Y的條件下,在時間點k-1時狀態(tài)處于n的概率,其計算需要參考αk-2(n);后向狀態(tài)計量βk(m)表示,在接收訊息Y的條件下,在時間點k時,狀態(tài)處于m的概率,其計算需要參考βk+1(m)。而分子的總和符號,指的是對所有可能產生uk=1的分支,做計算后加總;類似的,分母的總和符號,是指對所有可能產生uk=-1的分支,做計算后加總。如同已知技術所知的,前向狀態(tài)計量αk(m)、后向狀態(tài)計量βk(m)與分支計量γk(n,m)可以分別表示如下
其中,Ak是常數(shù),i=+1或是-1。公式(2)可知,要算出前向狀態(tài)計量αk(m),就必須知道在時間點k之前的前向狀態(tài)計量α;公式(3)可知,要算出后向狀態(tài)計量βk(m),就必須知道在時間點k之后的后向狀態(tài)計量β。因此,前向狀態(tài)計量αk(m)與后向狀態(tài)計量βk(m)一般都是以遞歸方式計算出來,只是遞歸的方向剛好相反。公式(4)可以量rk(n,m)需要指數(shù)與乘法運算,不論是以硬件或是軟件來實現(xiàn),都將會非常耗費能源與成本。
Log-MAP演算法利用在對數(shù)象限運算,來簡化MAP的計算過程。更進一步的,指數(shù)與對數(shù)的計算,可以通過以下近似的方法來簡化。
max*(x,y)≡ln(ex+ey)=max(x,y)+ln(1+e-|y-x|) ....(5)
其中,最后一項的對數(shù)計算,可以用查表法取得。Max-Log-MAP演算法更進一步的去除掉公式(5)中的最后一項,來近似max*的運算子,如下:
max*(x,y)=ln(ex+ey)≈max(x,y) ....(6)
SISO 20與22中的解碼運算,都是采用最大后驗概率(Maximum a posteriori probability,MAP)運算法來進行解碼,而MAP運算法可以是Log-MAP或 Max-Log-MAP運算法。
以Log-MAP或Max-Log-MAP演算法處理時,公式(4)就可以整理為
Γk(n,m)=ln(γk(n,m))=2/N0*(yk5xk5(i)+ykpxkp(i,n,m))+ln(P(m|n))+K ....(7)
公式(7)中,K是常數(shù),而P(m|n)是前半次迭代所傳來的輸入信息,例如說先驗信息。兩個半次迭代之間所交換的輸入信息,其分量可以被些許的調整,例如乘上一個調整因子(scaling factor)sd,來增進渦輪解碼器中迭代循環(huán)的收斂速度。其中d為1或2,分別對應到SISO 20與22,也就是第1與第2半次迭代。
調整因子sd可以設為一個固定數(shù)值,譬如說0.7。只是,到底是哪一個固定數(shù)值比較適切,這往往很難取舍。
圖3為依據(jù)本發(fā)明所實施例的一渦輪解碼器50,其中所采用的調整因子s1與s2并非是一個固定數(shù)值,而是會隨著迭代循環(huán)的演進,動態(tài)地更新。跟圖2中的渦輪解碼器不同的,渦輪解碼器50額外增加了因子產生器38與34,以及乘法器36與32。因子產生器38提供調整因子s1給乘法器36,其調整先驗信息La1,產生s1x La1,作為SISO 20新的先驗信息。當SISO 20完成半次迭代后,產生外部信息Le1。此時因子產生器38將依據(jù)外部信息Le1與先驗信息s1x La1、以及一特定的公式,找出新的調整因子s1,采用于下一次迭代循環(huán)。因子產生器34與乘法器32則用于另一半次迭代,其操作與原理可以通過了解因子產生器38與乘法器32彼此間的操作與原理而得知,不再累述。
在本發(fā)明的一實施例中,舉例來說,因子產生器38與34分別依據(jù)以下公式(9a)與(9b)計算而產生s1與s2。
s1(I+1)=s1(I)+STEP*DIF1(I)/LEN ....(9a)
s2(I+1)=s2(I)+STEP*DIF2(I)/LEN .......(9b)
其中,STEP表示一個常數(shù),可以依據(jù)需求而預先設定,s1(I)表示第I次迭代循環(huán)的第1半次迭代所采用的調整因子。變異量DIF1(I)為第I次迭代循環(huán)的第1半次迭代的解碼后所對應產生的區(qū)塊碼(也就是外部信息Le1),與前半次迭代后所對應產生的區(qū)塊碼(也就是先驗信息La1),彼此之間有不同的比特的數(shù)目總和。變異量DIF1(I)可以通過第1半次迭代的先驗信息La1與外部信息Le1而得知。舉例來說,經(jīng)歷了第2次迭代循環(huán)中的第1個半次迭代后,外部信息Le1 所對應產生的區(qū)塊碼,與先驗信息La1所對應產生的區(qū)塊碼,彼此之間有3個比特的差異,因此變異量DIF1(2)為3。LEN為相關于區(qū)塊碼長度K的一個常數(shù)。在一個實施例中,LEN直接等于區(qū)塊碼長度K,譬如為2080。在另一個實施例中,LEN與區(qū)塊碼長度K的關系為LEN=K*bit/step,bit為information bit,bit/step就是每個step輸出的可能性的數(shù)量,在一實施例中,K=2080,bit/step=2,LEN=4160。
s2(I)與變異量DIF2(I)分別表示第I次迭代循環(huán)的第2半次迭代所采用的調整因子,以及第I次迭代循環(huán)的第2半次迭代的解碼后所產生的變異量。
在一些實施例中,調整因子的起始值s1(0)與s2(0),都設為0.25。在一些實施例中,調整因子s1與s2被限定最大值為1。換言之,如果公式(9a)與(9b)所計算得到的調整因子s1與s2超過1,那調整因子s1與s2就設為1。
從公式(9a)與(9b)可以發(fā)現(xiàn),當下半次迭代所采用的調整因子是由前一次迭代循環(huán)中所相對應的半次迭代所采用的調整因子與解碼結果所決定。此外,如果前一次迭代循環(huán)所產生的變異量DIFd(I)不是0,那這一次迭代循環(huán)所用的調整因子就比前一次迭代循環(huán)所用的調整因子大。公式(9a)與(9b)也可以發(fā)現(xiàn),每次迭代循環(huán)中所使用的調整因子s1與s2,都不會小于前次迭代循環(huán)中所使用的調整因子s1與s2。
經(jīng)過電腦模擬證明,采用公式(9a)與(9b)的調整因子,能夠讓迭代循環(huán)快速地收斂,也就是使得變異量DIFd(I)快速地減少。這樣,可以增進渦輪解碼器的解碼效率。
圖4為依據(jù)本發(fā)明另一實施例的一渦輪解碼器52,在此實施例中,因子產生器40與42分別依據(jù)以下公式(10a)與(10b)計算而產生調整因子s2與s1。
s2(I)=s1(I)+STEP*DIF1(I)/LEN .......(10a)
s1(I+1)=s2(I)+STEP*DIF2(I)/LEN .......(10b)
圖3與圖4中的調整因子都是用來調整先驗信息,但本發(fā)明并不限于此。舉例來說,圖5與圖6為依據(jù)本發(fā)明所實施的二個渦輪解碼器54與56,其中調整因子是用來調整外部信息。凡調整因子用來調整兩個SISO之間交換的輸入信息,都是屬于本發(fā)明的范圍。
圖5與圖3相類似,其中相似或相同的處不再累述。在圖5中,因子產生 器38與34分別依據(jù)公式(9a)與(9b)計算而產生s1與s2。圖5中的乘法器36將SISO 22所產生的外部信息Le2乘以調整因子s1,產生s1xLe2送給解交織器26;類似的,乘法器32將SISO 20所產生的外部信息Le1乘以調整因子s2,產生s2xLe1送給交織器24。
圖6與圖4相類似,其中相似或相同之處不再累述。在圖6中,因子產生器40與42分別依據(jù)公式(10a)與(10b)計算而產生s2與s1。圖6中的乘法器36將SISO 22所產生的外部信息Le2乘以調整因子s1,產生s1xLe2送給解交織器26;類似的,乘法器32將SISO 20所產生的外部信息Le1乘以調整因子s2,產生s2xLe1送給交織器24。
圖3與圖5中,因子產生器38與34分別依據(jù)公式(9a)與(9b)計算而產生調整因子s1與s2。其中,每次調整因子的變更,是參考同個半迭代上次使用的調整因子,但本發(fā)明并不限于此。在另一個實施例中,圖3與圖5中的因子產生器38與34分別依據(jù)以下公式(11a)與(11b)計算而產生調整因子s1與s2。在(11a)與(11b)中,每次調整因子的變更,是參考前半迭代使用的調整因子。
s1(I+1)=s2(I)+STEP*DIF1(I)/LEN ....(11a)
s2(I)=s1(I)+STEP*DIF2(I)/LEN ....(11b)
圖4與圖6中,因子產生器40與42分別依據(jù)公式(10a)與(10b)計算而產生調整因子s2與s1。其中,每次調整因子的變更,是參考同個前半迭代使用的調整因子,但本發(fā)明并不限于此。在另一個實施例中,圖4與圖6中的因子產生器40與42分別依據(jù)以下公式(12a)與(12b)計算而產生調整因子s2與s1。在(12a)與(12b)中,每次調整因子的變更,是參考同個半迭代上次使用的調整因子。
s2(I+1)=s2(I)+STEP*DIF1(I)/LEN ....(12a)
s1(I+1)=s1(I)+STEP*DIF2(I)/LEN ....(12b)
簡單來說,每次調整因子的變更,可以參照考同個前半迭代使用的調整因子,或是參照前一半迭代所使用的調整因子;每次調整因子的變更,可以參照同個前半迭代所產生的變異量,或是參照前一半迭代所產生的變異量。因此,至少就有四種組合。這些都屬于本發(fā)明的實施例。
當?shù)h(huán)重復結束后,圖3至圖6都是從SISO 22產生一后驗信息,其經(jīng)過解交織處理以及硬判決(hard decision)后,作為解碼結果在其他的實施 例中,也可以從SISO 20產生另一后驗信息,其經(jīng)過硬判決后,作為解碼結果
雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,任何本領域技術人員,在不脫離本發(fā)明的精神和范圍內,當可作些許的修改和完善,因此本發(fā)明的保護范圍當以權利要求書所界定的為準。