本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種集合譯碼方法和集合譯碼器。
背景技術(shù):
差錯控制編碼又稱信道編碼,能保證通信系統(tǒng)中數(shù)據(jù)傳輸?shù)目煽啃?。低密度奇偶校驗碼(ldpc碼)是一類性能逼近香農(nóng)極限的線性糾錯碼,并廣泛應(yīng)用于對數(shù)據(jù)要求可靠性高的傳輸系統(tǒng)中。在過去的十余年里,二進(jìn)制ldpc碼因其出色的表現(xiàn)引起了相當(dāng)大的關(guān)注并得到快速發(fā)展。多進(jìn)制ldpc碼可以獲得比二進(jìn)制ldpc碼更大的性能增益,然而代價是極其高昂的計算復(fù)雜度和存儲內(nèi)存,因此阻礙了多進(jìn)制ldpc碼在實際中的應(yīng)用和發(fā)展。
多進(jìn)制ldpc碼的譯碼校驗矩陣的二分圖即tanner圖,由變量節(jié)點、校驗節(jié)點和連接校驗節(jié)點和變量節(jié)點的邊構(gòu)成?,F(xiàn)有的多進(jìn)制ldpc碼的譯碼方法主要有兩種:基于置信度傳播(bp)的譯碼算法和基于大數(shù)邏輯(mlgd)的譯碼算法?;赽p的譯碼算法是譯碼性能最好的多進(jìn)制信息傳播譯碼算法,但是其譯碼復(fù)雜度也最大。對于有限域gf(q)(2r)下的多進(jìn)制ldpc碼,基于bp的譯碼算法在譯碼過程中,對每個碼字符號需要存儲該符號全部q個域元素的置信度,并傳播長度為q的置信度向量。在每個校驗節(jié)點的更新運算時需要q2數(shù)量級的計算復(fù)雜度。而基于mlgd的譯碼算法在譯碼過程中對于每個碼字符號,只存儲并傳遞該碼字符號中可靠性最大的域元素。在譯碼過程中只進(jìn)行簡單的有限域加法和整數(shù)加法運算,因此可以顯著降低基于bp譯碼算法的計算和存儲復(fù)雜度。然而,基于mlgd的譯碼方法存在嚴(yán)重的性能損失現(xiàn)象,并且隨著ldpc碼校驗矩陣列重的減小,其 性能損失越嚴(yán)重,甚至可能過早出現(xiàn)錯誤平臺。因此,如何在計算復(fù)雜度、存儲復(fù)雜度與譯碼性能之間實現(xiàn)平衡是多進(jìn)制ldpc碼譯碼亟待解決的難題。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是如何降低譯碼過程中的計算復(fù)雜度。
為此目的,本發(fā)明提出了一種集合譯碼方法,包括:根據(jù)符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單位進(jìn)行譯碼過程中的計算。
優(yōu)選地,該方法包括以下步驟:
s1:接收比特信息,計算符號信息向量或直接接收符號信息向量;
s2:將所述符號信息向量初始化至二分圖中,并將所述符號信息向量傳遞給對應(yīng)的校驗節(jié)點;
s3:根據(jù)所述符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單位在所述校驗節(jié)點進(jìn)行校驗節(jié)點更新計算,并同時進(jìn)行碼字判決,若是合法的碼字,則終止譯碼,輸出譯碼結(jié)果;否則將校驗節(jié)點更新計算結(jié)果傳遞給變量節(jié)點;
s4:進(jìn)行變量節(jié)點更新計算,將計算結(jié)果傳遞給所述校驗節(jié)點再次進(jìn)行碼字判決,如此反復(fù)迭代直到譯出正確碼字或直到達(dá)到最大迭代次數(shù)為止。
優(yōu)選地,該方法還包括:將所述置信度在第一預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有一個符號;將所述置信度在第二預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有多個符號;其中,所述第一預(yù)設(shè)范圍的置信度比所述第二預(yù)設(shè)范圍的置信度高。
優(yōu)選地,所述以集合為單位進(jìn)行譯碼過程中的計算包括:將一個符號信息向量中含有多個符號的集合與另一個符號信息向量中置信 度最高的集合進(jìn)行計算。
優(yōu)選地,所述將一個符號信息向量中含有多個符號的集合與另一個符號信息向量中置信度最高的集合進(jìn)行計算具體包括:
將一個符號信息向量中含有多個符號的集合的編號與另一個符號信息向量中置信度最高的集合的符號進(jìn)行加和運算。
優(yōu)選地,所述以集合為單位進(jìn)行譯碼過程中的計算包括:
根據(jù)不同集合置信度的不同,將多個符號信息向量之間的集合按照預(yù)設(shè)的路徑進(jìn)行計算。
優(yōu)選地,該方法還包括:同一個集合的多個符號在計算過程中使用相同的置信度。
優(yōu)選地,所述含有多個符號的集合的置信度是所述多個符號的置信度的最大值。
另一方面,本發(fā)明還提供了一種集合譯碼器,其特征在于,包括:接收單元、初始化單元、校驗節(jié)點更新計算單元、變量節(jié)點更新計算單元;
所述接收單元用于接收比特信息,計算符號信息向量;或直接接收符號信息向量;
所述初始化單元用于將所述符號信息向量初始化至二分圖中,并將所述符號信息向量傳遞給對應(yīng)的校驗節(jié)點;
所述校驗節(jié)點更新計算單元用于根據(jù)所述符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單位在所述校驗節(jié)點進(jìn)行校驗節(jié)點更新計算,并同時進(jìn)行碼字判決,若是合法的碼字,則終止譯碼,輸出譯碼結(jié)果;否則將校驗節(jié)點更新計算結(jié)果傳遞給變量節(jié)點;
變量節(jié)點更新計算單元用于進(jìn)行變量節(jié)點更新計算,將計算結(jié)果傳遞給所述校驗節(jié)點再次進(jìn)行碼字判決,如此反復(fù)迭代直到譯出正確碼字或直到達(dá)到最大迭代次數(shù)為止。
優(yōu)選地,所述校驗節(jié)點更新計算單元還用于將置信度在第一預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有一個符號;將置信度在第二預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有多個符號;其中,所述第一預(yù)設(shè)范圍的置信度比所述第二預(yù)設(shè)范圍的置信度高
通過采用本發(fā)明所提供的一種集合譯碼方法和集合譯碼器,降低了譯碼復(fù)雜度,尤其降低了在校驗節(jié)點的計算復(fù)雜度。同時本發(fā)明通過合理劃分集合、采用合適的集合置信度可以提供不低于現(xiàn)存譯碼方法的性能,提供高質(zhì)量的譯碼結(jié)果,提高譯碼效率。
附圖說明
通過參考附圖會更加清楚的理解本發(fā)明的特征和優(yōu)點,附圖是示意性的而不應(yīng)理解為對本發(fā)明進(jìn)行任何限制,在附圖中:
圖1示出了一個5行10列的ldpc碼校驗矩陣的二分圖示意圖;
圖2示出了基于二分圖的迭代譯碼方法的典型流程示意圖;
圖3示出了ems算法中校驗節(jié)點的單步計算過程示意圖;
圖4示出了本發(fā)明集合譯碼方法的流程示意圖;
圖5示出了本發(fā)明集合劃分方法的一種示例示意圖;
圖6示出了本發(fā)明集合譯碼方法中基于路徑進(jìn)行計算的一個可能示例;
圖7示出了本發(fā)明集合譯碼器中校驗節(jié)點更新計算單元的一種示例示意圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明的實施例進(jìn)行詳細(xì)描述。
本發(fā)明的集合譯碼方法可以適用于任意概率譯碼器,本發(fā)明以多進(jìn)制ldpc碼為例對本發(fā)明的實施方式展開詳細(xì)描述。
如圖1所示,是一個(10,5)ldpc碼校驗矩陣的二分圖表示,又稱為tanner圖,tanner圖中的節(jié)點被分成變量節(jié)點vn和校驗節(jié)點cn 兩類。其中每一個變量節(jié)點vn都對應(yīng)譯碼矩陣中的一列,代表碼字中的一個符號;每一個校驗節(jié)點對應(yīng)譯碼矩陣中的一行,代表一個校驗方程;連接變量節(jié)點與校驗節(jié)點之間的線對應(yīng)譯碼矩陣中不為0的元素,稱之為邊。
如圖2所示,基于二分圖的迭代譯碼方法的典型流程如下:由信道接收到的比特信息序列或符號信息向量序列經(jīng)由變量節(jié)點初始化入二分圖,傳遞給對應(yīng)的校驗節(jié)點。在校驗節(jié)點進(jìn)行校驗節(jié)點更新計算,同時進(jìn)行碼字判決,若是合法的碼字,則終止譯碼,輸出譯碼結(jié)果;否則將校驗節(jié)點更新計算結(jié)果傳遞給變量節(jié)點。然后進(jìn)行變量節(jié)點更新計算,將計算結(jié)果傳遞給校驗節(jié)點再次進(jìn)行碼字判決。如此反復(fù)迭代直到譯出正確碼字或達(dá)到最大迭代次數(shù)為止。
在傳統(tǒng)的多進(jìn)制ldpc碼迭代譯碼過程中,計算是基于符號的,以ems算法中校驗節(jié)點的計算為例,計算公式為:
u和v分別是兩個已按照置信度大小排序的符號信息向量,向量中每個元素都有兩個屬性:符號和置信度(llr)。同一個向量中不同元素的符號不同。符號之間的加法遵從伽羅華域的加法運算,置信度之間的加法遵從實數(shù)加法運算。e也是一個已按照置信度大小排序的符號信息向量,由u和v向量計算得出。e中符號為x的元素的置信度按如下方式計算:對于u中符號為xu的元素,如果在v中存在一個符號為xv的元素使得xu+xv=x(伽羅華域加法),則將二者的置信度相加;u中可能存在多個不同的xu都能在v中找到對應(yīng)的元素xv,則最終e中符號x的置信度取這些所有可能結(jié)果中的最小值。
如圖3所示,輸入符號信息向量a,b已根據(jù)置信度由大到小排序。當(dāng)輸入數(shù)據(jù)有nm個不同符號時,每步需要計算
本發(fā)明提供了一種集合譯碼方法,根據(jù)符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單 位進(jìn)行譯碼過程中的計算。其中優(yōu)選地,如圖4所示,該集合譯碼方法可以包括以下步驟:s1:接收比特信息,計算符號信息向量或直接接收符號信息向量;s2:將所述符號信息向量初始化至二分圖中,并將所述符號信息向量傳遞給對應(yīng)的校驗節(jié)點;s3:根據(jù)所述符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單位在所述校驗節(jié)點進(jìn)行校驗節(jié)點更新計算,并同時進(jìn)行碼字判決,若是合法的碼字,則終止譯碼,輸出譯碼結(jié)果;否則將校驗節(jié)點更新計算結(jié)果傳遞給變量節(jié)點。s4:進(jìn)行變量節(jié)點更新計算,將計算結(jié)果傳遞給所述校驗節(jié)點再次進(jìn)行碼字判決,如此反復(fù)迭代直到譯出正確碼字或直到達(dá)到最大迭代次數(shù)為止。具體地,將迭代譯碼過程中符號信息向量的nm個不同符號劃分為nc(nc<nm)個集合,以集合為單位進(jìn)行迭代譯碼過程中的計算。仍以校驗節(jié)點的計算為例,如圖5所示,此時每步只需要計算
優(yōu)選的,所述將符號信息向量劃分為多個集合包括:根據(jù)所述符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合。將置信度在第一預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有一個符號;將置信度在第二預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有多個符號;其中,所述第一預(yù)設(shè)范圍的置信度比所述第二預(yù)設(shè)范圍的置信度高。具體的,根據(jù)符號信息向量不同符號的置信度進(jìn)行劃分,將置信度高的劃分為多個集合,每個集合含有一個符號,將置信度低的也劃分為多個集合,每個集合有多個符號,以nm=8,nc=4為例,一種可能的劃分方式如圖5所示,原始符號信息向量中置信度較高的前兩個元素分別獨自劃分為一個集合,后六個元素按置信度高低每三個一組劃分為兩個集合。
根據(jù)不同集合置信度的不同,在迭代譯碼計算過程中,我們可以只選擇置信度較高的集合進(jìn)行運算,從而進(jìn)一步降低計算復(fù)雜度。優(yōu)選地,所述以集合為單位進(jìn)行譯碼過程中的計算包括:將一個符號信 息向量中含有多個符號的集合與另一個符號信息向量中置信度最高的集合進(jìn)行計算。具體的,以圖5中的劃分為例,符號信息向量a,b分別被劃分為四個集合a1,a2,a3,a4及b1,b2,b3,b4,其中集合a1,a2,b1,b2中都只含有一個元素,即集合a1,a2,b1,b2中都只含有一個符號,而集合a3,a4,b3,b4中都含有多個元素,即含有多個符號。因此在計算過程中,對a1,a2與b1,b2集合可以計算它們之間兩兩的計算結(jié)果,而對a3,a4只計算它們與b1集合之間的計算結(jié)果,對b3,b4只計算它們與a1集合之間的計算結(jié)果。
優(yōu)選的,為了降低計算復(fù)雜度,同一個集合的多個符號在計算過程中使用相同的置信度。所述含有多個符號的集合的置信度是所述多個符號的置信度的最大值。具體的,在基于符號的譯碼方法中,不同符號可能擁有不同的置信度,而本發(fā)明中是基于集合的譯碼方法,集合根據(jù)置信度進(jìn)行劃分,對于含有多個符號的集合,為了降低計算復(fù)雜度,同一個集合的所有符號在計算過程中使用相同的置信度。含有多個符號的集合的置信度等于該集合中所有符號原置信度的最大值,以圖5中的劃分為例,集合a1的置信度γa1等于原符號信息向量中符號a1的置信度γa1,同樣的,集合a2的置信度
為了降低譯碼復(fù)雜度,所述將一個符號信息向量中含有多個符號的集合與另一個符號信息向量中置信度最高的集合進(jìn)行計算包括:將一個符號信息向量中含有多個符號的集合的編號與另一個符號信息向量中置信度最高的集合的符號進(jìn)行加和運算。具體地,將含有多個符號的集合根據(jù)集合內(nèi)所包含的元素由一個唯一的編號表示,含有一個符號的集合仍使用該符號表示,則在迭代譯碼過程中的計算為一個集合編號與一個符號的加和運算,該運算得到一個新的集合編號,且新的集合編號對應(yīng)的集合中的符號是含有多個符號的集合中的所有元素的符號分別和所加符號之和。仍以圖5中的劃分為例,集合a1只 包含一個元素a1,則將a1由符號a1表示;集合b3中包含三個元素b3,b4,b5,將b3由編號β1表示。集合b3與集合a1之間的運算,為β1+a1,運算結(jié)果為一個新的集合編號β2,且編號β2對應(yīng)的集合中也包含有三個元素,分別為a1+b3,a1+b4,a1+b5。
此外,如圖6所示,以集合為單位進(jìn)行譯碼過程中的計算還可以采用基于路徑的計算過程:根據(jù)不同集合置信度的不同,將多個符號信息向量之間的集合按照預(yù)設(shè)的路徑進(jìn)行計算。其中,圖6所示的計算過程與圖5所示的計算過程是兩種不同的方法,圖5每次只對兩個端口進(jìn)行運算,對于多端口需要將兩個端口的運算結(jié)果與其它端口進(jìn)行運算,屬于串行或半并行的方法,而圖6所示的計算過程每次可以直接對所有端口進(jìn)行運算,屬于并行的方法。
如圖6所示,對于有多個輸入端口的計算單元,可以按照已規(guī)劃好的路徑選擇對應(yīng)的集合進(jìn)行運算,并且根據(jù)輸入信息向量置信度分布的不同可從多種規(guī)劃方案中選擇一個最合適的路徑方案。
具體地,圖6所示為一個五端口輸入計算單元的一種可能的路徑規(guī)劃示意圖。根據(jù)輸入的信息向量置信度分布的不同,計算單元從若干固定的已規(guī)劃路徑方案中選擇一種,直接對相應(yīng)的集合進(jìn)行運算,而不再進(jìn)行比較與排序。該計算過程輸入必須是已排序的信息向量,但是輸出的信息向量可能是未排序的,但是只要保證其中元素不含相同的符號即可,是否已排序不會影響之后的計算過程。由于節(jié)省了排序比較單元,所以會大幅減少資源占用。
另一方面,采用上述的集合譯碼方法,本發(fā)明還提供了一種集合譯碼器,包括:接收單元、初始化單元、校驗節(jié)點更新計算單元、變量節(jié)點更新計算單元;所述接收單元用于接收比特信息,計算符號信息向量;或直接接收符號信息向量;所述初始化單元用于將所述符號信息向量初始化至二分圖中,并將所述符號信息向量傳遞給對應(yīng)的校驗節(jié)點;所述校驗節(jié)點更新計算單元用于根據(jù)所述符號信息向量的不 同符號的置信度的不同,將所述符號信息向量劃分為多個集合,以集合為單位在所述校驗節(jié)點進(jìn)行校驗節(jié)點更新計算,并同時進(jìn)行碼字判決,若是合法的碼字,則終止譯碼,輸出譯碼結(jié)果;否則將校驗節(jié)點更新計算結(jié)果傳遞給變量節(jié)點;變量節(jié)點更新計算單元用于進(jìn)行變量節(jié)點更新計算,將計算結(jié)果傳遞給所述校驗節(jié)點再次進(jìn)行碼字判決,如此反復(fù)迭代直到譯出正確碼字或直到達(dá)到最大迭代次數(shù)為止。
優(yōu)選的,所述校驗節(jié)點更新計算單元根據(jù)所述符號信息向量的不同符號的置信度的不同,將所述符號信息向量劃分為多個集合。所述校驗節(jié)點更新計算單元將置信度在第一預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有一個符號;將置信度在第二預(yù)設(shè)范圍的所述符號信息向量劃分為多個集合,每個集合含有多個符號;其中,所述第一預(yù)設(shè)范圍的置信度比所述第二預(yù)設(shè)范圍的置信度高。所述含有多個符號的集合與置信度最高的集合進(jìn)行運算。同一個集合的多個符號在計算過程中使用相同的置信度。所述含有多個符號的集合的置信度是所述多個符號的置信度的最大值。
其中較優(yōu)的,該集合譯碼器還包括數(shù)據(jù)存儲單元,所述數(shù)據(jù)存儲單元用于存儲所述符號信息向量。具體的,在本發(fā)明設(shè)計的集合譯碼器中,符號信息向量的符號和置信度分別由個數(shù)為nm和nc的兩組存儲單元s和l保存,僅保存置信度的存儲單元l中的數(shù)據(jù)參與譯碼迭代過程中的計算、比較等過程,存儲單元s中的數(shù)據(jù)只用于生成新的符號。對應(yīng)于圖5的計算,如圖7所示,為本發(fā)明集合譯碼器中校驗節(jié)點更新計算單元的可能示例,該校驗節(jié)點更新計算單元中有三個數(shù)據(jù)選擇模塊,三個數(shù)據(jù)選擇模塊在最小值模塊上方,三個數(shù)據(jù)選擇模塊分別用γa1+γb1、γa1+γb2、γa2+γb1進(jìn)行初始化,對三個選擇模塊的輸出進(jìn)行比較,最后通過最小值模塊將最小值輸出,并對提供最小值的數(shù)據(jù)選擇模塊進(jìn)行更新。當(dāng)最小值由第一個數(shù)據(jù)選擇模塊提供時,若此時該模塊中數(shù)據(jù)為γa2+γb2,則不再更新該模 塊,且之后該模塊的輸出不再參與比較,否則將該模塊中數(shù)據(jù)更新為γa2+γb2;當(dāng)最小值由第二個數(shù)據(jù)選擇模塊提供時,假設(shè)此時該模塊中數(shù)據(jù)為γa1+γbi,則將該模塊數(shù)據(jù)更新為γa1+γb(i+1);當(dāng)最小值由第三個數(shù)據(jù)選擇模塊提供時,假設(shè)此時該模塊中數(shù)據(jù)為γai+γb1,則將該模塊數(shù)據(jù)更新為γa(i+1)+γb1。當(dāng)?shù)趉個模塊的輸出最小時,最小值模塊輸出該數(shù)據(jù),并控制數(shù)據(jù)選擇模塊k讀入下一個數(shù)據(jù),其余數(shù)據(jù)選擇模塊數(shù)據(jù)不變。同時最小值模塊根據(jù)k生成地址,控制寄存器lu、lv及su、sv分別輸出數(shù)據(jù)進(jìn)行計算。地址寄存器中保存三個數(shù)據(jù)選擇模塊各自下一個數(shù)據(jù)的地址,根據(jù)最小值模塊的比較結(jié)果控制兩組寄存器的輸出。而當(dāng)采用圖6所示的基于路徑進(jìn)行計算時,譯碼裝置只需使用一個存儲單元儲存預(yù)先規(guī)劃好的若干路徑方案,根據(jù)路徑方案選擇輸入的信息向量中對應(yīng)的集合直接進(jìn)行運算即可。
通過采用本發(fā)明所提供的集合譯碼方法和集合譯碼器,降低了譯碼復(fù)雜度,尤其降低了在校驗節(jié)點的計算復(fù)雜度。同時本發(fā)明通過合理劃分集合、采用合適的集合置信度可以提供不低于現(xiàn)存譯碼方法的性能,提供高質(zhì)量的譯碼結(jié)果,提高譯碼效率。
雖然結(jié)合附圖描述了本發(fā)明的實施方式,但是本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的精神和范圍的情況下做出各種修改和變型,這樣的修改和變型均落入由所附權(quán)利要求所限定的范圍之內(nèi)。