本申请是原案的分案申请,原案的申请号201410258324.5,申请日2014年6月11日,发明创造名称“针对下一代无线广播的ldpc码字及编码方法和编解码器”。
本发明涉及一种ldpc码的编码方法及编码器,更具体地说,涉及一种s-iraldpc码的编码方法及对应的编码器。
背景技术:
低密度奇偶校验码字(lowdensityparitycheck,ldpc)根据其结构主要可以分为两类,一类是随机的码字,最经典的当属mackay码,他还有专门的网页给出他的各种码字(mackay1999)(richardson2001)(luby2001)(richardsonandurbanke2001);另外一类是基于代数组合结构(combinatorial)来设计的码字。随机码字能够非常好的逼近香农极限,但是由于‘1’分布的随机性,导致编码器的设计和译码器的设计并不具有并行或者规律性可行,所以不适合需要具备一定吞吐量系统,因此也就没有被广泛应用了。
而基于代数组合结构的码字的出现很好的解决了这方面的问题,这其中,有一类基于有限域(finitegeometry)设计的码字具有很好的性能(y.kouands.lin2001),但是这类码字的缺点是由于其h矩阵密度比较高(大的行重列重),所以当使用基于置信传播的一类算法时,复杂度非常高。而另一类准循环码字(quasi-cyclicldpc,qc-ldpc)是一类非常重要的基于代数组合构造的码字。qc-ldpc码字主要的构造是基于准循环的单位子矩阵。(j.l.fan2000)(r.m.tanner2001)(r.m.tanner2001)(t.okamura2003)(r.m.tanner2004)这种准循环的单位子矩阵结构非常适合实现并行操作的硬件,比如实现并行度大、进而高吞吐率的译码器。传统的这种qc-ldpc码字尽管适合并行度高的译码器实现,提高了吞吐率,但是通过逆向方法得到了qc结构的生成矩阵可能并不稀疏,或者就算稀疏,其用生成矩阵来编码得到校验比特并不是显然的,要通过求线性方程组来获得,因此传统的qc-ldpc码字的编码器还是相对复杂的。为了解决这个问题,学者zhang和ryan首先提出的结构化的重复累积码(structuredirregularrepeataccumulatorcode,s-ira)ldpc码字(zhangandryan2006),该结构在适合高并行译码器的实现的同时,可以以非常简便高效的方法来完成编码。该种码字结构有如下特点,信息比特所对应的矩阵部分由准循环子矩阵组成,而校验比特所对应的矩阵部分是由双对角阵组成的。
目前s-ira码字已经被广泛应用在各大通信标准中,主要包括,欧洲第二代数字广播电视传输标准dvb系列(etsi,2006,dvbt22009,dvb-c22009,dvb-ngh2012);ieee802.11n无线局域网标准(ieee802.11n2009);ieee802.11e无线广域网标准(ieee802.16e2006);中国数字电视地面传输标准(dttb)(gb20600-2006);移动多媒体广播(cmmb2006);北美ccsds的近地深空通信系统(ccsds2007);以及一些磁盘存储设备的标准等等。从整个国际范围数字通信领域的发展态势来看,还会有更多的标准正在或将来会用到ldpc码字。
从目前已经提交的标准中,特别是商业上非常成功的dvbt2、dvbs2标准,以及最近才定下标准并且商业上有广阔前景的dvb-ngh标准(2012年底定稿)来看,其使用的s-ira码字所对应的校验矩阵主要使用的结构如下:
h=[πh1p]
其中h1是信息比特对应的矩阵部分,π是对h1的一个某种形式的行变换,而p是校验比特对应的矩阵部分。
而:
是由l×j个
例如,pi,j的第一种结构如下所示:
pi,j的第二种结构如下所示:
由于pi,j可以由一个以上的单位循环阵组成,导致其并不适合hss(horizontalshufflescheduling)译码算法的硬件实施。关于这点在dvbt2和s2的实现方法的文献中有不少提及到,并提出了相关的牺牲复杂度的解决办法。
而p是校验比特对应的矩阵部分,其是如下的双对角阵:
技术实现要素:
本发明的目的旨在提供一种s-iraldpc码字及对应的编码器、解码器和编码方法,来解决现有技术中常见的s-iraldpc码的校验矩阵的结构所带来的不适合hss(horizontalshufflescheduling)译码算法、影响整个ldpc码字性能的问题。
本专利即提出了一种pi,j只有0个或者1个单位循环矩阵组成的结构。在保持性能的条件下,适用于hss译码。同时提出一种具体参数的码字,及其码表,并提出了相应的编码方法编码器、译码方法及译码器。
依据上述目的,实施本发明的一种用于编解码器的s-iraldpc码字,其码字的结构为:h=[h1∏p′],h1′为信息比特矩阵,p′是校验比特矩阵,πp′是对校验比特矩阵做行变换。其中,信息比特矩阵h1′包括多个循环子矩阵pi,j,每一个循环子矩阵只能是单位循环偏移矩阵或全零矩阵。
依据上述目的,实施本发明的一种ldpc编码器,其采用一种s-ira结构的ldpc码字,s-iraldpc码字的结构为:h=[h′1∏p′],h1′为信息比特矩阵,p′是校验比特矩阵,πp′是对校验比特矩阵做行变换。其中,信息比特矩阵h1′包括多个循环子矩阵pi,j,每一个循环子矩阵只能是单位循环偏移矩阵或全零矩阵。
依据上述目的,实施本发明的一种ldpc解码器,其采用一种s-ira结构的ldpc码字,s-iraldpc码字的结构为:h=[h1′πp′],h1′为信息比特矩阵,p′是校验比特矩阵,πp′是对校验比特矩阵做行变换。其中,信息比特矩阵h1′包括多个循环子矩阵pi,j,每一个循环子矩阵只能是单位循环偏移矩阵或全零矩阵。
依据上述主要特征,本发明编码器、解码器及其中的s-iraldpc码字的信息比特矩阵为m行×n-m列的矩阵:
依据上述主要特征,本发明编码器、解码器及其中的s-iraldpc码字的校验比特矩阵p′为m行×m列的矩阵:
依据上述目的,实施本发明的s-iraldpc码字的编码方法包括以下步骤:
获得信息比特{i0,i1,i2,i3,i4,i5,...,in-m-1,in-m};
初始化校验比特p0=0,p1=0,p2=0,p3=0,p4=0,...,pm=0;
将每一个校验比特pk以及与其相连的信息比特做模2和,k=0,1,2…m-1,并做重新排列,得到重排后的校验比特序列
将重排后的校验比特序列
依据上述目的,实施本发明的ldpc编码方法和编码器,其中编码器内置的编码运算模块采用了所述ldpc的编码方法,其包括:
计算校验比特
其中,q=320,m=24000或者m=11520,x表示参与奇偶校验比特累加的信息比特的地址,针对上述两个m值,x的表分别为以下两个码表:
码表1:码率7/12m=24000,码长n=57600
码表2:码率12/15m=11520,码长n=57600
采用了本发明的技术方案,通过大量仿真模拟,找出了比现有技术更适用于hss(horizontalshufflescheduling)译码算法的一种s-iraldpc码字的信息比特矩阵结构,以及使用这种s-iraldpc码的编码器、解码器,从而产生了意想不到的s-iraldpc码字性能上的提升。
具体实施方式
下面结合实施例进一步说明本发明的技术方案。
hss(horizontalshufflescheduling)算法相比于洪水(flooding)算法的区别在于,flooding算法则是必须等到所有的行操作完之后,得到的数据一次性进行更新,然后用到下一次迭代中去,而hss算法中在某一次迭代里,每一行行操作后得到的结果可以立即更新,用到仍然在本次迭代的下一次行操作中去,这样可以大大提高译码算法的收敛速度。另一方面,hss算法只需要保存n个(n为码长)软信息和的数据,以及m×2个(m为校验矩阵的行数)行操作的结果软值信息,相比于flooding算法,节省了非常多的芯片面积。
但是,现有的hss算法在选择循环子块时,循环子块通常不是单位子块,而是两个或者两个以上的单位子块,这在并行操作的过程中势必导致内存访问的冲突。这是因为如果循环子块由两个以上的单位子块构成,那么当循环子块在并行行操作的时候,会有两个行的行操作输入同时要求读取同一块内存,并且在操作完之后同时写同一块内存。这既没有达到hss算法的初衷,也会导致内存冲突。
因此,基于现有标准中ldpc码字结构的缺点,具体来说,是信息比特矩阵中的循环子矩阵可能由有多个循环单位阵组成导致不适合hss译码算法实现的问题,本发明提出一种新的s-iraldpc码字的结构,其校验矩阵的结构如下:
h=[h′1πp′],
其中,h′1是信息比特矩阵,p′是校验比特矩阵,πp′是对校验比特矩阵p′做的一个某种形式的行变换。
信息比特矩阵h′1是一个m行×n-m列的矩阵,其具体结构如下所示:
在本发明中,信息比特矩阵h1′包括多个循环子矩阵pi,j,h1′中的每一个循环子矩阵pi,j的大小为
根据上述的pi,j结构的限定可以得到,本发明的循环子矩阵pi,j只可能是如下两种具体的结构形式:
1)
2)
另一方面,为了配合信息比特矩阵h1′的结构,本发明的校验比特矩阵p′是一个m行×m列的矩阵,其具体结构如下所示:
由上述结构可以看出,校验比特矩阵p′是一种特殊的双对角矩阵,其主对角上都是‘1’,次对角线上也为‘1’,各行、列的其余部分位置上均为‘0’。
本发明另外还公开一种ldpc编码器,其采用的就是上述的s-iraldpc码字,具体来说,其校验矩阵的具体结构是:
h=[h1∏p′],其中,h1′为信息比特矩阵,p′是校验比特矩阵,∏p′是对校验比特矩阵做行变换。特别的,信息比特矩阵h1′包括多个循环子矩阵pi,j,每一个循环子矩阵只能是单位循环偏移矩阵或全零矩阵。
本发明另外还公开一种ldpc解码器,其采用的就是上述的s-iraldpc码字,具体来说,其校验矩阵的具体结构是:
h=[h1′пp′],其中,h1′为信息比特矩阵,p′是校验比特矩阵,πp′是对校验比特矩阵做行变换。特别的,信息比特矩阵h1′包括多个循环子矩阵pi,j,每一个循环子矩阵只能是单位循环偏移矩阵或全零矩阵。
由于本发明的编码器和解码器均采用上述公开的ldpc码字,因此其ldpc码字的其他细节特性在上述说明书中已公开,这里不再重复说明。
此外,本发明还公开了上述ldpc码字的编码方法,其主要步骤如下:
步骤s1:获得信息比特,设置已知的信息比特为{i0,i1,i2,i3,i4,i5,...,in-m-1},所谓编码即利用校验矩阵h求出校验比特:
步骤s2:初始化校验比特p0=0,p1=0,p2=0,p3=0,p4=0,...,pm=0;
步骤s3:将每一个校验比特pi以及与其相连的信息比特做模2和,即:pi=pi
步骤s4:将重排后的校验比特序列
最终得到校验比特序列:
通过本发明的说明书所公开的技术方案可见,本发明的s-iraldpc码字的特点是其信息比特矩阵中的循环子矩阵除了0矩阵的结构之外,只可能由单位循环偏移矩阵构成,这种循环子矩阵的选择适应了hss算法并行计算是基于循环子块的技术特征,因此当循环子块在并行行操作的时候,不存在两个行的行操作输入同时要求读取同一块内存,也不存在操作完之后同时写同一块内容,这样能够避免内存冲突。
根据本发明的信息比特矩阵和校验比特矩阵所构成的s-iraldpc码、应用本发明ldpc码的编码器、解码器在hss算法中能够有较佳的码字性能。
此外,本发明还公开一种与上述s-iraldpc码字相对应的编码方法和编码器,并且能够对应上述结构。编码器内置有编码运算模块,并且编码运算模块采用了如下的ldpc编码方法:
在编码运算模块中,
计算校验比特
其中,q=320,m=24000或者m=11520,x表示参与奇偶校验比特累加的信息比特的地址,针对上述两个不同的m值,x的表分别为以下两个码表:
码表1:码率7/12m=24000,码长n=57600
码表2:码率12/15m=11520,码长n=57600
具体来说,令ldpc的码字为:
c=(i0,i1,...,ij,...,ik-1,p0,p1,...,pm-1);其中,(i0,i1,...,in-m-1)为信息比特比特,是已知的{1,0}序列。(p0,p1,p2,...,pm-1)为校验比特,为待计算的比特。
首先初始化所述校验部分所对应的各校验比特,
即p0=0,p1=0,p2=0,p3=0,p4=0,p5=0,...,pm-1=0,其中每个pi代表校验矩阵中的一行,例如pm代表校验矩阵中的第m行。
将校验比特按照q个比特为一组进行分组以得到多个校验比特组。
具体地,首先,设置所述校验比特为:
{p0,p1,p2,p3,p4,p5,...,pm-1}
然后,将所述校验比特按顺序以q个比特为一组进行分组以得到多个校验比特组。
例如,校验比特组为:
{pjq+0,pjq+1,...,pjq+(q-1)},其中,j取值为(0、1、2、…、q-1),其中
其次,将各校验比特组中的校验比特与其在低密度奇偶校验矩阵中所关联的信息比特进行累加处理。
具体地,对每个校验比特组中的q个比特pm作如下异或运算:
其中,q=320,m=24000或者m=11520,x表示参与奇偶校验比特累加的信息比特的地址;x表示各个校验比特组中第一个校验比特(例如可以是p0,pq+0,p2q+0,...,pjq+0,...)所代表的所述低密度奇偶校验矩阵中的行(对应第0,q,2q,3q,...,jq,...行)里“1”所在列的位置,但不包括所述低密度奇偶校验矩阵中校验部分中的“1”的列的位置。
以码表1的码字为例,q=320,校验比特数m=24000,信息比特数n-m=33600。
表1中的第一行数字:
61297193128114679996118361205032383833041
每个数字代表了低密度奇偶校验矩阵中的第一行(对应第一个校验比特p0)中“1”的位置(即列的位置),但这个位置并不包括低密度奇偶校验矩阵的校验部分的“1”的列的位置。
另外该行的数字即为x,代表了第一个校验比特块中的第一个比特p0所代表校验矩阵中的第0行的“1”的位置(即列的位置,列同样以0开始计数)。
那么有:
做完这个之后,则根据公式(1)有:
对于其他行依照上述公式(1)依次类推,在此不一一列举。
之后对累加后的各校验比特作交织处理。
具体地,包括:对累加后的各校验比特依照置换格式作交织处理,其中所述置换格式通过如下公式实现:
piq'=pi;piq+1'=pi+q;piq+2'=pi+2q;piq+3'=pi+3q;
piq+4'=pi+4q,...,piq+q-1'=pi+(q-1)q;
其中,i=0、1、2、3、……、q-1。
例如,
其中,
在本实施例中,{p0,p1,p2,p3,p4,p5,...,pm-1}表示交织前的校验比特;
{p0',p1',p2',p3',p4',p5',...,pm-1'}表示交织后的校验比特。
最后将经过交织处理后的各校验比特进行模2加运算以得到最终的校验比特。
具体地,本步骤通过如下公式实现:
p′0=p′0
得到的(p0',p1',...pm-1')即为最终编码后的校验比特,最终得到的ldpc码c=(i0,i1,...,ij,...,in-m-1,p0',p1',...,pm-1')。
对于现有技术中通过牺牲复杂度来解决ldpc码用于hss算法时内存冲突的问题,本发明的s-iraldpc码、使用s-iraldpc码的编码器、解码器中的信息比特矩阵的选择设计能够产生意想不到的技术效果,从码字结构本身上,有效地降低了hss算法的复杂度,解决了上述现有技术中存在的技术难题。
所属领域的技术人员应当认识到,以上的说明书仅是本发明众多实施例中的一种或几种实施方式,而并非用对本发明的限定。任何对于以上所述实施例的均等变化、变型以及等同替代等技术方案,只要符合本发明的实质精神范围,都将落在本发明的权利要求书所保护的范围内。