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