CN101335592A - 基于矩阵分块的高速ldpc译码器实现方法 - Google Patents
基于矩阵分块的高速ldpc译码器实现方法 Download PDFInfo
- Publication number
- CN101335592A CN101335592A CNA2008101178152A CN200810117815A CN101335592A CN 101335592 A CN101335592 A CN 101335592A CN A2008101178152 A CNA2008101178152 A CN A2008101178152A CN 200810117815 A CN200810117815 A CN 200810117815A CN 101335592 A CN101335592 A CN 101335592A
- Authority
- CN
- China
- Prior art keywords
- check matrix
- row
- matrix
- constructed
- check
- 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译码器实现方法,属于信道编码技术领域。本发明的方法包括以下具体步骤:(1)构造具有分块校验矩阵的LDPC码:首先利用代数的方法构造一个校验矩阵,该校验矩阵中没有小环,以保证所构造码字的性能;然后按照一定的规则,对该校验矩阵的行进行重排,使得重排后的校验矩阵具有分块的结构。(2)在LDPC码的校验矩阵具有分块结构的情况下,对其实现高速并行译码。本发明的方法,可以在工程上实现LDPC码的高速并行译码,译码复杂度很低,所构造的码字中无小环,性能非常好,与随机构造的码字性能相当。
Description
技术领域
本发明涉及一种LDPC译码方法,特别涉及一种基于矩阵分块的高速LDPC译码器实现方法,属于信道编码技术领域。
背景技术
在卫星通信、深空通信及各种无线通信系统中,为了提高系统的抗噪声能力,信道编码是必不可少的。在目前所有的信道编码中,LDPC码是最接近香农限的好码,其性能比Turbo码还好。LDPC码的译码采用BP(BeliefPropagation)迭代译码算法,不仅具有很好的译码性能,而且具有线性的译码复杂度,更为重要的是,这是一种并行译码算法,可以极大地提高译码速度。但是在工程实现时,对于完全随机构造的码字而言,对迭代信息的读写速度会相对较慢,以至于限制了并行译码的进行。
BP迭代译码算法分为概率域迭代译码与对数域迭代译码两种实现方式,对数域迭代译码是在概率域迭代译码的基础上发展而来的,通过取对数,可以将大量乘法运算变为加法运算,有利于硬件实现,因此工程上大都采用对数域迭代译码算法。译码器的输入为来自解调器的软解调信息ri,i=1…N;输出即为译码的硬判决结果。迭代译码过程可以看成是在由校验矩阵决定的双向图上进行的消息传递过程,双向图又称为Tanner图,如图1所示。图1中右边的节点是变量节点,代表码字中的一个比特或校验矩阵中的一列;左边的节点是校验节点,代表一个校验方程或校验矩阵中的一行,当码字中某一比特包含在某一校验方程中,即校验矩阵中相应位为1时,图1中的左右节点间存在连线。译码中间变量为两组用对数似然比(LLR)定义的迭代信息L(qij)和L(rji)。其中i表示变量节点,j表示校验节点,L(qij)为变量节点到校验节点的迭代信息,L(rji)为校验节点到变量节点的迭代信息。令M(i)表示与变量节点i相连的校验节点的集合,N(j)表示与校验节点j相连的变量节点的集合。迭代时L(qij)和L(rji)之间信息的传递过程如图2所示,具体译码步骤为:
(1)初始化:
L(qij)初始化为信道输入对数似然比(LLR)L(ci),当信道为加性高斯白噪声信道时,有
(2)迭代:
(a)校验节点迭代运算(CNUP,check node update processing),由CNU单元完成:
αi′j=sign[L(qi′j)] (3)
βi′j=|L(qi′j)| (4)
若采用加修正因子的最小和算法,则CNUP变为:
式(6)中η为修正因子,其值与校验矩阵的行重有关,一般取0.7~0.8之间。
(b)变量节点迭代运算(VNUP,variable node update processing),由VNU单元完成:
L(qij)=L(qi)-L(rji) (8)
(3)判决:
对L(qi)判决:
若HxT=0,译码正确,退出本次译码;否则继续迭代,直到最大迭代次数。实际中,为了省去计算HxT的过程,在完成变量节点迭代运算后,不进行判决和校验而直接进行校验节点迭代运算,直到达到最大迭代次数后,再进行判决。
从加修正因子的最小和算法可以看出,初始化的式(1)可以用下式来代替:
L(qij)=-ri (10)
此时不需要知道噪声的大小,在实际应用上就省去了信噪比估计的麻烦。通过调整修正因子η的值,可以使最小和算法的性能和原算法的性能几乎一样。
从BP迭代译码算法可以看出,当校验节点迭代时,各个校验节点(即校验矩阵的每一行)可以同时进行迭代,即可以有多个CNU单元同时工作;同样当变量节点迭代时,各个变量节点(即校验矩阵的每一列)也可以同时进行迭代。即BP迭代译码算法是一种并行算法,可以实现高速译码。但在工程上,却不一定可以并行实现。在BP迭代译码的过程中,需要存储中间变量L(qij)和L(rji),在CNU运算时,需要用到L(qij)信息;在VNU运算时,需要用到L(rji)信息。假如将L(qij)存储在1个存储单元的话,则在读取或写入L(qij)时,每个时钟周期都只能操作1个数;对L(rji)的操作也一样。此时虽然可以有多个CNU单元和VNU单元同时工作,但由于从L(qij)或L(rji)读写数的速度较慢,大部分时候都处于等待状态,不能有效工作,并行运算也就不能实现。
一种解决的办法是将L(qij)和L(rji)中的每一个数据都用一个寄存器来存储,则此时在任意时钟都可以对L(qij)和L(rji)中的任意数据进行读写操作,此时CNU单元和VNU单元可以实现完全地并行工作,译码器可以达到很高的速度,但这种方法会耗费大量的资源,在码长较长时是不可能实现的,在通常的中等速度系统也不实用。
发明内容
针对LDPC译码器在工程实现时遇到的上述困难,本发明提出了一种在硬件实现时的资源和译码速度方面都可以接受的并行译码方法。
如果将L(qij)和L(rji)存储在多个存储单元的话,则每一个时钟可以读写L(qij)和L(rji)中的多个数据,从而送给几个CNU单元和VNU单元同时工作,通过对这几个CNU单元和VNU单元复用,可以实现部分并行译码。但对于随机构造的码字,即使将L(qij)和L(rji)存储在多个存储单元,也不能保证每个时钟从L(qij)和L(rji)中读写的多个数据在校验矩阵的同一行或同一列,CNU单元和VNU单元也只好处于等待状态,这时也不能实现部分并行译码。本发明的方法是将校验矩阵设计成具有分块矩阵的结构,如图3所示。图3中p为最大行重,q为最大列重,每一个分块矩阵Hi,j满足每一行最多只有一个1,每一列也最多只有一个1。对于规则LDPC码,p即为行重,q即为列重,此时Hi,j为方阵,且它的每一行和每一列都恰好只有一个1。对于非规则LDPC码,根据码字的最大行重p和最大列重q,首先构造一个行重为p、列重为q的规则码,然后按照非规则码的度分布规则,通过删除规则码的校验矩阵对应位置上的1来实现。因此本发明以下讨论的都是规则LDPC码的情况。
由于L(qij)和L(rji)中的元素是和校验矩阵中有1的位置一一对应的,将校验矩阵设计成具有分块矩阵的结构后,部分并行译码在工程上即可以实现。本发明的方法是以将校验矩阵设计成分块结构为基础的,并给出了分块结构校验矩阵的构造方法。
本发明提出了一种基于矩阵分块的高速LDPC译码器实现方法,包括以下具体步骤:
第一步构造具有分块校验矩阵的LDPC码:
(1)根据所需构造码字的最大行重p与最大列重q确定所构造校验矩阵的分块数,为pq个分块。
(2)取p个自然数a1,a2......ap,满足GCD(aj,M)=1且(q-1)aj<M,j=1,2…p;同时还要根据消除小环的条件,对该p个数a1,a2......ap进行选取,使得所构造的校验矩阵无小环。
(3)按方法bji=aji(mod M)+1,i=1,2…M,j=1,2…p得到{1,2,...,M}的p个重新排列,式中M为校验矩阵的行数;然后构造矩阵H:,j,j=1,2…p,方法为:H:,j第一列中非0元素所在的行号为bj1,bj2......bjq,第二列中非0元素所在的行号为bj(q+1),bj(q+2)......bj(2q),依此类推,再将p个H:,j合并起来,即得到校验矩阵H。
(4)对第(3)步所构造的校验矩阵的行进行重排,使重排后的校验矩阵具有分块的结构,重排规则为:将H:,1第j列中非0元素所在的行b1[(j-1)q+i]=[(j-1)q+i]a1(modM)+1移至第j+(i-1)M/q行,i=1,2…q,j=1,2…M/q。
(5)对于规则LDPC码,到第(4)步后具有分块结构的校验矩阵即已构造完成;对于非规则LDPC码,只需再按照度分布规则将对应分块中的1变成0即可。
第二步在LDPC码的校验矩阵具有分块结构的情况下,对其实现高速并行译码:
(1)根据所要求的并行度及校验矩阵的分块数,确定需要的存储单元的数目。若每个分块矩阵分存在n个存储单元中,则需要npq个存储L(qij)和npq个存储L(rji)的存储单元。
(2)利用式(10)初始化L(qij),初始化可以在npq个存储单元中同时并行进行,设码长为N,每个时钟往各个存储单元写一个数,存储单元用的是双口RAM,则初始化需要N/(2np)个时钟。
(3)利用式(6)进行校验节点迭代,若存储器用的是双口RAM,则可以有2nq个CNU单元同时工作。若CNU单元可以一个时钟完成一次运算,则进行一次校验节点迭代需要M/(2nq)个时钟,其中M为校验比特数,即校验矩阵的行数。
(4)利用式(7)和式(8)进行变量节点迭代,若存储器用的是双口RAM,则可以有2np个VNU单元同时工作。若VNU单元可以一个时钟完成一次运算,则进行一次校验节点迭代需要N/(2np)个时钟。若已经达到了最大迭代次数,则跳到第(5)步,否则跳到第(3)步继续迭代。
(5)利用式(9)进行判决,得到最终的译码结果。判决需要N/(2np)个时钟。
本发明所述基于矩阵分块的高速LDPC译码器实现方法具体实现过程如下:
一、具有分块校验矩阵LDPC码的构造方法
根据现代信道编码理论,随机构造的码字性能最好,而对于具有分块校验矩阵结构的码字,要想得到和随机码字相同的性能,就必须采用一定的规则使构造的码字最优。本发明通过消除所构造码字中的小环,来使码字的性能最优;然后对码字的行进行重新排列,使得到的码字具有分块结构。
LDPC码Tanner图上的节点如果构成图4中的形式,则存在环长为4的环;图5中是存在环长为6的环的情况。Tanner图上的平均环长对所构造的LDPC码的性能有很大影响,从BP迭代译码算法可知,在译码循环中每个节点接收的都不包括从自身发出的信息,但如果存在环长为4或6的环,则经过4或6次译码循环后,从该节点出发的信息又被作为另一节点的信息传回来(如图4和图5中箭头所示),从而造成自身信息的叠加,影响译码的准确性。理论上,如果Tanner图上环长为无限大,BP迭代译码算法能达到最佳的性能。因此一般构造LDPC码时,都尽量消除Tanner图上的小环,特别是环长为4和6的环。目前一般采取随机搜索的方法来消除小环,也有的用代数方法来消除规则LDPC码Tanner图上的4环。本发明提出了一种消除4环、6环甚至更多小环的LDPC码的构造方法。
若将图3中H1,1、H2,1......Hq,1合成一个矩阵H:,1,可见H:,1每行都只有一个1,若从H:,1的第一列开始直到最后一列,将每列中非0元素所在的行号排列起来,则得到的排列是排列{1,2,...,M}的重新排列,其中M为校验矩阵的行数。为了具体说明,现举一例,假设H:,1如图6所示,则第一列中非0元素所在行号为:1,6,8;第二列中非0元素所在行号为:2,4,9;第三列中非0元素所在行号为:3,5,7。合起来得到的排列为{1,6,8,2,4,9,3,5,7},它是{1,2,3,4,5,6,7,8,9}的重新排列。类似的,H:,2......H:,p也有这个特点。
由有限域的理论可知:若两个自然数a、M的最大公因子GCD(a,M)=1,则排列{bi|bi=ai(modM)+1,i=1,2…M}是排列{1,2,...,M}的重新排列。
证明:如果不是这样,则存在1≤i<j≤M,满足bi≡bj(modM),故有M|a(j-i),因为GCD(a,M)=1,故M|(j-i);又因为1≤i<j≤M,故j-i<M,与M|(j-i)矛盾。故原命题正确。
根据以上知识,可以给出校验矩阵H的构造方法如下。
(1)取p个自然数a1,a2......ap,满足GCD(aj,M)=1且(q-1)aj<M,j=1,2…p。
(2)按方法bji=aji(modM)+1,i=1,2…M,j=1,2…p得到{1,2,...,M}的p个重新排列。
(3)构造矩阵H:,j,j=1,2…p:H:,j第一列中非0元素所在的行号为bj1,bj2......bjq,第二列中非0元素所在的行号为bj(q+1),bj(q+2)......bj(2q),依此类推。将p个H:,j按图3的结构合并起来,即得到校验矩阵H。
为了消除校验矩阵中的小环,还得对a1,a2......ap的选取进行约束。Tanner图上的环也可以从校验矩阵中看出来,校验矩阵中4环的结构如图7所示,图中校验矩阵在A、B、C、D位置的值为1;6环的结构如图8所示,同样校验矩阵在A、B、C、D、E、F位置的值为1。从图7中可以看出,存在4环的条件是AB=CD;从图8中可以看出,存在6环的条件是AF=BC+DE。其中AB、CD等是校验矩阵H同一列中非0元素所在两行行号的差值,由H的构造方法易知,该差值为kaj或M-kaj,k=1,2…(q-1),j=1,2…p。因此所构造的校验矩阵中无4环的条件为:
其中dj1=kaj1或(M-kaj1),k=1,2…(q-1),j=1,2…p。dj2类似。同样,所构造的校验矩阵中无6环的条件为:
按以上方法画出8环甚至更大环的图,即可以得到消去这些环的条件。根据这些条件,在计算机上编程进行搜索,即可以得到满足条件的aj集合。
按以上方法构造的校验矩阵H,还不满足分块的条件,这可以通过对H的行进行重新排列得到,而且这样并不改变H的特性,即重排后的H与原H对应同一个码。假设重排以H:,1为基础进行(也可以任意H:,j进行),则重排规则为:将H:,1第1列中非0元素所在的行b11=a1(mod M)+1移至第1行,行b12=2a1(modM)+1移至第1+M/q行,行b1i=ia1(mod M)+1移至第1+(i-1)M/q行,i=1,2…q;第2列中非0元素所在的行b1(q+1)=(q+1)a1(mod M)+1移至第2行,行b1(q+i)=(q+i)a1(mod M)+1移至第2+(i-1)M/q行,i=1,2…q;第j列中非0元素所在的行b1[(j-1)q+1]=[(j-1)q+1]a1(modM)+1移至第j行,行b1[(j-1)q+i]=[(j-1)q+i]a1(mod M)+1移至第j+(i-1)M/q行,i=1,2…q,j=1,2…M/q。按此规则重排后得到的新校验矩阵,即是可以按图3分块的校验矩阵。显然,H1,1、H2,1......Hq,1都是单位矩阵,满足每一行和每一列都只有一个1;由构造方法可知,其它分块矩阵Hi,j的每一行只有一个1,现在要证明它的每一列也只有一个1。
考察重排后校验矩阵的H1,1,它的第i行其实是原检验矩阵的第b1[(i-1)q+1]=[(i-1)q+1]a1(mod M)+1行,则重排后校验矩阵的H1,1中任意i1,i2(1≤i1<i2≤M/q)两行,在原校验矩阵中对应两行的行距为
di2-i1=(i2-i1)qa1(mod M) (13)
或
di2-i1=M-(i2-i1)qa1(mod M) (14)
因为q|M,故q|di2-i1;又因为已经知道原校验矩阵同一列中非0元素所在两行的行距为kaj或M-kaj,k=1,2…(q-1),j=1,2…p,且GCD(aj,M)=1,q|M,则q!|kaj且q!|M-kaj。故有di2-i1≠kaj且di2-i1≠M-kaj,k=1,2…(q-1),j=1,2…p,此即说明原校验矩阵中没有一列在这两行上都有非0元素。对行重排后,则可知分块矩阵H1,j的每一列最多只有一个1,又由于H1,j的每一行都有一个1且H1,j是方阵,故H1,j的每一列恰好都有一个1。再考察重排后校验矩阵的Hi,1,i=2…q,情况与H1,1相同。故可知重排后校验矩阵的分块矩阵Hi,j的每一行只有一个1,每一列也只有一个1。
至此,无小环、具有分块矩阵结构的校验矩阵即已经得到。
二、具有分块校验矩阵LDPC码的高速并行译码方法
由于L(qij)和L(rji)中的元素是和校验矩阵中有1的位置一一对应的,将校验矩阵设计成具有分块矩阵的结构后,L(qij)和L(rji)就可以按照该分块结构存储在pq个存储单元中。如果每一个存储单元都采用一个单口RAM的话,则每个时钟可以从L(qij)和L(rji)读取或写入pq个数据,而这pq个数据恰好在校验矩阵的q行或p列上,则可以有q个CNU单元或p个VNU单元同时工作;若采用常用的双口RAM,则可以有2q个CNU单元或2p个VNU单元同时工作。若用npq个存储单元,其中每个分块矩阵分存在n个存储单元中,则可以实现更大的并行度,如果采用双口RAM,则可以有2nq个CNU单元或2np个VNU单元同时工作。如果采用FPGA实现,由于一般的FPGA芯片中都有大量的Block RAM资源,则上述结构非常便于FPGA实现。
采用BP迭代译码算法,具有分块校验矩阵LDPC码的高速并行译码方法的具体实现步骤如下:
(1)根据所要求的并行度及校验矩阵的分块数,确定需要的存储单元的数目。若每个分块矩阵分存在n个存储单元中,则需要npq个存储L(qij)和npq个存储L(rji)的存储单元。
(2)利用式(10)初始化L(qij),初始化可以在npq个存储单元中同时并行进行,设码长为N,每个时钟往各个存储单元写一个数,存储单元用的是双口RAM,则初始化需要N/(2np)个时钟。
(3)利用式(6)进行校验节点迭代,若存储器用的是双口RAM,则可以有2nq个CNU单元同时工作。若CNU单元可以一个时钟完成一次运算,则进行一次校验节点迭代需要M/(2nq)个时钟,其中M为校验比特数,即校验矩阵的行数。
(4)利用式(7)和式(8)进行变量节点迭代,若存储器用的是双口RAM,则可以有2np个VNU单元同时工作。若VNU单元可以一个时钟完成一次运算,则进行一次校验节点迭代需要N/(2np)个时钟。若已经达到了最大迭代次数,则跳到第(5)步,否则跳到第(3)步继续迭代。
(5)利用式(9)进行判决,得到最终的译码结果。判决需要N/(2np)个时钟。
若最大迭代次数为maxiter,则可知完成一个分组的译码需要(maxiter+2)N/(2np)+maxiter M/(2nq)个时钟周期,显然当n越大时,需要的时间越短,可以达到的译码速度越高。
本发明提出的基于矩阵分块的LDPC译码器实现方法,可以在工程上实现LDPC码的高速并行译码;实现时所用的资源、存储器容量都没有增加,只是单个存储器的容量变小、存储器的数目变多而已;译码的过程非常简单,译码复杂度很低,而一般的LDPC译码器迭代时需要在L(qij)表和L(rji)表之间进行大量的地址查找工作,码长较长时实现复杂度很大;所构造的码字中无小环,性能非常好,与随机构造的码字性能相当。
附图说明
图1Tanner图的结构。
图2——迭代信息的传递过程。
图3——具有分块结构的校验矩阵。
图4——Tanner图上4环的结构。
图5——Tanner图上6环的结构。
图6——某一H:,1示意。
图7——校验矩阵中4环的结构。
图8——校验矩阵中6环的结构。
图9——(1008,504)码的误码率性能。
具体实施方式
下面结合附图和一个实例对本发明作进一步说明。
基于矩阵分块的高速LDPC译码器的实现与构造主要包括两部分:构造具有分块结构校验矩阵的LDPC码,并且构造的码字无小环,从而保证了所构造码字的性能;对于具有分块结构校验矩阵的码字,根据BP算法,利用部分并行译码结构或全并行译码结构对LDPC译码器进行实现。
设要设计的码字为(1008,504),码率为1/2,列重为q=3,行重为p=6的规则LDPC码,即码字的信息位长为504、编码后码长为1008,则校验位长为M=1008-504=504。则构造具有分块结构校验矩阵码字的过程如下:
1、选择用于构造校验矩阵的p(p=6)个参数aj,j=1,2…p。选择方法如下:
(1)因为504=23*32*7,504/(q-1)=504/2=252,故首先从自然数2~251中将所有2的倍数、3的倍数和7的倍数划掉,得到一个数的集合A1。
(2)每次从集合A1中取p=6个数,若这6个数满足无4环的条件,则将这6个数作为一组保存下来,否则丢掉。若集合A1中数的个数为L,则所有6个数的组合的个数为CL 6。将保存的数组构成一个新的集合,记为A2。
(3)依次取出A2中的每个数组,若数组中的数满足无6环的条件,则将该数组保留,否则丢掉。将保存的数组构成一个新的集合,记为A3。
(4)若只要求消除6环,则从A3中任取一组数作为aj即可。若还想消除更多的小环,如消除8环,则根据无8环的条件,从A3中取出各个数组逐一验证,保留符合条件的数组;消除更多环的情况依此类推,最后从保留的数组中挑选一组作为aj即可。
按以上步骤,用计算机编程进行搜索,得到满足无6环的一组参数为aj=(31,37,41,47,61,79),下面校验矩阵的构造即以此参数进行。
2、构造校验矩阵,步骤如下:
(1)按方法bji=aji(mod504)+1,i=1,2…504,j=1,2…6,aj=(31,37,41,47,61,79)得到{1,2...,504}的6个重新排列。
(2)生成矩阵H:,j,j=1,2…6。其中H:,j第一列中非0元素所在的行号为bj1,bj2,bj3,第二列中非0元素所在的行号为bj4,bj5,bj6,依此类推。将6个H:,j按图3的结构合并起来,即得到校验矩阵H。
(3)将H:,1第1列中非0元素所在的行b11=a1(mod504)+1移至第1行,行b12=2a1(mod504)+1移至第1+504/3=169行,行b13=3a1(mod504)+1移至第1+2×504/3=337行;第2列中非0元素所在的行b14=(3+1)a1(mod504)+1移至第2行,行b1(3+i)=(3+i)a1(mod504)+1移至第2+(i-1)×504/3行,i=1,2,3;第j列中非0元素所在的行b1[3(j-1)+1]=[3(j-1)+1]a1(mod504)+1移至第j行,行b1[3(j-1)+i]=[3(j-1)+i]a1(mod504)+1移至第j+(i-1)×504/3行,i=1,2,3,j=1,2,…504/3。
经过以上步骤后,具有分块校验矩阵的码字(1008,504)即得到了,且校验矩阵中无6环。为了验证所构造码字的性能,在加性高斯白噪声信道(AWGN)下,采用BPSK调制,用计算机编程对本发明所构造的LDPC码的误码率性能进行了仿真,迭代次数20次,其性能如图9所示。作为对比,图9中还同时列出了MacKay随机构造的码字的性能。从图9中可以看出,按照本发明方法设计出来的码字的性能与随机构造的码字的性能基本相当,而且经过很少的迭代次数(此处为20次)译码器就可以完成译码,大大缩短了译码的时间,这可以进一步提高译码速度;而随机构造的码字一般要迭代50次以上,才能得到正确的译码结果。
最后一步便是在硬件上实现该(1008,504)码译码器,可以实现并行处理的硬件很多,如VLSI(Very Large Scale Integration)、ASIC(Application SpecificIntegrated Circuit)、FPGA(Field Programmable Gate Array)等,工程开发上以用FPGA的居多。因为该码字行重为6,列重为3,故可以用3×6=18个存储器来存储迭代信息,如果使用双口RAM的话,则可以有6个校验节点迭代运算(CNU)单元并行工作,12个变量节点迭代运算(VNU)单元并行工作。此时完成一次校验节点迭代需要504/6=84个时钟,完成一次变量节点迭代需要1008/12=84个时钟,故完成一次迭代需要84+84=168个时钟,迭代20次需要168×20=3360个时钟,在这种情况下,译码器能够达到的最大译码速度为:工作时钟×1008/3360=工作时钟×0.3,若工作时钟为100MHz的话,则译码器的最大译码速度为30Mbps。如果将上述18个基本存储单元又分成若干个更小的存储单元,则可以有更多的CNU单元和VNU单元并行工作,译码器能够达到的译码速度将会更高。
Claims (2)
1、一种基于矩阵分块的高速LDPC译码器实现方法,包括以下步骤:
第一步构造具有分块校验矩阵的LDPC码:
(1)根据所需构造码字的最大行重p与最大列重q确定所构造校验矩阵的分块数,为pq个分块;
(2)取p个自然数a1,a2......ap,满足GCD(aj,M)=1且(q-1)aj<M,j=1,2…p;同时还要根据消除小环的条件,对该p个数a1,a2......ap进行选取,使得所构造的校验矩阵无小环;
(3)按方法bji=aji(modM)+1,i=1,2…M,j=1,2…p得到{1,2,...,M}的p个重新排列,式中M为校验矩阵的行数;然后构造矩阵Hi,j=1,2…p,方法为:Hi,j第一列中非0元素所在的行号为bj1,bj2......bjq,第二列中非0元素所在的行号为bj(q+1),bj(q+2)......bj(2q),依此类推,再将p个Hi,j合并起来,即得到校验矩阵H;
(4)对第(3)步所构造的校验矩阵的行进行重排,使重排后的校验矩阵具有分块的结构,重排规则为:将Hi,1第j列中非0元素所在的行b1[(j-1)q+i]=[(j-1)q+i]a1(modM)+1移至第j+(i-1)M/q行,i=1,2…q,j=1,2…M/q;
(5)对于规则LDPC码,到第(4)步后具有分块结构的校验矩阵即已构造完成;对于非规则LDPC码,只需再按照度分布规则将对应分块中的1变成0即可;
第二步在LDPC码的校验矩阵具有分块结构的情况下,对其实现高速并行译码:
(1)根据所要求的并行度及校验矩阵的分块数,确定需要的存储单元的数目:设每个分块矩阵分存在n个存储单元中,则需要npq个存储L(qij)和npq个存储L(rji)的存储单元;
(2)利用公式L(qij)=-ri初始化L(qij),初始化在npq个存储单元中同时并行进行;
(3)利用式(6)
进行校验节点迭代,设存储器用的是双口RAM,则有2nq个CNU单元同时并行工作;
(4)利用式(7)和式(8)
L(qij)=L(qi)-L(rji)(8)
进行变量节点迭代,设存储器用的是双口RAM,则有2np个VNU单元同时工作;
(5)利用式(9)
进行判决,得到最终的译码结果。
2、根据权利要求1所述的译码器实现方法,其特征在于:第一步步骤(2)中所述消除小环的条件为:
所构造的校验矩阵中无4环的条件为:
dj1≠dj2, j1≠j2(11)
所构造的校验矩阵中无6环的条件为:
dj1≠dj2+dj3, j1≠j2≠j3(12)
其中dji=kaji或(M-kaji),k=1,2…(q-1),j=1,2…p;
根据8环以及更大环的结构图,得到消去这些环的条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178152A CN101335592B (zh) | 2008-08-04 | 2008-08-04 | 基于矩阵分块的高速ldpc译码器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178152A CN101335592B (zh) | 2008-08-04 | 2008-08-04 | 基于矩阵分块的高速ldpc译码器实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101335592A true CN101335592A (zh) | 2008-12-31 |
CN101335592B CN101335592B (zh) | 2010-12-15 |
Family
ID=40197936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101178152A Expired - Fee Related CN101335592B (zh) | 2008-08-04 | 2008-08-04 | 基于矩阵分块的高速ldpc译码器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101335592B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789794A (zh) * | 2009-01-23 | 2010-07-28 | 雷凌科技股份有限公司 | 低密度奇偶校验码的解码方法及其电路 |
CN102209058A (zh) * | 2011-06-02 | 2011-10-05 | 北京理工大学 | 一种基于ldpc编码辅助的mpsk系统载波同步方法 |
CN102970045A (zh) * | 2011-08-30 | 2013-03-13 | 汉阳大学校产学协力团 | Omp的ldpc解码装置及转换奇偶校验矩阵生成装置 |
WO2014008624A1 (zh) * | 2012-07-09 | 2014-01-16 | 中兴通讯股份有限公司 | 一种数据存储方法和装置 |
CN106685597A (zh) * | 2017-02-14 | 2017-05-17 | 华南理工大学 | 一种基于度优化的Raptor码部分除环编码方法 |
CN106877879A (zh) * | 2016-12-30 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据处理的方法以及编码器 |
CN107959502A (zh) * | 2016-10-17 | 2018-04-24 | 上海数字电视国家工程研究中心有限公司 | 一种ldpc编码方法 |
CN108063622A (zh) * | 2016-11-07 | 2018-05-22 | 深圳超级数据链技术有限公司 | 校验矩阵的生成方法和装置 |
WO2019242022A1 (zh) * | 2018-06-22 | 2019-12-26 | 华为技术有限公司 | 一种极化码译码方法及译码装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100364237C (zh) * | 2004-02-09 | 2008-01-23 | 清华大学 | 非规则低密度奇偶校验码的系统码设计方法及其通信系统 |
JP2006339799A (ja) * | 2005-05-31 | 2006-12-14 | Toshiba Corp | イレギュラー低密度パリティチェック符号復号器及び方法 |
CN101005333B (zh) * | 2006-01-17 | 2010-05-12 | 华为技术有限公司 | 低密度奇偶校验码编码方法 |
JP2007215089A (ja) * | 2006-02-13 | 2007-08-23 | Fujitsu Ltd | 復号装置及び復号方法 |
-
2008
- 2008-08-04 CN CN2008101178152A patent/CN101335592B/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789794A (zh) * | 2009-01-23 | 2010-07-28 | 雷凌科技股份有限公司 | 低密度奇偶校验码的解码方法及其电路 |
CN102209058A (zh) * | 2011-06-02 | 2011-10-05 | 北京理工大学 | 一种基于ldpc编码辅助的mpsk系统载波同步方法 |
CN102970045A (zh) * | 2011-08-30 | 2013-03-13 | 汉阳大学校产学协力团 | Omp的ldpc解码装置及转换奇偶校验矩阵生成装置 |
CN102970045B (zh) * | 2011-08-30 | 2016-09-28 | 汉阳大学校产学协力团 | Omp的ldpc解码装置及转换奇偶校验矩阵生成装置 |
WO2014008624A1 (zh) * | 2012-07-09 | 2014-01-16 | 中兴通讯股份有限公司 | 一种数据存储方法和装置 |
CN107959502A (zh) * | 2016-10-17 | 2018-04-24 | 上海数字电视国家工程研究中心有限公司 | 一种ldpc编码方法 |
CN108063622A (zh) * | 2016-11-07 | 2018-05-22 | 深圳超级数据链技术有限公司 | 校验矩阵的生成方法和装置 |
CN106877879A (zh) * | 2016-12-30 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据处理的方法以及编码器 |
CN106685597A (zh) * | 2017-02-14 | 2017-05-17 | 华南理工大学 | 一种基于度优化的Raptor码部分除环编码方法 |
CN106685597B (zh) * | 2017-02-14 | 2019-11-15 | 华南理工大学 | 一种基于度优化的Raptor码部分除环编码方法 |
WO2019242022A1 (zh) * | 2018-06-22 | 2019-12-26 | 华为技术有限公司 | 一种极化码译码方法及译码装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101335592B (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101335592B (zh) | 基于矩阵分块的高速ldpc译码器实现方法 | |
KR101789959B1 (ko) | 구조적 ldpc의 인코딩 방법, 디코딩 방법, 인코딩 장치 및 디코딩 장치 | |
CN101192833B (zh) | 一种低密度校验码ldpc并行编码的装置及方法 | |
CN100425000C (zh) | 双涡轮结构低密度奇偶校验码解码器及解码方法 | |
Karimi et al. | Message-passing algorithms for counting short cycles in a graph | |
US10536169B2 (en) | Encoder and decoder for LDPC code | |
CN100425017C (zh) | 基于预编码的并行卷积ldpc码的编码器及其快速编码方法 | |
CN103069720B (zh) | 纠错解码装置及纠错解码方法 | |
JPWO2006120844A1 (ja) | Ldpc符号化方式によるエンコーダ及びデコーダ | |
CN104333390A (zh) | 一种ldpc码的校验矩阵的构造方法与编码方法 | |
US9825650B2 (en) | Decoder architecture for cyclically-coupled quasi-cyclic low-density parity-check codes | |
Wang et al. | Processing-task arrangement for a low-complexity full-mode WiMAX LDPC codec | |
CN103220003A (zh) | 提高节点处理并行度的qc-ldpc译码器的实现方法 | |
US20080134008A1 (en) | Parallel LDPC Decoder | |
JP2007215089A (ja) | 復号装置及び復号方法 | |
CN110278000B (zh) | 基于dvb-s2标准的ldpc码并行译码fpga实现架构的译码方法 | |
US8271851B2 (en) | Encoding and decoding a data signal as a function of a correcting code | |
US20220255560A1 (en) | Method and apparatus for vertical layered decoding of quasi-cyclic low-density parity check codes built from clusters of circulant permutation matrices | |
Li et al. | A multi-standard efficient column-layered LDPC decoder for software defined radio on GPUs | |
CN101800627B (zh) | 一种多码率兼容的高速ldpc编码器的硬件实现 | |
CN102412844B (zh) | 一种ira类ldpc码的译码方法及译码装置 | |
Ueng et al. | Jointly designed architecture-aware LDPC convolutional codes and memory-based shuffled decoder architecture | |
CN1822510A (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN1973440A (zh) | Ldpc编码器、解码器、系统及方法 | |
US10727869B1 (en) | Efficient method for packing low-density parity-check (LDPC) decode operations |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101215 Termination date: 20130804 |