本發(fā)明屬于光通信領(lǐng)域,具體涉及一種用于光信道傳輸?shù)慕档痛鎯?chǔ)器消耗的極化碼譯碼方法和系統(tǒng)。
背景技術(shù):
寬帶光網(wǎng)絡(luò)是國家經(jīng)濟(jì)社會(huì)發(fā)展的重要基礎(chǔ),是國家工業(yè)化與信息化融合的重要紐帶,
隨著近年來視頻交互、點(diǎn)對(duì)點(diǎn)文件傳輸?shù)刃屡d業(yè)務(wù)的出現(xiàn),用戶對(duì)光網(wǎng)絡(luò)帶寬的需求也愈加強(qiáng)烈。目前全球正處于從低速10G/40G到高速的100G的過渡過程中,歐美運(yùn)營商已經(jīng)開展100G商用網(wǎng)絡(luò)建設(shè)。國內(nèi)的中國電信、中國移動(dòng)、中國聯(lián)通也先后啟動(dòng)了100G的實(shí)驗(yàn)室測試。因此,100Gbit/s光通信系統(tǒng)已經(jīng)處于大規(guī)模商用部署的開始階段。
2008年出現(xiàn)的極化碼從理論上第一次嚴(yán)格證明了在二進(jìn)制輸入對(duì)稱離散無記憶信道下,極化碼可以“達(dá)到”香農(nóng)容量,并且有較低的編碼和譯碼復(fù)雜度。從某種意義上說,極化碼理論上解決了近60年來信息論和編碼領(lǐng)域一直想要解決的問題。雖然極化碼的理論很優(yōu)美,但其實(shí)際性能還不太理想,盡管隨著列表連續(xù)消去譯碼算法(Successive Cancellation List(SCL)Decoding)等技術(shù)的提出,極化碼性能有所改善,但是上述譯碼算法需要消耗大量的存儲(chǔ)器來存放中間結(jié)果,不利于譯碼的硬件實(shí)現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種極化碼譯碼方法和系統(tǒng),降低存儲(chǔ)器的消耗,并方便硬件實(shí)現(xiàn)。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
一種降低存儲(chǔ)器消耗的極化碼譯碼方法,包括:
譯碼樹的分塊處理:在譯碼樹中劃分出若干塊即子樹,子樹內(nèi)采用SCL譯碼算法,子樹外采用標(biāo)準(zhǔn)的SC譯碼算法;
譯碼操作的塊間轉(zhuǎn)移處理:針對(duì)譯碼樹的分塊進(jìn)行安排,將子樹編號(hào)索引,然后按照譯碼操作的時(shí)間順序逐一對(duì)各子樹進(jìn)行SCL譯碼,各子樹共享存儲(chǔ)空間。
進(jìn)一步地:
根據(jù)譯碼樹的分塊,僅在每一棵子樹上進(jìn)行SCL譯碼操作,保留若干條譯碼路徑留待最終選擇,而在子樹外的其他部分上進(jìn)行標(biāo)準(zhǔn)的SC譯碼操作,只保留局部最優(yōu)的譯碼路徑。
SCL譯碼的列表長度和分塊數(shù)量根據(jù)譯碼器性能要求和硬件資源進(jìn)行選擇。
極化碼SCL譯碼樹的分塊結(jié)構(gòu)包括:
譯碼樹的根節(jié)點(diǎn),其是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送;
針對(duì)第一層譯碼結(jié)果0的分塊,該分塊內(nèi)每一層譯碼都采用SCL譯碼方法,保留L條譯碼路徑,最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑;該分塊的譯碼被首先執(zhí)行;
針對(duì)第一層譯碼結(jié)果1的分塊,該分塊內(nèi)每一層譯碼都采用SCL譯碼方法,保留L條譯碼路徑。最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑;該分塊的譯碼在后執(zhí)行。
譯碼流程包括:
步驟301,讀入待譯碼的數(shù)據(jù);
步驟302,對(duì)第一個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;
步驟303,將分塊數(shù)目置為2,分塊計(jì)數(shù)器置為0;
步驟304,判斷分塊計(jì)數(shù)器是否到達(dá)分塊數(shù)目,如果是,則轉(zhuǎn)入步驟308,如果否,則轉(zhuǎn)入步驟305;
步驟305,按照分塊計(jì)數(shù)器的數(shù)值選擇分塊,進(jìn)入分塊內(nèi)譯碼,塊內(nèi)譯碼采用SCL譯碼方法,保留若干條譯碼路徑,以待最終決策;
步驟306,將最終選定的譯碼路徑送入CRC校驗(yàn)?zāi)K,如果校驗(yàn)通過,則將其作為譯碼結(jié)果,如果校驗(yàn)不通過,那么將路徑度量最高的路徑作為結(jié)果輸出;
步驟307,存儲(chǔ)該分塊的譯碼路徑結(jié)果;轉(zhuǎn)入步驟304;
步驟308,輸出最終的譯碼結(jié)果。
極化碼SCL譯碼樹的分塊結(jié)構(gòu)包括:
譯碼樹的根節(jié)點(diǎn),其是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送;
譯碼樹的第二層節(jié)點(diǎn),該節(jié)點(diǎn)的譯碼采用SC方法,只保留LLR最高的譯碼路徑,向下層傳遞;
針對(duì)第二層第一個(gè)節(jié)點(diǎn)譯碼結(jié)果0的分塊,該分塊內(nèi)每一層譯碼都采用SCL方法,保留L條譯碼路徑,最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑;該分塊的譯碼被首先執(zhí)行;隨后各分塊的SCL譯碼按照時(shí)間順次進(jìn)行;
針對(duì)第二層最后一個(gè)節(jié)點(diǎn)譯碼結(jié)果1的分塊,該分塊內(nèi)每一層譯碼都采用SCL方法,保留L條譯碼路徑,最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑;該分塊的譯碼最后執(zhí)行。
譯碼流程包括:
步驟501,讀入待譯碼的數(shù)據(jù);
步驟502,對(duì)第一個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;
步驟503,對(duì)第二個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;保留所有的譯碼樹分支,向下層傳遞。
步驟504,將分塊數(shù)目置為2,分塊計(jì)數(shù)器置為0;
步驟504’,判斷分塊計(jì)數(shù)器是否到達(dá)分塊數(shù)目,如果是,則轉(zhuǎn)入步驟508,如果否,則轉(zhuǎn)入步驟505;
步驟505,按照分塊計(jì)數(shù)器的數(shù)值選擇分塊,進(jìn)入分塊內(nèi)譯碼,塊內(nèi)譯碼采用SCL譯碼方法,保留若干條譯碼路徑,以待最終決策;
步驟506,將最終選定的譯碼路徑送入CRC校驗(yàn)?zāi)K,如果校驗(yàn)通過,則將其作為譯碼結(jié)果,如果校驗(yàn)不通過,那么將路徑度量最高的路徑作為結(jié)果輸出;
步驟507,存儲(chǔ)該分塊的譯碼路徑結(jié)果;轉(zhuǎn)入步驟504’;
步驟508,輸出最終的譯碼結(jié)果。
一種降低存儲(chǔ)器消耗的極化碼譯碼系統(tǒng),包括:
譯碼樹的分塊處理裝置:在譯碼樹中劃分出若干塊即子樹,子樹內(nèi)采用SCL譯碼算法,子樹外采用標(biāo)準(zhǔn)的SC譯碼算法;
譯碼操作的塊間轉(zhuǎn)移處理裝置:針對(duì)譯碼樹的分塊進(jìn)行安排,將子樹編號(hào)索引,然后按照譯碼操作的時(shí)間順序逐一對(duì)各子樹進(jìn)行SCL譯碼,各子樹共享存儲(chǔ)空間。
本發(fā)明的極化碼譯碼算法是使用分塊列表連續(xù)消去的新譯碼方法,由于只在塊內(nèi)作SCL譯碼,即保留若干條譯碼路徑留待最終選擇,而在塊外只做普通SC譯碼,只保留局部最優(yōu)的譯碼路徑,同時(shí),塊內(nèi)的譯碼操作按照時(shí)分原則進(jìn)行處理,所以各塊的存儲(chǔ)空間可以共享,也就是說,無需對(duì)整個(gè)譯碼樹分配存儲(chǔ)空間,只需對(duì)一個(gè)分塊(子樹)分配存儲(chǔ)空間即可。本發(fā)明提供的極化碼譯碼算法能夠顯著降低存儲(chǔ)器的消耗,其不需要額外增加算法的復(fù)雜度,充分利用硬件實(shí)現(xiàn)的并行特性;通過適當(dāng)?shù)剡x取參數(shù),可以在較低的存儲(chǔ)器的前提下,取得比傳統(tǒng)譯碼算法更好的性能。
附圖說明
圖1極化碼SCL譯碼樹的結(jié)構(gòu);
圖2為本發(fā)明一種實(shí)施例的極化碼SCL譯碼樹的分塊方法示例圖(I);
圖3為本發(fā)明一種實(shí)施例針對(duì)分塊方法(I)的譯碼流程圖;
圖4為本發(fā)明另一種實(shí)施例的極化碼SCL譯碼樹的分塊方法示例圖(II);
圖5為本發(fā)明另一種實(shí)施例針對(duì)分塊方法(II)的譯碼流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖以及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明。理當(dāng)理解,此處所描述的具體實(shí)施例僅用于解釋本發(fā)明,并不用于限制本發(fā)明。
在本發(fā)明實(shí)施例中,一種降低存儲(chǔ)器消耗的極化碼譯碼方法,包括:
譯碼樹的分塊處理:在譯碼樹中劃分出若干塊即子樹,子樹內(nèi)采用SCL譯碼算法,子樹外采用標(biāo)準(zhǔn)的SC譯碼算法;
譯碼操作的塊間轉(zhuǎn)移處理:針對(duì)譯碼樹的分塊進(jìn)行安排,將子樹編號(hào)索引,然后按照譯碼操作的時(shí)間順序逐一對(duì)各子樹進(jìn)行SCL譯碼,各子樹共享存儲(chǔ)空間。
各子樹的譯碼操作按照時(shí)間順序執(zhí)行。模塊間共享存儲(chǔ)空間,因模塊(子樹)較小,譯碼路徑較短,所以存儲(chǔ)器消耗得以降低。
進(jìn)一步地,根據(jù)譯碼樹的分塊,僅在每一棵子樹上進(jìn)行SCL譯碼操作,保留若干條譯碼路徑留待最終選擇,而在子樹外的其他部分上進(jìn)行標(biāo)準(zhǔn)的SC譯碼操作,只保留局部最優(yōu)的譯碼路徑。
在本發(fā)明實(shí)施例中,列表長度和分塊數(shù)量可以根據(jù)譯碼器性能要求和硬件資源做靈活選擇。
在本發(fā)明實(shí)施例中,所述的譯碼樹的分塊專門針對(duì)列表連續(xù)消去譯碼算法中的譯碼樹進(jìn)行處理。標(biāo)準(zhǔn)的CRC輔助列表連續(xù)消去譯碼需要產(chǎn)生出若干個(gè)成功概率值較高的碼本組合,并從中挑選滿足CRC限制的碼本。在沒有碼本滿足CRC限制的情況下選擇成功概率最大的碼本組合。本發(fā)明將譯碼樹分為若干塊,也稱為子樹。SCL譯碼操作僅在每一棵子樹上進(jìn)行,而子樹外的其他部分上進(jìn)行標(biāo)準(zhǔn)的SC譯碼操作。
譯碼操作的塊間轉(zhuǎn)移針對(duì)譯碼樹的分塊進(jìn)行安排,將已有分塊編號(hào)索引,然后按照譯碼操作的時(shí)序關(guān)系逐一對(duì)分塊進(jìn)行SCL譯碼。
塊間存儲(chǔ)空間的共享能夠節(jié)省存儲(chǔ)空間。由于只在塊內(nèi)作SCL譯碼,即保留若干條譯碼路徑留待最終選擇,而在塊外只做普通SC譯碼,只保留局部最優(yōu)的譯碼路徑,同時(shí),塊內(nèi)的譯碼操作按照時(shí)分原則進(jìn)行處理,所以各塊的存儲(chǔ)空間可以共享,也就是說,無需對(duì)整個(gè)譯碼樹分配存儲(chǔ)空間,只需對(duì)一個(gè)分塊(子樹)分配存儲(chǔ)空間即可。
在不同實(shí)施例中,列表長度和分塊數(shù)量的確定可以根據(jù)硬件資源和譯碼性能綜合確定。如果硬件資源充足,則可以選擇較大的分塊和較長的列表,反之則選擇較小的分塊和較短的列表。
參見圖1,極化碼SCL譯碼樹的結(jié)構(gòu):
節(jié)點(diǎn)11:譯碼樹的根節(jié)點(diǎn),是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送。
路徑12:對(duì)于每一個(gè)非無效位而言,生成兩個(gè)不同的路徑,遍歷0、1兩種可能,同時(shí)針對(duì)兩種不同可能,。計(jì)算譯碼的似然比(LLR),并將該似然比向下一層傳遞。
節(jié)點(diǎn)13:每一層產(chǎn)生的節(jié)點(diǎn)都包含兩種信息,其一是譯碼值,即0或1;其二是基于LLR計(jì)算的譯碼路徑度量。
路徑14:為了避免譯碼復(fù)雜度的指數(shù)增長,只保留固定數(shù)量的譯碼路徑。也就是說,所有譯碼路徑中,具有最高度量的L條路徑被保留。
參見圖2,一種實(shí)施例中,極化碼SCL譯碼樹的分塊方法(I)基于如下結(jié)構(gòu):
節(jié)點(diǎn)21,譯碼樹的根節(jié)點(diǎn),是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送。
模塊22,針對(duì)第一層譯碼結(jié)果0的分塊。該分塊內(nèi)每一層譯碼都采用SCL譯碼方法,保留L條譯碼路徑。最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑。該分塊的譯碼被首先執(zhí)行。
模塊23,針對(duì)第一層譯碼結(jié)果1的分塊。該分塊內(nèi)每一層譯碼都采用SCL譯碼方法,保留L條譯碼路徑。最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑。該分塊的譯碼在模塊22后執(zhí)行。
圖3示出了針對(duì)分塊方法(I)的譯碼流程如下。
步驟301,讀入待譯碼的數(shù)據(jù);
步驟302,對(duì)第一個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;
步驟303,將分塊數(shù)目置為2,分塊計(jì)數(shù)器置為0;
步驟304,判斷分塊計(jì)數(shù)器是否到達(dá)分塊數(shù)目,如果是,則轉(zhuǎn)入步驟308,如果否,則轉(zhuǎn)入步驟305;
步驟305,按照分塊計(jì)數(shù)器的數(shù)值選擇分塊,進(jìn)入分塊內(nèi)譯碼。塊內(nèi)譯碼采用SCL譯碼方法,保留若干條譯碼路徑,以待最終決策;
步驟306,將最終選定的譯碼路徑送入CRC校驗(yàn)?zāi)K,如果校驗(yàn)通過,則將其作為譯碼結(jié)果,如果校驗(yàn)不通過,那么將路徑度量最高的路徑作為結(jié)果輸出;
步驟307,存儲(chǔ)該分塊的譯碼路徑結(jié)果。轉(zhuǎn)入步驟304;
步驟308,輸出最終的譯碼結(jié)果。
參見圖4,極化碼SCL譯碼樹的分塊方法(II)基于如下結(jié)構(gòu):
節(jié)點(diǎn)41,譯碼樹的根節(jié)點(diǎn),是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送。
節(jié)點(diǎn)42,譯碼樹的第二層節(jié)點(diǎn),該節(jié)點(diǎn)的譯碼采用SC方法,并不維護(hù)多條譯碼路徑,只是保留LLR最高的譯碼路徑,向下層傳遞
模塊43,針對(duì)第二層第一個(gè)節(jié)點(diǎn)譯碼結(jié)果0的分塊。該分塊內(nèi)每一層譯碼都采用SCL方法,保留L條譯碼路徑。最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑。該分塊的譯碼被首先執(zhí)行。隨后各分塊的SCL譯碼按照時(shí)間順次進(jìn)行。
模塊44,針對(duì)第二層最后一個(gè)節(jié)點(diǎn)譯碼結(jié)果1的分塊。該分塊內(nèi)每一層譯碼都采用SCL方法,保留L條譯碼路徑。最終輸出滿足CRC條件的路徑,或者是路徑度量最高的路徑。該分塊的譯碼最后執(zhí)行。
圖5示出了針對(duì)分塊方法(II)的譯碼流程如下。
步驟501,讀入待譯碼的數(shù)據(jù);
步驟502,對(duì)第一個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;
步驟503,對(duì)第二個(gè)比特位進(jìn)行SC譯碼,所得結(jié)果存于譯碼樹的根節(jié)點(diǎn)中;保留所有的譯碼樹分支,向下層傳遞;
步驟504,將分塊數(shù)目置為2,分塊計(jì)數(shù)器置為0;
步驟504’,判斷分塊計(jì)數(shù)器是否到達(dá)分塊數(shù)目,如果是,則轉(zhuǎn)入步驟508,如果否,則轉(zhuǎn)入步驟505;
步驟505,按照分塊計(jì)數(shù)器的數(shù)值選擇分塊,進(jìn)入分塊內(nèi)譯碼。塊內(nèi)譯碼采用SCL譯碼方法,保留若干條譯碼路徑,以待最終決策;
步驟506,將最終選定的譯碼路徑送入CRC校驗(yàn)?zāi)K,如果校驗(yàn)通過,則將其作為譯碼結(jié)果,如果校驗(yàn)不通過,那么將路徑度量最高的路徑作為結(jié)果輸出;
步驟507,存儲(chǔ)該分塊的譯碼路徑結(jié)果。轉(zhuǎn)入步驟504’;
步驟508,輸出最終的譯碼結(jié)果。
在另一種實(shí)施例中,一種降低存儲(chǔ)器消耗的極化碼譯碼系統(tǒng),包括:
譯碼樹的分塊處理裝置:在譯碼樹中劃分出若干塊即子樹,子樹內(nèi)采用SCL譯碼算法,子樹外采用標(biāo)準(zhǔn)的SC譯碼算法;
譯碼操作的塊間轉(zhuǎn)移處理裝置:針對(duì)譯碼樹的分塊進(jìn)行安排,將子樹編號(hào)索引,然后按照譯碼操作的時(shí)間順序逐一對(duì)各子樹進(jìn)行SCL譯碼,各子樹共享存儲(chǔ)空間。
以上內(nèi)容是結(jié)合具體/優(yōu)選的實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,其還可以對(duì)這些已描述的實(shí)施方式做出若干替代或變型,而這些替代或變型方式都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。