一種高速ldpc譯碼器的實(shí)現(xiàn)方法
【專利摘要】本發(fā)明提供一種高速LDPC譯碼器的實(shí)現(xiàn)方法,所述方法包括在譯碼過程中更新校驗(yàn)節(jié)點(diǎn)信息和更新變量節(jié)點(diǎn)信息,根據(jù)編碼校驗(yàn)矩陣所滿足的行重和列重,選取能夠同時(shí)處理的校驗(yàn)節(jié)點(diǎn)信息和變量節(jié)點(diǎn)信息個(gè)數(shù)與填充格式;對得到的校驗(yàn)節(jié)點(diǎn)信息和變量節(jié)點(diǎn)信息進(jìn)行循環(huán)移位重新排列,并對重新排列后的數(shù)據(jù)使用SIMD指令進(jìn)行處理,最后得到更新后的校驗(yàn)節(jié)點(diǎn)信息和變量節(jié)點(diǎn)信息。本發(fā)明所述的高速LDPC譯碼器的實(shí)現(xiàn)方法設(shè)計(jì)周期短,成本低,修改和擴(kuò)展容易,并且解決了實(shí)現(xiàn)LDPC譯碼的吞吐量較小的問題,加快譯碼速率。
【專利說明】—種高速LDPC譯碼器的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于無線通信信道編碼領(lǐng)域,涉及一種譯碼器的實(shí)現(xiàn)方法,特別是涉及一種高速LDPC譯碼器的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]利用虛擬無線電技術(shù)實(shí)現(xiàn)含LDPC碼的系統(tǒng)相關(guān)報(bào)導(dǎo)和專利很少。虛擬無線電的概念是1999年V.Bose等人提出的,它的目標(biāo)是以通用計(jì)算機(jī)的計(jì)算能力代替專用器件來完成無線通信中的數(shù)字信號處理過程。與基于專用可編程器件架構(gòu)的軟件無線電相比,虛擬無線電系統(tǒng)具有開發(fā)成本低、周期短、升級快捷、配置靈活的特點(diǎn),可支持現(xiàn)有的多種模式的無線網(wǎng)絡(luò),還可以通過擴(kuò)展設(shè)計(jì)支持未來的網(wǎng)絡(luò)模式。
[0003]虛擬無線電系統(tǒng)實(shí)現(xiàn)的關(guān)鍵點(diǎn)是在通用計(jì)算機(jī)上實(shí)現(xiàn)物理層實(shí)時(shí)信號處理,而譯碼算法的計(jì)算量在整個(gè)物理層算法中所占比例較大,實(shí)時(shí)譯碼是虛擬無線電系統(tǒng)實(shí)現(xiàn)的重中之重。LDPC(Low_density Parity-check,低密度奇偶校驗(yàn))碼是Gallager于1963年提出的一種線性分組碼。設(shè)碼長為N,信息位長度為K,校驗(yàn)位長度為M=N-K,則校驗(yàn)矩陣H是一個(gè)M列N行的矩陣,校驗(yàn)矩陣H具有稀疏性。LDPC碼性能可逼近香農(nóng)限,并且具有譯碼復(fù)雜度低、可并行譯碼等特點(diǎn),在信道條件較差的無線通信中展現(xiàn)出了巨大的應(yīng)用前景。目前有LDPC碼應(yīng)用于很多無線通信系統(tǒng)中,如IEEE 802.lln/802.16e、CMMB、DVB等。
[0004]LDPC碼用Tanner圖表不,則Tanner圖中有變量節(jié)點(diǎn)(Variable Node, VN)和校驗(yàn)節(jié)點(diǎn)(Check Node, CN)。與每個(gè)校驗(yàn)節(jié)點(diǎn)i相連的有b個(gè)變量節(jié)點(diǎn),與每個(gè)變量節(jié)點(diǎn)j相連的有a個(gè)校驗(yàn)節(jié)點(diǎn)。LDPC的經(jīng)典譯碼算法為基于置信度傳播迭代譯碼(BP算法),也稱為和積算法。在BP算法的基礎(chǔ)上,簡化并進(jìn)行修正后得到Normalized Min_Sum算法,其中,匪S算法核心部分為迭代處理。
[0005]由于LDPC譯碼算法計(jì)算量較大,現(xiàn)有的LDPC譯碼器多數(shù)采用FPGA和ASIC實(shí)現(xiàn),設(shè)計(jì)周期長,成本高,修改和擴(kuò)展較難。部分LDPC譯碼器是基于通用處理器實(shí)現(xiàn)的,如基于GPU和IBM CELL Broadband Engine (BE),但是吞吐量較小,不滿足實(shí)際通信系統(tǒng)的需求。目前,隨著通用計(jì)算機(jī)領(lǐng)域的發(fā)展,支持SMD指令集的通用多核CPU已經(jīng)普及,利用SMD指令實(shí)現(xiàn)LDPC譯碼算法的并行化是提高譯碼器吞吐量的重要手段。
[0006]但是,現(xiàn)有的LDPC譯碼器的實(shí)現(xiàn)方法有如下不足:
[0007]I)現(xiàn)有的LDPC譯碼器多數(shù)是FPGA和ASIC實(shí)現(xiàn),這樣的實(shí)現(xiàn)設(shè)計(jì)周期長,成本高,修改和擴(kuò)展較難;
[0008]2)部分LDPC譯碼器是基于通用處理器實(shí)現(xiàn)的,如基于GPU和IBM CELLBroadbandEngine (BE),但是吞吐量較小,不滿足實(shí)際通信系統(tǒng)的需求;
[0009]3)現(xiàn)有的LDPC譯碼器并行結(jié)構(gòu)不適合通用多核CPU實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0010]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種高速LDPC譯碼器結(jié)的實(shí)現(xiàn)方法,用于解決現(xiàn)有技術(shù)中LDPC譯碼器修改和擴(kuò)展較難,以及吞吐量較小的問題。
[0011]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種高速LDPC譯碼器的實(shí)現(xiàn)方法,所述高速LDPC譯碼器的實(shí)現(xiàn)方法包括:
[0012]更新校驗(yàn)節(jié)點(diǎn)信息的步驟;該步驟包括:令t*b個(gè)變量節(jié)點(diǎn)信息存儲在寬型數(shù)據(jù)中,并將存儲的變量節(jié)點(diǎn)信息按b字節(jié)一組進(jìn)行組內(nèi)循環(huán)移位,得到b-Ι個(gè)重排后的數(shù)據(jù),并對重排后的數(shù)據(jù)使用SMD指令進(jìn)行處理,得到更新的校驗(yàn)節(jié)點(diǎn)信息;其中,t表示需更新的校驗(yàn)節(jié)點(diǎn)信息的個(gè)數(shù),b表示與每個(gè)校驗(yàn)節(jié)點(diǎn)相連的變量節(jié)點(diǎn)的個(gè)數(shù);
[0013]更新變量節(jié)點(diǎn)信息并更新判決信息的步驟;該步驟包括:令s*a個(gè)校驗(yàn)節(jié)點(diǎn)信息存儲在寬型數(shù)據(jù)中,得到校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù),并將存儲的校驗(yàn)節(jié)點(diǎn)信息按a個(gè)字節(jié)一組進(jìn)行組內(nèi)循環(huán),得到a-Ι個(gè)重排后的數(shù)據(jù),并對a-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令進(jìn)行處理,得到更新的變量節(jié)點(diǎn)信息,對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列;其中,s表示需更新的變量節(jié)點(diǎn)信息的個(gè)數(shù),a表示與每個(gè)變量節(jié)點(diǎn)相連的校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù)。
[0014]優(yōu)選地,所述更新校驗(yàn)節(jié)點(diǎn)信息的步驟還包括:對b-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令集中的指令求對應(yīng)每個(gè)byte位置上b-Ι個(gè)數(shù)據(jù)中的最小值和符號乘積,并將每個(gè)byte位置上的最小值和符號乘積相乘,最后乘以歸一化因子。
[0015]優(yōu)選地,所述更新變量節(jié)點(diǎn)信息并根性判決信息的步驟還包括:對a-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令集中的指令求對應(yīng)每個(gè)byte位置上a-Ι個(gè)數(shù)據(jù)的和;令已知的變量節(jié)點(diǎn)的先驗(yàn)信息存儲在寬型數(shù)據(jù)中,得到變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù),使用SIMD指令集中的指令求a-Ι個(gè)重排后的數(shù)據(jù)求和得到對應(yīng)每個(gè)byte位置上a_l個(gè)數(shù)據(jù)的和與所得變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和,得到更新的變量節(jié)點(diǎn)信息數(shù)據(jù),最后使用SIMD指令中的指令求所得更新的變量節(jié)點(diǎn)信息數(shù)據(jù)與校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和,得到變量節(jié)點(diǎn)的后驗(yàn)概率;最后對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列。
[0016]優(yōu)選地,所使用的SIMD指令集中的指令包括求和指令、求絕對值指令、求最小值指令、求位異或指令、和求乘指令。
[0017]優(yōu)選地,更新校驗(yàn)節(jié)點(diǎn)信息中循環(huán)移位次數(shù)為b-Ι次。
[0018]優(yōu)選地,更新變量節(jié)點(diǎn)信息中循環(huán)移位次數(shù)為a-Ι次。
[0019]優(yōu)選地,所述方法還包括初始化變量節(jié)點(diǎn)。
[0020]優(yōu)選地,所述方法還包括校驗(yàn)判決,判斷校驗(yàn)方程是否非零且是否沒有達(dá)到最大迭代次數(shù),若是,則返回更新校驗(yàn)節(jié)點(diǎn)信息的步驟;若否,輸出判決結(jié)果。
[0021]優(yōu)選地,所述方法還包括輸出判決結(jié)果。
[0022]優(yōu)選地,所述寬型數(shù)據(jù)包括ml28i型數(shù)據(jù)和m256i型數(shù)據(jù)。
[0023]如上所述,本發(fā)明所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,具有以下有益效果:
[0024]1、加快了譯碼速率;
[0025]2、本發(fā)明解決了 LDPC譯碼器吞吐量小的問題;
[0026]3、本發(fā)明所提供的LDPC譯碼器,設(shè)計(jì)周期短,成本低、容易修改和擴(kuò)展;
[0027]4、本發(fā)明可應(yīng)用的范圍廣,可應(yīng)用于利用LDPC碼作為信道編碼的無線通信協(xié)議的虛擬無線電系統(tǒng),例如,IEEE 802.lln/802.16e、DVB、CMMB等?!緦@綀D】
【附圖說明】
[0028]圖1顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法的方法流程圖。
[0029]圖2顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法中更新校驗(yàn)節(jié)點(diǎn)信息的方法流程圖。
[0030]圖3顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法的更新校驗(yàn)節(jié)點(diǎn)信息具體運(yùn)行過程示意圖。
[0031]圖4顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法中更新變量節(jié)點(diǎn)信息的方法流程圖。
[0032]圖5顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法采用的定點(diǎn)化譯碼算法與浮點(diǎn)型譯碼算法誤碼性能比較示意圖。
[0033]圖6顯示為本發(fā)明的高速LDPC譯碼器的實(shí)現(xiàn)方法在Intel Core i73960X平臺上使用單線程、6線程以及12線程譯碼器的吞吐量性能比較示意圖。
【具體實(shí)施方式】
[0034]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0035]請參閱附圖。需要說明的是,本實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0036]下面結(jié)合實(shí)施例和附圖對本發(fā)明進(jìn)行詳細(xì)說明。
[0037]本發(fā)明提供的一種高速LDPC譯碼器的實(shí)現(xiàn)方法,該方法是基于支持SIMD指令X86處理器實(shí)現(xiàn)的,所述LDPC譯碼器支持行重列重固定的LDPC碼,可在虛擬無線電系統(tǒng)中使用,也可以在仿真時(shí)作為加速核使用。
[0038]本實(shí)施例提供的一種實(shí)現(xiàn)高速LDPC譯碼器的方法,并且該方法以CMMB的LDPC碼的1/2碼率為例,其中碼字長度為9216,對應(yīng)的信息比特長度為4608。校驗(yàn)矩陣是準(zhǔn)循環(huán)矩陣H,H具有固定的行重b和列重a,以1/2碼率為例,即b=b,a=3 ;取匪S算法中的歸一化因子Θ =0.75,相當(dāng)于二進(jìn)制數(shù)據(jù)與之右移兩位的結(jié)果相減,更方便定點(diǎn)化的實(shí)現(xiàn)。整個(gè)譯碼算法過程中,需定點(diǎn)化的數(shù)據(jù)為譯碼輸入LLR (對數(shù)似然比)和中間變量Lq (變量節(jié)點(diǎn)信息)及Lr (校驗(yàn)節(jié)點(diǎn)信息)。根據(jù)一系列仿真,可確定定點(diǎn)化位寬為8位,一個(gè)128bit位寬型數(shù)據(jù)(ml28i)可存儲16個(gè)8bit數(shù)據(jù),一個(gè)256bit位寬型數(shù)據(jù)(m256i)可存儲32個(gè)8bit數(shù)據(jù)。
[0039]所述高速LDPC譯碼器的實(shí)現(xiàn)方法中包括校驗(yàn)節(jié)點(diǎn)的更新和變量節(jié)點(diǎn)的更新,其中校驗(yàn)節(jié)點(diǎn)的更新過程為:
[0040]有M個(gè)校驗(yàn)節(jié)點(diǎn),每個(gè)校驗(yàn)節(jié)點(diǎn)與b個(gè)變量節(jié)點(diǎn)相連,令需要更新的t個(gè)校驗(yàn)節(jié)點(diǎn)信息,t=[16/b](使用ml28i型數(shù)據(jù))或t = [32/b](使用m256i型數(shù)據(jù)),使用一個(gè)ml28i型數(shù)據(jù)或m256i型數(shù)據(jù)存儲t*b個(gè)變量節(jié)點(diǎn)信息,每次操作即能夠同時(shí)更新t個(gè)校驗(yàn)節(jié)點(diǎn)信息;
[0041]變量節(jié)點(diǎn)信息的更新過程為:
[0042]有N個(gè)校驗(yàn)節(jié)點(diǎn),每個(gè)變量節(jié)點(diǎn)與a個(gè)校驗(yàn)節(jié)點(diǎn)相連,令需要更新的s個(gè)變量節(jié)點(diǎn)信息,s=[16/a](使用ml28i型數(shù)據(jù))或s=[32/a](使用m256i型數(shù)據(jù)),使用一個(gè)ml28i型數(shù)據(jù)或m256i型數(shù)據(jù)存儲s*a個(gè)變量節(jié)點(diǎn)信息,每次操作即能夠同時(shí)更新s個(gè)變量節(jié)點(diǎn)信
肩、O
[0043]因此,所述高速LDPC譯碼器的實(shí)現(xiàn)方法為歸一化后的最小和算法(匪S)采用定點(diǎn)化的算法,其的具體過程如圖1所示,包括:
[0044]SI,初始化變量節(jié)點(diǎn);
[0045]S2,更新校驗(yàn)節(jié)點(diǎn)信息;對所有校驗(yàn)節(jié)點(diǎn)i和與其相鄰的變量節(jié)點(diǎn)B (i),計(jì)算變量節(jié)點(diǎn)傳向校驗(yàn)節(jié)點(diǎn)的信息,即校驗(yàn)節(jié)點(diǎn)信息的更新公式如下:
[0046]LCrij) = θ.Π keB(mjSgn[L(qjk)].1iiinkeBWVjL(qjk)O < θ < I 其中,L(rij)表示為校驗(yàn)節(jié)點(diǎn)i和與其相鄰的變量節(jié)點(diǎn)j構(gòu)成的校驗(yàn)節(jié)點(diǎn)信息為校驗(yàn)節(jié)點(diǎn)信息指示符;Θ為歸一化因子;B(i)表示為與校驗(yàn)節(jié)點(diǎn)i相鄰的變量節(jié)點(diǎn)的集合;L(qjk)表示為變量節(jié)點(diǎn)j和與其相鄰的校驗(yàn)節(jié)點(diǎn)k組構(gòu)成的變量節(jié)點(diǎn)信息;q為變量節(jié)點(diǎn)信息指示符。因此,更新校驗(yàn)節(jié)點(diǎn)信息時(shí),并使用SMD指令集進(jìn)行更新校驗(yàn)節(jié)點(diǎn)信息的處理方法,如圖2所示,包括:
[0047]S21,令一個(gè)ml28i (或m256i型)型數(shù)據(jù)存儲t*b個(gè)變量節(jié)點(diǎn)信息,并將t*b個(gè)變量節(jié)點(diǎn)信息分為t組變量節(jié)點(diǎn)信息,即同時(shí)對t個(gè)校驗(yàn)節(jié)點(diǎn)進(jìn)行更新操作,將所需要的t*b個(gè)變量節(jié)點(diǎn)信息存入一個(gè)ml28i型數(shù)據(jù)中,將其余128-t*b*8 (或256_t*b*8)比特任意填充;
[0048]S22,令存儲在所述ml28i (或m256i型)型數(shù)據(jù)中的兩組變量節(jié)點(diǎn)信息按b個(gè)字節(jié)為一組將其進(jìn)行組內(nèi)循環(huán)移位,共循環(huán)移位b-Ι次,得到b-Ι個(gè)除本節(jié)點(diǎn)外的其他節(jié)點(diǎn)的值,即得到b-Ι個(gè)重排后的ml28i (或m256i型)型數(shù)據(jù);
[0049]S23,令通過步驟S22所得的b_l個(gè)ml28i (或m256i型)型數(shù)據(jù)使用SMD (單指令多數(shù)據(jù)流)指令集中的求絕對值指令求絕對值,并使用求最小值指令求最小值,即求數(shù)據(jù)相對應(yīng)的每個(gè)byte位置上b-Ι個(gè)ml28i型數(shù)據(jù)中的最小值,以及使用位異或指令求每個(gè)byte位置上b-Ι個(gè)ml28i型數(shù)據(jù)的符號乘積;
[0050]S24,使用SIMD指令集中的指令令數(shù)據(jù)的每個(gè)byte位置上的最小值和符合乘積相乘,即將最小值的符號位統(tǒng)一,然后乘以歸一化因子,最后得到更新的校驗(yàn)節(jié)點(diǎn)信息。
[0051]如圖3所示,設(shè)步驟S2中每個(gè)校驗(yàn)節(jié)點(diǎn)與b=6個(gè)變量節(jié)點(diǎn)相連,使用ml28i型數(shù)據(jù),更新的校驗(yàn)節(jié)點(diǎn)信息t = [16/b]時(shí),更新校驗(yàn)節(jié)點(diǎn)信息的具體步驟包括:
[0052]S21,令一個(gè)ml28i型數(shù)據(jù)存儲2*6個(gè)變量節(jié)點(diǎn)信息,并將2*6個(gè)變量節(jié)點(diǎn)信息分為兩組變量節(jié)點(diǎn)信息,即同時(shí)對兩個(gè)校驗(yàn)節(jié)點(diǎn)進(jìn)行更新操作,將所需要的12個(gè)變量節(jié)點(diǎn)信息存如一個(gè)ml28i型數(shù)據(jù)中,將其余128-2*6*8=32比特任意填充;
[0053]S22,令存儲在所述ml28i型數(shù)據(jù)中的兩組變量節(jié)點(diǎn)信息按6個(gè)字節(jié)為一組將其進(jìn)行組內(nèi)循環(huán)移位,共循環(huán)移位5次,得到5個(gè)除本節(jié)點(diǎn)外的其他節(jié)點(diǎn)的值,即得到5個(gè)重排后的ml28i型數(shù)據(jù);
[0054]S23,令通過步驟S22所得的5個(gè)ml28i型數(shù)據(jù)使用SMD(單指令多數(shù)據(jù)流)指令集中的求絕對值指令求絕對值,并使用求最小值指令求最小值,即求數(shù)據(jù)相對應(yīng)的每個(gè)byte位置上5個(gè)ml28i型數(shù)據(jù)中的最小值,以及使用位異或指令求每個(gè)byte位置上5個(gè)ml28i型數(shù)據(jù)的符號乘積;
[0055]S24,使用SMD指令集中的指令令數(shù)據(jù)的每個(gè)byte位置上的最小值和符合乘積相乘,即將最小值的符號位統(tǒng)一,然后乘以歸一化因子Θ =0.75,最后得到更新的校驗(yàn)節(jié)點(diǎn)信
肩、O
[0056]S3,更新變量節(jié)點(diǎn)信息并更新判決信息;對所有的變量節(jié)點(diǎn)j和與其相鄰的校驗(yàn)節(jié)點(diǎn)A(j),計(jì)算校驗(yàn)節(jié)點(diǎn)傳向變量節(jié)點(diǎn)的信息,即變量節(jié)點(diǎn)信息的更新公式如下:
[0057]L(qij) = L(Pj) +Eke A(jniL(rkJ)L(qj = L(Pj) +Eke A(J)L(rkJ)
[0058]其中,Uqij)表示為變量節(jié)點(diǎn)j與其相鄰的校驗(yàn)節(jié)點(diǎn)i構(gòu)成的變量節(jié)點(diǎn)信息;L(Pj)表示為變量節(jié)點(diǎn)j的先驗(yàn)信息;P為先驗(yàn)信息指示符;A(j)表示為與變量節(jié)點(diǎn)j相鄰的校驗(yàn)節(jié)點(diǎn)的集合;L(rw)表示為校驗(yàn)節(jié)點(diǎn)k和與其相鄰的變量節(jié)點(diǎn)j構(gòu)成的校驗(yàn)節(jié)點(diǎn)信息為校驗(yàn)節(jié)點(diǎn)信息指示符;L(QP表示為變量節(jié)點(diǎn)j的后驗(yàn)概率;Q為后驗(yàn)概率指示符。因此,更新變量節(jié)點(diǎn)信息時(shí),已知變量節(jié)點(diǎn)j的先驗(yàn)信息L(Pj),并設(shè)可同時(shí)更新3個(gè)校驗(yàn)節(jié)點(diǎn),并使用SMD指令集進(jìn)行更新變量節(jié)點(diǎn)信息的處理方法如圖4所示,包括:
[0059]S31,令一個(gè)ml28i(或m256i型)型數(shù)據(jù)存儲s*a個(gè)校驗(yàn)節(jié)點(diǎn)信息,其余128_s*a*8(或256-s*a*8)比特任意填充,得到校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù);
[0060]S32,令存儲在ml28i (或m256i型)型數(shù)據(jù)中的校驗(yàn)節(jié)點(diǎn)信息按一組a個(gè)字節(jié)的進(jìn)行組內(nèi)循環(huán)移位,得到a-Ι個(gè)重新排列后的ml28i (或m256i型)型數(shù)據(jù);
[0061]S33,令a-Ι個(gè)重新排列的ml28i (或m256i型)型數(shù)據(jù)使用SMD指令集中的求和指令求數(shù)據(jù)相對應(yīng)的每個(gè)byte位置上a-Ι個(gè)ml28i (或m256i型)型數(shù)據(jù)的和;
[0062]S34,將已知的變量節(jié)點(diǎn)的先驗(yàn)信息L(Pj)存入一個(gè)ml28i (或m256i型)型數(shù)據(jù)中,其余128-s*a*8 (或256-s*a*8)比特任意填充,得到變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù);
[0063]S35,使用SIMD指令集中的求和指令求步驟S33和步驟S34中數(shù)據(jù)對應(yīng)的每個(gè)byte位置上的數(shù)據(jù)的和(即a-Ι個(gè)重排后的數(shù)據(jù)求和得到對應(yīng)每個(gè)byte位置上a_l個(gè)數(shù)據(jù)的和與所得變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和),得到更新后的變量節(jié)點(diǎn)信息;
[0064]S36,使用SIMD指令集中的求和指令求步驟S35和步驟S31中數(shù)據(jù)對應(yīng)的每個(gè)byte位置上的數(shù)據(jù)的和(即所得更新的變量節(jié)點(diǎn)信息數(shù)據(jù)與校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和),得到變量節(jié)點(diǎn)j的后驗(yàn)概率;以及對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列,即如果變量節(jié)點(diǎn)j的后驗(yàn)概率非零,則\ = 1,否則\ = 0,其中\(zhòng)表示為判決以后的譯碼比特序列。
[0065]設(shè)每個(gè)校驗(yàn)節(jié)點(diǎn)與a=3個(gè)校驗(yàn)節(jié)點(diǎn)相連,使用ml28i型數(shù)據(jù),更新的變量節(jié)點(diǎn)信息s=[16/a]時(shí),更新變量節(jié)點(diǎn)信息的具體步驟包括:
[0066]S31,令一個(gè)ml28i型數(shù)據(jù)存儲5*3個(gè)校驗(yàn)節(jié)點(diǎn)信息,其余128-5*3*8=8比特任意填充,得到校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù);
[0067]S32,令存儲在ml28i型數(shù)據(jù)中的校驗(yàn)節(jié)點(diǎn)信息按一組3個(gè)字節(jié)的進(jìn)行組內(nèi)循環(huán)移位,得到2個(gè)重新排列后的ml28i型數(shù)據(jù);
[0068]S33,令2個(gè)重新排列的ml28i型數(shù)據(jù)使用SMD指令集中的求和指令求數(shù)據(jù)相對應(yīng)的每個(gè)byte位置上2個(gè)ml28i型數(shù)據(jù)的和;
[0069]S34,將已知的變量節(jié)點(diǎn)的先驗(yàn)信息L(Pj)存入一個(gè)ml28i型數(shù)據(jù)中,其余8比特任意填充,得到變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù);
[0070]S35,使用SIMD指令集中的求和指令求步驟S33和步驟S34中數(shù)據(jù)對應(yīng)的每個(gè)byte位置上的數(shù)據(jù)的和(即2個(gè)重排后的數(shù)據(jù)求和得到對應(yīng)每個(gè)byte位置上2個(gè)數(shù)據(jù)的和與所得變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和),得到更新后的變量節(jié)點(diǎn)信息;
[0071]S36,使用SIMD指令集中的求和指令求步驟S35和步驟S31中數(shù)據(jù)對應(yīng)的每個(gè)byte位置上的數(shù)據(jù)的和(即所得更新的變量節(jié)點(diǎn)信息數(shù)據(jù)與校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和),得到變量節(jié)點(diǎn)j的后驗(yàn)概率;以及對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列,即如果變量節(jié)點(diǎn)j的后驗(yàn)概率非零,則\ = 1,否則\ = 0,其中\(zhòng)表示為判決以后的譯碼比特序列。 [0072]S4,校驗(yàn)判決,判斷校驗(yàn)方程是否非零且是否沒有達(dá)到最大迭代次數(shù),若是,則返回步驟S2 ;若否,繼續(xù)執(zhí)行下一步;
[0073]S5,輸出判決結(jié)果。
[0074]本發(fā)明所述的高速LDPC譯碼器的實(shí)現(xiàn)方法在更新校驗(yàn)節(jié)點(diǎn)信息和變量節(jié)點(diǎn)信息的時(shí)候,進(jìn)行兩部分并行處理,第一部分是同時(shí)并行更新不同節(jié)點(diǎn)信息,第二部分是對與同一節(jié)點(diǎn)相連的多個(gè)信息進(jìn)行并行處理。這兩部分措施能夠在很大程度上加快譯碼速率。并且所述方法是采用char數(shù)據(jù)類型的。因此,通過實(shí)驗(yàn),得到浮點(diǎn)型譯碼算法和定點(diǎn)化譯碼算法誤碼性能的比較,如圖5所示。本發(fā)明將原來的浮點(diǎn)型數(shù)據(jù)量化成固定位寬的定點(diǎn)型數(shù)據(jù),所產(chǎn)生的誤碼范圍與對應(yīng)算法的完整精度相比損失小于0.2dB。且將本發(fā)明所示的高速LDPC譯碼器的實(shí)現(xiàn)方法應(yīng)用在Intel Core i73960X平臺上(主頻設(shè)定為4.0GHz),使用多線程調(diào)用LDPC譯碼器,分別比較單核單線程LDPC譯碼器、6線程譯碼器以及12線程譯碼器的吞吐量性能,吞吐量實(shí)驗(yàn)結(jié)構(gòu)如圖6所示。
[0075]本發(fā)明所述的高速LDPC譯碼器的實(shí)現(xiàn)方法利用SIMD指令集和多線程技術(shù)隊(duì)LDPC譯碼程序進(jìn)行并行優(yōu)化,在Intel Core ?73960Χ平臺上能夠達(dá)到92~720Mbps的吞吐量。優(yōu)化過后的LDPC譯碼程序滿足CMMB標(biāo)準(zhǔn)對性能和速度的要求可以進(jìn)行實(shí)時(shí)LDPC譯碼,適用于虛擬無線電。
[0076]綜上所述,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價(jià)值。
[0077]上述實(shí)施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實(shí)施例進(jìn)行修飾或改變。因此,舉凡所屬【技術(shù)領(lǐng)域】中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【權(quán)利要求】
1.一種高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于,所述方法包括: 更新校驗(yàn)節(jié)點(diǎn)信息的步驟;該步驟包括:令t*b個(gè)變量節(jié)點(diǎn)信息存儲在寬型數(shù)據(jù)中,并將存儲的變量節(jié)點(diǎn)信息按b字節(jié)一組進(jìn)行組內(nèi)循環(huán)移位,得到b-Ι個(gè)重排后的數(shù)據(jù),并對重排后的數(shù)據(jù)使用SMD指令進(jìn)行處理,得到更新的校驗(yàn)節(jié)點(diǎn)信息;其中,t表示需更新的校驗(yàn)節(jié)點(diǎn)信息的個(gè)數(shù),b表示與每個(gè)校驗(yàn)節(jié)點(diǎn)相連的變量節(jié)點(diǎn)的個(gè)數(shù); 更新變量節(jié)點(diǎn)信息并更新判決信息的步驟;該步驟包括:令s*a個(gè)校驗(yàn)節(jié)點(diǎn)信息存儲在寬型數(shù)據(jù)中,得到校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù),并將存儲的校驗(yàn)節(jié)點(diǎn)信息按a個(gè)字節(jié)一組進(jìn)行組內(nèi)循環(huán),得到a-Ι個(gè)重排后的數(shù)據(jù),并對a-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令進(jìn)行處理,得到更新的變量節(jié)點(diǎn)信息,對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列;其中,s表示需更新的變量節(jié)點(diǎn)信息的個(gè)數(shù),a表示與每個(gè)變量節(jié)點(diǎn)相連的校驗(yàn)節(jié)點(diǎn)的個(gè)數(shù)。
2.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述更新校驗(yàn)節(jié)點(diǎn)信息的步驟還包括:對b-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令集中的指令求對應(yīng)每個(gè)byte位置上b-1個(gè)數(shù)據(jù)中的最小值和符號乘積,并將每個(gè)byte位置上的最小值和符號乘積相乘,最后乘以歸一化因子。
3.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述更新變量節(jié)點(diǎn)信息并根性判決信息的步驟還包括:對a-Ι個(gè)重排后的數(shù)據(jù)使用SMD指令集中的指令求對應(yīng)每個(gè)byte位置上a-Ι個(gè)數(shù)據(jù)的和;令已知的變量節(jié)點(diǎn)的先驗(yàn)信息存儲在寬型數(shù)據(jù)中,得到變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù),使用SIMD指令集中的指令求a-Ι個(gè)重排后的數(shù)據(jù)求和得到對應(yīng)每個(gè)byte位置上a-Ι個(gè)數(shù)據(jù)的和與所得變量節(jié)點(diǎn)的先驗(yàn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和,得到更新的變量節(jié)點(diǎn)信息數(shù)據(jù),最后使用SMD指令中的指令求所得更新的變量節(jié)點(diǎn)信息數(shù)據(jù)與校驗(yàn)節(jié)點(diǎn)信息數(shù)據(jù)對應(yīng)每個(gè)byte位置上的數(shù)據(jù)的和,得到變量節(jié)點(diǎn)的后驗(yàn)概率;最后對變量節(jié)點(diǎn)信息進(jìn)行判決得到譯碼比特序列。
4.根據(jù)權(quán)利要求2或3所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所使用的SIMD指令集中的指令包括求和指令、求絕對值指令、求最小值指令、求位異或指令、和求乘指令。
5.根據(jù)權(quán)利要求2所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:更新校驗(yàn)節(jié)點(diǎn)信息中循環(huán)移位次數(shù)為b-Ι次。
6.根據(jù)權(quán)利要求3所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:更新變量節(jié)點(diǎn)信息中循環(huán)移位次數(shù)為a-Ι次。
7.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述方法還包括初始化變量節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述方法還包括校驗(yàn)判決,判斷校驗(yàn)方程是否非零且是否沒有達(dá)到最大迭代次數(shù),若是,則返回更新校驗(yàn)節(jié)點(diǎn)信息的步驟;若否,輸出判決結(jié)果。
9.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述方法還包括輸出判決結(jié)果。
10.根據(jù)權(quán)利要求1所述的高速LDPC譯碼器的實(shí)現(xiàn)方法,其特征在于:所述寬型數(shù)據(jù)包括ml28i型數(shù)據(jù)和m256i型數(shù)據(jù)。
【文檔編號】H03M13/11GK103684474SQ201210320089
【公開日】2014年3月26日 申請日期:2012年8月31日 優(yōu)先權(quán)日:2012年8月31日
【發(fā)明者】陸小凡, 李明齊, 潘霞 申請人:中國科學(xué)院上海高等研究院