專利名稱:一種Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于Turbo碼譯碼算法設(shè)計(jì)和實(shí)現(xiàn)研究領(lǐng)域,特別是構(gòu)造一種適合于 FPGA實(shí)現(xiàn)的Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法。
背景技術(shù):
Berrou在1993年國際通信會議上提出的Turbo碼,又被稱為并行級聯(lián)巻積 碼(PCCC),該碼巧妙的結(jié)合了隨機(jī)交織器和巻積碼的思想,實(shí)現(xiàn)了香農(nóng)信道編 碼定理中所要求的隨機(jī)編譯碼,在譯碼算法上采用了軟輸出迭代譯碼來逼近最 大似然譯碼,從而獲得了非常優(yōu)異的性能。
Turbo碼的編碼器如附圖1所示,它主要由兩個(gè)遞歸系統(tǒng)巻積碼編碼器 (RSC1, RSC2)、 一個(gè)交織器和一個(gè)復(fù)接器組成。遞歸系統(tǒng)巻積碼編碼器是指帶 有反饋的系統(tǒng)巻積碼編碼器。交織器用來打亂信息序列的排列順序,獲得與原 始序列長度和內(nèi)容都相同但順序不同的信息序列。
輸入信息序列A,經(jīng)過交織器打亂之后變成x2,兩組序列Xt, X2分別經(jīng)過
兩個(gè)分量編碼器得到兩組校驗(yàn)比特序列yp y2,再將xp yi, y2復(fù)接成序列(x!,yb 》}發(fā)送至信道。
Turbo碼獲得優(yōu)異性能的一個(gè)重要原因就是其采用的迭代譯碼算法,通過分 量譯碼器之間的軟信息交換來提高譯碼可靠件。Turbo碼譯碼器結(jié)構(gòu)如附圖2所 示,Turbo碼譯碼器中有兩個(gè)軟輸入軟輸出(SISO)的分量譯碼器,它們分別與編 碼器的兩個(gè)分量編碼器RSC1、 RSC2相對應(yīng)。譯碼剛開始的時(shí)候譯碼器l的先驗(yàn)信息序列h先全部清零,分量譯碼器1接收到來自信道的A序列,y,序列以 及全部為0的le,序列送入分量譯碼器1譯碼,得到的輸出ded—out(表示Xl序列 的似然比信息)。deCl—out經(jīng)過外信息計(jì)算以及交織器之后成為分量譯碼器2的
先驗(yàn)信息序列輸入le2,而X,序列經(jīng)過交織之后得到X2序列。于是有了分量譯碼
器2的3個(gè)輸入X2序列,y2序列,le2序歹U,而分量譯碼器2的輸出dec2—out(表
示X2序列的似然比信息)經(jīng)過外信息計(jì)算以及反交織之后成為了下一次迭代計(jì)算
時(shí)分量譯碼器1的先驗(yàn)信息輸入lq,到此為止就完成了一次迭代循環(huán)。第二次 迭代開始的時(shí)候分量譯碼器1的輸入A序列,yt序列都不變,只是這時(shí)的h 序列就是上次迭代結(jié)束的時(shí)候得到更新的lq序列。若干次迭代結(jié)束之后對 dec2—out進(jìn)行反交織并進(jìn)行硬判決從而得到譯碼輸出c—out。所謂的硬判決就是 判定dec2—out的正負(fù),如果dec2—out大于等于0,即判定當(dāng)前譯碼輸出c—out值 為1;如果dec2—out小于0,即判定當(dāng)前譯碼輸出c—out值為0。
Turbo碼的特點(diǎn)之一就是其迭代譯碼算法,隨著迭代次數(shù)的增加相應(yīng)信息比 特的對數(shù)似然比越來越可信,誤比特率也會越來越低,但是迭代到了一定的次 數(shù)其譯碼性能就到達(dá)一個(gè)瓶頸,誤比特率不會再有下降,這就是所謂的"誤碼
平層",如附圖3所示。
明顯,信道條件越好,信噪比越高,譯碼所必要的迭代次數(shù)就越低。但是 在實(shí)際通信中實(shí)際的信道變化非常復(fù)雜,信噪比變化頻繁,所以采用預(yù)先固定 迭代次數(shù)的做法會造成譯碼速度過慢,效率低,是不可取的。
發(fā)明內(nèi)容
本發(fā)明的目的就是要克服現(xiàn)有Turbo碼的不足,使Turbo碼譯碼方法在進(jìn)行 譯碼的過程中根據(jù)信道信噪比的變化自動調(diào)整迭代次數(shù),節(jié)約譯碼時(shí)間,加快譯碼速度。
為了實(shí)現(xiàn)上述發(fā)明目的,采用的技術(shù)方案如下
種Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法,所述Turbo碼通過編碼器和譯碼器分別 進(jìn)行編碼和譯碼;
所述編碼器由兩個(gè)遞歸系統(tǒng)巻積碼編碼器、個(gè)交織器和一個(gè)復(fù)接器組成, 交織器將輸入信息序列Xl經(jīng)過打亂之后變成序列x2,兩組序列X,, X2分別經(jīng)過
兩個(gè)編碼器得到兩組校驗(yàn)比特序列yp y2,再將xp yi, y2復(fù)接成序列(x!,yhy2) 發(fā)送至信道,完成編碼步驟;
所述譯碼器設(shè)有兩個(gè)與編碼器對應(yīng)的軟輸入軟輸出分量譯碼器,第一譯碼
器接收到來自信道的序列x,,序列y,以及全部為O的序列l(wèi)e,進(jìn)行譯碼,得到的 輸岀deCl—out經(jīng)過外信息計(jì)算以及交織器交織之后作為第二譯碼器的先驗(yàn)信息
序列輸入le2,而第二譯碼器將序列Xi經(jīng)過交織器交織之后得到的序列X2,序列
y2,序列l(wèi)e2進(jìn)行譯碼,得到的輸出dec^out經(jīng)過外信息計(jì)算以及反交織器反交 織之后作為下一次迭代計(jì)算時(shí)第一分量譯碼器的先驗(yàn)信息輸入lei,完成一次迭 代循環(huán),經(jīng)過多次迭代后對第二譯碼器的輸出結(jié)果dec2_OUt進(jìn)行反交織和硬判 決從而得到最終譯碼輸出c一out;
所述譯碼器在每次迭代結(jié)束之后進(jìn)行硬判決,再將本次迭代硬判決得到的 比特序列與上次迭代硬判決得到的比特序列相比較,計(jì)算兩個(gè)序列不相同的比 特?cái)?shù),當(dāng)兩個(gè)序列不相同的比特?cái)?shù)為0時(shí)就停止迭代,輸出結(jié)果。
進(jìn)一步的,所述譯碼器的迭代過程包括如下步驟
1) 預(yù)先設(shè)定最大迭代次數(shù)Imax,將先驗(yàn)信息&初始化為0;
2) 對輸入的序列X2先進(jìn)行一次硬判決,得到長度為N的比特序 R"所述N為幀長;
3) 開始譯碼迭代;
4) 譯碼迭代結(jié)束之后,進(jìn)行硬判決,得到長度為N的比特序列R2,如果當(dāng)
前迭代次數(shù)i^:nax,就轉(zhuǎn)到步驟7),如果當(dāng)前迭代次數(shù)i#Imax,就轉(zhuǎn)到步驟5);
5) 把Rn R2進(jìn)行比較,得到兩序列中不相同的比特個(gè)數(shù)NUMBER;
6) 判斷NUMBER的取值,如果NUMBER=0,就轉(zhuǎn)到步驟7),否則用R2 代替R,并轉(zhuǎn)到步驟3);
7) 把R2作為譯碼結(jié)果輸出,結(jié)束迭代。
本發(fā)明所述譯碼器先將交織好的序列X2送入迭代控制模塊進(jìn)行硬判決,并
且把硬判決的結(jié)果送入存儲器進(jìn)行存儲,第一次迭代計(jì)算得到的第二譯碼器譯 碼輸出dec2—out也進(jìn)行硬判決,得到le2—deside信號,然后同步讀取存儲器中的 數(shù)據(jù),送入序列比較模塊進(jìn)行比較,得到表示兩個(gè)序列相同的比特?cái)?shù)的信號 same,在送入到迭代停止判決模塊進(jìn)行判斷是否結(jié)束迭代,而le2—deside信號經(jīng) 過延時(shí)器的延時(shí),也送入存儲器進(jìn)行存儲,所述譯碼器還通過迭代計(jì)數(shù)模塊用 每次dec2_out的同步電平enjn2做信號,在en_in2的上升沿計(jì)數(shù),再結(jié)合same 信號,對迭代計(jì)算和迭代停止進(jìn)行判決。
本發(fā)明所提出的一種適于FPGA實(shí)現(xiàn)的Turbo碼信道自適應(yīng)方法,與傳統(tǒng) 的Turbo碼算法相比,所構(gòu)造的Turbo碼譯碼器的糾錯(cuò)性能沒有明顯下降,但譯 碼速度得到大幅提升。而且,該算法對應(yīng)的FPGA設(shè)計(jì)結(jié)構(gòu)簡單,資源消耗量 小,用FPGA硬件實(shí)現(xiàn)得到的電路運(yùn)行頻率高。
圖1是現(xiàn)有碼率為1/3的Turbo碼編碼器結(jié)構(gòu)圖;圖2是現(xiàn)有碼率為1/3的Turbo碼譯碼器結(jié)構(gòu)圖3是現(xiàn)有MAP算法中迭代次數(shù)與信噪比的關(guān)系示意圖,顯示了"誤碼平 層"的現(xiàn)象;
圖4是以MAP算法為基準(zhǔn),固定迭代次數(shù)與本發(fā)明的性能比較圖,其中虛 線是本發(fā)明得到的性能曲線;
圖5是以MAP算法為基準(zhǔn),采用本發(fā)明的迭代次數(shù)與信噪比的關(guān)系圖6是以MAX-LOG-MAP算法為基準(zhǔn),固定迭代次數(shù)與本發(fā)明的性能比較 圖,其中虛線是本發(fā)明得到的性能曲線;
圖7是以MAX-LOG-MAP算法為基準(zhǔn),采用本發(fā)明得到的迭代次數(shù)與信噪 比的關(guān)系圖8是以本發(fā)明得到的自適應(yīng)迭代控制算法對應(yīng)的FPGA信號圖,即迭代 控制模塊的信號圖9是本發(fā)明的理論仿真和實(shí)際硬件測試性能對比圖; 圖10是由本發(fā)明得到的算法對應(yīng)FPGA硬件譯碼器譯碼速度圖。
具體實(shí)施例方式
本發(fā)明提出了一種提前停止迭代方法,那就是在每次迭代結(jié)束之后進(jìn)行硬 判決,再將本次迭代硬判決得到的比特序列與上次迭代硬判決得到的比特序列 相比較(原始比較序列由譯碼之前直接硬判決產(chǎn)生),計(jì)算兩個(gè)序列不相同的比特 數(shù), 一旦發(fā)現(xiàn)兩個(gè)序列不相同的比特?cái)?shù)為O,于是就停止迭代,輸出結(jié)果。
具體而言,本發(fā)明的自適應(yīng)迭代控制方案的具體過程如下
1、 預(yù)先設(shè)定最大迭代次數(shù)Imax,將先驗(yàn)信息初始化為0;
2、 譯碼之前對輸入的序列X2先進(jìn)行一次硬判決,得到長度為N(幀長)的比特序列Rn
3、 開始譯碼迭代;
4、 譯碼迭代結(jié)束之后,進(jìn)行硬判決,得到長度為N(幀長)的比特序列R2, 如果當(dāng)前迭代次數(shù)i^n^,就轉(zhuǎn)到步驟7;
如果當(dāng)前迭代次數(shù)i^In^,就轉(zhuǎn)到步驟5;
5、 把Rp R2進(jìn)行比較,得到兩序列中不相同的比特個(gè)數(shù)NUMBER;
6、 如果NUMBER=0,就轉(zhuǎn)到步驟7;如果NUMBER,O,用R2代替R! 并轉(zhuǎn)到步驟3;
7、 把R2作為譯碼結(jié)果輸出。
附圖4, 5分別給出了固定迭代次數(shù)MAP算法和由本發(fā)明得到的自適應(yīng)迭 代控制MAP算法的性能圖。圖6, 7分別給出了固定迭代次數(shù)MAX-LOG-MAP 算法和由本發(fā)明得到的自適應(yīng)迭代控制MAX-LOG-MAP算法的性能圖。兩種算 法都采用(13, 15)RSC碼作為分量碼,碼率為1/3,幀長為1440,采用BPSK調(diào) 制,AWGN信道(若無特殊說明,后面的實(shí)驗(yàn)仿真條件所采用分量碼,碼率,幀 長,調(diào)制方式,信道類型均不變)。
由圖4 7可以看到,采用自適應(yīng)迭代控制方案之后譯碼算法性能沒有明顯 的惡化,與固定迭代次數(shù)的譯碼性能基本一致。
而對于迭代次數(shù),在信噪比為0dB的時(shí)候,無論最大迭代次數(shù)是3, 5,或 者8,自適應(yīng)迭代控制MAP算法和MAX-LOG-MAP算法都沒有能夠有效地減 少迭代次數(shù)。這是因?yàn)檫@個(gè)時(shí)候信噪比過低,無論多少次迭代都不可能使譯碼 有明顯改善。這使得前后兩次迭代計(jì)算的判決序列不可能完全一樣,所以迭代 計(jì)算總是達(dá)到最大迭代次數(shù)才停止。在信噪比為0.5dB的時(shí)候,由于信噪比稍有提高,但也屬于很低的信噪比水
平,所以會出現(xiàn)兩種情況其一,就是與在0dB的時(shí)候一樣無論多少次迭代都 不可能使譯碼有改善,所以譯碼總是要迭代到最大迭代次數(shù)才停止。其二,就
是要迭代很多次(一般在6次以上),所以這時(shí)候只有最大迭代次數(shù)為8的時(shí)候自
適應(yīng)迭代控制能起到一定的作用,但是這種作用也很小。
在信噪比不小于ldB的時(shí)候,這個(gè)時(shí)候隨著迭代次數(shù)的增加,誤比特?cái)?shù)會 逐漸減少,也就是說隨著迭代次數(shù)的增加,譯碼性能也在逐漸改善,所以這種 情況下自適應(yīng)迭代控制就開始發(fā)揮作用了。并且信噪比越高,作用越明顯。這 是因?yàn)楫?dāng)信噪比高的時(shí)候所必要的迭代次數(shù)少,這個(gè)時(shí)候相對于最大迭代次數(shù) 而言自適應(yīng)迭代控制方案能在很早的時(shí)刻就有效地停止迭代,于是大大節(jié)約了 譯碼時(shí)間,提高了譯碼速度。
本發(fā)明可通過FPGA設(shè)計(jì)實(shí)現(xiàn),圖8是設(shè)計(jì)得到的迭代控制器的硬件結(jié)構(gòu) 以及信號圖。
由圖8可以看到,在譯碼器剛開始工作的吋候先將交織好的X2序列送入迭
代控制模塊進(jìn)行硬判決,并且把硬判決的結(jié)果送入存儲器進(jìn)行存儲。第一次迭 代計(jì)算得到的分量譯碼器2譯碼輸出dec2_out也進(jìn)行硬判決,得到le2_deSide信 號,這時(shí)候同歩讀取存儲器中的數(shù)據(jù),然后送入序列比較模塊進(jìn)行比較(實(shí)際上 是第一次迭代結(jié)束的判決結(jié)果和直接硬判決的結(jié)果相比較),于是得到信號same (表示兩個(gè)序列相同的比特?cái)?shù)),然后送入到迭代停止判決模塊。而le2—deside信 號經(jīng)過一定的延時(shí)成為d—ill2信號,經(jīng)過選擇器選通之后也進(jìn)入存儲器進(jìn)行存儲。 對于迭代停止判決模塊用每次dec2—out的同步電平en—iii2做信號,在en—in2 的上升沿計(jì)數(shù),再結(jié)合same信號,對迭代計(jì)算是否停止進(jìn)行判決。附圖8表示迭代控制的全部信號流程,由于存在序列比較,最開始由序列
X2硬判決得到的序列d—inl,經(jīng)過選擇器選通之后進(jìn)入存儲器存儲,而第一次迭
代計(jì)算結(jié)束之后就可以得到第一次迭代計(jì)算之后的硬判決序列,這個(gè)時(shí)候進(jìn)行 如下兩步操作-
第一步、將存儲器存儲的序列信號讀出,兩組序列要進(jìn)行比較,得到序列
相同的比特?cái)?shù);
第二步、同時(shí)將新得到的比特序列寫入存儲器,方便下次迭代計(jì)算結(jié)束之 后的比較。也就是說,存儲器木身有一個(gè)讀出通道,而有兩個(gè)寫入通道,這就 要用一個(gè)選擇器進(jìn)行選通,在迭代沒開始之前將由序列X2硬判決得到的序列
d—in"經(jīng)過選擇器選通之后進(jìn)入存儲器存儲,在迭代開始之后將最開始由序列 dec2一out硬判決得到的序列l(wèi)e2一deside,該序列信號經(jīng)過延時(shí)成為信號d—in2,然 后經(jīng)過選擇器選通之后進(jìn)入存儲器存儲。
所述的塊狀RAM是使用FPGA內(nèi)部自帶的固化存儲器實(shí)現(xiàn)。 本發(fā)明采用(13, 15) RSC組成的Turbo碼,1/3碼率,幀長N=1024, MAX-LQG- MAP算法,自適應(yīng)迭代控制,最大迭代次數(shù)5次,采用BPSK調(diào)帝ij, 在AWGN信道條件下得到理論仿真和實(shí)際FPGA硬件測試性能對比圖,如圖9 IO所示。
由性能對比圖可以看出,硬件電路的譯碼性能與實(shí)驗(yàn)室仿真差距很小,兩 條曲線基本重合,就算有差距也是在一個(gè)數(shù)量級之內(nèi)。這種程度的性能損失對 于硬件設(shè)計(jì)來說是可以接受的。而從譯碼速度測試圖可以看到,隨著信道信噪 比的提高,硬件譯碼速度有明顯地提升。這說明硬件電路的確實(shí)現(xiàn)了信道自適 應(yīng)迭代控制的功能,使譯碼速度大大提高,達(dá)到了優(yōu)化譯碼算法的功能。
權(quán)利要求
1、一種Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法,所述Turbo碼通過編碼器和譯碼器分別進(jìn)行編碼和譯碼;所述編碼器由兩個(gè)遞歸系統(tǒng)卷積碼編碼器、一個(gè)交織器和一個(gè)復(fù)接器組成,交織器將輸入信息序列x1經(jīng)過打亂之后變成序列x2,兩組序列x1,x2分別經(jīng)過兩個(gè)編碼器得到兩組校驗(yàn)比特序列y1,y2,再將x1,y1,y2復(fù)接成序列{x1,y1,y2}發(fā)送至信道,完成編碼步驟;所述譯碼器設(shè)有兩個(gè)與編碼器對應(yīng)的軟輸入軟輸出分量譯碼器,第一譯碼器接收到來自信道的序列x1,序列y1以及全部為0的序列l(wèi)e1進(jìn)行譯碼,得到的輸出dec1_out經(jīng)過外信息計(jì)算以及交織器交織之后作為第二譯碼器的先驗(yàn)信息序列輸入le2,而第二譯碼器將序列x1經(jīng)過交織器交織之后得到的序列x2,序列y2,序列l(wèi)e2進(jìn)行譯碼,得到的輸出dec2_out經(jīng)過外信息計(jì)算以及反交織器反交織之后作為下一次迭代計(jì)算時(shí)第一分量譯碼器的先驗(yàn)信息輸入le1,完成一次迭代循環(huán),經(jīng)過多次迭代后對第二譯碼器的輸出結(jié)果dec2_out進(jìn)行反交織和硬判決,從而得到最終譯碼輸出c_out序列;其特征在于所述譯碼器在每次迭代結(jié)束之后進(jìn)行硬判決,再將本次迭代硬判決得到的比特序列與上次迭代硬判決得到的比特序列相比較,計(jì)算兩個(gè)序列不相同的比特?cái)?shù),當(dāng)兩個(gè)序列不相同的比特?cái)?shù)為0時(shí)就停止迭代,輸出結(jié)果。
2、根據(jù)權(quán)利要求l所述的Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法,其特征在于所述譯碼器的迭代過程包括如下步驟1) 預(yù)先設(shè)定最大迭代次數(shù)Imax,將先驗(yàn)信息lei初始化為0;2) 對輸入的序列X2先進(jìn)行一次硬判決,得到長度為N的比特序列Ri,所述N為幀長;(這里對X2進(jìn)行硬判決的方式與對deC2—OUt進(jìn)行硬判決類似,如果X2 大于等于0就判定當(dāng)前&序列的值為1;如果X2小于0就判定當(dāng)前Rt序列的值為o)3) 開始譯碼迭代;4) 譯碼迭代結(jié)束之后,進(jìn)行硬判決,得到長度為N的比特序列R2,如果當(dāng)前迭代次數(shù)—Imax,就轉(zhuǎn)到步驟7,如果當(dāng)前迭代次數(shù)i^In^,就轉(zhuǎn)到步驟5;5) 把Rp R2進(jìn)行比較,得到兩序列中不相同的比特個(gè)數(shù)NUMBER;6) 判斷NUMBER的取值,如果NUMBEI^0,就轉(zhuǎn)到步驟7,否則用112代 替Ri并轉(zhuǎn)到步驟3;7) 把R2作為譯碼結(jié)果輸出,結(jié)束迭代。
3、根據(jù)權(quán)利要求1或2所述的Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法,其特征在于所述譯碼器先將交織好的序列X2送入迭代控制模塊進(jìn)行硬判決,并且把硬判決的結(jié)果送入存儲器進(jìn)行存儲,第一次迭代計(jì)算得到的第二譯碼器譯碼輸出 dec2—out也進(jìn)行硬判決,得到le2—deside信號,然后同步讀取存儲器中的數(shù)據(jù), 送入序列比較模塊進(jìn)行比較,得到表示兩個(gè)序列相同的比特?cái)?shù)的信號same,在 送入到迭代停止判決模塊進(jìn)行判斷是否結(jié)束迭代,而le2—deside信號經(jīng)過延時(shí)器 的延時(shí),也送入RAM進(jìn)行存儲,所述譯碼器還通過迭代計(jì)數(shù)模塊用每次dec2—out 的同步電平en—hi2做信號,在en—hi2的上升沿計(jì)數(shù),再結(jié)合same信號,對迭代 計(jì)算和迭代停止進(jìn)行判決。
全文摘要
本發(fā)明提供了一種Turbo碼信道自適應(yīng)實(shí)現(xiàn)方法,在每次迭代結(jié)束之后進(jìn)行硬判決,再將本次迭代硬判決得到的比特序列與上次迭代硬判決得到的比特序列相比較(原始比較序列由譯碼之前直接硬判決產(chǎn)生),計(jì)算兩個(gè)序列不相同的比特?cái)?shù),一旦發(fā)現(xiàn)兩個(gè)序列不相同的比特?cái)?shù)為0,于是就停止迭代,輸出結(jié)果。本發(fā)明能克服現(xiàn)有Turbo碼算法在硬件實(shí)現(xiàn)時(shí)存在的硬件電路復(fù)雜度高和譯碼時(shí)延長等不足,使Turbo碼譯碼算法在進(jìn)行譯碼的過程中根據(jù)信道歸一化信噪比E<sub>b</sub>/N<sub>0</sub>的變化自動調(diào)整迭代次數(shù),節(jié)約譯碼時(shí)間,加快譯碼速度。
文檔編號H03M13/00GK101674094SQ200910193139
公開日2010年3月17日 申請日期2009年10月16日 優(yōu)先權(quán)日2009年10月16日
發(fā)明者劉星成, 弦 張, 黃志軍 申請人:中山大學(xué)