首页> 中国专利> 用于LDPC码的改进型半并行译码器和译码方法

用于LDPC码的改进型半并行译码器和译码方法

摘要

用于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码的成功译码。

著录项

  • 公开/公告号CN101958718A

    专利类型发明专利

  • 公开/公告日2011-01-26

    原文格式PDF

  • 申请/专利权人 国民技术股份有限公司;

    申请/专利号CN200910108808.0

  • 申请日2009-07-14

  • 分类号H03M13/11;

  • 代理机构深圳市睿智专利事务所;

  • 代理人陈鸿荫

  • 地址 518000 广东省深圳市高新区高新中三道2号软件园三栋三层

  • 入库时间 2023-12-18 01:39:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-03-27

    授权

    授权

  • 2011-03-23

    实质审查的生效 IPC(主分类):H03M13/11 申请日:20090714

    实质审查的生效

  • 2011-01-26

    公开

    公开

说明书

技术领域 本发明涉及用于检错或纠错的编码、译码或代码转换,特别是涉及用于中国移动多媒体广播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=H0,hH1,h...HJ-1,h

2、其中M0×N的行基础矩阵H0,h的可用其缩略码表形式Habbr,h表示,CMMB系统中1/2码率的LDPC码使用的Habbr,h为:

Habbr,h=06121825300719263156640813203282701614213085895911527339128918819163484859093262835415677602101773357545913821122527887288962372510476586378875346534744754191759198323234990129107916847297774777489464722480748339872592124416986508780902391595866388986906492105210777878655914191715245935850789069173

其中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为:

Habbr,v=0369121501251471013163915229625811141761222344978023457013023771192651795026085628189589736178322411311304254416681563580238111701461258771411224738348852105537478531988463102130813375961226025520124563346317015283611472483157501673

其中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得到作行迭代,用迭代结果将该变量节点单元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和硬译码结果的存储模块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,以及硬判决结果

E、LLR值反交织模块利用步骤D中获得的各校验节点单元CNU的修正LLR值LLR_R更新对应变量节点单元VNU中的LLR_Q值;

F、译码判决模块计算硬判决结果是否满足校验方程,若满足,则译码成功,输出译码结果,进入步骤H;若不满足,则进入步骤G;

G、计算当前迭代次数是否达到系统规定最大值,若不大于最大值,则返回执行步骤B,进行下一次迭代;若大于最大值,系统判断译码失败,输出当前硬判决结果,进入步骤H;

H、从硬判决结果中,提取译码结果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得到,为读取基础矩阵存储单元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得到作行迭代,用迭代结果将该变量节点单元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得到,为读取基础矩阵存储单元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得到读取基础矩阵存储单元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,寻找第个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的原先位置,将判决结果输出到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,寻找第个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中的数据

7、左循环移位k·N0位(k的初始值为0)得到对于Habbr,h的每一行i,计算待M0行的结果计算完毕后将k的值加1;

将步骤7循环J拍,检查check_rec是否为全零向量;若check_rec为全零向量,则判断译码成功,进行步骤8,否则使inter_counter加1,若inter_counter小于迭代次数最大值max_inter,则返回步骤2,否则认为此次译码失败,进入步骤8;

8、从硬判决结果中提取译码结果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个行块进行一次合并,生成新的行块,即

其中每个新的行块为行循环移位i×m×N0位生成。

同时将第5部分所述的H矩阵的列分块的每n个列块进行一次合并,并生成新的列块其中每个新的列块为列循环移位i×n×M0位生成。

生成该LDPC码的行基础矩阵的缩略码表形式为H′abbr,h,其中H′abbr,h为M′0×ρ的矩阵,且M′0=m·M0。此外,生成该LDPC码的列基础矩阵的缩略码表形式为H′abbr,v,其中H′abbr,v为γ×N′0的矩阵,且N′0=n·N0

经行列分块重新合并后,本发明所述的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的硬译码结果存储模块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时,本变更设计退化为本发明所述的修正的半并行结构,本发健儿所述的修正半并行结构可视为本变更设计的一个特例。

上述为本发明的优选实现过程,本领域的技术人员在本发明的基础上进行的通常变化和替换包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号