CN101800627A - 一种多码率兼容的高速ldpc编码器的硬件实现 - Google Patents
一种多码率兼容的高速ldpc编码器的硬件实现 Download PDFInfo
- Publication number
- CN101800627A CN101800627A CN 201010125182 CN201010125182A CN101800627A CN 101800627 A CN101800627 A CN 101800627A CN 201010125182 CN201010125182 CN 201010125182 CN 201010125182 A CN201010125182 A CN 201010125182A CN 101800627 A CN101800627 A CN 101800627A
- Authority
- CN
- China
- Prior art keywords
- code
- check
- encoder
- memory
- read
- 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.)
- Granted
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
一种多码率兼容的高速低密度奇偶校验码(LDPC)编码器适用于非正则重复累积码(IRA)类的LDPC码的硬件实现,主要有以下几个优点:一,很高的数据速率,约等于运行时钟与码率的乘积,可以满足目前高速数据传输的需求;二,适用于多码长多码率兼容的LDPC码;三,编码输出相对输入的延迟(latency)小,只有几个时钟;四,结构简单,占用FPGA资源少。另外,该编码器结构可以用于第二代卫星数字视频广播标准(DVB-S2)中。
Description
技术领域
本发明涉及通信领域,特别是前向纠错码(FEC)领域。
背景技术
通信系统通常采用信道编码技术来保证在噪声信道通信的可靠性。比如,在卫星通信系统中,由于地理和环境因素的影响,存在大量的噪声源。这些通信信道有其理论上的最大通信容量(也就是著名的香农限),该容量可以使用特定信噪比(SNR)条件下的比特速率(bps)来表示。因此,前向纠错码(FEC)的设计就是为了追求接近香农限的最大比特速率。其中一种接近香农限的编码就是低密度奇偶校验(LDPC)码。
LDPC码是一种线性分组码,它在大量的数据传输和存储信道中可以获得接近香农限的性能,已经广泛应用于各种无线通信系统中,例如第二代卫星数字视频广播标准(DVB-S2)、全球微波接入互操作性技术(WiMax)等,目前支持的最高速率已将达到上百兆,未来将实现几百兆的数据速率。
传统的LDPC码之所以没有被广泛应用,是因为它存在多个缺陷,其中一个缺陷就是LDPC码的编码技术很复杂。如果使用LDPC码的生成矩阵对信息进行编码,需要存储一个非稀疏矩阵,而为了追求LDPC码的性能又要求码长足够长,这就导致该稀疏矩阵会非常大,给存储带来很大问题。
因此,从实现的角度来说,通常选择编码结构简单的LDPC码,非正则重复累积码(IRA)就是其中的一种。该类LDPC码的稀疏校验矩阵H有如下特征:
HM×N=[AM×KBM×M],(1)
其中N是LDPC码的码长,K是信息位长度,M是校验位长度,B是阶梯型下三角阵:
B矩阵的特点保证了LDPC码编码具有线性复杂度和较低的存储量。
LDPC码作为众多通信系统的最基本的技术,对编译码器的数据速率要求已经越来越高。我们发明的IRA类的LDPC编码器结构简单,可以应用在DVB-S2系统中,并且可以实现很高的数据速率,使用FPGA(现场可编程逻辑阵列)实现时,在系统时钟为200MHz,LDPC最高码率为0.9时,速率可以达到180Mbps,如果使用ASIC(专用集成电路)实现,可以达到几百兆的速率,因此可以满足目前乃至未来高速数据传输的需求。
发明内容
本发明的目的在于提供一种结构简单、数据速率很高的LDPC编码器结构,以满足各种无线通信系统的要求。
一种多码率兼容的高速LDPC编码器的硬件实现,包括以下过程:
(1)、在编码器输入的同时计算校验位,不需要存储信息位,在几个时钟之后开始连续输出信息位和校验位;
(2)、计算校验位时,同时对校验位的中间结果存储器进行读写。当前时刻读取存储器的内容是计算校验位需要的中间结果,写入存储器的是前一时刻计算出的中间结果,这两者可能存在读写冲突,我们在设计编码器时避免了该冲突,从而减少了编码需要的时钟数,提高了编码器吞吐量;
(3)、在连续编码时,对校验位中间结果存储器的复位与校验位的输出同时进行,如果外部复位信号到来,则首先对该存储器进行复位,然后再进行编码;校验位输出和存储器复位同时进行节省了时钟,提高了吞吐量;
(4)、所有LDPC码校验矩阵地址都存储在一个只读存储器中,存储器的每一个值是校验矩阵一列中1所在的行号(使用相同位数表示)拼接而成的,因此可以支持多种码率的LDPC码。
本发明适用于非正则重复累积码(IRA)类的LDPC码,根据IRA的特点,我们在存储校验矩阵参数时,只需要存储校验矩阵的一部分参数,而非整个校验矩阵,大大节省了存储空间。
本发明可以应用到各种类型的通信系统的设备中,这些系统包括卫星通信系统、高清电视通信系统(HDTV)、手机通信系统、微波通信系统,点对点或点对多点通信系统等等。如果用在这些系统中,可能需要对本发明稍做修改来支持不同的系统,但是其基本思想与本发明相通。
另外,本发明的其它一些特征、特点和优点会在下面的阐述中详细介绍,包括介绍一系列模块的构造以及整个发明的实现。本发明可以用在其它系统中,只是需要对结构稍作修改,因此,下面的附图和介绍只是对结构的概括描述,而不是严格限制。
附图说明
图1是本发明所述的LDPC编码器的结构图;
图2是具有循环特性的矩阵;
图3是本发明所述编码器的校验地址计算单元;
图4是本发明所述中间变量Ti,j的计算电路;
图5是本发明所述的计算中间变量Ti,j时会出现读写冲突的情况;
图6是本发明所述的递归计算校验位电路;
图7是本发明所述编码器控制电路的工作流程图。
具体实施方式
式(1)给出了IRA类校验矩阵的结构HM×N=[AM×KBM×M],根据该结构的特征,编码的实质就是求解式(3)所示的现行方程组:
HCT=0 (3)
其中C为码字向量:
C=(m0,m1,...,mK-1,p0,p1,...,pM-1)(4)
m0,m1,...,mK-1是K个已知的信息位,P0,P1,...,pM-1为M个位置的校验位。
设A矩阵具有如下形式:
由式(1)(2)(3)(4)(5)联立可得式(6)所示的递归方程:
式中的加法为二进制域上的加法,也即异或运算。由此方程组可以看出,为了求解出p0,p1,...,pM-1,只要根据第一个方程计算出p0,便可依次递归计算出各个校验位的值,从而完成编码。
由上述的原理分析可知,LDPC编码的关键就是方程组(6)的求解问题。引入迭代中间变量Ti,j(0≤i≤M-1,0≤j≤K-1),
Ti,j=Ti,j-1+ai,jmj (7)
其中Ti,0=ai,0m0,式(6)可以表示成
由式(8)可以发现,为了求解p0,p1,...,pM-1,需要先计算出Ti,K-1(0≤i≤M-1),而由式(7)可知,Ti,j的计算是一个累加ai,jmj的过程,其中ai,j是矩阵A的元素,在二元域上取但。根据二进制计算的特点,式(7)可以简化为:
Ti,j表示取反操作,当ai,j=0或mj=0时,Ti,j不需要累加计算;当ai,j=1且mj=1时,Ti,j的值为Ti,j-1的取反。实际上,由于校验矩阵H是稀疏矩阵,因此矩阵A中出现0的概率很高,这样中间变量的计算将变得很简单。
但是,如果使用FPGA中的可编程逻辑单元来实现Ti,j的计算和存储将大大浪费FPGA的逻辑资源,为此,可以充分利用FPGA中丰富的嵌入式块RAM(BRAM)资源存储Ti,j。
假设所有兼容的LDPC码率的校验矩阵的最大列重为Wc,则每当输入一个信息位时,需要同时计算Wc个Ti,j值,因此需要Wc个BRAM来实现对Ti,j的存取,每个BRAM深度为所有LDPC码中最大的M。当信息位输入完毕时,将所有Wc个Ti,j值对应相加(二进制异或),就得到式(7)中的Ti,j值。嵌入式BRAM应配置成双口RAM(DPRAM),每个时钟读写各一次。图1是LDPC编码器结构图,其主要由Wc个BRAM、校验地址计算电路、中间变量Ti,j的计算电路、递归计算校验位电路和控制电路五部分组成。
校验位地址计算电路主要是计算当前信息位对应的检验矩阵的一列中1对应的校验位地址。该电路中包含一个存储校验地址或者计算校验地址需要的参数的只读存储器(ROM)。根据IRA类LDPC码特点的不同,存储的数据类型有所不同。如果A矩阵是随机稀疏矩阵,则存储器的每一个数对应于每列中所有1的地址,该数据是由多个固定长度的地址拼接而成,其中无效地址由一个特定标志标识出来;如果A矩阵是伪循环矩阵,即具有形式
A=[A0A1..Am-1](10)
其中每个Ak(0≤k≤m-1)中列重都相同,并且是循环矩阵,具有图2所示的循环特性,图中具有相同标号的黑方块表示校验矩阵对应位置上的元素为1,无色的方块对应为0。由图2可以看出,相同标号的方块所在的行号都可以由任意一列中同一标号的方块的行号(校验地址)决定,两个相临的列相同标号的方块行号差值固定为q=2modM(取模运算),因此这种情况下每个Ak只需要存储一列中1的行号,然后通过计算得到其它列的行号。通常情况下存储第0列中1所在的行号,也即初始校验地址。此时,计算校验地址的电路如图3所示。
下文以A矩阵为伪循环矩阵为例来介绍一下整个译码器的各个单元。
在校验地址计算单元中,初始校验地址ROM的每个单元存储的是Ak的第一列中1所在的行号拼接而成的数,下面详细介绍一下它的拼接方式。假设所有兼容的LDPC码最大校验位个数Mmax需要使用n比特表示,那么,我们使用n+1比特表示每个校验地址,其中最左侧比特表示该地址是否有效,之后的n比特表示1所在的地址。那么ROM中每个单元的位宽为Wc*(n+1),其中Wc为所有LDPC码的最大列重。当当前列重小于Wc时,将本列的校验地址拼接之后,不足Wc*(n+1)比特的,使用无效地址代替。在校验地址计算时,如果读取的初始校验地址无效,则对对应的存储Ti,j的DPRAM不进行读写操作。
图4为中间变量Ti,j的计算电路。只有当从初始校验地址ROM中读取的校验地址有效时本电路才工作,每个电路计算循环矩阵(见图2)中所有相同标号的Ti,j。注意到图4中要同时对DPRAM进行读写操作,这可能会引起读写冲突,即:当前需要读取的数是当前写入DRAM中的数。此时,中间变量计算出错。图5是可能会引起读写冲突的情况。这种情况通常发生在相邻的两列之间,Ak和Ak+1相同标号的方块都是由同一个Ti,j计算电路计算时,如图5中所示。Ak的第15列和Ak+1的第0列中,在计算相同标号的方块对应的Ti,j时,都会引起读写冲突。以标号1的方块为例,假设当前需要计算Ak+1的第0列的标号1的方块对应的T值,需要读取前一时刻计算出来的T值(对应于Ak的第15列中的标号1的方块),而这也就是此时需要写入到DPRAM中的值,由于该值还没有写入,所以读取的值不是需要的值,从而引起计算错误。
为了避免读写冲突,需要调整Ak+1的初始地址在ROM中的存储顺序,使得在两个矩阵连接处相邻的两个有标号的块(即:校验矩阵中的1值)对应于不同的中间结果计算单元。例如:将存储Ak和Ak+1初始校验地址的顺序分别调整为{标号1,标号2,标号3}和{标号2,标号3,标号1},则处理Ak和Ak+1的中间结果计算电路分别为:{电路1(标号1),电路2(标号2),电路3(标号3)}和{电路1(标号2),电路2(标号3),电路3(标号1)},因此避免了读写冲突。
递归计算校验位电路如图6所示,由于DPRAM对Ti,j进行了分布式存储(Ti,K-1 n(0≤n≤Wc-1)表示第n个DPRAM中存储的Ti,K-1的一部分),所以必须把Wc个DPRAM的相同地址存储的内容相加(二进制异或)之后才能得到Ti,K-1(0≤i≤M-1)。
图7是编码器控制电路的工作流程图。编码器工作过程中,一旦有复位信号,则立即进入复位状态,执行对中间变量DPRAM的复位,完成复位之后进入空闲状态;空闲状态情况下,第一个信息位输入时,则进入信息位输入状态;信息位输入状态情况下,对该信息位延迟一定的时钟之后输出,同时计算中间变量Ti,j,信息位输入完毕,则进入校验位输出状态;校验位输出状态情况下,递归计算校验位并输出,同时对中间变量存储器DPRAM进行复位,为下一次编码做准备,所有校验位输出之后进入空闲状态,等待下一次待编码数据的输入。
从上面控制电路的工作流程中可以看出,本发明充分利用了并行操作的原理减少编码需要的时钟数,从而提高了编码速率。另一方面,通过对初始校验地址存储器ROM数据格式的设计,避免了读写冲突,因而,可以应用到所有IRA类的LDPC码的实现中。
Claims (4)
1.一种多码率兼容的高速LDPC码编码器的硬件实现,其特征在于包括以下过程:
(1)在编码器输入的同时计算校验位,不需要存储信息位,在几个时钟之后开始连续输出信息位和校验位;
(2)计算校验位时,同时对校验位的中间结果存储器进行读写。当前时刻读取存储器的内容是计算校验位需要的中间结果,写入存储器的是前一时刻计算出的中间结果,这两者可能存在读写冲突,我们在设计编码器时避免了该冲突,从而减少了编码需要的时钟数,提高了编码器吞吐量;
(3)在连续编码时,对校验位中间结果存储器的复位与校验位的输出同时进行,如果外部复位信号到来,则首先对该存储器进行复位,然后再进行编码;校验位输出和存储器复位同时进行节省了时钟,提高了吞吐量;
(4)所有LDPC码校验矩阵地址都存储在一个只读存储器中,存储器的每一个值是校验矩阵一列中1所在的行号(使用相同位数表示)拼接而成的,因此可以支持多种码率的LDPC码。
2.根据权利要求1所述多码率兼容的高速LDPC码编码器的硬件实现,其特征在于上述校验位计算时,对校验位中间结果同时进行读写,并且避免了读写冲突,减少了计算时钟,提高了吞吐量。
3.根据权利要求1所述多码率兼容的高速LDPC码编码器的硬件实现,其特征在于上述对校验位中间结果存储器的复位是在输出校验位的同时进行,减少了需要的时钟,提高了吞吐量。
4.根据权利要求1所述多码率兼容的高速LDPC码编码器的硬件实现,其特征在于上述校验矩阵地址存储使用同一个只读存储器,要兼容各种LDPC码,只需要将对应的参数加入到该存储器中即可,便于应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010125182 CN101800627B (zh) | 2010-03-16 | 2010-03-16 | 一种多码率兼容的高速ldpc编码器的硬件实现 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010125182 CN101800627B (zh) | 2010-03-16 | 2010-03-16 | 一种多码率兼容的高速ldpc编码器的硬件实现 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101800627A true CN101800627A (zh) | 2010-08-11 |
CN101800627B CN101800627B (zh) | 2012-12-05 |
Family
ID=42596136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010125182 Active CN101800627B (zh) | 2010-03-16 | 2010-03-16 | 一种多码率兼容的高速ldpc编码器的硬件实现 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101800627B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136886A (zh) * | 2011-04-14 | 2011-07-27 | 西安新邮通信设备有限公司 | 一种正交重复累积码的编译码方法及装置 |
CN102437857A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 一种ira-ldpc码的构造方法及其编码器 |
CN105322971A (zh) * | 2014-07-23 | 2016-02-10 | 上海数字电视国家工程研究中心有限公司 | 针对下一代无线广播的ldpc码字及编码方法和编解码器 |
CN106506010A (zh) * | 2016-10-17 | 2017-03-15 | 中国科学院国家空间科学中心 | 一种基于dvb‑s2标准多码率兼容的ldpc编码器 |
CN107947801A (zh) * | 2017-11-24 | 2018-04-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多码率兼容ldpc码编码器 |
CN107959502A (zh) * | 2016-10-17 | 2018-04-24 | 上海数字电视国家工程研究中心有限公司 | 一种ldpc编码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192833A (zh) * | 2006-11-28 | 2008-06-04 | 华为技术有限公司 | 一种低密度校验码ldpc并行编码的装置及方法 |
US20080163027A1 (en) * | 2004-07-21 | 2008-07-03 | Tom Richardson | Ldpc encoding methods and apparatus |
CN101588183A (zh) * | 2009-06-26 | 2009-11-25 | 北京交通大学 | 一种ldpc码快速编码方法与系统 |
-
2010
- 2010-03-16 CN CN 201010125182 patent/CN101800627B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163027A1 (en) * | 2004-07-21 | 2008-07-03 | Tom Richardson | Ldpc encoding methods and apparatus |
CN101192833A (zh) * | 2006-11-28 | 2008-06-04 | 华为技术有限公司 | 一种低密度校验码ldpc并行编码的装置及方法 |
CN101588183A (zh) * | 2009-06-26 | 2009-11-25 | 北京交通大学 | 一种ldpc码快速编码方法与系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136886A (zh) * | 2011-04-14 | 2011-07-27 | 西安新邮通信设备有限公司 | 一种正交重复累积码的编译码方法及装置 |
CN102437857A (zh) * | 2011-12-12 | 2012-05-02 | 华中科技大学 | 一种ira-ldpc码的构造方法及其编码器 |
CN102437857B (zh) * | 2011-12-12 | 2013-06-05 | 华中科技大学 | 一种ira-ldpc码的构造方法及其编码器 |
CN105322971A (zh) * | 2014-07-23 | 2016-02-10 | 上海数字电视国家工程研究中心有限公司 | 针对下一代无线广播的ldpc码字及编码方法和编解码器 |
CN105322971B (zh) * | 2014-07-23 | 2019-02-26 | 上海数字电视国家工程研究中心有限公司 | 针对下一代无线广播的ldpc码字及编码方法和编解码器 |
CN106506010A (zh) * | 2016-10-17 | 2017-03-15 | 中国科学院国家空间科学中心 | 一种基于dvb‑s2标准多码率兼容的ldpc编码器 |
CN107959502A (zh) * | 2016-10-17 | 2018-04-24 | 上海数字电视国家工程研究中心有限公司 | 一种ldpc编码方法 |
CN106506010B (zh) * | 2016-10-17 | 2019-05-17 | 中国科学院国家空间科学中心 | 一种基于dvb-s2标准多码率兼容的ldpc编码器 |
CN107947801A (zh) * | 2017-11-24 | 2018-04-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多码率兼容ldpc码编码器 |
CN107947801B (zh) * | 2017-11-24 | 2020-12-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多码率兼容ldpc码编码器 |
Also Published As
Publication number | Publication date |
---|---|
CN101800627B (zh) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10536169B2 (en) | Encoder and decoder for LDPC code | |
CN100596029C (zh) | Ldpc码校验矩阵构造方法及利用该方法的编码解码装置 | |
US7831883B2 (en) | LDPC encoders, decoders, systems and methods | |
US7752524B2 (en) | Method and device for decoding DVB-S2 LDPC encoded codewords | |
US7774674B2 (en) | LDPC decoder for DVB-S2 decoding | |
CN101162907B (zh) | 一种利用低密度奇偶校验码实现编码的方法及装置 | |
CN101800627B (zh) | 一种多码率兼容的高速ldpc编码器的硬件实现 | |
US8627172B2 (en) | Error correction encoding apparatus, decoding apparatus, encoding method, decoding method, and programs thereof | |
CN103888148A (zh) | 一种动态阈值比特翻转的ldpc码硬判决译码方法 | |
CN102394660B (zh) | 分组交织的准循环扩展并行编码ldpc码的编码方法和编码器 | |
US9104589B1 (en) | Decoding vectors encoded with a linear block forward error correction code having a parity check matrix with multiple distinct pattern regions | |
US8671323B2 (en) | High throughput decoder architecture for low-density parity-check convolutional codes | |
KR100975695B1 (ko) | 통신 시스템에서 신호 수신 장치 및 방법 | |
CN101335592B (zh) | 基于矩阵分块的高速ldpc译码器实现方法 | |
US20170214415A1 (en) | Memory system using integrated parallel interleaved concatenation | |
CN105262493A (zh) | 低密度奇偶校验码的译码方法 | |
US20110179337A1 (en) | Memory utilization method for low density parity check code, low density parity check code decoding method and decoding apparatus thereof | |
CN102412844B (zh) | 一种ira类ldpc码的译码方法及译码装置 | |
CN102739259A (zh) | 一种用于cmmb激励器中的基于fpga的ldpc编码方法 | |
CN101471673A (zh) | Ldpc码存储单元划分方法以及一种ldpc码存储器 | |
KR20060025977A (ko) | Ldpc 코드를 이용한 부호화, 복호화 방법 및 부호화또는 복호화를 위한 ldpc 코드 생성 방법 | |
CN116707546A (zh) | 一种准循环ldpc译码的硬件实现方法及装置 | |
CN102386932B (zh) | Ldpc码的构造方法 | |
CN102611465B (zh) | 结构化多元非规则重复累积码的编码器与编码方法 | |
CN102315899A (zh) | 一种低密度奇偶校验码的准循环译码方法 |
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 |