本發(fā)明屬于光通信領(lǐng)域,具體涉及一種用于光信道傳輸?shù)幕诙辔慌袥Q的極化碼譯碼方法。
背景技術(shù):
寬帶光網(wǎng)絡(luò)被國家中長期科技發(fā)展綱要明確將其列為“信息產(chǎn)業(yè)及現(xiàn)代服務(wù)業(yè)”重點(diǎn)領(lǐng)域下的優(yōu)先支持主題,寬帶光網(wǎng)絡(luò)已被明確提升到了國家戰(zhàn)略層面。
在寬帶用戶數(shù)量和單用戶接入帶寬兩大因素持續(xù)快速增長的推動(dòng)下,帶寬需求量呈現(xiàn)高速增長。三網(wǎng)融合促使各種新型網(wǎng)絡(luò)應(yīng)用逐漸普及,以往的網(wǎng)絡(luò)帶寬已經(jīng)不能滿足需求。通信行業(yè)正在經(jīng)歷從以往的語音通信業(yè)務(wù)為主向大力發(fā)展數(shù)據(jù)業(yè)務(wù)轉(zhuǎn)型,通信網(wǎng)絡(luò)的數(shù)據(jù)傳輸量大幅增長。
極化碼在二進(jìn)制離散無記憶信道(Binary Discrete Memoryless Channel,BDMC)下在理論上使得通信系統(tǒng)的容量可以達(dá)到香農(nóng)容量。這種編碼方法是基于一種信道極化的現(xiàn)象下完成的,信道極化使一部分信道變成完全好的,一部分信道變成完全差的,基于這個(gè)現(xiàn)象,極化碼就是將要傳送的信息比特放在完全好的信道上傳輸。極化碼的實(shí)際性能隨著列表連續(xù)消去譯碼算法(Successive Cancellation List(SCL)Decoding)等技術(shù)的提出雖然有所改善,但是上述譯碼算法的延時(shí)和硬件資源占用情況仍不理想,硬件實(shí)現(xiàn)還很不成熟。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提供一種基于多位判決的極化碼譯碼方法,顯著降低算法的延時(shí),提高算法硬件實(shí)現(xiàn)的成熟度。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案。
一種基于多位判決的極化碼譯碼方法,其特征在于,包括以下步驟:
S1、譯碼樹路徑展開:每一條SC譯碼序列都產(chǎn)生出多級譯碼子樹,從而形成基于LLR的多個(gè)LLR消息輸出;
S2、多位譯碼度量計(jì)算:利用譯碼樹路徑展開提供的多個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量;
S3、譯碼器的迫零修正:當(dāng)所有譯碼路徑的路徑度量計(jì)算完畢后,對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位;
S4、譯碼器的比較與剪枝:對于路徑度量取值正常的路徑,比較其度量值,取出最大的L條路徑,作為進(jìn)一步譯碼的起點(diǎn),將其他路徑剪枝。
進(jìn)一步地:
步驟S1中,實(shí)施啟動(dòng)L個(gè)基于LLR的SC譯碼器,維護(hù)L條譯碼序列,其中每一條SC譯碼序列都產(chǎn)生出K級譯碼子樹,從而形成基于LLR的2K個(gè)LLR消息輸出;步驟S2中,利用譯碼樹路徑展開提供的2K個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量。
步驟S2包括以下步驟:
步驟301,讀入待譯碼的數(shù)據(jù);
步驟302,對極化碼編碼器進(jìn)行初始化,包括初始化2k*2k階的編碼矩陣;
步驟303,循環(huán)計(jì)數(shù)器j置為0,求和緩存sum置為0,準(zhǔn)備進(jìn)入循環(huán);
步驟304,判斷循環(huán)計(jì)數(shù)器是否到達(dá)循環(huán)上限2k,如果是,則轉(zhuǎn)入步驟311,如果否,則轉(zhuǎn)入步驟305;
步驟305,計(jì)算U(j),即2k*2k階的編碼矩陣的第j列;
步驟306,計(jì)算U(j)與譯碼產(chǎn)生的位值向量a=(a1,…,a2k)之間的內(nèi)積,即
步驟307,計(jì)算譯碼度量的中間值Bj,其中包括以下三個(gè)步驟
獲取譯碼位值向量a=(a1,…,a2k)所對應(yīng)的LLR向量s=(s1,…,s2k);
計(jì)算D(sj),其中函數(shù)D定義為
按照下式計(jì)算中間值
Bj=sj(1-<U(j),a>)-D(sj)
步驟308,在求和緩存中進(jìn)行積累操作
sum=sum+Bj
步驟309,調(diào)整循環(huán)計(jì)數(shù)器j,轉(zhuǎn)入步驟304;
步驟310,在原有譯碼度量的基礎(chǔ)上,增加sum,得到新的譯碼度量,從而完成譯碼度量的計(jì)算;
步驟311,將計(jì)算所得到的譯碼度量輸出。
一種基于多位判決的極化碼譯碼方法,包括:
步驟501,讀入待譯碼的原始數(shù)據(jù);
步驟502,對譯碼路徑初始化;
步驟503,譯碼路徑度量置零;
步驟504,將譯碼路徑索引置零,該路徑索引作為譯碼計(jì)算循環(huán)的標(biāo)志,用于在n/2k條譯碼路徑上進(jìn)行遍歷循環(huán);
步驟505,判斷譯碼路徑索引是否到達(dá)循環(huán)上限n/2k,如果是,則轉(zhuǎn)入步驟510,如果否,則轉(zhuǎn)入步驟506;
步驟506,對每一條路徑實(shí)施標(biāo)準(zhǔn)的SC譯碼,得到2k個(gè)譯碼位值輸出,并且得到相應(yīng)的LLR值;
步驟507,譯碼路徑展開,得到若干條長度增加的譯碼路徑;
步驟508,計(jì)算譯碼路徑度量,利用譯碼樹路徑展開提供的多個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量;
步驟509,對得到的譯碼路徑進(jìn)行迫零調(diào)整,其中對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位;之后轉(zhuǎn)入步驟505;
步驟510,對譯碼路徑實(shí)施剪枝,留下路徑度量最好的L條路徑;
步驟511,輸出譯碼結(jié)果。
一種基于多位判決的極化碼譯碼系統(tǒng),包括:
譯碼樹路徑展開裝置:每一條SC譯碼序列都產(chǎn)生出多級譯碼子樹,從而形成基于LLR的多個(gè)LLR消息輸出;
多位譯碼度量計(jì)算裝置:利用譯碼樹路徑展開提供的多個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量;
譯碼器的迫零修正裝置:當(dāng)所有譯碼路徑的路徑度量計(jì)算完畢后,對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位;
譯碼器的比較與剪枝裝置:對于路徑度量取值正常的路徑,比較其度量值,取出最大的L條路徑,作為進(jìn)一步譯碼的起點(diǎn),將其他路徑剪枝。
進(jìn)一步地:
譯碼樹路徑展開裝置實(shí)施啟動(dòng)L個(gè)基于LLR的SC譯碼器,維護(hù)L條譯碼序列,其中每一條SC譯碼序列都產(chǎn)生出K級譯碼子樹,從而形成基于LLR的2K個(gè)LLR消息輸出;多位譯碼度量計(jì)算裝置利用譯碼樹路徑展開提供的2K個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量。
本發(fā)明的技術(shù)效果包括:
本發(fā)明提出了一種基于多位判決的列表連續(xù)消去的新譯碼方法,該方法可以顯著降低算法的延時(shí),提高算法硬件實(shí)現(xiàn)的成熟度。本發(fā)明是一種低延時(shí)的極化碼譯碼算法,其利用編碼和譯碼的互易特性,利用似然比值一次性計(jì)算多個(gè)位的譯碼度量,取得比傳統(tǒng)譯碼算法更低的延遲。
附圖說明
圖1為本發(fā)明基于多位判決的極化碼譯碼方法流程圖;
圖2為本發(fā)明一種實(shí)施例中的極化碼SCL譯碼樹的結(jié)構(gòu)圖;
圖3為本發(fā)明一種實(shí)施例中的極化碼多位譯碼度量計(jì)算的流程圖;
圖4為本發(fā)明一種實(shí)施例的基于多位判決的極化碼譯碼算法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖以及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明。理當(dāng)理解,此處所描述的具體實(shí)施例僅用于解釋本發(fā)明,并不用于限制本發(fā)明。
如圖1所示,本發(fā)明實(shí)施例的基于多位判決的極化碼譯碼方法,包括以下步驟:
譯碼樹路徑展開;
多位譯碼度量計(jì)算;
譯碼器的迫零修正;
譯碼器的比較與剪枝。
譯碼樹路徑展開步驟為譯碼器多位判決作必要的準(zhǔn)備。在具體實(shí)施例中,首先啟動(dòng)L個(gè)基于LLR的SC譯碼器,維護(hù)L條譯碼序列。為了同時(shí)完成2K個(gè)比特的譯碼工作,每一條SC譯碼序列都產(chǎn)生出K級譯碼子樹,從而形成基于LLR的2K個(gè)LLR消息輸出,方便后續(xù)使用。
多位譯碼度量計(jì)算步驟中,利用譯碼樹路徑展開提供的2K個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量,避免了每一位順次計(jì)算的繁瑣步驟,降低譯碼延遲。
譯碼器的迫零修正步驟中,當(dāng)所有譯碼路徑的路徑度量計(jì)算完畢后,對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位。
譯碼器的比較與剪枝步驟中,對于路徑度量取值正常的路徑,比較其度量值,取出最大的L條路徑,作為進(jìn)一步譯碼的起點(diǎn)。將其他路徑剪枝,降低譯碼器的工作復(fù)雜度。
參見圖2,在一種具體實(shí)施例中,極化碼SCL譯碼樹的結(jié)構(gòu)包括:
節(jié)點(diǎn)11:譯碼樹的根節(jié)點(diǎn),是所有譯碼路徑的起始,譯碼信息由此處開始發(fā)送。
路徑12:對于每一個(gè)非無效位而言,生成兩個(gè)不同的路徑,遍歷0、1兩種可能,同時(shí)針對兩種不同可能。計(jì)算譯碼的似然比(LLR),并將該似然比向下一層傳遞。
節(jié)點(diǎn)13:每一層產(chǎn)生的節(jié)點(diǎn)都包含兩種信息,其一是譯碼值,即0或1;其二是基于LLR計(jì)算的譯碼路徑度量。
路徑14:為了避免譯碼復(fù)雜度的指數(shù)增長,只保留固定數(shù)量的譯碼路徑。也就是說,所有譯碼路徑中,具有最高度量的L條路徑被保留。
參見圖3,在優(yōu)選實(shí)施例中,計(jì)算極化碼多位譯碼度量的流程包括以下步驟:
步驟301,讀入待譯碼的數(shù)據(jù);
步驟302,對極化碼編碼器進(jìn)行初始化。由于極化碼的編碼和譯碼過程存在對易性,我們在多位判決的計(jì)算中需要用到極化碼的編碼器。盡管極化碼譯碼的方法很多,但是編碼器卻相對標(biāo)準(zhǔn)統(tǒng)一。這里對編碼器進(jìn)行初始化,以備后續(xù)使用;
步驟303,循環(huán)計(jì)數(shù)器j置為0,求和緩存sum置為0,準(zhǔn)備進(jìn)入循環(huán);
步驟304,判斷循環(huán)計(jì)數(shù)器是否到達(dá)循環(huán)上限2k,如果是,則轉(zhuǎn)入步驟311,如果否,則轉(zhuǎn)入步驟305;
步驟305,計(jì)算U(j),即2k*2k階的編碼矩陣的第j列。由于編碼矩陣已經(jīng)在步驟S302初始化完畢,故此處只需從緩存中將相應(yīng)的列取出即可,無需多余計(jì)算。
步驟306,計(jì)算U(j)與譯碼產(chǎn)生的位值向量a=(a1,…,a2k)之間的內(nèi)積,即
步驟307,計(jì)算譯碼度量的中間值Bj,其中包括三個(gè)步驟
●獲取譯碼位值向量a=(a1,…,a2k)所對應(yīng)的LLR向量s=(s1,…,s2k);
●計(jì)算D(sj),其中函數(shù)D定義為
●按照下式計(jì)算中間值
Bj=sj(1-<U(j),a>)-D(sj)
步驟308,在求和緩存中進(jìn)行積累操作
sum=sum+Bj
步驟309,調(diào)整循環(huán)計(jì)數(shù)器j,轉(zhuǎn)入步驟S304。
步驟310,在原有譯碼度量的基礎(chǔ)上,增加sum,得到新的譯碼度量,從而完成譯碼度量的計(jì)算。
步驟311,將計(jì)算所得到的譯碼度量輸出。
參閱圖4,在另一種實(shí)施例中,基于多位判決的極化碼譯碼方法包括以下步驟:
步驟501,讀入待譯碼的原始數(shù)據(jù)。
步驟502,對譯碼路徑初始化。這里的初始化指的是本階段譯碼的起始狀態(tài)準(zhǔn)備,即采用SCL譯碼方法所得到的L條給定長度的譯碼路徑。
步驟503,譯碼路徑度量置零。
步驟504,將譯碼路徑索引置零。該路徑索引是譯碼計(jì)算循環(huán)的標(biāo)志。譯碼計(jì)算將在n/2k條譯碼路徑上進(jìn)行遍歷循環(huán)。
步驟505,判斷譯碼路徑索引是否到達(dá)循環(huán)上限n/2k,如果是,則轉(zhuǎn)入步驟510,如果否,則轉(zhuǎn)入步驟506。
步驟506,對每一條路徑實(shí)施標(biāo)準(zhǔn)的SC譯碼。譯碼過程進(jìn)行k級,得到2k個(gè)譯碼位值輸出,并且得到相應(yīng)的LLR值。
步驟507,譯碼路徑展開,得到若干條長度增加的譯碼路徑。
受到資源和復(fù)雜度的限制,這些路徑不可能同時(shí)被維護(hù),需要從中選擇L條繼續(xù)向下一級傳遞。選擇的依據(jù)是路徑度量,這是下一步計(jì)算的核心內(nèi)容。
步驟508,計(jì)算譯碼路徑度量。優(yōu)選地,譯碼路徑度量采用圖3所示的方法進(jìn)行計(jì)算。
步驟509,對得到的譯碼路徑進(jìn)行迫零調(diào)整,即對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位。之后轉(zhuǎn)入步驟S505。
步驟510,對譯碼路徑實(shí)施剪枝,留下路徑度量最好的L條路徑。
步驟511,輸出譯碼結(jié)果。
參閱圖1,在另一種實(shí)施例中,一種基于多位判決的極化碼譯碼系統(tǒng),包括:
譯碼樹路徑展開裝置:每一條SC譯碼序列都產(chǎn)生出多級譯碼子樹,從而形成基于LLR的多個(gè)LLR消息輸出;
多位譯碼度量計(jì)算裝置:利用譯碼樹路徑展開提供的多個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量;
譯碼器的迫零修正裝置:當(dāng)所有譯碼路徑的路徑度量計(jì)算完畢后,對路徑度量進(jìn)行分析判斷,如果發(fā)現(xiàn)有路徑度量的值過低,則強(qiáng)迫凍結(jié)該路徑度量所對應(yīng)的位;
譯碼器的比較與剪枝裝置:對于路徑度量取值正常的路徑,比較其度量值,取出最大的L條路徑,作為進(jìn)一步譯碼的起點(diǎn),將其他路徑剪枝。
在一種具體實(shí)施例中,譯碼樹路徑展開裝置實(shí)施啟動(dòng)L個(gè)基于LLR的SC譯碼器,維護(hù)L條譯碼序列,其中每一條SC譯碼序列都產(chǎn)生出K級譯碼子樹,從而形成基于LLR的2K個(gè)LLR消息輸出;多位譯碼度量計(jì)算裝置利用譯碼樹路徑展開提供的2K個(gè)LLR消息,一次性計(jì)算出所有相關(guān)路徑的路徑度量。
在優(yōu)選的實(shí)施例中,多位譯碼度量計(jì)算裝置采用圖3所示的計(jì)算方式計(jì)算極化碼多位譯碼度量。
以上內(nèi)容是結(jié)合具體/優(yōu)選的實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,其還可以對這些已描述的實(shí)施方式做出若干替代或變型,而這些替代或變型方式都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。