CN102739259A - 一种用于cmmb激励器中的基于fpga的ldpc编码方法 - Google Patents

一种用于cmmb激励器中的基于fpga的ldpc编码方法 Download PDF

Info

Publication number
CN102739259A
CN102739259A CN2012101699090A CN201210169909A CN102739259A CN 102739259 A CN102739259 A CN 102739259A CN 2012101699090 A CN2012101699090 A CN 2012101699090A CN 201210169909 A CN201210169909 A CN 201210169909A CN 102739259 A CN102739259 A CN 102739259A
Authority
CN
China
Prior art keywords
matrix
ldpc
check
cmmb
fpga
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.)
Pending
Application number
CN2012101699090A
Other languages
English (en)
Inventor
郝禄国
杨建坡
洪维娜
方壮潮
余嘉池
杨舜君
何仕杰
曾文彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allwin Telecommunication Co Ltd
Original Assignee
Allwin Telecommunication Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Allwin Telecommunication Co Ltd filed Critical Allwin Telecommunication Co Ltd
Priority to CN2012101699090A priority Critical patent/CN102739259A/zh
Publication of CN102739259A publication Critical patent/CN102739259A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明公开了一种用于CMMB激励器中的基于FPGA的LDPC编码方法。先在MATLAB平台上处理LDPC系统码的校验矩阵H,生成分别对应校验比特列向量P和信息比特列向量S的校验矩阵
Figure DEST_PATH_IMAGE002
Figure DEST_PATH_IMAGE004
,对校验矩阵做LU分解得到下三角矩阵L和上三角矩阵U;在FPGA平台上实现LDPC编码,主要涉及到大型矩阵的存储、矩阵乘法、前向迭代和后向迭代。本发明编码方法采用基于LU分解校验矩阵的编码方式,避免了大矩阵相乘的逻辑运算,及大数据量存储的带来的FPGA内部存储资源需求大的问题,从而简化了逻辑运算操作,节省了存储空间,有利于CMMB系统的LDPC编码的实现。

Description

一种用于CMMB激励器中的基于FPGA的LDPC编码方法
技术领域
本发明是针对CMMB标准中的LDPC编码,所用到编码方法同时适用于基于大型稀疏校验矩阵的LDPC编码。
背景技术
LDPC(Low Density Parity Check Codes,低密度奇偶校验码)编码以其优异纠错性能和低译码复杂度备受关注,在通信及数字广播等领域得到广泛应用。LDPC编码所面临的一个主要问题就是其较高的编码复杂度和编码时延。如何选取合适的算法,达到资源和效率上的平衡,是硬件实现LDPC编码的主要难点。
CMMB标准中对LDPC编码模块的描述:
输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字。
C COL _ ORDER ( i ) = p i , 0 ≤ i ≤ 9215 - K S i + k - 9216 , 9216 - K ≤ i ≤ 9215 - - - ( 1.1 )
式中:
K——LDPC码信息比特长度
COL_ORDER(i)——CMMB标准中的码字比特向量
LDPC编码的校验比特P={P0,P1,P2,...,P9215-K}根据校验矩阵H求解如下方程得出:
H×CT=0                                    (1.2)
式中:
O——(9216-K)行1列的全0列矢量。
H——LDPC奇偶检验矩阵,定义见CMMB标准附录。
现有的编码方式主要包括:
(1)传统的编码方式
LDPC码传统编码算法和一般的线性分组码类似,利用H和G的正交性,只需根据校验矩阵求出生成矩阵G,再利用生成矩阵G进行编码。若S为输入信息向量,则编码后得到的码字向量C为
C=S·G                                    (1.3)
(2)线性分组码通用编码方式
先把H矩阵分割成一个M*M的左方阵A和一个M*N的右矩阵B。把系统LDPC码的H矩阵分为A和B两部分,A对应校验比特,B对应信息比特,用同样方法把码字C分割成M个校验比特P和N-M个系统比特S。奇偶校验方程H×CT=0变为下式:
[ A | B ] × [ P S ] = 0 - - - ( 1.4 )
因此,得到校验信息:
P=A-1BS                               (1.5)
由上式可以看到校验比特涉及两次矩阵和矢量相乘。我们可以预先计算出D=A-1B,然后通过把信息码字S乘以这个矩阵D得到校验码字P。这个编码算法的计算复杂度与M(N-M)成正比。由于D通常是密集矩阵而非稀疏矩阵,所以我们称这种编码方式为密集编码方法。
(3)基于近似下三角矩阵的编码方式——RU算法
该算法通过交换校验矩阵行列的位置,保持矩阵的稀疏性,利用交换行列后的近似下三角的校验矩阵进行编码,以降低编码的复杂度。
普通的H矩阵一般不满足近似下三角矩阵的结构,所以要对原始的H矩阵进行预处理,利用贪心算法将H矩阵化成近似下三角的形式,然后再进行编码。
对m*n的校验矩阵进行行列重排之后的矩阵如图1所示:
图1中m*n的校验矩阵进行行列重排之后的矩阵为
H = A B T C D E - - - ( 1.6 )
其中,A是(m-g)×(n-m)的矩阵,B是(m-g)×g的矩阵,T是(m-g)×(m-g)的下三角矩阵,C是g×(n-m)的矩阵,D是g ×g的矩阵,E是g ×(n-m)的矩阵。
利用高斯消去完成矩阵运算。对H矩阵左乘:
M = 1 0 - ET - 1 1 - - - ( 1.7 )
得到
M · H = A B T - ET - 1 A + C - ET - 1 B + D 0 - - - ( 1.8 )
H·CT=0,所以M·HT·C=0,又因为码字C=(sp1p2),代人C和H可以得到:
A * s T + B * p 1 T + T * p 2 T = 0 - - - ( 1.9 )
( - ET - 1 A + C ) * s T + ( - ET - 1 B + D ) * p 1 T = 0 - - - ( 1.10 )
Φ=-ET-1B+D                          (1.11)
假设Φ可逆,代入上式得:
p 1 T = - Φ - 1 ( - ET - 1 As T + Cs T ) - - - ( 1.12 )
p 2 T = - T - 1 ( As T + Bp 1 T ) - - - ( 1.13 )
则得到码字C=(sp1p2)。
对应的现有编码方式的缺点如下:
(1)传统的编码方式给出了编码的最原始的思维方式。虽然H矩阵是稀疏的,但是在高斯消去的时候破坏了它的稀疏性,也就是说得到的生成矩阵G不是稀疏矩阵,在采用线性分组码的通用编码方法,由信息序列根据码的生成矩阵来求得相应的码字序列,会使编码复杂度与其码长的平方成正比,在码长较长时这是很难以接受的。LDPC码在应用时为了提供逼近香农限的性能,选定码长通常很长,编码实现时所需的用于存储的寄存器数量非常多。因此,LDPC码所面临的一个主要问题就是其较高的编码复杂度和编码时延。
在CMMB系统中,通过上述方法得到的G矩阵每一行都有超过1000个元素为1,这样就会造成需要的存储量太大,编码的复杂度太高,实现起来不现实。
(2)线性分组码通用编码方式中的两次矩阵矢量相乘,第一次相乘的时候B是稀疏矩阵,稀疏矩阵和矢量相乘是线性复杂度的,但是第二次相乘的时候A-1已经不是稀疏矩阵了,所以再进行矢量相乘的时候已经不是线性复杂度了。这种方法也不利于实现。所以,就要对H矩阵进行一些处理,以降低计算的复杂度。
(3)RU编码算法,对H矩阵的构造有一定的要求,一定要符合近似的下三角形式,而且也要求H矩阵是系统码的形式。RU算法的复杂度为O(n+g2),所以设计的关键就是如何使g的值尽量小。这种算法的缺点在于一般的H矩阵不具备近似下三角的结构,要先对H矩阵进行重排,但是在重排的时候,很难保证H矩阵系统码的形式,还要保证变换后的H矩阵的子矩阵T可逆,所以具有一定的局限性。
综上所述,CMMB标准的LDPC编码面临的主要问题是其奇偶校验矩阵较大,编码复杂度较高和编码时延较长。如何选取合适的算法,达到资源和效率上的平衡,是实现CMMB系统中LDPC编码的主要难点。
发明内容
本发明要解决的技术问题是:提供一种用于CMMB激励器中的基于FPGA的LDPC编码方法,该编码方法简化了逻辑运算,并节省了存储空间,降低了系统开销。
为了解决上述技术问题,本发明所采用的技术方案描述如下:
因为校验矩阵H中的元素定义在二元伽罗华域GF(2)中,所以对应元素间的乘法运算可看为对应元素的并运算,元素间的加减运算可看为异或运算。因此有以下推导成立:先把H矩阵分割成一个M*M的左方阵A和一个M*N的右矩阵B。把系统LDPC码的H矩阵分为A和B两部分,A对应校验比特,B对应信息比特,码字C=[P|S],由方程:HCT=0,即 [ H p | H s ] p T S T = 0 ,
HpPT=HsST                       (1.14)
将Hp进行LU分解,即Hp=LU,代人APT=BST中,得
LUPT=BST                        (1.15)
其中对校验矩阵Hp采用了贪心策略的LU分解。把矩阵Hp分解为一个上三角矩阵U和下三角矩阵L的乘积,其中L和U也是M行M列的稀疏矩阵。LU分解可以避免对矩阵进行求逆的过程,它是利用前向迭代和后向迭代来避免求逆的过程。
对H矩阵的处理,可用MATLAB编程实现。处理后生成的矩阵:Hs、L、U存在FPGA内部ROM。在FPGA中实现LDPC编码的主要步骤:
A.令Z=HsST,设计矩阵乘法运算电路,计算Z;
B.令Y=UPT,利用前向迭代解方程LY=Z,设计前向迭代运算电路,得到Y,其中Y是M维的列向量;
C.设计后向迭代运算电路,解方程UPT=Y,得到校验比特列向量P;
D.按照式(1.1)对输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字。
其中L、U和Hs矩阵是由CMMB标准中的LDPC编码的校验矩阵H分解得到的;CMMB标准中的LDPC编码的校验矩阵H,采用基于贪心策略的LU分解方法处理,MATLAB编程实现,主要包括以下步骤:
先把H矩阵分割成一个M*M的左方阵Hp和一个M*N的右矩阵Hs,把系统LDPC码的H矩阵分为Hp和Hs两部分,Hp对应校验比特,Hs对应信息比特;
对校验矩阵Hp做LU分解得到下三角矩阵L和上三角矩阵U,通过找主元(即主对角位置上的元素)是否为1.若为1,则把该列该元素下面的所有值赋给L,再把该行该元素后面的所有值赋给U,再把该列主元下面的1都消去;若主元不为1,则在下面的行中找,找到为1的行,然后与该行交换,再重复主元是1的操作;做完一行的操作后,再判断下一个主元,操作和上面一样,直到把待分解的矩阵变成一个上三角矩阵,同时也得到了L和U。
所述校验矩阵Hp采用贪心算法进行LU分解得到下三角矩阵L和上三角矩阵U的方法,降低了CMMB系统中LDPC编码对FPGA内部存储空间的需求。
本发明的有益效果是:本发明编码方法采用基于LU分解校验矩阵的编码方式,编码的计算复杂度是线性的,避免了大矩阵相乘的逻辑运算,及大数据量存储的带来的FPGA内部存储资源需求大的问题,从而简化了逻辑运算操作,节省了存储空间,有利于CMMB系统的LDPC编码的实现。本发明采用流水线结构设计,步骤明确;方法中矩阵运算、前向迭代和后向迭代电路结构设计适合FPGA实现,结合流水线设计,降低了LDPC编码复杂度。
附图说明
图1是m*n的校验矩阵进行行列重排之后的矩阵示意图;
图2是CMMB系统中3/4码率的LDPC码的校验矩阵H非零元素的分布示意图;
图3是本发明LDPC编码方法的步骤示意图;
图4是本发明CMMB系统中LDPC码(1/2码率)的稀疏矩阵Hp相应的LU分解L矩阵非零元素的分布示意图;
图5是本发明CMMB系统中LDPC码(1/2码率)的稀疏矩阵Hp相应的LU分解U矩阵非零元素的分布示意图;
图6是本发明CMMB系统中LDPC码(3/4码率)的稀疏矩阵Hp相应的LU分解L矩阵非零元素的分布示意图;
图7是本发明CMMB系统中LDPC码(3/4码率)的稀疏矩阵Hp相应的LU分解U矩阵非零元素的分布示意图;
图8是本发明LDPC编码器的整体原理方框图;
图9是本发明矩阵相乘电路的结构示意图;
图10是本发明前向迭代算法的实现方框图;
图11是本发明后向迭代算法的实现方框图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明:
CMMB激励器中,针对不同信道和传输内容,LDPC码有1/2和3/4两种不同的码率可选。若选定码率,则每次进行LDPC编码所取的信息比特长度是固定的。形成每个码字的固定长度为9216比特。LDPC输出码字C={c0,c1,......c9215}由输入信息比特S={s0,s1,......sk-1}和校验比特P={p0,p1,......p9215-K}组成,按下式进行重排:
CMMB标准中对LDPC编码模块的描述:输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字。
C COL _ ORDER ( i ) = p i , 0 ≤ i ≤ 9215 - K S i + k - 9216 , 9216 - K ≤ i ≤ 9215 - - - ( 3.1 )
式中:
K——LDPC码信息比特长度
COL_ORDER(i)——CMMB标准中的码字比特向量
LDPC编码的校验比特P={P0,P1,P2,...,P9215-K}根据校验矩阵H求解如下方程得出:
H×CT=0                      (3.2)
式中:
O——(9216-K)行1列的全0列矢量。
H——LDPC奇偶检验矩阵,定义见CMMB标准附录。
CMMB标准中的LDPC码具有高度结构化的特点,主要表现在它的校验矩阵构造上,属于规则准循环矩阵。在CMMB标准中给出了1/2码率和3/4码率的H矩阵,标准的附录中标明了H矩阵中每个1的位置,即每个1所在的行列标号。
归纳起来,CMMB标准中的LDPC码校验矩阵构造规则为:
1)1/2码率的H矩阵行重为6,列重为3;3/4码率的H矩阵行重为12,列重为3;
2)经研究发现CMMB的H矩阵具备一定的循环性,对于1/2码率,整个校验矩阵都是由前18行每隔18行循环移动36位得到。而对于3/4码率,整个校验矩阵都是由前9行每隔9行循环移动36位得到。
根据这种循环性,可以快速的构建出H矩阵。
图2为CMMB系统中3/4码率的LDPC码的校验矩阵H中非零元素的分布图,其中一个黑点即表示一个非零元素,即元素“1”,其余空白处皆为“0”。该稀疏校验矩阵H中共有非零元素27648个。
参照图3,本发明方法主要包括以下步骤:
A.根据LDPC系统码的校验矩阵H生成分别对应校验比特列向量P和信息比特列向量S的校验矩阵Hp和Hs
B.对校验矩阵Hp做LU分解得到下三角矩阵L和上三角矩阵U;
C.依次经前向迭代运算和后向迭代运算得到校验比特列向量P;
D.对输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字。
下面对本发明方法的步骤进行具体说明:
步骤A;定义行向量集合V={vi;i=1,2,...,9216},其中vi表示一个9216维的列向量,vi中除了第COL_ORDER(i)个元素为1外,其余元素皆为0;接着再定义矩阵R9216×9216=(v1,v2,...,v9216),由于矩阵R9216×9216可写为一系列初等变换矩阵的乘积,故矩阵R9216×9216是可逆的,且其逆矩阵
Figure BDA00001693164500101
为矩阵R9216×9216本身的转置矩阵
Figure BDA00001693164500102
则输出码字C又可以写成
C=R9216×9216·(PT,ST)T                   (3.3)
由于信息比特和校验比特交织于CMMB的LDPC输出码字中,所以需要对校验矩阵H进行列调整使得信息比特s和校验比特p分离。这可通过对校验矩阵H进行比特映射的逆变换来得到系统码字列向量Csys所对应的校验矩阵H‘。具体地说,就是选取矩阵H的第COL_ORDER(i)列作为校验矩阵H‘的第i列,亦即:
H ′ = H · R 9216 × 9216 T - - - ( 3.4 )
这样可得到新的校验方程组:
H’·Csys=09216-K               (3.5)
其中,Csys-(PT,ST)T
接着把H‘矩阵分为Hp和Hs两个部分,分别对应校验比特列向量p和信息比特列向量s。即
Figure BDA00001693164500112
此时校验方程组可以写成
(Hp,Hs)·(PT,ST)T=09216-K                (3.8)
由于校验矩阵H中的元素定义在二元伽罗华域GF(2)中,所以对应元素间的乘法运算可看为对应元素的并运算,元素间的加减运算可看为异或运算。因此有下式成立:
Hp·p+Hs·s=09216-K                 (3.9)
Hp·p=Hs·s                          (3.10)
由于Hp是H中抽取出的列向量的集合,所以易知Hp矩阵也是稀疏矩阵。于是方程Hp·p=Hs·s可通过矩阵Hp进行LU分解从而高效求解。
步骤B;对Hp矩阵做LU分解,即Hp=L·U,代人Hp·p=Hs·s中,得
L·U·p=Hs·s                       (3.11)
LU分解的一般思路是通过找主元(即主对角位置上的元素)是否为1.若为1,则把该列该元素下面的所有值赋给L,再把该行该元素后面的所有值赋给U,再把该列主元下面的1都消去;若主元不为1,则在下面的行中找,找到为1的行,然后与该行交换,再重复主元是1的操作。做完一行的操作后,再判断下一个主元,操作和上面一样。直到把待分解的矩阵变成一个上三角矩阵,同时也得到了L和U。
本发明采用贪心法算法对Hp进行LU分解,采用的方法具体如下:
1)初始化,将Hs矩阵赋给B矩阵,将Hp矩阵赋给A矩阵令L=U=0,i=1;L、U矩阵的大小和需要分解的矩阵A大小一致;初始化数组rec_col(),对应位置存A矩阵中对应列的下标,如rec_col(0)=0,rec_col(1)=1……。
2)在A矩阵第i行到第n行中找行重(行中1的个数)最小的行,若行重最小的行数不为1,则取第一次出现的行重最小的行,然后将该行与第i行交换。
3)在交换后的第i行中,寻找列重(列中1的个数)最小的列,若列重最小的列数不为1,则取第一次熟悉的列重最小的列,然后将该列与第i列交换。
4)将B矩阵做与第二步相应的行交换,对L矩阵做与第三步相应的列交换,对U矩阵做与第二步相应的行交换,对rec_col()做与第三步相应的交换。
5)将矩阵A中第i行从第i列到第n列的值赋给U中对应的位置,将矩阵A中第i列从第i行的值赋给L中对应的位置。
6)高斯消元,把第i列中i行下面的1全部消去。
7)i加1回到第二步开始新的循环。一直到i=n结束。得到的B矩阵即为Hs_new矩阵。
用以上算法分别对CMMB的LDPC码率为1/2和3/4的Hp矩阵做LU分解,得到结果如图4、图5和图6、图7所示。
由图4至图7可以看出:CMMB系统中的,1/2码率和3/4码率的LDPC码中的Hp按贪心算法进行的LU分解算法得到的L矩阵和U矩阵分别有元素42722个和11442个非零元素。优于其他LU分解算法。
步骤C;依次经前向迭代运算和后向迭代运算得到校验比特列向量P;
Z=Hs·s                      (3.12)
计算Z,由于Hs是稀疏矩阵,所以计算时间是线性的。
利用前向迭代解方程L·Y=Z,得到Y,其中Y是M维的列向量。
通过后向迭代运算,解方程
U·p=Y                       (3.13)
得到校验信息P={p0,p1,...,p9215-K}。
步骤D;对输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字。即将输入的信息比特向量S={s0,s1,......sk-1}和校验比特向量P={p0,p1,......p9215-K},按式(3.1)进行重排,得到LDPC输出码字C={c0,c1,......c9215}。
LDPC编码的整体框图如图8所示,对奇偶校验矩阵H的分解可在MATLAB中完成,得出的Hs、L和U矩阵存在FPGA内部ROM中。可以看出,整个设计的质量取决于矩阵的存储方法、矩阵相乘和迭代运算。
关于矩阵的存储:
编码模块的矩阵存储方式,由于LDPC校验矩阵是稀疏矩阵,所以在存储矩阵时只存储1的位置,这样只要加以控制便可以有序工作,校验矩阵越大越可以节省越多的资源,具体存储方式举例说明。有如下矩阵:
1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0
它在存储器中的表述如下表所示:
  COL   FLAG
  1   0
  4   1
  1   0
  3   1
  3   1
  1   0
  5   1
  2   0
  4   1
COL和FLAG分别存在两块ROM中。COL表示数据是当前行值为1的列号,FLAG表明这个1是否是本行最后一个1,如果FLAG为1则表示这个1是矩阵本行的最后的一个1。
关于矩阵相乘的乘法器电路设计:
结合图9,本乘法器电路模块实现的是ZT=Hs×ST,首先将Hs中1所在的行位置作为S信息比特矢量存储器的读地址,这与Hs的行向量与S向量进行位与操作有相同的效果。然后用Hs矩阵同一行的的列号读出信息比特矢量存储单元读出信息比特进行异或操作。对Hs第一个从第一行第一个进行这样的操作,循环计算出和校验位等长的Z向量,将计算出的Z向量用于迭代运算中,Z矩阵的矩阵乘法模块的实现如图9所示。图9中Hs矩阵非0元素行标志用于控制异或后数据的输出与反馈的选择,以及Z向量的FIFO缓存写入使能信号,只要矩阵存储器中某个单元FLAG为1,那么异或后数据写入Z矩阵FIFO缓存中,同时。直到Hs中所有元素都参与运算,并且Z中的向量全部产生后结束本轮乘法计算。
关于迭代运算电路的设计:
结合图10,考虑等式L×YT=ZT,其中矩阵L是一个下三角稀疏矩阵,Y是该步骤所要求的向量,有下式:
y i = z i + Σ j = 0 i - 1 l i , j y j - - - ( 3.14 )
如下推导:
Figure BDA00001693164500162
l 00 y 0 = z 0 l 10 y 0 + l 11 y 1 = z 1 l 20 y 0 + l 21 y 1 + l 22 y 2 = z 2 . . . l ( n - 1 ) 0 y 0 + l ( n - 1 ) 1 y 1 + l ( n - 1 ) 2 y 2 + · · · + l ( n - 1 ) ( n - 1 ) y ( n - 1 ) = z ( n - 1 ) - - - ( 3.16 )
得到
y 0 = z 0 / l 00 y 1 = ( z 1 - l 10 y 0 ) / l 11 y 2 = ( z 2 - l 20 y 0 - l 21 y 1 ) / l 22 . . . y ( n - 1 ) = ( z ( n - 1 ) - l ( n - 1 ) 0 y 0 - l ( n - 1 ) 1 y 1 - · · · - l ( n - 1 ) ( n - 2 ) y n - 2 ) / l ( n - 1 ) ( n - 1 ) - - - ( 3.17 )
y 0 = z 0 / l 00 y 1 = ( z 1 + l 10 y 0 ) / l 11 y 2 = ( z 2 + l 20 y 0 + l 21 y 1 ) / l 22 y 3 = ( z 3 + l 30 y 0 + l 31 y 1 + l 32 y 2 ) / l 33 - - - ( 3.18 )
FPGA设计思想:L矩阵对角元素必然为1,若在flag为1时,放出一个Z缓存模块中的数据,否则读出相应地址(该地址由矩阵L的行标志产生)的y的值,二元有限域加法为异或。
本设计中涉及的矩阵为定义在二元有限域的矩阵计算,L矩阵为对角线为1的下三角矩阵。
得到
y 0 = z 0 y 1 = z 1 + l 10 y 0 y 2 = z 2 + l 20 y 0 + l 21 y 1 y 3 = z 3 + l 30 y 0 + l 31 y 1 + l 32 y 2 - - - ( 3.19 )
与乘法模块相似,为了计算向量y的元素,需要利用矩阵L和Z向量,以及已经得到的y向量中的元素。只要在乘法模块的基础上加一些小改动就可以实现前向迭代模块了。前向迭代具体实现如图10所示。和乘法模块类似,首先将L的1所在列号作为Y向量的读地址,这与L的向量和Y向量进行位与操作有相同的效果。然后对这些被选择的位进行异或操作,在与Z向量中与当前行号相同的位置的元素相异或。对于L逐行进行这样的操作,循环计算出Y向量。
同样道理,本设计中涉及的矩阵为定义在二元有限域的矩阵计算,U矩阵为对角线为1的上三角矩阵。
u 00 u 01 u 02 u 03 0 u 11 u 12 u 13 0 0 u 22 u 23 0 0 0 u 33 · p 0 p 1 p 2 p 3 = y 0 y 1 y 2 y 3 - - - ( 3.20 )
推到得到
p 3 = y 3 / u 33 p 2 = ( y 2 + u 23 p 3 ) / u 22 p 1 = ( y 1 + u 12 p 2 + u 13 p 3 ) / u 11 p 0 = ( y 0 + u 01 p 1 + u 02 p 2 + u 03 p 3 ) / u 00 - - - ( 3.21 )
后向迭代的原理框图如图11所示,其FPGA设计思想:U矩阵对角元素必然为1,若在flag为1时,读出y的值,否则读出相应地址的p的值,加法为异或。
本发明基于FPGA的LDPC编码方法可以把编码速率提高,并减少对FPGA内部存储资源的需求。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (2)

1.一种用于CMMB激励器中的基于FPGA的LDPC编码方法,其特征在于,根据奇偶校验方程                                               
Figure DEST_PATH_IMAGE002
公式,结合对奇偶校验矩阵进行LU分解,在FPGA上实现编码,采用流水线结构设计在FPGA实现,主要包括以下步骤:
A.令
Figure DEST_PATH_IMAGE004
,设计矩阵乘法运算电路,计算Z;
B.令,利用前向迭代解方程
Figure DEST_PATH_IMAGE008
,设计前向迭代运算电路,得到Y,其中Y是M维的列向量;
C.设计后向迭代运算电路,解方程
Figure DEST_PATH_IMAGE010
,得到校验比特列向量P;
D.对输入的信息比特列向量S与校验比特列向量P进行重排,得到LDPC输出码字;
其中L、U和矩阵是由CMMB标准中的LDPC编码的校验矩阵H分解得到的。
2.根据权利要求1所述的一种用于CMMB激励器中的基于FPGA的LDPC编码方法,其特征在于:CMMB标准中的LDPC编码的校验矩阵H,采用基于贪心策略的LU分解方法处理,MATLAB编程实现,主要包括以下步骤:
先把H矩阵分割成一个M*M的左方阵和一个M*N的右矩阵
Figure DEST_PATH_IMAGE016
,把系统LDPC码的H矩阵分为
Figure 51735DEST_PATH_IMAGE014
两部分,对应校验比特,
Figure 916419DEST_PATH_IMAGE012
对应信息比特;
对校验矩阵
Figure 942144DEST_PATH_IMAGE014
做LU分解得到下三角矩阵L和上三角矩阵U,通过找主元(即主对角位置上的元素)是否为1;若为1,则把该列该元素下面的所有值赋给L,再把该行该元素后面的所有值赋给U,再把该列主元下面的1都消去;若主元不为1,则在下面的行中找,找到为1的行,然后与该行交换,再重复主元是1的操作;做完一行的操作后,再判断下一个主元,操作和上面一样,直到把待分解的矩阵变成一个上三角矩阵,同时也得到了L和U。
CN2012101699090A 2012-05-28 2012-05-28 一种用于cmmb激励器中的基于fpga的ldpc编码方法 Pending CN102739259A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012101699090A CN102739259A (zh) 2012-05-28 2012-05-28 一种用于cmmb激励器中的基于fpga的ldpc编码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012101699090A CN102739259A (zh) 2012-05-28 2012-05-28 一种用于cmmb激励器中的基于fpga的ldpc编码方法

Publications (1)

Publication Number Publication Date
CN102739259A true CN102739259A (zh) 2012-10-17

Family

ID=46994136

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012101699090A Pending CN102739259A (zh) 2012-05-28 2012-05-28 一种用于cmmb激励器中的基于fpga的ldpc编码方法

Country Status (1)

Country Link
CN (1) CN102739259A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780268A (zh) * 2014-01-23 2014-05-07 长安大学 一种基于优化稀疏lu分解的ldpc编码算法
CN104579366A (zh) * 2015-01-30 2015-04-29 荣成市鼎通电子信息科技有限公司 Wpan中基于三级流水线的高速qc-ldpc编码器
CN105515589A (zh) * 2015-11-26 2016-04-20 航天恒星科技有限公司 一种系统码编码的方法及装置
CN105897278A (zh) * 2016-03-30 2016-08-24 联想(北京)有限公司 信息处理方法及存储设备
CN109586732A (zh) * 2018-10-18 2019-04-05 天津大学 中短码ldpc编解码系统和方法
CN109802687A (zh) * 2018-12-25 2019-05-24 西安空间无线电技术研究所 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801630A (zh) * 2005-11-24 2006-07-12 上海交通大学 基于优化搜索矩阵lu分解的ldpc码编码方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801630A (zh) * 2005-11-24 2006-07-12 上海交通大学 基于优化搜索矩阵lu分解的ldpc码编码方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
杨光 等: ""LU分解法的LDPC码编码器的FPGA实现"", 《电视技术》, vol. 35, no. 23, 31 December 2011 (2011-12-31), pages 55 - 58 *
谭太秋 等: ""基于CMMB标准的高效LDPC编码研究"", 《电子测量技术》, vol. 33, no. 2, 28 February 2010 (2010-02-28), pages 56 - 59 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103780268A (zh) * 2014-01-23 2014-05-07 长安大学 一种基于优化稀疏lu分解的ldpc编码算法
CN104579366A (zh) * 2015-01-30 2015-04-29 荣成市鼎通电子信息科技有限公司 Wpan中基于三级流水线的高速qc-ldpc编码器
CN104579366B (zh) * 2015-01-30 2019-02-22 荣成市鼎通电子信息科技有限公司 Wpan中基于三级流水线的高速qc-ldpc编码器
CN105515589A (zh) * 2015-11-26 2016-04-20 航天恒星科技有限公司 一种系统码编码的方法及装置
CN105897278A (zh) * 2016-03-30 2016-08-24 联想(北京)有限公司 信息处理方法及存储设备
CN109586732A (zh) * 2018-10-18 2019-04-05 天津大学 中短码ldpc编解码系统和方法
CN109586732B (zh) * 2018-10-18 2022-02-25 天津大学 中短码ldpc编解码系统和方法
CN109802687A (zh) * 2018-12-25 2019-05-24 西安空间无线电技术研究所 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器
CN109802687B (zh) * 2018-12-25 2023-05-02 西安空间无线电技术研究所 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器

Similar Documents

Publication Publication Date Title
CN101924565B (zh) Ldpc编码器、解码器、系统及方法
Hou et al. BASIC codes: Low-complexity regenerating codes for distributed storage systems
CN100596029C (zh) Ldpc码校验矩阵构造方法及利用该方法的编码解码装置
CN102394661B (zh) 基于层译码处理的ldpc译码器及译码方法
CN101162907B (zh) 一种利用低密度奇偶校验码实现编码的方法及装置
CN102739259A (zh) 一种用于cmmb激励器中的基于fpga的ldpc编码方法
CN101192833B (zh) 一种低密度校验码ldpc并行编码的装置及方法
CN102437857B (zh) 一种ira-ldpc码的构造方法及其编码器
CN100561878C (zh) 基于优化搜索矩阵lu分解的ldpc码编码方法
CN101902228B (zh) 快速循环冗余校验编码方法及装置
CN103067025B (zh) 基于块行循环的cmmb中ldpc编码器和编码方法
CN102340318A (zh) 准循环ldpc码的编码方法
CN102075198A (zh) 准循环低密度奇偶校验卷积码编译码系统及其编译码方法
CN109802687B (zh) 一种基于fpga的qc-ldpc码的高速码率兼容ldpc编码器
CN100414841C (zh) 一种ldpc编码的实现方法
CN107786211A (zh) 一种ira‑qc‑ldpc码的代数结构获取方法、编码方法和编码器
US9104589B1 (en) Decoding vectors encoded with a linear block forward error correction code having a parity check matrix with multiple distinct pattern regions
CN101588183A (zh) 一种ldpc码快速编码方法与系统
CN106533452A (zh) 一种多进制ldpc编码方法及编码器
CN101800627B (zh) 一种多码率兼容的高速ldpc编码器的硬件实现
CN1973440A (zh) Ldpc编码器、解码器、系统及方法
CN101640543B (zh) 一种ldpc码的编码装置及方法
CN101577554A (zh) 多码长多码率的低密度奇偶校验码的编码方法
CN111313910B (zh) 空间通信应用的低密度奇偶校验码编码器装置
CN100557983C (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20121017