一種基于通用處理器的ldpc編譯碼方法
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)涉及LDPC編譯碼技術(shù),特別涉及一種基于通用處理器的LDPC編譯碼方法。
【背景技術(shù)】
[0002] LDPC碼,是一種碼長(zhǎng)較大的線性分組碼。其校驗(yàn)矩陣也較大,并且校驗(yàn)矩陣中的非 零元素很少,即" 1"的個(gè)數(shù)很少,故稱低密度。
[0003] 在實(shí)現(xiàn)IEEE 802. lln無線局域網(wǎng)傳輸協(xié)議的過程中,需使用到LDPC編譯碼技術(shù), 依協(xié)議要求,其中LDPC PPDU (Presentation Protocol Data Unit,表示層協(xié)議數(shù)據(jù)單元) 的生成過程如下,參見圖1 :
[0004] (1)計(jì)算縮短比特位
[0005] (la)計(jì)算可用比特?cái)?shù)Navbits,公式為:
[0006]
【主權(quán)項(xiàng)】
1. 一種基于通用處理器的LDPC編碼方法,包括:通過信號(hào)采集或接收獲取待編 碼的信號(hào)向量S,確定校驗(yàn)矩陣H及其分塊矩陣4、8、0、£、?和!',并進(jìn)行保存;根據(jù)
角定向量口1和口2,并得到LDPC的編碼結(jié)果向量c= (S,Pl,p2);其特 征在于,所述確定向量pjPP2時(shí)進(jìn)行的任一矩陣與任一向量的相乘處理包括: 將所述任一矩陣的每一行作為一個(gè)線程,進(jìn)行該矩陣的相應(yīng)行與所述任一向量的相乘 操作,并將所有行的相乘結(jié)果組合在一起構(gòu)成結(jié)果向量; 其中,所述任一矩陣的每一行與所述任一向量的相乘操作包括:確定矩陣當(dāng)前第i行 的每個(gè)元素j對(duì)應(yīng)的向量起始位置=所述任一向量的起始位置+Ai;j+(j-l)*Z,將所述任一 向量中從所述起始位置起Z-Au長(zhǎng)度的數(shù)據(jù)通過單指令多數(shù)據(jù)流SMD的方式進(jìn)行左移位, 并將所述起始位置開始的前Au長(zhǎng)度的數(shù)據(jù)移至左移位后的數(shù)據(jù)之后,得到所述元素j對(duì) 應(yīng)的向量移位結(jié)果;再將每個(gè)元素對(duì)應(yīng)的向量移位結(jié)果相加,作為所述每一行與所述任一 向量的相乘結(jié)果; 所述SIMD的方式中,將從所述起始位置起Z-Au長(zhǎng)度的數(shù)據(jù)以長(zhǎng)度W為單位劃分成
兒據(jù)并行進(jìn)行左移位操作,再將剩余的(Z-UmodW長(zhǎng)度的數(shù) 據(jù)進(jìn)行左移位操作; Z為所述校驗(yàn)矩陣中的一個(gè)元素代表的子矩陣大小。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述任一矩陣為P時(shí),所述r1的每一 行與相應(yīng)向量的相乘操作時(shí),僅進(jìn)行r1取值為〇的元素與相應(yīng)向量的相乘,得到該取值為〇 元素對(duì)應(yīng)的向量移位結(jié)果,將其余元素對(duì)應(yīng)的向量移位結(jié)果設(shè)置為零向量;再將每個(gè)元素 對(duì)應(yīng)的向量移位結(jié)果相加,作為所述每一行與所述任一向量的相乘結(jié)果。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,對(duì)W段數(shù)據(jù)同時(shí)進(jìn)行左移位操作后取 前z個(gè)數(shù)據(jù)為有效數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將每個(gè)元素對(duì)應(yīng)的向量移位結(jié)果 相加包括:將每個(gè)元素對(duì)應(yīng)的向量移位結(jié)果以長(zhǎng)度W為單位劃分成段,通過SIMD 又寸撤腳霞衍目力口艦獅乘_(Z_A")modW碰白勺翻通才目廳 作。
5. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述矩陣A、B、D、E、F和T<通過線 性查找表進(jìn)行保存。
6. -種基于通用處理器的LDPC譯碼方法,包括:接收已編碼的LDPC碼字信號(hào)c,確定 校驗(yàn)矩陣H;通過多次迭代計(jì)算變量節(jié)點(diǎn)向量q作為譯碼結(jié)果,每次迭代時(shí),根據(jù)當(dāng)前的變 量節(jié)點(diǎn)向量q和校驗(yàn)節(jié)點(diǎn)向量r計(jì)算臨時(shí)變量向量為? = 〃|,并根據(jù)所述臨時(shí)變量 向量t更新校驗(yàn)節(jié)點(diǎn)向量r,再根據(jù)校驗(yàn)節(jié)點(diǎn)向量r和臨時(shí)變量向量t更新變量節(jié)點(diǎn)向量q 為f =(f+ ;初次迭代時(shí),將碼字信號(hào)c作為變量節(jié)點(diǎn)向量q,將校驗(yàn)節(jié)點(diǎn)向量1設(shè)為0 ; 其特征在于, 每次迭代計(jì)算臨時(shí)變量向量t、校驗(yàn)節(jié)點(diǎn)向量r和變量節(jié)點(diǎn)向量q時(shí),以校驗(yàn)矩陣 的每一行作為一個(gè)線程進(jìn)行運(yùn)算和更新,得到與每行相對(duì)應(yīng)的向量t、(1和1*中索引號(hào)從
I的子向量;其中,i為校驗(yàn)矩陣的行索引, 對(duì)應(yīng)所述校驗(yàn)矩陣的第i行計(jì)算臨時(shí)變量向量t、校驗(yàn)節(jié)點(diǎn)向量r和變量節(jié)點(diǎn)向量q對(duì)應(yīng) 的子向量時(shí),根據(jù)校驗(yàn)矩陣該行的每個(gè)非元素Hu對(duì)應(yīng)計(jì)算向量t、q和r中與元素Hu 對(duì)應(yīng)的索引號(hào)Z
<Z-1的子向量,再 依次進(jìn)行連接得到與每行相應(yīng)的子向量,i= 1時(shí),
計(jì)算與Hu對(duì)應(yīng)的臨時(shí)變量向量t子向量的方式為:確定Hu對(duì)應(yīng)的向量起始位置 2" -jj Z*(n-1)+Hin,將第i行對(duì)應(yīng)的向量q子向量中所述起始位置起長(zhǎng)度為或6的數(shù)據(jù) 通過SIMD的方式拷貝到與Hi;」對(duì)應(yīng)的臨時(shí)變量向量t子向量的開頭;在Hi;n尹0、H且(Z-Hi;n)m〇dW關(guān)0時(shí),確定矩陣MUpeAssemblel中與校驗(yàn)矩陣元素Hi;」對(duì)應(yīng)行中各個(gè)元素的取 §
If與元素Hi;j對(duì)應(yīng)的當(dāng)前向量q的子向量中索 V-1 引號(hào)戈
)的各個(gè)元素依次拷貝到與Hi,j對(duì)應(yīng)的臨時(shí)變 量向量t子向量的當(dāng)前位置上;再確定每個(gè)元素Hu對(duì)應(yīng)的第二向量起始位置MUpc;Mfsrt2,將 所述第二向量起始位置起長(zhǎng)度為|的數(shù)據(jù)通過SIMD的方式拷貝到與Hu對(duì)應(yīng)的臨時(shí) 變量向量t子向量的當(dāng)前位置上;取與Hi;j對(duì)應(yīng)的臨時(shí)變量向量t子向量中的前Z位并取 絕對(duì)值作為與氏,」對(duì)應(yīng)的臨時(shí)變量向量t的有效子向量; 當(dāng)Hi,n尹 0、Hi,n尹 - 且(Z-Hi'JmodW尹 0 時(shí),
當(dāng)Hi;n= 0 或Hi;n= 或 (Z-UmodW= 0 時(shí),〇\^_"如山,』=Z*(n-1);
妒=^,K為通用處理器一次可處理數(shù)據(jù)量大小,k為SMD處理的基礎(chǔ)單位大?。淮ak 長(zhǎng)Lldpc= 648 時(shí),LdpcRemain= 11 ;當(dāng)碼長(zhǎng)Lldpc= 1296 時(shí),LdpcRemain= 6 ;當(dāng)碼長(zhǎng)Lldpc =1944時(shí),LdpcRemain= 1 ;j為第i行中的每個(gè)非元素在該行所有非元素中的 索引,n為第i行第j個(gè)非元素在校驗(yàn)矩陣中的列索引。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,計(jì)算與校驗(yàn)矩陣的每行對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn) 向量r子向量的方式為: 將與校驗(yàn)矩陣每行對(duì)應(yīng)的臨時(shí)變量向量t子向量寫成VUpdjOTtogth(v)行和W* |列的 矩陣Tv,其中,所述矩陣1;的每一行為所述臨時(shí)變量向量t子向量中與元素Hu對(duì)應(yīng)的子向 量,列數(shù)不夠時(shí)進(jìn)行補(bǔ)位; 對(duì)所述矩陣Tv進(jìn)行最值分配,得到最值變量向量m子向量矩陣Mv; 根據(jù)所述矩陣Tv計(jì)算中間變量向量s子向量矩陣Sv; 根據(jù)所述矩陣Mv和所述矩陣Sv中索引值相同的元素,確定一中間矩陣Rv'中相應(yīng)索引 值的元素取值;其中,若矩陣Sv中的任一元素小于0,則取該任一元素的補(bǔ)數(shù)并與該任一元 素相加,將相加結(jié)果作為矩陣&'中與所述任一元素索引值相同的元素的取值;若矩陣Sv* 的任一元素等于0,則將該任一元素與0相加,將相加結(jié)果作為矩陣Rv中與所述任一元素索 引值相同的元素的取值;若矩陣Sv中的任一元素>0,則在矩陣^中取與所述任一元素索引 值相同的元素與所述任一元素相加,將相加結(jié)果作為矩陣&中與所述任一元素索引值相同 的元素的取值;所述比較和相加的操作通過SMD的方式進(jìn)行; 通過SIMD方式將所述矩陣Rv'與矩陣Tv中索引值相同的元素相減,將結(jié)果作為校驗(yàn)節(jié) 點(diǎn)向量r子向量矩陣Rv中相同索引值的元素取值;將所述矩陣Rv中每行的前Z個(gè)元素按照 行優(yōu)先的方式依次讀出組成校驗(yàn)節(jié)點(diǎn)向量r子向量。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述進(jìn)行最值分配包括: 通過SIMD的方式確定所述矩陣1;中每一列的最小值和次小值以及最小值對(duì)應(yīng)的行索 弓丨;將得到的最小值和次小值進(jìn)行修正,均減去預(yù)設(shè)的修正值0,當(dāng)修正后的最小值和次 小值小于〇時(shí),將其設(shè)置為〇,否則保持不變; 根據(jù)所述矩陣1中每一列的當(dāng)前最小值、次小值和最小值對(duì)應(yīng)的行索引,構(gòu)造最值變 量向量m子向量矩陣…中相同索引的列,其中,在Mv的任一列中,將與當(dāng)前最小值對(duì)應(yīng)相同 行索引的元素設(shè)置為確定出的最小值,將其余元素設(shè)置為次小值。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述通過SIMD的方式確定每一列的最小 值和次小值以及相應(yīng)的行索引的方式包括: 將所述矩陣Tv的每一行元素分成|個(gè)子塊,每個(gè)子塊包括W個(gè)基本單位;在比較所 W 述矩陣Tv中任意兩行的元素時(shí),通過SMD的方式一次性比較W個(gè)基本單位。
10. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述計(jì)算中間變量向量s子向量矩陣Sv 包括: 對(duì)于矩陣1中的每一列,將該列所有元素進(jìn)行異或操作,再將結(jié)果與第i'行的元素異 或后與0x7f進(jìn)行或操作,將或操作結(jié)果作為中間向量矩陣Sv中相同索引列的第i'行元素; 其中,將所述矩陣Tv的每一行元素分成#個(gè)子塊,每個(gè)子塊包括W個(gè)基本單位,在進(jìn)行異 或/或操作時(shí),通過SIMD的方式一次性執(zhí)行W個(gè)基本單位的異或/或操作。
11. 根據(jù)權(quán)利要求6所述的方法,其特征在于,計(jì)算與Hu對(duì)應(yīng)的變量節(jié)點(diǎn)向量q子向 量包括: 確定Hu對(duì)應(yīng)的向量起始位置Z*(n-1)+H,通過SMD方式將Hy對(duì)應(yīng)的臨時(shí)變量向 量t子向量與Hu對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn)向量r子向量相加,將結(jié)果向量中所述起始位置起長(zhǎng)度 2^ -11 為^^或5的數(shù)據(jù)通過SIMD的方式拷貝到與Hu對(duì)應(yīng)的變量節(jié)點(diǎn)向量q子向量的開 頭;在Hi;n尹0、H"關(guān)'且(Z-HJmodW關(guān)0時(shí),確定矩陣MWpeAssemblel中與校驗(yàn)矩陣元素 Hi;」對(duì)應(yīng)行中各個(gè)元素的取值
并將與元素Hu對(duì)應(yīng)的 當(dāng)前向量q的子向量中索引號(hào)為
勺各個(gè)元素依次拷 貝到與Hu對(duì)應(yīng)的變量節(jié)點(diǎn)向量q子向量的當(dāng)前位置上; 確定每個(gè)元素Hu對(duì)應(yīng)的第二向量起始位置Mu_ffsrt2,將所述第二向量起始位置起長(zhǎng) 度為0或-1的數(shù)據(jù)通過SIMD的方式拷貝到與Hu對(duì)應(yīng)的變量節(jié)點(diǎn)向量q子向量的 當(dāng)前位置上; 根據(jù)LdpcRemain指示的補(bǔ)位個(gè)數(shù),按照MWpeAssemblel中與校驗(yàn)矩陣元素Hi;』對(duì)應(yīng)行中元 素的取值進(jìn)行補(bǔ)位。
12. 根據(jù)權(quán)利要求6到11中任一所述的方法,其特征在于,預(yù)先計(jì)算并保存每個(gè)元素 I」對(duì)應(yīng)的向量起始位置Z* (n-1)+H和第二向量起始位置M Ldpc0ffset2、 矩陣 、校驗(yàn) 矩陣中每行非元素的個(gè)數(shù)構(gòu)成的向量。―、M_eAssemblel、LdpcRemain。
【專利摘要】本申請(qǐng)公開了一種LDPC編碼方法,確定向量p1和p2,并得到編碼結(jié)果向量;確定向量p1和p2時(shí)任一矩陣與任一向量的相乘處理包括:將任一矩陣的每一行作為一個(gè)線程,進(jìn)行該矩陣相應(yīng)行與任一向量的相乘,并將所有行的相乘結(jié)果構(gòu)成結(jié)果向量;任一矩陣的每一行與任一向量的相乘操作包括:確定矩陣第i行的每個(gè)元素j對(duì)應(yīng)的向量起始位置,將任一向量中從該起始位置起Z-Ai,j長(zhǎng)度的數(shù)據(jù)通過單指令多數(shù)據(jù)流的方式進(jìn)行左移位,并將起始位置開始的前Ai,j長(zhǎng)度的數(shù)據(jù)移至左移位后的數(shù)據(jù)之后,得到元素j對(duì)應(yīng)的向量移位結(jié)果;再將每個(gè)元素的向量移位結(jié)果相加。通過上述方法,利用多線程和SIMD的處理,能夠在通用處理器中提高編碼速度。
【IPC分類】H03M13-11
【公開號(hào)】CN104617959
【申請(qǐng)?zhí)枴緾N201510026526
【發(fā)明人】牛凱, 賀志強(qiáng), 張竟意
【申請(qǐng)人】北京郵電大學(xué)
【公開日】2015年5月13日
【申請(qǐng)日】2015年1月20日