CN103117751B - Ldpc译码方法 - Google Patents
Ldpc译码方法 Download PDFInfo
- Publication number
- CN103117751B CN103117751B CN201310063128.8A CN201310063128A CN103117751B CN 103117751 B CN103117751 B CN 103117751B CN 201310063128 A CN201310063128 A CN 201310063128A CN 103117751 B CN103117751 B CN 103117751B
- Authority
- CN
- China
- Prior art keywords
- node
- check
- computing
- row
- arithmetic section
- 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
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种LDPC码译码方法,包括以下步骤:确定校验矩阵中的一个复用行;确定译码单元中的一次校验节点运算部分、二次校验节点运算部分和一次变量节点运算部分和二次变量节点运算部分,在第K次迭代处理中,对复用行进行一次处理:当对一次校验节点运算部分进行第K次校验节点更新运算时,对一次变量节点运算部分进行第K-1次变量节点更新运算;完成对所述其他行的顺序迭代后,对复用行进行二次处理:对二次校验节点运算部分进行第K次校验节点更新运算,同时对二次变量节点运算部分进行第K次变量节点更新运算。本发明较传统算法中变量节点运算和校验节点运算顺序进行的技术方案,提高了LDPC码的译码吞吐量。
Description
技术领域
本发明属于LDPC译码领域,涉及一种LDPC译码方法。
背景技术
目前LDPC(Low-DensityParity-Check)码译码方法的实现过程中,普遍存在逻辑资源不能被高效利用情况。传统的译码算法CNU和VNU按照串行顺序进行运算,每部分的运算都需要等待另一部分的运算结果,这使得CNU和VNU的利用率都只有50%,无法再进一步提高,严重影响了译码的速度;虽然近期有方法指出,通过拆分校验矩阵的方法提高了CNU和VNU的利用率,并使得CNU的利用率达到了100%,但是CNU运算之后需要整合拆分的校验矩阵信息才能开始进行VNU的运算,因此对速度也构成了一定的影响;近期的另一种实现方案给出两路输入时分复用CNU和VNU的实现方案,虽然该方案使得速度和逻辑单元利用率都有了显著提升,但是存储资源的双倍消耗是很难承受的,尤其对于CCSDS近地通信标准这类每个循环子矩阵中都有两组1的情况,存储资源的开销就更大了。
发明内容
本发明要解决的技术问题是:针对现有技术的不足,提供了一种LDPC译码方法,通过采用本发明较传统算法中变量节点运算和校验节点运算顺序进行的技术方案,提高了LDPC码的译码吞吐量。
为解决上述技术问题,本发明的技术方案为:
一种LDPC码译码方法,包括以下步骤:
确定校验矩阵中的一个复用行;并对所述复用行中的每个译码单元进行划分,确定所述译码单元中的一次校验节点运算部分、二次校验节点运算部分和一次变量节点运算部分和二次变量节点运算部分,
在第K次迭代处理中,
对所述复用行进行一次处理:当对所述一次校验节点运算部分进行第K次校验节点更新运算时,对所述一次变量节点运算部分进行第K-1次变量节点更新运算;
完成对所述复用行的首次处理后,对校验矩阵中除所述复用行外的其他行进行顺序校验据节点更新;
完成对所述其他行的顺序迭代后,对所述复用行进行二次处理:对所述二次校验节点运算部分进行第K次校验节点更新运算,同时对所述二次变量节点运算部分进行第K次变量节点更新运算。
所述复用行为在所述校验矩阵中任意选择的一行。
对所述复用行中的每个译码单元进行划分的方法为:
将所述译码单元按列方向等分为两部分,分别所述一次校验节点运算部分和所述二次校验节点运算部分;
在对所述一次校验节点运算部分进行所述第K次校验节点更新运算时,根据所述校验节点更新运算和所述变量节点更新运算的速度,确定所述第K-1次变量节点运算的起始位置和截止位置作为所述一次变量节点运算部分,且保证所述第K校验节点更新运算和所述第K-1次变量节点更新运算对该所述译码单元中的点不发生运算冲突。
所述校验矩阵用于对(8176,7154)LDPC码进行译码。
所述校验矩阵共有两行。
本发明与现有技术相比具有如下优点:
本发明给出的译码方法避免了传统译码方案中必须先进行完CNU运算才能进行VNU运算的弊病,通过改变CNU和VNU运算的顺序,使得在CNU没有结束时就提前进行VNU的运算,同样地,在VNU没有结束时,就开始了接下来的CNU的运算,而且采用了一定的运算手段,保证这两个运算在进行的过程中互不干扰,从而提高了运算的耦合度,这样就使得译码器的吞吐量大大增加。在本发明译码方法中,通过增大CNU和VNU之间的耦合度,在对(8176,7154)LDPC码进行译码时,能够使得CNU运算单元的利用率达到100%,而传统的实现方案中,CNU和VNU运算单元的利用率均为50%。高效地利用运算单元意味着逻辑资源的高度节约。
且本发明所述的译码方法同样适用于其他LDPC码,且都可提高LDPC码的译码吞吐量。
本发明的所述的译码方法虽然主要针对的是CCSDS近地通信标准LDPC码而言的,但并没有利用该码型的特定结构,因此整个的方法的可移植性,广适用性强,可以对其他的LDPC码应用该发明中给出的方案进行译码,从而提高译码速度。
附图说明
图1为本发明中的改进双向部分并行译码结构;
图2为本发明中的用来举例说明的准循环矩阵;
图3为本发明的行块A中子矩阵col、headA、midA和endA位置;
图4为本发明的译码处理顺序图示意图;
图5为本发明的第一阶段处理数据示意图;
图6为本发明的第三阶段处理数据示意图。
图7为本发明的处理时序图。
具体实施方式
下面就结合附图对本发明做进一步介绍。
本发明通过提高校验节点更新运算和变量节点更新运行之间的耦合度,可以提高校验节点运算单元和变量节点运算单元的利用率,从而提高译码过程的吞吐量。
上述校验节点更新CNU运算过程是对校验矩阵H中的每一行对应的“1”位置的信息进行的一种运算,运算的过程主要是找出绝对值最小和次小的两个值,运算的输出有四个量:绝对值最小值、绝对值次小值、符号位和绝对值最小值的位置。
上述变量节点更新VNU运算过程是在上述CNU运算结果基础上,对校验矩阵H中的“1”位置的信息进行更新,更新方法为,所有绝对值最小值的位置用绝对值次小值代替,所有绝对值次小值的位置用绝对值最小值代替,符号位不变,更新后对每一列对应的“1”位置的元素求和。
本发明正是对校验矩阵在迭代运算过程中的某一次CUN运算和VNC运算迭代的开始时间和起始位置进行的优化。本发明虽然是针对CCSDS近地通信LDPC码提出,但是为方便说明,说明过程中给出一个举例校验矩阵。
首先如图1所示,对该举例矩阵的译码实现原理,与CCSDS近地通信标准LDPC码的实现原理完全相同,图1中的CUN用于对校验矩阵中的每行进行校验节点更新;VNU1~16用于对校验矩阵的每列进行变量节点更新。在译码过程中,通过CUN和VNU1~16的配合完成每次迭代,从而实现译码。
进一步如图2,为一个16*16的校验矩阵示意图,其中的斜线连线用于表示该校验矩阵中1的位置。本发明所述译码方法可以适用于具有多行的校验矩阵,但是,仅对该校验矩阵中的一行进行复用,因此,图2给出了具有两行的校验矩阵以便于说明本发明所述方法。在图2的上半部分的0~7代表校验矩阵的第一行,下半部分的0~7代表校验矩阵的第二行,同样,左半部分的0~7代表校验矩阵中的第一列,右半部分的0~7代表校验矩阵的第二列。在该校验矩阵中所指代的行和列并不是校验矩阵中具体的每一行和每一列,而是为便于译码对校验矩阵进行划分后获得的行,此部分内容为本领域技术人员的公知常识。在图2中,经过上述划分,可形成四个译码单元,即图2中田字格划分的四个部分,而位于同一行的译码单元可构成一个行块,位于同一列的译码单元可构成一个列块,如图2中的A,B,C,D。
为实现本发明所述译码方法,首先需要确定一个复用行,进而对上述译码单元进行划分。对于图2所示校验矩阵,本发明实施例以上半部分的第一行为例作为复用行进行说明,当校验矩阵中具有多行时,可任意选择一行作为复用行。
对于译码单元可以按照下述方式进行划分,具体如图3,行块A中,按照0~7行列的顺序编号,在图中以headA和endA分别代表行块A的最上面和最下面一行,midA为行块A中将其等分的中线,col代表行块A中的在中线midA以下,两组“1”上下重合的部分的最左端作为col值的输入。该划分的目的为,保证在当前次校验节点更新运算和上一次变量节点更新运算在该译码单元中同时发生时,不会因为校验节点更新和变量节点更新对该译码单元中的点不发生运算冲突结合,即第K次校验节点更新不能提前对未完成第K-1变量节点更新的点进行处理。因此,结合具体译码过程的工程实际,通过上述划分方法确定变量节点更新的起始位置,而在针对不同校验矩阵和利用不同译码器进行译码时,可按照上述不发生冲突的原则,对译码单元进行具体划分。
在经过上述划分后,可以利用划分后的校验矩阵进行译码,具体译码过程如图4可分为三部分,不包括针对复用行的处理的第一、三阶段和对其他行的处理的第二阶段。
对于复用行的处理,的第一阶段和第三阶段分别对应一次处理和二次处理两步,对于其他行则采用顺序进行校验节点更新运算,其处理过程是顺序进行的。
对于译码过程中的第K次迭代,上述一次处理和二次处理的处理过程如下:
一次处理时,当对译码单元的一次校验节点运算部分(即图3中经过划分后获得的[endA,midA]部分)进行第K次校验节点更新运算(水平运算)时,对一次变量节点运算部分(即图3中经过划分后获得的col左侧的部分)进行第K-1次变量节点更新运算(垂直运算)。
在完成一次处理后,顺序对其他行进行校验节点处理,在处理完所有其他行后,对复用行再次进行二次处理,即对二次校验节点运算部分(即图3中经过划分后获得的[headA,midA])部分)进行第K次校验节点更新运算,同时对二次变量节点运算部分(即图3中经过划分获得的一次变量节点运算部分以外剩余的部分)进行第K次变量节点更新运算。
从而完成对该校验矩阵的第K次迭代处理,上述一次处理和二次处理时,校验节点和变量节点运算的方向如图5中箭头所示。
下面进一步结合本实施例给出的(8176,7154)LDPC码的校验矩阵的处理进行说明。
在具体实现过程中,1个CNU单元和16个VNU单元,通过8路并行的方式实现(8176,7154)LDPC码的高速译码工作。
第一阶段(一次处理):需要完成两方面内容,即第k次迭代中的CNU运算和第k-1次的VNU运算。如图4所示第k次迭代中的CNU运算,从endA位置向上运算到midA位置。同时进行第k-1次迭代中剩余的VNU运算,从col向左到col-511/2。由于对同一数据的第k次CNU运算必然发生在第k-1次VNU运算之后,因此可以保证还未完成的VNU运算与提前进行的CNU运算之间互不冲突。
第二阶段:需要进行第k次迭代中整个行的CNU运算,不涉及VNU运算,只是单一的CNU运算处理,因此不存在逻辑冲突的问题,也不存在存储器读写冲突的问题。
第三阶段(二次处理):需要完成两方面工作,即第k次迭代中的CNU运算和第k次的VNU计算。如图6所示,CNU运算的顺序是从headA到midA由上至下进行处理,VNU运算的顺序是从每个列块的col向右处理。由于对同一数据的第k次VNU的运算过程发生在第k次CNU的运算过程之后,因此可以保证还未完成的CNU运算与提前进行的VNU运算之间互不冲突。
如此往复,迭代操作,直到完成全部迭代过程。可以看出CNU运算过程覆盖了译码器工作全程,也就是说CNU的使用率达到了100%。同时全部的VNU处理时间都是伴随着CNU的处理过程完成的,在VNU处理的前半期,是提前进行的第k次迭代VNU运算与尚未完成的第k次CNU运算两个任务的并发执行,在VNU处理的后半期,是第k次迭代中的剩余VNU运算过程与提前开始的第k+1次CNU运算过程两个任务的并发执行。因此从VNU的角度看,它的耦合度是100%的。
本部分内容对CCSDS近地通信标准(8176,7154)LDPC码采用行列都为8并行度的运算方式,CNU运算过程中,采用上述的顺序方案进行CNU运算,到达指定次数开始提前进行VNU运算,VNU运算按照上文所述顺序达到一定次数后重新提前开始下一周期的CNU运算。如图7所示,提前进行的VNU运算使得CNU运算少进行了约25%的运算量(511/2行),提前进行的CNU运算使得等待VNU运算结束的时间少进行了约50%(511/2列)。迭代一次CNU运算需要的时钟周期数是(1022-511/2)/8≈96,VNU运算需要的时钟周期数是(511-511/2)/8≈32,因此一次迭代需要的周期数为128,假设需要10次迭代,共需要周期数为1280,输出约8kbit的数据量,假设时钟频率150MHz,则该译码器的吞吐量为937.5Mbps。
不采用上述复用方法的传统译码器在相同的并行度、迭代次数和时钟频率的前提下,迭代一次CNU运算需要的时钟周期是1022/8≈128,VNU运算需要的时钟周期是511/8≈64,因此一次迭代所需要的总的时钟周期为192,10次迭代需要的时钟周期是1920,输出8kbit的数据量,因此在150MHz的时钟频率下,吞吐量约为625Mbps。
可见,该方案在不增加任何存储资源,不提高时钟频率的前提下,只提高复用程度,使得译码器的吞吐量比传统的译码方案提高了约50%。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (5)
1.一种LDPC码译码方法,包括以下步骤:
确定校验矩阵中的一个复用行;并对所述复用行中的每个译码单元进行划分,确定所述译码单元中的一次校验节点运算部分、二次校验节点运算部分和一次变量节点运算部分和二次变量节点运算部分,其特征在于,还包括以下步骤:
在第K次迭代处理中,
对所述复用行进行一次处理:当对所述一次校验节点运算部分进行第K次校验节点更新运算时,对所述一次变量节点运算部分进行第K-1次变量节点更新运算;
完成对所述复用行的首次处理后,对校验矩阵中除所述复用行外的其他行进行顺序校验据节点更新;
完成对所述其他行的顺序迭代后,对所述复用行进行二次处理:对所述二次校验节点运算部分进行第K次校验节点更新运算,同时对所述二次变量节点运算部分进行第K次变量节点更新运算。
2.如权利要求1所述的译码方法,其特征在于:所述复用行为在所述校验矩阵中任意选择的一行。
3.如权利要求1所述的译码方法,其特征在于:对所述复用行中的每个译码单元进行划分的方法为:
将所述译码单元按列方向等分为两部分,分别为所述一次校验节点运算部分和所述二次校验节点运算部分;
在对所述一次校验节点运算部分进行第K次校验节点更新运算时,根据所述校验节点更新运算和所述变量节点更新运算的速度,确定所述第K-1次变量节点运算的起始位置和截止位置作为所述一次变量节点运算部分,且保证第K次校验节点更新运算和所述第K-1次变量节点更新运算对该所述译码单元中的点不发生运算冲突。
4.如权利要求1~3中任一所述的译码方法,其特征在于:所述校验矩阵用于对(8176,7154)LDPC码进行译码。
5.如权利要求1~3中任一所述的译码方法,其特征在于:所述校验矩阵共有两行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310063128.8A CN103117751B (zh) | 2013-02-28 | 2013-02-28 | Ldpc译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310063128.8A CN103117751B (zh) | 2013-02-28 | 2013-02-28 | Ldpc译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103117751A CN103117751A (zh) | 2013-05-22 |
CN103117751B true CN103117751B (zh) | 2016-03-02 |
Family
ID=48416038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310063128.8A Active CN103117751B (zh) | 2013-02-28 | 2013-02-28 | Ldpc译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103117751B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104796156B (zh) * | 2014-01-20 | 2019-01-15 | 联想(北京)有限公司 | Ldpc解码器和ldpc解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141788A (en) * | 1998-03-13 | 2000-10-31 | Lucent Technologies Inc. | Method and apparatus for forward error correction in packet networks |
CN1717871A (zh) * | 2002-10-05 | 2006-01-04 | 数字方敦股份有限公司 | 连锁反应码的系统编码和解码 |
-
2013
- 2013-02-28 CN CN201310063128.8A patent/CN103117751B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141788A (en) * | 1998-03-13 | 2000-10-31 | Lucent Technologies Inc. | Method and apparatus for forward error correction in packet networks |
CN1717871A (zh) * | 2002-10-05 | 2006-01-04 | 数字方敦股份有限公司 | 连锁反应码的系统编码和解码 |
Also Published As
Publication number | Publication date |
---|---|
CN103117751A (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101106381B (zh) | 分层的低密度校验码译码器及译码处理方法 | |
CN101192833A (zh) | 一种低密度校验码ldpc并行编码的装置及方法 | |
CN101232288B (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
CN107341133B (zh) | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 | |
CN102306141B (zh) | 一种描述动态可重构阵列配置信息的方法 | |
CN105049060A (zh) | 一种低密度奇偶码ldpc的译码方法及装置 | |
CN111915011B (zh) | 一种单振幅量子计算模拟方法 | |
Varma et al. | Fassem: Fpga based acceleration of de novo genome assembly | |
CN102340320B (zh) | 卷积Turbo码双向并行译码方法 | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
CN108712232A (zh) | 一种用于连续变量量子密钥分发系统中的多码字并行译码方法 | |
CN115658323A (zh) | 基于软硬件协同的fpga潮流计算加速架构和方法 | |
CN105892987A (zh) | 解码器、最小值选择电路及最小值选择方法 | |
CN103117751B (zh) | Ldpc译码方法 | |
CN109687877A (zh) | 一种降低多级循环移位网络级联级数的方法及装置 | |
CN102891726A (zh) | 一种产生Gold序列的方法及芯片 | |
CN103049310A (zh) | 一种基于采样的多核模拟并行加速方法 | |
CN103150157B (zh) | 基于访存分歧的gpu核心程序重组优化方法 | |
CN102594369B (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
CN103634014A (zh) | 一种ldpc编码方法及装置 | |
CN110135067B (zh) | 一种双时间步方法下的直升机流场重叠混合网格并行方法 | |
Smits et al. | Scalable symbolic regression by continuous evolution with very small populations | |
CN103391104A (zh) | 低密度奇偶校验码ldpc编码处理方法及装置 | |
CN104731968A (zh) | 一种单机的大规模数据集的聚类挖掘方法 | |
CN113012760B (zh) | 基于fpga的基因序列组装算法计算加速方法 |
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 |