实现水平运算和垂直运算同时运行的ldpc码译码方法

文档序号:7525829阅读:204来源:国知局

专利名称::实现水平运算和垂直运算同时运行的ldpc码译码方法
技术领域
:本发明涉及数字信息传输
技术领域
,具体为一种实现水平运算和垂直运算同时运行的LDPC码译码方法。
背景技术
:LDPC(LowDensityParity-Check,低密度奇偶校验)码是一类基于稀疏校验矩阵构造的线性分组码,由Gallager于1962年首先提出,由MacKay于1996年再次提出。LDPC码具有巨大的应用潜力,将在深空通信、光纤通信、卫星数字视频、数字水印、磁/光/全息存储、移动和固定无线通信、电缆调制/解调器和数字用户线中得到广泛应用。尤其是在数字信息传输
技术领域
,LDPC码已成为第四代移动通信编码技术中的首选。LDPC码一般用校验矩阵H进行描述,校验矩阵H中每一行中数字1的个数称为该行的行重,每一列中数字1的个数称为该列的列重。校验矩阵H的行重和列重都唯一的LDPC码称为规则LDPC码,否则称为非规则LDPC码。LDPC码的译码算法较多,目前釆用较多的有SPA(sum-productalgorithm,和积)算法,MSA(Min-SumAlgorithm,最小和)算法和改进型最小和算法。由于最小和算法的硬件复杂度较低,且对于信道噪声并不敏感,不需要在译码算法中对信道噪声进行估计,因此被广泛应用在LDPC码的译码运算中。以下是最小和算法的基本实现步骤假设信道平均噪声为零,方差为ct2,yn为来自信道的软输入信息,Dn是译码结果。译码操作包括以下四个步骤。步骤1:初始化P=,^=《说明步骤2:水平运算计算校验节点向比特节点传递的信息KEIsgn(aj)min(血(OJ)垂直运算二计算比特节点向校验节点传递的信息步骤3:假设译码在每次迭代计算后对译码结果进行判决,如果译码结果正确则退出迭代,否则继续迭代计算直到迭代次数达到设定值。2"=尸"+,Ji/^'"if2>1,thenZ)=1;elseD"二O步骤4:译码结果校验,计算S:D//、若5=0则译码结東,否则返回步骤2。QC-LDPC(Quasi-CyclicLowDensityParity-Check,类循环低密度奇偶校验)码是一类特殊的LDPC码,其具体特征在于QC-LDPC码的校验矩阵H具有准循环特性。具体来说,QC-LDPC码的校验矩阵H是由一系列相同大小的方阵构成的,这些方阵包括全零矩阵和循环移位阵。循环移位阵是由单位矩阵进行循环移位得到的,一个位移量为p的循环移位阵是将单位矩阵的每一行进行向右循环p位得到的。下式是一个位移量为1的4x4循环移位阵。、lo(T0010爿=00011000因此QC-LDPC码的校验矩阵可以定义为<formula>formulaseeoriginaldocumentpage5</formula>其中A是大小为M^的方阵,A^l代表全零矩阵,而A二p代表位移量为P的循环移位阵,p为正整数。LDPC码译码器一般采用并行结构,并行结构通过为每一行配置一个HPU(HorizontalArithmeticUnit,水平运算单元),为每一列配置一个VPU(VerticalArithmeticUnit,垂直运算单元),所有运算单元进行并行处理。这种译码器结构每两个时钟周期就可以进行一次迭代运算,但需要消耗大量的硬件资源。而对于QC-LDPC码,存在一种半并行译码算法。QC-LDPC译码器的结构示意图如图l所示。它包括1)控制单元(图中未示出),完成各模块的控制信号生成工作;2)RAMP(随机存储器P):存储信道输入软信息;3)VPU:水平运算单元,实现水平运算;4)HPU:垂直运算单元,实现垂直运算;5)RAMQ(随机存储器Q):存储垂直运算单元运算结果;6)RAMR(随机存储器R):存储水平运算单元运算结果。上述RAMP、RRAMQ和QRAMR中的P、R和Q为代号,用于区分不同的RAM。其工作流程的具体步骤如下1)输入过程输入待译码的软信息至RAMP,然后给出译码开始指示。2)译码迭代过程首先是VPU过程,然后是HPU过程,迭代进行。3)VPU过程利用RAMR输出的校验位信息更新比特的软信息,同时给出硬判决指示。第一次VPU过程只是把RAMP信息写入RAMQ,RAMR输出为0。4)HPU过程利用RAMQ输出的比特软信息计算校验位信息,同时根据硬判决指示判断译码是否成功。5)输出过程:译码成功后,由VPU计算硬判决结果,并行输出。由此可以看出,半并行译码算法基于QC-LDPC码的上述准循环特征,重复利用HPU和VPU,保证了一定的译码速率。然而,半并行译码算法虽然使用了最小和算法并利用半并行算法简化了译码器译码的运算过程,但是在译码器实现过程中,由于水平运算和垂直运算的数据存在相关性,水平运算单元和垂直运算单元只能工作在不同的时钟周期内,这导致了它们在一半的时钟周期内是处于停止状态,造成了资源利用效率低下。
发明内容本发明的目的是提供一种能够实现水平运算单元与垂直运算单元至少在部分时钟周期内同时运算的LDPC码的译码方法。为达到上述目的,本发明提供了一种实现水平运算和垂直运算同时运行的LDPC码译码方法,包括以下步骤51,将m行n列校验矩阵以列为单位拆分成k个新矩阵,所述新矩阵为m行n/k列,其中m、n、k、n/k均为正整数;52,为第l个新矩阵分配垂直运算单元,进行垂直运算,将运算结果存储于垂直运算第一存储器中;对第2个新矩阵进行垂直运算,将运算结果存储于垂直运算第二存储器中,对第2个新矩阵进行垂直运算的同时,对第l个新矩阵分配水平运算单元,将所述垂直运算第一存储器中的运算结果作为所述水平运算单元的输入数进行水平运算,并将运算结果与水平运算中间存储器中的初始最大值进行比较,将得到的最小值、次小值以及最小值位置指针作为中间结果存入水平运算中间存储器;对第3个新矩阵进行垂直运算,将运算结果存储于垂直运算第三存储器中,对第3个新矩阵进行垂直运算的同时,对第2个新矩阵进行水平运算,将所述垂直运算第二存储器中的运算结果作为所述水平运算单元的输入数进行水平运算,并将运算结果与来自水平运算中间存储器的中间结果进行比较,将得到的新的最小值、次小值以及最小值位置指针再存入水平运算中间存储器;以此方式继续完成所述k个新矩阵的垂直运算和水平运算,得到最终的最小值、次小值以及最小值位置指针,并进行解压缩运算后将结果存入水平运算存储器至此完成第一次迭代计算。其中,在得到所述的最终的最小值、次小值以及最小值位置指针之后,还包括将所述的最终的最小值、次小值以及最小值位置指针进行解压缩的步骤。、所述校验矩阵优选为低密度奇偶校验码校验矩阵。所述水平运算包括如下步骤S21,对p个输入数进行两两分组比较,得到每组数的最小值和次小值,即p/2组最小值和次小值,其中p为偶数;522,对所得到的p/2组最小值和次小值进行两两分组,得到p/4个新组,然后将每个新组中的数进行比较,得到每个新组中输入数的最小值和次小值,即p/4组最小值和次小值;523,重复步骤S22,直至获得p个输入数的最小值min和次小值sec,并获得p个输入数的最小值位置指针t;S24,进行选通输出运算,对于第q个输入数,qElp,判断q是否等于所述最小值位置指针t,若相等,则第q个输出值为次小值sec,否则输出最小值min。在步骤S2之后还可以包括步骤S3:进行译码结果校验,若译码成功或者达到预定的最大迭代次数则译码结東,否则重复步骤S1至步骤S2进行迭代计算,直至译码成功或者达到预定的最大迭代次数。上述技术方案具有如下优点1、硬件资源利用率高。本设计较好地实现了HPU与VPU同时进行运算,因此可以大大提高硬件资源利用效率。2、通用。本设计可以为各种不同的LDPC码所釆用,并且对于原本较难实现的码长较长、行重较大的LDPC码,可以通过釆用较大的矩阵分块数来达到降低硬件资源消耗的目的。3、适合高速时钟的实现。通过调整矩阵分块数可以有效地控制HPU中比较器所需比较的输入数的个数,达到控制运算逻辑延时的目的,从而达到较高的工作频率。图l是现有技术中QC-LDPC译码器的结构示意图;图2是依照本发明实施例的译码方法流程图;图3是依照本发明实施例的译码方法所釆用的电路结构示意图;图4是传统译码方法与本发明实施例的译码方法的时序比较图。具体实施例方式下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明实施例的实现水平运算和垂直运算同时运行的LDPC码译码方法流程图,如图2所示,包括步骤201,将m行n列LDPC码校验矩阵以列为单位拆分成1^2个新矩阵,新矩阵为m行n/k列,其中m、n、n/k均为整数,例如,拆分为两个新矩阵,新矩阵为m行n/2列;步骤202,为第l个新矩阵分配垂直运算单元l,进行垂直运算,将运算结果存储于RAMQ1中;对第2个新矩阵进行垂直运算,将运算结果存储于RAMQ2中,对第2个新矩阵进行垂直运算的同时,对第1个新矩阵分配水平运算单元1,将RAMQ1中的运算结果作为所述水平运算单元1的输入数进行水平运算,并将运算结果与RAMRT中的初始最大值进行比较,得到最小值、次小值以及最小值位置指针,并将其作为最新的中间结果存储于RAMRT中;对第2个新矩阵进行水平运算,将RAMQ2中的垂直运算结果作为水平运算单元2的输入数进行水平运算,并将运算结果与来自RAMRT的中间结果进行比较运算,得到最终的一组最小值、次小值及最小值位置指针,并对其进行解压缩运算,然后将所得数据存入RAMR中。步骤203:进行译码结果校验,若译码成功或者达到预定的最大迭代次数则译码结束,否则重复所述步骤201至所述步骤202进行迭代译码,直至译码成功或者达到预定的最大迭代次数。进行水平运算得到的运算结果为所述输入数的最小值、次小值以及最小值位置指针,水平运算中进行比较运算的具体步骤如下步骤21,对p个输入数进行两两分组比较,得到每组数的最小值和次小值,即p/2组最小值和次小值,其中p为偶数;步骤22,对所得到的p/2组最小值和次小值进行两两分组,得到p/4个新组,然后将每个新组中的数进行比较,得到每个新组中输入数的最小值和次小值,即p/4组最小值和次小值;步骤23,重复步骤22,直至获得p个输入数的最小值min和次小值sec,并获得p个输入数的最小值位置指针t;步骤24,进行选通输出运算,对于第q个输入数,qElp,判断q是否等于最小值位置指针t,若相等,则第q个输出值为次小值sec,否则输出最小值min。在此需要说明的是,在上述步骤201中,可以将LDPC码校验矩阵拆分成两个以上的新矩阵,分块数越多,VPU模块与HPU模块同时运行的比重越大,资源利用率也就越高。因此,这种基于分块矩阵的译码方法特别适用于码长较长、行重较大的LDPC码的译码中。本发明的译码方法所釆用的电路结构示意图如图3所示,RAMP用于存储信道输入软信息,VPU为垂直运算单元,用于实现垂直运算,HPU为水平运算单元,用于实现水平运算单元,RAMQ1RAMQk用于存储第1次至第k次的垂直运算结果,mux为二输入多输出选通器,用于进行选通输出运算,第1次至第k次的垂直运算结果,水平运算单元运算得到的中间的运算结果,即中间的最小值最小值、次小值和最小值位置指针存储于RAMRT,得到的最终的运算结果,即最终的最小值、次小值和最小值位置指针存储RAMR中。图3中的箭头表示信息的流向。传统译码方法与本发明实施例的译码方法的时序比较图如图4所示,其中上图为传统译码方法,下图为本发明实施例的译码方法。Ml、M2,M3分别表示三个长度的时钟时序,Ml、M2,M3共同构成第i-l次迭代译码。Ml时VPU从RAMP和RAMR读入第一部分数据进行运算,得到的运算结果存入RAMQ1。M2时VPU继续从RAMP和RAMR读入第二部分数据进行运算,结果存入RAMQ2;HPU从RAMQ1读入M1时VPU得到的运算结果进行HPU运算,并将运算结果与RAMRT中的初始最大值进行比较,得到HPU中间结果存入RAMRT。M3时HPU读入RAMQ2中数据,进行HPU运算,并将这部份结果与从RAMRT读入的中间结果进行比较,得到最终的HPU运算结果,并进行解压缩运算,存入RAMR。由图4可以看出,本发明实施例的方法将VPU模块的并行度减少为接近于原来的1/2,使用两个时钟时序来完成完整的VPU运算。如图3、4所示,在第一个时钟时序中,VPU模块完成第一次垂直运算,在第二个时钟时序中,由于VPU模块已经完成第一个时钟时序的运算,因此第二个时钟时序的VPU运算输出的数据可以提供给HPU模块进行水平运算,得到第二个时钟时序的VPU运算输出的数据的最小值、次小值和最小值位置指针,并存入RAMRT存储器。在第三个时钟时序中,重复上述步骤,输出最终的HPU运算结果存入RAMR。下面给出具体的实验数据,本实验使用Verilog语言进行编程,使用ModelSimSE6.2e进行设计仿真,釆用quartus7.2进行硬件综合与布局布线,并在ALTERASTRATICXII-EP2S130FPGA开发板上进行硬件实现。最终实现的译码器指标为0.8码率国标LDPC译码器指标,如表l所示表l<table>tableseeoriginaldocumentpage12</column></row><table>其中,ALUTs是基于ALTERAFPGA的组合逻辑硬件资源占用,括号内为FPGA资源的占用率,分块数为2,Regs表示寄存器,MEM表示存储器。从表中可以看出釆用传统方法的LDPC译码器占用了FPGA中较多的逻辑资源,而FPGA中的存储资源则使用较少。釆用本发明方法的LDPC译码器在以增加少量的存储资源为代价的情况下,较大幅度地减少了FPGA中占用较为紧张的逻辑资源,从表1中可以看出逻辑资源有了较大的减少(组合逻辑消耗减少了37.4%,寄存器资源减少了45.9%),因此本发明的方法能较大程度地节约硬件资源占用,并且较为合理地分配FPGA的各种资源占用,有利于译码器的硬件实现。同时随着运算单元计算深度的减小,关键路径延时减小,更易于实现较高的工作时钟频率,进而提高译码器的吞吐率。由以上实施例可以看出,本发明的实施例通过将LDPC码校验矩阵以列为单元分拆成多个矩阵,分配垂直运算单元分时完成各矩阵的垂直运算,同时利用水平运算单元进行各矩阵的水平运算,实现水平运算单元与垂直运算单元在部分时钟周期内同时运算,从而提高了运算单元的资源利用效率,降低了译码器的硬件资源消耗。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1、一种实现水平运算和垂直运算同时运行的LDPC码译码方法,其特征在于,包括以下步骤S1,将m行n列校验矩阵以列为单位拆分成k个新矩阵,所述新矩阵为m行n/k列,其中m、n、k、n/k均为正整数;S2,为第1个新矩阵分配垂直运算单元,进行垂直运算,将运算结果存储于垂直运算第一存储器中;对第2个新矩阵进行垂直运算,将运算结果存储于垂直运算第二存储器中,对第2个新矩阵进行垂直运算的同时,对第1个新矩阵分配水平运算单元,将所述垂直运算第一存储器中的运算结果作为所述水平运算单元的输入数进行水平运算,并将运算结果与水平运算中间存储器中的初始最大值进行比较,将得到的最小值、次小值以及最小值位置指针作为中间结果存入水平运算中间存储器;对第3个新矩阵进行垂直运算,将运算结果存储于垂直运算第三存储器中,对第3个新矩阵进行垂直运算的同时,对第2个新矩阵进行水平运算,将所述垂直运算第二存储器中的运算结果作为所述水平运算单元的输入数进行水平运算,并将运算结果与来自水平运算中间存储器的中间结果进行比较,将得到的新的最小值、次小值以及最小值位置指针再存入水平运算中间存储器;以此方式继续至完成所述k个新矩阵的垂直运算和水平运算,得到最终的最小值、次小值以及最小值位置指针,并进行解压缩运算后将结果存入水平运算存储器至此完成第一次迭代计算。2、如权利要求1所述的实现水平运算和垂直运算同时运行的LDPC码译码方法,其特征在于,在得到所述的最终的最小值、次小值以及最小值位置指针之后,还包括将所述的最终的最小值、次小值以及最小值位置指针进行解压縮的步骤。3、如权利要求1所述的实现水平运算和垂直运算同时运行的LDPC码译码方法,其特征在于,所述校验矩阵为低密度奇偶校验码校验矩阵。4、如权利要求1至3之任一项所述的实现水平运算和垂直运算同时运行的LDPC码译码方法,其特征在于,所述水平运算包括如下步骤S21,对p个输入数进行两两分组比较,得到每组数的最小值和次小值,即p/2组最小值和次小值,其中p为偶数;S22,对所得到的p/2组最小值和次小值进行两两分组,得到p/4个新组,然后将每个新组中的数进行比较,得到每个新组中输入数的最小值和次小值,即p/4组最小值和次小值;S23,重复步骤S22,直至获得p个输入数的最小值min和次小值sec,并获得p个输入数的最小值位置指针t;S24,进行选通输出运算,对于第q个输入数,qElp,判断q是否等于所述最小值位置指针t,若相等,则第q个输出值为次小值sec,否则输出最小值min。5、如权利要求1至3之任一项所述的实现水平运算和垂直运算同时运行的LDPC码译码方法,其特征在于,在所述步骤S2之后还包括步骤S3:进行译码结果校验,若译码成功或者达到预定的最大迭代次数则译码结東,否则重复所述步骤Sl至所述步骤S2进行迭代计算,直至译码成功或者达到预定的最大迭代次数。全文摘要本发明公开了一种实现水平运算和垂直运算同时运行的LDPC码译码方法。包括将LDPC码的校验矩阵以列为单位拆分成k个新矩阵;为第1个新矩阵分配垂直运算单元,进行垂直运算;对第2个新矩阵进行垂直运算的同时,将所述垂直运算第一存储器中的运算结果作为所述水平运算单元的输入数进行水平运算,并将运算结果与水平运算中间存储器中的中间结果进行比较运算,后将运算结果返存入中间存储器(首次调用中间存储器时,中间存储器内为初始化最大值),此方式继续至完成所述k个新矩阵的垂直运算和水平运算,得到最终的水平运算结果,至此完成第一次迭代计算。本发明的技术方案提高了运算单元的资源利用效率,降低了译码器的硬件资源消耗。文档编号H03M13/11GK101594152SQ200910088160公开日2009年12月2日申请日期2009年7月3日优先权日2009年7月3日发明者彧张,洪钦智,军王,王昭诚,剑符,雷伟龙申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1