本發(fā)明涉及信道編解碼技術(shù)領(lǐng)域,特別是涉及一種低密度奇偶校驗碼的編碼方法、裝置、電子設(shè)備及介質(zhì)。
背景技術(shù):
低密度奇偶校驗碼(ldpc,lowdensityparitycheckcode)是線性分組碼的一種,可以由生成矩陣g或者校驗矩陣h唯一確定,ldpc碼包括規(guī)則碼和非規(guī)則碼兩類,規(guī)則碼可以表示為{dv,dc}(n,k),其中,n,k分別表示經(jīng)過編碼之后的碼長和編碼之前的信息位長度,dv,dc分別表示校驗矩陣h每列非零元素的個數(shù)和每行非零元素的個數(shù)。通常,一個二進制的線性分組碼可以用tanner圖(又稱編碼二分圖)來表示,如圖1所示為一個{2,4}(10,5)規(guī)則碼的校驗矩陣,圖2為圖1所示校驗矩陣對應(yīng)的tanner圖。其中,校驗矩陣每列代表變量節(jié)點,每行代表校驗節(jié)點,連接變量節(jié)點和校驗節(jié)點的邊對應(yīng)于校驗矩陣中的非零元素,如果變量節(jié)點i和校驗節(jié)點j之間有邊相連,則對應(yīng)于校驗矩陣第i行和第j列元素為1,即hi,j=1,vj為校驗矩陣中的第j列變量節(jié)點,ci為校驗矩陣中的第i行校驗節(jié)點,i,j均為大于或等于1的正整數(shù)。
現(xiàn)有技術(shù)中,通常采用ldpc碼迭代算法進行譯碼,來降低誤碼率。但是,由于tanner圖中存在短環(huán),如圖3所示,短環(huán)為v1到c1,c1再到v3,v3再到c2,c2又回到了v1,這樣,重疊的短環(huán)容易構(gòu)成陷阱集t(a,b),其中,a表示譯碼后錯誤的變量節(jié)點的個數(shù),b表示譯碼后碼字不滿足校驗方程的校驗節(jié)點的個數(shù),且b個校驗節(jié)點在陷阱集中與奇數(shù)個變量節(jié)點相連,一旦譯碼器陷入陷阱集,陷阱集里的變量節(jié)點就不能正確譯碼,就算多次采用ldpc碼迭代算法,誤碼率也不下降,誤碼率基本保持不變(即,誤碼平臺)??梢?,陷阱集是造成誤碼平臺的主要原因,誤碼平臺的存在使得誤碼率保持在一定水平。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種低密度奇偶校驗碼的編碼方法、裝置、電子設(shè)備及介質(zhì),以打破ldpc碼迭代算法進行譯碼中的陷阱集,降低誤碼平臺,降低誤碼率。具體技術(shù)方案如下:
第一方面,本發(fā)明實施例提供了一種低密度奇偶校驗碼的編碼方法,包括:
獲取預(yù)設(shè)碼長碼字,對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)碼長碼字的一個碼字為校驗矩陣的一個變量節(jié)點;
根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特;其中,所述出錯碼字比特的出錯次數(shù)大于所述可信度碼字比特的出錯次數(shù);
在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣;
根據(jù)所述擴展校驗矩陣,對原始信息比特進行編碼,得到所述擴展校驗矩陣對應(yīng)的碼字,所述原始信息比特為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特,且所述原始信息比特個數(shù)為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特個數(shù)減去第一預(yù)設(shè)個數(shù)的差。
可選的,所述對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表的步驟包括:
通過預(yù)設(shè)算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)算法包括:蒙特卡洛算法及最小和譯碼算法。
可選的,所述通過預(yù)設(shè)算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表的步驟包括:
在預(yù)設(shè)信噪比時,通過最小和譯碼算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)迭代譯碼,得到所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平;
根據(jù)所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平,通過蒙特卡洛算法,估計所述每個碼字對應(yīng)的碼字比特的錯誤水平,生成所述預(yù)設(shè)碼長碼字的錯誤水平列表。
可選的,所述根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特的步驟包括:
針對所述錯誤水平列表中的碼字比特,按每個碼字比特出錯次個數(shù)對所述錯誤水平列表中的碼字比特進行降序排列,并獲得降序排列后所述錯誤水平列表中的第一預(yù)設(shè)個數(shù)的出錯碼字比特;
針對所述錯誤水平列表中的碼字比特,按每個碼字比特出錯次數(shù)對所述錯誤水平列表中的碼字比特進行升序排列,并獲得升序排列后所述錯誤水平列表中的第二預(yù)設(shè)個數(shù)的可信度碼字比特;所述第二預(yù)設(shè)個數(shù)為所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中每行中非零元素的個數(shù)減去1之后的差,所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣為編碼所述預(yù)設(shè)碼長碼字的校驗矩陣。
可選的,所述在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,生成包括所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣的步驟包括:
獲取所述所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣的編碼二分圖,其中,所述編碼二分圖包括:校驗節(jié)點、變量節(jié)點及連接所述校驗節(jié)點和所述變量節(jié)點的邊;
將所述編碼二分圖中的變量節(jié)點按照每個變量節(jié)點在所述錯誤水平列表中的每個變量節(jié)點出錯次數(shù)進行升序或者降序排列;
在排列后的編碼二分圖中的校驗節(jié)點之后添加所述所述第一預(yù)設(shè)個數(shù)的校驗節(jié)點;
將所述第一預(yù)設(shè)個數(shù)的校驗節(jié)點中的每個校驗節(jié)點連接至所述第一預(yù)設(shè)個數(shù)的出錯碼字比特和所述第二預(yù)設(shè)個數(shù)的可信度碼字比特中的每個碼字比特,生成所述編碼二分圖對應(yīng)的擴展二分圖;
根據(jù)所述擴展二分圖中各校驗節(jié)點和變量節(jié)點的連接關(guān)系,生成第一預(yù)設(shè)個數(shù)的擴展校驗矩陣。
第二方面,本發(fā)明實施例提供了一種低密度奇偶校驗碼的編碼裝置,包括:
獲取單元,用于獲取預(yù)設(shè)碼長碼字,對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)碼長碼字的一個碼字為校驗矩陣的一個變量節(jié)點;
確定單元,用于根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特;其中,所述出錯碼字比特的出錯次數(shù)大于所述可信度碼字比特的出錯次數(shù);
添加單元,用于在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣;
編碼單元,用于根據(jù)所述擴展校驗矩陣,對原始信息比特進行編碼,得到所述擴展校驗矩陣對應(yīng)的碼字,所述原始信息比特為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特,且所述原始信息比特個數(shù)為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特個數(shù)減去第一預(yù)設(shè)個數(shù)的差。
可選的,所述獲取單元具體用于,通過預(yù)設(shè)算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)算法包括:蒙特卡洛算法及最小和譯碼算法。
可選的,所述獲取單元具體用于:
在預(yù)設(shè)信噪比時,通過最小和譯碼算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)迭代譯碼,得到所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平;
根據(jù)所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平,通過蒙特卡洛算法,估計所述每個碼字對應(yīng)的碼字比特的錯誤水平,生成所述預(yù)設(shè)碼長碼字的錯誤水平列表。
第三方面,本發(fā)明實施例提供了一種電子設(shè)備,包括處理器、通信接口、存儲器和通信總線,其中,處理器,通信接口,存儲器通過通信總線完成相互間的通信;
存儲器,用于存放計算機程序;
處理器,用于執(zhí)行存儲器上所存放的程序時,實現(xiàn)本發(fā)明所述的低密度奇偶校驗碼的編碼方法步驟。
第四方面,本發(fā)明實施例提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)內(nèi)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)本發(fā)明所述的低密度奇偶校驗碼的編碼方法步驟。
本發(fā)明實施例提供的一種低密度奇偶校驗碼的編碼方法、裝置、電子設(shè)備及介質(zhì),可以獲取預(yù)設(shè)碼長碼字,對該預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到該預(yù)設(shè)碼長碼字的錯誤水平列表;根據(jù)預(yù)設(shè)碼長碼字的長度,確定錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特;在預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣,進一步,基于擴展校驗矩陣,對原始信息比特進行編碼,得到該擴展校驗矩陣對應(yīng)的碼字。
本方案中,通過在預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加預(yù)設(shè)個數(shù)的校驗節(jié)點,生成擴展校驗矩陣。這樣,可以通過該擴展矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼的過程,打破ldpc碼迭代算法進行譯碼中的陷阱集,降低誤碼平臺,進一步,生成的碼字相對于通過校驗矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼生成的碼字,誤碼率低,可見,本發(fā)明實施例降低了誤碼率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為規(guī)則碼的校驗矩陣的一種示意圖;
圖2為圖1所示的校驗矩陣對應(yīng)的tanner圖;
圖3為tanner圖中存在的短環(huán)示意圖;
圖4為tanner圖中存在的陷阱集的示意圖;
圖5為本發(fā)明實施例提供的低密度奇偶校驗碼的編碼方法的一種流程圖;
圖6為本發(fā)明實施例提供的確定錯誤的碼字比特的示意圖;
圖7為本發(fā)明實施例提供的各碼字的錯誤水平示意圖;
圖8為本發(fā)明實施例提供的擴展二分圖的示意圖;
圖9為本發(fā)明實施例提供的添加不同數(shù)量的校驗節(jié)點后誤碼率的仿真圖;
圖10為本發(fā)明實施例提供的低密度奇偶校驗碼的編碼裝置的結(jié)構(gòu)示意圖;
圖11為本發(fā)明實施例還提供了一種電子設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
實際應(yīng)用中,低密度奇偶校驗碼ldpc的校驗矩陣h一定是稀疏矩陣,即h中0的個數(shù)遠比1的個數(shù)多,所以低密度奇偶校驗碼ldpc可以實現(xiàn)快速線性編碼。通常,在對ldpc譯碼過程中,陷阱集的形成是由于tanner圖中存在短環(huán),而導(dǎo)致譯碼失敗的錯誤變量節(jié)點的集合成為陷阱集,其中,陷阱集可以表示為t(a,b),如圖4所示,圓形表示變量節(jié)點,正方形表示校驗節(jié)點,當(dāng)譯碼器進入陷阱狀態(tài)時,陷阱集中的變量節(jié)點vt=[v1,v2,v3,v4]同時處于錯誤狀態(tài),并且,具有偶數(shù)度(與vt=[v1,v2,v3,v4]連接的邊的數(shù)目為偶數(shù))的校驗節(jié)點ct=[c2,c3,c4,c5,c6]均滿足校驗方程,校驗節(jié)點ct=[c2,c3,c4,c5,c6]在迭代譯碼過程中向vt=[v1,v2,v3,v4]傳播錯誤消息,具有奇數(shù)度的校驗節(jié)點[c1,c7]不滿足校驗方程,接收陷阱集以外其他變量節(jié)點的消息,阻止錯誤消息傳播,但由于數(shù)量較少不足以糾正校驗節(jié)點vt=[v1,v2,v3,v4]的錯誤,在迭代過程中,錯誤消息不斷得到增強,最終導(dǎo)致譯碼失敗。
為了打破ldpc碼迭代算法進行譯碼中的陷阱集,降低誤碼平臺,降低誤碼率,本發(fā)明實施例提供了一種低密度奇偶校驗碼的編碼方法的過程,如圖5所示,該過程可以包括以下步驟:
s501,獲取預(yù)設(shè)碼長碼字,對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表。
本發(fā)明實施例所提供的低密度奇偶校驗碼的編碼方法可以應(yīng)用于低密度奇偶校驗碼的編譯碼系統(tǒng)中,具體的,應(yīng)用于低密度奇偶校驗碼的編譯碼系統(tǒng)中的一編碼裝置對應(yīng)的應(yīng)用程序。
實際應(yīng)用中,校驗矩陣的每列代表一個變量節(jié)點,每行代表一個校驗節(jié)點,一個校驗矩陣對應(yīng)一個校驗方程組,例如,圖1所示的校驗矩陣的校驗方程可以表示為:
其中,vj表示校驗矩陣中第j列的變量節(jié)點,
通常,校驗矩陣可以用于確定低密度奇偶校驗碼ldpc碼。在規(guī)則碼校驗矩陣h={dv,dc}(n,k)中,校驗矩陣h的大小可以為m×n,其中,m≥n-k表示校驗節(jié)點或校驗方程的個數(shù),而且只有當(dāng)h滿秩時,才有m=n-k,當(dāng)h滿秩時,規(guī)則碼的碼率r=k/n=1-dv/dc。
其中,預(yù)設(shè)碼長碼字的一個碼字為校驗矩陣的一個變量節(jié)點。預(yù)設(shè)碼長碼字是通過校驗矩陣編碼之后所得到的碼字,校驗矩陣的變量節(jié)點的個數(shù)決定預(yù)設(shè)碼長碼字中碼字的個數(shù)。
例如,預(yù)設(shè)碼長碼字可以為:{3,6}(96,48),其中,48表示未編碼前的信息位比特,96表示編碼后的碼字(其中,包括48個校驗位比特和48個信息位比特),也即96個變量節(jié)點。
本發(fā)明實施例中,在一定信噪比下,對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)(例如,100000次)的譯碼,得到到該預(yù)設(shè)碼長碼字的錯誤水平列表。錯誤水平列表表示預(yù)設(shè)碼長碼字中的每個碼字與該碼字的錯誤次數(shù)的對應(yīng)關(guān)系表。例如,在4db信噪比下,對預(yù)設(shè)碼長碼字進行100000次的迭代譯碼,可以計算得到該預(yù)設(shè)碼長碼字的錯誤水平列表。
具體的,可以通過預(yù)設(shè)算法對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到該預(yù)設(shè)碼長碼字的錯誤水平列表。
其中,預(yù)設(shè)算法包括:蒙特卡洛算法及最小和譯碼算法。通常,確定譯碼過程中陷阱集是比較困難的,本發(fā)明實施例在打破陷阱集時,采用蒙特卡洛算法搜索最容易出錯的碼字和可信度最高的碼字,由于最容易出錯的碼字往往包含在很多的陷阱集中,導(dǎo)致誤碼平臺。本發(fā)明實施例避免直接去研究復(fù)雜的陷阱集,即不需要預(yù)先獲知陷阱集內(nèi)部的具體信息,就可以打破陷阱集,進而降低了計算的復(fù)雜度,提高算法的可操作性,并且實現(xiàn)了打破陷阱集的有益效果。
本發(fā)明實施例中,可以通過蒙特卡洛算法及最小和譯碼算法對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,可以獲得該預(yù)設(shè)碼長碼字的錯誤水平列表,也就是通過蒙特卡洛算法及最小和譯碼算法兩個算法對編碼后的變量節(jié)點進行預(yù)設(shè)次數(shù)的譯碼,得到變量節(jié)點的錯誤水平列表。
其中,通過預(yù)設(shè)算法對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到預(yù)設(shè)碼長碼字的錯誤水平列表的過程可以為:在預(yù)設(shè)信噪比時,通過最小和譯碼算法對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)迭代譯碼,得到該預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平,進一步,根據(jù)預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平,通過蒙特卡洛算法,估計每個碼字對應(yīng)的碼字比特的錯誤水平,生成該預(yù)設(shè)碼長碼字的錯誤水平列表。
在對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼時,首先,要選擇譯碼過程所處的信噪比的環(huán)境,因為不同信噪比下,每個碼字對應(yīng)的碼字比特的錯誤水平存在差別,所以,可以在預(yù)設(shè)信噪比時,對預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的迭代譯碼,可以得到每個碼字對應(yīng)的碼字比特的出錯次數(shù)。圖6為本發(fā)明實施例所提供的通過預(yù)設(shè)算法確定錯誤的碼字比特的示意圖,其中,圓形表示變量節(jié)點,正方形表示校驗節(jié)點,圓形中的線條數(shù)目越多代表變量節(jié)點的錯誤次數(shù)越高。
具體的,可以將編碼后的碼字和編碼后的碼字進行比對,定位譯碼錯誤的碼字比特。例如,編碼前有48個信息比特,編碼后有96個碼字,其中,96個碼字中包括48個校驗位比特,48個信息位比特,傳輸后96個碼字,譯碼后是96個碼字比特,將編碼后和譯碼后的碼字進行比對,定位譯碼錯誤的比特。
例如,對預(yù)設(shè)碼長碼字{3,6}(96,48),在4db的信噪比下時,采用預(yù)設(shè)算法進行100000次的迭代譯碼,得到錯誤水平列表可以為
s502,根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特。
其中,出錯碼字比特的出錯次數(shù)大于可信度碼字比特的出錯次數(shù)。
本發(fā)明實施例中,可以基于預(yù)設(shè)碼長碼字的長度,確定錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特以及第二預(yù)設(shè)個數(shù)的可信度碼字比特,例如,當(dāng)預(yù)設(shè)碼長碼字的長度在一定范圍內(nèi)時,可以選擇第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,即當(dāng)預(yù)設(shè)碼長碼字的長度為a值時,可以選擇a個出錯碼字比特,當(dāng)預(yù)設(shè)碼長碼字的長度為b值時,可以選擇b個出錯碼字比特。預(yù)設(shè)碼長碼字的長度越長,第一預(yù)設(shè)個數(shù)可以越大。
具體的,針對錯誤水平列表中的碼字比特,按每個碼字比特出錯次個數(shù)對錯誤水平列表中的碼字比特進行降序排列,并獲得降序排列后所述錯誤水平列表中的第一預(yù)設(shè)個數(shù)的出錯碼字比特,同時,針對錯誤水平列表中的碼字比特,按每個碼字比特出錯次數(shù)對錯誤水平列表中的碼字比特進行升序排列,并獲得升序排列后錯誤水平列表中的第二預(yù)設(shè)個數(shù)的可信度碼字比特。
因為每個碼字比特對應(yīng)一個出錯次數(shù),將錯誤水平列表中所有碼字比特按出錯次數(shù)進行排序,并且按照碼字比特的出錯次數(shù)降序排列或者升序排列,在降序排列后的第一錯誤水平列表中,查找第一預(yù)設(shè)個數(shù)的出錯碼字比特和第二預(yù)設(shè)個數(shù)的可信度碼字比特。
其中,第二預(yù)設(shè)個數(shù)為預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中每行中非零元素的個數(shù)減去1之后的差,預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣為編碼預(yù)設(shè)碼長碼字的校驗矩陣。例如,校驗矩陣中的每行非零元素的個數(shù)為dc,則第二預(yù)設(shè)個數(shù)為dc-1。
例如,錯誤水平列表為
又例如,錯誤水平列表為
s503,在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣。
本發(fā)明實施例中,在預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中的校驗節(jié)點中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點。同時,將第一預(yù)設(shè)個數(shù)的出錯碼字比特和第二預(yù)設(shè)個數(shù)的可信度碼字比特與添加的校驗節(jié)點連接,可以生成新的校驗矩陣。
具體的,可以獲取預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣的編碼二分圖,同時,將編碼二分圖中的變量節(jié)點按照每個變量節(jié)點在錯誤水平列表中的每個變量節(jié)點出錯次數(shù)進行升序或者降序排列,進一步,在排列后的編碼二分圖中的校驗節(jié)點之后添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,將第一預(yù)設(shè)個數(shù)的校驗節(jié)點中的每個校驗節(jié)點連接至第一預(yù)設(shè)個數(shù)的出錯碼字比特和第二預(yù)設(shè)個數(shù)的可信度碼字比特中的每個碼字比特,最后可以生成編碼二分圖對應(yīng)的擴展二分圖,基于所獲得的擴展二分圖中的各校驗節(jié)點和變量節(jié)點的連接關(guān)系,生成第一預(yù)設(shè)個數(shù)的擴展校驗矩陣。
其中,編碼二分圖包括:校驗節(jié)點、變量節(jié)點及連接校驗節(jié)點和變量節(jié)點的邊。
每個校驗矩陣都對應(yīng)一個編碼二分圖,在獲得校驗矩陣的編碼二分圖之后,根據(jù)錯誤水平列表中每個變量節(jié)點的出錯次數(shù)對編碼二分圖中的變量節(jié)點進行重新排列,其中,編碼二分圖中的變量節(jié)點即為預(yù)設(shè)碼長碼字。
同時,根據(jù)添加的校驗節(jié)點的個數(shù)、第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特中的每個碼字比特,可以生成擴展二分圖,其中,每個添加的校驗節(jié)點只能與第一預(yù)設(shè)個數(shù)的出錯碼字比特中的一個碼字比特相連接,將每個添加的校驗節(jié)點與第二預(yù)設(shè)個數(shù)的可信度碼字比特中的全部或者部分碼字比特連接。例如,當(dāng)添加一個校驗節(jié)點為cadd1,則將cadd1與出錯次數(shù)最高的變量節(jié)點相連接,并且該校驗節(jié)點cadd1連接至dc-1個可信度的碼字比特。圖7結(jié)合圖8,添加兩個校驗節(jié)點,兩個校驗節(jié)點可以分別連接{91,35,83,8,19,80}和{65,24,40,57,48,53}。
本發(fā)明實施例中,通過新添加的校驗節(jié)點連接最容易出錯的碼字和一組可信度最高的碼字比特,一方面可以直接將爭取的信息傳遞給陷阱集中譯碼錯誤的變量節(jié)點,另一方面,可以延長并添加外部正確信息通過迭代譯碼過程積累的路徑,加強傳輸至陷阱集內(nèi)容正確信息的置信度,使得陷阱集內(nèi)部的錯誤碼字得以恢復(fù),進而打破整個陷阱集的結(jié)構(gòu),極大的改善陷阱集對譯碼性能的不良影響,降低了誤碼率。
如圖8所示,本發(fā)明實施例所提供的擴展二分圖的示意圖,其中,圓形表示變量節(jié)點,正方形表示校驗節(jié)點,圓形內(nèi)的線條數(shù)目越多代表變量節(jié)點的錯誤次數(shù)越高,正方形中的c1、c2、...cn為校驗矩陣的校驗節(jié)點,caddi(i=1、2或3)表示添加的校驗節(jié)點,圖中示出了添加的三個校驗節(jié)點,分別為:cadd1、cadd2、cadd3,但不限于此??梢姡砑拥男r灩?jié)點的個數(shù)等于第一預(yù)設(shè)個數(shù)的出錯碼字比特,這樣,每個添加的校驗節(jié)點分別與第一預(yù)設(shè)個數(shù)的出錯碼字比特中的一個碼字比特相連接,且每個添加的校驗節(jié)點分別和dc-1個可信度的碼字比特相連接,進而,可以根據(jù)擴展二分圖中各校驗節(jié)點和變量節(jié)點的連接關(guān)系,生成擴展校驗矩陣。
本發(fā)明實施例中,對于不同的預(yù)設(shè)碼長碼字的ldpc碼字,在添加校驗節(jié)點時,新添加的校驗節(jié)點的個數(shù)應(yīng)該與預(yù)設(shè)碼長碼字的長度基本成正比例,也就是當(dāng)預(yù)設(shè)碼長碼字的長度越長,在校驗矩陣中可以添加更多的校驗節(jié)點,來更好的改善校驗矩陣的碼字結(jié)構(gòu),進一步提高譯碼性能和降低誤碼率。
s504,根據(jù)所述擴展校驗矩陣,對原始信息比特進行編碼,得到所述擴展校驗矩陣對應(yīng)的碼字。
其中,原始信息比特為預(yù)設(shè)碼長碼字在未編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特,且該原始信息比特個數(shù)為預(yù)設(shè)碼長碼字在未編碼前的信息比特個數(shù)減去第一預(yù)設(shè)個數(shù)的差。
本發(fā)明實施例中,可以將擴展校驗矩陣作為新的編碼結(jié)構(gòu),對預(yù)設(shè)碼長碼字在為編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特進行編碼,得到該擴展校驗矩陣對應(yīng)的碼字。
如圖9所示,在加成性高斯白噪聲(additivewhitegaussiannoise,awgn)信道下,在校驗矩陣中,未添加校驗節(jié)點前、添加一個校驗節(jié)點及添加兩個校驗節(jié)點之后,譯碼誤碼率的仿真圖。
本發(fā)明實施例中,通過在預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加預(yù)設(shè)個數(shù)的校驗節(jié)點,生成擴展校驗矩陣。這樣,可以通過該擴展矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼的過程,打破ldpc碼迭代算法進行譯碼中的陷阱集,降低誤碼平臺,進一步,生成的碼字相對于通過校驗矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼生成的碼字,錯誤平臺低,可見,本發(fā)明實施例降低了誤碼率和錯誤平臺。
相應(yīng)于上面的方法實施例,本發(fā)明實施例還提供了相應(yīng)的裝置實施例。圖10為本發(fā)明實施例提供了一種低密度奇偶校驗碼的編碼裝置,該裝置包括:
獲取單元1010,用于獲取預(yù)設(shè)碼長碼字,對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)碼長碼字的一個碼字為校驗矩陣的一個變量節(jié)點;
確定單元1020,用于根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特;其中,所述出錯碼字比特的出錯次數(shù)大于所述可信度碼字比特的出錯次數(shù);
添加單元1030,用于在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣;
編碼單元1040,用于根據(jù)所述擴展校驗矩陣,對原始信息比特進行編碼,得到所述擴展校驗矩陣對應(yīng)的碼字,所述原始信息比特為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特,且所述原始信息比特個數(shù)為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特個數(shù)減去第一預(yù)設(shè)個數(shù)的差。
本發(fā)明實施例中,通過在預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加預(yù)設(shè)個數(shù)的校驗節(jié)點,生成擴展校驗矩陣。這樣,可以通過該擴展矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼的過程,打破ldpc碼迭代算法進行譯碼中的陷阱集,降低誤碼平臺,進一步,生成的碼字相對于通過校驗矩陣對預(yù)設(shè)碼長碼字在未編碼前的碼字進行編碼生成的碼字,錯誤平臺低,可見,本發(fā)明實施例降低了誤碼率和錯誤平臺。
可選的,所述獲取單元具體用于,通過預(yù)設(shè)算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)算法包括:蒙特卡洛算法及最小和譯碼算法。
可選的,所述獲取單元具體用于:
在預(yù)設(shè)信噪比時,通過最小和譯碼算法對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)迭代譯碼,得到所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平;
根據(jù)所述預(yù)設(shè)碼長碼字中每個碼字對應(yīng)的碼字比特的錯誤水平,通過蒙特卡洛算法,估計所述每個碼字對應(yīng)的碼字比特的錯誤水平,生成所述預(yù)設(shè)碼長碼字的錯誤水平列表。
可選的,所述確定單元包括:
降序子單元(圖中未示出),用于針對所述錯誤水平列表中的碼字比特,按每個碼字比特出錯次個數(shù)對所述錯誤水平列表中的碼字比特進行降序排列,并獲得降序排列后所述錯誤水平列表中的第一預(yù)設(shè)個數(shù)的出錯碼字比特;
升序子單元(圖中未示出),用于針對所述錯誤水平列表中的碼字比特,按每個碼字比特出錯次數(shù)對所述錯誤水平列表中的碼字比特進行升序排列,并獲得升序排列后所述錯誤水平列表中的第二預(yù)設(shè)個數(shù)的可信度碼字比特;所述第二預(yù)設(shè)個數(shù)為所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中每行中非零元素的個數(shù)減去1之后的差,所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣為編碼所述預(yù)設(shè)碼長碼字的校驗矩陣。
可選的,所述添加單元包括:
獲取子單元(圖中未示出),用于獲取所述所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣的編碼二分圖,其中,所述編碼二分圖包括:校驗節(jié)點、變量節(jié)點及連接所述校驗節(jié)點和所述變量節(jié)點的邊;
排序子單元(圖中未示出),用于將所述編碼二分圖中的變量節(jié)點按照每個變量節(jié)點在所述錯誤水平列表中的每個變量節(jié)點出錯次數(shù)進行升序或者降序排列;
添加子單元(圖中未示出),用于在排列后的編碼二分圖中的校驗節(jié)點之后添加所述所述第一預(yù)設(shè)個數(shù)的校驗節(jié)點;
生成子單元(圖中未示出),用于將所述第一預(yù)設(shè)個數(shù)的校驗節(jié)點中的每個校驗節(jié)點連接至所述第一預(yù)設(shè)個數(shù)的出錯碼字比特和所述第二預(yù)設(shè)個數(shù)的可信度碼字比特中的每個碼字比特,生成所述編碼二分圖對應(yīng)的擴展二分圖;
擴展子單元(圖中未示出),用于根據(jù)所述擴展二分圖中各校驗節(jié)點和變量節(jié)點的連接關(guān)系,生成第一預(yù)設(shè)個數(shù)的擴展校驗矩陣。
本發(fā)明實施例還提供了一種電子設(shè)備,如圖11所示,包括處理器111、通信接口112、存儲器113和通信總線114,其中,處理器111,通信接口112,存儲器113通過通信總線114完成相互間的通信,
存儲器113,用于存放計算機程序;
處理器111,用于執(zhí)行存儲器113上所存放的程序時,實現(xiàn)如下步驟:
獲取預(yù)設(shè)碼長碼字,對所述預(yù)設(shè)碼長碼字進行預(yù)設(shè)次數(shù)的譯碼,得到所述預(yù)設(shè)碼長碼字的錯誤水平列表;所述預(yù)設(shè)碼長碼字的一個碼字為校驗矩陣的一個變量節(jié)點;
根據(jù)所述預(yù)設(shè)碼長碼字的長度,確定所述錯誤水平列表中第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特;其中,所述出錯碼字比特的出錯次數(shù)大于所述可信度碼字比特的出錯次數(shù);
在所述預(yù)設(shè)碼長碼字對應(yīng)的校驗矩陣中添加第一預(yù)設(shè)個數(shù)的校驗節(jié)點,并根據(jù)所述第一預(yù)設(shè)個數(shù)的出錯碼字比特及第二預(yù)設(shè)個數(shù)的可信度碼字比特,生成所述校驗矩陣對應(yīng)的第一預(yù)設(shè)個數(shù)的擴展校驗矩陣;
根據(jù)所述擴展校驗矩陣,對原始信息比特進行編碼,得到所述擴展校驗矩陣對應(yīng)的碼字,所述原始信息比特為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特減去第一預(yù)設(shè)個數(shù)信息比特的信息比特,且所述原始信息比特個數(shù)為所述預(yù)設(shè)碼長碼字在未編碼前的信息比特個數(shù)減去第一預(yù)設(shè)個數(shù)的差。
上述電子設(shè)備提到的通信總線可以是外設(shè)部件互連標(biāo)準(zhǔn)(peripheralpomponentinterconnect,簡稱pci)總線或擴展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(extendedindustrystandardarchitecture,簡稱eisa)總線等。該通信總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
通信接口用于上述電子設(shè)備與其他設(shè)備之間的通信。
存儲器可以包括隨機存取存儲器(randomaccessmemory,簡稱ram),也可以包括非易失性存儲器(non-volatilememory),例如至少一個磁盤存儲器。可選的,存儲器還可以是至少一個位于遠離前述處理器的存儲裝置。
上述的處理器可以是通用處理器,包括中央處理器(centralprocessingunit,簡稱cpu)、網(wǎng)絡(luò)處理器(networkprocessor,簡稱np)等;還可以是數(shù)字信號處理器(digitalsignalprocessing,簡稱dsp)、專用集成電路(applicationspecificintegratedcircuit,簡稱asic)、現(xiàn)場可編程門陣列(field-programmablegatearray,簡稱fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。
本發(fā)明實施例還提供了一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)內(nèi)存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)本發(fā)明所述的低密度奇偶校驗碼的編碼方法步驟。
對于裝置/電子設(shè)備/存儲介質(zhì)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關(guān)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。