CN113612581A - 一种通用高吞吐率的ldpc译码方法及系统 - Google Patents

一种通用高吞吐率的ldpc译码方法及系统 Download PDF

Info

Publication number
CN113612581A
CN113612581A CN202110894999.9A CN202110894999A CN113612581A CN 113612581 A CN113612581 A CN 113612581A CN 202110894999 A CN202110894999 A CN 202110894999A CN 113612581 A CN113612581 A CN 113612581A
Authority
CN
China
Prior art keywords
current iteration
decoding
ldpc
value
node corresponding
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.)
Granted
Application number
CN202110894999.9A
Other languages
English (en)
Other versions
CN113612581B (zh
Inventor
尹航
戴景鑫
杨占昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Jichuan Information Technology Co ltd
Original Assignee
Zhejiang Jichuan Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Jichuan Information Technology Co ltd filed Critical Zhejiang Jichuan Information Technology Co ltd
Priority to CN202110894999.9A priority Critical patent/CN113612581B/zh
Publication of CN113612581A publication Critical patent/CN113612581A/zh
Application granted granted Critical
Publication of CN113612581B publication Critical patent/CN113612581B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • H04L1/0063Single parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2948Iterative decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明公开了一种通用高吞吐率的LDPC译码方法及系统,涉及通信技术领域,该方法包括基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作;对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。本发明能够在提升译码器吞吐率的同时能够最大限度地利用GPP的资源。

Description

一种通用高吞吐率的LDPC译码方法及系统
技术领域
本发明涉及通信技术领域,特别是涉及一种通用高吞吐率的LDPC译码方法及系统。
背景技术
低密度奇偶校验码(Low-Density Parity-Check,LDPC),即LDPC码,是1963年由Robert博士首次提出的一种具有稀疏校验矩阵的线性分组码。目前LDPC码已经广泛的应用于WiFi(IEEE802.11n)、WiMax(IEEE802.16E)、数字广播(DVB)等领域。由于LDPC码固有的并行编译码结构和较强的纠错性能,LDPC码已被3GPP采纳作为第五代移动通信技术的长码编码方案,也被认为是5G超可靠和低时延通信(uRLLC)中最有前景的错误校验码(ECC)之一。
在过去的数十年里,随着通用处理器(GPP)处理频率不断地提高,其计算性能也不断提升,同时处理器的计算模型也不断得到改善。故随着GPP硬件层面的升级更新,使得基于通用处理器实现的软件无线电平台成为可能,例如基于GPP的软件无线电设计平台Openairinterface(OAI)、AmarisoftLTE等,但是由于LDPC译码器的吞吐率性能较低,限制了此类软件无线电平台的使用。
为了进一步提升LDPC译码器的吞吐率性能,GPP通过采用了并行处理架构,例如:单指令多数据流(Single InstructionhMultiple Data,SIMD)、单程序多数据流(SingleProgram Multiple Data,SPMD)、单指令多线程(Single Instructionh Multiple Thread,SIMT)等。近年来基于SIMD架构的矢量扩展指令集得到了飞速的发展,其支持位宽从早期的64bit位宽朝着更高并行度发展。这些并行处理技术已广泛的集成在了GPP设备中,但如何将这些并行处理技术与具体算法进行高效的结合,仍然存在着许多困难。
由于LDPC码的译码算法复杂度较大,但却具有良好的并行结构,因此对LDPC译码器进行并行化设计,能够得到更高的吞吐量。目前已经有许多论文做出了关于LDPC译码器在GPP设备上实现的相关工作,主要集中于:基于传统SIMD架构采用更高位宽的矢量扩展指令集集上,通过增加同一指令周期内所处理的数据宽度,即增加同一时间所处理的LDPC码块数量来实现。虽然采用高位宽矢量扩展指令集能够提升LDPC译码器的吞吐率,但在实际通信系统中采用此类LDPC译码器会存在以下问题:
(1)由于高位宽矢量扩展指令集优化难度和GPP处理功耗的限制,矢量扩展指令集位宽的提升对LDPC译码器吞吐率的提升存在明显衰减,单纯的提升矢量扩展指令集位宽,提升单位时间处理的LDPC码块数,在多数情况下反而会增加运算指令处理时间,增加译码处理延时。
(2)高位宽矢量扩展指令集对于GPP配置的要求更高,同时其功耗要求也更高。
(3)采用高位宽矢量扩展指令集只有在通信系统中处理单元的数据位宽能够整除指令位宽时才能充分发挥其处理能力,达到其译码吞吐率的理论值。即高位宽矢量扩展指令集只有在,系统所需的LDPC译码处理单元数,刚好可以整除矢量扩展指令位宽时效率才能体现出来。系统所需的LDPC译码处理单元数和指令位宽处于非整除区间内,采用高指令位宽带来的译码器吞吐率提升,会大幅衰减。同时,由于位宽不匹配带来的无效译码运算,还会徒增系统处理功耗。
(4)为了使高位宽矢量扩展指令集的处理效率最大化,限制了采用该设计方法译码器的应用场景,同时对于采用该译码器的系统设计带来了更高的要求。
因此需要设计出一种新的自适应SIMD架构的通用高吞吐率LDPC译码方法及系统,满足通信系统中不同应用场景对于LDPC译码器的要求,同时能充分发挥基于SIMD架构的高矢量扩展指令集所带来的LDPC译码吞吐率提升。
发明内容
本发明的目的是提供一种通用高吞吐率的LDPC译码方法及系统,在提升译码器吞吐率的同时能够最大限度地利用GPP的资源。
为实现上述目的,本发明提供了如下方案:
一种通用高吞吐率的LDPC译码方法,包括:
基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统;
基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作;
对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。
可选的,所述基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型,具体包括:
基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
可选的,所述基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型,具体包括:
根据以下公式,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述公式为:
remainder=Block_number%mod(512,δ) (1);
Figure BDA0003194838390000031
Figure BDA0003194838390000032
Figure BDA0003194838390000033
Figure BDA0003194838390000034
Figure BDA0003194838390000035
其中,SIMD512代表译码单元是否采用位宽为512位的矢量扩展指令集,1表示采用,0表示未采用;
SIMD256代表译码单元是否采用位宽为256位的矢量扩展指令集;
SIMD128代表译码单元是否采用位宽为125位的矢量扩展指令集;
SIMD64代表译码单元是否采用位宽为64位的矢量扩展指令集;
SIMD32代表译码单元是否采用位宽为32位的矢量扩展指令集;
remainder代表LDPC译码块在进行目标值分组后多余的LDPC译码块个数;目标值为512/δ;δ代表定点化处理位宽;
Block_number代表LDPC译码块数量;
mod(A,B)代表A整除B得到的结果。
可选的,所述基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作,具体包括:
对待译码数据进行预处理操作;其中,预处理操作包括定点化操作和数据打包操作;
基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作。
可选的,所述基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作,具体包括:
判断当前迭代次数是否小于设定迭代次数,得到第一判断结果;
若所述第一判断结果表示所述当前迭代次数等于所述设定迭代次数,则将当前迭代次数对应的消息节点的值确定初始译码结果;
若所述第一判断结果表示所述当前迭代次数小于所述设定迭代次数,则令i=i+1,更新当前迭代次数对应的消息节点的值,并返回判断当前迭代次数是否小于设定迭代次数,得到第一判断结果的步骤;i表示当前迭代次数;
当前迭代次数对应的消息节点的值的计算公式为
Figure BDA0003194838390000041
Figure BDA0003194838390000042
表示当前迭代次数对应的消息节点的值,
Figure BDA0003194838390000043
表示当前迭代次数对应的校验节点传递到消息节点的值,
Figure BDA0003194838390000051
表示当前迭代次数对应的消息节点传递到校验节点的值;n代表第n个信息节点;m代表第m个检验节点;所述预处理操作后的待译码数据为初始化消息节点的值。
可选的,所述更新当前迭代次数对应的消息节点的值,具体包括:
根据公式
Figure BDA0003194838390000052
更新当前迭代次数对应的消息节点传递到校验节点的值;
Figure BDA0003194838390000053
表示上一次迭代次数对应的校验节点传递到消息节点的值;
根据采用归一化最小和或者偏移量最小和的方式更新当前迭代次数对应的校验节点传递到消息节点的值;
基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
可选的,所述基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作;所述预处理操作包括取绝对值操作和限幅操作;
基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
可选的,所述基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
将列迭代次数加1,并判断更新后的列迭代次数是否超过LDPC校验矩阵的列重,得到第二判断结果;
若所述第二判断结果表示更新后的列迭代次数超过LDPC校验矩阵的列重,则将行迭代次数加1,并判断更新后的行迭代次数是否超过LDPC校验矩阵的行数量,得到第三判断结果;
若所述第二判断结果表示更新后的列迭代次数未超过LDPC校验矩阵的列重,则返回对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作步骤;
若所述第三判断结果表示更新后的行迭代次数超过LDPC校验矩阵的行数量,则输出基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值确定的消息节点的值;
若所述第三判断结果表示更新后的行迭代次数未超过LDPC校验矩阵的行数量,则返回基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值的步骤。
一种通用高吞吐率的LDPC译码系统,包括
自适应配置模块,用于基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统;
译码操作模块,用于基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作;
硬判决操作模块,用于对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。
可选的,所述自适应配置模块,具体包括:
自适应配置单元,用于基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明采用不同的位宽矢量扩展指令集设计LDPC译码器,避免了高位宽的矢量扩展指令集在实际通信系统中会导致更多的CPU资源消耗引发各种问题,达到了在提升译码器吞吐率的同时能够最大限度地利用GPP的资源的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明通用高吞吐率的LDPC译码方法的流程示意图;
图2为本发明通用高吞吐率的LDPC译码方法的整体流程图;
图3为本发明自适应配置过程示意图;
图4为本发明译码操作过程示意图;
图5为现有技术与本发明不同位宽矢量扩展指令集设计的LDPC译码器吞吐率对比一图;
图6为现有技术与本发明不同位宽矢量扩展指令集设计的LDPC译码器吞吐率对比二图;
图7为本发明通用高吞吐率的LDPC译码系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种通用高吞吐率的LDPC译码方法及系统,在提升译码器吞吐率的同时能够最大限度地利用GPP的资源。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
英文缩写以及中文名称说明:
LDPC:Low-DensityParity-Check,低密度奇偶校验码。
WiFi(IEEE802.11n):无线网络。
WiMax(IEEE802.16E):World Interoperability forMicrowaveAccess,全球微波接入互操作性,即无线城域网。
DVB:DigitalVideo Broadcasting,数字广播电视。
uRLLC:UltraReliable Low Latency Communications,超可靠低时延通信。
ECC:Error Correcting Code,错误校验码。
GPP:通用处理器。
SIMD:Single InstructionhMultiple Data,单指令多数据流。
SPMD:Single ProgramMultiple Data,单程序多数据流。
SIMT:Single InstructionhMultiple Thread,单指令多线程。
MMX:Intel的一种基于X86处理器的64位位宽大小的矢量扩展指令集。
SSE:Intel的一种基于X86处理器的128位位宽大小的矢量扩展指令集。
AVX2:Intel的一种基于X86处理器的256位位宽大小的矢量扩展指令集。
AVX512:Intel的一种基于X86处理器的512位位宽大小的矢量扩展指令集。
NEON:基于ARM处理器的128位位宽大小的矢量扩展指令集。
CPU:中央处理器单元。
VEI32:不同GPP中处理数据位宽为32位的矢量扩展指令集的总称。
VEI64:不同GPP中处理数据位宽为64位的矢量扩展指令集的总称。
VEI128:不同GPP中处理数据位宽为128位的矢量扩展指令集的总称。
VEI256:不同GPP中处理数据位宽为256位的矢量扩展指令集的总称。
VEI512:不同GPP中处理数据位宽为512位的矢量扩展指令集的总称。
NMS:归一化最小和LDPC译码算法。
OMS:偏移量最小和LDPC译码算法。
LLR:对数-似然比。
VN:变量节点(消息节点)。
CN:校验节点。
CN_to_VN:校验节点传递到消息节点的数据。
VN_to_CN:消息节点传递到校验节点的数据。
ColumnDegs:列重,LDPC译码器校验矩阵中每行非零元素的个数。
NumberofDegs:不同列重在校验矩阵中出现的次数。
Max_iter_number:最大迭代次数。
如背景技术所述,目前提升基于传统SIMD架构的LDPC译码器吞吐率的主要方式是通过选择更高位宽的矢量扩展指令集,但单纯采用高位宽矢量扩展指令集,会带来上文所述的各种问题。如:随着矢量扩展指令集的位宽的提升,译码器的吞吐率达不到翻倍的效果,反而处理延时会增加,并且会消耗更多的功率,同时采用传统SIMD架构的高位宽矢量扩展指令集只有在通信系统特定的设计下才能发挥最大的吞吐率性能。
鉴于此,本发明提供的一种通用高吞吐率的LDPC译码方法及系统,能够减少现有基于高位宽矢量扩展指令集LDPC译码器中对于通信系统中不同LDPC译码需求下的无效计算,减少GPP译码处理功耗;同时通过自适应的方法最大限度的利用SIMD架构来提升译码器吞吐率。
实施例一
本实施例提供了一种基于自适应SIMD架构的通用高吞吐率的LDPC译码方法,既能提高LDPC译码器吞吐率又能够有效减少GPP在处理LDPC译码算法时的计算功耗。
本实施例提供了一种基于自适应SIMD架构的通用高吞吐率的LDPC译码方法,相较于目前普遍使用的基于SIMD架构设计的LDPC译码器,能够根据不同的场景需求切换选择使用不同的矢量扩展指令集,在提升译码器吞吐率的同时能够最大限度地利用GPP的资源。目前常用的矢量扩展指令集主要有五种类型:VEI32、VEI64、VEI128、VEI256和VEI512。其中VEI64、VEI128、VEI256和VEI512,在X86 CPU下分别通过MMX、SSE、AVX2和AVX512指令集的方式实现,分别能够对64bit、128bit、256bit和512bit的数据进行并行处理,即能够同时处理8、16、32和64个8bit大小的数据。在ARM架构的CPU上也存在基于SIMD架构的矢量扩展指令集的设计,即NEON指令集,最高能够支持128bits数据的并行计算。VEI32的设计方法则是通过将4个8bit数据整合为一个32bit的整型数据,从而实现对4个8bit数据的并行化处理,即Bit_packed。
表1在不同类型GPP上SIMD架构的常用指令集
32bit 64bit 128bit 256bit 512bit
X86 Bit_packed MMX SSE AVX2 AVX512
ARM Bit_packed \ Neon \ \
本实施例提供的基于自适应SIMD架构的通用高吞吐率的LDPC译码方法的具体实现步骤如图1所示,具体包括:
步骤101:基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统。
步骤102:基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作。
步骤103:对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。其具体操作详细参见实施例二。
下面对本实施例提供的译码方法进行更为详细的介绍。
步骤101具体包括:
基于LDPC译码块数量Block_number以及定点化处理位宽δ(取值范围4、8、16、32),自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
其中,译码单元的矢量扩展指令集类型的选择规则参照如下计算公式:
remainder=Block_number%mod(512,δ) (1);
Figure BDA0003194838390000111
Figure BDA0003194838390000112
Figure BDA0003194838390000113
Figure BDA0003194838390000114
Figure BDA0003194838390000115
其中,SIMD512代表译码单元是否采用位宽为512位的矢量扩展指令集,1表示采用,0表示未采用;SIMD256代表译码单元是否采用位宽为256位的矢量扩展指令集;SIMD128代表译码单元是否采用位宽为125位的矢量扩展指令集;SIMD64代表译码单元是否采用位宽为64位的矢量扩展指令集;SIMD32代表译码单元是否采用位宽为32位的矢量扩展指令集;remainder代表LDPC译码块在进行目标值分组后多余的LDPC译码块个数;目标值为512/δ;δ代表定点化处理位宽;Block_number代表LDPC译码块数量;mod(A,B)代表A整除B得到的结果。
步骤102具体包括:
对待译码数据进行预处理操作;所述预处理操作包括定点化操作和数据打包操作;基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作。
其中,预处理操作过程在实施例二已经详细说明,再次不过多赘述。
所述基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作,具体包括:
判断当前迭代次数是否小于设定迭代次数,得到第一判断结果。
若所述第一判断结果表示所述当前迭代次数等于所述设定迭代次数,则将当前迭代次数对应的消息节点的值确定初始译码结果。
若所述第一判断结果表示所述当前迭代次数小于所述设定迭代次数,则令i=i+1,更新当前迭代次数对应的消息节点的值,并返回判断当前迭代次数是否小于设定迭代次数,得到第一判断结果的步骤;i表示当前迭代次数。
当前迭代次数对应的消息节点的值的计算公式为
Figure BDA0003194838390000121
Figure BDA0003194838390000122
表示当前迭代次数对应的消息节点的值,
Figure BDA0003194838390000123
表示当前迭代次数对应的校验节点传递到消息节点的值,
Figure BDA0003194838390000124
表示当前迭代次数对应的消息节点传递到校验节点的值;n代表第n个信息节点;m代表第m个检验节点;所述预处理操作后的待译码数据为初始化消息节点的值。
进一步地,所述更新当前迭代次数对应的消息节点的值,具体包括:
根据公式
Figure BDA0003194838390000125
更新当前迭代次数对应的消息节点传递到校验节点的值;
Figure BDA0003194838390000126
表示上一次迭代次数对应的校验节点传递到消息节点的值。
根据采用归一化最小和或者偏移量最小和的方式更新当前迭代次数对应的校验节点传递到消息节点的值。
基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
进一步地,所述基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作;所述预处理操作包括取绝对值操作和限幅操作。
基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
进一步地,所述基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
将列迭代次数加1,并判断更新后的列迭代次数是否超过LDPC校验矩阵的列重,得到第二判断结果。
若所述第二判断结果表示更新后的列迭代次数超过LDPC校验矩阵的列重,则将行迭代次数加1,并判断更新后的行迭代次数是否超过LDPC校验矩阵的行数量,得到第三判断结果。
若所述第二判断结果表示更新后的列迭代次数未超过LDPC校验矩阵的列重,则返回对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作步骤。
若所述第三判断结果表示更新后的行迭代次数超过LDPC校验矩阵的行数量,则输出基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值确定的消息节点的值。
若所述第三判断结果表示更新后的行迭代次数未超过LDPC校验矩阵的行数量,则返回基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值的步骤。
实施例二
本实施例提供的基于自适应SIMD架构的通用高吞吐率LDPC译码方法的具体实现步骤如图2所示,主要通过四步完成:步骤一根据采用LDPC译码器的系统的需求,自适应配置译码器参数,即根据系统每次处理的LDPC译码块数量,自动选择合适的矢量扩展指令集类型,设计译码单元;步骤二在进行译码处理前,需要对待译码数据进行预处理,即对待译码数据进行定点化操作以及数据打包操作;步骤三是译码操作,即采用译码迭代算法对预处理后的待译码数据进行译码处理;步骤四是硬判决,对译码后的数据执行硬判决操作,并输出最终的数据。
对译码方法步骤的具体介绍如下:
在执行步骤一前,先配置LDPC译码器的基本参数(即用户选择配置译码器参数),例如码长以及码率。
步骤一:根据用户每次需要处理的LDPC译码块数量Block_number及用户设定的定点化处理位宽δ(取值范围4、8、16、32),自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型。
其中,译码单元的矢量扩展指令集类型的选择规则参照如下计算公式:
remainder=Block_number%mod(512,δ) (1);
Figure BDA0003194838390000141
Figure BDA0003194838390000142
Figure BDA0003194838390000143
Figure BDA0003194838390000144
Figure BDA0003194838390000145
上式中SIMD512、SIMD256、SIMD128、SIMD64和SIMD32分别代表在自适应配置后译码器的译码单元是否采用对应位宽的矢量扩展指令集,remainder代表码块分组后多余的码块个数,mod(A,B)代表A整除B得到的结果。
下面以定点化处理的位宽参数δ为8bit为例,具体介绍基于矢量扩展指令集的译码单元的确定过程,详细参见图3。
1.首先判断Block_number是否能够被64整除,并将每64个码块(LDPC译码块的简称)为一组的分组码块采用VEI512进行并行运算,之后对多余码块的数量remainder继续进行分析。
2.如果remainder大于32,则将多余码块打包采用VEI512进行并行运算,否则进行下一步计算。
3.如果remainder大于16,则将多余码块打包采用VEI256进行并行运算,否则进行下一步计算。
4.如果remainder大于8,则将多余码块打包采用VEI128进行并行运算,否则进行下一步计算。
5.如果remainder大于4,则将多余码块打包采用VEI64进行并行运算。否则进行下一步计算。
6.将多余部分码块采用VEI32进行并行运算。
步骤二:需要对接收到的待译码数据进行预处理,即进行定点化以及数据打包操作,将待译码数据预处理为适合矢量扩展指令集使用的数据类型。具体如下:
1.首先根据译码器参数中LDPC译码块的码长计算每次并行处理前,信息节点VN与传递信息节点CN_to_VN(从检验节点CN到消息节点VN)在各自缓冲区中的地址和所需的掩码类型,生成对应的起始地址表。
2.得到对应的起始地址表后,通过矢量扩展指令集中的max与min指令对输入的浮点型LLR先验数据(即待译码数据)进行定点化处理。
3.将定点化处理后的浮点型LLR先验数据存入到对应的信息节点VN缓存区,同时将传递信息节点CN_to_VN的缓存区和迭代计数器全部置零。
4.根据信息节点VN在VN缓存区中的地址,将预处理后的待译码数据传输到基于矢量扩展指令集的译码单元中,之后进入译码计算部分。
步骤三:在完成了LDPC译码器的参数配置以及对待译码数据进行预处理后开始执行译码操作。
在开始译码操作之前,先对译码操作所需的变量参数执行初始化操作,即赋予译码处理所需的变量初值,根据LDPC校验矩阵列重ColumnDegs的类型和不同类型列重的数量NumberofDegs,设计出相应的校验节点计算单元的迭代次数。
初始化操作后,从对应的缓存区中读取预处理后的待译码数据作为信息节点VN的VN值,并将迭代次数设为1,开始迭代译码操作。
首先,将行迭代次数m设为1,对当前行所有的传递消息节点VN_to_CN(消息节点传递到校验节点)的值
Figure BDA0003194838390000161
进行计算,其中i代表译码迭代次数,
Figure BDA0003194838390000162
为第i次消息节点VN的值,具体的计算公式为:
Figure BDA0003194838390000163
计算完传递消息节点VN_to_CN的值
Figure BDA0003194838390000164
后,需要对传递消息节点CN_to_VN(校验节点传递到消息节点)的值
Figure BDA0003194838390000165
进行计算。本实施例采用归一化最小和或者偏移量最小和的方式对传递消息节点CN_to_VN(校验节点传递到消息节点)的值
Figure BDA0003194838390000166
进行更新。
如果设定LDPC译码算法为OMS算法,则
Figure BDA0003194838390000167
的计算公式如下:
Figure BDA0003194838390000168
如果设定LDPC译码算法为NMS算法,则
Figure BDA0003194838390000169
的计算公式如下:
Figure BDA00031948383900001610
集合N的取值范围为(0,ColumnDegs),n'为集合N中n=m以外的所有值,参数α为NMS算法的归一化参数,参数β为OMS算法的偏移量参数。
计算完成后,对
Figure BDA0003194838390000171
Figure BDA0003194838390000172
取绝对值并进行限幅,保证
Figure BDA0003194838390000173
Figure BDA0003194838390000174
的值大于最低限值,之后将行下标m进行递增加1,指向下一个位置;如果没有超过LDPC校验矩阵列重ColumnDegs的大小便继续进行下一行相关的
Figure BDA0003194838390000175
Figure BDA0003194838390000176
的计算。
在每行的校验节点CN计算完成后,便需要对消息节点VN的值进行更新,消息节点VN的信息的下标为n。先读取每次需要的VN_to_CN的值
Figure BDA0003194838390000177
和CN_to_VN的值
Figure BDA0003194838390000178
消息节点VN的值
Figure BDA0003194838390000179
为两者之和,计算完成后对n值进行判断,如果n小于ColumnDegs,那么n加1继续进行消息节点VN的计算,否则便退出循环进行下一环节。消息节点VN的值
Figure BDA00031948383900001710
的计算公式如下:
Figure BDA00031948383900001711
计算完消息节点的值后,对译码迭代次数加1并进行判断,如果没有超过最大译码迭代次数便重新执行译码操作,否则中止译码进入下一步。译码流程如图4所示。同时图4标注了每个译码步骤所需采用的矢量扩展指令,其中矢量扩展指令的类型由本实施例步骤一得出。
本实施例针对译码部分的操作进行了并行化处理。基于矢量扩展指令集的并行化处理具体步骤如下:
1.初始化译码迭代次数i,将其设置为0。
2.初始化LDPC译码器的参数。初始化行迭代次数m和列迭代次数n,将其设置为0。
3.开始对应行的消息节点VN值
Figure BDA00031948383900001714
的计算。通过load指令读取缓存区中的
Figure BDA00031948383900001712
数据。
4.通过sub指令完成对VN_to_CN的
Figure BDA00031948383900001713
值的计算,并通过max和min指令对数据进行限幅。
5.计算得出
Figure BDA0003194838390000181
值后通过sign指令来获得每个
Figure BDA0003194838390000182
值的符号sign,并对除n=m以外的所有sign值通过xor指令执行累乘操作。
6.在运算过程中使用min指令同时记录
Figure BDA0003194838390000183
的最小值minmun和次小值second_smallest_value。
7.结合xor指令、abs指令、sub指令和blend指令计算得出
Figure BDA0003194838390000184
的值。
8.将VN_to_CN的
Figure BDA0003194838390000185
值和CN_to_VN的
Figure BDA0003194838390000186
值通过abs指令将数据取得绝对值。
9.针对于这部分操作本发明的译码器也进行了并行化处理,首先将VN_to_CN的
Figure BDA0003194838390000187
值和CN_to_VN的
Figure BDA0003194838390000188
值通过abs指令将数据取得绝对值,之后使用max指令和min指令对数据进行限幅。最后使用and指令将传递信息数据求和得出新的En值,并采用max和min指令执行限幅操作。
10.将列迭代次数加1,进行判断,如果不超过列重ColumnDegs的大小,重复第9步,否则进行下一步。
11.将行迭代次数加1,进行判断,如果不超过行数量NumberofDegs大小重新进行第3步,否则进行下一步。
12.将译码迭代次数加1,进行判断,如果不超过最大迭代次数Max_iter_number,重新进行第2步,否则进行下一步开始硬判决操作。
步骤四:当达到最大迭代次数后,需要将对应消息节点VN的En值进行硬判决。
硬判决操作是通过调用min指令来完成,当译码得到的数据大于0时判决结果为1,小于0时判决结果为0。
由于在译码过程中采用了并行处理的方式,所以在进行硬判决的同时需要对数据进列重排序,重排序操作是通过mov和blend指令完成,之后通过store指令将数据存储到数据缓存区,输出LDPC译码后的最终结果。
目前提升基于GPP设计的LDPC译码器吞吐率的方式主要是通过选择高带宽的矢量扩展指令集,但高位宽的矢量扩展指令集在实际通信系统中会导致更多的CPU资源消耗引发各种问题,例如:随着矢量扩展指令集位宽的翻倍,译码器的吞吐率达不到翻倍的效果,反而会导致处理延时会增加并消耗更多的功率,采用高位宽的矢量扩展指令集只有在特定应用场景下才能发挥最大的吞吐率性能。因此采用高位宽的矢量扩展指令集设计LDPC译码器的方式虽然带来了吞吐率的提升,但是对于GPP的计算资源造成了极大的浪费。采用不同位宽矢量扩展指令集设计的LDPC译码器吞吐率如图5和图6所示,从图中可以看出采用位宽高的矢量扩展指令集并非一直能够取得最佳的吞吐率。基于上述理由本实施例提供的一种基于自适应SIMD架构的通用高吞吐率LDPC译码方法,用来适应不同场景的需求,从图5和图6中可以看出采用自适应的方式吞吐率能够一直达到最佳的效果。
本实施例采用了自适应的设计思路,针对不同的应用场景能够自动选择最佳的矢量扩展指令集。一方面保证能在不同应用场景下都达到最佳的吞吐率性能,另一方面在保证高吞吐率的同时有效的利用了GPP的指令集资源,减少了资源的浪费。
实施例三。
请参见图7,本实施例提供的一种通用高吞吐率的LDPC译码系统,包括:
自适应配置模块701,用于基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统。
译码操作模块702,用于基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作。
硬判决操作模块703,用于对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。
所述自适应配置模块701,具体包括:
自适应配置单元,用于基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
基于自适应SIMD指令集架构的通用高吞吐率LDPC译码方法及系统,解决的技术问题主要体现在:
一是,本发明解决了采用传统SIMD架构的高位宽矢量扩展指令集只有在通信系统特定的设计下才能发挥最大的吞吐率性能的问题。
二是,本发明在不同通信系统中不同应用场景下,均可以最大程度上发挥出基于SIMD架构下通过采用高位宽的矢量扩展指令集所带来的译码吞吐率提升,同时在提升LDPC译码器吞吐率的,可以有效减少GPP在处理LDPC译码算法计算时的无效运算,降低了系统功耗。
三是,本发明所提出的一种基于自适应SIMD架构的通用高吞吐率LDPC译码方法及系统,不限于特定的LDPC译码算法,具有良好的适用性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种通用高吞吐率的LDPC译码方法,其特征在于,包括:
基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统;
基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作;
对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。
2.根据权利要求1所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型,具体包括:
基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
3.根据权利要求2所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型,具体包括:
根据以下公式,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述公式为:
remainder=Block_number%mod(512,δ) (1);
Figure FDA0003194838380000011
Figure FDA0003194838380000012
Figure FDA0003194838380000013
Figure FDA0003194838380000021
Figure FDA0003194838380000022
其中,SIMD512代表译码单元是否采用位宽为512位的矢量扩展指令集,1表示采用,0表示未采用;
SIMD256代表译码单元是否采用位宽为256位的矢量扩展指令集;
SIMD128代表译码单元是否采用位宽为125位的矢量扩展指令集;
SIMD64代表译码单元是否采用位宽为64位的矢量扩展指令集;
SIMD32代表译码单元是否采用位宽为32位的矢量扩展指令集;
remainder代表LDPC译码块在进行目标值分组后多余的LDPC译码块个数;目标值为512/δ;δ代表定点化处理位宽;
Block_number代表LDPC译码块数量;
mod(A,B)代表A整除B得到的结果。
4.根据权利要求1所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作,具体包括:
对待译码数据进行预处理操作;其中,预处理操作包括定点化操作和数据打包操作;
基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作。
5.根据权利要求4所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对预处理操作后的待译码数据进行译码操作,具体包括:
判断当前迭代次数是否小于设定迭代次数,得到第一判断结果;
若所述第一判断结果表示所述当前迭代次数等于所述设定迭代次数,则将当前迭代次数对应的消息节点的值确定初始译码结果;
若所述第一判断结果表示所述当前迭代次数小于所述设定迭代次数,则令i=i+1,更新当前迭代次数对应的消息节点的值,并返回判断当前迭代次数是否小于设定迭代次数,得到第一判断结果的步骤;i表示当前迭代次数;
当前迭代次数对应的消息节点的值的计算公式为
Figure FDA0003194838380000031
Figure FDA0003194838380000032
表示当前迭代次数对应的消息节点的值,
Figure FDA0003194838380000033
表示当前迭代次数对应的校验节点传递到消息节点的值,
Figure FDA0003194838380000034
表示当前迭代次数对应的消息节点传递到校验节点的值;n代表第n个信息节点;m代表第m个检验节点;所述预处理操作后的待译码数据为初始化消息节点的值。
6.根据权利要求5所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述更新当前迭代次数对应的消息节点的值,具体包括:
根据公式
Figure FDA0003194838380000035
更新当前迭代次数对应的消息节点传递到校验节点的值;
Figure FDA0003194838380000036
表示上一次迭代次数对应的校验节点传递到消息节点的值;
根据采用归一化最小和或者偏移量最小和的方式更新当前迭代次数对应的校验节点传递到消息节点的值;
基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
7.根据权利要求6所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作;所述预处理操作包括取绝对值操作和限幅操作;
基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值。
8.根据权利要求7所述的一种通用高吞吐率的LDPC译码方法,其特征在于,所述基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值,具体包括:
将列迭代次数加1,并判断更新后的列迭代次数是否超过LDPC校验矩阵的列重,得到第二判断结果;
若所述第二判断结果表示更新后的列迭代次数超过LDPC校验矩阵的列重,则将行迭代次数加1,并判断更新后的行迭代次数是否超过LDPC校验矩阵的行数量,得到第三判断结果;
若所述第二判断结果表示更新后的列迭代次数未超过LDPC校验矩阵的列重,则返回对更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值分别进行预处理操作步骤;
若所述第三判断结果表示更新后的行迭代次数超过LDPC校验矩阵的行数量,则输出基于预处理操作后的当前迭代次数对应的消息节点传递到校验节点的值和预处理操作后的当前迭代次数对应的校验节点传递到消息节点的值确定的消息节点的值;
若所述第三判断结果表示更新后的行迭代次数未超过LDPC校验矩阵的行数量,则返回基于更新后的当前迭代次数对应的消息节点传递到校验节点的值和更新后的当前迭代次数对应的校验节点传递到消息节点的值,更新当前迭代次数对应的消息节点的值的步骤。
9.一种通用高吞吐率的LDPC译码系统,其特征在于,包括:
自适应配置模块,用于基于目标系统的需求,自适应配置LDPC译码器的矢量扩展指令集类型;所述目标系统为包括LDPC译码器的系统;
译码操作模块,用于基于自适应配置的LDPC译码器的矢量扩展指令集类型以及并行处理方式,对待译码数据进行译码操作;
硬判决操作模块,用于对初始译码结果进行硬判决操作,以得到最终译码结果;所述初始译码结果为对待译码数据进行译码操作后得到的数据。
10.根据权利要求9所述的一种通用高吞吐率的LDPC译码系统,其特征在于,所述自适应配置模块,具体包括:
自适应配置单元,用于基于LDPC译码块数量以及定点化处理位宽,自适应配置LDPC译码器的译码单元采用的矢量扩展指令集类型;所述目标系统的需求包括LDPC译码块数量和定点化处理位宽。
CN202110894999.9A 2021-08-03 2021-08-03 一种通用高吞吐率的ldpc译码方法及系统 Active CN113612581B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110894999.9A CN113612581B (zh) 2021-08-03 2021-08-03 一种通用高吞吐率的ldpc译码方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110894999.9A CN113612581B (zh) 2021-08-03 2021-08-03 一种通用高吞吐率的ldpc译码方法及系统

Publications (2)

Publication Number Publication Date
CN113612581A true CN113612581A (zh) 2021-11-05
CN113612581B CN113612581B (zh) 2022-03-11

Family

ID=78307011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110894999.9A Active CN113612581B (zh) 2021-08-03 2021-08-03 一种通用高吞吐率的ldpc译码方法及系统

Country Status (1)

Country Link
CN (1) CN113612581B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610362A (zh) * 2023-04-27 2023-08-18 合芯科技(苏州)有限公司 一种处理器指令集译码方法、系统、设备和存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153934A1 (en) * 2002-08-20 2004-08-05 Hui Jin Methods and apparatus for encoding LDPC codes
CN101488760A (zh) * 2009-02-13 2009-07-22 华中科技大学 一种低码率ldpc码的编码方法
EP2211469A1 (en) * 2009-01-23 2010-07-28 Nokia Siemens Networks Oy Method of encoding or decoding for LDPC codes
CN101854177A (zh) * 2009-04-01 2010-10-06 中国科学院微电子研究所 一种高吞吐率的ldpc译码器
CN102164023A (zh) * 2011-03-31 2011-08-24 复旦大学 自适应动态量化ldpc码译码方法
CN102340317A (zh) * 2010-07-21 2012-02-01 中国科学院微电子研究所 结构化ldpc码的高吞吐率译码器结构及方法
CN202475439U (zh) * 2011-11-28 2012-10-03 中国电子科技集团公司第五十四研究所 一种基于可配置qc-ldpc编译码算法的硬件仿真验证平台
CN103684474A (zh) * 2012-08-31 2014-03-26 中国科学院上海高等研究院 一种高速ldpc译码器的实现方法
US20150188568A1 (en) * 2013-12-27 2015-07-02 Samsung Electronics Co., Ltd. Method and apparatus for decoding non-binary parity check code
CN106341136A (zh) * 2015-07-08 2017-01-18 北京忆芯科技有限公司 Ldpc解码方法及其装置
CN110730005A (zh) * 2019-10-12 2020-01-24 湖南智领通信科技有限公司 一种基于矢量指令集的ldpc码快速译码方法
CN111211790A (zh) * 2020-02-25 2020-05-29 重庆邮电大学 一种面向5g终端的高吞吐率ldpc译码算法及架构

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153934A1 (en) * 2002-08-20 2004-08-05 Hui Jin Methods and apparatus for encoding LDPC codes
EP2211469A1 (en) * 2009-01-23 2010-07-28 Nokia Siemens Networks Oy Method of encoding or decoding for LDPC codes
CN101488760A (zh) * 2009-02-13 2009-07-22 华中科技大学 一种低码率ldpc码的编码方法
CN101854177A (zh) * 2009-04-01 2010-10-06 中国科学院微电子研究所 一种高吞吐率的ldpc译码器
CN102340317A (zh) * 2010-07-21 2012-02-01 中国科学院微电子研究所 结构化ldpc码的高吞吐率译码器结构及方法
CN102164023A (zh) * 2011-03-31 2011-08-24 复旦大学 自适应动态量化ldpc码译码方法
CN202475439U (zh) * 2011-11-28 2012-10-03 中国电子科技集团公司第五十四研究所 一种基于可配置qc-ldpc编译码算法的硬件仿真验证平台
CN103684474A (zh) * 2012-08-31 2014-03-26 中国科学院上海高等研究院 一种高速ldpc译码器的实现方法
US20150188568A1 (en) * 2013-12-27 2015-07-02 Samsung Electronics Co., Ltd. Method and apparatus for decoding non-binary parity check code
CN106341136A (zh) * 2015-07-08 2017-01-18 北京忆芯科技有限公司 Ldpc解码方法及其装置
CN110730005A (zh) * 2019-10-12 2020-01-24 湖南智领通信科技有限公司 一种基于矢量指令集的ldpc码快速译码方法
CN111211790A (zh) * 2020-02-25 2020-05-29 重庆邮电大学 一种面向5g终端的高吞吐率ldpc译码算法及架构

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
孟嘉慧; 赵旦峰; 田海: "面向5G的多元LDPC改进译码算法的仿真研究", 《计算机科学》 *
朱孝银: "模拟器指令集扩展的设计与实现", 《计算机应用与软件》 *
辛培哲; 林灯生: "LDPC码原理及其在无线通信中的应用前景", 《中国新通信》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610362A (zh) * 2023-04-27 2023-08-18 合芯科技(苏州)有限公司 一种处理器指令集译码方法、系统、设备和存储介质
CN116610362B (zh) * 2023-04-27 2024-02-23 合芯科技(苏州)有限公司 一种处理器指令集译码方法、系统、设备和存储介质

Also Published As

Publication number Publication date
CN113612581B (zh) 2022-03-11

Similar Documents

Publication Publication Date Title
US7373581B2 (en) Device, program, and method for decoding LDPC codes
CN101478314B (zh) 一种里德-所罗门编码译码器及其译码的方法
Murugappa et al. A flexible high throughput multi-ASIP architecture for LDPC and turbo decoding
CN110784232B (zh) 一种空间耦合ldpc码滑窗译码方法
US10484009B2 (en) Decoding method and decoder for low-density parity-check code
US20090113174A1 (en) Sign Operation Instructions and Circuitry
GB2563419A (en) Polar decoder, communication unit, integrated circuit and method therefor
CN113612581B (zh) 一种通用高吞吐率的ldpc译码方法及系统
CN105262493A (zh) 低密度奇偶校验码的译码方法
JP6446459B2 (ja) 値集合の中から第1の極値および第2の極値を識別するための方法および装置
Xu et al. AVX-512 based software decoding for 5G LDPC codes
CN107395326B (zh) Lt码中的度分布优化算法及设备
US10742355B2 (en) Apparatus that receives non-binary polar code and decoding method thereof
CN108365918B (zh) 一种基于有效集中准则的多元ldpc码译码方法
Zhao et al. High performance LDPC decoder on CELL BE for WiMAX system
Tiwari et al. Flexible LDPC decoder using stream data processing for 802.11 n and 802.16 e
CN100417031C (zh) 宽带无线接入系统中里德索洛门卷积级联码的实现方法
CN109245775B (zh) 一种译码器及其实现译码的方法
CN110380735A (zh) 一种基于单指令多数据流的软件实现qc-ldpc译码方法
CN113595564B (zh) 基于信息截断的低复杂度多进制ldpc码译码器装置
Pan et al. A high throughput LDPC decoder in CMMB based on virtual radio
KR102170785B1 (ko) 병렬 sc 복호기의 멀티비트 부분합 네트워크 장치
Debbabi et al. Real time LP decoding of LDPC codes for high correction performance applications
US11483011B2 (en) Decoding method, decoding device, and decoder
Yin et al. High throughput parallel encoding and decoding architecture for polar codes

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