CN115549699A - 译码的方法、装置、电子设备及计算机可读存储介质 - Google Patents
译码的方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115549699A CN115549699A CN202211077408.XA CN202211077408A CN115549699A CN 115549699 A CN115549699 A CN 115549699A CN 202211077408 A CN202211077408 A CN 202211077408A CN 115549699 A CN115549699 A CN 115549699A
- Authority
- CN
- China
- Prior art keywords
- cnu
- column address
- determining
- row
- minimum
- 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.)
- Pending
Links
Images
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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种译码的方法、装置、电子设备及计算机可读存储介质,涉及通信系统领域。该方法包括:确定最小等待时间,最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于至少一个CNU的更新时间,然后基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新。本申请提供的译码的方法、装置、电子设备及计算机可读存储介质可以降低硬件资源的浪费,也可以降低一次迭代过程中CNU和VNU更新所需时间,以提升译码器的吞吐率。
Description
技术领域
本申请涉及通信系统领域,尤其是涉及一种译码的方法、装置、电子设备及计算机可读存储介质。
背景技术
在高速数传中,传输容量的增加导致功率谱受限,因此如何有效利用功率谱是高速数传技术必须考虑的因素。采用纠错能力高传输速率快的信道编码可提高功率谱利用率。低密度奇偶校验(Low Density Parity Check Code,LDPC)码是一种纠错能力逼近于香农极限的信道编码技术,且译码形式简洁、并行操作性强、吞吐量大而具有很好的可实现性的特点,在卫星高速数传中比卷积码、级联码以及Turbo码更具优势。LDPC译码算法主要有硬判决和软判决两种译码算法。其中硬判决有比特翻转算法、一步大数逻辑算法等,该类算法运算复杂度低,便于硬件实现,缺点是译码性能差。软判决主要有置信传播算法、分层的置信传播算法、和积算法、最小和算法以及其改进算法等。综合考虑译码性能和硬件实现的难易程度,在实际工程中一般使用归一化的最小和算法。
LDPC译码器设计一般需要同时考虑译码性能、面积和吞吐率几个方面的要求,电路种类多,结构复杂。LDPC译码器分为全并行、串行和部分并行三种。全并行译码器可在一个时钟周期完成所有校验节点或变量节点的更新,连线复杂,硬件消耗大;全串行译码器虽然结构简单,但是一个周期只能完成一个节点的更新,吞吐率低;部分并行可以按照要求在吞吐率和硬件复杂度中寻求折中。因此,LDPC译码器的设计主要集中在电路复杂度和吞吐率之间寻求更好的折中方面。
发明人在研究过程中发现:相关技术中的部分并行译码器在译码迭代过程中,校验节点更新单元(Check Node Updating Units,CNU)和变量节点更新单元(Variable NodeUpdating Units,VNU)是交替进行的,这种方式的译码过程,极大地浪费了硬件资源,降低了译码器的吞吐率。
发明内容
本申请目的是提供一种译码的方法、装置、电子设备及计算机可读存储介质,用于解决以上至少一项技术问题。
本申请的上述发明目的是通过以下技术方案得以实现的:
第一方面,提供了一种译码的方法,该方法包括:
确定最小等待时间,最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于至少一个CNU的更新时间;
基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
在一种可能的实现方式中,所述确定所述最小等待时间,包括:
确定标量形式下的最小等待时间;和/或,
将标量形式下的最小等待时间转换为向量形式下的最小等待时间;
其中,所述基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,包括:
基于所述标量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新;或者,基于所述向量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
向量形式下的最小等待时间和并行度有关,向量译码是CPM节点更新度大于1,向量形式下的起始行列地址一定时,并行度越大,向量形式下的最小等待时间越小,译码器吞吐率越高。
在一种可能的实现方式中,CNU所需更新信息的存储位置以及VNU所需更新信息的存储位置通过校验矩阵进行表征,所述校验矩阵对应的行地址用于表征CNU所需更新信息的存储位置,所述校验矩阵对应的列地址用于表征VNU所需更新信息的存储位置,所述校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵;
其中,所述确定标量形式下的最小等待时间,包括:
确定各个起始行地址集合分别对应的目标列地址差异,任一起始行地址集合包括校验矩阵中γ行分别对应的行起始地址,任一行对应的行起始地址为该行中任一CPM所对应的行地址,任一起始行地址集合对应一个目标列地址差异;
确定各个起始行地址集合分别对应的目标列地址差异中最小的列地址差异;
基于确定出的所述最小的列地址差异,确定所述标量形式下的最小等待时间。
在一种可能的实现方式中,确定任一起始行地址集合对应的目标列地址差异,包括:
第一目标列确定步骤:确定目标列VNU,所述目标列VNU为任一列VNU;
第一最大列地址差异确定步骤:确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,所述第一当前参考行为校验矩阵中的任一行,所述第一特定CPM为目标列与第一参考行对应的非零子矩阵CPM,所述第一特定CNU为所述第一当前参考行与所述目标列所对应的CNU;
第一循环步骤:循环执行确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,直至第一当前参考行CNU遍历各行CNU,得到各参考行CNU分别对应的最大列地址差异;
第一最小列地址差异确定步骤:从所述各参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
循环执行所述第一目标列确定步骤、所述第一最大列地址差异确定步骤、所述第一循环步骤以及所述第一最小列地址差异确定步骤,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
在一种可能的实现方式中,确定任一起始行地址集合对应的目标列地址差异,包括:第二目标列确定步骤:确定目标列VNU,所述目标列VNU为任一列VNU;
拆分步骤:确定第二当前参考行CNU,当第二特定CPM列重大于1时,将所述第二特定CPM拆分为至少两个单个循环移位矩阵相加,所述第二当前参考行为校验矩阵中的任一行,所述第二特定CPM为目标列与第二当前参考行对应的非零子矩阵CPM;
列地址差异确定步骤:针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,所述第二特定CNU为所述第二当前参考行与所述目标列所对应的CNU;最大列地址差异确定步骤:从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异;
第二最小列地址差异确定步骤:从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述校验矩阵中各参考行CNU分别对应的最大列地址差异;
第二循环步骤:循环执行确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异,并从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述CPM中各参考行CNU分别对应的最大列地址差异,直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异;
第三最小列地址差异确定步骤:从所述各第二参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
循环执行所述第二目标列确定步骤、所述拆分步骤、所述列地址差异确定步骤、所述最大列地址差异确定步骤、所述第二最小列地址差异确定步骤、所述第二循环步骤以及所述第三最小列地址差异确定步骤,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
在一种可能的实现方式中,所述方法还包括:
将所述最小的列地址差异所对应的起始行地址集合作为确定标量形式下的起始行地址集合;基于所述最小的列地址差异以及所述标量形式下的起始行地址集合,确定标量形式下的起始列地址集合。
在一种可能的实现方式中,所述方法还包括:
将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合;
将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合;
其中,所述将标量形式下的最小等待时间转换为向量形式下的最小等待时间,包括:
基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间。
在一种可能的实现方式中,所述将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,包括:
基于以及yc(i,j)=((ci-vj+Δ)mod m)mod K,将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,其中,xc(i,j)以及yc(i,j)分别yc(i,j)分别用于表征向量形式下的起始行地址的横坐标以及纵坐标,ci用于表征标量形式下的起始行地址,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值;
其中,所述将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,包括:基于以及yv(i,j)=((vj-ci-Δ)mod m)mod K,将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,其中,xv(i,j)以及yv(i,j)yv(i,j)分别用于表征向量形式下的起始列地址的横坐标以及纵坐标;
其中,所述基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间,包括:
基于确定所述向量形式下的最小等待时间,其中,用于表征所述向量形式下的最小等待时间,i用于表征CPM中的行,j用于表征CPM中的列,γ用于表征CPM中的最大行数,ρ用于表征CPM中的最大列数,m用于表征CPM的大小,K用于表征CPM的并行度,w用于表征标量形式下的最小等待时间。
在一种可能的实现方式中,所述向量形式下的起始行地址用于表征VNU存储空间中的位置,所述向量形式下的起始列地址用于表征CNU存储空间中的位置,所述VNU存储空间用于存储CNU更新至VNU生成的信息,所述CNU存储空间用于存储VNU更新至CNU生成的信息;
其中,所述基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,之后还包括:
每次迭代过程中,将所述至少一个CNU更新至VNU生成的信息存储至所述VNU存储空间,以及,将所述至少一个VNU更新至CNU生成的信息存储至所述CNU存储空间。
在一种可能的实现方式中,所述CNU存储空间和所述VNU存储空间存储在同一个RAM中。
将CNU存储空间和VNU存储空间存储在同一个RAM中,不会增加RAM块数,会占用RAM的深度,提高RAM的利用率。
在一种可能的实现方式中,所述最小等待时间包括标量形式下的最小等待时间;
其中,基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,包括:
确定迭代过程中需要的时钟周期数;
根据所述标量形式下的最小等待时间与所述迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间;
基于所述标量形式下的起始行地址和起始列地址以及所述最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
在一种可能的实现方式中,所述确定迭代过程中需要的时钟周期数,包括:
通过以下公式,确定迭代过程中需要的时钟周期数:
在一种可能的实现方式中,所述根据所述标量形式下的最小等待时间与所述迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间,包括:
第二方面,提供了一种译码装置,该装置包括:
第一确定模块,用于确定最小等待时间,所述最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于所述至少一个CNU的更新时间;
更新模块,用于基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
在一种可能的实现方式中,所述第一确定模块在确定所述最小等待时间时,具体用于:
确定标量形式下的最小等待时间;和/或,
将标量形式下的最小等待时间转换为向量形式下的最小等待时间;
其中,所述更新模块在基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新时,具体用于:
基于所述标量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新;或者,基于所述向量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
在一种可能的实现方式中,CNU所需更新信息的存储位置以及VNU所需更新信息的存储位置通过校验矩阵进行表征,所述校验矩阵对应的行地址用于表征CNU所需更新信息的存储位置,所述校验矩阵对应的列地址用于表征VNU所需更新信息的存储位置,所述校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵;
其中,所述第一确定模块在确定标量形式下的最小等待时间时,具体用于:
确定各个起始行地址集合分别对应的目标列地址差异,任一起始行地址集合包括校验矩阵中γ行分别对应的行起始地址,任一行对应的行起始地址为该行中任一CPM所对应的行地址,任一起始行地址集合对应一个目标列地址差异;
确定各个起始行地址集合分别对应的目标列地址差异中最小的列地址差异;
基于确定出的所述最小的列地址差异,确定所述标量形式下的最小等待时间。
在一种可能的实现方式中,所述第一确定模块在确定任一起始行地址对应的目标列地址差异时,包括:第一目标列确定单元、第一最大列地址差异确定单元、第一循环单元、第一最小列地址差异确定单元、第一循环执行单元以及第一确定单元,其中,
所述第一目标列确定单元,用于确定目标列VNU,所述目标列VNU为任一列VNU;
所述第一最大列地址差异确定单元,用于确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,所述第一当前参考行为校验矩阵中的任一行,所述第一特定CPM为目标列与第一参考行对应的非零子矩阵CPM,所述第一特定CNU为所述第一当前参考行与所述目标列所对应的CNU;
所述第一循环单元,用于循环执行确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,直至第一当前参考行CNU遍历各行CNU,得到各参考行CNU分别对应的最大列地址差异;
所述第一最小列地址差异确定单元,用于从所述各参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
所述第一循环执行单元,用于循环执行所述第一目标列确定单元、所述第一最大列地址差异确定单元、所述第一循环单元以及所述第一最小列地址差异确定单元分别对应的操作,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
所述第一确定单元,用于从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
在一种可能的实现方式中,所述第一确定模块在确定任一起始行地址集合对应的目标列地址差异时,包括:第二目标列确定单元、拆分单元、列地址差异确定单元、最大列地址差异确定单元、第二最小列地址差异确定单元、第二循环单元、第三最小列地址差异确定单元、第二循环执行单元以及第二确定单元,其中,
所述第二目标列确定单元,用于确定目标列VNU,所述目标列VNU为任一列VNU;
所述拆分单元,用于确定第二当前参考行CNU,当第二特定CPM列重大于1时,将所述第二特定CPM拆分为至少两个单个循环移位矩阵相加,所述第二当前参考行为校验矩阵中的任一行,所述第二特定CPM为目标列与第二当前参考行对应的非零子矩阵CPM;
所述列地址差异确定单元,用于针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,所述第二特定CNU为所述第二当前参考行与所述目标列所对应的CNU;
所述最大列地址差异确定单元,用于从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异;
所述第二最小列地址差异确定单元,用于从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述校验矩阵中各参考行CNU分别对应的最大列地址差异;所述第二循环单元,用于循环执行确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异,并从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述CPM中各参考行CNU分别对应的最大列地址差异,直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异;
所述第三最小列地址差异确定单元,用于从所述各第二参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
所述第二循环执行单元,用于循环执行所述第二目标列确定单元、所述拆分单元、所述列地址差异确定单元、所述最大列地址差异确定单元、所述第二最小列地址差异确定单元、所述第二循环单元以及所述第三最小列地址差异确定单元分别对应的操作,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
第二确定单元,用于从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
在一种可能的实现方式中,所述装置还包括:第二确定模块以及第三确定模块,其中,
所述第二确定模块,用于将所述最小的列地址差异所对应的起始行地址集合确定为标量形式下的起始行地址集合;
所述第三确定模块,用于基于所述最小的列地址差异以及所述标量形式下的起始行地址集合,确定标量形式下的起始列地址集合。
在一种可能的实现方式中,所述装置还包括:第一转换模块以及第二转换模块,其中,
所述第一转换模块,用于将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合;
所述第二转换模块,用于将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合;
其中,所述第一确定模块在将标量形式下的最小等待时间转换为向量形式下的最小等待时间时,具体用于:
基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间。
在一种可能的实现方式中,所述第一转换模块在将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合时,具体用于:
基于以及yc(i,j)=((ci-vj+Δ)mod m)mod K,将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,其中,xc(i,j)以及yc(i,j)分别yc(i,j)分别用于表征向量形式下的起始行地址的横坐标以及纵坐标,ci用于表征标量形式下的起始行地址,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值;
其中,所述第二转换模块在将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合时,具体用于:
基于以及yv(i,j)=((vj-ci-Δ)mod m)mod K,将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,其中,xv(i,j)以及yv(i,j)yv(i,j)分别用于表征向量形式下的起始列地址的横坐标以及纵坐标;
其中,所述第一确定模块在基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间时,具体用于:
在一种可能的实现方式中,所述向量形式下的起始行地址用于表征VNU存储空间中的位置,所述向量形式下的起始列地址用于表征CNU存储空间中的位置,所述VNU存储空间用于存储CNU更新至VNU生成的信息,所述CNU存储空间用于存储VNU更新至CNU生成的信息;
其中所述装置还包括:第一存储模块和第二存储模块,其中,
所述第一存储模块,用于每次迭代过程中,将所述至少一个CNU更新至VNU生成的信息存储至所述VNU存储空间,以及,
所述第二存储模块,用于每次迭代过程中,将所述至少一个VNU更新至CNU生成的信息存储至所述CNU存储空间。
在一种可能的实现方式中,所述CNU存储空间和所述VNU存储空间存储在同一个RAM中。
在一种可能的实现方式中,所述最小等待时间包括标量形式下的最小等待时间;
其中,所述更新模块在基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新时,具体用于:
确定迭代过程中需要的时钟周期数;
根据所述标量形式下的最小等待时间与所述迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间;
基于所述标量形式下的起始行地址和起始列地址以及所述最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
在一种可能的实现方式中,所述更新模块在确定迭代过程中需要的时钟周期数时,具体用于:
通过以下公式,确定迭代过程中需要的时钟周期数:
在一种可能的实现方式中,所述更新模块在根据所述标量形式下的最小等待时间与所述迭代过程中需要的时钟周期数的关系,第五确定模块在确定相邻两次迭代之间所需要的等待时间时,具体用于:
第三方面,提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行根据第一方面中任一可能的实现方式所示的译码的方法对应的操作。
第四方面,提供了一种计算机可读存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如第一方面中任一可能的实现方式所示的译码的方法。
综上,本申请包括以下至少一种有益技术效果:
本申请提供了一种译码的方法、装置、电子设备及计算机可读存储介质,与相关技术相比,在本申请实施例中,通过确定每次迭代过程中,CNU和VNU开始更新的最小等待时间,并且最小等待时间小于每次迭代过程中CNU更新的时间,从而可以使得每次迭代过程中,CNU和VNU可以重叠更新,也即在更新CNU的过程中可以实现部分VNU的更新,从而可以降低硬件资源的浪费,进一步地,也可以降低一次迭代过程中CNU和VNU更新所需时间,以提升译码器的吞吐率。
附图说明
图1是本申请实施例提供的校验节点和变量节点更新方式示意图;
图2是本申请实施例提供的译码的方法流程示意图;
图3是本申请实施例提供的信息存储示意图;
图4是本申请实施例提供的一种重叠算法时序图;
图5是本申请实施例提供的译码器工作流程图;
图6是本申请实施例提供的一种译码装置的结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下结合附图对本申请作进一步详细说明。
本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。
本申请实施例提出了一种基于向量重叠的最小和算法,使译码器在迭代过程中CNU和VNU能够同时更新,极大地提高了硬件利用率和译码器的吞吐率,在迭代次数n足够大时,重叠算法的吞吐率增益接近2。进一步地,向量重叠的最小和算法可以应用到所有的QC-LDPC码结构中。图1给出了非重叠算法和重叠算法的时序图,例如,图1中(a)为利用非向量和非重叠算法进行n次迭代更新的时序图,图1中(b)为利用向量和非重叠算法进行n次迭代更新的时序图,图1中(c)为利用非向量和重叠算法进行n次迭代更新的时序图,图1中(d)为利用向量和重叠算法进行n次迭代更新的时序图;从图1中可知,若同时使用向量和重叠算法可以使消息传递的时间达到最短。重叠算法所需的参数都是离线计算的,不占用硬件资源。标量译码是指单个准循环置换矩阵(Circular Permutation Matrix,CPM)节点更新的并行度等于1,而向量译码则是CPM节点更新的并行度大于1,向量译码不仅能够提高吞吐率同时可以提高RAM的利用率。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
本申请实施例提供一种译码的方法,由电子设备执行,该电子设备可以为服务器也可以为终端设备,其中,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此,该终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制,进一步地,在本申请实施例中的电子设备可以为译码器,其中,如图2所示,该方法可以包括:
步骤S101、确定最小等待时间。
其中,最小等待时间为每次迭代过程中,校验节点的开始更新时间与变量节点开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于至少一个CNU的更新时间。
在译码过程中包含译码迭代过程,具体可以包括:译码结果硬判决、校验节点更新、变量节点更新,直到译码成功或达到最大迭代次数时结束译码。在本申请实施例中,在每次迭代过程中,在校验节点开始更新确定出的最小等待时间后,开始对变量结果进行更新,并且由于该最小等待时间一定小于校验节点的更新时间,也即在每次迭代过程中,校验节点的更新时间和变量节点的更新时间存在重叠,以使得可以缩小每次迭代过程中节点的更新时间,以提升吞吐率。
其中,最小等待时间在图1的(c)和(d)中用w进行标注。
步骤S102、基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
对于本申请实施例,每次迭代过程中,均基于上述实施例确定出的最小等待时间对校验节点和变量节点进行更新;也就是说,在每次迭代过程中,均是在校验节点开始更新后,经过上述确定出的最小等待时间对变量节点进行更新。
进一步地,在本申请实施例中,也可以在校验节点开始后经过M时间对变量节点进行更新,其中,M可以为大于上述最小等待时间,并且小于校验节点更新所需的时间。
本申请实施例提供了一种译码的方法,与相关技术相比,在本申请实施例中通过确定每次迭代过程中,CNU和VNU开始更新的最小等待时间,并且最小等待时间小于每次迭代过程中CNU更新的时间,从而可以使得每次迭代过程中,CNU和VNU可以重叠更新,也即在更新CNU的过程中可以实现部分VNU的更新,从而可以降低硬件资源的浪费,进一步地,也可以降低一次迭代过程中CNU和VNU更新所需时间,以提升译码器的吞吐率。
在上述实施例中所涉及到的最小等待时间可以包括:标量形式下的最小等待时间以及向量形式下的最小等待时间,具体地,步骤S101中确定最小等待时间,具体可以包括:步骤S1011(图中未示出)和/或步骤S1012(图中未示出),在本申请实施例中,可以仅执行步骤S1011,也可以在执行步骤S1011之后执行步骤S1012,其中,
步骤S1011、确定标量形式下的最小等待时间。
对于本申请实施例,CNU所需更新信息的存储位置以及VNU所需更新信息的存储位置通过校验矩阵进行表征,校验矩阵对应的行地址用于表征CNU所需更新信息的存储位置,校验矩阵对应的列地址用于表征VNU所需更新信息的存储位置,校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵;其中,步骤S1011中确定标量形式下的最小等待时间,具体可以包括:步骤S1011a(图中未示出)、步骤S1011b(图中未示出)以及步骤S1011c(图中未示出),其中,
步骤S1011a、确定各个起始行地址集合分别对应的目标列地址差异。
其中,任一起始行地址集合包括校验矩阵中γ行分别对应的行起始地址,任一行对应的行起始地址为该行中任一CPM所对应的行地址,任一起始行地址集合对应一个目标列地址差异。
对于本申请实施例,确定任一起始行地址集合对应的目标列地址差异,具体可以包括:步骤Sa01(图中未示出)、步骤Sa02(图中未示出)、步骤Sa03(图中未示出)、步骤Sa04(图中未示出)、步骤Sa05(图中未示出)以及步骤Sa06(图中未示出),其中,步骤Sa01、确定目标列VNU。
其中,目标列VNU为任一列VNU。
确定任一可能起始行地址集合,例如,用于表征任一可能起始行地址集合,用于表征第0行CNU起始行地址,用于表征第1行CNU起始行地址,用于表征第γ-1行CNU起始行地址,由于CNU按行更新,VNU按列更新,确定目标列为校验矩阵中0-□-1列中的任一列;例如,t列VNU用于表征任一列VNU。
步骤Sa02、确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异。
其中,第一当前参考行为校验矩阵中的任一行,第一特定CPM为目标列与第一当前参考行对应的非零子矩阵CPM,第一特定CNU为第一当前参考行与目标列所对应的CNU。
例如,确定s行为校验矩阵中0-γ-1行中的任一行,确定第s行CNU和第r行t列CNU之间对应的列地址差异:
其中ds,t用于表征第s行CNU和第r行t列CNU之间对应的列地址差异,用于表征第s行CNU的起始行地址,xs,t用于表征第s行t列CPM的偏移值,用于表征r行t列CNU的起始行地址,用于表征r行t列CPM的偏移值,m为CPM的大小,dt用于表征各个列地址差异中最大列地址差异。
若非零子矩阵CPM列重为1,对于第t-th列的VNU,第rtrt-th行的CNU需要 个时钟周期达到所有其他行的CNUs的列地址,也即最终得到的dt为以r行CNU为第一当前参考行CNU的最大列地址差异。
进一步地,针对r行t列CNU,第t列VNU至少需要在所有CNU启动dt+1个时钟周期才能开始更新。
步骤Sa03、循环执行确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,直至第一当前参考行CNU遍历各行CNU,得到各参考行CNU分别对应的最大列地址差异。
进一步地,在通过步骤Sa02对应的实现方式得到以r行CNU为第一当前参考行CNU的最大列地址差异,循环执行上述实施例直至得到以各行CNU为第一当前参考行CNU分别对应的最大列地址差异。也即得到□γ个最大列地址差异dt。
步骤Sa04、从各参考行CNU分别对应的最大列地址差异中确定最小列地址差异。
具体地,通过上述实施例可以得到□γ个最大列地址差异也即第0行对应的最大列地址差异、第1行对应的最大列地址差异…第γ□-2行对应的最大列地址以及第□-1行对应的最大列地址差异,从这些最大列地址差异中确定最小列地址差异。
步骤Sa05、循环执行步骤Sa01、步骤Sa02、步骤Sa03以及步骤Sa04,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异。
通过上述步骤Sa01、步骤Sa02、步骤Sa03和步骤Sa04分别对应的实施方式,得到目标列VNU对应的最小列地址差异(也即第t列VNU对应的最小列地址差异),循环执行上述步骤Sa01、步骤Sa02、步骤Sa03以及步骤Sa04分别对应的实施方式,以得到各列VNU分别对应的最小列地址差异。
步骤Sa06、从各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为任一起始行地址集合对应的目标列地址差异。
进一步地,通过上述实施例可以得到任一起始行地址对应的目标列地址差异,循环执行上述步骤Sa01、步骤Sa02、步骤Sa03、步骤Sa04、步骤Sa05以及步骤Sa06直至遍历所有起始行地址,得到所有起始行地址集合分别对应的最大的目标列地址差异。
步骤S1011b、确定各个起始行地址集合分别对应的目标列地址差异中最小的列地址差异。
在通过上述实施例,得到各个起始行地址分别对应的目标列地址差异,基于 从所有可能起始行地址对应的目标列地址差异中确定最小的列地址差异,用于表征从所有可能起始行地址集合对应的目标列地址差异中最小的列地址差异。
步骤S1011c、基于确定出的最小的列地址差异,确定标量形式下的最小等待时间。
本申请实施例的另一种可能的实现方式,确定任一起始行地址集合对应的目标列地址差异,具体可以包括:步骤Sa07(图中未示出)、步骤Sa08(图中未示出)、步骤Sa09(图中未示出)、步骤Sa10(图中未示出)、步骤Sa11(图中未示出)、步骤Sa12(图中未示出)、步骤Sa13(图中未示出)、步骤Sa14(图中未示出)以及步骤Sa15(图中未示出)。
步骤Sa07、确定目标列VNU。
其中,目标列VNU为任一列VNU。
需要说明的是:步骤Sa07的具体实现方式详见上述步骤Sa01对应的实现方式,在此不再赘述。
步骤Sa08、确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加。
其中,第二当前参考行为校验矩阵中的任一行,第二特定CPM为目标列与第二当前参考行对应的非零子矩阵CPM。
对于本申请实施例,若非零子矩阵CPM列重大于1,将非零子矩阵拆分为单个循环移位矩阵的相加,也即将CPM拆分为列重为1的单个循环移位矩阵。
步骤Sa09、针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异。
其中,第二特定CNU为第二当前参考行与目标列所对应的CNU。
例如,确定s行CNU为校验矩阵中0-γ-1行中的任一行,确定r1行CNU为第二当前参考行,r1行tt1列CNU为第二特定CNU。通过以下公式确定第s行CNU和第r行t列CNU之间分别对应的列地址差异:
其中,用于表征第s行CNU和第r行t列CNU之间对应的列地址差异,用于表征第s行CNU的起始行地址,xs,t用于表征第s行t列CPM的偏移值,用于表征r1行t列CNU的起始行地址,用于表征r1行tt1列CPM的偏移值,m为CPM的大小。
步骤Sa10、从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异。
对于本申请实施例,基于确定各个循环移位矩阵分别对应的最大列地址差异,由于第s行可以为校验矩阵中0-γ-1行中的任一行,从各行与第r行t列CNU之间对应的列地址差异中确定最大列地址差异,其中用于表征各个循环移位矩阵分别对应的最大列地址差异
步骤Sa11、从各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为校验矩阵中各参考行CNU分别对应的最大列地址差异。
进一步地,针对第r行t列CNU,第t列VNU至少需要所有的CNU启动dt+1个时钟周期才能更新。
步骤Sa12、循环执行确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异,并从各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为CPM中各参考行CNU分别对应的最大列地址差异,直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异。
也即,循环执行步骤Sa09、步骤Sa10、步骤Sa11以及步骤Sa12直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异。
步骤Sa13、从各第二参考行CNU分别对应的最大列地址差异中确定最小列地址差异。
步骤Sa14、循环执行步骤Sa07、步骤Sa08、步骤Sa09、步骤Sa10、步骤Sa11、步骤Sa12以及步骤Sa13,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异。
步骤Sa15、从各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为任一起始行地址集合对应的目标列地址差异。
进一步地,通过上述步骤Sa07-Sa15,以通过另一种方式得到任一起始行地址集合对应的目标列地址差异,若需得到各个起始行地址集合对应的目标列地址差异,循环执行步骤Sa07、步骤Sa08、步骤Sa09、步骤Sa10、步骤Sa11、步骤Sa12、步骤Sa13、步骤Sa14以及步骤Sa15直至遍历所有可能起始行地址,得到所有可能起始行地址集合分别对应的最大的目标列地址差异,基于从所有可能起始行地址集合对应的目标列地址中确定最小的列地址差异,用于表征从所有可能起始行地址集合对应的目标列地址差异中确定最小的列地址差异,标量形式下的最小等待时间为其中w*用于表征标量形式下的最小等待时间。
对于本申请实施例,由于校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵,CPM矩阵具体包括:列重为1的CPM矩阵和列重大于1的CPM矩阵,当特定CPM矩阵列重为1时,执行上述步骤Sa01-步骤Sa06,当特定CPM矩阵列重大于1时,执行上述步骤Sa07-步骤Sa15。
上述实施例通过根据CPM子矩阵的列重是否为1,分为两种情况得到标量形式下的最小等待时间,但是在对至少一个CNU以及至少一个VNU进行更新时,还需要的得到起始行地址集合以及起始列地址集合。为了得到起始行地址集合和起始列地址集合,该方法还可以包括:步骤Sa(图中未示出)以及步骤Sb(图中未示出),其中,
步骤Sa、将最小的列地址差异所对应的起始行地址集合确定标量形式下的起始行地址集合。
步骤Sb、基于最小的列地址差异以及标量形式下的起始行地址集合,确定标量形式下的起始列地址集合。
在通过上述实施例得到最小的列地址差异以及标量形式下的起始行地址集合,则通过下述公式,确定标量形式下的起始列地址集合:
进一步地,通过上述实施例可以得到标量形式下的最小等待时间、标量形式下的行起始地址集合以及标量形式下的列起始地址集合。在得到标量形式下的最小等待时间、标量形式下的行起始地址集合以及标量形式下的列起始地址集合后,可以基于标量形式下的这些信息对至少一个CNU以及至少一个VNU进行更新。
进一步地,由图1可知,通过向量算法对至少一个CNU以及至少一个VNU进行更新的吞吐率大于通过标量算法对至少一个CNU以及至少一个VNU的吞吐率。因此在通过上述实施例得到标量形式下的起始行地址集合、标量形式下的起始列地址集合以及标量形式下的最小等待时间后,需要标量形式下的起始行地址集合、标量形式下的起始列地址集合以及标量形式下的最小等待时间分别转换为向量形式下的起始行地址集合、向量形式下的起始列地址集合以及向量形式下的最小等待时间。也即通过步骤Sc(图中未示出)以及步骤Sd(图中未示出)将标量形式下的起始行地址集合以及标量形式下的起始列地址集合转换为向量形式下的起始行地址集合以及向量形式下的起始列地址集合,通过步骤S1012将标量形式下的最小等待时间转换为向量形式下的最小等待时间,具体如下所示:
步骤Sc、将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合。
具体地,将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,具体可以包括:基于以及yc(i,j)=((ci-vj+Δ)mod m)mod K,将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合。
其中,xc(i,j)以及yc(i,j)yc(i,j)分别用于表征向量形式下的起始行地址的横坐标以及纵坐标,ci用于表征标量形式下的起始行地址,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值。
步骤Sd、将标量形式下的起始列地址集合转换为向量形式下的起始列地址集合。
具体地,将标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,具体可以包括:
其中,xv(i,j)以及yv(i,j)分别用于表征向量形式下的起始列地址的横坐标以及纵坐标,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值。
需要说明的是:步骤Sc和步骤Sd之间不限定具体的执行顺序,步骤Sc可以在步骤Sd之前执行,也可以在步骤Sd之后执行,还可以和步骤Sd同时执行,在本申请实施例中不做限定。
步骤S1012、将标量形式下的最小等待时间转换为向量形式下的最小等待时间。
具体地,将标量形式下的最小等待时间转换为向量形式下的最小等待时间,具体可以包括:基于向量形式下的起始行地址集合、向量形式下的起始列地址集合以及标量形式下的最小等待时间,确定向量形式下的最小等待时间。
在通过上述实施例得到向量形式下的起始行地址集合、向量形式下的起始列地址集合以及标量形式下的最小等待时间后,基于向量形式下的起始行地址集合、向量形式下的起始列地址集合以及标量形式下的最小等待时间,确定向量形式下的最小等待时间,具体可以包括:基于下述公式将标量形式下的最小等待时间转换为向量形式下的最小等待时间:
其中,用于表征向量形式下的最小等待时间,i用于表征CPM中的行,j用于表征CPM中的列,γ用于表征CPM中的最大行数,ρ用于表征CPM中的最大列数,m用于表征CPM的大小,K用于表征CPM的并行度,w用于表征标量形式下的最小等待时间,xc(i,j)用于表征向量形式下的起始行地址的横坐标,xv(i,j)用于表征向量形式下的起始列地址的横坐标。
进一步地,在通过上述实施例得到向量形式下的最小等待时间、向量形式下的起始行地址集合以及向量形式下的起始列地址集合之后,基于向量形式下的最小等待时间、向量形式下的起始行地址集合以及向量形式下的起始列地址集合,对至少一个CNU以及至少一个VNU进行更新。
具体地,向量形式下的起始行地址用于表征VNU存储空间中的位置,向量形式下的起始列地址用于表征CNU存储空间(CNU MEM)中的位置,VNU存储空间(VNU MEM)用于存储CNU更新至VNU生成的信息,CNU存储空间用于存储VNU更新至CNU生成的信息。
其中,基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新,之后还包括:每次迭代过程中,将至少一个CNU更新至VNU生成的信息存储至VNU存储空间,以及,将至少一个VNU更新至CNU生成的信息存储至CNU存储空间。
为了尽量避免CNU MEM和VNU MEM读写冲突,采用双缓存技术,即将CNU更新所需的变量节点到校验节点的信息(v2c)按照CNU更新的顺序存储,VNU更新所需要的校验节点到变量节点的信息(c2v)按照VNU更新的顺序存储。虽然上述存储方式可能导致存储数量翻倍,但是在CPM的大小远小于RAM深度时,可以将CNU MEM和VNU MEM存储到一个RAM中,因此总的RAM块个数没有增加。LcLc,LvLv分别代表CNU MEM和VNU MEM的二维数组,L[(c+Δ)modm]L[(c+Δ)mod m]存储在Lc[0][0]Lc[0][0],L[v]L[v]存储在Lv[0][0]Lv[0][0]。在通用情况下,外信息L[k]L[k]存储在CNU MEM的位置为
存储在VNU MEM中的位置为 其中mm为CPM的大小,ΔΔ为CPM的偏移值,c为CPM的起始行地址,vv为CPM的起始列地址,KK为向量大小即CPM的并行度。例如,CPM的大小为15,偏移值为9,起始行地址为3,起始列地址为4,并行度为4,按照双缓存数据打包策略,CNU MEM和VNU MEM的存储结果如图3所示,其中,图3中的L1~L14对应L[k]。
进一步地,在通过上述实施例可以得到标量形式下的最小等待时间以及向量形式下的等待时间,其中,基于标量形式下的最小等待时间,对至少一个CNU以及至少一个VNU进行更新,具体可以包括:步骤S1023(图中未示出)、步骤S1024(图中未示出)和步骤S1025(图中未示出),其中,
步骤S1023、确定迭代过程中需要的时钟周期数。
具体地,确定迭代过程中需要的时钟周期数,具体可以包括:通过以下公式,确定迭代过程中需要的时钟周期数:
步骤S1024、根据标量形式下的最小等待时间与迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间。
具体地,根据标量形式下的最小等待时间与迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间,具体可以包括:
具体地,当时,确定相邻两次迭代之间所需要的等待时间为0,具体可以包括:当时,确定相邻两次迭代之间所需要的等待时间为0;当 时,确定相邻两次迭代之间所需要的等待时间为个时钟,具体可以包括:当时,确定相邻两次迭代之间所需要的等待时间为 个时钟。
其中,Tcnu用于表征CNU处理数据需要的时钟个数,Tvnu用于表征VNU处理数据需要的时钟个数。
基于上述实施例,如图4所示,重叠算法时序图分为两种:当 时,CNU(VNU)在当前迭代结束后立刻开启下一次迭代,此时硬件利用率几乎为1,也即如图4中的a所示;当时,CNU(VNU)在当前迭代结束后需等待个时钟后开启下一次迭代,硬件利用率小于1,也即如图4中的b所示,例如,当最小等待时间为10,迭代过程中的周期数为16,第一次迭代过程中,VNU等待CNU更新至10个时钟周期之后开始更新,VNU更新至6个时钟周期时CNU更新完成,由于VNU需要更新至10个时钟周期,所以CNU需要等待4个时钟周期后才能再次更新。但是,在FPGA实现过程中需比较w*+Tcnu(vnu)w*+Tcnu(vnu)w*+Tcnu(vnu)和的大小,其中,Tcnu(vnu)Tcnu(vnu)TcnuTcnu用于表征CNU处理数据需要的时钟个数,TvnuTvnu用于表征VNU处理数据需要的时钟个数,然后按照图4中的a或b所示的时序图工作。
步骤S1025、基于相邻两次迭代之间所需要的等待时间,并通过标量形式下的起始行地址和起始列地址以及最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
在基于标量形式下的最小等待时间与迭代过程中需要的时钟周期数的关系确定出相邻两次迭代之间所需要的等待时间为0或者为wc,也就是说,在一次迭代结束后可以直接进入下一迭代,对至少一个CNU以及至少一个VNU进行更新;又或者,在一次迭代结束后间隔wc个时间进入下一迭代,对至少一个CNU以及至少一个VNU进行更新。
进一步地,上述实施例中介绍了CNU和VNU进行更新的过程,其中CNU和VNU进行更新的过程属于译码器进行译码的一部分,在本申请实施例中,译码器工作流程图如图5所示,译码器主要包括输入存储模块,控制模块、参数配置模块、变量节点更新模块、校验节点更新模块、伴随式生成模块以及外信息存储模块。外信息存储模块是双缓存结构,将硬判结果和变量节点到校验节点组合成一个数据进行存储到CNU MEM中,节约了一组RAM块资源。
图5中软信息为VNU更新至CNU生成的信息和CNU更新至VNU生成的信息,PCU是伴随式生成模块,EMEM是外信息存储模块,包含CNU MEM和VNU MEM,其中,CNU MEM是CNU存储空间,VNU MEM是VNU存储空间,Old V2C是CNU存储空间中VNU更新至CNU生成的信息,Old C2V是VNU存储空间中CNU更新至VNU生成的信息,New V2C是VNU更新模块中VNU更新至CNU生成的信息,New C2V是CNU更新模块中CNU更新至VNU生成的信息,LLR_storage_done是输入存储模块给控制模块的一个信号,HD为硬判结果。
在VNU和CNU重叠更新过程中,CNU更新至VNU生成的信息在VNU存储空间中的存储地址的坐标、VNU更新至CNU生成的信息在CNU存储空间中的存储地址的坐标、解调之后的VNU更新至CNU生成的信息和CNU更新至VNU生成的信息读对齐的坐标和译码器输出的读对齐坐标存入ROM中;
其中,基于 确定解调之后的VNU更新至CNU生成的信息和CNU更新至VNU生成的信息读对齐的坐标,其中,用于表征解调之后的VNU更新至CNU生成的信息和CNU更新至VNU生成的信息读对齐的横坐标,用于表征解调之后的VNU更新至CNU生成的信息和CNU更新至VNU生成的信息读对齐的纵坐标,vj用于表征标量形式下的起始列地址,m用于表征CPM的大小,K用于表征CPM的并行度。
基于 确定解调之后的译码器输出的读对齐坐标,其中,用于表征解调之后的译码器输出的读对齐的横坐标,用于表征解调之后的译码器输出的读对齐的纵坐标,cici用于表征标量形式下的起始行地址,ΔΔ用于表征CPM的偏移值。
读对齐和写对齐原理类似,都是将现有的数据和前一拍的数据重组,然后根据y的值选择正确的数据。
EMEM读写控制如下:
CNU MEM读使能:在第一次迭代时,在初始化结束后,立刻使CNU读使能有效,并持续拉高个时钟;在第二次迭代及以后,当CNU MEM写入w*个数据或者在CNU MEM读完z个数据后使CNU读使能有效,并持续拉高z个时钟。
CNU MEM读地址:第一次迭代起始读地址为0,然后加1,直至z;第二次迭代的起始地址为w*,然后加1取余,直至zz个时钟周期;依次类推,第k次迭代的起始地址为addrrk=(addrrk-1+w*)mod zaddrrk=(addrrk-1+w*)mod z,然后加1取余,直至zz个时钟周期;按照这种方法生成读地址,直到迭代结束。
CNU MEM写使能:在初始化状态,拉高z个时钟周期;在迭代译码状态时,为VNU MEM读使能延迟TvnuTvnu个时钟周期。
CNU MEM写地址:第一次迭代起始写地址为xv,然后加1,直至z个时钟周期;第二次迭代的起始地址为xv+w*xv+w*,然后加1取余,直至z个时钟周期;依次类推,第k次迭代的起始地址为addrwk=(addrwk-1+w*)mod z,然后加1取余,直至z个时钟周期;按照这种方法生成写地址,直到迭代结束。
VNU MEM读写使能以及读写地址的生成和CNU MEM类似,只是将相应的参数改为VNU MEM对应的参数即可。
进一步地,本申请实施例应用到但不限于应用到CCSDS标准中7/8LDPC译码器的FPGA实现,其中FPGA的芯片类型为xc7vx485tffg1157-2,实现结果如表1所示。我们采用归一化的最小和算法(α=0.75),6比特量化位宽,比较不同向量大小,即K=1,2,3,4,5,6,7,设计译码器所需要的硬件资源和译码器的吞吐率。从表1中可知,随着K的增加,译码器的Slice资源是缓慢增加的,且当K≤5时,RAM块资源没有增加,而吞吐率显著提高,大概为非重叠算法的1.5倍。
表1(8176,7154)LDPC码的FPGA实现结果
上述实施例从方法流程的角度介绍一种译码的方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种译码的装置,具体详见下述实施例。
本申请实施例提供一种译码的装置,如图6所示,该译码的装置60具体可以包括:第一确定模块61以及更新模块62,其中,
第一确定模块61,用于确定最小等待时间,最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于至少一个CNU的更新时间;
更新模块62,用于基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
本申请实施例的一种可能的实现方式,第一确定模块61在确定最小等待时间时,具体用于:
确定标量形式下的最小等待时间;和/或,
将标量形式下的最小等待时间转换为向量形式下的最小等待时间;
其中,更新模块62在基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新时,具体用于:
基于标量形式下的最小等待时间,对至少一个CNU以及至少一个VNU进行更新;或者,基于向量形式下的最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
本申请实施例的另一种可能的实现方式,CNU所需更新信息的存储位置以及VNU所需更新信息的存储位置通过校验矩阵进行表征,校验矩阵对应的行地址用于表征CNU所需更新信息的存储位置,校验矩阵对应的列地址用于表征VNU所需更新信息的存储位置,校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵;
其中,第一确定模块61在确定标量形式下的最小等待时间时,具体用于:
确定各个起始行地址集合分别对应的目标列地址差异,任一起始行地址集合包括校验矩阵中γ行分别对应的行起始地址,任一行对应的行起始地址为该行中任一CPM所对应的行地址,任一起始行地址集合对应一个目标列地址差异;
确定各个起始行地址集合分别对应的目标列地址差异中最小的列地址差异;
基于确定出的最小的列地址差异,确定标量形式下的最小等待时间。
本申请实施例的另一种可能的实现方式,第一确定模块61在确定任一起始行地址集合对应的目标列地址差异时,包括:第一目标列确定单元、第一最大列地址差异确定单元、第一循环单元、第一最小列地址差异确定单元、第一循环执行单元以及第一确定单元,其中,第一目标列确定单元,用于确定目标列VNU,目标列VNU为任一列VNU;
第一最大列地址差异确定单元,用于确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,第一当前参考行为校验矩阵中的任一行,第一特定CPM为目标列与第一参考行对应的非零子矩阵CPM,第一特定CNU为第一当前参考行与目标列所对应的CNU;
第一循环单元,用于循环执行确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,直至第一当前参考行CNU遍历各行CNU,得到各参考行CNU分别对应的最大列地址差异;
第一最小列地址差异确定单元,用于从各参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
第一循环执行单元,用于循环执行第一目标列确定单元、第一最大列地址差异确定单元、第一循环单元以及第一最小列地址差异确定单元分别对应的操作,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
第一确定单元,用于从各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为任一起始行地址集合对应的目标列地址差异。
本申请实施例的另一种可能的实现方式,第一确定模块61在确定任一起始行地址集合对应的目标列地址差异时,包括:第二目标列确定单元、拆分单元、列地址差异确定单元、最大列地址差异确定单元、第二最小列地址差异确定单元、第二循环单元、第三最小列地址差异确定单元、第二循环执行单元以及第二确定单元,其中,
第二目标列确定单元,用于确定目标列VNU,目标列VNU为任一列VNU;
拆分单元,用于确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,第二当前参考行为校验矩阵中的任一行,第二特定CPM为目标列与第二当前参考行对应的非零子矩阵CPM;
列地址差异确定单元,用于针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,第二特定CNU为第二当前参考行与目标列所对应的CNU;
最大列地址差异确定单元,用于从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异;
第二最小列地址差异确定单元,用于从各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为校验矩阵中各参考行CNU分别对应的最大列地址差异;
第二循环单元,用于循环执行确定第二当前参考行CNU,当第二特定CPM列重大于1,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异,并从各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为CPM中各参考行CNU分别对应的最大列地址差异,直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异;
第三最小列地址差异确定单元,用于从各第二参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
第二循环执行单元,用于循环执行第二目标列确定单元、拆分单元、列地址差异确定单元、最大列地址差异确定单元、第二最小列地址差异确定单元、第二循环单元以及第三最小列地址差异确定单元分别对应的操作,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
第二确定单元,用于从各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为任一起始行地址集合对应的目标列地址差异。
本申请实施例的另一种可能的实现方式,装置60还包括:第二确定模块以及第三确定模块,其中,
第二确定模块,用于将最小的列地址差异所对应的起始行地址集合确定为标量形式下的起始行地址集合;
第三确定模块,用于基于最小的列地址差异以及标量形式下的起始行地址集合,确定标量形式下的起始列地址集合。
本申请实施例的另一种可能的实现方式,装置60还包括:第一转换模块以及第二转换模块,其中,
第一转换模块,用于将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合;第二转换模块,用于将标量形式下的起始列地址集合转换为向量形式下的起始列地址集合;其中,第一确定模块61在将标量形式下的最小等待时间转换为向量形式下的最小等待时间时,具体用于:
基于向量形式下的起始行地址集合、向量形式下的起始列地址集合以及标量形式下的最小等待时间,确定向量形式下的最小等待时间。
本申请实施例的另一种可能的实现方式,第一转换模块在将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合时,具体用于:
基于以及yc(i,j)=((ci-vj+Δ)mod m)mod K,将标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,其中,xc(i,j)以及yv(i,j)yc(i,j)分别用于表征向量形式下的起始行地址的横坐标以及纵坐标,ci用于表征标量形式下的起始行地址,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值;
其中,第二转换模块在将标量形式下的起始列地址集合转换为向量形式下的起始列地址集合时,具体用于:
基于以及yv(i,j)=((vj-ci-Δ)mod m)mod K,将标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,其中,xv(i,j)以及yv(i,j)分别用于表征向量形式下的起始列地址的横坐标以及纵坐标;
其中,第一确定模块61在基于向量形式下的起始行地址集合、向量形式下的起始列地址集合以及标量形式下的最小等待时间,确定向量形式下的最小等待时间时,具体用于:
本申请实施例的另一种可能的实现方式,向量形式下的起始行地址用于表征VNU存储空间中的位置,向量形式下的起始列地址用于表征CNU存储空间中的位置,VNU存储空间用于存储CNU更新至VNU生成的信息,CNU存储空间用于存储VNU更新至CNU生成的信息;
其中,装置60还包括:第一存储模块和第二存储模块,其中,
第一存储模块,用于每次迭代过程中,将至少一个CNU更新至VNU生成的信息存储至VNU存储空间,以及,
第二存储模块,用于每次迭代过程中,将至少一个VNU更新至CNU生成的信息存储至CNU存储空间。
本申请实施例的另一种可能的实现方式,CNU存储空间和VNU存储空间存储在同一个RAM中。
本申请实施例的另一种可能的实现方式,最小等待时间包括标量形式下的最小等待时间;
其中,更新模块62在基于最小等待时间,对至少一个CNU以及至少一个VNU进行更新,具体用于:
确定迭代过程中需要的时钟周期数;
根据标量形式下的最小等待时间与迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间;
基于标量形式下的起始行地址和起始列地址以及最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
本申请实施例的另一种可能的实现方式,更新模块62在确定迭代过程中需要的时钟周期数时,具体用于:
通过以下公式,确定迭代过程中需要的时钟周期数:
本申请实施例的另一种可能的实现方式,更新模块62在根据标量形式下的最小等待时间与迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间时,具体用于:
当时,确定相邻两次迭代之间所需要的等待时间为0,其中,Tcnu用于表征CNU处理数据需要的时钟个数,Tvnu用于表征VNU处理数据需要的时钟个数,其中,当时,更新模块62在确定相邻两次迭代之间所需要的等待时间为个时钟时,具体用于:
本申请实施例提供了一种译码的装置,与相关技术相比,在本申请实施例中,通过确定每次迭代过程中,CNU和VNU开始更新的最小等待时间,并且最小等待时间小于每次迭代过程中CNU更新的时间,从而可以使得每次迭代过程中,CNU和VNU可以重叠更新,也即在更新CNU的过程中可以实现部分VNU的更新,从而可以降低硬件资源的浪费,进一步地,也可以降低一次迭代过程中CNU和VNU更新所需时间,以提升译码器的吞吐率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的一种译码的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例中提供了一种电子设备,如图7所示,图7所示的电子设备70包括:处理器701和存储器703。其中,处理器701和存储器703相连,如通过总线702相连。可选地,电子设备70还可以包括收发器704。需要说明的是,实际应用中收发器704不限于一个,该电子设备70的结构并不构成对本申请实施例的限定。
处理器701可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线702可包括一通路,在上述组件之间传送信息。总线702可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线702可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一型的总线。
存储器703可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与相关技术相比,在本申请实施例中,通过确定每次迭代过程中,CNU和VNU开始更新的最小等待时间,并且最小等待时间小于每次迭代过程中CNU更新的时间,从而可以使得每次迭代过程中,CNU和VNU可以重叠更新,也即在更新CNU的过程中可以实现部分VNU的更新,从而可以降低硬件资源的浪费,进一步地,也可以降低一次迭代过程中CNU和VNU更新所需时间,以提升译码器的吞吐率。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (17)
1.一种译码的方法,其特征在于,包括:
确定最小等待时间,所述最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于所述至少一个CNU的更新时间;
基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
2.根据权利要求1所述的方法,其特征在于,所述确定所述最小等待时间,包括:
确定标量形式下的最小等待时间;和/或,
将标量形式下的最小等待时间转换为向量形式下的最小等待时间;
其中,所述基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,包括:
基于所述标量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新;或者,
基于所述向量形式下的最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
3.根据权利要求2所述的方法,其特征在于,CNU所需更新信息的存储位置以及VNU所需更新信息的存储位置通过校验矩阵进行表征,所述校验矩阵对应的行地址用于表征CNU所需更新信息的存储位置,所述校验矩阵对应的列地址用于表征VNU所需更新信息的存储位置,所述校验矩阵是γ行ρ列的矩阵,矩阵中的每个元素均为CPM矩阵;
其中,所述确定标量形式下的最小等待时间,包括:
确定各个起始行地址集合分别对应的目标列地址差异,任一起始行地址集合包括校验矩阵中γ行分别对应的行起始地址,任一行对应的行起始地址为该行中任一CPM所对应的行地址,任一起始行地址集合对应一个目标列地址差异;
确定各个起始行地址集合分别对应的目标列地址差异中最小的列地址差异;
基于确定出的所述最小的列地址差异,确定所述标量形式下的最小等待时间。
4.根据权利要求3所述的方法,其特征在于,确定任一起始行地址集合对应的目标列地址差异,包括:
第一目标列确定步骤:确定目标列VNU,所述目标列VNU为任一列VNU;
第一最大列地址差异确定步骤:确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,所述第一当前参考行为校验矩阵中的任一行,所述第一特定CPM为目标列与所述第一当前参考行对应的非零子矩阵CPM,所述第一特定CNU为所述第一当前参考行与所述目标列所对应的CNU;
第一循环步骤:循环执行确定第一当前参考行CNU,当第一特定CPM列重为1时,确定各行CNU和第一特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,直至第一当前参考行CNU遍历各行CNU,得到各参考行CNU分别对应的最大列地址差异;
第一最小列地址差异确定步骤:从所述各参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
循环执行所述第一目标列确定步骤、所述第一最大列地址差异确定步骤、所述第一循环步骤以及所述第一最小列地址差异确定步骤,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;
从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
5.根据权利要求3所述的方法,其特征在于,确定任一起始行地址集合对应的目标列地址差异,包括:
第二目标列确定步骤:确定目标列VNU,所述目标列VNU为任一列VNU;
拆分步骤:确定第二当前参考行CNU,当第二特定CPM列重大于1时,将所述第二特定CPM拆分为至少两个单个循环移位矩阵相加,所述第二当前参考行为校验矩阵中的任一行,所述第二特定CPM为目标列与所述第二当前参考行对应的非零子矩阵CPM;
列地址差异确定步骤:针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,所述第二特定CNU为所述第二当前参考行与所述目标列所对应的CNU;
最大列地址差异确定步骤:从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异;
第二最小列地址差异确定步骤:从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述校验矩阵中各参考行CNU分别对应的最大列地址差异;
第二循环步骤:循环执行确定第二当前参考行CNU,当第二特定CPM列重大于1时,将第二特定CPM拆分为至少两个单个循环移位矩阵相加,针对每个循环移位矩阵,确定各行CNU和第二特定CNU之间分别对应的列地址差异,并从各个列地址差异中确定最大列地址差异,以得到各个循环移位矩阵分别对应的最大列地址差异,并从所述各个循环移位矩阵分别对应的最大列地址差异中确定最小列地址差异,作为所述CPM中各参考行CNU分别对应的最大列地址差异,直至第二当前参考行CNU遍历各行CNU,得到各第二参考行CNU分别对应的最大列地址差异;
第三最小列地址差异确定步骤:从所述各第二参考行CNU分别对应的最大列地址差异中确定最小列地址差异;
循环执行所述第二目标列确定步骤、所述拆分步骤、所述列地址差异确定步骤、所述最大列地址差异确定步骤、所述第二最小列地址差异确定步骤、所述第二循环步骤以及所述第三最小列地址差异确定步骤,直至遍历所有列VNU,得到各列VNU分别对应的最小列地址差异;从所述各列VNU分别对应的最小列地址差异中确定最大列地址差异,作为所述任一起始行地址集合对应的目标列地址差异。
6.根据权利要求3-5任一项所述的方法,其特征在于,所述方法还包括:
将所述最小的列地址差异所对应的起始行地址集合确定标量形式下的起始行地址集合;
基于所述最小的列地址差异以及所述标量形式下的起始行地址集合,确定标量形式下的起始列地址集合。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合;
将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合;
其中,所述将标量形式下的最小等待时间转换为向量形式下的最小等待时间,包括:
基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间。
8.根据权利要求7所述的方法,其特征在于,所述将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,包括:
基于以及yc(i,j)=((ci-vj+Δ)mod m)mod K,将所述标量形式下的起始行地址集合转换为向量形式下的起始行地址集合,其中,xc(i,j)以及yc(i,j)yc(i,j)分别[yc(i,j)[yc(i,j)用于表征向量形式下的起始行地址的横坐标以及纵坐标,ci用于表征标量形式下的起始行地址,vj用于表征标量形式下的起始列地址;m用于表征CPM大小,K用于表征并行度,Δ用于表征CPM对应的偏移值;
其中,所述将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,包括:基于以及yv(i,j)=((vj-ci-Δ)mod m)mod K,将所述标量形式下的起始列地址集合转换为向量形式下的起始列地址集合,其中,xv(i,j)以及yv(i,j)yv(i,j)分别用于表征向量形式下的起始列地址的横坐标以及纵坐标;
其中,所述基于所述向量形式下的起始行地址集合、所述向量形式下的起始列地址集合以及所述标量形式下的最小等待时间,确定所述向量形式下的最小等待时间,包括:
9.根据权利要求7或8所述的方法,其特征在于,所述向量形式下的起始行地址用于表征VNU存储空间中的位置,所述向量形式下的起始列地址用于表征CNU存储空间中的位置,所述VNU存储空间用于存储CNU更新至VNU生成的信息,所述CNU存储空间用于存储VNU更新至CNU生成的信息;
其中,所述基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,之后还包括:
每次迭代过程中,将所述至少一个CNU更新至VNU生成的信息存储至所述VNU存储空间,以及,将所述至少一个VNU更新至CNU生成的信息存储至所述CNU存储空间。
10.根据权利要求9所述的方法,其特征在于,所述CNU存储空间和所述VNU存储空间存储在同一个RAM中。
11.根据权利要求1所述的方法,其特征在于,所述最小等待时间包括标量形式下的最小等待时间;
其中,基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新,包括:
确定迭代过程中需要的时钟周期数;
根据所述标量形式下的最小等待时间与所述迭代过程中需要的时钟周期数的关系,确定相邻两次迭代之间所需要的等待时间;
基于所述相邻两次迭代之间所需要的等待时间,并通过所述标量形式下的起始行地址和起始列地址以及所述最小等待时间,对至少一个CNU以及至少一个VNU进行更新。
15.一种译码的装置,其特征在于,包括:
第一确定模块,用于确定最小等待时间,所述最小等待时间为每次迭代过程中,校验节点CNU的开始更新时间与变量节点VNU开始更新时间的差值的绝对值,每次迭代过程中包括至少一个CNU以及至少一个VNU进行更新,每次迭代过程中的最小等待时间小于所述至少一个CNU的更新时间;
更新模块,用于基于所述最小等待时间,对所述至少一个CNU以及所述至少一个VNU进行更新。
16.一种电子设备,其特征在于,包括:
一个或者多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于:执行根据权利要求1~14任一项所述的一种译码的方法。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~14任一项所述的译码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211077408.XA CN115549699A (zh) | 2022-09-05 | 2022-09-05 | 译码的方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211077408.XA CN115549699A (zh) | 2022-09-05 | 2022-09-05 | 译码的方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115549699A true CN115549699A (zh) | 2022-12-30 |
Family
ID=84725065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211077408.XA Pending CN115549699A (zh) | 2022-09-05 | 2022-09-05 | 译码的方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115549699A (zh) |
-
2022
- 2022-09-05 CN CN202211077408.XA patent/CN115549699A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392795B2 (en) | Low density parity check codec and method of the same | |
US7937648B2 (en) | Decoding device, control method, and program | |
Wang et al. | Low-complexity high-speed decoder design for quasi-cyclic LDPC codes | |
US7299397B2 (en) | Decoding apparatus, decoding method, and program to decode low density parity check codes | |
US9195536B2 (en) | Error correction decoder and error correction decoding method | |
US20160218750A1 (en) | Parity check code encoder | |
TW201320621A (zh) | 用以解碼之方法、設備及裝置、以及具體實現有機器可讀取指令程式之非暫時性電腦可讀取媒體 | |
US20180013446A1 (en) | Method and system for ldpc decoding | |
US8271851B2 (en) | Encoding and decoding a data signal as a function of a correcting code | |
US10833704B1 (en) | Low-density parity check decoder using encoded no-operation instructions | |
Lin et al. | Efficient shuffled decoder architecture for nonbinary quasi-cyclic LDPC codes | |
Yuan et al. | 4.7-Gb/s LDPC decoder on GPU | |
Tao et al. | High-throughput architecture and implementation of regular (2, d c) nonbinary LDPC decoders | |
US10554226B2 (en) | Method for controlling a check node of a NB-LDPC decoder and corresponding check node | |
KR102058499B1 (ko) | 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법 | |
JP5488472B2 (ja) | 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置 | |
Park et al. | Novel folded-KES architecture for high-speed and area-efficient BCH decoders | |
Amaricai et al. | Memory efficient FPGA implementation for flooded LDPC decoder | |
Martínez-Zaldívar et al. | Tridimensional block multiword LDPC decoding on GPUs | |
KR101631128B1 (ko) | 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 | |
WO2011067954A1 (ja) | 復号装置および復号方法 | |
US10727869B1 (en) | Efficient method for packing low-density parity-check (LDPC) decode operations | |
US11108410B1 (en) | User-programmable LDPC decoder | |
CN115549699A (zh) | 译码的方法、装置、电子设备及计算机可读存储介质 | |
CN111384970A (zh) | 一种译码方法、装置及通信设备 |
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 |