CN112242851B - 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 - Google Patents
一种ldpc码的分层译码中迭代数据处理方法及译码器系统 Download PDFInfo
- Publication number
- CN112242851B CN112242851B CN202011319213.2A CN202011319213A CN112242851B CN 112242851 B CN112242851 B CN 112242851B CN 202011319213 A CN202011319213 A CN 202011319213A CN 112242851 B CN112242851 B CN 112242851B
- Authority
- CN
- China
- Prior art keywords
- message
- unit
- module
- node message
- value
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 25
- 238000010606 normalization Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 15
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012804 iterative process Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 3
- 238000013139 quantization Methods 0.000 claims description 3
- 238000013517 stratification Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开一种LDPC码的分层译码中迭代数据处理方法及译码器系统,该方法主要步骤:首先对LDPC码的校验节点消息、后验概率消息进行初始化,再进行消息迭代处理,最后停止迭代,该译码器系统包括控制模块、校验变量节点消息联合处理模块、校验节点消息存储模块、后验概率消息寄存模块、数据置换网络模块、信道消息输入缓存模块与译码码字输出缓存模块。
Description
技术领域
本发明涉及无线通信技术领域,尤其是一种LDPC码的分层译码中迭代数据处理方法及译码器系统。
背景技术
随着高速数据传输业务的快速发展以及5G标准商用化,人们对信息传输的质量和速率要求越来越高,高速LDPC(Low-density Parity-check,低密度奇偶校验)码译码器在通信系统中的应用需求更加强烈。在固有的信道环境下,如何既满足越来越高的数据传输速率要求,又保证信息传输的可靠性,是信道编码技术研究的主要任务和目标。
目前,LDPC码译码时主要是有串行译码、并行译码和部分并行译码算法,基于PLDA(Parallel layered Decoding Algorithm,分层译码)算法,PLDA算法由于其在资源和速率方面的兼顾成为实际系统中的通用算法,然而在进行译码时,实现消息迭代计算和置换网络设计的复杂度较大,从而影响译码器的实现难度。
发明内容
为解决现有技术中的技术问题,本发明提供了一种LDPC码的分层译码中迭代数据处理方法及译码器系统。
本发明的技术方案为:一种LDPC码的分层译码中迭代数据处理方法,包括以下步骤:
S1对LDPC码的校验节点消息Rmn、后验概率消息Qn进行初始化,初始化公式为其中/>为信道消息yn的量化值,n=1,2,3,……,x,x为LDPC码的码长;
S2消息迭代处理
1、第1分层至第7分层顺序执行节点消息更新,记符号t(t=1,2,,,7)表示为层数,m(m=1,2,,,80)表示分层内的行数,迭代次数l=1,2,,,9;
a、对于第t分层内的80行,同时执行变量节点消息更新运算,公式为:
其中Qmn表示为变量节点消息;
b、对于第t层内的80行,同时执行校验节点消息更新运算,公式为:
其中α表示为归一化因子;
c、对于第t层内的80行,同时执行后验概率消息更新运算,公式为:
2、译码判决
每一次迭代处理完成之后,对译码序列进行判决,如果Qn (l)≥0,则判决/>否则/>
S3停止迭代
若达到设定的最大迭代次数,则停止迭代,且将作为译码器输出值输出,否则返回到S2继续进行迭代译码。
优选地,所述LDPC码为QC-LDPC码,其码长X为4480、码率7/8、行重为24、列重为3、循环置换矩阵为7×7的子矩阵。
优选地,一种译码器系统,包括:
控制模块:译码器中最核心的控制模块,主要用于控制、协调译码器其他模块按照预定的执行顺序依次完成迭代译码工作;
校验变量节点消息联合处理模块:主要用于完成一个分层内所有行中非零元素对应的节点消息更新运算,包括变量节点消息Qmn、校验节点消息Rmn、后验概率消息Qn,节点消息联合处理单元独立完成一行中非零元素对应的节点消息更新运算,一个分层包含校验矩阵80行,需要80个节点消息联合处理单元同时完成80行节点消息更新;
校验节点消息存储模块:主要用于存储迭代过程中更新的Rmn消息,由读写控制模块和80个片内BRAM级联组成;
后验概率消息寄存模块:用于寄存迭代过程中更新的Qn,由寄存器构成寄存器组来存储,寄存器由时钟沿触发,因此Qn每个时钟周期更新一次;
数据置换网络模块:主要功能是将一个分层中所有非零元素所在列对应的Qn从后验概率消息寄存模块准确的选取出来;完成运算后,将更新的Qn重新传递给后验概率消息寄存模块进行更新;
信道消息输入缓存模块:主要用于接收输入的消息,并完成一帧/>消息的缓存;在初始化时,传递给后验概率消息寄存模块进行Qn初始化;
译码码字输出缓存模块:作用是缓存后验概率消息寄存模块传递来的一帧判决码字,并将其输出至芯片外。
优选地,所述校验变量节点消息联合处理模块由80个节点消息联合处理单元构成,任一所述节点消息联合处理单元由一个CNU单元和一个VNU单元构成,所述CNU单元主要用于完成校验节点消息更新运算,所述VNU单元由VNU_1单元和VNU_2单元构成,所述VNU_1单元主要用于完成变量节点消息更新运算,所述VNU_2单元主要用于完成后验概率消息更新运算。
优选地,所述CNU单元主要工作过程为:
1)取VNU_1单元更新的LDPC码的行重数值个数的变量节点消息并从所有消息的绝对值中寻找出其最小值min1、次最小值min2以及最小值位置index,然后对所求的min1、min2乘以归一化因子α;根据index值进行各校验节点消息数值分配;
2)求这LDPC码的行重数值个数的消息的符号乘积,并将所得乘积再与自身符号相乘得到相应的校验节点消息符号,用sign表示;
3)根据index将min1、min2数值与各符号对应进行合并,即可求得一组更新的校验节点消息
优选地,还包括了次最小值寻找单元,其工作流程如下:
1)将输入的LDPC码的行重数值个数的Q数值分成两组,平均分配;
2)两组分别选取本组内的最小值,再将两个分组内选取的两个最小值进行比较,较小者为min1,较大者为min2,最小值位置index由较小者决定;
3)选取的min1为整个LDPC码的行重数值个数的Q数值中的最小数值;选取的min2若与min1没在同一分组内,则为整个LDPC码的行重数值个数的Q数值中的次最小数值。
优选地,所述次最小值寻找单元由2输入1输出比较单元、2输入1输出排列次序分配单元与2输入2输出排列次序分配单元构成,级联三个基本单元组成树状结构,所述2输入1输出比较单元由1个2输入比较器和1个2输入的选择器组成,所述2输入1输出排列次序分配单元由1个2输入比较器和2个2输入选择器构成,所述2输入2输出排列次序分配单元由1个2输入比较器和3个2输入选择器组成。
优选地,还包括一种归一化因子α优化方法,其具体步骤为:
1)将Min1右移1位,Min2右移2位;
2)再将经过移位Min1数值与未经过移位Min1的数值末尾位相加,得到Min1归一化因子α,再将经过移位Min2数值与未经过移位Min2的数值末尾位相加,得到Min2归一化因子α。
优选地所述后验概率消息寄存模块由640个APP寄存块组成,第c(c=1,2,,,640)个APPc寄存块按照列先后次序存储第c个CB所在列对应的7个Qn消息,一个Qn消息由7bit组成,每个APP寄存块均由49个寄存器级联而成;初始化时,640个APP寄存块按照码字比特顺序存储信道量化消息第l次迭代时,更新t分层/>消息时,需要将第l次迭代t-2分层更新的所有/>消息输出,迭代运算完成后,将更新的/>消息存储在640个APP寄存块中。
优选地,所述数据置换网络模块由选通单元MUX1、选通单元MUX2、数据移位单元以及节点消息互连网络单元构成,所述选通单元MUX1单元完成译码迭代开始前的消息初始化工作,当初始化使能信号有效时,将信道消息输入模块收集到的一帧信道信息途径选通单元MUX1传递给APP寄存块组,反之,选通单元MUX1传递数据移位单元输出数据至APP寄存块组;
在译码迭代开始的第1个时钟周期Qn'消息还未被节点消息联合处理单元更新,在CNU单元中加入了一级流水处理,Qn'消息需要等待1个时钟周期才能被更新,这时选通单元MUX2需要阻止节点消息联合处理单元输出数据通过,而是将旧的Qn'消息途径选通单元MUX2传递给数据移位单元,以防止APP寄存块组被更新,此时选择使能信号有效,反之选择使能信号无效;
节点消息互连网络单元主要用于将APP寄存块组存储的Qn'传递给节点消息联合处理计算单元,其余的Qn”消息直接被传送给数据移位单元,其互连交互网络由第1分层内的所有行中非零元素所在列决定
其中Qn'表示第1分层的所有行中“1”所在位置对应的Qn消息;Qn”表示除Qn'消息之外其余的Qn消息,且Qn=Qn'∪Qn”,Qn'∩Qn"=0。
与现有技术相比,本发明具有如下有益效果:
经过Vivado 14.4开发环境下的布局布线结果以及实际电路测试表明,译码器实现后的工作频率最高可达142.5Mhz。采用码长为4480的QC-LDPC码,其码速为7/8;设置迭代次数为9,一次迭代运算需要7个时钟周期;设计中加入了一级流水线处理以及译码迭代开始时初始化处理,因此需要额外2个时钟周期,根据吞吐量计算得到译码器最大可达到8.59Gbps的译码吞吐量。
附图说明
图1为发明的译码器总体设计框图示意图;
图2为发明的数据迭代处理设计的原理框图示意图;
图3为发明的节点消息联合处理单元结构框图示意图;
图4为发明的CNU单元总体设计框示意图;
图5为发明的Finder_Min1_Min2单元结构框图示意图;
图6为发明的2输入1输出比较单元设计框图示意图;
图7为发明的2输入1输出排列次序分配单元设计框图示意图;
图8为发明的2输入2输出排列次序分配单元设计框图示意图;
图9为发明的优化的归一化设计框图示意图;
图10为发明的校验节点处理单元CNU中数据分配器示意图;
图11为发明的VNU_1优化硬件设计电路示意图;
图12为发明的VNU_2优化硬件设计电路示意图;
图13为发明的校验节点消息存储模块设计框图示意图;
图14为发明的数据移位器设计框图示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的描述中,需要理解的是,术语中“前”、“后”、“左”、“右”、“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了方便描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位,以特定的方位构造和操作,因此不能理解为对本发明的限制,本发明中各实施例的技术方案可进行组合,实施例中的技术特征亦可进行组合形成新的技术方案。
实施例
请参阅附图1至附图2所示,一个码长为4480,码率7/8,行重为24,列重为3的规则QC-LDPC码作为高速LDPC译码器设计码型,其循环置换矩阵为7×7的子矩阵,目前标准中使用的码型绝大部分均为该类码型,本发明介绍的方法均可使用。其校验矩阵Hqc划分为80个行块(RB)与640个列块(CB),每个RB(CB)包含校验矩阵的7行(7列)。每个RB包含24个7×7循环置换矩阵,其余均为全0矩阵;每个CB包含3个7×7循环置换矩阵,其余均为全0矩阵。根据第三章提出的行置换分层策略,针对校验矩阵Hqc进行分层处理:将80个RB的第一行取出组合成第一分层,分层内的行顺序按照RB的顺序排列,80个RB的第二行取出组合成第二分层,以此类推完成所有分层,共分为7层,每层80行。经检验每个CB所包含的3个循环置换矩阵的移位数值均不相同,且相差为2,符合PLDA算法的分层条件,并可以在迭代处理过程加入一级流水线处理。
整个译码器译码流程如下(迭代次数l=1,2,,,9):
第一步、初始化:
对于n=1,2,,,4480
其中,为信道消息yn的量化值。
第二步:消息迭代处理:
1):第1分层至第7分层顺序执行节点消息更新,记符号t(t=1,2,,,7)表示为层数,m(m=1,2,,,80)表示分层内的行数。
a、对于第t分层内的80行,同时执行变量节点消息更新运算。
b、对于第t层内的80行,同时执行校验节点消息更新运算。
c、对于第t层内的80行,同时执行后验概率消息更新运算。
2):译码判决
每一次迭代处理完成之后,对译码序列进行判决。如果Qn (l)≥0,则判决/>否则/>
第三步、停止迭代
若达到设定的最大迭代次数,则停止迭代,且将作为译码器输出值输出,否则返回到第二步继续进行迭代译码。
首先将从以下三方面对译码器总体设计框架进行说明:
1)、译码器总体设计框架
根据上面叙述的迭代流程,对该译码器进行总体方案规划,并划分各功能模块,其译码器结构由以下几个子功能模块组成,分别为:控制模块、信道消息输入缓存模块、译码码字输出缓存模块、节点消息联合处理模块、校验节点消息存储模块、后验概率消息寄存模块、数据置换网络模块。
各功能模块简要说明:
控制模块:译码器中最核心的控制模块,其职能是控制、协调译码器其他模块按照预定的执行顺序依次完成迭代译码工作。
节点消息联合处理模块:主要用于完成一个分层内所有行中非零元素对应的节点消息更新运算(包括变量节点消息Qmn、校验节点消息Rmn、后验概率消息Qn),即完成公式(2)、(3)、(4)所示的运算过程。节点消息联合处理单元(NUPU)独立完成一行中非零元素对应的节点消息更新运算,一个分层包含校验矩阵80行,需要80个NUPU同时完成80行节点消息更新。
校验节点消息存储模块:主要用于存储迭代过程中更新的Rmn消息,由读写控制模块和80个片内BRAM级联组成。
后验概率消息寄存模块:用于寄存迭代过程中更新的Qn消息,由寄存器构成寄存器组来存储,寄存器由时钟沿触发,因此Qn消息每个时钟周期更新一次。
数据置换网络模块:主要功能是将一个分层中所有非零元素所在列对应的Qn消息从后验概率消息寄存模块准确的选取出来;完成运算后,将更新的Qn消息重新传递给后验概率消息寄存模块进行更新。
信道消息输入缓存模块:主要用于接收输入的消息,并完成一帧/>消息的缓存;在初始化时,传递给后验概率消息寄存模块进行Qn消息初始化。
译码码字输出缓存模块:作用是缓存后验概率消息寄存模块传递来的一帧判决码字,并将其输出至芯片外。
数据迭代处理主要用于完成整个译码器的数据处理、传递、存储等核心功能,该模块是迭代译码的核心。从图1可以看出,数据迭代处理设计主要由校验变量节点处理模块(Node Unite Processing Module,NUPM)、数据置换网络模块(Data InterconnectionNetwork Module,DINM)、校验节点消息存储模块(Check Node Memory Module,CNMM)、后验概率消息寄存模块(APP-Register Module,APP-RM)等组成。四个模块互相协调,共同完成迭代译码工作,缺一不可。
从附图2可以看出,校验变量节点处理模块NUPM主要由80个NUPU组成。一个NUPU的功能是更新分层t内第m(m=1,2,,,80)行中非零元素位置对应的校验节点消息Rmn和后验概率消息Qn,即式(2)、(3)、(4)所示的运算过程。NUPU由一个CNU(check node unit,校验节点单元)和VNU(变量节点单元)单元组成,CNU单元用于完成式(3)的所示的运算过程,VNU由VNU_1和VNU_2两部分组成,VNU_1、VNU_2分别完成式(2)、(4)所示的运算过程。根据所选规则QC-LDPC码的行重为24,即每行中非零元素数目均为24,定义符号i(i=1,2,,,24)表示m行中第i个非零元素,则一个NUPU输入24个消息和第m行校验节点消息压缩信息/>更新产生相应行的/>信息和24个/>消息。
CNU单元主要用于完成校验节点消息更新运算。为了描述方便,将校验节点消息更新计算公式(3)改写为公式(5)、(6)、(7),即l次迭代译码时,更新第t分层m行中非零元素位置对应的消息,需要CNU单元完成三部分工作:1、取VNU_1单元更新的24个变量节点消息/>并从所有/>消息的绝对值中寻找出其最小值、次最小值以及最小值位置,分别用min1、min2、index表示,然后对所求的min1、min2乘以归一化因子α;根据index值进行各校验节点消息数值分配;2、求这24个/>消息的符号乘积,并将所得乘积再与自身符号相乘得到相应的校验节点消息符号,用sign表示;3、根据index将min1、min2数值与各符号对应进行合并,即可求得一组更新的校验节点消息/>CNU总体设计框图如图4所示。
其中,sign()为求符号运算,满足要求
在设计实际电路中,不难看出,CNU单元的设计难点在于Finder_Min1_Min2单元,即求min1、min2、index值,特别是对行度数较大的LDPC码而言这一问题显得更加突出,如本文所选LDPC码的行度数为24。这里我们提出一种基于概率的次最小值寻找方案,具体实现方案为:将输入的24个Q数值分成两组,前12个为第一组,后12个为第二组,两组分别选取本组内的最小值,再将两个分组内选取的两个最小值进行比较,较小者为min1,较大者为min2,索引值index由较小者决定。分析得知,此方案选取的min1为24个Q数值中的最小数值;选取的min2若与min1没在同一分组内,则为24个Q数值中的次最小数值,反之,选取的min2有可能不是24个Q数值中的次最小数值,min2值的选取总是存在一定的概率成分,因此称此方案为基于概率的次最小值寻找方案。图5为Finder_Min1_Min2单元结构框图。
Finder_Min1_Min2单元主要由三个基本单元组成,即2输入1输出比较(CompareTwo To One,C2-1)单元、2输入1输出排列次序分配(Rank Order SorterTwo to One,ROS2-1)单元、2输入2输出排列次序分配(Rank Order Sorter Two to Two,ROS2-2)单元。级联三个基本单元组成树状Finder_Min1_Min2实现结构,其各基本单元设计框图分别如附图6、附图7、附图8所示。
从附图6可以看出,C2-1单元由1个2输入比较器和1个2输入的选择器组成。输入信号是2个无符号数据a0、a1;输出信号为最小值min1与索引值index。C2-1单元实现的功能如下:
如附图7是ROS2-1设计框图,ROS2-1单元由1个2输入比较器和2个2输入选择器组成.。输入信号为前一级2组C2-1单元或ROS2-1单元的输出信号,分别为2个无符号数据a、b,2个最小值位置索引值index_a、index_b;输出信号包括min1、index。ROS2-1单元实现的功能如下:
附图8为ROS2-2设计框图,ROS2-2单元由1个2输入比较器和3个2输入选择器组成.。输入信号为前一级2组ROS2-1单元的输出信号,分别为2个无符号数据a、b,2个最小值位置索引值index_a、index_b;输出信号包括min1、min2、index。ROS2-2单元实现的功能如下:
附图5展示了Finder_Min1_Min2单元设计框图,它由三个基本单元级联而成。针对24个输入信号的Finder_Min1_Min2单元需要分5步来实现,其中第一步由12个C2-1单元组成,最后一步需要1个ROS2-2单元,中间三步由10个ROS2-1单元级联组成。根据三个基本单元所使用的比较器和选择器数目,可以估算Finder_Min1_Min2单元共需要23个2输入比较器和35个2输入选择器,需要说明的是Finder_Min1_Min2单元中无符号数据位宽均为4,索引index数据位宽为级联的比较层数k,即k=5。本发明提出的Finder_Min1_Min2结构与现有技术中的Finder_Min1_Min2结构资源消耗对比如表1所示。
表1Finder_Min1_Min2结构资源消耗对比
从附图4可以看出,Finder_Min1_Min2单元输出的Min1和Min2数值需要分别乘以归一化因子α,这里选取α=0.75。硬件实现中,传统的方法是将Min1(Min2)分别右移1位和2位,再将两个移位数值相加。然而传统方法得到的归一化数值与实际归一化数值之间有较大的误差,影响译码性能,比如4位二进制数0011,右移1位为001,右移2位为00,两移位数值相加为0001,与实际归一化值2.25相差1.25。为了缓解这一问题,本文提出了一种优化的归一化处理方案,具体方法是先将Min1(Min2)分别右移1位和2位,再将两个移位数值与Min1(Min2)的末尾位相加,得到的归一化数值与实际归一化数值之间相差不大,如上面列举的二进制数值0011,经过该方法处理后归一化数值为0010,与实际值仅相差0.25。使用b4b3b2b1表示4bit无符号Min1(Min2)数值,则优化的归一化处理设计框图如附图9所示。
校验节点处理单元CNU中数据分配器(Data Distributor)主要用于完成将m行校验节点压缩Rm信息转换成m行中非零元素位置对应的24个实际校验节点消息Rmi。Rm信息一般由四部分组成,分别为24个Rmi消息绝对值中的最小值min1、次最小值min2、最小值位置index、校验节点消息符号集合signs。根据公式5,由索引译码器来控制min1、min2的选取,若索引值index=i,则使对应的选通信号为‘1’,选择器输出次小值;除此之外,输出最小值。符号位的排列次序与m行中24个非零元素排列次序相一致,仅需要按照顺序分配即可。最后,将各校验节点消息符号位与数值位相拼接,即可获得该校验行中24个实际校验节点消息。数据分配器设计框图如附图10所示。
迭代译码过程中,为了防止中间数据过大产生溢出,需要对中间数据进行适当的限制。从附图4可以看出,本文对CNU单元输入的24个变量节点消息Q的数值Mag(Q)(数据位宽均为6bit)分别进行了数据截取处理。截取准则为:如果Mag(Q)大于15,则将其数值截取为15,除此之外,Mag(Q)保持不变。Q消息的数值Mag(Q)经过截取处理后,数值均不大于15,因此仅需要4bit就可以表示Q消息的数值大小。如此以来,不仅防止了中间数据溢出,同时减少了后续Finder_Min1_Min2单元的资源消耗。
从附图3可以看出,VNU单元由VNU_1单元和VNU_2单元两部分组成,分别用于完成式2、4所示的运算过程。VNU_1主要用于完成变量节点消息的更新运算,如更新l次迭代时第t分层内的m行中非零元素所在列对应的24个/>消息,需要由l次迭代时第t-2分层更新的24个变量节点消息/>减去l-1次迭代时第t层m行中对应的24个校验节点消息而求得。VNU_2单元用于更新后验概率消息/>如更新l次迭代时第t分层内m行中非零元素所在列对应的24个/>消息,需要将VNU_1更新的24个/>消息与CNU单元更新的24个校验节点消息/>对应相加得到更新的24个/>消息。
在VNU_1单元中,SM-2’S单元用来完成将符号-数值(Sign Magnitude,SM)数据格式的转化成二进制补码(Two’S Complement,2’S)数据格式,以备后续计算/>消息;除此之外,SM-2’S单元还须将5bit的/>扩展成7bit。扩展原则为:扩展后数据前3bit均为扩展前数据的符号位(首位),后4bit不变。计算出/>后,需要将其传递给CNU单元,传递之前需要将刚更新的2’S数据格式的/>消息转换成SM数据格式,这项任务由SM-2’S单元的逆运算2’S-SM单元来完成。同理VNU_2单元仅需要一个SM-2’S单元用于完成/>数据的格式转化和位数扩展。结合附图3中的NUPU设计框,本发明提出了一种优化的VNU_1和VNU_2硬件设计电路如附图11、附图12所示。
译码迭代过程中需要处理3种节点消息,它们分别为:变量节点消息Qmn、校验节点消息Rmn以及后验概率消息Qn。其中,Qmn消息更新完成后直接参与下一步运算处理,因此不需要对Qmn消息进行存储。为了减少校验节点消息Rmn的存储量,根据图9所示的数据分配设计原理,针对第t分层内m行中非零元素对应的Rmn消息,只需要存储该行更新的min1、min2、index、signs四类数值即可还原该行包含的所有Rmn消息,称这四类数值的集合为该行校验节点压缩信息校验节点消息存储模块专门用于存储/>信息,由80个R_RAM组成,每个R_RAM的初始值均为0。分层t内第1行至80行更新的/>信息依次存储在R_RAM1至R_RAM80的第t个存储单元中,任意一个R_RAM的数据深度均为7。第l次迭代时,更新t分层校验节点消息,需要将80个l-1次迭代时存储的/>信息按照读地址t同时从80个R_RAM的第t个存储单元中读出送至CVPU单元,完成相应的运算后,80个更新的/>信息按写地址t同时写回原来的存储单元,即存储器组的读写地址均从0累加至7,用一个简单的计数器就可以实现。附图13为校验节点消息存储模块设计框图。
后验概率消息寄存模块用于寄存所有的Qn消息,如附图2所示,由640个APP寄存块组成,第c(c=1,2,,,640)个APPc寄存块按照列先后次序存储第c个CB所在列对应的7个Qn消息,一个Qn消息由7bit组成,则每个APP寄存块均由49个寄存器级联而成。初始化时,640个APP寄存块按照码字比特顺序存储信道量化消息第l次迭代时,更新t分层/>消息时,需要将第l次迭代t-2分层更新的所有/>消息输出,迭代运算完成后,将更新的消息存储在640个APP寄存块中。
本发明中Qn消息均采用7bit量化,因此需要存储Qn消息为4480×7=31360bit;每个信息由4+4+5+24=37bit组成,560个的校验行需要存储/>信息为560×37=20720bit。结合两种消息的存储量评估,本发明实现的LDPC译码器共需要存储量52080bit消息。
从附图1可以看出,数据置换网络设计包括两个选通单元MUX1、MUX2,一个数据移位单元(Data Shift Unit,DSU)以及节点消息互连网络单元。在介绍各单元之前先对一些符号进行说明。
Qn'表示第1分层的所有行中“1”所在位置对应的Qn消息;
Qn”表示除Qn'消息之外其余的Qn消息,且Qn=Qn'∪Qn”,Qn'∩Qn"=0
MUX1单元完成译码迭代开始前的消息初始化工作,当初始化使能信号Initial_En有效时,将信道消息输入模块收集到的一帧信道信息途径选通单元MUX1传递给APP消息寄存器组,反之,选通单元MUX1传递数据移位单元输出数据至APP消息寄存器组。
在译码迭代开始的第1个时钟周期Qn'消息还未被NUPU单元更新,因为本设计在CNU单元中加入了一级流水处理,Qn'消息需要等待1个时钟周期才能被更新,这时选通单元MUX2需要阻止NUPU单元输出数据通过,而是将旧的Qn'消息途径选通单元MUX2传递给数据移位单元,以防止APP消息寄存器组被更新,此时Select_En(选择使能)有效,反之Select_En(选择使能)无效。
节点消息互连网络单元主要用于将APP消息寄存器组存储的Qn'传递给NUPU计算单元,其余的Qn”消息直接被传送给数据移位单元,其互连交互网络由第1分层内的所有行中非零元素所在列决定。
根据矩阵行置换原则,由第t-1分层转换至第t分层仅需要将t-1分层中640个80×7的列块进行单一的循环左移。硬件实现时,只需直接将第1分层非零元素所在列对应的Qn'消息路径映射在设计电路中,这样很大程度减少了译码器互连网络的复杂度。译码迭代过程中,为了确保每个分层中非零元素所在列对应的Qn消息能够准确传递给NUPU单元,更新一个分层消息时,需要将每个列块对应列更新的7个Qn消息进行循环左移1个数据位宽(一个数据位宽为7bit),依次直至迭代译码完成。本发明提出了一种简单的数据移位单元来实现所有Qn消息的移位功能,它由640个数据移位器(Data Shifter,DS)组成,每个DS对应一个列块,用于实现此列块对应的7个Qn消息的循环移位。DS由使能信号Data_Shift_En(数据移位使能)控制,当Data_Shift_En(数据移位使能)有效时,输入数据循环左移1个数据位宽;反之,输入数据不改变。DS设计框图如附图14所示。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种LDPC码的分层译码中迭代数据处理方法,其特征在于,包括以下步骤:
S1对LDPC码的校验节点消息Rmn、后验概率消息Qn进行初始化,初始化公式为其中/>为信道消息yn的量化值,n=1,2,3,……,x,x为LDPC码的码长;所述LDPC码为QC-LDPC码,其码长X为4480、码率7/8、行重为24、列重为3、循环置换矩阵为7×7的子矩阵;
S2消息迭代处理
1、第1分层至第7分层顺序执行节点消息更新,记符号t(t=1,2,,,7)表示为层数,m(m=1,2,,,80)表示分层内的行数,迭代次数l=1,2,,,9;
a、对于第t分层内的80行,同时执行变量节点消息更新运算,公式为:
其中Qmn表示为变量节点消息;
b、对于第t层内的80行,同时执行校验节点消息更新运算,公式为:
其中α表示为归一化因子;
c、对于第t层内的80行,同时执行后验概率消息更新运算,公式为:
2、译码判决
每一次迭代处理完成之后,对译码序列进行判决,如果Qn (l)≥0,则判决/>否则/>
S3停止迭代
若达到设定的最大迭代次数,则停止迭代,且将作为译码器输出值输出,否则返回到S2继续进行迭代译码;
所述译码器的系统包括:
控制模块:译码器中最核心的控制模块,主要用于控制、协调译码器其他模块按照预定的执行顺序依次完成迭代译码工作;
校验变量节点消息联合处理模块:主要用于完成一个分层内所有行中非零元素对应的节点消息更新运算,包括变量节点消息Qmn、校验节点消息Rmn、后验概率消息Qn,节点消息联合处理单元独立完成一行中非零元素对应的节点消息更新运算,一个分层包含校验矩阵80行,需要80个节点消息联合处理单元同时完成80行节点消息更新;
校验节点消息存储模块:主要用于存储迭代过程中更新的Rmn消息,由读写控制模块和80个片内BRAM级联组成;
后验概率消息寄存模块:用于寄存迭代过程中更新的Qn,由寄存器构成寄存器组来存储,寄存器由时钟沿触发,因此Qn每个时钟周期更新一次;
数据置换网络模块:主要功能是将一个分层中所有非零元素所在列对应的Qn从后验概率消息寄存模块准确的选取出来;完成运算后,将更新的Qn重新传递给后验概率消息寄存模块进行更新;
信道消息输入缓存模块:主要用于接收输入的消息,并完成一帧/>消息的缓存;在初始化时,传递给后验概率消息寄存模块进行Qn初始化;
译码码字输出缓存模块:作用是缓存后验概率消息寄存模块传递来的一帧判决码字,并将其输出至芯片外;
所述校验变量节点消息联合处理模块由80个节点消息联合处理单元构成,任一所述节点消息联合处理单元由一个CNU单元和一个VNU单元构成,所述CNU单元主要用于完成校验节点消息更新运算,所述VNU单元由VNU_1单元和VNU_2单元构成,所述VNU_1单元主要用于完成变量节点消息更新运算,所述VNU_2单元主要用于完成后验概率消息更新运算;
所述CNU单元主要工作过程为:
1)取VNU_1单元更新的LDPC码的行重数值个数的变量节点消息并从所有/>消息的绝对值中寻找出其最小值min1、次最小值min2以及最小值位置index,然后对所求的min1、min2乘以归一化因子α;根据index值进行各校验节点消息数值分配;
2)求这LDPC码的行重数值个数的消息的符号乘积,并将所得乘积再与自身符号相乘得到相应的校验节点消息符号,用sign表示;
3)根据index将min1、min2数值与各符号对应进行合并,即可求得一组更新的校验节点消息
还包括一种归一化因子α优化方法,其具体步骤为:
1)将Min1右移1位,Min2右移2位;
2)再将经过移位Min1数值与未经过移位Min1的数值末尾位相加,得到Min1归一化因子α,再将经过移位Min2数值与未经过移位Min2的数值末尾位相加,得到Min2归一化因子α。
2.根据权利要求1所述的LDPC码的分层译码中迭代数据处理方法,其特征在于,还包括次最小值寻找单元,其工作流程如下:
1)将输入的LDPC码的行重数值个数的Q数值分成两组,平均分配;
2)两组分别选取本组内的最小值,再将两个分组内选取的两个最小值进行比较,较小者为min1,较大者为min2,最小值位置index由较小者决定;
3)选取的min1为整个LDPC码的行重数值个数的Q数值中的最小数值;选取的min2若与min1没在同一分组内,则为整个LDPC码的行重数值个数的Q数值中的次最小数值。
3.根据权利要求2所述的LDPC码的分层译码中迭代数据处理方法,其特征在于,所述次最小值寻找单元由2输入1输出比较单元、2输入1输出排列次序分配单元与2输入2输出排列次序分配单元构成,级联三个基本单元组成树状结构,所述2输入1输出比较单元由1个2输入比较器和1个2输入的选择器组成,所述2输入1输出排列次序分配单元由1个2输入比较器和2个2输入选择器构成,所述2输入2输出排列次序分配单元由1个2输入比较器和3个2输入选择器组成。
4.根据权利要求3所述的LDPC码的分层译码中迭代数据处理方法,其特征在于,所述后验概率消息寄存模块由640个APP寄存块组成,第c(c=1,2,,,640)个APPc寄存块按照列先后次序存储第c个CB所在列对应的7个Qn消息,其中CB为列块,一个Qn消息由7bit组成,每个APP寄存块均由49个寄存器级联而成;初始化时,640个APP寄存块按照码字比特顺序存储信道量化消息第l次迭代时,更新t分层/>消息时,需要将第l次迭代t-2分层更新的所有/>消息输出,迭代运算完成后,将更新的/>消息存储在640个APP寄存块中。
5.根据权利要求1所述的LDPC码的分层译码中迭代数据处理方法,其特征在于,所述数据置换网络模块由选通单元MUX1、选通单元MUX2、数据移位单元以及节点消息互连网络单元构成,所述选通单元MUX1单元完成译码迭代开始前的消息初始化工作,当初始化使能信号有效时,将信道消息输入模块收集到的一帧信道信息途径选通单元MUX1传递给APP寄存块组,反之,选通单元MUX1传递数据移位单元输出数据至APP寄存块组;
在译码迭代开始的第1个时钟周期Qn'消息还未被节点消息联合处理单元更新,在CNU单元中加入了一级流水处理,Qn'消息需要等待1个时钟周期才能被更新,这时选通单元MUX2需要阻止节点消息联合处理单元输出数据通过,而是将旧的Qn'消息途径选通单元MUX2传递给数据移位单元,以防止APP寄存块组被更新,此时选择使能信号有效,反之选择使能信号无效;
节点消息互连网络单元主要用于将APP寄存块组存储的Qn'传递给节点消息联合处理计算单元,其余的Qn”消息直接被传送给数据移位单元,其互连交互网络由第1分层内的所有行中非零元素所在列决定Qn”
其中Qn'表示第1分层的所有行中“1”所在位置对应的Qn消息;表示除Qn'消息之外其余的Qn消息,且Qn=Qn'∪Qn”,Qn'∩Qn"=0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011319213.2A CN112242851B (zh) | 2020-11-23 | 2020-11-23 | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011319213.2A CN112242851B (zh) | 2020-11-23 | 2020-11-23 | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112242851A CN112242851A (zh) | 2021-01-19 |
CN112242851B true CN112242851B (zh) | 2024-03-19 |
Family
ID=74175315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011319213.2A Active CN112242851B (zh) | 2020-11-23 | 2020-11-23 | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112242851B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262231A (zh) * | 2008-04-25 | 2008-09-10 | 浙江大学 | 一种块状低密度校验码的译码方法及可重构多模式译码器 |
CN102281125A (zh) * | 2011-07-29 | 2011-12-14 | 上海交通大学 | 分层分块非规则低密度校验码译码器及译码方法 |
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN108696282A (zh) * | 2018-05-30 | 2018-10-23 | 华侨大学 | 一种高效低复杂度的qc-ldpc码全并行分层结构译码器 |
CN109981226A (zh) * | 2019-04-16 | 2019-07-05 | 厦门大学 | 一种联合信源信道编码系统的联合调度译码算法 |
CN110518919A (zh) * | 2019-08-01 | 2019-11-29 | 湖南国科锐承电子科技有限公司 | 低密度奇偶校验码的分层译码方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1966897A4 (en) * | 2005-12-27 | 2012-05-30 | Lg Electronics Inc | DEVICES AND METHODS FOR DECODING USING A CHANNEL CODE OR LPDC |
TWI415396B (zh) * | 2009-11-23 | 2013-11-11 | Nat Univ Tsing Hua | 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法 |
CN105846830B (zh) * | 2015-01-14 | 2019-07-30 | 北京航空航天大学 | 数据处理装置 |
-
2020
- 2020-11-23 CN CN202011319213.2A patent/CN112242851B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262231A (zh) * | 2008-04-25 | 2008-09-10 | 浙江大学 | 一种块状低密度校验码的译码方法及可重构多模式译码器 |
CN102281125A (zh) * | 2011-07-29 | 2011-12-14 | 上海交通大学 | 分层分块非规则低密度校验码译码器及译码方法 |
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN108696282A (zh) * | 2018-05-30 | 2018-10-23 | 华侨大学 | 一种高效低复杂度的qc-ldpc码全并行分层结构译码器 |
CN109981226A (zh) * | 2019-04-16 | 2019-07-05 | 厦门大学 | 一种联合信源信道编码系统的联合调度译码算法 |
CN110518919A (zh) * | 2019-08-01 | 2019-11-29 | 湖南国科锐承电子科技有限公司 | 低密度奇偶校验码的分层译码方法和系统 |
Non-Patent Citations (3)
Title |
---|
A reduced complexity decoder architecture via layered decoding of LDPC codes;Dale E.Hocevar;《IEEE Workshop onSignal Processing Systems》;107-112 * |
High-throughput layered decoder implementation for quasi-cyclic LDPC codes;Kai Zhang;《IEEE Journal on Selected Areas in Communications》;985 - 994 * |
低复杂度LDPC码译码算法研究与实现;黄剑婷;《中国优秀硕士学位论文全文数据库信息科技辑》;第44-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112242851A (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10110345B2 (en) | Path sort techniques in a polar code successive cancellation list decoder | |
US9240237B2 (en) | Semiconductor device and method of writing/reading entry address into/from semiconductor device | |
US10911522B2 (en) | Parallel computing system | |
US20070180352A1 (en) | Memory system and method for use in trellis-based decoding | |
CN111224680B (zh) | 一种低延时高可靠的极化码快速译码方法和译码器 | |
CN105680877B (zh) | 一种cc-qc-ldpc码的构建方法及译码装置 | |
CN109889205A (zh) | 编码方法及系统、解码方法及系统、编解码方法及系统 | |
JP3274668B2 (ja) | 演算処理装置及び演算処理方法 | |
CN110278000A (zh) | 基于dvb-s2标准的ldpc码并行译码fpga实现架构及译码方法 | |
CN116882468B (zh) | 一种硬件加速器、硬件加速方法和电子设备 | |
CN109347486A (zh) | 低复杂度高吞吐率的5g ldpc编码器和编码方法 | |
Mousavi et al. | Efficient partial-sum network architectures for list successive-cancellation decoding of polar codes | |
CN112242851B (zh) | 一种ldpc码的分层译码中迭代数据处理方法及译码器系统 | |
CN108449090B (zh) | 一种可配置多码长、多码率的ldpc译码器 | |
CN110518919B (zh) | 低密度奇偶校验码的分层译码方法和系统 | |
CN111384970A (zh) | 一种译码方法、装置及通信设备 | |
CN113381769B (zh) | 一种基于fpga的译码器 | |
CN106452461A (zh) | 一种通过矢量处理器实现viterbi解码的方法 | |
CN100336305C (zh) | 数字信号处理器中的高性能turbo和viterbi信道解码 | |
CN111404558B (zh) | 一种Polar码译码的方法、译码器及计算机存储介质 | |
CN113159302A (zh) | 一种用于可重构神经网络处理器的路由结构 | |
CN107368287B (zh) | 一种数据流结构循环依赖的加速系统、加速装置及其加速方法 | |
CN220208247U (zh) | 除法运算电路 | |
CN112416260B (zh) | 数据处理方法和数据处理装置 | |
Wu et al. | An efficient approach for in-place scheduling of path metric update in Viterbi decoders |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |