專利名稱:一種Turbo碼譯碼方法和裝置的制作方法
技術領域:
本發明涉及通信系統技術,特別是涉及一種Turbo碼譯碼方法和裝置。
背景技術:
由于Turbo碼的近Shannon界的突出糾錯能力,長期演進(LTE,Long Term Evolution)系統選用Turbo碼作為高速數據業務的信道編碼方案。
圖1是現有的LTE系統中的Turbo編碼器的示意圖。如圖1所示,LTE采用傳統的由兩個并行的分量編碼器和一個內交織器組成的Turbo編碼器。兩個分量編碼器分別為分量編碼器1和分量編碼器2。其中,每個分量編碼器與WCDMA系統采用相同的結構,包括三個寄存器,狀態數目為8。而內交織器采用了二次置換多項式(QPP,Quadratic Permutation Polynomial)交織器。假設輸入內交織器的比特流ck的長度為K,即該比特流為c0,c1,...,cK-1,經過交織后輸出的比特流是c′0,c′1,...,c′K-1,那么它們滿足對應關系c′i=c∏(i),交織前后的元素序號的對應關系滿足二次多項式∏(i)=(f1i+f2i2)mod K,i=0,1,...,K-1。現有的標準中以列表的形式給出了各種交織長度下,二次多項式參數f1和f2所對應的數值。圖1所示的編碼器的碼率為1/3,輸出3個分量(xk、zk、z′k),其中,xk為輸入信道的數據,zk和z′k為校驗序列,由于受到Turbo碼總共12個尾比特的影響,每個分量碼的長度為D=K+4。
Turbo碼譯碼采用軟輸入軟輸出(SISO)的最大后驗概率(MAP,Maximum A Posteriori)算法,該算法是在給定信道觀察序列的情況下計算馬爾科夫過程的每個狀態轉移、消息比特和編碼符號的后驗概率,只要計算出這些量的所有可能的后驗概率,即可以通過硬判決取具有最大后驗概率的值為估計值。MAP算法是實現Turbo迭代譯碼的最優算法。
對數域最大后驗概率(Log-MAP)算法是MAP算法的對數域實現。Log-MAP算法的計算步驟如下 (a)從k=0開始,根據以下的式(1)計算分支度量值Dki,m 式(1) 其中,稱γ為分支度量參數,k為時間下標,m為狀態下標,σ為常數,xk為信道觀測序列,yk為校驗序列,p為Dki,m的先驗信息,初始時p的值可以取0,之后取上一次迭代過程中的外信息。
(b)在k=0時,初始化前向路徑度量A,并根據以下的式(2)利用Dki,m從k=0到k=N-1計算并存儲前向路徑度量Akm 式(2) 這里,稱α為前向路徑度量參數。
(c)在k=N-1時,初始化后向路徑度量B,并根據以下的式(3)利用Dki,m從k=N-2到k=0計算并存儲后向路徑度量Bkm 式(3) 這里,稱β為前向路徑度量參數。
(d)根據以下的式(4)從k=0到k=N-1計算信息比特對數似然比LLR 式(4) 根據LLR計算外信息Le Le(dk)=L(dk|Y1N)-[La(dk)+lcxk)式(5) (e)將外信息作為下一次迭代時計算的Dki,m先驗信息,循環迭代運算上述過程,直至達到最大的迭代次數It,并根據最后一次迭代過程中的LLR做出相應的判決輸出。
其中,max*(x,y)=ln(ex+ey)=max(x,y)+ln(1+e-|x-y|),包含求最大值運算和修正函數f(x)=ln(1+e-x)運算,函數f(x)可以采用查找表實現。
基于上述Log-MAP算法實現的Turbo譯碼器的基本結構如圖2所示。
圖2是現有的Turbo譯碼器的基本結構圖。如圖2所示,實現Turbo譯碼器的軟輸入軟輸出(SISO)譯碼器由兩個分量譯碼器級聯組成,分別為分量譯碼器1和分量譯碼器2,交織器與圖1中的Turbo編碼器中所使用的交織器相同,即為QPP交織器。分量譯碼器1的輸入為信道觀測序列的對數似然比yks,圖1中的分量編碼器1輸出的校驗序列的對數似然比yk1p,以及由分量譯碼器2的輸出提取出的先驗信息La1(dk)。分量譯碼器1的輸出是對數似然比Le1(x)。Le1(x)減去信道觀測序列的對數似然比yks以及輸入分量譯碼器1的先驗信息La1(dk),得到分量譯碼器1輸出的外信息L1e(dk)。對L1e(dk)進行交織得到La2(dk)。分量譯碼器2的輸入為信道觀測序列的對數似然比yks進行交織后的序列,圖1中的分量編碼器2輸出的檢驗序列的對數似然比yk2p,以及由分量譯碼器1的輸出提取出的先驗信息La2(dk)。分量譯碼器2的輸出是對數似然比Le2(x)。Le2(x)減去交織后的信道觀測序列對數似然比以及輸入分量譯碼器2的先驗信息La2(dk),得到分量譯碼器2輸出的外信息L2e(dk)。L2e(dk)經過反交織得到下一次迭代輸入分量譯碼器1的先驗信息。這樣,經過多次迭代,分量譯碼器1和分量譯碼器2所產生的外信息趨于穩定,后驗概率比值逐漸逼近于對整個碼的最大似然譯碼。
現有的通信系統,如通用移動通信系統(UMTS,UniversalMobile Telecommunication system)中,選用Turbo碼作為高速數據業務的信道編碼方案,其要求的數據速率約為2Mbit/s。即現有的Turbo譯碼器的譯碼速度在2Mbit/s左右。
但LTE系統的具體設計指標要求峰值速率達到上行50Mbit/s、下行100Mbit/s。這意味著LTE系統中的Turbo譯碼器的譯碼速度必須滿足譯碼輸出速率大于100Mbit/s。
因此,現有的Turbo譯碼器的譯碼速度有待提高。
發明內容
本發明提供了一種Turbo碼譯碼方法,該方法能夠提高Turbo碼譯碼速度。
本發明還提供了一種Turbo碼譯碼裝置,該裝置提高了Turbo碼譯碼速度。
為達到上述目的,本發明的技術方案是這樣實現的 本發明公開了一種Turbo碼譯碼方法,該方法包括 對于輸入序列中的每個碼塊,將該碼塊劃分成M個碼段,M為大于1的自然數,將M個碼段分別輸入至M個譯碼單元,由M個譯碼單元根據對數域最大后驗概率Log-MAP算法對各自的輸入碼段并行進行譯碼,并輸出譯碼后的碼段; 其中,將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中,第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數;而第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數。
本發明還公開了一種Turbo碼譯碼裝置,該裝置包括M個譯碼單元,M為大于1的自然數; 輸入序列中的每個碼塊被劃分成為M個碼段后分別輸入至所述M個譯碼單元; 每個譯碼單元,用于接收輸入的碼段,根據對數域最大后驗概率Log-MAP算法對輸入碼段進行譯碼,將譯碼后的碼段輸出; 其中,將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中,第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數;而第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數。
由上述技術方案可見,本發明這種將輸入序列中的每個碼塊劃分成多個碼段后分別輸入至多個譯碼單元,由多個譯碼單元根據Log-MAP算法對各自輸入的碼段并行進行譯碼,其中,在譯碼過程中,相鄰碼段所對應的譯碼單元之間傳遞對應碼段的邊界的前向路徑度量參數和后向路徑度量參數的技術方案,由于有多個譯碼單元并行進行譯碼,因此大大提高了譯碼速度,并且譯碼單元的數量越多,譯碼速度越快。
圖1是現有的LTE系統中的Turbo編碼器的示意圖; 圖2是現有的Turbo譯碼器的基本結構圖; 圖3是本發明實施例中的Turbo碼譯碼裝置的組成結構框圖; 圖4是本發明實施例中的Turbo譯碼器中的相鄰譯碼單元之間邊界狀態值的傳遞示意圖; 圖5是本發明實施例中的包含多級流水線子譯碼器的譯碼裝置的組成結構示意圖; 圖6是本發明實施例中的SISO譯碼器的部分內部結構示意圖; 圖7是本發明實施例中的Turbo譯碼裝置的總體時序操作圖。
具體實施例方式 由于現有的Turbo碼譯碼裝置只包括一個包含圖2所示基本結構的譯碼單元,由該唯一的譯碼單元對輸入序列(即待譯碼的序列)的每個碼塊進行譯碼,譯碼速度受限于該唯一的譯碼單元的譯碼效率,因此譯碼速度低,不能滿足LTE等系統的高速數據業務需求。
基于此,本發明的核心思想是由多個譯碼單元采用Log-MAP算法對輸入序列中的每個碼塊的不同碼段并行進行Turbo碼譯碼,并且根據Log-MAP算法的需要,在譯碼過程中,相鄰的譯碼單元之間需要傳遞各自對應碼段的邊界的前向路徑度量參數和后向路徑度量參數。
這種多個譯碼單元并行進行譯碼的方案可以成倍地提高Turbo碼譯碼的速度,且并行進行譯碼的譯碼單元數量越多,譯碼速度越快。因此,在實際當中可以根據實際的譯碼速度需求設定譯碼單元的個數。
圖3是本發明實施例中的Turbo碼譯碼裝置的組成結構框圖。如圖3所示,本實施例中的Turbo碼譯碼裝置包括輸入緩存、輸出緩存、交織/解交織存儲器以及M個并行的譯碼單元,M為大于1的任意自然數,例如4、8、16等。
在圖3中,輸入緩存和輸出緩存用于串并與并串轉換,輸入緩存還實現乒乓操作以提高吞吐量。這里的乒乓操作是指輸入緩存將輸入數據選擇性地輸出給不同的譯碼單元,例如,將某一碼塊的第一個碼段發送給譯碼單元1,將該碼塊的第二個碼段發送給譯碼單元2,以此類推。交織/解交織存儲器用于存儲各譯碼單元進行Turbo碼譯碼運算的過程中進行交織或解交織運算的數據。M個譯碼單元,用于根據Log-MAP算法對輸入碼段(輸入碼段中包括信道觀測序列和校驗序列)進行譯碼,并將譯碼后的碼段輸出到輸出緩存。這里的每一個譯碼單元都完成圖2所示的基本結構所完成的譯碼算法功能,即每一個譯碼單元都包括級聯的兩個分量譯碼器和相應交織器以及解交織器。
根據背景技術中介紹的log-MAP算法中的式(2)和式(3)可知,對應于某個點的前向路徑度量參數α的計算依賴于其前一個點的前向路徑度量參數,而其后向路徑度量參數β的計算依賴于其后一個點的后向路徑度量參數。因此,由于Log-MAP算法的計算需要,圖3所示的譯碼裝置在譯碼過程中,各相鄰碼段所對應的譯碼單元之間傳遞各自對應碼段的邊界的前向路徑度量參數和后向路徑度量參數,具體為將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中,第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數;而第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數。
例如,當一個80000點的輸入序列需要進行Turbo碼譯碼時,首先將該80000點劃分成多個碼塊(將輸入序列劃分成多個碼塊的方式與現有技術相同,本發明中不做限定,例如可以根據輸入緩存的大小進行劃分等),這里假設劃分成10個碼塊,即每個碼塊8000點;對于每個碼塊,將該碼塊劃分成M個碼段,這里設M等于8,較佳地劃分成長度相等的M=8個碼段,即每個碼段1000點,將該8個碼段分別輸入至8個譯碼單元并行進行譯碼,即譯碼單元1對該碼塊中的1~1000點進行譯碼,譯碼單元2對1001~2000點進行譯碼,......,譯碼單元8對7001~8000點進行譯碼。前面提到,根據背景技術中介紹的log-MAP算法中的式(2)和式(3)可知,對應于某個點的前向路徑度量參數α的計算依賴于其前一個點的前向路徑度量參數,而其后向路徑度量參數β的計算依賴于其后一個點的后向路徑度量參數。因此譯碼單元1需要將第1000個點的前向路徑度量參數傳遞給譯碼單元2,以便譯碼單元2計算第1001個點的前向路徑度量參數;相應地,譯碼單元2需要將第1001個點的后向路徑度量參數傳遞給譯碼單元1,以便譯碼單元1計算第1000個點的后向路徑度量參數。同樣其他的相鄰譯碼單元之間,如譯碼單元2和譯碼單元3之間、譯碼單元3和譯碼單元4之間等,都在譯碼過程中傳遞對應碼段的邊界的前向路徑度量參數和后向路徑度量參數。
圖4是本發明實施例中的Turbo譯碼器中的相鄰譯碼單元之間邊界狀態值的傳遞示意圖。這里的邊界狀態值指的是各譯碼單元所對應的碼段的邊界點的前向路徑度量參數α值或后向路徑度量參數β值。參見圖4,各相鄰譯碼單元中的對應的分量譯碼器之間相互傳遞對應碼段邊界點的α值或β值,例如對于相鄰的譯碼單元1和譯碼單元2,其各自的分量譯碼器1之間傳遞對應碼段邊界點的α值或β值,其各自的分量譯碼器2之間傳遞對應碼段邊界點的α值或β值。
在本發明中,Turbo碼譯碼裝置中包含的譯碼單元的個數M可以根據實際情況而定,例如在LTE系統中,根據實際的LTE譯碼速率需求確定譯碼單元的個數。因此這種將碼塊劃分成多個碼段,由多個譯碼單元并行進行譯碼的方案,大大提高了Turbo碼譯碼裝置的吞吐量并降低了譯碼延遲。根據LTE系統中的Turbo碼交織器的設計準則,可以保證譯碼裝置在交織和解交織期間,各譯碼單元之間不會發生存儲器訪問沖突問題,從而保證了上述并行結構設計的可靠性。
為了進一步提高Turbo碼譯碼裝置的譯碼速度,本發明的一個實施例中,將Turbo碼譯碼裝置中的每個譯碼單元都設計為多級流水線子譯碼器的結構,即每個譯碼單元包括順序級聯的多個子譯碼器,該多個子譯碼器共同完成It次迭代運算(It為根據Log-MAP算法對輸入碼段進行譯碼所需要完成的總迭代次數),且每個子譯碼器完成其中的It/R次迭代運算,It和It/R均為自然數。例如,總迭代次數12,如果每個譯碼單元包含兩級子譯碼器,則第一級子譯碼器完成一個碼段的前6次迭代運算,第二級子譯碼器完成該碼段的后6次迭代運算;這樣當第一級子譯碼器完成某一碼塊中的相應碼段的前6次迭代運算后,由第二級子譯碼器來繼續進行該碼段的第7次迭代,而此時第一子譯碼器可以對下一個碼塊中的相應碼段進行第1次迭代運算,因此譯碼速率相當于提高了一倍。又例如,總迭代次數仍為12時,如果每個譯碼單元包含三級子譯碼器,則第一級子譯碼器完成一個碼段前4次迭代運算,第二級子譯碼器完成該碼段的中間的4次迭代運算,第三級子譯碼器完成該碼段的后4次迭代運算;這種情況下,譯碼速率相當于提高了兩倍。以此類推,譯碼單元中設置的級聯子譯碼器的個數越多,即流水線級數越多,譯碼速率越快。
圖5是本發明實施例中的包含多級流水線子譯碼器的譯碼裝置的組成結構示意圖。如圖5所示,在本實施例中以M個譯碼單元,R級流水線子譯碼器為例進行說明,這里R為大于1的任意自然數,M個譯碼單元中的所有一級子譯碼器構成第一級流水線,M個譯碼單元中的所有二級子譯碼器構成第二級流水線,......,M個譯碼單元中的所有R級子譯碼器構成第R級流水線。
在圖5中示意出了第一級流水線和第二級流水線的內部結構,之后的各級流水線(從第三級到第R級,R大于或等于3時)的結構與第二級流水線的結構相同,故省略。
在圖5中,用MUX表示數據選擇器,用SISO表示軟輸入軟輸出的SISO譯碼器,用RAM表示外信息存儲器,用Le表示外信息。則MUX11、SISO11、RAM11、MUX21、SISO21、RAM21以及后續流水線中的相應的MUX、SISO和RAM器件構成譯碼單元1,其中,MUX11、SISO11、RAM11構成譯碼單元1中的一級子譯碼器,MUX21、SISO21和RAM21構成譯碼單元1中的二級子譯碼器,以此類推。同樣,MUX12、SISO12、RAM12、MUX22、SISO22、RAM22以及后續流水線中的相應的MUX、SISO和RAM器件構成譯碼單元2,其中,MUX21、SISO21、RAM21構成譯碼單元2中的一級子譯碼器,MUX22、SISO22和RAM22構成譯碼單元2中的二級子譯碼器,以此類推。后續譯碼單元的構成也以此類推。在每個子譯碼器中,SISO譯碼器通過數據開關總線對相應的RAM進行讀寫。
在圖5中,每一個數據選擇器MUX,用于在首次迭代運算時將初始外信息輸出給對應的SISO譯碼器,在之后的迭代運算時將從對應的RAM獲得的外信息輸出給對應的SISO譯碼器;其中,一級子譯碼器中的MUX將0作為初始外信息,其他除一級子譯碼器以外的各子譯碼器中的MUX,將其上一級子譯碼器最后一次迭代運算得到的外信息作為初始外信息。每個SISO譯碼器,利用MUX輸出的數據以及輸入碼段進行It/R次迭代運算,并將每次迭代運算得到的外信息發送到對應的RAM;每個RAM用于存儲SISO譯碼器每次迭代運算所產生的外信息,并向對應的MUX提供該外信息,以便MUX將該外信息發送給SISO單元進行下一次的迭代運算。
在圖5中,將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中第一譯碼單元中的每個子譯碼器向第二譯碼單元中的對應子譯碼器傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元中的對應子譯碼器計算出自身碼段的起始邊界點的前向路徑度量參數;第二譯碼單元中的每個子譯碼器向第一譯碼單元中的對應子譯碼器傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元中的對應子譯碼器計算出自身碼段的結尾邊界點的后向路徑度量參數。例如,在譯碼單元1中的子譯碼器1中的SISO11和譯碼單元2中的子譯碼器1中的SISO12之間、譯碼單元2中的子譯碼器1中SISO12和譯碼單元3中的子譯碼器1中的SISO13之間、譯碼單元1中的子譯碼器2中的SISO21和譯碼單元2中的子譯碼器2中的SISO22之間等,都需要傳遞各自對應輸入碼段的邊界的前向路徑度量參數和后向路徑度量參數。
在圖5中,輸入緩存用于存儲輸入序列,該輸入序列包括信道信息和校驗序列,由RAM片選邏輯根據需求將不同的碼塊輸入到不同流水線中,并將輸入一個流水線的碼塊分成多個碼段后分別輸入到該流水線中的多個譯碼單元中。每個譯碼單元將譯碼后的碼段輸出到硬判決單元;硬判決單元,用于接收M個譯碼單元輸出的譯碼后的碼段,對譯碼后碼段進行硬判決后輸出到輸出緩存中。這里的硬判決方式與現有技術相同,是指對每一位信息都進行如下的判決如果該信息大于或等于0,則判決相應位的輸出為1;如果該信息小于0,則判決相應位的輸出為0。
在圖5所示的結構中,關鍵問題在于,如何將上一級流水線產生的外信息作為其下一級流水線的先驗信息傳遞給其下一級流水線。下面以R=2,即兩級流水線的譯碼裝置為例對該問題予以說明以總迭代次數為12次為例,第一級流水線在處理第n-1碼塊的第6次迭代遠算中的分量譯碼器2運算時,仍然按照交織后的地址讀寫RAM;此后第二級流水線開始第n-1碼塊的第7次迭代運算,而第一級流水線開始下一個碼塊,即第n碼塊的第1次迭代運算。第二級流水線開始進行第n-1碼塊的第7次迭代運算時,先進行分量譯碼器1運算,需要按照順序遞增的地址從第一級流水線中的RAM中讀取外信息Le;此時,第一級流水線正在處理第n碼塊的第1次迭代運算中的分量譯碼器1運算過程,需要從上述的RAM地址順序讀寫Le。但是寫總是慢于讀,因此,第二級流水線中的子譯碼器有足夠的時間從第一級流水線的RAM中取得Le信息(實際上與第一級流水線同步讀取Le)。由于前后兩級子譯碼器都是按照順序遞增的地址讀Le信息,且一級子譯碼器寫回的Le信息總是慢于讀取過程,因此,可以保證第一級流水線中的Le信息能夠正確地傳遞給第二級流水線。圖5中的第二級流水線中的數據選擇器MUX前的Le表示從第一級流水線傳遞來的外信息。
圖5中的每一個SISO譯碼器都包括圖2所示的基本結構,即每個SISO譯碼器都包括兩個分量譯碼器以及相應的交織器和解交織器。這兩個分量譯碼器用分量譯碼器1和分量譯碼器2表示,分量譯碼器1和分量譯碼器2共同完成一次迭代運算,且其各自執行的算法功能與圖2中的兩個分量譯碼器相同。此外每個SISO譯碼器中還包括相應的地址計算模塊。在分量譯碼器1運算期間,地址計算模塊按照順序遞增的地址通過數據存取開關總線讀寫對應的RAM;在分量譯碼器2運算期間,地址計算模塊按照交織后的地址通過數據存取開關總線讀寫對應的RAM。
圖6是本發明實施例中的SISO譯碼器的部分內部結構示意圖。如圖6所示,示意出了SISO譯碼器中的一個分量譯碼器以及地址計算模塊的結構示意圖。這里,由于SISO譯碼器中的兩個分量譯碼器的內部結構相同,因此只示意出了其中的一個分量譯碼器的內部結構。
如圖6所示,SISO譯碼器中的一個分量譯碼器包括分支度量計算模塊、狀態更新模塊、存儲模塊、控制模塊和外信息計算模塊; 其中,分支度量計算模塊,用于根據輸入信息計算分支度量參數,并發送給狀態更新模塊和外信息計算模塊;這里的輸入信息包括信道信息和先驗信息,而信道信息包括信道觀測序列和校驗序列; 狀態更新模塊,用于根據接收的分支度量參數計算出前向路徑度量參數,并發送到存儲模塊進行保存,根據接收的分支度量參數計算出后向路徑度量參數,并發送給外信息計算模塊; 存儲模塊,用于保存來自狀態更新模塊的前向路徑度量參數; 外信息計算模塊,用于根據輸入信息、來自分支度量計算模塊的分支度量參數、來自狀態更新模塊的后向路徑度量參數以及來自存儲模塊的前向路徑度量參數,計算外信息并輸出; 控制模塊,用于對分支度量計算模塊、狀態更新模塊、存儲模塊和外信息計算模塊進行時序控制。
如圖6所示,地址計算模塊包括一個數據選擇器MUX和一個交織地址計算單元;其中,MUX的第一個輸入為順序遞增的原始地址信息,第二個輸入為原始地址信息經過交織地址計算單元進行交織計算后的地址信息;當SISO譯碼器中的分量譯碼器1進行運算時,地址計算模塊選擇將第一輸入作為輸出地址,當分量譯碼器2進行運算時,地址計算模塊選擇將第二輸入作為輸出地址。
SISO單元中每個分量譯碼器用Log-MAP算法計算各個狀態量γ、α、β以及信息比特對數似然比LLR和外信息Le。對于計算γ、α、β、LLR和Le的過程,需要分為兩步先后完成,即前向遞推過程和后向遞推過程。前向遞推過程需要消耗L/M(L為碼塊的長度,M為譯碼單元的個數)個周期計算γ和α,并存儲α值。接著進行后向遞推運算,消耗L/M個周期計算γ、β、LLR和Le。上述的前向遞推和后向遞推的過程是先后進行的,因為α和β的遞推都需要用到γ值,而γ值在一次計算中只能選擇前向或后向運算。為了進一步說明本發明的技術方案,下面給出本發明實施例中的Turbo譯碼裝置的總體時序操作圖。
圖7是本發明實施例中的Turbo譯碼裝置的總體時序操作圖。如圖7所示,以R級流水線子譯碼器結構為例,R為任意自然數,即每個譯碼單元由一級子譯碼器、二級子譯碼器、......、R級子譯碼器構成時,構成第一級流水線的所有一級子譯碼器完成每個碼塊的前It/R次迭代遠算,構成第二級流水線的所有二級子譯碼器完成每個碼塊的第二個It/R次迭代遠算,......,構成第R級流水線的所有R級子譯碼器完成每個碼塊的最后的It/R次迭代運算。這里,It為總迭代次數。每次迭代遠算包括分量譯碼器1運算和分量譯碼器2運算,每個分量譯碼器運算又包含前向遞推γ和α運算和后先遞推γ、β、LLR和Le運算。
綜上所述,本發明這種將輸入序列劃分成多個碼塊,將每個碼塊劃分成為長度相等的多個碼段后分別輸入至多個譯碼單元,由多個譯碼單元根據Log-MAP算法對各自輸入的碼段并行進行譯碼,其中,在譯碼過程中,相鄰的譯碼單元之間傳遞各應碼段的邊界的前向路徑度量參數和后向路徑度量參數的技術方案,由于有多個譯碼單元并行進行譯碼,因此大大提高了譯碼速度,并且譯碼單元的數量越多,譯碼速度越快。此外,本發明中還進一步將譯碼單元設計成多級流水線的結構,進一步提高了譯碼速度,并且流水線的級數越多,譯碼速度越快。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
權利要求
1.一種Turbo碼譯碼方法,其特征在于,該方法包括
對于輸入序列中的每個碼塊,將該碼塊劃分成為M個碼段,將M個碼段分別輸入至M個譯碼單元,由M個譯碼單元根據對數域最大后驗概率Log-MAP算法對各自的輸入碼段并行進行譯碼,并輸出譯碼后的碼段;
其中,將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中,第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數;而第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數。
2.根據權利要求1所述的方法,其特征在于,每個譯碼單元包括R個子譯碼器,R為自然數;
所述M個譯碼單元根據Log-MAP算法對各自輸入的碼段并行進行譯碼包括對于每個譯碼單元,由該譯碼單元中的R個子譯碼器共同完成根據Log-MAP算法對輸入碼段進行譯碼所需要完成的It次迭代運算,且每個子譯碼器完成其中的It/R次迭代運算;其中,It和It/R均為自然數;
所述第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數為第一譯碼單元中的每個子譯碼器向第二譯碼單元中的對應子譯碼器傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元中的對應子譯碼器計算出自身碼段的起始邊界點的前向路徑度量參數;
所述第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數為第二譯碼單元中的每個子譯碼器向第一譯碼單元中的對應子譯碼器傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元中的對應子譯碼器計算出自身碼段的結尾邊界點的后向路徑度量參數。
3.根據權利要求1或2所述的方法,其特征在于,劃分出的所述M個碼段的長度相等;
和/或,
該方法進一步包括對譯碼后的碼段進行硬判決。
4.一種Turbo碼譯碼裝置,其特征在于,該裝置包括M個譯碼單元,M為大于1的自然數;
輸入序列中的每個碼塊被劃分成M個碼段后分別輸入至所述M個譯碼單元;
每個譯碼單元,用于接收輸入的碼段,根據Log-MAP算法對輸入碼段進行譯碼,將譯碼后的碼段輸出;
其中,將任意前后相鄰的兩個碼段所對應的兩個譯碼單元分別稱為第一譯碼單元和第二譯碼單元,則在譯碼過程中第一譯碼單元向第二譯碼單元傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元計算出自身碼段的起始邊界點的前向路徑度量參數;而第二譯碼單元向第一譯碼單元傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元計算出自身碼段的結尾邊界點的后向路徑度量參數。
5.根據權利要求4所述的裝置,其特征在于,每個譯碼單元包括順序級聯的R個子譯碼器,依次為一級子譯碼器、二級子譯碼器、......、R級子譯碼器;其中,R為自然數;
由該R個子譯碼器共同完成根據Log-MAP算法對輸入碼段進行譯碼所需要完成的It次迭代運算,且每個子譯碼器完成其中的It/R次迭代運算;It和It/R均為自然數。
其中,在譯碼過程中第一譯碼單元中的每個子譯碼器向第二譯碼單元中的對應子譯碼器傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元中的對應子譯碼器計算出自身碼段的起始邊界點的前向路徑度量參數;第二譯碼單元中的每個子譯碼器向第一譯碼單元中的對應子譯碼器傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元中的對應子譯碼器計算出自身碼段的結尾邊界點的后向路徑度量參數。
6.根據權利要求4或5所述的裝置,其特征在于,該裝置進一步包括硬判決單元;
所述每個譯碼單元,用于將譯碼后的碼段輸出到硬判決單元;
所述硬判決單元,用于接收M個譯碼單元輸出的譯碼后的碼段,對譯碼后碼段進行硬判決后輸出。
7.根據權利要求5所述的裝置,其特征在于,每個子譯碼器包括數據選擇器、軟輸入軟輸出SIS O譯碼器和外信息存儲器;
數據選擇器,用于在首次迭代運算時將初始外信息輸出給SISO譯碼器,在之后的迭代運算時將從外信息存儲器獲得的外信息輸出給SISO譯碼器;其中,一級子譯碼器中的數據選擇器將0作為初始外信息,其他子譯碼器中的數據選擇器將上一級子譯碼器最后一次迭代運算得到的外信息作為初始外信息;
SISO譯碼器,利用數據選擇器輸出的數據以及輸入碼段進行It/R次迭代運算,并將每次迭代運算得到的外信息發送到外信息存儲器;
外信息存儲器,用于存儲SISO譯碼器每次迭代運算所產生的外信息,并向數據選擇器提供該外信息,以便數據選擇器將該外信息發送給SISO單元進行下一次的迭代運算;
其中,在譯碼過程中第一譯碼單元中的每個子譯碼器中的SISO譯碼器向第二譯碼單元中的對應子譯碼器中的SISO譯碼器傳遞自身碼段的結尾邊界點的前向路徑度量參數,以便第二譯碼單元中的對應子譯碼器中的SISO譯碼器計算出自身碼段的起始邊界點的前向路徑度量參數;第二譯碼單元中的每個子譯碼器中的SISO譯碼器向第一譯碼單元中的對應子譯碼器中的SISO譯碼器傳遞自身碼段的起始邊界點的后向路徑度量參數,以便第一譯碼單元中的對應子譯碼器中SISO譯碼器計算出自身碼段的結尾邊界點的后向路徑度量參數。
8.根據權利要求7所述的裝置,其特征在于,在每個子譯碼器進一步包括數據存取開關總線;
在每個子譯碼器中,SISO譯碼器通過數據開關總線對外信息存儲器進行讀寫。
9.根據權利要求7所述的裝置,其特征在于,每個SISO譯碼器包括地址計算模塊和兩個級聯的分量譯碼器;所述兩個級聯的分量譯碼器為第一分量譯碼器和第二分量譯碼器;
第一分量譯碼器和第二分量譯碼器共同完成一次迭代運算;
在第一分量譯碼器運算期間,地址計算模塊按照順序遞增的地址讀寫對應的外信息存儲器;
在第二分量譯碼器運算期間,地址計算模塊按照交織后的地址讀寫對應的外信息存儲器。
10.根據權利要求9所述的裝置,其特征在于,每個分量譯碼器包括分支度量計算模塊、狀態更新模塊、存儲模塊、控制模塊和外信息計算模塊;
分支度量計算模塊,用于根據輸入信息計算分支度量參數,并發送給狀態更新模塊和外信息計算模塊;
狀態更新模塊,用于根據接收的分支度量參數計算出前向路徑度量參數,并發送到存儲模塊進行保存,根據接收的分支度量參數計算出后向路徑度量參數,并發送給外信息計算模塊;
存儲模塊,用于保存來自狀態更新模塊的前向路徑度量參數;
外信息計算模塊,用于根據輸入信息、來自分支度量計算模塊的分支度量參數、來自狀態更新模塊的后向路徑度量參數以及來自存儲模塊的前向路徑度量參數,計算外信息并輸出;
控制模塊,用于對分支度量計算模塊、狀態更新模塊、存儲模塊和外信息計算模塊進行時序控制。
全文摘要
本發明公開了一種Turbo碼譯碼方法和裝置。所述方法包括對于輸入序列中的每個碼塊,將該碼塊劃分成為M個碼段,M為大于1的自然數,將M個碼段分別輸入至M個譯碼單元,由M個譯碼單元根據對數域最大后驗概率Log-MAP算法對各自輸入的碼段并行進行譯碼,并輸出譯碼后的碼段;其中,在譯碼過程中,相鄰碼段所對應的譯碼單元之間傳遞各自對應碼段的邊界的前向路徑度量參數和后向路徑度量參數。本發明的技術方案能夠提高Turbo碼譯碼速度。
文檔編號H03M13/27GK101777924SQ201010003408
公開日2010年7月14日 申請日期2010年1月11日 優先權日2010年1月11日
發明者趙訓威 申請人:新郵通信設備有限公司