turbo码java实现_Turbo码的迭代译码算法的设计与软件实现
Turbo碼的迭代譯碼算法的設計與軟件實現
摘要:本文介紹了一種先進的移動通信系統WCDMA中的差錯控制編碼——Turbo碼,在對其原理分析的基礎上,簡單介紹它迭代譯碼算法的實現及其性能仿真分析。
關鍵詞:差錯編碼;Turbo碼;迭代譯碼;仿真。
1 引言
1948年,現代數字通信的奠基人Shannon在信道編碼定理中指出如果采用足夠長的隨機編碼,就能逼近Shannon
信道容量。但是傳統的編碼都有規則的代數結構,遠遠談不上“隨機”;同時,出于譯碼復雜度的考慮,碼長也不可能太長。所以傳統的信道編碼性能與信道容量之間都有較大的差距。事實上,長期以來信道容量僅作為一個理論極限存在,實際的編碼方案設計和評估都沒有以Shannon限為依據。
1993 年兩位法國教授Berrou、Glavieux
和他們的緬甸籍博士生Thitimajshima 在ICC 會議上發表的“Near Shannon
limit error-correcting coding and decoding: Turbo
codes”,提出了一種全新的編碼方式——Turbo
碼。它巧妙地將兩個簡單分量碼通過偽隨機交織器并行級聯來構造具有偽隨機特性的長碼,并通過在兩個軟入/軟出(SISO)譯碼器之間進行多次迭代實現了偽隨機譯碼。而南澳大利亞大學Small
World通信研究組最先開始開發Turbo碼產品。Chass、Garrett
和Koora等人也分別在不同的數字芯片上設計實現了Max-Log-MAP算法和SOVA算法。目前已有的DSP和ASIC芯片及其不斷發展為提高Turbo編譯碼的處理提供了條件。
經過多年的努力,Turbo
碼得到了廣泛的關注和發展,并對當今的編碼理論和研究方法產生了深遠的影響,信道編碼學也隨之進入了一個新的階段,本文給出了Turbo碼基本原理的介紹及迭代譯碼算法的實現與其性能仿真。
2 編譯碼原理
圖1中給出了Turbo碼編碼器的一般性結構。圖中dk是輸入進行編碼的數據塊,加入尾隨比特的作用是使在一個數據塊編碼結束之后,保證成員編碼器的寄存器回到全零狀態,這樣的Turbo碼就等同于線性分組碼,從而通過分析這類分組碼的特性來計算Turbo碼的譯碼性能上界,對其性能進行估計與分析。編碼器中的第一個輸出xk是輸入信息比特和加入的尾隨比特。輸入信息比特和尾隨比特經過交織器交織后分別送入第1,2,……,M個成員編碼器進行編碼,得到M個校驗輸出序列y1,y2……yM,這M個校驗序列經過刪除器的壓縮(以得到不同的編碼速率)后,與信息序列xk一起經并/串變換并調制后發送出去。在發送端,其編碼的隨機性是通過編碼器中的交織器以及并行級聯方式來實現的;其中交織器設計的好壞和成員編碼器的選擇是決定碼字性能關鍵因素之一。
通常Turbo碼的編碼器由兩個成員編碼器通過交織器并行級聯而成。即對于每一個輸入信息比特,編碼器輸出兩個校驗比特,若不經過壓縮,則總的編碼速率為1/3。從理論上來說,可以編成任意碼率的Turbo碼。
一般,Turbo碼的編碼部分由兩個子編碼器組成
,在其譯碼部分也就相應有兩個子譯碼器。一般情況下
,兩個子譯碼器可采用多級級聯結構。由于Turbo碼第二個子編碼器的信息位沒有輸出
,第二個子譯碼器只能利用第一個子譯碼器譯出的信息序列進行譯碼。軟判決譯碼比硬判決譯碼性能提高2~3dB,因此每一個子譯碼器都用軟輸入軟輸出譯碼器。譯碼器工作原理如下:由于接收序列為串行數據
,首先要進行數據的串/并轉換
,同時將刪除的比特位填上“虛擬比特”(不影響譯碼判決的值如0)。將經過串/并轉換后的xk,y1k送入子譯碼器1譯碼
,并產生關于dk改進的外信息Λ1e(dk)。由于譯碼器1沒有用到可能提高后驗概率的校驗序列y2k,所以譯碼器1的輸出僅在交織后作為譯碼器2的先驗信息輸入,而不能作為對信息序列的判決。將xk和Λ1e(dk)交織后作為子譯碼器
2的軟輸入 ,子譯碼器 2根據譯碼算法對xk,
Λ1e(dk)和y2k用與子譯碼器1同樣的方法再次產生信息比特改進的外信息Λ2e(dj),經去交織后得到
作為下一次迭代中子譯碼器1的先驗信息。這樣在多次迭代后,對子譯碼器2產生的輸出Λ2(dj)去交織后進行硬判決,得到每個信息比特
的估值 。
Turbo碼的譯碼結構如圖2(a)所示,由于這種將輸出反饋到前端的迭代結構類似于汽輪機的工作機理,首先提出它的人稱之為Turbo—code(英文中前綴turbo—帶渦輪驅動的含義)
。
盡管圖2(a)給出的是反饋的結構,由于有交織環節的存在必然引起時延,使得不可能有真正意義上的反饋,而是流水線式的迭代結構,如圖2(b)。也正是由于這種流水線結構,使得譯碼器可由若干完全相同的軟入軟出的基本單元構成,從而以較小的復雜度實現了最大似然譯碼。Turbo碼譯碼器的最主要特點就是采用了軟判決迭代譯碼算法。
(因文章長度不能超過2萬字,余下部分只能在回復中補全)
總結
以上是生活随笔為你收集整理的turbo码java实现_Turbo码的迭代译码算法的设计与软件实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python贝叶斯网络预测模型_概率图模
- 下一篇: 朴素贝叶斯python实现预测_Pyth