Ldpc码使用在HT系统中,作为一种纠错码来替代卷积码,其不使用Nes。数据段部分仅为psdu和services两部分组成。
1.1、LDPC编码率和码块长度
1.2、Ldpc 编码
Ldpc的编码率R有四种(1/2、2/3、3/4、5/6),码块长度n有三种(648、1296、1944)。编码后的码块c bits有两部分组成(c=(i0,i1,... i(k–1), p0, p1,…, p(n–k–1))),前k bits需要编码的bits,后n-k bits为校验bits,并且满足一个H*cT = 0,H矩阵为奇偶校验矩阵。
1.3、校验矩阵H
校验矩阵是由Z *Z的方阵组成,方阵可以为循环的单位阵或者空阵。不同的编码后的码块长度决定了Z的大小。同时,矩阵模型也确定了H矩阵的大小。在矩阵模型中每个数字代表一个Z*Z的单位阵,数字的大小决定单位阵按列右移的大小。其中,没有数字的地方是个Z*Z的方阵。最后生成的H校验阵的列数为编码后的码块长度,行数为编码后的码块长度减去需要编码的信息块的长度。因此,不同的编码率和不同的编码长度分别对应不同的H矩阵。
下图为三种码块长不同速率下的H母阵:
2、LDPC的编码过程
a、计算可编码Navbits 的bit长度,其计算公式如下:
Npld 为数据域加service域的bit长度,R为编码率,其他为协议变量。
b、其次,计算需要LDPC编码的次数和选择编码长度。
c、计算缩短bit长度,用以填充Nshrt 满足编码前所需的bit长度。计算公式如下:
当Nshrt 等于零时,不进行填充;若不等于零时,利用NSPCW=Nshrt/NCW 计算每次LDPC编码所需的填充bit数。填充时,前rem(Nshrt,Ncw) 次LDPC编码的填充比剩余次数的LDPC编码在填充bit数多一个。
注:填充bit的位置在需要填充的信息bit之后。编码后全部去掉填充bit。
d、计算编码后的打孔bit数
同时,假如条件 成立,或者条件
成立。则,Navbits 和Npunc 需要被重新计算,公式如下:
如若Npunc 不等于零,则需要进行打孔。利用 计算打孔bit数。同时,前
次LDPC编码打孔bit比剩余LDPC编码多一个bit。
注:打孔去掉bit的位置在每次编码的末端。
同时数据段的符号数:
如果D过程被执行,则不进行E过程,否则跳过D,进入E过程。
e、计算重复的bit数
如果 大于零,则计算需要重复的bit数,
;同时,前
次的重复bit数比剩余次数的多一个。
注:重复的位置是将每次编码后的前端需要重复的bit数搬移到末端
编码流程图:
编码后的数据部分需要由编码前后次数依次组装产生。
3.实现LPDC编码过程
假如m为原始数据长度为k,经过LDPC编码后,编码成C,长度为n,对应的表达式为:
因此,G为k*n的矩阵。
再则,由于编码后的数据和奇偶校验校验矩阵H的乘积为零,即: 。
利用高斯消元法,我们可以得到G矩阵(高斯消元法的步骤运算量为O(n3))。
但是这种如果这样处理,编码非常复杂,而且破坏了校验矩阵的稀疏性。由于H矩阵的特殊性,在不生成G矩阵的条件下,利用回代过程,完成LDPC编码。
802.11的H母阵:
编码流程: