CN102684707B - 一种ldpc编码器 - Google Patents
一种ldpc编码器 Download PDFInfo
- Publication number
- CN102684707B CN102684707B CN201210157967.1A CN201210157967A CN102684707B CN 102684707 B CN102684707 B CN 102684707B CN 201210157967 A CN201210157967 A CN 201210157967A CN 102684707 B CN102684707 B CN 102684707B
- Authority
- CN
- China
- Prior art keywords
- ram
- matrix
- address
- generation module
- information bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供一种高编码效率的LDPC编码器。LDPC编码器在S矩阵生成时采用并行计算方法,利用RAM更新计算模块输出的一组信息位更新一行S矩阵的元素。在计算S矩阵列和时,并不是等待S矩阵生成完毕后,再对S矩阵的每列元素进行异或;而是直接对RAM更新计算模块输出的信息位进行计算得到S矩阵列和,S矩阵列和结果与S矩阵生成结果同时得到,缩短了校验位的生成时间。另外,在编码过程中RAM更新计算模块仅向右一个方向循环移位,RAM地址与移位因子产生模块按照对应移位值从小到大的顺序对用于读写的RAM地址进行排序,并顺次输出移位值至进行循环移位的RAM更新计算模块,减小了移位的复杂度,进一步缩短编码时间。
Description
技术领域
本发明涉及通信技术,特别涉及低密度奇偶校验码(LDPC,Low Density Parity Check)编码技术。
背景技术
在由欧洲电信标准化协会ETSI制定的第二代欧洲数字地面电视广播传输标准DVB-T2的电视广播通信协议中,在信道编码的前向纠错FEC部分,便应用了LDPC前向纠错编码器。
在DVB-T2的电视广播通信协议中,仅仅给出了码字的码长码率和校验矩阵两部分信息,并没有给出LDPC编码器具体的实现方式。
LDPC校验矩阵结构具有稀疏性,LDPC编码直接采用校验矩阵进行编码。校验矩阵H的结构如下所示:
校验矩阵H包括矩阵Hu以及矩阵Hp。矩阵Hp为双对角矩阵,矩阵Hu中的所有元素均为0或1。为了描述清楚矩阵Hu中行与列的对应关系,引入了信息节点与校验节点。矩阵Hu每一列对应为一个信息节点,每一行对应一个校验节点。当矩阵Hu中第r行第c列的a元素为1,则描述校验节点r与信息节点c相邻。矩阵Hu的维数不同,可以得到不同码率的码字。矩阵Hu将每M个信息节点分成一组,即每M列向量(每M个信息节点)组成一个子矩阵 子矩阵内的每个信息节点的度,子矩阵间每个信息节点的度可以相同也可以不同。子矩阵中,每一列元素“1”的位置是前一列元素“1”的位置的循环移位,移位步长为q,同一子矩阵t内不同列向量A之间的关系,如表达式(1):
T为矩阵转置,rot表示循环右移。经过LDPC编码后输出的码字c=(m0,m2,…mk-1,p0,p1,…pn-k-1),其中,n为码字长度,k为信息位m的长度,n-k为校验位p的长度。码字c为有效码字的条件是H·cT=0,即:
[Hu Hp]·cT=0 (2)
通过式(2)进而得到校验位p与信息位m的关系为:
定义IN(r)为与第r个校验节点相邻的所有信息节点的集合;如此,上式可以改写为:
对于r=0,…,(n-k-1),有:
按照二进制矩阵方式存储Sr,形成的S矩阵如下:
其中,n-k=q×M。当S矩阵中各S元素确定,各校验位p就能计算得到。LDPC编码器需要根据输入的信息位m0,m2,…mk-1经校验矩阵H得到校验位p0,p1,…pn-k-1从而输出编码后的码字c。即,如何快速得到校验位是实现LDPC编码器的关键。
发明内容
本发明所要解决的技术问题是,提供一种高编码效率的LDPC编码器。
本发明为解决上述技术问题所采用的技术方案是,一种LDPC编码器,包括I/O接口、RAM地址与移位因子产生模块、RAM更新计算模块、S矩阵生成模块、S矩阵列和计算模块、校验位生成模块、码字生成模块;所述S矩阵生成模块中包括一个存储S矩阵各元素的RAM;RAM地址与移位因子产生模块包括第一地址产生器和第二地址产生器;
I/O接口用于,每次输出一组位宽为M的信息位;
RAM地址与移位因子产生模块用于,初始化时,根据第二代欧洲数字地面电视广播传输标准DVB-T2地址表计算得到的S矩阵中每行对应的地址表的值addr;根据编码码率选择对应的移位步长q,计算S矩阵中每行对应的RAM地址,RAM地址为addr%q,%为取余,同时计算每个RAM地址对应的移位值shift,shift=addr/q,/为求商,RAM地址和移位值一一对应,将RAM地址对应的移位值从小到大的顺序对RAM地址进行排序,存储排序后的RAM地址以及对应的移位值至第一地址产生器;当I/O接口每输出一组信息位,RAM地址与移位因子产生模块顺序输出一个第一地址产生器存储的RAM地址作为S矩阵生成时RAM的读写地址,并输出该RAM地址对应的移位值至RAM更新计算模块;当I/O接口输出第k位的信息位后,RAM地址与移位因子产生模块按从低到高顺序输出RAM的读写地址,当生成校验位时,由第二地址产生器生成RAM的读地址;k为LDPC编码码字中信息位的长度;
RAM更新计算模块用于,接收并存储I/O接口输出的M位信息位,用当前接收到的移位值对存储的信息位进行向右循环移位,并更新存储的信息位;每进行一次循环移位,即输出循环移位后的信息位至S矩阵生成模块以及S矩阵列和计算模块;
S矩阵生成模块用于,生成并存储矩阵元素;初始化时,设所有S元素为0;当S矩阵生成模块每接收到的RAM更新计算模块输出的一组信息位,即根据接收到的RAM的读写地址将这一组信息位与RAM的读写地址上已存储的S矩阵元素进行异或,并用异或结果更新该RAM的读写地址上存储的S矩阵元素;当RAM更新计算模块输出第k位的信息位,异或结果更新后的S矩阵生成完毕;当RAM接收到第二个地址产生器输出的RAM的读地址时,输出S矩阵生成模块中的RAM的读地址上存储的S矩阵元素至校验位生成模块;
S矩阵列和计算模块用于,存储S矩阵前M-1位每列元素之和;初始化时,设置每列元素之和为0;每接收到的一组M位的信息位,即将当前存储的列和数据与当前接收到经循环移位后的一组信息位的前M-1位进行异或,用异或结果更新存储的列和数据;当RAM更新计算模块输出第k位的信息位,S矩阵列和计算完毕,并将S矩阵列和结果输出至校验位生成模块;
校验位生成模块用于,每接收到S矩阵列和计算模块输出的数据就与S矩阵生成模块输出的S矩阵元素进行异或得到校验位,[pv pq+v p2q+v … p(M-1)q+v]=[pv-1 pq+v-1 p2q+v-1 … p(M-1)q+v-1]⊕S(v,:);v取值为1至q,S(v,:)表示S矩阵中第v行的所有元素,p0=S0,n-k=q×M;之后,将校验位输出至码字生成模块,并触发S矩阵生成模块将其内部的RAM中的每个S元素置为0;
码字生成模块用于,将信息位m0,m2,…mk-1与校验比特p0,p1,…pn-k-1组合形成LDPC编码码字c=(m0,m2,…mk-1,p0,p1,…pn-k-1)。
本发明的LDPC编码器在S矩阵生成时采用并行计算方法,利用RAM更新计算模块输出的一组信息位更新一行S矩阵的元素。在计算S矩阵列和时,并不是等待S矩阵生成完毕后,再对S矩阵的每列元素进行异或;而是直接对RAM更新计算模块输出的信息位进行计算得到S矩阵列和,S矩阵列和结果与S矩阵生成结果同时得到,缩短了校验位的生成时间。另外,为了减小移位的复杂度,进一步缩短编码时间,在编码过程中RAM更新计算模块仅向右一个方向循环移位,RAM地址与移位因子产生模块按照对应移位值从小到大的顺序对用于读写的RAM地址进行排序,并顺次输出移位值至进行循环移位的RAM更新计算模块。
本发明的有益效果是,提高了编码器的数据处理速度和吞吐量,编码效率高,同时满足高速率的数字信息传输要求。
附图说明
图1为本发明LDPC编码器结构示意图。
具体实施方式
本发明LDPC编码器支持16200bit和64800bit两种码长,1/5、4/9、3/5、2/3、11/15、7/9、37/45、1/2、3/4、4/5、5/6这十一种码率;每I/0接口输出一组信息位的位宽M=360bit;移位步长q可查下表得到:
如图1所示,LDPC编码器,包括I/O接口、RAM地址与移位因子产生模块、RAM更新计算模块、S矩阵生成模块、S矩阵列和计算模块、校验位生成模块、码字生成模块;所述S矩阵生成模块中包括一个存储S矩阵各元素的RAM;RAM按照360bit位宽设计,存储n-k个S阵元素;
I/O接口用于,每次输出一组位宽为360的信息位;
RAM地址与移位因子产生模块用于,初始化时,根据DVB-T2地址表计算得到的S矩阵中每行对应的地址表的值addr;根据编码码率选择对应的移位步长q,计算S矩阵中每行对应的RAM地址addr%q,%为取余,计算每个RAM地址对应的移位值shift,shift=addr/q,/为求商,RAM地址和移位值一一对应,将其对应的移位值从小到大的顺序对RAM地址进行排序,存储排序后的RAM地址以及对应的移位值至第一地址产生器;当I/O接口每输出一组信息位,RAM地址与移位因子产生模块顺序输出一个第一地址产生器存储的RAM地址作为S矩阵生成时RAM的读写地址,并输出该RAM地址对应的移位值至RAM更新计算模块;当I/O接口输出第k位的信息位后(一帧信息位输出完毕),RAM地址与移位因子产生模块按从低到高顺序输出RAM的读写地址,当生成校验位时,由第二地址产生器生成RAM的读地址;k为LDPC编码码字中信息位的长度;
RAM地址与移位因子产生模块包括第一地址产生器、第二地址产生器以及二选一的多路选择器;其中第一个地址产生器由位宽为16bit的ROM以及ROM的地址生成器构成,ROM中存放当前要读写的RAM地址值,ROM的低7位为计算得到的RAM地址,高9位为RAM更新计算模块中桶形移位器的移位值。ROM的地址生成器实质是计数器,用于产生RAM地址与移位因子产生模块中ROM的地址值,受触发后按顺序从ROM中输出RAM地址与移位值。第二个地址产生器由步长为一的递增计数器组成,计数器位宽是7bit。两个地址产生器的选择由二选一的多路选择器控制,当计算S矩阵时,由第一个地址产生器生成读写地址,使得到的S矩阵存储在RAM中;当生成校验位时,由第二个地址产生器生成RAM的读地址。第二个地址生成器使用步长为一的递增计数器按顺序读取S矩阵生成模块中RAM地址,一次读取360bits,用于计算校验位信息。当第二个地址生成器从达到最大地址值的时候,说明已经完成一帧信息的校验位的计算。
为了使得LDPC编码器支持13种码长码率,第一个地址产生器共存储13个地址表,因此需要13组ROM及其对应的地址生成器,根据码率择13组ROM中的一组用于产生这种码率的RAM地址,而ROM的高9位则送到S阵元素更新计算模块中的桶形移位器,作为移位值。ROM地址产生模块由对应的不同码率的13个步长为1的递增计数器组成。
RAM更新计算模块用于,接收并存储I/O接口输出的M位信息位并存储在RAM更新计算模块中的桶形移位寄存器中;每接收到的移位值,即利用移位值对桶形移位寄存器存储的信息位进行向右循环移位,并更新桶形移位寄存器存储的信息位;每进行一次循环移位,即输出循环移位后的信息位至S矩阵生成模块以及S矩阵列和计算模块;
S矩阵生成模块用于,生成并存储矩阵元素;需要的存储空间是qmax×360,根据移位步长表中的值,在本实施例中qmax的值为90,即90×360bits的空间。对于不同的码率,实际需要占用的存储空间是q×360。
根据式(4),可以得到Sr一种并行计算方法为:
即,在循环过程中变量c的初值为0,终止值为k-M,步长为M(M=360),通过并行输入的M位信息位mc,mc+1,…mc+M-1来更新S矩阵中某一行S元素的值。CN(c)为与第c个信息节点相邻的校验节点的集合。
初始化时,设所有S元素为0;每接收到的RAM更新计算模块输出的一组信息位,即根据接收到的读写地址将这一组信息位与RAM对应读写地址上已存储的S矩阵元素进行异或,并用异或结果更新该读写地址上存储的S矩阵元素;当RAM更新计算模块输出第k位的信息位,异或结果更新后的S矩阵生成完毕;当RAM接收到第二个地址单元输出的读地址时,S矩阵生成模块中的RAM输出读地址上存储的S矩阵元素至校验位生成模块;
S矩阵列和计算模块用于,存储S矩阵前359位每列元素之和;初始化时,设置每列元素之和为0;每接收到的一组360位的信息位,即将当前存储的列和数据与当前接收到经循环移位后的一组息位信的前359位进行异或,用异或结果更新存储的列和数据;当RAM更新计算模块输出完毕一帧信息位后,S矩阵列和[pq-1 p2q-1 p3q-1 … p(M-1)q-1]计算完毕,并将S矩阵列和结果输出至校验位生成模块;
校验位生成模块用于,每接收到S矩阵列和计算模块输出的数据就与S矩阵生成模块输出的S矩阵元素进行异或得到校验位,[pv pq+v p2q+v … p(M-1)q+v]=[pv-1 pq+v-1 p2q+v-1 … p(M-1)q+v-1]⊕S(v,:);v取值为1至q,S(v,:)表示S矩阵中第v行的所有元素,p0=S0,n-k=q×M;之后,将校验位输出至码字生成模块,并触发S矩阵生成模块将其内部的RAM中的每个S元素置为0,为接收下一帧信息位做准备;
码字生成模块用于,将信息位m0,m2,…mk-1与校验比特p0,p1,…pn-k-1组合形成LDPC编码码字c=(m0,m2,…mk-1,p0,p1,…pn-k-1)。
Claims (3)
1.一种LDPC编码器,包括I/O接口、RAM地址与移位因子产生模块、RAM更新计算模块、S矩阵生成模块、S矩阵列和计算模块、校验位生成模块、码字生成模块;所述S矩阵生成模块中包括一个存储S矩阵各元素的RAM;RAM地址与移位因子产生模块包括第一地址产生器和第二地址产生器;
I/O接口用于,每次输出一组位宽为M的信息位;
RAM地址与移位因子产生模块用于,初始化时,根据第二代欧洲数字地面电视广播传输标准DVB-T2地址表计算得到的S矩阵中每行对应的地址表的值addr;根据编码码率选择对应的移位步长q,计算S矩阵中每行对应的RAM地址,RAM地址为addr%q,%为取余,同时计算每个RAM地址对应的移位值shift,shift=addr/q,/为求商,RAM地址和移位值一一对应,将RAM地址对应的移位值从小到大的顺序对RAM地址进行排序,存储排序后的RAM地址以及对应的移位值至第一地址产生器;当I/O接口每输出一组信息位,RAM地址与移位因子产生模块顺序输出一个第一地址产生器存储的RAM地址作为S矩阵生成时RAM的读写地址,并输出该RAM地址对应的移位值至RAM更新计算模块;当I/O接口输出第k位的信息位后,RAM地址与移位因子产生模块按从低到高顺序输出RAM的读写地址,当生成校验位时,由第二地址产生器生成RAM的读地址;k为LDPC编码码字中信息位的长度;
RAM更新计算模块用于,接收并存储I/O接口输出的M位信息位,用当前接收到的移位值对存储的信息位进行向右循环移位,并更新存储的信息位;每进行一次循环移位,即输出循环移位后的信息位至S矩阵生成模块以及S矩阵列和计算模块;
S矩阵生成模块用于,生成并存储矩阵元素;初始化时,设所有S元素为0,S矩阵的行宽与列宽之积为校验位长度;当S矩阵生成模块每接收到的RAM更新计算模块输出的一组信息位,即根据接收到的RAM的读写地址将这一组信息位与RAM的读写地址上已存储的S矩阵元素进行异或,并用异或结果更新该RAM的读写地址上存储的S矩阵元素;当RAM更新计算模块输出第k位的信息位,异或结果更新后的S矩阵生成完毕;当RAM接收到第二地址产生器输出的RAM的读地址时,输出S矩阵生成模块中的RAM的读地址上存储的S矩阵元素至校验位生成模块;
S矩阵列和计算模块用于,存储S矩阵前M-1位每列元素之和;初始化时,设置每列元素之和为0;每接收到的一组M位的信息位,即将当前存储的列和数据与当前接收到经循环移位后的一组信息位的前M-1位进行异或,用异或结果更新存储的列和数据;当RAM更新计算模块输出第k位的信息位,S矩阵列和计算完毕,并将S矩阵列和结果输出至校验位生成模块;
校验位生成模块用于,每接收到S矩阵列和计算模块输出的数据就与S矩阵生成模块输出的S矩阵元素进行异或得到校验位;之后,将校验位输出至码字生成模块,并触发S矩阵生成模块将S矩阵生成模块内部的RAM中的每个S元素置为0;
码字生成模块用于,将信息位与校验位组合形成LDPC编码码字。
2.如权利要求1所述一种LDPC编码器,其特征在于,所述第一地址产生器包括ROM,所述ROM的位宽为16bit,ROM的低7位存放用于RAM的读写地址,高9位存放移位值。
3.如权利要求1所述一种LDPC编码器,其特征在于,所述第二地址产生器包括步长为1的递增计数器,递增计数器位宽为7bit。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157967.1A CN102684707B (zh) | 2012-05-21 | 2012-05-21 | 一种ldpc编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157967.1A CN102684707B (zh) | 2012-05-21 | 2012-05-21 | 一种ldpc编码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102684707A CN102684707A (zh) | 2012-09-19 |
CN102684707B true CN102684707B (zh) | 2015-02-25 |
Family
ID=46816153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210157967.1A Expired - Fee Related CN102684707B (zh) | 2012-05-21 | 2012-05-21 | 一种ldpc编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102684707B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150046766A1 (en) * | 2013-02-08 | 2015-02-12 | Sony Corporation | Data processing apparatus and data processing method |
CN103259543A (zh) * | 2013-04-16 | 2013-08-21 | 荣成市鼎通电子信息科技有限公司 | 深空通信中准循环ldpc码生成多项式的并行产生装置 |
CN109347486B (zh) * | 2018-10-11 | 2021-07-20 | 西安电子科技大学 | 低复杂度高吞吐率的5g ldpc编码器和编码方法 |
CN111736130A (zh) * | 2020-07-01 | 2020-10-02 | 成都汇蓉国科微系统技术有限公司 | 基于fpga的可配置分块式矩阵转置系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917249A (zh) * | 2010-07-27 | 2010-12-15 | 清华大学 | Qc-ldpc码译码器及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI427936B (zh) * | 2009-05-29 | 2014-02-21 | Sony Corp | 接收設備,接收方法,程式,及接收系統 |
-
2012
- 2012-05-21 CN CN201210157967.1A patent/CN102684707B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917249A (zh) * | 2010-07-27 | 2010-12-15 | 清华大学 | Qc-ldpc码译码器及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102684707A (zh) | 2012-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hao et al. | Some results on optimal locally repairable codes | |
CN101141133B (zh) | 一种结构化低密度校验码的编码方法 | |
CN101741396B (zh) | 可变码长ldpc码编码或译码的方法与装置及编码器和译码器 | |
CN103248372A (zh) | 基于循环左移的准循环ldpc串行编码器 | |
CN101272150B (zh) | 一种低密度生成矩阵码的译码方法及装置 | |
CN102684707B (zh) | 一种ldpc编码器 | |
CN101207386B (zh) | 一种二进制低密度奇偶校验码的构造方法 | |
CN101409564A (zh) | 一种基于稳定子码的量子低密度奇偶校验码的构造方法 | |
CN108540139A (zh) | 一种通用的准循环ldpc码编码器的fpga实现方法及装置 | |
CN101567697A (zh) | 一种速率兼容的低密度奇偶校验码编码方法和编码器 | |
CN102820892B (zh) | 一种用于并行bch编码的电路、编码器及方法 | |
CN102882532B (zh) | 循环右移累加基的cmmb中ldpc编码器和编码方法 | |
CN102412844B (zh) | 一种ira类ldpc码的译码方法及译码装置 | |
CN101577554B (zh) | 多码长多码率的低密度奇偶校验码的编码方法 | |
CN101764621A (zh) | 星载(8176,7156)ldpc编译码器中实现缩短码与子码兼容的方法 | |
CN102611465B (zh) | 结构化多元非规则重复累积码的编码器与编码方法 | |
CN100586029C (zh) | 一种结构化奇偶校验码的编码方法及其编码器 | |
CN105207681A (zh) | 一种基于有限域乘群中循环子群生成元的ldpc码构造方法 | |
CN103269227A (zh) | 基于循环左移的深空通信中准循环ldpc串行编码器 | |
CN103236856A (zh) | 基于循环左移的dtmb中准循环ldpc串行编码器 | |
CN103236851A (zh) | 基于查找表的cmmb中准循环矩阵高速乘法器 | |
CN102857237A (zh) | 一种低延时的近地通信中ldpc并行编码器和编码方法 | |
CN106452459A (zh) | 二级全并行输入循环左移的ldpc编码器 | |
CN106385264A (zh) | 二级部分并行输入累加左移的ldpc编码器 | |
CN104980167A (zh) | 基于求和阵列的cdr中qc-ldpc并行编码器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150225 Termination date: 20180521 |