一种基于通用处理器的LDPC编译码方法技术

技术编号:11439264 阅读:92 留言:0更新日期:2015-05-13 08:42
本申请公开了一种LDPC编码方法,确定向量p1和p2,并得到编码结果向量;确定向量p1和p2时任一矩阵与任一向量的相乘处理包括:将任一矩阵的每一行作为一个线程,进行该矩阵相应行与任一向量的相乘,并将所有行的相乘结果构成结果向量;任一矩阵的每一行与任一向量的相乘操作包括:确定矩阵第i行的每个元素j对应的向量起始位置,将任一向量中从该起始位置起Z-Ai,j长度的数据通过单指令多数据流的方式进行左移位,并将起始位置开始的前Ai,j长度的数据移至左移位后的数据之后,得到元素j对应的向量移位结果;再将每个元素的向量移位结果相加。通过上述方法,利用多线程和SIMD的处理,能够在通用处理器中提高编码速度。

【技术实现步骤摘要】
一种基于通用处理器的LDPC编译码方法
本申请涉及LDPC编译码技术,特别涉及一种基于通用处理器的LDPC编译码方法。
技术介绍
LDPC码,是一种码长较大的线性分组码。其校验矩阵也较大,并且校验矩阵中的非零元素很少,即“1”的个数很少,故称低密度。在实现IEEE802.11n无线局域网传输协议的过程中,需使用到LDPC编译码技术,依协议要求,其中LDPCPPDU(PresentationProtocolDataUnit,表示层协议数据单元)的生成过程如下,参见图1:(1)计算缩短比特位(1a)计算可用比特数Navbits,公式为:Npld=length×8+16,其中,如果有STBC(Space-timeblockcode)预编码,则标志位mSTBC为2,否则为1;NCBPS表示每个符号的编码比特数;length表示PSDU(presentationServiceDataUnit)的字节数,即为信息比特位的字节数;Npld表示PSDU和SERVICEFIELD的总的比特数;R表示编码码率。(1b)计算LDPC码字个数NCW和码长LLDPC当Navbits≤648时,码字个数NCW为1,且如果Navbits≥Npld+912×(1-R)时,码长LLDPC为1296,否则码长LLDPC为648;当648<Navbits≤1296时,码字个数NCW为1,且如果Navbits≥Npld+1464×(1-R)时,码长LLDPC为1944,否则码长LLDPC为1296;当1296<Navbits≤1944时,码字个数NCW为1,此时码长LLDPC为1944;当1944<Navbits≤2592时,码字个数NCW为2,且如果Navbits≥Npld+2916×(1-R)时,码长LLDPC为1944,否则码长LLDPC为1296;当Navbits>2592时,码字个数NCW为此时码长LLDPC为1944;(1c)计算缩短比特位个数Nshrt,缩短比特位在LDPC编码前填充到信息比特位之后:Nshrt=max(0,(NCW×LLDPC×R)-Npld)当Nshrt=0时,不进行补0操作。当Nshrt>0时,缩短比特位在所有NCW个码字上平均分布,即每个码字分配到的缩短比特位个数为若是NshrtmodNCW≠0,,其中mod为取余,即Nshrt对NCW取余,则第一个码字比其他码字多一个缩短比特位。(2)进行LDPC编码,得到检验比特位。(3)丢弃缩短比特位(4)计算打孔比特位个数并丢弃打孔比特位,根据下式计算LDPC编码后打孔比特位个数Npunc:Npunc=max(0,(NCW×LLDPC)-Navbits-Nshrt)如果或者(Npunc>0.3×NCW×LLDPC×(1-R)),增大Navbits然后根据下式重新计算Npunc:N'avbits=Navbits+NCBPS×mSTBC,Npunc=max(0,(NCW×LLDPC)-N'avbits-Nshrt)打孔比特位在所有NCW个码字上平均分布,即每个码字分配到的打孔比特位个数为若是NpuncmodNCW≠0,其中mod为取余,即Npunc对NCW取余,则第一个码字比其他码字多一个打孔比特位。(5)计算重复比特位,根据下式计算重复比特位个数Nrep:Nrep=max(0,N'avbits-NCW×LLDPC×(1-R)-Npld)重复比特位在所有NCW个码字上平均分布,即每个码字分配到的重复比特位个数为若是NrepmodNCW≠0,,其中mod为取余,即Nrep对NCW取余,则第一个码字比其他码字多一个重复比特位。重复比特位从信息比特位的第一个比特开始顺序选取,直到满足长度要求,重复比特位是从去掉的缩短比特位后的码字中复制的。选出的重复比特位顺序连接在校验比特位之后。当需要打孔时,检验比特位不需要重复,反之亦然。在LDPCPPDU生成过程中,LDPC编码方法最为重要,经过LDPC编码后输出的码字向量记为c=(S,p1,p2),其中S为信息向量,p1和p2为码字校验向量,但因LDPC码的校验矩阵H较大,编码过程中的运算将十分繁琐。观察协议中给出的校验矩阵可以看出,不同码率R下的矩阵其行重均为24,其列重均为24×(1-R),根据校验矩阵H的特性,将其进行如下分块分成矩阵A、矩阵B、矩阵D、矩阵E、矩阵T以及矩阵F六个子矩阵,其中矩阵B、矩阵D、矩阵E以及矩阵T的结构较为特殊,B=(1--…0-…)T,D=(1),E=(-…-0),矩阵A和矩阵F的结构无规律性,参见协议802.11n。另外,由于校验矩阵H规模较大,因此,在表示校验矩阵时,通过一个元素表示实际校验矩阵中的一个子矩阵,具体地,在校验矩阵H和分块矩阵A、B、D、E、T、F的表示方法中,“—”表示该子矩阵为零矩阵,“0”表示该子矩阵为单位矩阵,“常数C”表示该子矩阵为单位矩阵C次循环右移位后的结果矩阵。其中子矩阵的维数为Z*Z,Z可以预先根据码长确定。通过上述方式,可以大大减少校验矩阵和各个分块矩阵的表示大小。在已知校验矩阵H和信息向量S的前提下,确定码字向量c的具体方式为:根据校验方程HcT=0T可得分解方程经过优化后可得到求出p1和p2后,即可求出码字向量c=(S,p1,p2)。参照上述LDPC编码过程的编码器的组成参见图2,其中含有4种功能模块:编码矩阵生成器、矩阵乘法器、矩阵加法器以及LDPC码字合成器。该编码器中共有6个编码矩阵生成器,其输入是一个矩阵,分别是矩阵A、矩阵B、矩阵D、矩阵E、矩阵T以及矩阵F六个子矩阵,其输出是一个矩阵,是经过编码矩阵生成器处理后的矩阵,其功能是将输入的矩阵通过压缩存储的方式,即仅存矩阵非零元素,将输入矩阵进行变换,得到输出矩阵。该编码器中共有6个乘法器,其有两个输入端一个输出端,两个输入端分别是信息向量S、矩阵A、通过编码矩阵生成器处理后的矩阵、通过其他乘法器的结果矩阵或者通过加法器后的结果矩阵中的两个,其输出是一个矩阵,是两个输入端进行乘法运算后的结果向量,其功能是将两个输入端进行矩阵乘法运算并输出结果矩阵。该编码器共有2个矩阵加法器,其输入是两个矩阵,均为编码器中矩阵乘法器输出后矩阵,其输出是一个矩阵,是两个输入矩阵进行矩阵加法后的结果,其功能是将两个输入矩阵进行矩阵加法并输出结果矩阵。该编码器中有1个LDPC码字合成器,其输入是三个向量,是信息向量S、码字校验向量p1和码字校验向量p2,其输出是一个向量,是码字向量c,其功能是将信息向量S、码字校验向量p1和码字校验向量p2三个向量合成码字向量c=(S,p1,p2)并码字向量c。上述即为现有的LDPC编码方法和相应的编码器构成。在接收端,还需要对接收的LDPC码字进行译码,得到重建的信息向量。已有的LDPC译码技术,其主要步骤如下:(1)将M个校验点分成Mb层,每层包括T个校验节点。接下来,一层接一层的顺序执行译码过程。在第一层处理过程中计算校验节点和变量节点的信息,第一层译码过程结束之后,第二层使用从第一层得到的变量节点的信息进行初始化,并以此类推;(2)初始化:用LLRs(log-likelihoodratios,即的信息对变量节点的值进行初始化,本文档来自技高网...
一种基于通用处理器的LDPC编译码方法

【技术保护点】
一种基于通用处理器的LDPC编码方法,包括:通过信号采集或接收获取待编码的信号向量S,确定校验矩阵H及其分块矩阵A、B、D、E、F和T,并进行保存;根据p1T=(ET-1A+F)STp2T=T-1(AST+Bp1T)]]>确定向量p1和p2,并得到LDPC的编码结果向量c=(S,p1,p2);其特征在于,所述确定向量p1和p2时进行的任一矩阵与任一向量的相乘处理包括:将所述任一矩阵的每一行作为一个线程,进行该矩阵的相应行与所述任一向量的相乘操作,并将所有行的相乘结果组合在一起构成结果向量;其中,所述任一矩阵的每一行与所述任一向量的相乘操作包括:确定矩阵当前第i行的每个元素j对应的向量起始位置=所述任一向量的起始位置+Ai,j+(j‑1)*Z,将所述任一向量中从所述起始位置起Z‑Ai,j长度的数据通过单指令多数据流SIMD的方式进行左移位,并将所述起始位置开始的前Ai,j长度的数据移至左移位后的数据之后,得到所述元素j对应的向量移位结果;再将每个元素对应的向量移位结果相加,作为所述每一行与所述任一向量的相乘结果;所述SIMD的方式中,将从所述起始位置起Z‑Ai,j长度的数据以长度W为单位划分成段,对段数据并行进行左移位操作,再将剩余的(Z‑Ai,j)modW长度的数据进行左移位操作;Z为所述校验矩阵中的一个元素代表的子矩阵大小。...

【技术特征摘要】
1.一种基于通用处理器的LDPC编码方法,包括:通过信号采集或接收获取待编码的信号向量S,确定校验矩阵H及其分块矩阵A、B、D、E、F和T,并进行保存;根据确定向量p1和p2,并得到LDPC的编码结果向量c=(S,p1,p2);其特征在于,所述确定向量p1和p2时进行的任一矩阵与任一向量的相乘处理包括:将所述任一矩阵的每一行作为一个线程,进行该矩阵的相应行与所述任一向量的相乘操作,并将所有行的相乘结果组合在一起构成结果向量;其中,所述任一矩阵的每一行与所述任一向量的相乘操作包括:确定矩阵当前第i行的每个元素j对应的向量起始位置=所述任一向量的起始位置+Ai,j+(j-1)*Z,将所述任一向量中从所述起始位置起Z-Ai,j长度的数据通过单指令多数据流SIMD的方式进行左移位,并将所述起始位置开始的前Ai,j长度的数据移至左移位后的数据之后,得到所述元素j对应的向量移位结果;再将每个元素对应的向量移位结果相加,作为所述每一行与所述任一向量的相乘结果;所述SIMD的方式中,将从所述起始位置起Z-Ai,j长度的数据以长度W为单位划分成段,对段数据并行进行左移位操作,再将剩余的(Z-Ai,j)modW长度的数据进行左移位操作;Z为所述校验矩阵中的一个元素代表的子矩阵大小。2.根据权利要求1所述的方法,其特征在于,当所述任一矩阵为T-1时,所述T-1的每一行与相应向量的相乘操作时,仅进行T-1取值为0的元素与相应向量的相乘,得到该取值为0元素对应的向量移位结果,将其余元素对应的向量移位结果设置为零向量;再将每个元素对应的向量移位结果相加,作为所述每一行与所述任一向量的相乘结果。3.根据权利要求1或2所述的方法,其特征在于,对W段数据同时进行左移位操作后取前Z个数据为有效数据。4.根据权利要求1或2所述的方法,其特征在于,所述将每个元素对应的向量移位结果相加包括:将每个元素对应的向量移位结果以长度W为单位划分成段,通过SIMD对段数据并行进行相加操作,再将剩余的(Z-Ai,j)modW长度的数据进行相加操作。5.根据权利要求1或2所述的方法,其特征在于,所述矩阵A、B、D、E、F和T-1通过线性查找表进行保存。6.一种基于通用处理器的LDPC译码方法,包括:接收已编码的LDPC码字信号c,确定校验矩阵H;通过多次迭代计算变量节点向量q作为译码结果,每次迭代时,根据当前的变量节点向量q和校验节点向量r计算临时变量向量为并根据所述临时变量向量t更新校验节点向量r,再根据校验节点向量r和临时变量向量t更新变量节点向量q为初次迭代时,将码字信号c作为变量节点向量q,将校验节点向量r设为0;其特征在于,每次迭代计算临时变量向量t、校验节点向量r和变量节点向量q时,以校验矩阵的每一行作为一个线程进行运算和更新,得到与每行相对应的向量t、q和r中索引号从的子向量;其中,i为校验矩阵的行索引,对应所述校验矩阵的第i行计算临时变量向量t、校验节点向量r和变量节点向量q对应的子向量时,根据校验矩阵该行的每个非“-”元素Hi,j对应计算向量t、q和r中与元素Hi,j对应的索引号从的子向量,再依次进行连接得到与每行相应的子向量,i=1时,令VLdpcRowLength(v)为所述校验矩阵中每行非“-”元素的个数;计算与Hi,j对应的临时变量向量t子向量的方式为:确定Hi,j对应的向量起始位置Z*(n-1)+Hi,n,将第i行对应的向量q子向量中所述起始位置起长度为或6的数据通过SIMD的方式拷贝到与Hi,j对应的临时变量向量t子向量的开头;在Hi,n≠0、Hi,n≠'-'且(Z-Hi,n)modW≠0时,确定矩阵MLdpcAssemble1中与校验矩阵元素Hi,j对应行中各个元素的取值并将与元素Hi,j对应的当前向量q的子向量中索引号为的各个元素依次拷贝到与Hi,j对应的临时变量向量t子向量的当前位置上;再确定每个元素Hi,j对应的第二向量起始位置MLdpcOffset2,将所述第二向量起始位置起长度为的数据通过SIMD的方式拷贝到与Hi,j对应的临时变量向量t子向量的当前位置上;取与Hi,j对应的临时变量向量t子向量中的前Z位并取绝对值作为与Hi,j对应的临时变量向量t的有效子向量;其中,MLdpcAssemble1为根据所述校验矩阵计算出的补足偏移量标志位之一,MLdpcOffset2为根据所述校验矩阵计算出的循环偏移量之一;当Hi,n≠0、Hi,n≠'-'且(Z-Hi,n)modW≠0时,当Hi,n=0或Hi,n='-'或(Z-Hi,n)modW=0时,(MLdpcOffset2)i,j=Z*(n-1);K为通用处理器一次可处理数据量大小,k为SIMD处理的基础单位...

【专利技术属性】
技术研发人员:牛凯贺志强张竟意
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1