CN201918982U - 一种ldpc及其缩短码的高速译码装置 - Google Patents
一种ldpc及其缩短码的高速译码装置 Download PDFInfo
- Publication number
- CN201918982U CN201918982U CN2011200276441U CN201120027644U CN201918982U CN 201918982 U CN201918982 U CN 201918982U CN 2011200276441 U CN2011200276441 U CN 2011200276441U CN 201120027644 U CN201120027644 U CN 201120027644U CN 201918982 U CN201918982 U CN 201918982U
- Authority
- CN
- China
- Prior art keywords
- data
- register
- input
- output
- node computing
- 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.)
- Expired - Lifetime
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本实用新型公开了一种LDPC及其缩短码的高速译码装置,包括数据转换和控制模块、数据输出模块、n个中间数据寄存器、n/2个迭代结果寄存器、n个输出数据寄存器、n/2个校验节点运算模块、n/2个比特节点运算模块。采用本实用新型以CCSDS为标准对(8176,7154)码型,在较低成本的硬件平台上实现了对高速数据流的译码,解决了长码长的低密度奇偶校验码在高码率下的译码问题。
Description
技术领域
本实用新型属于编译码技术领域,涉及一种LDPC及其缩短码的高速译码装置。
背景技术
LDPC码最早在20世纪60年代由Gallager在他的博士论文中提出,但限于当时的技术条件,缺乏可行的译码算法,此后的35年间基本上被人们忽略,其间由Tanner在1981年推广了LDPC(低密度奇偶校验码)码并给出了LDPC码的图表示,即后来所称的Tanner图。1993年Berrou等人发现了Turbo码,在此基础上,1995年前后MacKay和Neal等人对LDPC码重新进行了研究,提出了可行的译码算法,从而进一步发现了LDPC码所具有的良好性能,迅速引起强烈反响和极大关注。目前已广泛应用于深空通信、光纤通信、卫星数字视频和音频广播等领域。LDPC码已成为第四代通信系统(4G)强有力的竞争者,而基于LDPC码的编码方案已经被下一代卫星数字视频广播标准DVB-S2采纳。
LDPC信道编码技术首次应用于我国航天领域是在2010年10月1日发射升空的嫦娥二号。其下行数据速率是12M/S,也就是LDPC编译码器均工作在12MHz的频率下。随着我国空间技术的发展,空间探测中各种有效载荷需要下传的数据量会越来越大,这就需要具有良好纠错能力的LDPC码能够有效的适应高码速率的要求。
当前LDPC译码的硬件实现多是基于码长较短的码型(几十到几百比特的码长),且运算速率较低(十几兆到几十兆),而且由于硬件资源的限制,实现功能较强的LDPC译码器需要性能很好的芯片、甚至需要针对特定算法专门设计,硬件实现平台的成本很高,不利于大规模应用。
实用新型内容
本实用新型的技术解决问题是:克服现有技术的不足,提供了一种LDPC译码装置及方法。本实用新型以CCSDS为标准对(8176,7154)码型,在较低成本的硬件平台上实现了对高速数据流的译码,解决了长码长的低密度奇偶校验码在高码率下的译码问题。
本实用新型的技术解决方案是:
一种LDPC及其缩短码的高速译码装置包括:数据转换和控制模块、数据输出模块、n个中间数据寄存器、n/2个迭代结果寄存器、n个输出数据寄存器、n/2个校验节点运算模块、n/2个比特节点运算模块,
数据转换和控制模块的编码数据输出端分别与n个中间数据寄存器和n个迭代结果寄存器的输入端相连;数据转换和控制模块的帧头输出端分别与n个输出数据寄存器的帧头输入端相连;
n个中间数据寄存器按照编号顺序分为1~n/2组,同组的中间数据寄存器的输出端分别与编号相同的一个校验节点运算模块的输入端和一个比特节点运算模块的输入端相连;
n/2个迭代结果寄存器按照编号顺序分为1~n/2组,同组的迭代结果寄存器的输出端与编号相同的一个比特节点运算模块相连的输入端;
n个输出数据寄存器按照编号顺序分为1~n/2组,按照组的编号将输出数据寄存器的输入端分别与n/2个比特节点运算模块的输出端相连;比特节点运算模块同时与两个输出数据寄存器相连;
n个输出数据寄存器的输出端与数据输出模块的输入端相连;并由数据输出模块将译码数据输出。
所述n个中间数据寄存器为双口block RAM。
本实用新型与现有技术相比具有如下优点:
(1)采用2个校验节点模块和16个变量节点模块的半并行数据处理方式,使资源占用和运算效率取得平衡优化。相对于完全串行的处理方式,可以使得在缓存3帧数据的情况下迭代运算次数增加一倍;相对于完全并行的处理方式,可以大量节省芯片资源占用,使得在较低端芯片上实现此规模的译码成为可能。另外,以此种方法为基础,为相邻两帧数据分配独立的运算单元,在少量增加硬件资源支出的情况下可以进一步提高系统的工作频率。根据实际工程需求,对时序控制部分作适当修改,还可以在降低工作频率百分之五十的情况下再增加一倍的迭代次数,提供更优的译码效果。
(2)采用半并行的数据处理方式也会产生大量的中间数据。如果在对码长较短LDPC码进行译码的情况下,可以采用FPGA的片内寄存器资源进行临时存储。但对(8176,7154)这种码长较长的LDPC码进行译码,片内的寄存器资源就会不足,而且运算中频繁的对不同位置的寄存器进行读写访问也会降低系统的工作频率。基于此,设计中采用了BlockRam作为中间数据的存储,有效利用FPGA内部的专用电路从而大量节省了逻辑和布线资源,解决了以上问题。另外,由于BlockRam寻址读写的特点,也增加了设计的可移植性。
(3)多层流水线结构的控制方式实际上是对半并行的数据处理方式的一种优化。从数据流状态上看,这种并行结构是动态的,在提高系统工作频率的同时,解决了译码数据流输入、输出的连贯问题。
附图说明
图1为本实用新型结构示意图;
图2为Min-sum算法校验矩阵Tanner图;
图3为校验节点运算示意图;
图4为本实用新型工作流程图。
具体实施方式
下面就结合附图对本实用新型做进一步描述。
LDPC码的译码算法有:
1.SPA(Sum-Product Algorithm),Probability-domain;
2.SPA,Log-domain;
3.Min-sum(Log-domain SPA的简化算法),及其各种修正版本;
4.BF(Bit-Flipping);
5.MLG(Majority-Logic),只对循环LDPC码可以应用。
以上所列的算法,复杂性和误码性能依次降低。其中,Probability-domainSPA计算太过复杂,BF算法和MLG算法不能提供良好的误码性能,实际中均不宜采用。可以使用的几种算法中,修正的Min-sum算法误码性能可以接近SPA,又有相对低的复杂度,因此,经综合考虑本设计采用了修正的Min-sum算法。
Min-sum算法译码迭代实施方式:
Min-sum算法基于LDPC码校验矩阵H的Tanner图进行迭代译码。我们以如下校验矩阵为例来说明它的运算过程。H的Tanner图如图2所示。想象ci和fj分别为校验节点和变量节点的运算单元,ci和fj之间的连线为双向通道,记从ci和fj的连线(即ci的输出,fj的输入)为qij;从fj到ci的连线(即fj的输出,ci的输入)为rji。
Min-sum首先初始化fj的输入qij。qij经fj运算后输出rji,再经ci运算后输出更新qij,完成一次迭代。直到解出正确的码子,或者达到预先设定的最大迭代次数,结束整个迭代过程,解码完毕。具体步骤如下:
1.初始化qij:接收到的含噪声(Var=σ2)的码子γ=(γ0,γ1,…,γ9),将qi=2γi/σ2作为原始输入,并将所有qij初始化为:
qij=qi=2γi/σ2
2.运算单元fj:f0为5输入5输出,其余的fj均为4输入4输出。输出与输入的关系为:
即每个输出的符号为除去相应的输入qij外,其他输入的符号的乘积;每个输出的大小为:
r21=∏(sign(q42),sign(q72),sign(q82))·min(|q42|,|q72|,|q82|)
运算单元ci:c7为3输入3输出的运算单元,其余所有的ci均为2输入2输出。具体关系说清楚,,输入与输出的关系为:
qij=Qi-rij
即每个输出为除去相应的输入外,其他输入的和,再加上该运算单元ci所对应的原始输入qi=2γi/σ2。中间结果Qi为下一步判断码子做准备。以c7为例,见图3,输出到f0的q70为:
Q7=r07+r27+r37+2γ7/σ2
q70=Q7-r07=r27+r37+2γ7/σ2
4.计算码子与判断停止条件:步骤2和3完成了一次迭代,此时用Qi作判决码子:
如果ciHT=0,即译码成功,或者达到了预先设定的最大迭代次数,则停止迭代,否则,继续步骤2和3。
NASA在2005年9月提出了一种由有限几何方法构造的(8176,7154)LDPC码,并于2006年5月将其确定为取代R-S加卷积码的常规信道编码标准。CCSDS(The Consultative Committee for Space Data Systems,太空数据系统咨询委员会)于2006年8月发表的技术文件推荐该码为近地应用的标准编码(参考:《CCSDS 131.1-0-1,Aug 2006》)。
该码有如下特点:
1、有限几何码,可在BER=10-10时不出现error-floor;
2、有限几何码,有很快的迭代译码收敛速度;
3、准循环码,系统码,可用逻辑电路实现,不需要实数运算;
4、码率7/8,不明显增加传输带宽。
基于以上特点,本实用新型采用了由有限几何方法构造的(8176,7154)LDPC码。
硬件实现采用xilinx公司的可编程逻辑器件,充分利用其中的Ram资源代替查找表。采用流水线的控制方式,复用算法中关键的逻辑功能部分,有效的提高工作频率,降低了资源占用率。
译码采用Min-sum算法进行。其核心是校验节点运算和变量节点运算,主要问题是在对码长比较长的LDPC码进行译码的时候,要进行的运算量很大,同时产生大量的中间数据需要存储。以一帧长8176bits为例,进行一次迭代就需要进行1022次校验节点运算和8176次变量节点运算,而完成一帧数据的译码需要进行10迭代。
根据LDPC校验矩阵的特点,采用了以下方法实现了对100Mbps数据流的连续译码:
2组校验节点运算并行,和串行结构相比,降低一半校验节点运算周期;16组变量节点运算并行,和串行结构相比,降低一半变量节点运算周期;流水线控制运算时序,提高了数据的处理能力,提高系统工作速度;
两帧数据复用一组校验节点运算模块和变量节点运算模块,降低了资源占用率;
利用FPGA内部Ram取代寄存器存储中间数据;
按照功能划分,本实用新型的译码装置包括数据转换和控制模块、数据输出模块、n个中间数据寄存器、n个迭代结果寄存器、n个输出数据寄存器、n/2个校验节点运算模块、n/2个变量节点运算模块。具体结构如图1所示,以下分别说明各部分的实现功能:
数据转换和控制模块
LDPC译码的控制核心,完成对原始输入数据的格式转换,控制中间数据寄存器、迭代结果寄存器和输出数据寄存器的输入选择、地址选择、读写操作;分配数据流走向;控制所有功能单元的时序。
数据存储模块
数据存储模块包括中间数据寄存器、迭代结果寄存器、输出数据寄存器三部分。为迭代运算提供临时的存储空间,当前帧完成运算后分配给下一帧使用,是数据交换的节点。
中间数据寄存器、迭代结果寄存器、输出数据寄存器采用blcok ram进行实现。blcok ram是FPGA中的特定资源,可以实现双口的同时读取,且不占用FPGA中的其他查找表资源(look-up table)。
校验节点运算模块
完成校验节点运算。在CCSDS建议的(8176,7154)LDPC码下,其核心是32个7bits数据输入,计算其中的最小值和次小值,把次小值赋给原来最小值位置的数据,把最小值赋给其余数据,输出还是32个7bits数据。可以根据数据转换和控制模块给出的数据输入选择信号对输入的两组32个7bits数据中的一组进行计算。
在具体实现时,校验节点运算模块由包括4个子模块,其作用是在8个输入数据中选择其中的最小值和次小值输出,并输出最小值数据的位置。
变量节点运算模块
完成变量节点运算。同样CCSDS建议的(8176,7154)LDPC码,根据计算输入的5个7bits位宽数据,计算输入数据的和并输出;计算和值与各位置数据的差并输出;缩短数值过大的数据。
数据输出控制模块
多路选择器,根据数据转换和控制单元给出的输入数据选择信号依次连续输出4帧译码后数据。
如图4所示,为本实用新型装置工作流程图。译码装置前端的解调器输出的同步数据流可以是单比特(对应硬判决译码),也可以是多比特量化(对应软判决译码)。数据进入译码装置后,时序控制模块先对数据格式进行转换,将原始数据(编码数据)的原码输出给中间数据寄存器和将补码输出给迭代结果寄存器。并根据CCSDC建议的校验矩阵的结构特点,将一帧的数据存储在32个中间数据寄存器和16个迭代结果寄存器内。当所有数据写入完毕后,对中间数据寄存器和迭代结果寄存器的地址进行置位,开始同时将32个中间数据寄存器对应地址的数据读取至校验节点运算模块,待校验节点运算完毕后,用此结果更新之前输入的数据。采用两组校验节点运算模块同时工作的方式,一共对1022组数据进行校验节点运算,完成对一帧数据的一次校验运算更新。然后再对32个中间数据寄存器和16个迭代结果寄存器的地址进行置位,同时将32个中间数据寄存器和16个迭代结果寄存器对应地址的数据读取至变量节点运算模块,待变量节点运算完毕后,用此结果更新之前输入的数据。采用16个变量节点运算模块同时工作的方式,一共对8176组数据进行变量节点运算,完成对一帧数据的一次变量运算更新。
以上是对一帧数据进行一次完整的迭代运算的过程,经过10次这样的迭代过程,一帧数据的译码结束。为了达到较高的速率,同时采用了并行、缓存、流水线处理的方法进行数据处理。当第一帧原始数据读取完毕开始进行处理的同时,第二帧原始数据开始读入,存储到第二组32个中间数据寄存器和16个迭代结果寄存器内,第三、四帧原始数据的读入过程相同,即在原始数据的输入过程中是第一至四帧依次进入流水线结构,每帧数据各自占用一组中间数据寄存器和迭代结果寄存器。在第一帧数据进行译码的同时,从第一帧数据所进行的操作看,另外三帧数据相当于缓存在中间数据寄存器和迭代结果寄存器内。实际上从整个数据流的循环处理过程来看,任何一帧数据的译码过程都与另外三帧数据的缓存相对应。接下来,第二、三、四帧数据依次进入迭代译码的流水线过程进行处理。当数据流源源不断地输入时,不仅每帧内部的校验节点运算和变量节点运算是并行的,而且帧和帧之间数据处理也是并行的。可以看出在任一时刻,都会有一帧数据处于输入/输出状态,另外三帧数据处于迭代译码状态。从时序控制的角度看,每帧数据的处理过程均由状态机控制,从原始数据的输入到译码结果的输出,共约50个状态;以四帧数据为一个周期作循环译码,处理连续数据流需要经历200种状态组合。
本实用新型未详细说明部分属本领域技术人员公知常识。
Claims (2)
1.一种LDPC及其缩短码的高速译码装置,其特征在于包括:数据转换和控制模块、数据输出模块、n个中间数据寄存器、n/2个迭代结果寄存器、n个输出数据寄存器、n/2个校验节点运算模块、n/2个比特节点运算模块,
数据转换和控制模块的编码数据输出端分别与n个中间数据寄存器和n个迭代结果寄存器的输入端相连;数据转换和控制模块的帧头输出端分别与n个输出数据寄存器的帧头输入端相连;
n个中间数据寄存器按照编号顺序分为1~n/2组,同组的中间数据寄存器的输出端分别与编号相同的一个校验节点运算模块的输入端和一个比特节点运算模块的输入端相连;
n/2个迭代结果寄存器按照编号顺序分为1~n/2组,同组的迭代结果寄存器的输出端与编号相同的一个比特节点运算模块相连的输入端;
n个输出数据寄存器按照编号顺序分为1~n/2组,按照组的编号将输出数据寄存器的输入端分别与n/2个比特节点运算模块的输出端相连;比特节点运算模块同时与两个输出数据寄存器相连;
n个输出数据寄存器的输出端与数据输出模块的输入端相连;并由数据输出模块将译码数据输出。
2.根据权利要求1所述的一种LDPC及其缩短码的高速译码装置,其特征在于:所述n个中间数据寄存器为双口block RAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011200276441U CN201918982U (zh) | 2011-01-27 | 2011-01-27 | 一种ldpc及其缩短码的高速译码装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011200276441U CN201918982U (zh) | 2011-01-27 | 2011-01-27 | 一种ldpc及其缩短码的高速译码装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN201918982U true CN201918982U (zh) | 2011-08-03 |
Family
ID=44418770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011200276441U Expired - Lifetime CN201918982U (zh) | 2011-01-27 | 2011-01-27 | 一种ldpc及其缩短码的高速译码装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN201918982U (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857324A (zh) * | 2012-09-27 | 2013-01-02 | 苏州威士达信息科技有限公司 | 基于查找表的深空通信中ldpc串行编码器和编码方法 |
CN107615666A (zh) * | 2015-09-16 | 2018-01-19 | 华为技术有限公司 | Ldpc截短码的译码方法和译码设备 |
-
2011
- 2011-01-27 CN CN2011200276441U patent/CN201918982U/zh not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857324A (zh) * | 2012-09-27 | 2013-01-02 | 苏州威士达信息科技有限公司 | 基于查找表的深空通信中ldpc串行编码器和编码方法 |
CN102857324B (zh) * | 2012-09-27 | 2014-12-10 | 苏州威士达信息科技有限公司 | 基于查找表的深空通信中ldpc串行编码器和编码方法 |
CN107615666A (zh) * | 2015-09-16 | 2018-01-19 | 华为技术有限公司 | Ldpc截短码的译码方法和译码设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102075198B (zh) | 准循环低密度奇偶校验卷积码编译码系统及其编译码方法 | |
CN101106381B (zh) | 分层的低密度校验码译码器及译码处理方法 | |
CN100425000C (zh) | 双涡轮结构低密度奇偶校验码解码器及解码方法 | |
CN101188426B (zh) | 用于对准循环结构的ldpc码进行并行处理的译码器及方法 | |
CN101478314A (zh) | 一种里德-所罗门编码译码器及其译码的方法 | |
CN102932003A (zh) | 基于gpu架构的qc-ldpc码的加速译码方法 | |
CN101232288A (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
CN101777921B (zh) | 用于显式存储片上系统的结构化ldpc码译码方法及装置 | |
CN102281125A (zh) | 分层分块非规则低密度校验码译码器及译码方法 | |
CN102340320B (zh) | 卷积Turbo码双向并行译码方法 | |
CN100542049C (zh) | 一种多码率的ldpc码的译码器装置及译码方法 | |
CN103916134B (zh) | 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器 | |
WO2022116799A1 (zh) | 一种具有单置换网络的分层半并行ldpc译码器系统 | |
CN105680879A (zh) | 兼容dvb-s2x标准的ldpc译码器设计方法 | |
CN101599302A (zh) | 一种基于fpga的ldpc译码器的译码码字的高效存储方法 | |
CN109586733A (zh) | 一种基于图形处理器的ldpc-bch译码方法 | |
CN102291153A (zh) | Cmmb中ldpc码的译码算法及部分并行译码器 | |
CN103220002A (zh) | 一种消除译码器访问冲突的准循环ldpc码构造方法 | |
CN201918982U (zh) | 一种ldpc及其缩短码的高速译码装置 | |
KR101657912B1 (ko) | 비이진 저밀도 패리티 검사 코드의 복호화 방법 | |
CN102118173B (zh) | 一种ldpc及其缩短码的高速译码方法 | |
CN101958718B (zh) | 用于ldpc码的改进型半并行译码器和译码方法 | |
CN102412844B (zh) | 一种ira类ldpc码的译码方法及译码装置 | |
CN102594369B (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
CN101640543A (zh) | 一种ldpc码的编码装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20110803 |