專利名稱:縮短Turbo乘積碼的編譯碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域中的前向糾錯方法,特別是有關(guān)于一種縮短Turbo乘積 碼的編譯碼方法。
背景技術(shù):
在通信系統(tǒng)中,為了提高數(shù)據(jù)傳輸?shù)目煽啃?,在信息發(fā)送之前,需要按照一定的規(guī) 貝U,在數(shù)據(jù)流中加入冗余,以便接收端能夠進(jìn)行誤碼檢測和校正。TurbO乘積碼是近十余年 來發(fā)展的一種性能優(yōu)異的糾錯碼,它將Turbo碼中的迭代譯碼思想引入乘積碼中,使其具 有非常好的糾錯能力和更低的錯誤平層,能大大改善系統(tǒng)性能。Turbo乘積碼的分量碼構(gòu)造 簡單,易于實現(xiàn),而且各分量碼可以采用并行譯碼,達(dá)到較高的數(shù)據(jù)速率,非常適合于高性 能、高吞吐量的通信系統(tǒng),有著良好的應(yīng)用前景。為了適應(yīng)通信系統(tǒng)對不同碼率的需求,可 以將前面若干個信息位的值全部置為零,構(gòu)成了縮短碼??s短Turbo乘積碼的編譯碼原理 與Turbo乘積碼相同。2008年申請?zhí)枮?00810207929. 6的專利“Turbo乘積碼優(yōu)化編譯碼算法的FPGA 實現(xiàn)方法”給出了一種可實現(xiàn)的編譯碼方案。該編譯碼方法的主要發(fā)明點在于實現(xiàn)了 Turbo 乘積碼優(yōu)化編碼方式,即待編碼數(shù)據(jù)傳輸至隨機(jī)存取內(nèi)存中,編碼器從隨機(jī)存取內(nèi)存中逐 行或逐列讀入,并采用Turbo乘積碼進(jìn)行行或列編碼,所有行或列編碼完畢后再逐列或逐 行進(jìn)行編碼,將編碼后的數(shù)據(jù)寫入輸出內(nèi)存中。當(dāng)輸出內(nèi)存存滿時,先輸出幀頭,然后讀出 輸出內(nèi)存中的整塊數(shù)據(jù),并以0或1或其他冗余信息補(bǔ)足數(shù)據(jù)塊之間的時鐘空隙,并根據(jù)碼 率需要,對信息位進(jìn)行縮短。實際上,這種先進(jìn)行行(列)編碼,再進(jìn)行列(行)編碼的方 法會產(chǎn)生較大的編碼時延。Leroux 等人在 2008 年 10 月的 IEEE Signal Processing Systems 發(fā)表的論文“A highly parallel Turbo product code decoder without inter leaving resource,,,設(shè)計 了能夠并行處理所有行或列的全并行SISO譯碼器和只處理一行或列的連續(xù)SISO譯碼器, 使得在兩次迭代之間可以直接傳遞外信息而不需要額外的存儲資源。在全并行Siso譯碼 器中,得到軟輸入信息序列硬判決譯碼的伴隨式和全校驗位后,其他測試序列的譯碼伴隨 式和全校驗位并行計算得到,各個候選碼字的度量則根據(jù)測試序列譯碼后最不可靠位、伴 隨式指示的糾正位和全校驗位的變化情況計算得到。雖然文中介紹的方法可以節(jié)省兩次迭 代之間的存儲資源并達(dá)到較高的數(shù)據(jù)吞吐量,但是其代價是候選碼字及其度量的全并行計 算造成的大量邏輯資源和存儲資源的消耗,當(dāng)分量碼碼長較大時,現(xiàn)有硬件可能無法滿足 譯碼器對于資源的要求。尤其對于縮短Turbo乘積碼,當(dāng)各行或列的碼長不一致時,全并行 SISO譯碼器并不適用。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種適合于縮短Turbo乘積碼的編譯碼方法,能夠有效地 降低編譯碼的復(fù)雜度,提高吞吐量,當(dāng)碼長較大時能夠很好的平衡譯碼復(fù)雜度和吞吐量,同時也能更好地支持通信系統(tǒng)對于各種碼率的不同需求。為實現(xiàn)上述目的,本發(fā) 明提供了一種基于BCH碼或者擴(kuò)展BCH碼的縮短Turbo乘 積碼的編碼方法,包括如下步驟1、對縮短Turbo乘積碼信息序列進(jìn)行行或列編碼;2、對行或列編碼產(chǎn)生的每一個行或列分量碼碼字進(jìn)行并行編碼(2. 1)判斷分量碼碼字中各比特的位置信息;(2. 2)讀取狀態(tài)信息,根據(jù)比特的位置信息讀取該比特所在列或列的分量碼編碼 電路上一次更新后的狀態(tài);(2. 3)更新狀態(tài)信息,根據(jù)比特值和狀態(tài),經(jīng)過分量碼編碼電路后得到本次列或列 分量碼編碼的狀態(tài)信息;3、判斷編碼是否完成(3. 1)若待編碼信息序列完成最后一行或列的編碼,則判編碼已完成,并輸出 Turbo乘積碼的碼字;(3. 2)若待編碼信息序列未完成最后一行或列的編碼,則判編碼未完成,轉(zhuǎn)回到步 驟(1)繼續(xù)進(jìn)行下一行或列編碼。本發(fā)明提供了一種基于BCH碼或者擴(kuò)展BCH碼的縮短Turbo乘積碼的譯碼方法, 具體步驟如下1、生成軟輸入信息序列的硬判決序列;2、在軟輸入信息序列中選擇最不可靠位;3、根據(jù)硬判決序列和最不可靠位生成測試序列;4、對測試序列譯碼生成候選碼字(4. 1)對軟輸入信息序列進(jìn)行硬判決譯碼,可以得到硬判決序列的伴隨式;(4. 2)根據(jù)分量碼生成多項式得到與最不可靠位相應(yīng)的本原域元素冪的向量;(4. 3)根據(jù)硬判決序列的伴隨式,計算在最不可靠位全為0的測試序列的伴隨式, 從最不可靠位全為0的測試序列開始,依次改變在最不可靠位上的值,計算得到其他測試 序列的伴隨式;(4. 4)根據(jù)伴隨式糾正測試序列的錯誤位置,得到所有的候選碼字;5、計算候選碼字和軟輸入信息序列的度量(5. 1)計算硬判決序列和軟輸入信息序列的度量;(5. 2)計算測試序列與軟輸入信息序列的度量,根據(jù)軟輸入信息序列在最不可靠 位置上的數(shù)值和硬判決序列的度量,計算測試序列中最不可靠位全為0的度量,根據(jù)軟輸 入信息序列在最不可靠位置上的數(shù)值和測試序列中最不可靠位全為0的度量,計算其他所 有測試序列的度量;(5. 3)計算候選碼字的度量,測試序列譯碼完成后,根據(jù)軟輸入信息序列在錯誤位 置的數(shù)值,計算所有候選碼字的度量;6、減少候選碼字個數(shù),在候選碼字中保留2或3個度量最小的碼字,剔除其他候選 碼字;7、根據(jù)候選碼字的度量確定判決碼字;8、計算判決碼字中每一碼元的外信息。
本發(fā)明與現(xiàn)有技術(shù)相比,存在以下優(yōu)點第一,本發(fā)明提供的編碼方法,相比于現(xiàn)有技術(shù)采用逐行編碼再逐列編碼的實現(xiàn) 方法,只需增加少量的存儲資源,就可以使數(shù)據(jù)吞吐量提高1倍左右,編碼延遲減少。第二,本發(fā)明提供的譯碼方法能夠采用流水線的實現(xiàn)方式,減少譯碼延遲,并且能 夠節(jié)省大量的邏輯資源和存儲資源,尤其在分量碼碼長較大的情況下,能夠很好的平衡復(fù) 雜度和數(shù)據(jù)吞吐量。
圖1是本發(fā)明的編碼流程圖。圖2是本發(fā)明所采用的縮短Turbo乘積碼的矩陣結(jié)構(gòu)。圖3是本發(fā)明的譯碼流程圖。圖4是本發(fā)明具體實施方式
中縮短Turbo乘積碼的性能曲線。
具體實施例方式本發(fā)明所采用的縮短Turbo乘積碼的矩陣結(jié)構(gòu)如圖2所示,(H^k1)和(n2,k2),ni, kji = 1,2)分別表示兩個分量碼的碼長和信息位長度,其中分量碼選用BCH碼或擴(kuò)展BCH 碼。將前I1行中每一個分量碼的前I2位信息比特置為零,得到兩個縮短碼Oi1-I1, Ic1-I1) 和(n2-l2,k2-l2)??s短分量碼的生成多項式與原碼相同,因此可以采用與原碼相同的編碼 方法,只是將縮短的信息序列都考慮為零,而且這些信息序列不參與傳輸。為了進(jìn)一步說明本發(fā)明的編譯碼方法,本發(fā)明以(1695,848)縮短Turbo乘積碼為 例,其中行分量碼和列分量碼均采用(64,57,4)擴(kuò)展BCH碼,即H1 = n2 = 64,Ic1 = k2 = 57 和 Ii = I2 = 49。參照圖1和圖2,以信息序列逐行輸入為例,來說明編碼的具體實施步驟步驟一,行編碼。對于任意一行信息序列m = (Hi1, L,Hij, L,m57),按比特順序依次 輸入分量碼編碼電路,進(jìn)行行編碼,產(chǎn)生分量碼碼字c = (Cl,L,Cj,L,C64),并按比特順序依 次讀出。對于前49行的分量碼,因為縮短信息位全為零,所以分量碼編碼電路只需要讀入 縮短信息位除外的信息序列。步驟二,并行編碼。接收到行編碼產(chǎn)生的分量碼碼字c = (C1, L,Cj, L,C64)后,進(jìn) 行并行編碼,具體步驟是(2. 1)判斷分量碼碼字中任意比特Cj的位置信息。比特的位置信息是在編碼矩陣 中,該比特所在列的列號,例如比特…的列號就是j。(2. 2)讀取狀態(tài)信息。根據(jù)碼字c中各比特的位置信息讀取該比特所在列的分量 碼編碼電路上一次更新后的狀態(tài),分量碼編碼電路的初始狀態(tài)設(shè)置為全0。(2. 3)更新狀態(tài)信息。根據(jù)比特值和狀態(tài),經(jīng)過分量碼編碼電路后得到本次列分量 碼編碼的狀態(tài)信息。步驟三,判斷編碼是否完成。(3.1)如果信息序列m是第57行,表示編碼完成,輸出碼字。(3. 2)如果信息序列m不是第57行,表示編碼未完成,則轉(zhuǎn)回到第一步繼續(xù)進(jìn)行下 一行的編碼。
在編碼過程中采用的分量碼編碼電路是基于(63,57,3) BCH碼生成多項式g(x)= χ6+χ+1的除法電路。參照圖3,對本發(fā)明譯碼方法的具體步驟做進(jìn)一步的描述 步驟一,生成軟輸入信息序列的硬判決序列。對從信道中接收到的(或通過迭代 獲得的)任意一行或者列的軟輸入信息序列1 = (Y1Iyj^y64),如果Yj彡0,判為Zchj = 1,如果Yj P0,判為Zthj = 0,得到硬判決序列Ztl = (zoa, L,Z0, j, L,z0j64)。對于縮短分量碼 的軟輸入信息序列,添加修正值a作為軟輸入信息序列中縮短位的信號,且令a的取值范圍 為a e [_p-l,-p+l],其中,ρ表示最不可靠位的個數(shù)。步驟二,在軟輸入信息序列中選擇最不可靠位。比較軟輸入信息序列中各信號絕 對值|y」的大小,從中選出P個絕對值最小的信號作為最不可靠位,P—般取值為2,3或4。步驟三,根據(jù)硬判決序列和最不可靠位生成測試序列。用所有的“0”和“1”比特 排列去替代硬判決序列中最不可靠位的值,從而得到所有的測試序列Zi,l < i < 2P。步驟四,對測試序列譯碼生成候選碼字。(4. 1)計算硬判決序列的伴隨式。對軟輸入信息序列進(jìn)行硬判決譯碼,可以得到硬 判決序列的伴隨式。(4. 2)根據(jù)分量碼生成多項式g(x) = x6+x+l得到與最不可靠位相應(yīng)的本原域元
素冪的向量。(4.3)計算測試序列的伴隨式。根據(jù)硬判決序列的伴隨式,計算在最不可靠位全 為0的測試序列的伴隨式。從最不可靠位全為0的測試序列開始,依次判斷軟輸入信息序 列在最不可靠位上的符號,如果其值為正數(shù)或零,將與此最不可靠位的本原域元素的冪向 量按位異或,得到新的伴隨式;否則,保持伴隨式不變。檢查所有的最不可靠位上的符號后 可以得到所有測試序列的伴隨式Si,1 < i < 2P。(4. 4)生成候選碼字。根據(jù)伴隨式Si糾正測試序列的錯誤位置,得到所有的候選 碼字Vi, 1彡i ( 2P。步驟五,計算候選碼字和軟輸入信息序列的度量。(5. 1)計算硬判決序列的度量,即歐氏距離。(5.2)計算測試序列與軟輸入信息序列的度量。根據(jù)軟輸入信息序列在最不可靠 位置上的數(shù)值和硬判決序列的度量,計算測試序列中最不可靠位全為0的度量。根據(jù)軟輸 入信息序列在最不可靠位置上的數(shù)值和測試序列中最不可靠位全為0的度量,計算其他所 有測試序列的度量。(5. 3)計算候選碼字的度量。測試序列譯碼完成后,根據(jù)軟輸入信息序列在錯誤位 置的數(shù)值,計算所有候選碼字的度量。步驟六,減少候選碼字個數(shù)。在2P個候選碼字中保留h個度量最小且互不相同的 碼字,剔除其他候選碼字,h 一般取值為2或3。步驟七,根據(jù)候選碼字的度量確定判決碼字。在候選碼字中,將度量最小的作為判 決碼字V。步驟八,計算判決碼字中每一碼元的外信息。對于判決碼字中的每一碼元\,在候 選碼字集中尋找它的競爭碼字椒,要求椒是候選碼字集中除ν外與接收序列y之間的歐氏距 離最小,且滿足^^力。碼元Vj的外信息由下式計算得出
權(quán)利要求
一種縮短Turbo乘積碼的編碼方法,包括如下步驟(1)對待編碼信息序列進(jìn)行行或列編碼;(2)對行或列編碼產(chǎn)生的每一個行或列分量碼碼字進(jìn)行并行編碼(2.1)判斷分量碼碼字中各比特的位置信息;(2.2)讀取狀態(tài)信息,根據(jù)比特的位置信息讀取該比特所在列或列的分量碼編碼電路上一次更新后的狀態(tài);(2.3)更新狀態(tài)信息,根據(jù)比特值和狀態(tài),經(jīng)過分量碼編碼電路后得到本次列或列分量碼編碼的狀態(tài)信息;(3)判斷編碼是否完成(3.1)若待編碼信息序列完成最后一行或列的編碼,則判編碼已完成,并輸出Turbo乘積碼的碼字;(3.2)若待編碼信息序列未完成最后一行或列的編碼,則判編碼未完成,轉(zhuǎn)回到步驟(1)繼續(xù)進(jìn)行下一行或列編碼。
2.根據(jù)權(quán)利要求1所述的縮短Turbo乘積碼的編碼方法,其特征在于所述步驟(2.1) 中的比特位置信息為該比特在編碼信息序列中的列號或行號。
3.根據(jù)權(quán)利要求1所述的縮短Turbo乘積碼的編碼方法,其特征在于所述步驟(2.2) 中讀取狀態(tài)信息時分量碼編碼電路的初始狀態(tài)設(shè)置為全0。
4.縮短Turbo乘積碼的譯碼方法,包括如下步驟(1)生成軟輸入信息序列的硬判決序列;(2)在軟輸入信息序列中選擇最不可靠位;(3)根據(jù)硬判決序列和最不可靠位生成測試序列;(4)對測試序列譯碼生成候選碼字(4. 1)對軟輸入信息序列進(jìn)行硬判決譯碼,可以得到硬判決序列的伴隨式;(4. 2)根據(jù)分量碼生成多項式得到與最不可靠位相應(yīng)的本原域元素冪的向量;(4. 3)根據(jù)硬判決序列的伴隨式,計算在最不可靠位全為0的測試序列的伴隨式,從最 不可靠位全為0的測試序列開始,依次改變在最不可靠位上的值,計算得到其他測試序列 的伴隨式;(4. 4)根據(jù)伴隨式糾正測試序列的錯誤位置,得到所有的候選碼字;(5)計算候選碼字和軟輸入信息序列的度量(5. 1)計算硬判決序列和軟輸入信息序列的度量;(5. 2)計算測試序列與軟輸入信息序列的度量,根據(jù)軟輸入信息序列在最不可靠位置 上的數(shù)值和硬判決序列的度量,計算測試序列中最不可靠位全為0的度量,根據(jù)軟輸入信 息序列在最不可靠位置上的數(shù)值和測試序列中最不可靠位全為0的度量,計算其他所有測 試序列的度量;(5. 3)計算候選碼字的度量,測試序列譯碼完成后,根據(jù)軟輸入信息序列在錯誤位置的 數(shù)值,計算所有候選碼字的度量;(6)減少候選碼字個數(shù),在候選碼字中保留2或3個度量最小的碼字,剔除其他候選碼字;(7)根據(jù)候選碼字的度量確定判決碼字;(8)計算判決碼字中每一碼元的外信息。
5.根據(jù)權(quán)利要求4所述的縮短Turbo乘積碼的譯碼方法,其特征在于所述步驟(1) 中對于縮短分量碼,添加修正值a作為軟輸入信息序列中縮短位的信號,a的取值范圍為 ae [_p-l,-p+l],其中,ρ表示最不可靠位的個數(shù)。
6.根據(jù)權(quán)利要求4所述的縮短Turbo乘積碼的譯碼方法,其特征在于所述步驟(6)中 保留的候選碼字的度量互不相同。
全文摘要
本發(fā)明涉及一種縮短Turbo乘積碼的編譯碼方法。編碼方法的具體步驟包括對待編碼信息序列進(jìn)行行或列編碼;對行或列編碼產(chǎn)生的行或列分量碼碼字進(jìn)行并行編碼;判斷編碼是否完成。譯碼方法的具體步驟包括生成軟輸入信息序列的硬判決序列;在軟輸入信息序列中選擇最不可靠位;根據(jù)硬判決序列和最不可靠位生成測試序列;對測試序列譯碼生成候選碼字;計算候選碼字和軟輸入信息序列的度量;減少候選碼字個數(shù);根據(jù)候選碼字的度量確定判決碼字;計算判決碼字中每一碼元的外信息。編碼方法能夠提高數(shù)據(jù)吞吐量,減少編碼延遲。譯碼方法能夠節(jié)省大量的邏輯資源和存儲資源,尤其在分量碼碼長較大的情況下,能夠很好的平衡譯碼復(fù)雜度和數(shù)據(jù)吞吐量。
文檔編號H03M13/29GK101958720SQ20101028918
公開日2011年1月26日 申請日期2010年9月24日 優(yōu)先權(quán)日2010年9月24日
發(fā)明者吳侃侃, 周博, 白寶明, 童勝 申請人:西安電子科技大學(xué)