一种LDPC编码方法与流程

文档序号:14256783阅读:378来源:国知局

本发明属于信道编码技术领域,尤其涉及一种ldpc编码方法。



背景技术:

ldpc(lowdensityparitycheckcode,低密度奇偶校验码)编码技术是近年信道编码领域的研究热点,目前已广泛应用于卫星通信、光纤通信、移动通信、数字广播通信等领域。ldpc码的优点在于接近香农极限、结构灵活、更低的误码平层;但缺点是硬件资源需求较大,尤其较长的码字才能体现性能上的优势,导致编码更复杂,需求的硬件资源更大;如果单纯从节省资源的角度设计编码器,又会使编码器的控制变得复杂或者带来过大的处理延时。

以目前一种数字广播系统采用的(38880,25920)ldpc编码为例,信息位为38880比特,校验位为25920比特。在例如利用rtl(resistortransistorlogic)方式实现时,如果按照全并行处理的方式编码,需要的存储单元为38880*25920比特的矩阵。如此大的存储容量需求对于ldpc编码器的小型化、低功耗都非常不利;而为了节约存储空间,也可以仅采用1*25920的存储单元,但是相应的寻址操作会变得相当复杂,处理延时也会大大增加,给实现快速可靠ldpc编码带来很大困难。另外,由于ldpc码字还具有一定的“非规律”特性,即相当部分的码字不能通过运算获得,使得ldpc编码器的实现结构与码字的构造结构密切相关,从而更换码表很可能导致整个ldpc编码器设计推到重来。

综上,在进行ldpc编码时,如果能找到一种方法既能使ldpc编码器的存储空间尽可能小,又不至于使设计难度太大,还能兼顾到不同码字的通用性——更换码字不至于使整个设计推倒重来,则该方法不失为一种具有显著进步的ldpc编码器设计方法。



技术实现要素:

本发明的目的旨在提供一种ldpc编码方法,能够使得存储空间尽可能小,又不至于使设计难度太大,还能兼顾到不同码字的通用性。

依据上述目的,实施本发明的一种ldpc编码方法,包括以下步骤:设计用于进行ldpc编码的ldpc编码矩阵;初始化编码存储器ram,将串行输入的信息比特部分与编码矩阵的每一列的列矩阵信息分别依次进行运算,所得运算结果寄存于编码存储器用于输出校验比特部分;其中,所述编码存储器的数量由以所述编码矩阵的最大列重n来确定,设计所述ldpc编码矩阵,包括:所述编码矩阵以l列为单位,分为若干个子列矩阵;子列矩阵中第一列矩阵信息由ldpc码表给出,后续相邻列矩阵信息由第一列矩阵信息通过预设推算方式得出。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,设计所述ldpc码表,包括:所述ldpc码表由i行地址信息组成,该地址信息给出ldpc编码矩阵第(i-1)*l+1列中1的位置索引。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,预设推算方式为:

an为从码表读出的第1列矩阵信息;

am为由an推算得出的后续相邻列中列矩阵信息即“1”的位置索引;

m为检验比特部分长度;

l为所述编码矩阵中子矩阵的大小即所述子列矩阵的预定列长度;

m是子列矩阵中列序号减1,即m=1,…,l-1;

可得:am=(an+m*m/l)mod(m)。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,信息比特部分和列矩阵信息做运算方式为模2加。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,当全部信息比特串行输入完毕后,读取n个校验位运算中间结果与模2加法器的输出结果做模2加运算,其中,模2加法器的初始结果为比特0,从而得到m个校验比特部分。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,所述编码矩阵中子矩阵的大小l是基于信息比特部分长度k和校验比特部分长度m、以及所述编码矩阵的大小来确定的。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,其中,所述编码存储器的存储深度为m,宽度为1,该存储深度由所述校验比特部分的长度m确定。

进一步地,根据本发明的ldpc编码方法,还具有这样的特征,ldpc编码器还包括,将输出的校验比特部分和信息比特部分进行拼接组合。

本发明的作用和效果

本发明采用的ldpc编码方法具有如下优点:依据编码矩阵的最大列重来合理确定编码存储器的数量,能够在大幅降低存储空间的同时,使得对存储空间的寻址控制复杂度大幅降低;并且编码器输出延时较小,在全部信息位比特输入完成后仅需少量(小于等于十个时钟周期)时钟周期即可输出校验位比特;更改ldpc编码码字不会使整个设计推倒重来,只做适当调整即可。

附图说明

图1是本发明的一种ldpc编码方法的步骤图;

图2是本发明的一种ldpc编码器的逻辑电路示意图。

具体实施方式

下面结合附图和实施例进一步说明本发明的技术方案。

图1是本发明的一种ldpc编码方法的步骤图;

本实施例提供了一种ldpc编码方法,包括以下步骤:

步骤s1:设计用于进行ldpc编码的ldpc编码矩阵;

步骤s2:对编码码字中的信息比特部分与ldpc编码矩阵进行运算,所得运算结果寄存于编码存储器用于输出校验比特部分;

其中,编码存储器的数量由以编码矩阵的最大列重n来确定。

令ldpc的编码结果为c=(λ0,λ1,...,λk-1,p0,p1,...,pm,...,pm-1);其中,(λ0,λ1,...,λk-1)为原始的信息比特部分,是已知的{1,0}序列。(p0,p1,p2,...,pm-1)是校验比特部分,为待计算的比特。

ldpc编码器的构造方法的具体实现方法如下:

步骤1、设计ldpc的编码矩阵和ldpc码表,使得编码矩阵具有如下特性:

编码矩阵的列可以等分成q部分,即q个列矩阵部分,每部分包含连续的l列,即有q*l=k,其中k为原始信息比特部分的比特数,l为编码矩阵中子矩阵的大小即列矩阵部分的预定列长度。

每相邻的l列矩阵中,第一列矩阵信息由码表给出(码表由q行组成,每行给出ldpc编码矩阵第i*l+1列中“1”的位置索引,i=0,1,2,…,q-1),后面的l-1列矩阵信息可以由第一列通过预设推算方式进行推算得出。

步骤2、生成n个1*m深度的ram,其中n为编码矩阵的最大列重(每列中“1”的个数),m为校验比特部分的长度。初始化ram所有地址数据为比特0。

步骤3、编码器串行输入的第一个信息比特λ0分别与n个ram中读出的an地址的数据做模2加运算,并将结果再回存入n个ram的读出地址an中,即其中,an为从码表读出的第1列矩阵信息(即“1”在列中的位置索引),n为编码矩阵的第一列列重,且有n≤n;此过程为对n个ram的并行操作。

步骤4、对于编码器串行输入的后面l-1位信息比特λm,m=1,…,l-1,同样分别与rm个ram中读出的am地址的数据做模2加运算,并将结果再回存入rm个ram的读出地址am中,即其中,am为由an推算得出的后续相邻列中“1”的位置索引,am和an之间满足预设推算方式;rm为编码矩阵在该列的列重,且有rm≤n;此过程也为对rm个ram的并行操作。

该预设推算方式为:am=(an+m*m/l)mod(m),l为编码矩阵中子矩阵的大小即列矩阵部分的预定列长度;

m是子列矩阵中列序号减1,即m=1,…,l-1。

步骤5、同样地,对于编码器串行输入的第i*l+1个信息比特(i=1,2,…,q-1),分别按照步骤3所述,并行与对应列重个ram中读出的数据做模2加运算,读ram的地址是从码表中第i+1行读出的位置索引;然后将结果并行写回对应的ram原读出地址中。

步骤6、对于编码器串行输入的第i*l+j个信息比特(i=1,2,…,q-1,j=2,3,…,l-1),分别按照步骤4所述,并行读取列重个ram,读地址为根据规律的推算地址,与信息位做模2加运算,再将结果写回对应ram的原读出地址中。

步骤7、当全部信息比特串行输入完毕后,n个1*m深度的ram中存储的校验位中间结果记为:

(p1,0,p1,1,p1,2,...,p1,m-1,p2,0,p2,1,p2,2,...,p2,m-1,......,pn,0,pn,1,pn,2,...,pn,m-1),,并行读取n个1*m深度的ram(读地址按照从低到高的顺序依次增加),并将n个ram的输出数据与模2加法器的输出结果做模2加运算,其中,模2加法器的初始结果为比特“0”,从而,得到m个校验比特(p0,p1,p2,...,pm-1),如下式所示:

p0=p0

图2是本发明的一种ldpc编码器的逻辑电路示意图。

本实施例,提供了一种用于实现ldpc编码器的一个优选逻辑电路实例。

在逻辑电路中,ram_1到ram_n是n个深度为1*m的随机存储器ram,其中,n为编码矩阵的最大列重,m为校验比特部分的长度。

ramcontroler是n个ram的读写控制器,可以并行对n个ram做读操作或者写操作。

用于存储ldpc码表的码表rom用于存储编码矩阵中第i*l+1列中“1”的位置索引,i=0,1,2,q-1;圆形加法器表示2比特模2加法,方形加法器表示n比特模2加法;delay延迟模块表示对输入的信息比特做的必要延迟,以便生成的校验比特能与信息比特连续输出;combine拼接模块用于将信息比特部分与运算处理得出的校验比特部分合为1路数据串行输出。

以下通过具体参数实例来说明本发明的ldpc编码方法。

实施例1:

以一种信息位比特部分的位数为38880比特,校验比特部分的位数为25920比特的ldpc编码为例,根据本发明的实现方法:

步骤1:设计一个ldpc编码矩阵和ldpc码表,使编码矩阵具有如下特性:

1)矩阵的列可以等分成108部分,即108个列矩阵部分,每部分包含连续的360列,有108*360=38880列;

其中,编码矩阵中子矩阵的大小l是基于信息比特部分长度k和校验比特部分长度m、以及编码矩阵的大小来确定的,本实施例中就取值360,子矩阵的大小为360*360。

2)设计所述ldpc编码矩阵,包括:编码矩阵以预定列长度360分为若干个列矩阵部分;列矩阵部分中第一列矩阵信息由ldpc码表给出,后续相邻列矩阵信息由第一列矩阵信息通过预设推算方式得出。

具体参数而言,每相邻的360列矩阵中,第一列矩阵信息由ldpc出(码表由108行组成,第i行给出ldpc编码矩阵第(i-1)*360+1列中“1”的位置索引,i=1,2,3,…,108),后面的359列的矩阵信息可以由第一列的列矩阵信息通过如下方式推算得出:am=(an+m*25930/360)mod(25920),t=1,…,359,m是子列矩阵中列序号减1,即m=1,…,l-1。

3)设计ldpc码表,设计方式包括:ldpc码表由i行地址信息组成,该地址信息给出ldpc编码矩阵第(i-1)*l+1列中1的位置索引。

本实施例中,所设计的ldpc码表如下:

步骤2:生成n个1*m深度的ram,其中n为编码矩阵的最大列重(每列中“1”的个数),由上述码表可知此处n=19;m为校验比特部分的长度,为25920。初始化ram所有地址数据为比特0。

步骤3:编码器串行输入的第一个信息比特λ0分别与19个ram中读出的an地址的数据做模2加运算,并将结果再回存入19个ram的读出地址an中,即其中,an为从码表读出的第1列矩阵信息(即“1”在列中的位置索引),此处为ldpc码表中的line1:11315573316568062411040713404139471404014353155221569816079173631937419543205302283324339。

步骤4:对于编码器串行输入的后面359位信息比特λm,m=1,…,359,同样分别与19个ram中读出的am地址的数据做模2加运算,并将结果再回存入19个ram的读出地址am中,即其中,am为根据编码矩阵的推算关系由an推算得出的该列中“1”的位置索引,此处预设推算方式为:

am=(an+m*25920/360)mod(25920),其中m=1,…,359。

步骤5:同样地,对于编码器串行输入的第i*360+1个信息比特(i=1,2,…,107),分别按照步骤3所述,并行与对应列重个ram中读出的数据做模2加运算,读ram的地址是从码表中第i+1行读出的位置索引;然后将结果并行写回对应的ram原读出地址中。

步骤6:对于编码器串行输入的第i*360+j个信息比特(i=1,2,…,107,j=2,3,…,359),分别按照步骤4所述,并行读取列重个ram,读地址为根据am=(an+t*25920/360)mod(25920),其中t=1,…,359的推算地址,与信息位做模2加运算,再将结果写回对应ram的原读出地址中。

步骤7:当全部信息比特串行输入完毕后,19个1*25920深度的ram中存储的校验位中间结果记为:

(p1,0,p1,1,p1,2,...,p1,25919,p2,0,p2,1,p2,2,...,p2,25919,......,p19,0,p19,1,p19,2,...,p19,25919),

,并行读取这19个ram(读地址按照从低到高的顺序依次增加),将19个ram的输出数据做模2加法,并将模2加法器的输出结果与下次的19个ram输出结果再做模2加法,从而得到25920个校验比特,如下式所示:

通过上述7个步骤即完成ldpc编码校验码的生成。

总结来看,利用本实施例ldpc编码方法中,通过将编码存储器的数量设置为由以编码矩阵的最大列重n来确定,即为19个ram,采用本发明所述的构造方法与其他两种方案所消耗的ram资源和计算延迟的比对结果如表1所示:

表1结果比对表

由表1的对比结果可知,依据编码矩阵的最大列重来合理确定编码存储器的数量,能够在大幅降低消耗ram资源;并且编码器输出延时较小,另外,更改ldpc编码码字不会使整个设计推倒重来,只做适当调整即可。

所属领域的技术人员应当认识到,以上的说明书仅是本发明众多实施例中的一种或几种实施方式,而并非用对本发明的限定。任何对于以上所述实施例的均等变化、变型以及等同替代等技术方案,只要符合本发明的实质精神范围,都将落在本发明的权利要求书所保护的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1