CN101958718B - 用于ldpc码的改进型半并行译码器和译码方法 - Google Patents

用于ldpc码的改进型半并行译码器和译码方法 Download PDF

Info

Publication number
CN101958718B
CN101958718B CN 200910108808 CN200910108808A CN101958718B CN 101958718 B CN101958718 B CN 101958718B CN 200910108808 CN200910108808 CN 200910108808 CN 200910108808 A CN200910108808 A CN 200910108808A CN 101958718 B CN101958718 B CN 101958718B
Authority
CN
China
Prior art keywords
llr
value
node unit
decoder
vnu
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.)
Active
Application number
CN 200910108808
Other languages
English (en)
Other versions
CN101958718A (zh
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.)
Nationz Technologies Inc
Original Assignee
Nationz Technologies Inc
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 Nationz Technologies Inc filed Critical Nationz Technologies Inc
Priority to CN 200910108808 priority Critical patent/CN101958718B/zh
Publication of CN101958718A publication Critical patent/CN101958718A/zh
Application granted granted Critical
Publication of CN101958718B publication Critical patent/CN101958718B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

用于LDPC码的改进型半并行译码器,包括各变量节点单元VNU(11)、LLR值交织模块(12)、基础矩阵存储单元RAM(13)、LLR值反交织模块(14)、译码判决模块(15)和各校验节点单元CNU(16);所述译码器(10)接收LDPC码字的LLR值,各变量节点单元对其进行行迭代,并修正各变量节点单元内的LLR_Q;所述LLR值交织模块(12)获得各变量节点单元内修正后的LLR_Q,更新各校验节点单元中LLR_R值;各校验节点单元列迭代,得到各校验节点单元的修正LLR_R以及译码器的输出译码结果。本发明有益效果在于:可以仅对现今通用的译码算法及译码器结构做少量修改就实现LDPC码的成功译码。

Description

用于LDPC码的改进型半并行译码器和译码方法
技术领域  本发明涉及用于检错或纠错的编码、译码或代码转换,特别是涉及用于中国移动多媒体广播CMMB系统的低密度奇偶校验LDPC码,尤其涉及用于LDPC码的改进型半并行译码器和译码方法。
背景技术  现有技术准循环低密度奇偶校验LDPC(Low Density Parity Check)码是一类结构规则的LDPC码,其校验矩阵H由一个个小方阵组成,一般情况下每个小方阵是置换单位阵或全零阵。一个(N,M,K,L)准循环LDPC码,其码长为N=L×Z,信息比特数为K,校验比特数为M,校验矩阵为M×N的矩阵:
其中Pi,j为Z×Z的置换单位矩阵或全零阵。
现有技术准循环码的译码方法,包括全并行结构译码和半并行结构译码。
本发明用于中国移动多媒体广播CMMB(China Mobile Multimedia Broadcasting)系统中使用的LDPC码,CMMB通信系统系统中的LDPC码是一类具有特殊构造的LDPC。所述LDPC码的构造由名称为“LDPC码校验矩阵构造方法及利用该方法的编码解码装置”的中国专利申请200610113914.4公开,其特征为利用代数结构构造LDPC码的校验矩阵H。
校验矩阵H由基础码表通过行/列循环移位生成,以1/2码率为例,校验矩阵H具体构造方式如下:
1、CMMB系统使用的1/2码率的LDPC码,其校验矩阵H为M×N的矩阵,其中M=4608,N=9216,每行元素中有ρ个“1”,每列元素中有γ个“1”,其中ρ=6,γ=3。
校验矩阵H可划分为J=256个大小为M0×N的行块,其中M0=18,于是有
H = H 0 , h H 1 , h · · · H J - 1 , h
2、其中M0×N的行基础矩阵H0,h的可用其缩略码表形式Habbr,h表示,CMMB系统中1/2码率的LDPC码使用的Habbr,h为:
H abbr , h = 0 6 12 18 25 30 0 7 19 26 31 5664 0 8 13 20 32 8270 1 6 14 21 3085 8959 1 15 27 33 9128 9188 1 9 16 34 8485 9093 2 6 28 35 4156 7760 2 10 17 7335 7545 9138 2 11 22 5278 8728 8962 3 7 2510 4765 8637 8875 3 4653 4744 7541 9175 9198 3 23 2349 9012 9107 9168 4 7 29 7774 7774 8946 4 7224 8074 8339 8725 9212 4 4169 8650 8780 9023 9159 5 8 6638 8986 9064 9210 5 2107 7787 8655 9141 9171 5 24 5939 8507 8906 9173
其中Habbr,h(i,j)表示基础矩阵H0,h的第i行,第Habbr,h(i,j)列的元素为1。
H矩阵中的每一个行块Hk,h(k=1,2,...J-1)都由基础矩阵H0,h通过向右列循环移位N0×k生成,可表示为:
Hk,h(i,j)=H(i+M0×k,j)=H0,h(i,(j-N0×k)modN)
(k=0,1,...J-1)
(M0=18,N0=36,J=256)
3、同样地,校验矩阵H也可划分为L=256个大小为M×N0的列块,其中N0=36,即可表示为:
H=[H0,v H1,v...HL-1,v]
其中M×N0的列基础矩阵H0,v的可用其缩略码表形式Habbr,v表示,CMMB系统中1/2码率的LDPC码的Habbr,v为:
H abbr , v = 0 3 6 9 12 15 0 1 2 5 1 4 7 10 13 16 3 9 15 5596 2 5 8 11 14 17 6 12 22 3449
7 8 0 2 3 4 5 7 0 1 302 377 119 265 179 50 260 856 28 189 589 736 1783 2241 1311 304 2544 1668 156 3580
2 3 8 11 17 0 1 4 6 12 58 77 141 122 47 383 488 52 105 53 747 853 1988 463 1021 3081 3375 961 2260 2552
0 1 2 4 5 6 33 46 31 70 152 83 61 147 248 315 750 1673
其中Habbr,v(i,j)表示基础矩阵H0,v的第j列,第Habbr,v(i,j)行的元素为1。H矩阵中的每一个列块Hk,v(k=1,2,...,L-1)都由基础矩阵H0,v通过向下列循环移位M0×k生成,可表示为:
Hk,v(i,j)=H(i,j+N0×k)=H0,v((i-M0×k)modM,j)
(k=0,1,...,L-1)
(M0=18,N0=36,L=256)
4、根据上述两种方法构造生成的H矩阵为同一校验矩阵。
现有技术通常采用全并行译码方式或半并行译码方式译码,以下简述这两种译码方式:
1、全并行译码方式
全并行结构的译码器是二分图在硬件中的直接映射,它适用于所有的LDPC码。所有的节点被分别实现为变量节点单元VNU(variable node unit)和校验节点单元CNU(check nodeunit),边线则成为CNU和VNU之间的数据连线,其中CNU的输入连接到VNU的输出,VNU的输入连接到CNU的输出。在每次迭代过程中,全并行译码器的执行步骤有如下四步:
a、每个VNU读取暂存其中的信道初始信息,结合输入数据线传递来的外信息,执行和算法;
b、每个VNU将和算法计算结果通过输出数据线传递给连接的各个CNU;
c、每个CNU根据输入数据线传递来的外信息,执行积算法或简化算法;
d、每个CNU将计算结果通过输出数据线传递给连接的各个VNU。
2、半并行译码方式
如图2所示,传统半并行结构是一种并-串结合的结构,主要用于准循环LDPC码。其基本思想是通过串行方式完成原来可以由多个节点并行完成的计算,仅实现数据远远少于二分图节点数目的计算单元,从而简化译码器节点之间错踪复杂的数据线网络布线问题并降低译码器对逻辑资源的需求。与全并行结构相同,半并行译码器的译码算法的计算由节点完成,边线则完成计算数据的存储。但与金并行结构不同的是,半并行译码器的每一个节点必须采用流水线结构,以尽可能快速地串行完成由它所代表的p个节点原来并行完成的计算,于此同时,每个节点计算单元需要连接一个能存储p个数据的RAM,通过读者写地址控制,RAM能够按照计算单元串行处理的顺序向节点提供数据读写服务。并行结构的译码器可以实现复杂度和译码速率的有效折衷,其原理框图如图2所示。
参照图2,传统半并行译码器在每次迭代中的工作流程按照如下步骤进行:
a、VNU根据H矩阵,顺序从与之连接的RAM中读取数据;
b、VNU将计算结果输出到RAM的写端口,并将数据写回到RAM的原先位置;
步骤a-b循环p次,RAM中的所有数据都被读写一次之后,CNU开始工作;
c、CNU根据H矩阵,顺序从与之连接的RAM中读取数据;
d、CNU将计算结果输出到RAM的写端口,并数据写回到RAM原先位置;
步骤c-d循环p次,RAM中的所有数据都被读写一次之后,一次迭代结束。
现有技术译码器和译码方法存在以下不足:
1、全并行译码技术,在码长较长的情况下需要占用较多的硬件资源,成本较高;
2、传统半并行译码技术多应用于准循环LDPC码的译码解决方案,不适合用于CMMB系统中的LDPC码。
发明内容  本发明要解决的技术问题在于避免上述现有技术的不足之处而提出一种改进型半并行译码器和译码方法。
本发明主要是针对是移动数字广播多媒体系统CMMB中使用的LDPC码提出译码算法。CMMB系统中使用的LDPC码有别于传统的LDPC码,它首先是一类基于基础矩阵的循环移位构造生成的LDPC码,但它又不同于其他系统中大量使用的的准循环码。本发明基于CMMB系统中使用的LDPC码的特点,在准循环码的译码方法的基础上,提出了一种改进的译码方案,可以仅对现今通用的译码算法及译码器结构做少量修改就实现LDPC码的成功译码。
本发明解决所述技术问题可以通过采用以下技术方案来实现,提出一种改进的半并行译码器,用于CMMB通信系统中的LDPC码的译码,所述LDPC码的校验矩阵H是一个M×N的矩阵,每行元素中有ρ个“1”,每列元素中有γ个“1”,该校验矩阵H可划分为J个大小为M0×N的行块或L个大小为M×N0的列块,其中M=M0×J,N=N0×L;校验矩阵H第1个大小为M0×N的行块为行基础矩阵,表示为H0,h或缩略码表形式Habbr,h;校验矩阵H第1个大小为M×N0的列块为列基础矩阵,表示为H0,v或缩略码表形式Habbr,v,所述译码器包括各变量节点单元VNU、LLR(Logarithm Likelihood Rati,对数似然比)值交织模块、基础矩阵存储单元RAM、LLR值反交织模块、译码判决模块和各校验节点单元CNU;所述译码器接收LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN),由各变量节点单元VNU对其进行并行行迭代,然后修正对应各变量节点单元VNU内的LLR_Q;所述LLR值交织模块获得各变量节点单元VNU内修正后的LLR值LLR_Q,并更新各校验节点单元CNU中LLR_R值;各校验节点单元CNU并行列迭代,得到各校验节点单元CNU的修正LLR值LLR_R以及译码器的输出译码结果V=(v0,v1,...,vK-1,vK)。
所述基础矩阵存储单元用于存储行基础矩阵H0,h和列基础矩阵H0,v
所述半并行译码器有J个变量节点单元VNU,各变量节点单元VNU包括行迭代计算模块和LLR_Q存储模块RAM_h,所述LLR_Q存储模块RAM_h用于存储LLR_Q,其大小为M0×ρ。
所述LLR_Q存储模块RAM_h中LLR_Q初始值为0。
所述第k个变量节点单元VNU(k=0,1,...,J-1)将接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到 Y k = ( y kN 0 , y kN 0 + 1 , · · · , y N , y 0 , · · · , y kN 0 - 1 ) 作行迭代,用迭代结果将该变量节点单元VNU对应的LLR_Q存储模块RAM_h中的LLR_Q值更新为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))
(i=0,1,...,M0)(j=0,1,...,ρ)
所述半并行译码器有L个校验节点单元CNU,各校验节点单元CNU包括列迭代计算模块和LLR_R存储模块RAM_v和硬译码结果
Figure G2009101088080D00061
的存储模块RAM,所述LLR_R存储模块RAM_v用于存储LLR_R,其大小为γ×N0
所述LLR_R存储模块RAM_v中LLR_R初始值为0。
为了解决本发明所提出的技术问题,其技术方案还可以是,提供一种改进的半并行译码方案,基于上述的半并行译码器,用于CMMB通信系统中的LDPC码的译码,包括步骤:
A、初始化译码器;
B、各变量节点单元VNU并行行迭代,得到各变量节点单元VNU的修正后的LLR值LLR_Q;
C、LLR值交织模块利用步骤B中获得的各变量节点单元VNU的修正后的LLR值LLR_Q更新对应各校验节点单元CNU中的LLR_R值;
D、各校验节点单元CNU并行列迭代,得到各校验节点单元CNU的修正LLR值LLR_R,以及硬判决结果
Figure G2009101088080D00062
E、LLR值反交织模块利用步骤D中获得的各校验节点单元CNU的修正LLR值LLR_R更新对应变量节点单元VNU中的LLR_Q值;
F、译码判决模块计算硬判决结果
Figure G2009101088080D00063
是否满足校验方程,若满足,则译码成功,输出译码结果,进入步骤H;若不满足,则进入步骤G;
G、计算当前迭代次数是否达到系统规定最大值,若不大于最大值,则返回执行步骤B,进行下一次迭代;若大于最大值,系统判断译码失败,输出当前硬判决结果,进入步骤H;
H、从硬判决结果
Figure G2009101088080D00064
中,提取译码结果V输出,本次译码结束。
步骤F所述的校验方程存储在基础矩阵存储单元RAM中。
步骤G所述的最大值为预设在译码判决模块的一个整数值,为可允许的迭代的最大次数。
步骤B中所述各变量节点单元VNU中行迭代计算模块并行行迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法,其中所述第k个变量节点单元VNU(11)(k=0,1,...,J-1)的收入为所述译码器(10)接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到,为 Y k = ( y kN 0 , y kN 0 + 1 , · · · , y N , y 0 , · · · , y kN 0 - 1 ) , 读取基础矩阵存储单元RAM_H(13)中的行基础矩阵Habbr,h(即H0,h),更新该变量节点单元VNU对应的LLR_Q存储模块RAM_h中的LLR_Q值为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))
(i=0,1,...,M0)(j=0,1,...,ρ)
步骤D中所述各校验节点单元CNU中列迭代计算模块并行列迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法。
步骤A所述的译码器初始化包括子步骤:
A1、迭代计数初始化为inter_counter=0;
A2、并对各变量节点单元VNU中的LLR_Q存储模块RAM_h按行基础矩阵Habbr,h初始化相应的LLR_Q值。
步骤B中,所述各变量节点单元VNU需对LLR_Q值进行M0次逐行更新,最终得到各变量节点单元VNU的修正后的LLR值LLR_Q;
步骤D中,所述各校验节点单元CNU需对LLR_R值进行N0次逐列更新,最终得到各校验节点单元CNU的修正后的LLR值LLR_R。
步骤C中,所述LLR值交织模块需将各变量节点单元VNU中迭换后得到的修正LLR_Q的值更新对应校验节点单元CNU中的LLR_R值。
步骤E中,所述LLR值反交织模块需将各校验节点单元CNU中迭换后得到的修正LLR_R的值更新对应各变量节点单元VNU中的LLR_Q值。
同现有技术相比较,本发明技术方案的有益效果在于:
1、提出了针对CMMB系统中的LDPC码的行列分块方式;
2、只需存储行基础矩阵的缩略码表以及列基础矩阵的缩略码表,节约存储资源;
3、各类计算步骤中多次利用LDPC码循环移位的特征,采用循环移位以及分块计算的方法,降低了计算复杂度。
附图说明  图1是本发明改进的LDPC码半并行译码器结构原理框图;
图2是现有技术半并行译码器结构原理框图;
图3是所述改进的半并行译码器的译码流程图。
具体实施方式  以下结合各附图所示之优选实施例作进一步详述。
如图1所示,本发明之一种用于LDPC码的改进型半并行译码器10,适用CMMB系统,所述LDPC码的校验矩阵H是一个M×N的矩阵,每行元素中有ρ个“1”,每列元素中有γ个“1”,该校验矩阵H可划分为J个大小为M0×N的行块或L个大小为M×N0的列块,其中M=M0×J,N=N0×L;校验矩阵H第1个大小为M0×N的行块为行基础矩阵,表示为H0,h或缩略码表形式Habbr,h;校验矩阵H第1个大小为M×N0的列块为列基础矩阵,表示为H0,v或缩略码表形式Habbr,v,所述译码器包括各变量节点单元VNU 11、LLR值交织模块12、基础矩阵存储单元RAM 13、LLR值反交织模块14、译码判决模块15和各校验节点单元CNU 16;所述译码器10接收LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN),由各变量节点单元VNU 11对其进行并行行迭代,然后修正对应各变量节点单元VNU 11内的LLR_Q;所述LLR值交织模块12获得各变量节点单元VNU 11内修正后的LLR值LLR_Q,并更新各校验节点单元CNU 16中LLR_R值;各校验节点单元CNU 16并行列迭代,得到各校验节点单元CNU 16的修正LLR值LLR_R以及译码器的输出译码结果V=(v0,v1,...,vK-1,vK)。
所述基础矩阵存储单元13用于存储行基础矩阵H0,h和列基础矩阵H0,v
所述半并行译码器10有J个变量节点单元VNU 11,各交量节点单元VNU 11包括行迭代计算模块111和LLR_Q存储模块RAM_h 112,所述LLR_Q存储模块RAM_h 112用于存储LLR_Q,其大小为M0×ρ。
所述LLR_Q存储模块RAM_h 112中LLR_Q初始值为0。
所述第k个变量节点单元VNU 11(k=0,1,...,J-1)将接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到 Y k = ( y kN 0 , y kN 0 + 1 , · · · , y N , y 0 , · · · , y kN 0 - 1 ) 作行迭代,用迭代结果将该变量节点单元VNU 11对应的LLR_Q存储模块RAM_h 112中的LLR_Q值更新为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))
(i=0,1,...,M0)(j=0,1,...,ρ)
所述半并行译码器有L个校验节点单元CNU 16,各校验节点单元CNU 16包括列迭代计算模块161和LLR_R存储模块RAM_v 162和硬译码结果的存储模块RAM 163,所述LLR_R存储模块RAM_v 162用于存储LLR_R,其大小为γ×N0
所述LLR_R存储模块RAM_v 162中LLR_R初始值为0。
为了解决本发明所提出的技术问题,其技术方案还可以是,提供一种改进的半并行译码方案,基于如权利要求1所述的半并行译码器10,用于CMMB通信系统中的LDPC码的译码,包括步骤:
A、初始化译码器10;
B、各变量节点单元VNU 11并行行迭代,得到各变量节点单元VNU 11的修正后的LLR值LLR_Q;
C、LLR值交织模块12利用步骤B中获得的各变量节点单元VNU 11的修正后的LLR值LLR_Q更新对应各校验节点单元CNU 16中的LLR_R值;
D、各校验节点单元CNU 16并行列迭代,得到各校验节点单元CNU 16的修正LLR值LLR_R,以及硬判决结果
E、LLR值反交织模块14利用步骤D中获得的各校验节点单元CNU 16的修正LLR值LLR_R更新对应变量节点单元VNU 11中的LLR_Q值;
F、译码判决模块15计算硬判决结果是否满足校验方程,若满足,则译码成功,输出译码结果,进入步骤H;若不满足,则进入步骤G;
G、计算当前迭代次数是否达到系统规定最大值,若不大于最大值,则返回执行步骤B,进行下一次迭代;若大于最大值,系统判断译码失败,输出当前硬判决结果,进入步骤H;
H、从硬判决结果中,提取译码结果V输出,本次译码结束。
步骤F所述的校验方程存储在基础矩阵存储单元RAM 13中。
步骤G所述的最大值为预设在译码判决模块15的一个整数值,为可允许的迭代的最大次数。
步骤B中所述各变量节点单元VNU 11中行迭代计算模块111并行行迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法,其中所述第k个变量节点单元VNU 11(k=0,1,...,J-1)的收入为所述译码器10接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到,为 Y k = ( y kN 0 , y kN 0 + 1 , · · · , y N , y 0 , · · · , y kN 0 - 1 ) , 读取基础矩阵存储单元RAM_H 13中的行基础矩阵Habbr,h(即H0,h),更新该变量节点单元VNU 11对应的LLR_Q存储模块RAM_h 112中的LLR_Q值为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))
(i=0,1,...,M0)(j=0,1,...,ρ)
步骤D中所述各校验节点单元CNU 16中列迭代计算模块161并行列迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法。
步骤A所述的译码器初始化包括子步骤:
A1、迭代计数初始化为inter_counter=0;
A2、并对各变量节点单元VNU 11中的LLR_Q存储模块RAM_h 112按行基础矩阵Habbr,h初始化相应的LLR_Q值。
步骤B中,所述各变量节点单元VNU 11需对LLR_Q值进行M0次逐行更新,最终得到各变量节点单元VNU 11的修正后的LLR值LLR_Q;
步骤D中,所述各校验节点单元CNU 16需对LLR_R值进行N0次逐列更新,最终得到各校验节点单元CNU 16的修正后的LLR值LLR_R。
步骤C中,所述LLR值交织模块12需将各变量节点单元VNU 11中迭换后得到的修正LLR_Q的值更新对应校验节点单元CNU 16中的LLR_R值。
步骤E中,所述LLR值反交织模块14需将各校验节点单元CNU 16中迭换后得到的修正LLR_R的值更新对应各变量节点单元VNU 11中的LLR_Q值。
下面结合图3详细说明本发明的具体实施流程:
1、译码器初始化:迭代计数初始化为inter_counter=0,并对VNU中的存储单元RAM_h按行基础矩阵初始化相应的LLR值;
对于第k个VHU(k=0,1,...,J-1),将Y=(y0,y1,...,yN-1,yN)左循环移位k·N0得到 Y k = ( y kN 0 , y kN 0 + 1 , · · · , y N , y 0 , · · · , y kN 0 - 1 ) , 读取基础矩阵存储单元RAM_H中的Habbr,h,更新该VHU对应的RAM_h中的LLR_Q值,即:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))
(i=0,1,...,M0)(j=0,1,...,ρ)
2、每个VNU单元中的行迭代计算模块,同时读取各自RAM_h中第i行的LLR_Q值,其中i初始值为0,J个行迭代计算模块根据某种LDPC译码算法各自进行计算得到更新的LLR_Q值,并将计算结果输出到RAM_h的写端口,将数据写回到RAM_h的原先位置,更新结束后将i的值加1;
上述步骤2循环M0拍,所有的RAM_h中的数据都被读写一次之后,LLR交织模块自基础矩阵存储单元读取Habbr,h,开始工作;
3、LLR交织模块读取第k个VNU单元(k初始值为0)中RAM_h中存储的数据LLR_Qk,按行顺序更新CNU单元中RAM_v中对应位置的LLR_R值,更新方法为:
对于每一个LLR_Qk(i,j),计算pos_h(i,j,k)=(LLR_Qk(i,j)+N0×k)modN,寻找第
Figure G2009101088080D00112
个CNU单元中的RAM_v的第[pos_h(i,j,k)modN0]列,LLR_Qk(i,j)的值赋予该列在本次迭代中尚未更新LLR_R值的下一位置。
第k个VNU单元所有的LLR_Qk值都被读取并将其对应位置的LLR_R值更新完毕后,将k的值加1;
上述步骤3循环J拍,所有的RAM_v中的数据都更新完毕,CNU单元开始工作;
4、每个CNU单元中的列迭代计算模块,同时读取各自RAM_v中第j行的LLR_R值,其中i初始值为0,L个列迭代计算模块根据某种LDPC译码算法各自进行计算得到更新的LLR_R值以及硬判决结果,将计算结果LLR_R输出到RAM_v的写端口,将数据写回到RAM_v的原先位置,将判决结果
Figure G2009101088080D00121
输出到RAM的写端口,将数据写到RAM第j位,更新结束后将j的值加1;
上述步骤4循环N0拍,所有的RAM_h中的数据都被读写一次之后,LLR反交织模块自基础矩阵存储单元读取Habbr,v,开始工作;
5、LLR反交织模块读取第k个CNU单元(k初始值为0)中RAM_v中存储的数据LLR_Rk,按列顺序更新VNU单元中RAM_v中对应位置的LLR_Q值,更新方法为:
对于每一个LLR_Rk(i,j),计算pos_v(i,j,k)=(LLR_Qk(i,j)+M0×k)modM,寻找第
Figure G2009101088080D00122
个CNU单元中的RAM_v的第[pos_v(i,j,k)modM0]行,将LLR_Rk(i,j)的值赋予该行在本次迭代中尚未更新LLR_Q值的下一位置;
第k个CNU单元所有的LLR_Rk值都被读取并将其对应位置的LLR_Q值更新完毕后,将k的值加1。
步骤4循环L拍,所有的RAM_h中的数据都更新完毕,一次迭代结束;
6、译码判决模块自基础矩阵存储单元读取Habbr,h,读取CNU中的判决结果存储模块RAM中的数据 U ~ = ( u 0 , u 1 , · · · , u N ) ;
7、 U ~ = ( u 0 , u 1 , · · · , u N ) 左循环移位k·N0位(k的初始值为0)得到
U ~ k = ( u 0 , k , u 1 , k , · · · , u N - 1 , k ) = ( u kN 0 , u kN 0 + 1 , · · · , u N , u 0 , · · · , u k N 0 - 1 ) . 对于Habbr,h的每一行i,计算 check _ rec ( i + M 0 × k ) = ( Σ j = 0 ρ U ( H abbr , h ( i , j ) ) ) mod 2 . 待M0行的结果计算完毕后将k的值加1;
将步骤7循环J拍,检查check_rec是否为全零向量;若check_rec为全零向量,则判断译码成功,进行步骤8,否则使inter_counter加1,若inter_counter小于迭代次数最大值max_inter,则返回步骤2,否则认为此次译码失败,进入步骤8;
8、从硬判决结果中 U ~ = ( u 0 , u 1 , · · · , u N ) , 提取译码结果V=(v0,v1,...,vK-1,vK)输出,本次译码结束。
本发明的变更设计及其它用途:
1、本发明提出的LDPC码译码解决方案,不仅仅适用于对CMMB系统中使用的LDPC码进行译码,还可作为所有依据专利《LDPC码校验矩阵构造方法及利用该方法的编码解码装置》(专利申请号:200610113914.4)构造生成的LDPC码的译码方案;
2、本发明提出的LDPC码译码解决方案,适用于不同的LDPC迭代译码算法;
3、本发明中提出的译码器中的行列分块方案,可根据实际硬件设计要求进行优化,即在将校验矩阵H原行列分块进行合并的基础上,进行译码;
本变更设计需要将检验矩阵H原行列分块进行系数为(m,n)的行列合并,其中
m=1,2,4,8,...,256
n=1,2,4,8,...,256
基本方法是将第5部分所述H矩阵的行分块的每m个行块进行一次合并,生成新的行块,即
H = H 0 , h m H 1 , h m · · · H J / m - 1 , h m , 其中每个新的行块 H i , h m = H i × m , h H i × m + 1 , h · · · · · · H ( i + 1 ) × m - 1 , h m 为H0,h m行循环移位i×m×N0位生成。
同时将第5部分所述的H矩阵的列分块的每n个列块进行一次合并,并生成新的列块 H = H 0 , v n H 1 , v n · · · H L / n - 1 , v n , 其中每个新的列块 H i , v n = H i × n , v H i × n , v · · · H ( i + 1 ) × n - 1 , v 为H0,v n列循环移位i×n×M0位生成。
生成该LDPC码的行基础矩阵H0,h m的缩略码表形式为H′abbr,h,其中H′abbr,h为M′0×ρ的矩阵,且M′0=m·M0。此外,生成该LDPC码的列基础矩阵H0,v n的缩略码表形式为H′abbr,v,其中H′abbr,v为γ×N′0的矩阵,且N′0=n·N′0
经行列分块重新合并后,本发明所述的LDPC译码器还可以修正为:
1、J′=M/M′0个变量节点单元(VNU),L′=N/N′0个校验节点单元(CNU),一个基础矩阵存储单元RAM,一个LLR值交织模块,一个LLR值反交织模块,一个译码判决模块;
2、每个VNU包括一个行迭代计算模块,一个大小为M′0×ρ的变量节点LLR值LLR_Q的存储模块RAM_h;
3、每个CNU包括一个列迭代计算模块,一个大小为γ×N′0的校验节点LLR值LLR_R的存储模块RAM_v,一个大小为1×N′0的硬译码结果
Figure G2009101088080D00141
存储模块RAM;
4、基础矩阵存储单元RAM_H中存储H矩阵的行基础矩阵的缩略形式H′abbr,h,以及生成同一H矩阵的列基础矩阵的缩略形式H′abbr,v
5、译码器的输入为接收机收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN);
6、译码器的输出为译码结果V=(v0,v1,...,vK-1,vK)
在译码流程中无需做结构性改动,仅需要将以下参量进行替换,并按原流程顺序操作。
M0→M′0
N0→N′0
Habbr,h→H′abbr,h
Habbr,k→H′abbr,k
本变更设计方案随m,n取值变化,进行译码时同时进行并行计算线路数为J′=M/M′0路横向迭代和L′=N/N′0路纵向迭代。每次迭代时进行的横向与纵向迭代串行计算的次数共为
M′0+N′0=m·M0+n·N0
特别的,当m=n=1时,本变更设计退化为本发明所述的修正的半并行结构,本发健儿所述的修正半并行结构可视为本变更设计的一个特例。
上述为本发明的优选实现过程,本领域的技术人员在本发明的基础上进行的通常变化和替换包含在本发明的保护范围之内。

Claims (15)

1.一种用于LDPC码的改进型半并行译码器(10),适用CMMB系统,所述LDPC码的校验矩阵H是一个M×N的矩阵,每行元素中有ρ个“1”,每列元素中有γ个“1”,该校验矩阵H可划分为J个大小为M0×N的行块或L个大小为M×N0的列块,其中M=M0×J,N=N0×L,而所述ρ和J为不大于M的自然数,γ和L是不大于N的自然数;校验矩阵H第1个大小为M0×N的行块为行基础矩阵,表示为H0,h或缩略码表形式Habbr,h;校验矩阵H第1个大小为M×N0的列块为列基础矩阵,表示为H0,v或缩略码表形式Habbr,v,其特征在于: 
所述译码器包括各变量节点单元VNU(11)、LLR值交织模块(12)、基础矩阵存储单元RAM(13)、LLR值反交织模块(14)、译码判决模块(15)和各校验节点单元CNU(16); 
所述译码器(10)接收LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN),由各变量节点单元VNU(11)对其进行并行行迭代,然后修正对应各变量节点单元VNU(11)内的LLR_Q;所述LLR值交织模块(12)获得各变量节点单元VNU(11)内修正后的LLR值LLR_Q,并更新各校验节点单元CNU(16)中LLR_R值;各校验节点单元CNU(16)并行列迭代,得到各校验节点单元CNU(16)的修正LLR值LLR_R以及译码器的输出译码结果V=(v0,v1,...,vK-1,vK)。 
2.如权利要求1所述的改进型半并行译码器(10),其特征在于: 
所述基础矩阵存储单元(13)用于存储行基础矩阵H0,h和列基础矩阵H0,v。 
3.如权利要求1所述的改进型半并行译码器(10),其特征在于: 
所述半并行译码器(10)有J个变量节点单元VNU(11),各变量节点单元VNU(11)包括行迭代计算模块(111)和LLR_Q存储模块RAM_h(112),所述LLR_Q存储模块RAM_h(112)用于存储LLR_Q,其大小为M0×ρ。 
4.如权利要求1所述的改进型半并行译码器(10),其特征在于: 
所述LLR_Q存储模块RAM_h(112)中LLR_Q初始值为0。 
5.如权利要求1或3所述的改进型半并行译码器(10),其特征在于:
第k个变量节点单元VNU(11)(k=0,1,…,J-1)将接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到
Figure RE-FSB00000895687100011
作行迭代,用迭代结果将该变量节点单元VNU(11)对应的LLR_Q存储模块RAM_h(112)中的LLR_Q值更新为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j))。
(i=0,1,…,M0)(j=0,1,…,ρ)
6.如权利要求1所述的改进型半并行译码器(10),其特征在于:
所述半并行译码器有L个校验节点单元CNU(16),各校验节点单元CNU(16)包括列迭代计算模块(161)和LLR_R存储模块RAM_v(162)和硬译码结果 
Figure RE-FSB00000895687100012
的存储模块
RAM(163),所述LLR_R存储模块RAM_v(162)用于存储LLR_R,其大小为γ×N0
7.如权利要求1所述的改进型半并行译码器(10),其特征在于:
所述LLR_R存储模块RAM_v(162)中LLR_R初始值为0。
8.用于LDPC码的改进型半并行译码方法,基于如权利要求1所述的改进型半并行译码器(10),适用CMMB系统,其特征在于,包括步骤:
A、初始化译码器(10);
B、各变量节点单元VNU(11)并行行迭代,得到各变量节点单元VNU(11)的修正后的LLR值LLR_Q;
C、LLR值交织模块(12)利用步骤B中获得的各变量节点单元VNU(11)的修正后的LLR值LLR_Q更新对应各校验节点单元CNU(16)中的LLR_R值;
D、各校验节点单元CNU(16)并行列迭代,得到各校验节点单元CNU(16)的修正LLR值LLR_R,以及硬判决结果 
Figure RE-FSB00000895687100013
E、LLR值反交织模块(14)利用步骤D中获得的各校验节点单元CNU(16)的修正LLR值LLR_R更新对应变量节点单元VNU(11)中的LLR_Q值; 
F、译码判决模块(15)计算硬判决结果 
Figure RE-FSB00000895687100021
是否满足校验方程,若满足,则译码成
功,输出译码结果,进入步骤H;若不满足,则进入步骤G;
G、计算当前迭代次数是否达到系统规定最大值,若不大于最大值,则返回执行步骤B,进行下一次迭代;若大于最大值,系统判断译码失败,输出当前硬判决结果,进入步骤H;
H、从硬判决结果 
Figure RE-FSB00000895687100022
中,提取译码结果V输出,本次译码结束。
9.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤F所述的校验方程存储在基础矩阵存储单元RAM(13)中。
10.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤G所述的最大值为预设在译码判决模块(15)的一个整数值,为可允许的迭代的最大次数。
11.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤B中所述各变量节点单元VNU(11)中行迭代计算模块(111)并行行迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法,其中第k个变量节点单元VNU(11)(k=0,1,…,J-1)的收入为所述译码器(10)接收到的LDPC码字的LLR值Y=(y0,y1,...,yN-1,yN)左循环移位N0×k得到,为 
Figure RE-FSB00000895687100023
读取基础矩阵存储单元RAM_H(13)中的行基础矩阵Habbr,h(即H0,h),更新该变量节点单元VNU(11)对应的LLR_Q存储模块RAM_h(112)中的LLR_Q值为:
LLR_Qk(i,j)=Yk(Habbr,h(i,j));
(i=0,1,…,M0)(j=0,1,…,ρ)
步骤D中所述各校验节点单元CNU(16)中列迭代计算模块(161)并行列迭代采用的译码算法为和积译码算法、最小和译码算法或修正最小和译码算法。 
12.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤A所述的译码器初始化包括子步骤:
A1、迭代计数初始化为inter_counter=0;
A2、并对各变量节点单元VNU(11)中的LLR_Q存储模块RAM_h(112)按行基础矩阵Habbr,h初始化相应的LLR_Q值。
13.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤B中,所述各变量节点单元VNU(11)需对LLR_Q值进行M0次逐行更新,最终得到各变量节点单元VNU(11)的修正后的LLR值LLR_Q;
步骤D中,所述各校验节点单元CNU(16)需对LLR_R值进行N0次逐列更新,最终得到各校验节点单元CNU(16)的修正后的LLR值LLR_R。
14.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤C中,所述LLR值交织模块(12)需将各变量节点单元VNU(11)中迭换后得到的修正LLR_Q的值更新对应校验节点单元CNU(16)中的LLR_R值。
15.如权利要求8所述的改进型半并行译码方法,其特征在于:
步骤E中,所述LLR值反交织模块(14)需将各校验节点单元CNU(16)中迭换后得到的修正LLR_R的值更新对应各变量节点单元VNU(11)中的LLR_Q值。 
CN 200910108808 2009-07-14 2009-07-14 用于ldpc码的改进型半并行译码器和译码方法 Active CN101958718B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910108808 CN101958718B (zh) 2009-07-14 2009-07-14 用于ldpc码的改进型半并行译码器和译码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910108808 CN101958718B (zh) 2009-07-14 2009-07-14 用于ldpc码的改进型半并行译码器和译码方法

Publications (2)

Publication Number Publication Date
CN101958718A CN101958718A (zh) 2011-01-26
CN101958718B true CN101958718B (zh) 2013-03-27

Family

ID=43485857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910108808 Active CN101958718B (zh) 2009-07-14 2009-07-14 用于ldpc码的改进型半并行译码器和译码方法

Country Status (1)

Country Link
CN (1) CN101958718B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103427847B (zh) * 2012-08-03 2017-06-09 上海数字电视国家工程研究中心有限公司 一种ldpc码的码字构造方法
US10680647B2 (en) * 2017-09-25 2020-06-09 SK Hynix Inc. Min-sum decoding for LDPC codes
CN110661593B (zh) * 2018-06-29 2022-04-22 中兴通讯股份有限公司 一种译码器、方法和计算机存储介质
CN116131864A (zh) * 2021-11-15 2023-05-16 深圳市中兴微电子技术有限公司 并行译码方法及装置、存储介质、电子装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1126397A (zh) * 1994-03-25 1996-07-10 三菱电机株式会社 纠错编码器、纠错解码器和具有纠错码的数据传输系统
US6202178B1 (en) * 1995-08-21 2001-03-13 Alcatel N.V. Complementary methods for interleaving and deinterleaving data frames and corresponding forward error correcting devices in a transmitter and receiver

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1126397A (zh) * 1994-03-25 1996-07-10 三菱电机株式会社 纠错编码器、纠错解码器和具有纠错码的数据传输系统
US6202178B1 (en) * 1995-08-21 2001-03-13 Alcatel N.V. Complementary methods for interleaving and deinterleaving data frames and corresponding forward error correcting devices in a transmitter and receiver

Also Published As

Publication number Publication date
CN101958718A (zh) 2011-01-26

Similar Documents

Publication Publication Date Title
CN102412847B (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
CN104868925B (zh) 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
CN101232288B (zh) 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器
CN101079639B (zh) 基于节点存储器的低密度奇偶校验解码装置和方法
CN101471674A (zh) 低密度奇偶校验码译码方法及装置
CN107370490B (zh) 结构化ldpc的编码、译码方法及装置
CN106330203B (zh) 一种ldpc的解码方法
US20070168832A1 (en) Memory efficient LDPC decoding methods and apparatus
CN107852176A (zh) Ldpc码编码器和译码器
CN102412843B (zh) 自适应的归一化最小和ldpc译码方法及译码器
CN101689865A (zh) 置乱式ldpc解码
CN103188035B (zh) 迭代解映射解码方法和系统
JPWO2010073922A1 (ja) 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム
CN101154948A (zh) 利用共享硬件及顺序和-积体系结构进行低密度奇偶校验解码的方法和设备
CN101958718B (zh) 用于ldpc码的改进型半并行译码器和译码方法
CN106374940A (zh) 一种多进制ldpc译码方法及译码器
CN100544212C (zh) 高速的减少存储需求的低密度校验码解码器
CN101420279B (zh) 用于移动多媒体广播中的高速ldpc译码器及译码方法
CN102340317A (zh) 结构化ldpc码的高吞吐率译码器结构及方法
CN101917249A (zh) Qc-ldpc码译码器及其实现方法
CN105164646A (zh) 具有早期解码终止检测的解码器
CN101478312A (zh) 一种ldpc译码器及其实现译码的方法
EP2989720A1 (en) Method and apparatus of ldpc encoder in 10gbase-t system
CN111384970B (zh) 一种译码方法、装置及通信设备
CN112636767B (zh) 一种具有单置换网络的分层半并行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