CN103220003B - 提高节点处理并行度的qc-ldpc译码器的实现方法 - Google Patents
提高节点处理并行度的qc-ldpc译码器的实现方法 Download PDFInfo
- Publication number
- CN103220003B CN103220003B CN201310108666.4A CN201310108666A CN103220003B CN 103220003 B CN103220003 B CN 103220003B CN 201310108666 A CN201310108666 A CN 201310108666A CN 103220003 B CN103220003 B CN 103220003B
- Authority
- CN
- China
- Prior art keywords
- data
- check
- bits
- node information
- memory block
- 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
本发明涉及提高节点处理并行度的QC‑LDPC译码器的实现方法,译码器包括变量节点信息更新单元VNU,变量节点信息打包单元VP,校验节点信息更新单元CNU,校验节点信息打包单元CP,校验方程计算单元PCU,存储位宽均为(Qh)bits的存储块RAM_f和RAM_m,存储位宽为hbits的存储块RAM_c,本方法采用节点信息打包单元可以有效地实现存储器批量数据的同时读入和写出,解决存储器访问冲突问题。通过增加存储器每个地址单元中存储的数据个数,可以提高LDPC译码器处理单元的并行度,本发明QC‑LDPC译码器的实现方法具有吞吐量高,硬件资源少,设计复杂性低等特点。
Description
技术领域
本发明涉及数字通信信道编码领域,特别是涉及一种提高节点处理并行度的QC-LDPC译码器的设计方法。
背景技术
对于LDPC码译码器的设计,理论上可以根据二部图中的所有节点及边线实现全并行结构的LDPC码译码器,但随着码长的增长,过高的布线复杂度及庞大的资源需求量将导致全并行结构的译码器难以实现。采用串行结构虽然可以减少硬件资源的消耗量,但较低的译码吞吐量通常不能满足实际应用的需求。2001年Kou等人(Y.Kou,S.Lin,andM.P.C.Fossorier,“Low-density parity-check codes based on finite geometries:Arediscovery and new results,”IEEE Trans.Inform.Theory,2001,47(7):2711–2736)提出了准循环结构的LDPC(QC-LDPC)码。通过合理的构造方法,QC-LDPC码能够获得与随机构造的LDPC码相比拟的性能,并且由于其校验矩阵的准循环特性,QC-LDPC码能够采用部分并行结构设计出基于长码的高吞吐量译码器,实现硬件资源需求量和译码吞吐量的有效折中。
公式(1)给出了一个由m×n个L×L的循环矩阵Ai,j(方阵中每一行的内容向右循环移动一个元素,就获得了矩阵的下一行内容,最后一行内容向右循环移动一个元素,就获得了矩阵的第一行内容)构成的大小为M×N的QC-LDPC校验矩阵。
一个LDPC码译码器的核心处理部分主要包括校验节点消息更新单元CNU、变量节点消息更新单元VNU和校验方程计算单元PCU,来分别完成校验节点消息的更新运算、变量节点消息的更新和译码伴随式的计算,但这三个运算单元中涉及大量的中间消息必须同时读出或写入到译码器的各个存储单元中,且当VNU按顺序访问存储器时,CNU访问存储器地址应与校验矩阵非零位置相对应,由于两者的地址不一样,会导致存储器访问冲突问题,图1给出了采用部分并行结构的传统QC-LDPC码译码器,是按照准循环LDPC校验矩阵的分块来选择并行度数的,即校验节点消息更新单元CNU设置为m路并行,变量节点消息更新单元VNU设置为n路并行,如果按照这种方式来设置译码器的并行度,每个LDPC校验矩阵分块Ai,j占用一块存储块,那么CNU、VNU或PCU工作时,只需要从该存储块读出和写入一个数据,双端口RAM刚好可以实现这样的读写功能。这样就可以避免消息的存储器访问冲突。如果再增加节点消息更新单元的并行度数,就会引入存储单元冲突问题。
然而,随着现阶段通信数据量需求的增加,按照这种准循环LDPC校验矩阵的分块来选择并行度数的译码器,已经无法满足各个通信用户的需求。因此,在每次处理时需要进一步增加节点运算单元的数目,来提高译码吞吐量。
对于实现更高速的译码器,文献(张仲明,许拔,杨军,张尔扬,800Mbps准循环LDPC码译码器的FPGA实现,信号处理,第26卷,第2期,2010年2月)利用码变换的方法,通过对准循环LDPC码的校验矩阵做行与列的重新排列得到一种块准循环LDPC码,针对块准循环LDPC码提出了一种高吞吐量的部分并行译码器结构。这种方法改变了校验矩阵的结构,且只能针对某类特定结构的QC-LDPC码。
发明内容
本发明的目的在于克服现有技术的上述不足,提供一种提高节点处理并行度的QC-LDPC译码器的实现方法,以达到吞吐量高,硬件资源少,设计复杂性低等特点。
本发明的上述目的主要是通过如下技术方案予以实现的:
提高节点处理并行度的QC-LDPC译码器的实现方法,QC-LDPC译码器包括变量节点信息更新单元VNU,变量节点信息打包单元VP,校验节点信息更新单元CNU,校验节点信息打包单元CP,校验方程计算单元PCU,存储位宽均为(Qh)bits的存储块RAM_f和RAM_m,存储位宽为h bits的存储块RAM_c,具体实现方法包括如下步骤:
(1)初始化
接收位宽为(Qh)bits的信道信息存储到存储块RAM_f中,将RAM_m初始化为全零,设定初始化迭代次数iter=0,最大迭代次数iter=MAX_ITER;其中:Q为量化比特数,h为并行路数;
(2)变量节点的更新
变量节点信息更新单元VNU对从存储块RAM_f和RAM_m读出的(Qh)bits的数据进行处理后得到更新的(Qh)bits输出数据给变量节点信息打包单元VP,同时输出h bits的输出数据给存储块RAM_c进行存储;变量节点信息打包单元VP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(3)校验节点的更新
校验节点信息更新单元CNU对从存储块RAM_m读出(Qh)bits的数据进行处理后得到更新的(Qh)bits的输出数据给校验节点信息打包单元CP;校验节点信息打包单元CP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(4)校验方程计算
校验方程计算单元PCU从存储块RAM_c读出h bits的码字信息进行计算处理后得到伴随式向量s;本次迭代结束,迭代次数iter加1;
(5)判决译码器是否结束
判断伴随式向量s是否为0或者迭代次数iter是否达到MAX_ITER;若s=0,则表示此次更新的译码码字为许用码字,转步骤(6);若s≠0且iter=MAX_ITER,则停止迭代,译码失败,转步骤(6);若s≠0且iter≠MAX_ITER,转步骤(2)开始继续迭代;
6)译码器输出
从存储块RAM_c中读出数据即为需要输出的译码码字;
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,步骤(2)中变量节点信息更新单元VNU包括h个变量节点信息更新子单元VNUk并行工作,每个变量节点信息更新子单元VNUk的输入分别为(Qh)bits的数据分离出来的Qbits的外信息,其中每个变量节点信息更新子单元VNUk采用5级流水线进行数据处理,具体为:第1级流水线将输入的Qbits的外信息和信道信息原码转换为补码,并将输入的Qbits的外信息延迟;第2级流水线继续将Qbits的外信息延迟,并将Qbits的外信息和信道信息求和;第3级流水线将所述的和值延迟,并将所述和值与所述的Qbits的外信息分别求差;第4级流水线对所述差值进行截位处理,并继续将所述和值延迟;第5级流水线将截位处理后的数据由补码转换为原码输出,并取出和值的符号作为码字信息输出。
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,步骤(3)中校验节点信息更新单元CNU包括h个校验节点信息更新子单元CNUk并行工作,每个校验节点信息更新子单元CNUk的输入分别为(Qh)bits的数据分离出来的Qbits的外信息,其中每个校验节点信息更新子单元CNUk采用5级流水线进行数据处理,具体为:第1级流水线用来分离出输入的Qbits的外信息的符号位和绝对值,第2级流水线求输入的Qbits的外信息的符号位的和值及将所述的符号位进行延迟,并求出第1级流水线分离出的绝对值的最小值和次小值,及将所述的绝对值进行延迟;第3级流水线继续将所述符号位、绝对值、符号位的和值、最小值及次小值分别进行延迟,并求出最小值、次小值分别与归一化修正因子alpha相乘的结果;第4级流水线对第3级流水线输出的所有符号位分别与符号位的和值求和,并将第3级流水线输出的所有绝对值与最小值进行比较并选择输出;第5级流水线将第4级流水线的所有输出进行合并后输出。
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,第4级流水线对第3级流水线输出的所有符号位分别与符号位的和值求和,并将第3级流水线输出的所有绝对值与最小值进行比较,若绝对值为最小值,选择次小值与归一化修正因子alpha相乘的结果作为输出;若绝对值不为最小值,选择最小值与归一化修正因子alpha相乘的结果作为输出。
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,步骤(4)中校验方程计算单元PCU包括h个校验方程计算子单元PCUk并行工作,每个校验方程计算子单元PCUk的输入分别为h bits的数据分离出来的1bits的码字信息,其中每个校验方程计算子单元PCUk采用1级流水线进行计算处理,输入的码字信息在1级流水线中求异或得到伴随式向量s,通过延迟将伴随式向量s中的所有元素相加,得到和V,当V=0时,伴随式向量s为零。
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,步骤(2)中变量节点信息打包单元VP将dh-w,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dh-w-1路并行数据组合为并行的h路数据后输出给存储块RAM_m存储。
在上述提高节点处理并行度的QC-LDPC译码器的实现方法中,步骤(2)中校验节点信息打包单元CP将dw,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dw-1组合为并行的h路数据后输出给存储块RAM_m存储。
本发明与现有技术相比具有如下优点:
(1)本发明的LDPC译码器采用并行数据输入并行数据处理的设计方案,能够克服传统串行译码器低吞吐量限制系统速率的瓶颈,具有吞吐量高的特点;
(2)本发明LDPC译码器输入为并行的多路数据,LDPC译码器内部直接对并行的多路数据进行译码,无需串并变换,与现有的译码器相比可以节省串并变换部分的FIFO存储资源,及给FIFO提供时钟的DCM资源,节省了硬件资源;
(3)本发明的LDPC译码器通过采用信息打包单元,实现了对存储器批量数据的同时读入和写出,有效地解决了VNU,CNU访问存储器时的地址冲突问题,通过增加存储器每个地址单元中存储的数据个数,来提高LDPC译码器处理单元的并行度,从而提高了译码器的高吞吐量;
(4)本发明处理单元VNU,CNU,PCU均采用流水线的设计方法来实现,有效地降低了译码器的关键路径延迟,为提高LDPC译码器的吞吐量提供了必要的保障。
(5)本发明译码器的实现方法吞吐量高,硬件资源少,设计复杂性低,对任何结构的QC-LDPC码都能实现高并行度的译码,具有较强的实用性;
本发明技术方案已在数字通信接收机上成功运用并通过相关数字通信系统测试。
附图说明
图1为传统的QC-LDPC码译码器结构;
图2为本发明高并行度QC-LDPC译码器处理模块框图;
图3(a)为本发明offsetij=3时的变量节点信息打包单元(VP)的实现电路;
图3(b)为本发明offsetij=3时的校验节点信息打包单元(CP)的实现电路;
图4(a)为本发明offsetij时的变量节点信息打包单元(VP)的实现电路;
图4(b)为本发明offsetij时的校验节点信息打包单元(CP)的实现电路;
图5为本发明5-输入VNUk的流水线结构图;
图6为本发明32-输入CNUk的流水线结构图;
图7为本发明PCUk的实现结构图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细描述:
如图2所示为本发明高并行度QC-LDPC译码器处理模块框图,由图2可知本发明的译码器包括存储位宽均为(Qh)bits(即Q×h,Q为量化比特数,h为并行路数)的存储块RAM_f和RAM_m,存储位宽为hbits的存储块RAM_c,变量节点信息更新单元(VNU),变量节点信息打包单元(VP),校验节点信息更新单元(CNU),校验节点信息打包单元(CP)和校验方程计算单元(PCU)。译码器接收、处理和输出的均为h路并行数据,工作在同样的时钟频率的情况下,本发明的这种LDPC译码器处理单元的并行度是按照QC-LDPC校验矩阵的分块来选择并行度数的译码器并行度的h倍,吞吐量的h倍。
在存储器的访问上,VNU和CNU对RAM_m的读写是一种开关切换式的访问方法,VNU工作时RAM_m的访问权由VNU模块控制,CNU工作时RAM_m的访问权则由CNU模块控制。每个校验矩阵子分块的L个外信息数据存储在与其对应的RAM_mij中。下面以offsetij=3(表示其中的QC-LDPC校验矩阵的第i行第j列分块Ai,j的首行向量非零元素的列号为2),L=15(表示Ai,j是一个L×L的循环矩阵),h=4(输入数据的并行路数)为例来说明本文的信息打包单元的实现方法。
VNU和CNU对h路数据并行处理时,在访问存储器RAM_m时,为了不产生地址冲突问题,VNU工作时,RAM_m里面数据的存储顺序应为表1的顺序。
表1.VNU工作时RAM_m的数据顺序
0,1,2,3 |
4,5,6,7 |
8,9,10,11 |
12,13,14,(0) |
而CNU工作时,RAM_m里面数据的存储顺序应为表2的顺序。
表2.CNU工作时RAM_m的数据顺序
3,4,5,6 |
7,8,9,10 |
11,12,13,14 |
(0),0,1,2, |
VNU工作后RAM_m的数据顺序应调整为表2的顺序,该功能是由变量节点信息打包单元(VP)来完成,实现电路如图3(a)所示。CNU工作后RAM_m的数据顺序应调整为表1的顺序,该功能是由校验节点信息打包单元(CP)来完成,实现电路如图3(b)所示。
由于offsetij的值介于0到L-1之间,设(offsetij mod h)=w。当采用h路数据并行处理时,变量节点信息打包单元(VP)的实现电路如图4(a)所示,校验节点信息打包单元(CP)的实现电路如图4(b)所示。可见,变量节点信息打包单元(VP)需要将dh-w,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dh-w-1组合为并行的h路数据后输出即可。校验节点信息打包单元(CP)需要将dw,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dw-1组合为并行的h路数据后输出即可。
下面以QC-LDPC码的行重为32,列重为4的情况来说明变量节点信息更新单元(VNU)和校验节点信息更新单元(CNU)的功能。
变量节点信息更新单元(VNU)包括h个VNUk并行工作,变量节点信息更新子单元VNUk的输出与输入的关系为:outi=sum-ini,i=1,2,3,4,其中sum为输入的5个数的和。实现VNU的流水线结构如图5所示,图5中的虚线表示流水线,VNU的所有输入和输出均采用原码来表示,图5中,f和c分别表示信道信息和码字信息,in1,……,in4表示外信息,加法器阵列的主要功能是求出5个输入数据的和sum,减法器阵列是sum分别减去4个输入外信息数据。为了避免精度丢失,中间处理数据的位宽比输入输出的位宽宽,为了得到输出数据,必须采用截位模块对中间数据进行截位(截位处理方法请见文献G.Montorsi,S.Benedetto,“Design of fixed-point iterative decoders for concatenated codes withinterleavers,”IEEE J.on Selected Areas in Commun.,vol.19,no.5,May2001,pp.871-882.)。对于求多于两个数据的和时,为了进一步降低关键路径延迟,需要再细化流水线,即在第2级流水线中再插入流水线。
每个变量节点信息更新子单元VNUk采用5级流水线进行数据处理,具体为:第1级流水线将输入的Qbits的外信息和信道信息原码转换为补码,并将输入的Qbits的外信息延迟;第2级流水线继续将Qbits的外信息延迟,并将Qbits的外信息和信道信息求和;第3级流水线将所述的和值延迟,并将所述和值与所述的Qbits的外信息分别求差;第4级流水线对所述差值进行截位处理,并继续将所述和值延迟;第5级流水线将截位处理后的数据由补码转换为原码输出,并取出和值的符号作为码字信息输出。
校验节点信息更新单元(CNU)包括h个CNUk并行工作,校验节点信息更新子单元CNUk的输出与输入的关系为:
sign(x)表示求x的符号,alpha为归一化修正因子,为一常数,min表示所有输入数据绝对值的最小值,sub_min表示所有输入数据绝对值的次小值。
实现CNU的流水线结构如图6所示,可以看到CNU的结构由上下两部分组成,上部分主要是对输入数据的符号进行运算,下部分主要是对输入数据的绝对值(即数值大小)进行运算,CNU总体上插入了5级流水线,第1级流水线用来分离出输入数据的符号位和绝对值,第2级流水线求32个符号位的和sign32(对于求1bit数据的和在硬件实现时采用异或xor操作),及将32个符号位进行延迟,并求出32个绝对值的最小值和次小值,及将32个绝对值进行延迟;第3级流水线继续将32个符号位、32个绝对值、sign32、最小值及次小值分别进行延迟,并求出最小值、次小值分别与alpha相乘的结果;第4级流水线对sign32与32个符号位分别进行求和得到32个输出,并根据32个绝对值与最小值的关系得到32个输出(若外信息的绝对值为最小值,选择次小值与归一化修正因子alpha相乘的结果作为输出;若外信息的绝对值不为最小值,选择最小值与归一化修正因子alpha相乘的结果作为输出);第5级流水线将对32个符号位运算的输出与对32个绝对值位运算的输出分别进行合并(符号位作为高位,绝对值作为其他位)得到32个CNU的输出。
为了进一步提高处理速度,需要再细化流水线,即在第2级和第3级流水线中再插入流水线。第二级流水线,需要求出32个非负数的最小值和次小值,又采用了再细化流水线的方法,将其划分为具有4级流水线的求4个数的最小值和次小值的方法,如图6所示为本发明32-输入CNUk的流水线结构图,第三级流水线,处理的是将data与alpha相乘,本实施例选择的alpha=0.75,data*0.75=(data/2)+(data/4),即data*0.75等价于将data右移一位的值与data右移二位的值相加。这样在FPGA中通过移位运算和加法运算就可以实现定点数与浮点数的乘法了。即可以在第三级流水线中插入两级流水线来提高CNU的总体处理速度。
PCU的功能是将码字与校验矩阵相乘,产生伴随式向量s。PCU包括h个校验方程计算子单元PCUk并行工作,每个校验方程计算子单元PCUk的输入分别为h bits的数据分离出来的1bits的码字信息,其中每个校验方程计算子单元PCUk采用1级流水线进行计算处理,输入的码字信息在1级流水线中求异或得到伴随式向量s,通过延迟将伴随式向量s中的所有元素相加,得到和V,如图7所示为本发明PCUk的实现结构图,显然,只有当V=0时,伴随式向量s才为零。图7的这种实现方法不需要采用寄存器资源来存储长位宽的伴随式向量s,也不需要进行长位宽数据与零向量的比较(造成很大的延迟)。对于图7中的32个数求异或xor的操作,可以进一步细化流水线。
本发明提高节点处理并行度的QC-LDPC译码器的实现方法,具体包括如下步骤:
(1)初始化
接收位宽为(Qh)bits的信道信息存储到存储块RAM_f中,将RAM_m初始化为全零,设定初始化迭代次数iter=0,最大迭代次数iter=MAX_ITER;
(2)变量节点的更新
变量节点信息更新单元VNU对从存储块RAM_f和RAM_m读出的(Qh)bits的数据进行处理后得到更新的(Qh)bits输出数据给变量节点信息打包单元VP,同时输出h bits的输出数据给RAM_c进行存储;变量节点信息打包单元VP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(3)校验节点的更新
校验节点信息更新单元CNU对从存储块RAM_m读出(Qh)bits的数据进行处理后得到更新的(Qh)bits的输出数据给校验节点信息打包单元CP;校验节点信息打包单元CP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(4)校验方程计算
校验方程计算单元PCU从存储块RAM_c接收码字信息B0进行计算处理后得到伴随式向量s;本次迭代结束,迭代次数iter加1;
(5)判决译码器是否结束
判断伴随式向量s是否为0或者迭代次数iter是否达到MAX_ITER;若s=0,则表示此次更新的译码码字为许用码字,转步骤(6);若s≠0且iter=MAX_ITER,则停止迭代,译码失败,转步骤(6);若s≠0且iter≠MAX_ITER,转步骤(2)开始继续迭代;
6)译码器输出
从存储块RAM_c中读出数据即为需要输出的译码码字。
实施例1
采用本专利提出的提高节点处理并行度的QC-LDPC译码器的设计方法,下面以LDPC(8176,7154)为例来详细说明本发明。
如图2所示,LDPC(8176,7154)是一个QC-LDPC码(即准循环移位LDPC码),它的校验矩阵是由2×16个L×L(L=511)的循环矩阵构成的,该校验矩阵大小为M×N=1022×8176,Ai,j是一个511×511的循环矩阵,Ai,j的每行每列中均有两个非零元素,即Ai,j的行重为2,所以该校验矩阵的行重为2×16=32,列重为2×2=4。校验矩阵结构如下:
对于这个QC-LDPC(8176,7154)译码器,当对并行的h=4路输入数据处理时。需要16个RAM_f存储系列和16×2×2=64个RAM_m存储系列,每个存储器的位宽均为(Qh)bits,当节点信息采用Q=8比特量化时,即8*4=32bits。16个变量节点处理单元VNU,2个校验节点处理单元CNU和2个校验方程计算单元PCU。每个节点处理单元均包含4个节点处理子单元。具体实现过程按照上面步骤描述。
上述结构相对于按照QC-LDPC校验矩阵的分块来选择并行度数的部分并行译码器架构方式,其节点消息更新单元的并行度数提高了h倍,但采用了本文的这种信息存储方式后,不会引入存储单元冲突问题。
本发明采用对比文件1(张仲明,许拔,杨军,张尔扬,800Mbps准循环LDPC码译码器的FPGA实现,信号处理,第26卷,第2期,2010年2月)中同样的码QC-LDPC(8176,7154)码、同样的Xilinx FPGAXC5VLX330-1FPGA,表3给出了本发明提出的提高节点处理并行度的QC-LDPC译码器的实现方法与对比文件1实现结果资源的比较:
表3.本发明帧同步器与对比文件1帧同步器资源比较
译码器 | Register | LUT | Slice | Block RAM | 吞吐量 |
本发明 | 47,728(23%) | 29,762(14%) | 15,033(29%) | 86(29%) | 1.2Gbps |
文献1 | 58,190(28%) | 44,362(21%) | 18,586(35%) | 168(58%) | 800Mbps |
如表3所示。本发明译码器的实现方法比对比文件1的译码器在slices资源和BRAM都具有很大的优势,本发明实现的译码器的存储资源能比对比文件1的译码器降低一半多,这主要取决于本发明所采用的提高并行度的QC-LDPC译码器的架构和信息存储解决方法,这种存储方式在多个节点更新单元可以访问相同的存储器地址,通过存储器地址的共享节省了slices资源。本发明译码器的低关键路径延迟和高吞吐量主要取决于VNU,CNU,PCU的流水线的设计方法和资源占用少且高速的实现PCU的结构。可见,本发明提出的这种提高节点处理并行度的QC-LDPC译码器设计方法,与对比文件1相比,吞吐量更高,消耗的硬件资源更少,且本发明可以通过改变存储器每个地址单元中存储的数据个数h,可以动态地改变LDPC译码器处理单元的并行度,来调节LDPC译码器占用的硬件资源,满足不同硬件平台不同吞吐量的传输需求。
本发明技术方案已在数字通信接收机上成功运用并通过相关数字通信系统测试。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (5)
1.提高节点处理并行度的QC-LDPC译码器的实现方法,其特征在于:所述QC-LDPC译码器包括变量节点信息更新单元VNU,变量节点信息打包单元VP,校验节点信息更新单元CNU,校验节点信息打包单元CP,校验方程计算单元PCU,存储位宽均为(Qh)bits的存储块RAM_f和RAM_m,存储位宽为h bits的存储块RAM_c,具体实现方法包括如下步骤:
(1)初始化
接收位宽为(Qh)bits的信道信息存储到存储块RAM_f中,将RAM_m初始化为全零,设定初始化迭代次数iter=0,最大迭代次数iter=MAX_ITER;其中:Q为量化比特数,h为并行路数;
(2)变量节点的更新
变量节点信息更新单元VNU对从存储块RAM_f和RAM_m读出的(Qh)bits的数据进行处理后得到更新的(Qh)bits输出数据给变量节点信息打包单元VP,同时输出h bits的输出数据给存储块RAM_c进行存储;变量节点信息打包单元VP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(3)校验节点的更新
校验节点信息更新单元CNU对从存储块RAM_m读出(Qh)bits的数据进行处理后得到更新的(Qh)bits的输出数据给校验节点信息打包单元CP;校验节点信息打包单元CP对输入h路并行的Q bits数据进行顺序调整,产生出的数据输出给存储块RAM_m存储;
(4)校验方程计算
校验方程计算单元PCU从存储块RAM_c读出h bits的码字信息进行计算处理后得到伴随式向量s;本次迭代结束,迭代次数iter加1;
(5)判决译码器是否结束
判断伴随式向量s是否为0或者迭代次数iter是否达到MAX_ITER;若s=0,则表示此次更新的译码码字为许用码字,转步骤(6);若s≠0且iter=MAX_ITER,则停止迭代,译码失败,转步骤(6);若s≠0且iter≠MAX_ITER,转步骤(2)开始继续迭代;
(6)译码器输出
从存储块RAM_c中读出数据即为需要输出的译码码字;
所述步骤(2)中变量节点信息打包单元VP将dh-w,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dh-w-1路并行数据组合为并行的h路数据后输出给存储块RAM_m存储;
所述步骤(3)中校验节点信息打包单元CP将dw,…dh-1路并行数据分别通过一个D触发器延时1个时钟周期后并与d0,…,dw-1组合为并行的h路数据后输出给存储块RAM_m存储;其中(offsetij mod h)=w,offsetij的值介于0到L-1之间,且L=511。
2.根据权利要求1所述的提高节点处理并行度的QC-LDPC译码器的实现方法,其特征在于:所述步骤(2)中变量节点信息更新单元VNU包括h个变量节点信息更新子单元VNUk并行工作,每个变量节点信息更新子单元VNUk的输入分别为(Qh)bits的数据分离出来的Qbits的外信息,其中每个变量节点信息更新子单元VNUk采用5级流水线进行数据处理,具体为:第1级流水线将输入的Qbits的外信息和信道信息原码转换为补码,并将输入的Qbits的外信息延迟;第2级流水线继续将Qbits的外信息延迟,并将Qbits的外信息和信道信息求和;第3级流水线将所述的和值延迟,并将所述和值与所述的Qbits的外信息分别求差;第4级流水线对所述差值进行截位处理,并继续将所述和值延迟;第5级流水线将截位处理后的数据由补码转换为原码输出,并取出和值的符号作为码字信息输出。
3.根据权利要求1所述的提高节点处理并行度的QC-LDPC译码器的实现方法,其特征在于:所述步骤(3)中校验节点信息更新单元CNU包括h个校验节点信息更新子单元CNUk并行工作,每个校验节点信息更新子单元CNUk的输入分别为(Qh)bits的数据分离出来的Qbits的外信息,其中每个校验节点信息更新子单元CNUk采用5级流水线进行数据处理,具体为:第1级流水线用来分离出输入的Qbits的外信息的符号位和绝对值,第2级流水线求输入的Qbits的外信息的符号位的和值及将所述的符号位进行延迟,并求出第1级流水线分离出的绝对值的最小值和次小值,及将所述的绝对值进行延迟;第3级流水线继续将所述符号位、绝对值、符号位的和值、最小值及次小值分别进行延迟,并求出最小值、次小值分别与归一化修正因子alpha相乘的结果;第4级流水线对第3级流水线输出的所有符号位分别与符号位的和值求和,并将第3级流水线输出的所有绝对值与最小值进行比较并选择输出;第5级流水线将第4级流水线的所有输出进行合并后输出。
4.根据权利要求3所述的提高节点处理并行度的QC-LDPC译码器的实现方法,其特征在于:所述第4级流水线对第3级流水线输出的所有符号位分别与符号位的和值求和,并将第3级流水线输出的所有绝对值与最小值进行比较,若绝对值为最小值,选择次小值与归一化修正因子alpha相乘的结果作为输出;若绝对值不为最小值,选择最小值与归一化修正因子alpha相乘的结果作为输出。
5.根据权利要求1所述的提高节点处理并行度的QC-LDPC译码器的实现方法,其特征在于:所述步骤(4)中校验方程计算单元PCU包括h个校验方程计算子单元PCUk并行工作,每个校验方程计算子单元PCUk的输入分别为h bits的数据分离出来的1bits的码字信息,其中每个校验方程计算子单元PCUk采用1级流水线进行计算处理,输入的码字信息在1级流水线中求异或得到伴随式向量s,通过延迟将伴随式向量s中的所有元素相加,得到和V,当V=0时,伴随式向量s为零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310108666.4A CN103220003B (zh) | 2013-03-29 | 2013-03-29 | 提高节点处理并行度的qc-ldpc译码器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310108666.4A CN103220003B (zh) | 2013-03-29 | 2013-03-29 | 提高节点处理并行度的qc-ldpc译码器的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103220003A CN103220003A (zh) | 2013-07-24 |
CN103220003B true CN103220003B (zh) | 2016-12-28 |
Family
ID=48817539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310108666.4A Active CN103220003B (zh) | 2013-03-29 | 2013-03-29 | 提高节点处理并行度的qc-ldpc译码器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103220003B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714754B (zh) * | 2013-12-16 | 2018-08-31 | 联想(北京)有限公司 | 一种电子设备及信息处理的方法 |
CN105846832A (zh) * | 2016-03-21 | 2016-08-10 | 联想(北京)有限公司 | 校验节点运算单元、校验节点、存储设备及信息处理方法 |
CN106571829B (zh) * | 2016-10-27 | 2019-09-06 | 西安空间无线电技术研究所 | 一种基于fpga的高速自适应dvb-s2 ldpc译码器及译码方法 |
CN107623525B (zh) * | 2017-07-28 | 2020-09-22 | 华南理工大学 | 一种高效的变量节点选择顺序方法 |
CN107612557B (zh) * | 2017-07-28 | 2020-09-22 | 华南理工大学 | 一种改进型Shuffled BP算法 |
CN107888201B (zh) * | 2017-12-05 | 2020-11-03 | 上海神添实业有限公司 | 一种全并行高吞吐量ldpc译码方法 |
CN109495115B (zh) * | 2018-11-01 | 2022-08-09 | 哈尔滨工业大学 | 一种基于fpga的ldpc译码器及译码方法 |
CN109921802B (zh) * | 2019-02-26 | 2023-02-07 | 北京中科晶上科技股份有限公司 | 一种qc-ldpc码的译码方法、模块及装置 |
CN113472358B (zh) * | 2021-06-17 | 2024-05-14 | 西安空间无线电技术研究所 | 一种基于准循环生成矩阵的高速并行编码器 |
CN115664584B (zh) * | 2022-07-25 | 2024-04-09 | 西安空间无线电技术研究所 | 一种用于高速卫星链路的高能效ldpc译码器 |
CN117375636B (zh) * | 2023-12-07 | 2024-04-12 | 成都星联芯通科技有限公司 | 提高qc-ldpc译码器吞吐率的方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420279A (zh) * | 2008-12-17 | 2009-04-29 | 航天恒星科技有限公司 | 移动多媒体广播中高速ldpc译码器及译码方法 |
CN101599302A (zh) * | 2009-07-23 | 2009-12-09 | 西安空间无线电技术研究所 | 一种基于fpga的ldpc译码器的译码码字的高效存储方法 |
CN101951264A (zh) * | 2010-08-31 | 2011-01-19 | 宁波大学 | 一种多码率准循环低密度奇偶校验码解码器 |
CN102064837A (zh) * | 2010-12-24 | 2011-05-18 | 西安电子科技大学 | 基于fifo分段存储的qc-ldpc码部分并行译码方法 |
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN102594369A (zh) * | 2012-02-27 | 2012-07-18 | 西安电子科技大学 | 基于fpga的准循环低密度校验码译码器及译码方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101350625B (zh) * | 2007-07-18 | 2011-08-31 | 北京泰美世纪科技有限公司 | 一种高效通用的qc-ldpc码译码器及其译码方法 |
-
2013
- 2013-03-29 CN CN201310108666.4A patent/CN103220003B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420279A (zh) * | 2008-12-17 | 2009-04-29 | 航天恒星科技有限公司 | 移动多媒体广播中高速ldpc译码器及译码方法 |
CN101599302A (zh) * | 2009-07-23 | 2009-12-09 | 西安空间无线电技术研究所 | 一种基于fpga的ldpc译码器的译码码字的高效存储方法 |
CN101951264A (zh) * | 2010-08-31 | 2011-01-19 | 宁波大学 | 一种多码率准循环低密度奇偶校验码解码器 |
CN102064837A (zh) * | 2010-12-24 | 2011-05-18 | 西安电子科技大学 | 基于fifo分段存储的qc-ldpc码部分并行译码方法 |
CN102394661A (zh) * | 2011-11-08 | 2012-03-28 | 北京邮电大学 | 基于层译码处理的ldpc译码器及译码方法 |
CN102594369A (zh) * | 2012-02-27 | 2012-07-18 | 西安电子科技大学 | 基于fpga的准循环低密度校验码译码器及译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103220003A (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103220003B (zh) | 提高节点处理并行度的qc-ldpc译码器的实现方法 | |
US7318186B2 (en) | Decoding method, decoding apparatus, and program to decode low density parity check codes | |
US7299397B2 (en) | Decoding apparatus, decoding method, and program to decode low density parity check codes | |
CN100425000C (zh) | 双涡轮结构低密度奇偶校验码解码器及解码方法 | |
CN102664638A (zh) | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 | |
CN101599302B (zh) | 一种基于fpga的ldpc译码器的译码码字的高效存储方法 | |
KR20110124659A (ko) | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 계층적 복호 장치 및 방법 | |
CN102281125A (zh) | 分层分块非规则低密度校验码译码器及译码方法 | |
CN101335592B (zh) | 基于矩阵分块的高速ldpc译码器实现方法 | |
WO2021063217A1 (zh) | 一种译码方法及装置 | |
CN103916134B (zh) | 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器 | |
CN103684474A (zh) | 一种高速ldpc译码器的实现方法 | |
Yeo et al. | Architectures and implementations of low-density parity check decoding algorithms | |
CN105262493A (zh) | 低密度奇偶校验码的译码方法 | |
US11483011B2 (en) | Decoding method, decoding device, and decoder | |
CN102064835B (zh) | 适用于准循环ldpc译码的译码器 | |
CN101478313B (zh) | 一种ldpc译码器的最小值计算装置及其构造方法 | |
Nandalal et al. | Design and analysis of (5, 10) regular LDPC encoder using MRP technique | |
CN102594369B (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
CN100557983C (zh) | 一种准循环低密度奇偶校验码编码器和校验位生成方法 | |
CN105515588B (zh) | 一种ldpc‑cc高速译码器 | |
CN102185615B (zh) | 适于并行译码实现的ldpc码构造方法 | |
Yue et al. | A unified forward error correction accelerator for multi-mode Turbo, LDPC, and polar decoding | |
Presman et al. | Recursive descriptions of polar codes | |
CN113381769B (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 |