当前位置: 首页 > 专利查询>东南大学专利>正文

基于SIMD指令集的多码率多码长LDPC码解码方法技术

技术编号:18599202 阅读:57 留言:0更新日期:2018-08-04 20:59
本发明专利技术提供了基于SIMD指令集的多码率多码长LDPC码解码方法,结合准循环结构的LDPC码基矩阵特点,通过外部配置文档实现对校验矩阵信息在线统计,采用定点分层译码方案,解码器为不同行重分别构造了一个特定校验节点计算单元,根据不同行重选择校验节点计算单元,校验节点计算单元内部采用循环展开方式。本发明专利技术实现了校验矩阵信息的在线统计,降低了多码率码长的LDPC码译码器的存储量;与现有算法相比消除了对矩阵统计信息的依赖,降低了译码器实现复杂度;与现有算法相比不存在速度损失,同时可以对在线计算的模块进行修正,具有通用性。

Decoding method of multi rate and multi length LDPC codes based on SIMD instruction set

The invention provides a multi code rate and multi code long LDPC decoding method based on the SIMD instruction set. Combining the characteristics of the LDPC code matrix of the quasi cyclic structure, it realizes the online statistics of the check matrix information through the external configuration document, and uses the fixed point layered decoding scheme, and the decoder constructs a specific checkpoint calculation without the peer weight. The unit selects the check node calculation unit according to different row weights, and the loop expansion method is adopted in the check node calculation unit. The invention realizes the online statistics of the check matrix information and reduces the storage of the LDPC code decoder with the multibit code length. Compared with the existing algorithms, it eliminates the dependence on the statistical information of the matrix, reduces the complexity of the decoder, and has no speed loss compared with the existing algorithms, and can also carry out the online computing module. It is revised and versatile.

【技术实现步骤摘要】
基于SIMD指令集的多码率多码长LDPC码解码方法
本专利技术属于信道编码
,具体涉及一种解码方法,更为具体的说,是涉及一种基于SIMD指令集的多码率多码长LDPC码解码方法。
技术介绍
LDPC码即低密度奇偶校验(Low-DensityParity-Check,LDPC)码,它是由RobertG.Gallager博士于1963年首次提出的一类具有稀疏校验矩阵的线性分组码并在1995被D.J.C.Mackay和R.W.Neal重新提出。LDPC码具有逼近Shannon限的良好性能,而且译码复杂度较低、结构灵活、低延时,可实现高速并行译码,近二十年来一直是信道编码领域的研究热点。目前LDPC码已广泛应用于无线通信(WiFi,WiMAX)、深空通信、光纤通信、卫星数字视频和音频广播等领域。现在LDPC码已经成为5G信道编码中数据信道的编码方案,eMMB场景已经确定使用LDPC码的编码方案。3GPP为LDPC码定义了两大类基矩阵,分别为BG1和BG2,其中BG1和BG2中各包括8个不同的基矩阵(参考文献2:3GPPTS38.212,“Multiplexingandchannelcoding,”v.1.0.0,Sep.2017;http://www.3gpp.org.)。BG_1中的基矩阵HBG_1的参数为Mb=46,Nb=68。BG2中的基矩阵的参数为Mb=42,Nb=52。BG1和BG2中各个基矩阵分别支持一组给定的扩展因子Zc。标准规定,编码后的码字前2Zc个信息比特打孔不传输,详细速率匹配方案参考文献2。图1给出了集合BG1中的LDPC码的矩阵结构示意图,整个矩阵结构由两部分组成,可以看做是核心矩阵和多个单奇偶校验码的级联。其中,核心矩阵是一个高码率矩阵,矩阵的右侧包含了一种双对角形式,并且第(Nb-Mb)列有“a-b-a”的形式,刚好可以满足编码算法的要求。核心矩阵与单奇偶校验码级联使得LDPC码支持码率低于核心矩阵的码字,并且构成了支持递增冗余混合重传(IncrementalRedundancyHybrid-Automatic-Repeat-request,IR-HARQ)结构。BG2中的LDPC码除核心矩阵部分“a-b-a”的取值和“a-b-a”对应的行与BG1略有不同以外,其余均与图1所示的矩阵结构相似。随着主要依靠时钟频率来提升处理器性能的方案达到了一个瓶颈,近些年来,作为继续提升处理器性能的并行处理技术受到了关注,主要包括单操作多数据流(SingleInstructionMultipleData,SIMD)技术,单操作多线程(SingleInstructionMultipleThreads,SIMT)技术,单程序多数据流(SingleProgramMultipleData,SPMD)技术等,这些技术已经被集成于当前的CPU和GPU。纯软件实现的LDPC码译码器近些年来受到了广大研究人员的关注,然而近些年的研究主要集中于洪泛方式的LDPC译码和GPU实现方式,这不是最有效的LDPC码译码器实现方式。最新的研究(参考文献1:GalBL,JegoC.High-ThroughputMulti-CoreLDPCDecodersBasedonx86Processor[J].IEEETransactionsonParallel&DistributedSystems,2016,27(5):1373-1386.)提出了一种基于X86架构的LDPC码的高速解码器,然而该方法需要离线统计校验矩阵的相关信息,实现复杂度高,将其应用于面向5G的一类支持多码率多码长的LDPC码比较困难。目前已经提出的LDPC码解码算法中,分层译码算法具有收敛速度快,占用内存少的特点受到了广泛关注,虽然分层译码算法的并行度不高,但是适用于X86架构处理器的软件实现;目前的已有研究表明,送入LDPC码解码器的对数似然比采用6比特量化,解码器采用8比特处理方式的定点译码和浮点译码相比,性能损失可以忽略不计。
技术实现思路
为解决上述问题,本专利技术公开了基于SIMD指令集的多码率多码长LDPC码解码方法,能够克服已有方法的LDPC码软件实现需要离线统计校验矩阵信息的缺陷。本专利技术结合准循环结构的LDPC码基矩阵特点,通过外部配置文档实现对校验矩阵信息在线统计,采用定点分层译码方案,解码器为不同行重分别构造了一个特定校验节点计算单元,根据不同行重选择校验节点计算单元,校验节点计算单元内部采用循环展开方式,既降低了复杂度,同时提高了吞吐率。本专利技术特点在于根据分块结构的LDPC码的基矩阵和扩展因子Zc,在线统计校验矩阵信息;解码器采用分层归一化最小和方式,为每一类行重构造相应的校验节点计算单元,校验节点计算单元内部采用循环展开方式。为了达到上述目的,本专利技术提供如下技术方案:基于SIMD指令集的多码率多码长LDPC码解码方法,包括如下步骤:S101:统计校验矩阵信息首先读取分块结构LDPC码的参数Mb、Nb和Zc以及基矩阵Hb,Mb为基矩阵的行数,Nb为基矩阵的列数,Zc为扩展因子;将Hb按照行重dc从大到小重新排序,结合Zc统计扩展后的H中行重和对应行重的数目,并将其存储到数组degs和degsComputation中,统计不同行重的数目NoDegs以及H中1的数目NoOnes,H表示LDPC码的校验矩阵,H的行、列数分别为M、N,M=Mb*Zc,N=Nb*Zc;根据Zc对Hb中非负元素hij进行取模,hij'=mod(hij,Zc),并用Zc*Zc的单位循环移位阵替换对应的非负元素,移位参数取hij',使用Zc*Zc的全零矩阵替换-1元素,得到校验矩阵H;创建以SIMD数据类型为基本类型的长度为N的数组var_nodes,存储变量节点的对数似然比En;使用一个指针数组p_vn_adr存储排序后H阵中每行中1对应的var_nodes的地址;创建一个大小为NoOnes的数组var_mesg,存储信息Lmn,Lmn为校验节点cm传递给变量节点vn的信息;S102:迭代初始化根据SIMD数据类型的特点,对输入的对数似然比[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]重新排序,[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]是串行送入解码器,经过Q比特量化采用P比特存储;将T个码字第j位的对数似然比依次排列成如[E1,j,E2,j,…,ET,j]所示格式,1≤j≤N,构成P*T比特的数据,存储到数组var_nodes中第j个位置,位宽为P*T比特;初始化迭代次数k=0;规定最大迭代次数为K;初始化各个校验节点传递给相邻变量节点的信息S103:迭代次数更新,k=k+1;S104:循环初始化初始化行度数索引j=0;初始化分别用于顺序读取和写入En地址的指针数组,p_indice_nodr=p_vn_adr,p_indice_nodw=p_vn_adr;初始化分别用于读取和写入Lmn的指针p_msg_lr=var_mesg,p_msg_lw=var_mesg;S105:行度数索引更新,j=j+1;S106:选取校验节点计算单元调用switch(degs[j]),进入对应的校验节点计算本文档来自技高网
...

【技术保护点】
1.基于SIMD指令集的多码率多码长LDPC码解码方法,其特征在于,包括如下步骤:S101:统计校验矩阵信息首先读取分块结构LDPC码的参数Mb、Nb和Zc以及基矩阵Hb,Mb为基矩阵的行数,Nb为基矩阵的列数,Zc为扩展因子;将Hb按照行重dc从大到小重新排序,结合Zc统计扩展后的H中行重和对应行重的数目,并将其存储到数组degs和degsComputation中,统计不同行重的数目NoDegs以及H中1的数目NoOnes,H表示LDPC码的校验矩阵,H的行、列数分别为M、N,M=Mb*Zc,N=Nb*Zc;根据Zc对Hb中非负元素hij进行取模,hij'=mod(hij,Zc),并用Zc*Zc的单位循环移位阵替换对应的非负元素,移位参数取hij',使用Zc*Zc的全零矩阵替换‑1元素,得到校验矩阵H;创建以SIMD数据类型为基本类型的长度为N的数组var_nodes,存储变量节点的对数似然比En;使用一个指针数组p_vn_adr存储排序后H阵中每行中1对应的var_nodes的地址;创建一个大小为NoOnes的数组var_mesg,存储信息Lmn,Lmn为校验节点cm传递给变量节点vn的信息;S102:迭代初始化根据SIMD数据类型的特点,对输入的对数似然比[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]重新排序,[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]是串行送入解码器,经过Q比特量化采用P比特存储;将T个码字第j位的对数似然比依次排列成如[E1,j,E2,j,…,ET,j]所示格式,1≤j≤N,构成P*T比特的数据,存储到数组var_nodes中第j个位置,位宽为P*T比特;初始化迭代次数k=0;规定最大迭代次数为K;初始化各个校验节点传递给相邻变量节点的信息...

【技术特征摘要】
1.基于SIMD指令集的多码率多码长LDPC码解码方法,其特征在于,包括如下步骤:S101:统计校验矩阵信息首先读取分块结构LDPC码的参数Mb、Nb和Zc以及基矩阵Hb,Mb为基矩阵的行数,Nb为基矩阵的列数,Zc为扩展因子;将Hb按照行重dc从大到小重新排序,结合Zc统计扩展后的H中行重和对应行重的数目,并将其存储到数组degs和degsComputation中,统计不同行重的数目NoDegs以及H中1的数目NoOnes,H表示LDPC码的校验矩阵,H的行、列数分别为M、N,M=Mb*Zc,N=Nb*Zc;根据Zc对Hb中非负元素hij进行取模,hij'=mod(hij,Zc),并用Zc*Zc的单位循环移位阵替换对应的非负元素,移位参数取hij',使用Zc*Zc的全零矩阵替换-1元素,得到校验矩阵H;创建以SIMD数据类型为基本类型的长度为N的数组var_nodes,存储变量节点的对数似然比En;使用一个指针数组p_vn_adr存储排序后H阵中每行中1对应的var_nodes的地址;创建一个大小为NoOnes的数组var_mesg,存储信息Lmn,Lmn为校验节点cm传递给变量节点vn的信息;S102:迭代初始化根据SIMD数据类型的特点,对输入的对数似然比[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]重新排序,[E1,1,…,E1,N,E2,1,…,E2,N,…,ET,1,…,ET,N]是串行送入解码器,经过Q比特量化采用P比特存储;将T个码字第j位的对数似然比依次排列成如[E1,j,E2,j,…,ET,j]所示格式,1≤j≤N,构成P*T比特的数据,存储到数组var_nodes中第j个位置,位宽为P*T比特;初始化迭代次数k=0;规定最大迭代次数为K;初始化各个校验节点传递给相邻变量节点的信息S103:迭代次数更新,k=k+1;S104:循环初始化初始化行度数索引j=0;初始化分别用于顺序读取和写入En地址的指针数组,p_indice...

【专利技术属性】
技术研发人员:姜明皮秀伟赵春明
申请(专利权)人:东南大学
类型:发明
国别省市:江苏,32

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

1