[go: up one dir, main page]

CN118539932A - QC-LDPC decoder - Google Patents

QC-LDPC decoder Download PDF

Info

Publication number
CN118539932A
CN118539932A CN202411008991.8A CN202411008991A CN118539932A CN 118539932 A CN118539932 A CN 118539932A CN 202411008991 A CN202411008991 A CN 202411008991A CN 118539932 A CN118539932 A CN 118539932A
Authority
CN
China
Prior art keywords
decoding
data
round
value
memory
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
CN202411008991.8A
Other languages
Chinese (zh)
Other versions
CN118539932B (en
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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202411008991.8A priority Critical patent/CN118539932B/en
Publication of CN118539932A publication Critical patent/CN118539932A/en
Application granted granted Critical
Publication of CN118539932B publication Critical patent/CN118539932B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明公开了一种QC‑LDPC译码器,属于译码器技术领域;译码器包括多个并行译码的译码单元,每个译码单元内部均设置有轮次计数器,当完成一轮译码操作后,终止器判决所得的译码结果是否满足迭代停止条件,若是,则重新将轮次计数器的值置为0;否则,对轮次计数器的值进行加一操作;对应地,译码计算器则根据轮次计数器的值确定当前的待处理数据,当轮次计数器的值为0时,译码计算器接收待译码数据的输入作为当前的待处理数据;当轮次计数器的值不为0时,译码计算器将上一轮次下的译码结果作为当前的待处理数据;本发明将所有译码单元对齐的工作时间降低为一次译码轮次的执行时间,能够在保证译码速度较快的前提下降低时间上的浪费。

The invention discloses a QC-LDPC decoder, belonging to the technical field of decoders; the decoder comprises a plurality of decoding units for parallel decoding, each decoding unit is provided with a round counter, after completing a round of decoding operation, a terminator determines whether the obtained decoding result meets the iteration stop condition, if so, the value of the round counter is reset to 0; otherwise, the value of the round counter is incremented by one; correspondingly, a decoding calculator determines current to-be-processed data according to the value of the round counter, when the value of the round counter is 0, the decoding calculator receives the input of the to-be-decoded data as the current to-be-processed data; when the value of the round counter is not 0, the decoding calculator uses the decoding result of the previous round as the current to-be-processed data; the invention reduces the working time of aligning all decoding units to the execution time of one decoding round, and can reduce the waste of time under the premise of ensuring a fast decoding speed.

Description

一种QC-LDPC译码器A QC-LDPC decoder

技术领域Technical Field

本发明属于译码器技术领域,更具体地,涉及一种QC-LDPC译码器。The present invention belongs to the technical field of decoders, and more specifically, relates to a QC-LDPC decoder.

背景技术Background Art

社会进步带来了对存储设备容量和速度的日益增长的需求。低密度奇偶校验码(LDPC)作为一种高效且强大的线性错误纠正码,其性能接近香农极限,已成为在嘈杂的物理环境中建立可靠网络空间的可靠手段。准循环(QC)LDPC码是LDPC码的一种变体,它拥有便于硬件执行的标准码结构,因而被广泛采纳于多种无线通信标准,诸如WiFi、WiMax、DVB-S2以及CCSDS,同时也被应用于数据存储领域,例如固态硬盘。LDPC码的译码器在代码架构、译码算法以及硬件实现等方面已被广泛研究。Social progress has brought about an increasing demand for the capacity and speed of storage devices. As an efficient and powerful linear error correction code with performance close to the Shannon limit, low-density parity-check code (LDPC) has become a reliable means to establish a reliable network space in a noisy physical environment. Quasi-cyclic (QC) LDPC code is a variant of LDPC code. It has a standard code structure that is easy to execute in hardware, so it is widely adopted in various wireless communication standards such as WiFi, WiMax, DVB-S2 and CCSDS. It is also used in the field of data storage, such as solid-state drives. The decoder of LDPC code has been widely studied in terms of code architecture, decoding algorithm and hardware implementation.

高层次综合(High-Level Synthesis, HLS)代表了一种自动化的设计流程,它将算法的逻辑行为从高级描述语言编译成相应硬件(如FPGA、DSP等)在寄存器传输级(RTL)的实现。利用HLS进行自动化的硬件开发不仅提高了生产力,也增加了设计的灵活性,这使得它在大规模及需要新增功能的场景中,如机器学习、图形处理和特定领域的加速器中得到了广泛应用。目前市场上主要的HLS工具,如Vivado HLS和Intel HLS,支持C/C++作为开发语言,并通过额外的编译指示或指令来描述硬件行为。High-Level Synthesis (HLS) represents an automated design process that compiles the logical behavior of an algorithm from a high-level description language into the implementation of the corresponding hardware (such as FPGA, DSP, etc.) at the register transfer level (RTL). Using HLS for automated hardware development not only improves productivity, but also increases design flexibility, which makes it widely used in large-scale scenarios that require new functions, such as machine learning, graphics processing, and accelerators in specific fields. The main HLS tools on the market, such as Vivado HLS and Intel HLS, support C/C++ as development languages and describe hardware behavior through additional compilation instructions or directives.

LDPC译码是一个复杂且动态的算法,需要执行变量消息传递迭代,直到满足停止规则(即所有奇偶校验方程都得到满足)。迭代次数则取决于信道噪声、消息量化以及LDPC代码速率。译码单元是QC-LDPC迭代译码过程中的核心,为了加快迭代译码的速度和提高整个译码器的吞吐量,现有技术中往往使用多个译码单元同时并行译码。在现有的HLS设计中,为了进一步地加快译码速度,在译码单元内部增加了终止判决器,减少译码的次数。但是终止判决器的增加,也使得译码单元的译码次数出现了差异性,并行、同步的硬件设计,HLS无法解决所有译码单元的译码时间对齐的问题,最快的译码单元必须等待最慢的译码单元译码结束后才可以进行下一模块的工作,造成时间上的浪费。基于上述分析,目前基于HLS的QC-LDPC译码器的硬件实现效率仍有待提高。LDPC decoding is a complex and dynamic algorithm that requires variable message passing iterations until the stopping rule is met (i.e., all parity check equations are satisfied). The number of iterations depends on the channel noise, message quantization, and LDPC code rate. The decoding unit is the core of the QC-LDPC iterative decoding process. In order to speed up the iterative decoding and improve the throughput of the entire decoder, multiple decoding units are often used in the prior art to decode in parallel. In the existing HLS design, in order to further speed up the decoding speed, a termination decision device is added inside the decoding unit to reduce the number of decodings. However, the addition of the termination decision device also makes the number of decodings of the decoding unit different. With the parallel and synchronous hardware design, HLS cannot solve the problem of decoding time alignment of all decoding units. The fastest decoding unit must wait for the slowest decoding unit to finish decoding before it can work on the next module, resulting in a waste of time. Based on the above analysis, the hardware implementation efficiency of the QC-LDPC decoder based on HLS still needs to be improved.

发明内容Summary of the invention

针对现有技术的以上缺陷或改进需求,本发明提供了一种QC-LDPC译码器,用以解决现有无法在保证译码速度较快的前提下降低时间上的浪费的技术问题。In view of the above defects or improvement needs of the prior art, the present invention provides a QC-LDPC decoder to solve the technical problem that the prior art cannot reduce the time waste while ensuring a faster decoding speed.

为了实现上述目的,第一方面,本发明提供了一种QC-LDPC译码器,包括:多个并行的译码单元;In order to achieve the above-mentioned object, in a first aspect, the present invention provides a QC-LDPC decoder, comprising: a plurality of parallel decoding units;

译码单元包括:译码计算器、译码结果内存、轮次计数器和终止器;轮次计数器的值初始为0;The decoding unit includes: a decoding calculator, a decoding result memory, a round counter and a terminator; the value of the round counter is initially 0;

译码计算器用于获取当前轮次下的待处理数据,对待处理数据进行译码,得到当前轮次下的译码结果,并输出至译码结果内存中进行存储;其中,当轮次计数器的值为0时,译码计算器将待译码数据作为当前轮次下的待处理数据;当轮次计数器的值不为0时,译码计算器将上一轮次下的译码结果作为当前轮次下的待处理数据;The decoding calculator is used to obtain the data to be processed in the current round, decode the data to be processed, obtain the decoding result in the current round, and output it to the decoding result memory for storage; wherein, when the value of the round counter is 0, the decoding calculator uses the data to be decoded as the data to be processed in the current round; when the value of the round counter is not 0, the decoding calculator uses the decoding result in the previous round as the data to be processed in the current round;

终止器用于从译码结果内存中读取当前轮次下的译码结果进行终止判决,若该译码结果满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值,则控制译码结果内存输出该译码结果,并将轮次计数器的值置为0;否则,对轮次计数器的值进行加一操作;其中,停止判决条件为译码结果按位进行异或后的结果为0。The terminator is used to read the decoding result of the current round from the decoding result memory to make a termination decision. If the decoding result meets the stopping decision condition of LDPC or the value in the round counter reaches the preset maximum value, the decoding result memory is controlled to output the decoding result and the value of the round counter is set to 0; otherwise, the value of the round counter is incremented by one; wherein the stopping decision condition is that the result of bitwise XOR of the decoding result is 0.

进一步优选地,译码计算器包括:数据计算内存、n个并行的校验节点计算单元、以及m个并行的变量节点计算单元;m和n分别为LDPC译码基矩阵的行数和列数;Further preferably, the decoding calculator comprises: a data calculation memory, n parallel check node calculation units, and m parallel variable node calculation units; m and n are the number of rows and columns of the LDPC decoding base matrix respectively;

数据计算内存用于获取当前轮次下的待处理数据,并将待处理数据划分为n个数据块,并一一对应输入至n个校验节点计算单元中进行校验节点更新,得到校验节点更新后的数据;将校验节点更新后的数据划分为m个数据块,并一一对应输入至m个并行的变量节点计算单元中进行变量节点更新,得到m个译码数据块,构成当前轮次下的译码结果,并保存,同时输出至译码结果内存中进行存储。The data calculation memory is used to obtain the data to be processed in the current round, and divide the data to be processed into n data blocks, and input them one by one into n check node calculation units to update the check nodes, so as to obtain the data after the check nodes are updated; the data after the check nodes are updated is divided into m data blocks, and input them one by one into m parallel variable node calculation units to update the variable nodes, so as to obtain m decoding data blocks, which constitute the decoding results in the current round, and save them, and output them to the decoding result memory for storage.

进一步优选地,终止器包括:终止模块和判决控制器;Further preferably, the terminator comprises: a termination module and a decision controller;

终止模块包括:判决计算内存;当当前轮次为第一轮次时,判决计算内存中存储的上一轮次下的判决值为1;The termination module includes: a judgment calculation memory; when the current round is the first round, the judgment value of the previous round stored in the judgment calculation memory is 1;

判决控制器用于从判决计算内存中获取上一轮次下的判决值,并判断该判决值是否为0,若是,则判定当前轮次下的译码结果满足LDPC的停止判决条件;否则,判定当前轮次下的译码结果不满足LDPC的停止判决条件;The decision controller is used to obtain the decision value of the previous round from the decision calculation memory, and determine whether the decision value is 0. If so, it is determined that the decoding result of the current round meets the stop decision condition of the LDPC; otherwise, it is determined that the decoding result of the current round does not meet the stop decision condition of the LDPC;

终止模块用于当当前轮次下的译码结果不满足LDPC的停止判决条件时,从译码结果内存中读取当前轮次下的译码结果,对译码结果中的m个译码数据块,分别基于LDPC译码基矩阵进行备份,并将备份得到的译码数据块副本存储在判决计算内存的不同位置处,构成OMBA内存阵列;获取OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本的第k ij 个数据,记为标记数据;将OMBA内存阵列中每一列上的所有标记数据进行异或运算,得到对应的列异或结果,并将所有列的列异或结果进行或运算,得到当前轮次下的判决值,并存储在判决计算内存中;The termination module is used for reading the decoding result of the current round from the decoding result memory when the decoding result of the current round does not meet the stop decision condition of LDPC, backing up the m decoding data blocks in the decoding result based on the LDPC decoding base matrix respectively, and storing the copies of the backed-up decoding data blocks at different positions of the decision calculation memory to form an OMBA memory array; obtaining the kijth data of the copy of the decoding data block stored in the memory block of the i-th row and j-th column of the OMBA memory array, recorded as the marking data; performing an XOR operation on all the marking data on each column in the OMBA memory array to obtain the corresponding column XOR result, and performing an OR operation on the column XOR results of all columns to obtain the decision value of the current round, and storing it in the decision calculation memory;

其中,记译码结果中的第i个译码数据块为OMB i i=1,2,...,m;OMB i 的副本数量与LDPC译码基矩阵第i行中非0元素的数量相同;OMB i 的副本存储在OMBA内存阵列的第i行,且在该行中的相对位置与LDPC译码基矩阵第i行中非0元素的相对位置保持一致;The i -th decoded data block in the decoding result is denoted as OMB i , i =1,2,...,m; the number of copies of OMB i is the same as the number of non-zero elements in the i - th row of the LDPC decoding base matrix; the copy of OMB i is stored in the i- th row of the OMBA memory array, and the relative position in the row is consistent with the relative position of the non-zero elements in the i -th row of the LDPC decoding base matrix;

k ij 为针对OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本,从其第个数据所在的位置开始循环右移当前子迭代次数后的位置序号;为LDPC译码基矩阵第i行第j列的值;每个轮次包括M个子迭代;M为待译码数据的位数与基矩阵长度n的比值;每个子迭代对应待译码数据中的一位数据在当前轮次下的译码过程;j=1,2,...,n。 k ij is a copy of the decoded data block stored in the memory block in the i-th row and j- th column of the OMBA memory array, from which The position number after the current sub-iteration number starts from the position where the data is located and moves right cyclically; is the value of the i- th row and j -th column of the LDPC decoding base matrix; each round includes M sub-iterations; M is the ratio of the number of bits of the data to be decoded to the length n of the base matrix; each sub-iteration corresponds to the decoding process of one bit of the data to be decoded in the current round; j =1,2,...,n.

进一步优选地,上述QC-LDPC译码器还包括:输入输出模块;Further preferably, the QC-LDPC decoder further includes: an input and output module;

输入输出模块包括:用于缓存待译码数据的输入模块、和用于缓存译码结果的输出模块;输入模块包括:多个输入缓冲器;输出模块包括:多个输出缓冲器;输入缓冲器、输出缓冲器及译码单元的数量相同,且两两之间一一对应;The input and output modules include: an input module for caching data to be decoded, and an output module for caching decoding results; the input module includes: a plurality of input buffers; the output module includes: a plurality of output buffers; the number of input buffers, output buffers and decoding units is the same, and there is a one-to-one correspondence between them;

当轮次计数器的值为0时,译码计算器从对应的输入缓冲器中读取待译码数据,作为当前轮次下的待处理数据;When the value of the round counter is 0, the decoding calculator reads the data to be decoded from the corresponding input buffer as the data to be processed in the current round;

终止器用于当当前轮次下的译码结果满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值时,控制译码结果内存将该译码结果输出至输出缓冲器,并将轮次计数器的值置为0。The terminator is used to control the decoding result memory to output the decoding result to the output buffer and set the value of the round counter to 0 when the decoding result in the current round meets the stop decision condition of LDPC or the value in the round counter reaches the preset maximum value.

进一步优选地,译码单元与对应的输入缓冲器之间设置有输入FIFO队列;译码单元与对应的输出缓冲器之间设置有输出FIFO队列。Further preferably, an input FIFO queue is arranged between the decoding unit and the corresponding input buffer; and an output FIFO queue is arranged between the decoding unit and the corresponding output buffer.

进一步优选地,输入模块中设置有第一全局任务计数器,输出模块中设置有第二全局任务计数器,每一个译码单元中设置有局部任务计数器;Further preferably, a first global task counter is provided in the input module, a second global task counter is provided in the output module, and a local task counter is provided in each decoding unit;

局部任务计数器用于当其所在的译码单元中的译码结果内存每输出一个译码结果时,进行加一操作;且当局部任务计数器的值达到预设局部译码数量后,控制其所在的译码单元停止工作;The local task counter is used to perform an increment operation when the decoding result memory in the decoding unit where it is located outputs a decoding result each time; and when the value of the local task counter reaches a preset local decoding number, the decoding unit where it is located is controlled to stop working;

第一全局任务计数器用于当任一输入缓冲器每输出一个译码结果至对应译码单元时,进行加一操作;且当第一全局任务计数器的值达到预设整体译码数量后,控制输入模块停止工作;The first global task counter is used to perform an increment operation when any input buffer outputs a decoding result to the corresponding decoding unit; and when the value of the first global task counter reaches a preset overall decoding quantity, the input module is controlled to stop working;

第二全局任务计数器用于当任一输出缓冲器每从对应译码单元接收到一个译码结果时,进行加一操作;且当第二全局任务计数器的值达到预设整体译码数量后,控制QC-LDPC译码器停止工作。The second global task counter is used to perform an increment operation when any output buffer receives a decoding result from the corresponding decoding unit; and when the value of the second global task counter reaches a preset overall decoding quantity, the QC-LDPC decoder is controlled to stop working.

第二方面,本发明提供了一种存储设备,包括本发明第一方面所提供的QC-LDPC译码器。In a second aspect, the present invention provides a storage device, comprising the QC-LDPC decoder provided in the first aspect of the present invention.

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:In general, the above technical solutions conceived by the present invention can achieve the following beneficial effects:

1、本发明提供了一种QC-LDPC译码器,该译码器包括多个并行译码的译码单元,每个译码单元内部均设置有轮次计数器,通过使用轮次计数器记录该译码单元的译码轮次次数来控制数据流的流动;具体地,当完成一轮译码操作后,终止器判决所得的译码结果是否满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值,若是,则重新将轮次计数器的值置为0;否则,对轮次计数器的值进行加一操作;对应地,译码计算器则根据轮次计数器的值确定当前的待处理数据,当轮次计数器的值为0时,译码计算器接收待译码数据的输入作为当前的待处理数据;当轮次计数器的值不为0时,译码计算器将上一轮次下的译码结果作为当前的待处理数据;通过以上操作,本发明将所有译码单元对齐的工作时间降低为一次译码轮次的执行时间,避免了最快的译码单元等待最慢的译码单元译码结束后才可以进行下一模块的工作的情况,能够在保证译码速度较快的前提下降低时间上的浪费。1. The present invention provides a QC-LDPC decoder, which includes a plurality of decoding units for parallel decoding, each of which is provided with a round counter, and the flow of data stream is controlled by using the round counter to record the number of decoding rounds of the decoding unit; specifically, after completing a round of decoding operation, a terminator determines whether the obtained decoding result meets the stop decision condition of LDPC or the value in the round counter reaches a preset maximum value, and if so, the value of the round counter is reset to 0; otherwise, the value of the round counter is incremented by one; correspondingly, the decoding calculator determines whether the decoding result meets the stop decision condition of LDPC or the value in the round counter reaches a preset maximum value. The value of the round counter determines the current data to be processed. When the value of the round counter is 0, the decoding calculator receives the input of the data to be decoded as the current data to be processed; when the value of the round counter is not 0, the decoding calculator uses the decoding result of the previous round as the current data to be processed; through the above operations, the present invention reduces the working time of aligning all decoding units to the execution time of one decoding round, avoiding the situation that the fastest decoding unit waits for the slowest decoding unit to finish decoding before it can proceed to the work of the next module, and can reduce the waste of time while ensuring a faster decoding speed.

2、进一步地,本发明所提供的QC-LDPC译码器,每个译码单元内部均设置有用于终止迭代译码的终止器,终止器将译码结果备份成多份,计算时可以并行读取多份数据,通过异或和或计算的结果作为译码单元终止迭代译码的依据。通过将译码结果拷贝多份副本,构建OMBA内存阵列来实现扩展内存读取,使得终止器可以从OMBA内存阵列的不同位置并行读取数据,避免单个译码数据块并行异或计算时,由于内存端口有限出现的数据访问的冲突和竞争,所带来的访问延迟的问题。2. Furthermore, in the QC-LDPC decoder provided by the present invention, each decoding unit is provided with a terminator for terminating iterative decoding. The terminator backs up the decoding result into multiple copies, and multiple copies of data can be read in parallel during calculation, and the result of XOR and OR calculation is used as the basis for the decoding unit to terminate iterative decoding. By copying multiple copies of the decoding result and constructing an OMBA memory array to achieve extended memory reading, the terminator can read data in parallel from different positions of the OMBA memory array, avoiding the access delay problem caused by the conflict and competition of data access due to limited memory ports when a single decoding data block is calculated in parallel.

3、进一步地,本发明所提供的QC-LDPC译码器,考虑到译码单元内部变量节点计算单元和终止器并行操作,变量节点计算单元的计算顺序与终止器的计算顺序不一致,可能存在终止器计算的结果使用的是更新前的旧值的情况,存在一个轮次的滞后性,本发明中的判决控制器从判决计算内存中获取上一轮次下的判决值作为判决依据进行判决,通过延迟一次判决,可以消除一个轮次的滞后性滞后性带来的译码错误影响,保证的译码的准确性。3. Furthermore, the QC-LDPC decoder provided by the present invention takes into account that the variable node calculation unit and the terminator inside the decoding unit operate in parallel, and the calculation order of the variable node calculation unit is inconsistent with the calculation order of the terminator. There may be a situation where the result calculated by the terminator uses the old value before the update, and there is a lag of one round. The decision controller in the present invention obtains the decision value of the previous round from the decision calculation memory as the basis for decision. By delaying the decision once, the decoding error influence caused by the lag of one round can be eliminated, thereby ensuring the accuracy of decoding.

4、进一步地,本发明所提供的QC-LDPC译码器,译码单元与对应的输入缓冲器之间设置有输入FIFO队列;译码单元与对应的输出缓冲器之间设置有输出FIFO队列,使用硬件FIFO队列来缓冲输入模块-译码单元-输出模块的数据流动,显著提高了译码器的译码吞吐量。4. Furthermore, in the QC-LDPC decoder provided by the present invention, an input FIFO queue is arranged between the decoding unit and the corresponding input buffer; an output FIFO queue is arranged between the decoding unit and the corresponding output buffer, and a hardware FIFO queue is used to buffer the data flow of the input module-decoding unit-output module, thereby significantly improving the decoding throughput of the decoder.

5、进一步地,本发明所提供的QC-LDPC译码器,通过在输入模块、输出模块和译码单元中设置对应的计数器,以对完成的任务数量进行统计,使得当对应部分完成一定量的任务后,可以选择不再进行工作,灵活性较高。5. Furthermore, the QC-LDPC decoder provided by the present invention counts the number of completed tasks by setting corresponding counters in the input module, output module and decoding unit, so that when the corresponding part completes a certain amount of tasks, it can choose to stop working, which has high flexibility.

附图说明BRIEF DESCRIPTION OF THE DRAWINGS

图1为本发明实施例提供的QC-LDPC译码器的结构示意图。FIG1 is a schematic diagram of the structure of a QC-LDPC decoder provided in an embodiment of the present invention.

图2为本发明实施例提供的译码器单元的结构示意图。FIG. 2 is a schematic diagram of the structure of a decoder unit provided in an embodiment of the present invention.

图3为本发明实施例提供的终止器的结构示意图。FIG. 3 is a schematic diagram of the structure of a terminator provided in an embodiment of the present invention.

图4为本发明实施例提供的译码单元终止判决的流程图。FIG. 4 is a flowchart of a termination decision of a decoding unit provided by an embodiment of the present invention.

具体实施方式DETAILED DESCRIPTION

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。In order to make the purpose, technical solutions and advantages of the present invention more clearly understood, the present invention is further described in detail below in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present invention and are not intended to limit the present invention. In addition, the technical features involved in the various embodiments of the present invention described below can be combined with each other as long as they do not conflict with each other.

为了实现上述目的,第一方面,本发明提供了一种QC-LDPC译码器,包括:多个并行的译码单元;In order to achieve the above-mentioned object, in a first aspect, the present invention provides a QC-LDPC decoder, comprising: a plurality of parallel decoding units;

译码单元包括:译码计算器、译码结果内存、轮次计数器和终止器;轮次计数器的值初始为0;The decoding unit includes: a decoding calculator, a decoding result memory, a round counter and a terminator; the value of the round counter is initially 0;

译码计算器用于获取当前轮次下的待处理数据,对待处理数据进行译码,得到当前轮次下的译码结果,并输出至译码结果内存中进行存储;其中,当轮次计数器的值为0时,译码计算器将待译码数据作为当前轮次下的待处理数据;当轮次计数器的值不为0时,译码计算器将上一轮次下的译码结果作为当前轮次下的待处理数据;The decoding calculator is used to obtain the data to be processed in the current round, decode the data to be processed, obtain the decoding result in the current round, and output it to the decoding result memory for storage; wherein, when the value of the round counter is 0, the decoding calculator uses the data to be decoded as the data to be processed in the current round; when the value of the round counter is not 0, the decoding calculator uses the decoding result in the previous round as the data to be processed in the current round;

终止器用于从译码结果内存中读取当前轮次下的译码结果进行终止判决,若该译码结果满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值,则控制译码结果内存输出该译码结果,并将轮次计数器的值置为0;否则,对轮次计数器的值进行加一操作;其中,停止判决条件为译码结果按位进行异或后的结果为0。The terminator is used to read the decoding result of the current round from the decoding result memory to make a termination decision. If the decoding result meets the stopping decision condition of LDPC or the value in the round counter reaches the preset maximum value, the decoding result memory is controlled to output the decoding result and the value of the round counter is set to 0; otherwise, the value of the round counter is incremented by one; wherein the stopping decision condition is that the result of bitwise XOR of the decoding result is 0.

在一种可选实施方式下,译码计算器包括:数据计算内存、n个并行的校验节点计算单元、以及m个并行的变量节点计算单元;m和n分别为LDPC译码基矩阵的行数和列数;In an optional implementation, the decoding calculator includes: a data calculation memory, n parallel check node calculation units, and m parallel variable node calculation units; m and n are the number of rows and columns of the LDPC decoding base matrix respectively;

数据计算内存用于获取当前轮次下的待处理数据,并将待处理数据划分为n个数据块,并一一对应输入至n个校验节点计算单元中进行校验节点更新,得到校验节点更新后的数据;将校验节点更新后的数据划分为m个数据块,并一一对应输入至m个并行的变量节点计算单元中进行变量节点更新,得到m个译码数据块,构成当前轮次下的译码结果,并保存,同时输出至译码结果内存中进行存储。The data calculation memory is used to obtain the data to be processed in the current round, and divide the data to be processed into n data blocks, and input them one by one into n check node calculation units to update the check nodes, so as to obtain the data after the check nodes are updated; the data after the check nodes are updated is divided into m data blocks, and input them one by one into m parallel variable node calculation units to update the variable nodes, so as to obtain m decoding data blocks, which constitute the decoding results in the current round, and save them, and output them to the decoding result memory for storage.

优选地,在一种可选实施方式下,终止器包括:判决控制器和终止模块;Preferably, in an optional implementation manner, the terminator includes: a decision controller and a termination module;

终止模块包括:判决计算内存;当当前轮次为第一轮次时,判决计算内存内存储的上一轮次下的判决值为1;The termination module includes: a judgment calculation memory; when the current round is the first round, the judgment value of the previous round stored in the judgment calculation memory is 1;

判决控制器用于从判决计算内存中获取上一轮次下的判决值,并判断该判决值是否为0,若是,则判定当前轮次下的译码结果满足LDPC的停止判决条件;否则,判定当前轮次下的译码结果不满足LDPC的停止判决条件;The decision controller is used to obtain the decision value of the previous round from the decision calculation memory, and determine whether the decision value is 0. If so, it is determined that the decoding result of the current round meets the stop decision condition of the LDPC; otherwise, it is determined that the decoding result of the current round does not meet the stop decision condition of the LDPC;

终止模块用于当当前轮次下的译码结果不满足LDPC的停止判决条件时,从译码结果内存中读取当前轮次下的译码结果,对译码结果中的m个译码数据块,分别基于LDPC译码基矩阵进行备份,并将备份得到的译码数据块副本存储在判决计算内存的不同位置处,构成OMBA内存阵列;获取OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本的第k ij 个数据,记为标记数据;将OMBA内存阵列中每一列上的所有标记数据进行异或运算,得到对应的列异或结果,并将所有列的列异或结果进行或运算,得到当前轮次下的判决值,并存储在判决计算内存中;The termination module is used for reading the decoding result of the current round from the decoding result memory when the decoding result of the current round does not meet the stop decision condition of LDPC, backing up the m decoding data blocks in the decoding result based on the LDPC decoding base matrix respectively, and storing the copies of the backed-up decoding data blocks at different positions of the decision calculation memory to form an OMBA memory array; obtaining the kijth data of the copy of the decoding data block stored in the memory block of the i-th row and j-th column of the OMBA memory array, recorded as the marking data; performing an XOR operation on all the marking data on each column in the OMBA memory array to obtain the corresponding column XOR result, and performing an OR operation on the column XOR results of all columns to obtain the decision value of the current round, and storing it in the decision calculation memory;

其中,记译码结果中的第i个译码数据块为OMB i i=1,2,...,m;OMB i 的副本数量与LDPC译码基矩阵第i行中非0元素的数量相同;OMB i 的副本存储在OMBA内存阵列的第i行,且在该行中的相对位置与LDPC译码基矩阵第i行中非0元素的相对位置保持一致;The i -th decoded data block in the decoding result is denoted as OMB i , i =1,2,...,m; the number of copies of OMB i is the same as the number of non-zero elements in the i - th row of the LDPC decoding base matrix; the copy of OMB i is stored in the i- th row of the OMBA memory array, and the relative position in the row is consistent with the relative position of the non-zero elements in the i -th row of the LDPC decoding base matrix;

k ij 为针对OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本,从其第个数据所在的位置开始循环右移当前子迭代次数后的位置序号;为LDPC译码基矩阵第i行第j列的值;每个轮次包括M个子迭代;M为待译码数据的位数与基矩阵长度n的比值;每个子迭代对应待译码数据中的一位数据在当前轮次下的译码过程;j=1,2,...,n。 k ij is a copy of the decoded data block stored in the memory block in the i-th row and j- th column of the OMBA memory array, from which The position number after the current sub-iteration number starts from the position where the data is located and moves right cyclically; is the value of the i- th row and j -th column of the LDPC decoding base matrix; each round includes M sub-iterations; M is the ratio of the number of bits of the data to be decoded to the length n of the base matrix; each sub-iteration corresponds to the decoding process of one bit of the data to be decoded in the current round; j =1,2,...,n.

在一种可选实施方式下,上述QC-LDPC译码器还包括:输入输出模块;In an optional implementation manner, the QC-LDPC decoder further includes: an input and output module;

输入输出模块包括:用于缓存待译码数据的输入模块、和用于缓存译码结果的输出模块;输入模块包括:多个输入缓冲器;输出模块包括:多个输出缓冲器;输入缓冲器、输出缓冲器及译码单元的数量相同,且两两之间一一对应;The input and output modules include: an input module for caching data to be decoded, and an output module for caching decoding results; the input module includes: a plurality of input buffers; the output module includes: a plurality of output buffers; the number of input buffers, output buffers and decoding units is the same, and there is a one-to-one correspondence between them;

当轮次计数器的值为0时,译码计算器从对应的输入缓冲器中读取待译码数据,作为当前轮次下的待处理数据。When the value of the round counter is 0, the decoding calculator reads the data to be decoded from the corresponding input buffer as the data to be processed in the current round.

终止器用于当当前轮次下的译码结果满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值时,控制译码结果内存将该译码结果输出至输出缓冲器,并将轮次计数器的值置为0。The terminator is used to control the decoding result memory to output the decoding result to the output buffer and set the value of the round counter to 0 when the decoding result in the current round meets the stop decision condition of LDPC or the value in the round counter reaches the preset maximum value.

在一种可选实施方式下,译码单元与对应的输入缓冲器之间设置有输入FIFO队列;译码单元与对应的输出缓冲器之间设置有输出FIFO队列。In an optional implementation manner, an input FIFO queue is provided between the decoding unit and the corresponding input buffer; and an output FIFO queue is provided between the decoding unit and the corresponding output buffer.

具有缓冲功能的输入FIFO队列可以缓冲还并未进行译码的数据,具有缓冲功能的输出FIFO队列可以缓冲提前结束译码的译码单元输出的译码结果。The input FIFO queue with a buffering function can buffer data that has not yet been decoded, and the output FIFO queue with a buffering function can buffer the decoding results output by the decoding unit that ends decoding early.

在一种可选实施方式下,译码器中的各模块完成一定的任务后,可以选择不进行工作。具体地,输入模块中设置有第一全局任务计数器,输出模块中设置有第二全局任务计数器,每一个译码单元中设置有局部任务计数器;In an optional implementation, each module in the decoder can choose not to work after completing a certain task. Specifically, a first global task counter is set in the input module, a second global task counter is set in the output module, and a local task counter is set in each decoding unit;

局部任务计数器用于当其所在的译码单元中的译码结果内存每输出一个译码结果时,进行加一操作;且当局部任务计数器的值达到预设局部译码数量后,控制其所在译码单元停止工作;The local task counter is used to increase the value by one when the decoding result memory in the decoding unit where the local task counter is located outputs a decoding result each time; and when the value of the local task counter reaches the preset local decoding quantity, the decoding unit where the local task counter is located is controlled to stop working;

第一全局任务计数器用于当任一输入缓冲器每输出一个译码结果至对应译码单元时,进行加一操作;且当第一全局任务计数器的值达到预设整体译码数量后,控制输入模块停止工作;The first global task counter is used to perform an increment operation when any input buffer outputs a decoding result to the corresponding decoding unit; and when the value of the first global task counter reaches a preset overall decoding quantity, the input module is controlled to stop working;

第二全局任务计数器用于当任一输出缓冲器每从对应译码单元接收到一个译码结果时,进行加一操作;且当第二全局任务计数器的值达到预设整体译码数量后,控制QC-LDPC译码器停止工作。The second global task counter is used to perform an increment operation when any output buffer receives a decoding result from the corresponding decoding unit; and when the value of the second global task counter reaches a preset overall decoding quantity, the QC-LDPC decoder is controlled to stop working.

为了进一步说明本发明所提供的QC-LDPC译码器,下面结合一具体实施例进行详述:In order to further illustrate the QC-LDPC decoder provided by the present invention, a specific embodiment is described in detail below:

QC-LDPC译码器可以基于FPGA、DSP等可编程逻辑器件实现;本实施例的QC-LDPC译码器基于FPGA实现得到;The QC-LDPC decoder can be implemented based on programmable logic devices such as FPGA and DSP. The QC-LDPC decoder of this embodiment is implemented based on FPGA.

如图1所示是本实施例提出的基于HLS的可提前终止迭代译码多单元QC-LDPC译码器的整体结构图。FIG1 is a diagram showing the overall structure of a multi-unit QC-LDPC decoder with HLS-based iterative decoding that can terminate early, as proposed in this embodiment.

FPGA的片外内存是一种高带宽存储器(High Bandwidth Memory, HBM),主机端的程序将数据通过Pcie总线传输至HBM中,等待FPGA的译码器译码。The off-chip memory of FPGA is a high bandwidth memory (HBM). The program on the host side transfers the data to HBM through the Pcie bus and waits for the FPGA decoder to decode it.

具体地,QC-LDPC译码器包括:输入输出模块和N个译码单元;Specifically, the QC-LDPC decoder includes: an input-output module and N decoding units;

输入输出模块用于将待译码数据从HBM中读取或者写入,具体包括输入模块和输出模块。为了高效地利用FPGA的接口,使用突发传输,输入模块批量、同步地从FPGA的外部高速内存HBM中读取数据;输出模块读取译码结果,并批量、同步向主机端输出结果。具体地,输入输出模块用于缓存待译码数据和译码结果,包括多对输入缓冲器和输出缓冲器;一个译码单元对应一对输入缓冲器和输出缓冲器。各输入缓冲器构成输入模块,各输出缓冲器构成输出模块。The input-output module is used to read or write the data to be decoded from the HBM, and specifically includes an input module and an output module. In order to efficiently utilize the interface of the FPGA, burst transmission is used. The input module reads data from the external high-speed memory HBM of the FPGA in batches and synchronously; the output module reads the decoding results and outputs the results to the host in batches and synchronously. Specifically, the input-output module is used to cache the data to be decoded and the decoding results, and includes multiple pairs of input buffers and output buffers; one decoding unit corresponds to a pair of input buffers and output buffers. Each input buffer constitutes an input module, and each output buffer constitutes an output module.

N个译码单元用于对数据进行译码。每个译码单元包括各自的译码计算器和终止器。数据经输入模块读取进入译码单元译码,经过多次迭代,返回至输出模块,并输出至HBM中与主机端交互。N decoding units are used to decode data. Each decoding unit includes its own decoding calculator and terminator. Data is read by the input module and entered into the decoding unit for decoding. After multiple iterations, it is returned to the output module and output to the HBM to interact with the host.

QC-LDPC译码器的多个译码单元动态执行上述过程而无需等待最迟的单元结束。The multiple decoding units of the QC-LDPC decoder dynamically execute the above process without waiting for the latest unit to finish.

如图2所示,为单个译码单元的结构图。译码单元与对应的输入缓冲器之间设置有输入FIFO队列,用于缓存译码单元与对应的输入缓冲器之间的数据;译码单元与对应的输出缓冲器之间设置有输出FIFO队列,用于缓存译码单元与对应的输出缓冲器之间的数据。As shown in Figure 2, it is a structural diagram of a single decoding unit. An input FIFO queue is set between the decoding unit and the corresponding input buffer, which is used to cache data between the decoding unit and the corresponding input buffer; an output FIFO queue is set between the decoding unit and the corresponding output buffer, which is used to cache data between the decoding unit and the corresponding output buffer.

译码单元包括:译码计算器、译码结果内存、轮次计数器和终止器;轮次计数器的值初始为0;The decoding unit includes: a decoding calculator, a decoding result memory, a round counter and a terminator; the value of the round counter is initially 0;

译码计算器用于获取当前轮次下的待处理数据,对待处理数据进行译码,得到当前轮次下的译码结果,并输出至译码结果内存中进行存储;其中,当轮次计数器的值为0时,译码计算器将待译码数据作为当前轮次下的待处理数据;当轮次计数器的值不为0时,译码计算器将上一轮次下的译码结果作为当前轮次下的待处理数据。The decoding calculator is used to obtain the data to be processed in the current round, decode the data to be processed, obtain the decoding result in the current round, and output it to the decoding result memory for storage; wherein, when the value of the round counter is 0, the decoding calculator uses the data to be decoded as the data to be processed in the current round; when the value of the round counter is not 0, the decoding calculator uses the decoding result in the previous round as the data to be processed in the current round.

具体地,译码计算器包括:数据计算内存、n个并行的校验节点计算单元(CNU)、以及m个并行的变量节点计算单元(VNU);m和n分别为LDPC译码基矩阵的行数和列数;Specifically, the decoding calculator includes: a data calculation memory, n parallel check node calculation units (CNUs), and m parallel variable node calculation units (VNUs); m and n are the number of rows and columns of the LDPC decoding base matrix respectively;

校验节点计算单元用于对输入数据进行校验节点更新;The check node calculation unit is used to update the check nodes of the input data;

变量节点计算单元用于对输入数据进行变量节点更新;The variable node calculation unit is used to update the variable nodes of the input data;

数据计算内存用于获取当前轮次下的待处理数据,并将待处理数据划分为n个数据块,并一一对应输入至n个校验节点计算单元中进行校验节点更新,得到n个校验节点更新后的数据块,构成校验节点更新后的数据;将校验节点更新后的数据划分为m个数据块,并一一对应输入至m个并行的变量节点计算单元中进行变量节点更新,得到m个译码数据块(m个译码数据块的码字长度相同),构成当前轮次下的译码结果,并保存,同时输出至译码结果内存中进行存储。The data calculation memory is used to obtain the data to be processed in the current round, and divide the data to be processed into n data blocks, and input them one by one into n check node calculation units to update the check nodes, so as to obtain n data blocks after the check nodes are updated, which constitute the data after the check nodes are updated; the data after the check nodes are updated are divided into m data blocks, and input them one by one into m parallel variable node calculation units to update the variable nodes, so as to obtain m decoding data blocks (the codeword lengths of the m decoding data blocks are the same), which constitute the decoding results in the current round, and are saved and output to the decoding result memory for storage.

如图3所示,终止器(TM),用于在译码单元中执行一个终止条件检查的判决。终止器包括:终止模块和判决控制器;As shown in Fig. 3, the terminator (TM) is used to perform a decision of a termination condition check in the decoding unit. The terminator includes: a termination module and a decision controller;

终止模块包括:判决计算内存;The termination module includes: judgment calculation memory;

终止模块用于从译码结果内存中读取当前轮次下的译码结果,对译码结果中的m个译码数据块,分别基于LDPC译码基矩阵进行备份,并将备份得到的译码数据块副本存储在判决计算内存的不同位置处,构成OMBA内存阵列;具体地,记译码结果中的第i个译码数据块为OMB i i=1,2,...,m;OMB i 的副本数量与LDPC译码基矩阵第i行中非0元素的数量相同;OMB i 的副本存储在OMBA内存阵列的第i行,且在该行中的相对位置与LDPC译码基矩阵第i行中非0元素的相对位置保持一致;The termination module is used to read the decoding result of the current round from the decoding result memory, back up the m decoding data blocks in the decoding result based on the LDPC decoding base matrix respectively, and store the copies of the backed up decoding data blocks at different positions of the decision calculation memory to form an OMBA memory array; specifically, the i -th decoding data block in the decoding result is recorded as OMB i , i =1,2,...,m; the number of copies of OMB i is the same as the number of non-zero elements in the i- th row of the LDPC decoding base matrix; the copy of OMB i is stored in the i- th row of the OMBA memory array, and the relative position in the row is consistent with the relative position of the non-zero elements in the i-th row of the LDPC decoding base matrix;

获取OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本的第k ij 个数据,记为标记数据;将OMBA内存阵列中每一列上的所有标记数据进行异或运算,得到对应的列异或结果,并将所有列的列异或结果进行或运算,得到当前轮次下的判决值,并存储在判决计算内存中;其中,k ij 为针对OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本,从其第个数据所在的位置开始循环右移当前子迭代次数后的位置序号;为LDPC译码基矩阵第i行第j列的值;每个轮次包括M个子迭代;M为待译码数据的位数与基矩阵长度n的比值;每个子迭代对应待译码数据中的一位数据在当前轮次下的译码过程;j=1,2,...,n。Get the kijth data of the decoded data block copy stored in the memory block of the i-th row and j-th column of the OMBA memory array, and record it as the marked data; perform XOR operation on all the marked data on each column in the OMBA memory array to obtain the corresponding column XOR result, and perform OR operation on the column XOR results of all columns to obtain the decision value under the current round, and store it in the decision calculation memory; where kij is the decoded data block copy stored in the memory block of the i-th row and j- th column of the OMBA memory array, from its The position number after the current sub-iteration number starts from the position where the data is located and moves right cyclically; is the value of the i- th row and j -th column of the LDPC decoding base matrix; each round includes M sub-iterations; M is the ratio of the number of bits of the data to be decoded to the length n of the base matrix; each sub-iteration corresponds to the decoding process of one bit of the data to be decoded in the current round; j =1,2,...,n.

判决控制器用于从判决计算内存中获取上一轮次下的判决值(当当前轮次为第一轮时,记其上一个轮次下的判决值为1),并判断该判决值是否为0,若是,则判定当前轮次下的译码结果满足LDPC的停止判决条件;否则,判定不满足LDPC的停止判决条件。The decision controller is used to obtain the decision value of the previous round from the decision calculation memory (when the current round is the first round, the decision value of the previous round is recorded as 1), and determine whether the decision value is 0. If so, it is determined that the decoding result of the current round meets the LDPC stop decision condition; otherwise, it is determined that the LDPC stop decision condition is not met.

需要说明的是,通过对译码结果拷贝多份副本,构建OMBA内存阵列来实现扩展内存读取,使得终止器可以从OMBA内存阵列的不同位置并行读取数据,避免单个译码数据块并行异或计算时,由于内存端口有限出现的数据访问的冲突和竞争,所带来的访问延迟的问题。It should be noted that by copying multiple copies of the decoding results and building an OMBA memory array to achieve extended memory reading, the terminator can read data in parallel from different locations of the OMBA memory array, avoiding the access delay problem caused by data access conflicts and competition due to limited memory ports when a single decoded data block is calculated in parallel.

如图4所示,判决控制器进行的判决过程过程如下:As shown in FIG4 , the decision process performed by the decision controller is as follows:

首先并行将OMBA内存阵列所有列的列异或结果进行或运算,或运算的结果作为判决是否终止退出的判决值F保存进判决计算内存的临时寄存器中;First, the column XOR results of all columns of the OMBA memory array are ORed in parallel, and the result of the ORed operation is saved in a temporary register of the decision calculation memory as a decision value F for deciding whether to terminate the exit;

F=Res 1|Res 2|Res 3|…|Res n F = Res 1 | Res 2 | Res 3 |…| Res n

其中,Res j 为OMBA内存阵列第i列的列异或结果,j=1,2,...,n。Wherein, Res j is the column XOR result of the i -th column of the OMBA memory array, j = 1, 2, ..., n.

当前轮次终止译码的判决依据是上一轮次下的判决值。判决器首先会从临时寄存器中读取上一轮次下的判决值F,如果F为0,表示可以终止译码,否则将进行当前迭代的判决值F计算以及写入临时寄存器的过程,并继续下一次迭代译码。The decision to terminate decoding in the current round is based on the decision value in the previous round. The decision machine will first read the decision value F in the previous round from the temporary register. If F is 0, it means that decoding can be terminated. Otherwise, the decision value F of the current iteration will be calculated and written into the temporary register, and the next iteration decoding will continue.

所述的采用上一轮次下的判决值F作为判决依据的过程,称为延迟判决;考虑到译码单元内部变量节点计算单元和终止器并行操作,变量节点计算单元的计算顺序与终止器的计算顺序不一致,可能存在终止器计算的结果使用的是更新前的旧值的情况,存在一个轮次的滞后性,通过延迟一次判决,可以消除一个轮次的滞后性滞后性带来的译码错误影响。The process of using the decision value F in the previous round as the basis for decision is called delayed decision. Taking into account that the variable node calculation unit and the terminator in the decoding unit operate in parallel, the calculation order of the variable node calculation unit is inconsistent with the calculation order of the terminator. There may be a situation where the result calculated by the terminator uses the old value before the update, and there is a lag of one round. By delaying the decision once, the decoding error caused by the lag of one round can be eliminated.

具体地,本实施例中,译码单元动态执行的设计的过程包括:Specifically, in this embodiment, the design process of dynamic execution of the decoding unit includes:

定义一个译码单元类,在译码单元类中包含:数组成员译码数据块、OMBA内存阵列,以及一个轮次计数器和局部任务计数器。译码单元类声明N个译码单元实例,生成N个并行工作的译码单元硬件。每个译码单元实例都会调用其成员函数来执行LDPC的译码工作。成员函数只需要执行一个轮次的译码,进行下一个轮次译码时,需要重新调用该成员函数。同一时刻,所有的译码单元实例会同时并行执行一次轮次的译码计算。Define a decoding unit class, which contains: array member decoding data blocks, OMBA memory array, and a round counter and local task counter. The decoding unit class declares N decoding unit instances and generates N decoding unit hardware working in parallel. Each decoding unit instance will call its member function to perform LDPC decoding. The member function only needs to perform one round of decoding, and the member function needs to be called again for the next round of decoding. At the same time, all decoding unit instances will perform one round of decoding calculations in parallel.

定义输入数组和输出数组,其内存储有Stream数据类型的变量,在硬件中作为具有缓冲功能的FIFO队列实现;具体地,输入数组中包括N个输入FIFO队列,输出数组中包括N个输出FIFO队列。译码器在输入模块批量、同步读取数据至输入数组中,再从输入数组向至各译码单元中进行译码,每个译码单元完成译码后,将结果写入至输出数组中,输出数组的数据流向译码器的输出模块。Define input array and output array, which store variables of Stream data type, and are implemented as FIFO queues with buffering function in hardware; specifically, the input array includes N input FIFO queues, and the output array includes N output FIFO queues. The decoder reads data into the input array in batches and synchronously in the input module, and then decodes the data from the input array to each decoding unit. After each decoding unit completes the decoding, it writes the result to the output array, and the data of the output array flows to the output module of the decoder.

输入模块、译码单元、输出模块的关系为:多个译码单元共享同一个输入模块,多个译码单元共享同一个输出模块。The relationship among the input module, the decoding unit and the output module is as follows: a plurality of decoding units share the same input module, and a plurality of decoding units share the same output module.

数据流动为:使用上述输入FIFO队列和输出FIFO队列,可以建立硬件译码器从输入模块到译码单元到输出模块的数据流路径。数据流路径为:第i个输入FIFO队列的数据只会流向对应的第i个译码单元中,并且第i个译码单元的译码结果数据只会第i个输出FIFO队列中。整个译码器具有N条数据流路径。这种数据流动可以解耦译码单元的同步,缓解译码单元译码时间差异导致的部分译码单元空等待的延迟开销。The data flow is: using the above input FIFO queue and output FIFO queue, a data flow path of the hardware decoder from the input module to the decoding unit to the output module can be established. The data flow path is: the data of the i -th input FIFO queue will only flow to the corresponding i -th decoding unit, and the decoding result data of the i -th decoding unit will only be in the i -th output FIFO queue. The entire decoder has N data flow paths. This data flow can decouple the synchronization of the decoding unit and alleviate the delay overhead of some decoding units waiting in vain due to the difference in the decoding time of the decoding units.

所述译码单元的同步解耦的设计过程如下:The design process of synchronous decoupling of the decoding unit is as follows:

每个译码单元实例,内部使用轮次计数器中的变量记录自身当前译码的轮次,当轮次计数器中的变量为0时,译码单元从对应的输入FIFO队列读取数据,并进行初始化以待译码使用。当轮次计数器中的变量不为0时,译码单元无需从输入FIFO队列读取数据,此时输入FIFO队列缓冲了多个译码码字。此时译码单元内部数据流动出现在调用成员函数以下两种情况:Each decoding unit instance uses the variables in the round counter to record its current decoding round. When the variable in the round counter is 0, the decoding unit reads data from the corresponding input FIFO queue and initializes it for decoding. When the variable in the round counter is not 0, the decoding unit does not need to read data from the input FIFO queue. At this time, the input FIFO queue buffers multiple decoding codewords. At this time, the internal data flow of the decoding unit occurs in the following two situations when calling member functions:

1)在当前轮次的译码结果译码满足LDPC的停止判决条件或者轮次计数器中的变量达到预设最大值(本实施例中取值为10)时,将轮次计数器中的变量置为0,将当前轮次的译码结果写入对应的输出FIFO队列中,局部任务计数器中的值加1。1) When the decoding result of the current round meets the stop decision condition of LDPC or the variable in the round counter reaches the preset maximum value (the value is 10 in this embodiment), the variable in the round counter is set to 0, the decoding result of the current round is written to the corresponding output FIFO queue, and the value in the local task counter is increased by 1.

2)在当前轮次的译码结果未满足LDPC的停止判决条件或者轮次计数器中的变量未达到最大的迭代次数时,此时不出现数据的流动,译码单元只进行译码,每次其成员函数结束调用时,轮次计数器中的变量将会加1。2) When the decoding result of the current round does not meet the stop decision condition of LDPC or the variable in the round counter has not reached the maximum number of iterations, there is no data flow at this time, and the decoding unit only performs decoding. Each time its member function ends calling, the variable in the round counter will be increased by 1.

每个译码单元维护自身的轮次计数器和局部任务计数器,并使用输入FIFO队列和输出FIFO队列来缓冲不同译码单元译码时间的差异导致的非同步数据流流动。Each decoding unit maintains its own round counter and local task counter, and uses input FIFO queue and output FIFO queue to buffer the asynchronous data flow caused by the difference in decoding time of different decoding units.

当每个译码单元的译码数量达到预设局部译码数量(本实施例中取值为300)时,控制译码单元停止工作,无需再进行译码操作。When the number of decodings of each decoding unit reaches a preset local decoding number (the value is 300 in this embodiment), the decoding unit is controlled to stop working and no further decoding operation is required.

在输入模块和输出模块中各设置一个全局任务计数器。对于输入模块,当其内的任一输入缓冲器每输出到一个待译码数据时,其内的全局任务计数器进行加一操作;对于输出模块,当其内的任一输出缓冲器每接收到一个译码结果时,其内的全局任务计数器进行加一操作。当输入模块中的全局任务计数器的值达到预设整体译码数量(本实施例中取值为3000,假设有10个译码单元)时控制输入模块无需工作,当输出模块中的全局任务计数器的值达到预设整体译码数量时控制整个译码器结束工作。A global task counter is set in each of the input module and the output module. For the input module, when any input buffer therein outputs a data to be decoded, the global task counter therein is incremented by one; for the output module, when any output buffer therein receives a decoding result, the global task counter therein is incremented by one. When the value of the global task counter in the input module reaches the preset overall decoding number (the value is 3000 in this embodiment, assuming that there are 10 decoding units), the input module is controlled not to work; when the value of the global task counter in the output module reaches the preset overall decoding number, the entire decoder is controlled to end work.

基于HLS设计的QC-LDPC译码器的工作流程包括:The workflow of the QC-LDPC decoder based on HLS design includes:

步骤S1:输入模块批量读取N组数据,并分别存入N个输入FIFO队列中;Step S1: The input module reads N groups of data in batches and stores them in N input FIFO queues respectively;

步骤S2:第i个译码单元的成员函数依据其轮次计数器中的值判断是否需要初始化。当轮次计数器中的值为0,第i个译码单元从i个输入FIFO队列中读取数据,初始化,并进行一个轮次的译码;当轮次计数器中的值不为0,第i个译码单元无需初始化,进行一轮迭代译码。Step S2: The member function of the i -th decoding unit determines whether it needs to be initialized based on the value in its round counter. When the value in the round counter is 0, the i -th decoding unit reads data from the i input FIFO queues, initializes, and performs a round of decoding; when the value in the round counter is not 0, the i -th decoding unit does not need to be initialized and performs a round of iterative decoding.

步骤S3:第i个译码单元判断是否满足LDPC的停止判决条件或者其轮次计数器中的值达到预设最大值,成功则向第i个输出FIFO队列中写入译码结果,置轮次计数器的值为0和增加输出模块中的第一全局任务计数器的计数。否则只需要轮次计数器的值加1。Step S3: The i -th decoding unit determines whether the LDPC stop decision condition is met or the value in its round counter reaches the preset maximum value. If successful, the decoding result is written to the i -th output FIFO queue, the round counter value is set to 0, and the count of the first global task counter in the output module is increased. Otherwise, only the round counter value needs to be increased by 1.

步骤S4:输出模块批量读取N个输出FIFO队列中的数据,向FPGA外部输出译码结果。Step S4: The output module reads the data in N output FIFO queues in batches and outputs the decoding results to the outside of the FPGA.

步骤S5:当输出模块中的第一全局任务计数器的值达到预设整体译码数量时,输出模块输出结束信号,完成整个译码器的工作。Step S5: When the value of the first global task counter in the output module reaches the preset overall decoding quantity, the output module outputs an end signal to complete the work of the entire decoder.

第二方面,本发明提供了一种存储设备,包括本发明第一方面所提供的QC-LDPC译码器。In a second aspect, the present invention provides a storage device, comprising the QC-LDPC decoder provided in the first aspect of the present invention.

相关技术方案同本发明第一方面所提供的QC-LDPC译码器,这里不做赘述。The related technical solution is the same as the QC-LDPC decoder provided in the first aspect of the present invention, and will not be described in detail here.

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。It will be easily understood by those skilled in the art that the above description is only a preferred embodiment of the present invention and is not intended to limit the present invention. Any modifications, equivalent substitutions and improvements made within the spirit and principles of the present invention should be included in the protection scope of the present invention.

Claims (7)

1.一种QC-LDPC译码器,其特征在于,包括:多个并行的译码单元;1. A QC-LDPC decoder, characterized in that it comprises: a plurality of parallel decoding units; 所述译码单元包括:译码计算器、译码结果内存、轮次计数器和终止器;所述轮次计数器的值初始为0;The decoding unit comprises: a decoding calculator, a decoding result memory, a round counter and a terminator; the value of the round counter is initially 0; 所述译码计算器用于获取当前轮次下的待处理数据,对待处理数据进行译码,得到当前轮次下的译码结果,并输出至所述译码结果内存中进行存储;其中,当所述轮次计数器的值为0时,所述译码计算器将待译码数据作为当前轮次下的待处理数据;当所述轮次计数器的值不为0时,所述译码计算器将上一轮次下的译码结果作为当前轮次下的待处理数据;The decoding calculator is used to obtain the data to be processed in the current round, decode the data to be processed, obtain the decoding result in the current round, and output it to the decoding result memory for storage; wherein, when the value of the round counter is 0, the decoding calculator uses the data to be decoded as the data to be processed in the current round; when the value of the round counter is not 0, the decoding calculator uses the decoding result in the previous round as the data to be processed in the current round; 所述终止器用于从译码结果内存中读取当前轮次下的译码结果进行终止判决,若该译码结果满足LDPC的停止判决条件或者所述轮次计数器中的值达到预设最大值,则控制所述译码结果内存输出该译码结果,并将所述轮次计数器的值置为0;否则,对所述轮次计数器的值进行加一操作;所述停止判决条件为译码结果按位进行异或后的结果为0。The terminator is used to read the decoding result of the current round from the decoding result memory to make a termination decision. If the decoding result meets the stopping decision condition of LDPC or the value in the round counter reaches a preset maximum value, the decoding result memory is controlled to output the decoding result and the value of the round counter is set to 0; otherwise, the value of the round counter is added by one; the stopping decision condition is that the result of the bitwise XOR of the decoding result is 0. 2.根据权利要求1所述的QC-LDPC译码器,其特征在于,所述译码计算器包括:数据计算内存、n个并行的校验节点计算单元、以及m个并行的变量节点计算单元;m和n分别为LDPC译码基矩阵的行数和列数;2. The QC-LDPC decoder according to claim 1, characterized in that the decoding calculator comprises: a data calculation memory, n parallel check node calculation units, and m parallel variable node calculation units; m and n are the number of rows and columns of the LDPC decoding base matrix respectively; 所述数据计算内存用于获取当前轮次下的待处理数据,并将待处理数据划分为n个数据块,并一一对应输入至n个校验节点计算单元中进行校验节点更新,得到校验节点更新后的数据;将所述校验节点更新后的数据划分为m个数据块,并一一对应输入至m个并行的变量节点计算单元中进行变量节点更新,得到m个译码数据块,构成当前轮次下的译码结果,并保存,同时输出至所述译码结果内存中进行存储。The data calculation memory is used to obtain the data to be processed in the current round, and divide the data to be processed into n data blocks, and input them one by one into n check node calculation units to update the check nodes, so as to obtain the data after the check nodes are updated; the data after the check nodes are updated are divided into m data blocks, and input them one by one into m parallel variable node calculation units to update the variable nodes, so as to obtain m decoding data blocks, which constitute the decoding results in the current round, and save them, and output them to the decoding result memory for storage. 3.根据权利要求2所述的QC-LDPC译码器,其特征在于,终止器包括:终止模块和判决控制器;3. The QC-LDPC decoder according to claim 2, characterized in that the terminator comprises: a termination module and a decision controller; 终止模块包括:判决计算内存;当当前轮次为第一轮次时,所述判决计算内存中存储的上一轮次下的判决值为1;The termination module includes: a judgment calculation memory; when the current round is the first round, the judgment value of the previous round stored in the judgment calculation memory is 1; 所述判决控制器用于从所述判决计算内存中获取上一轮次下的判决值,并判断该判决值是否为0,若是,则判定当前轮次下的译码结果满足LDPC的停止判决条件;否则,判定当前轮次下的译码结果不满足LDPC的停止判决条件;The decision controller is used to obtain the decision value of the previous round from the decision calculation memory, and determine whether the decision value is 0. If so, it is determined that the decoding result of the current round meets the stop decision condition of the LDPC; otherwise, it is determined that the decoding result of the current round does not meet the stop decision condition of the LDPC; 所述终止模块用于当当前轮次下的译码结果不满足LDPC的停止判决条件时,从所述译码结果内存中读取当前轮次下的译码结果,对译码结果中的m个译码数据块,分别基于LDPC译码基矩阵进行备份,并将备份得到的译码数据块副本存储在所述判决计算内存的不同位置处,构成OMBA内存阵列;获取所述OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本的第k ij 个数据,记为标记数据;将所述OMBA内存阵列中每一列上的所有标记数据进行异或运算,得到对应的列异或结果,并将所有列的列异或结果进行或运算,得到当前轮次下的判决值,并存储在所述判决计算内存中;The termination module is used for reading the decoding result of the current round from the decoding result memory when the decoding result of the current round does not meet the stop decision condition of LDPC, backing up the m decoding data blocks in the decoding result based on the LDPC decoding base matrix respectively, and storing the backed-up decoding data block copies at different positions of the decision calculation memory to form an OMBA memory array; obtaining the kijth data of the decoding data block copy stored in the memory block of the i-th row and j-th column of the OMBA memory array, recorded as the mark data; performing an XOR operation on all the mark data on each column in the OMBA memory array to obtain the corresponding column XOR result, and performing an OR operation on the column XOR results of all columns to obtain the decision value of the current round, and store it in the decision calculation memory; 其中,记译码结果中的第i个译码数据块为OMB i i=1,2,...,m;OMB i 的副本数量与LDPC译码基矩阵第i行中非0元素的数量相同;OMB i 的副本存储在OMBA内存阵列的第i行,且在该行中的相对位置与LDPC译码基矩阵第i行中非0元素的相对位置保持一致;The i -th decoded data block in the decoding result is denoted as OMB i , i =1,2,...,m; the number of copies of OMB i is the same as the number of non-zero elements in the i - th row of the LDPC decoding base matrix; the copy of OMB i is stored in the i- th row of the OMBA memory array, and the relative position in the row is consistent with the relative position of the non-zero elements in the i -th row of the LDPC decoding base matrix; k ij 为针对所述OMBA内存阵列第i行第j列内存块中所存储的译码数据块副本,从其第个数据所在的位置开始循环右移当前子迭代次数后的位置序号;为LDPC译码基矩阵第i行第j列的值;每个轮次包括M个子迭代;M为待译码数据的位数与基矩阵长度n的比值;每个子迭代对应待译码数据中的一位数据在当前轮次下的译码过程;j=1,2,...,n。 k ij is a copy of the decoded data block stored in the memory block in the i-th row and j- th column of the OMBA memory array, from which The position number after the current sub-iteration number starts from the position where the data is located and moves right cyclically; is the value of the i- th row and j -th column of the LDPC decoding base matrix; each round includes M sub-iterations; M is the ratio of the number of bits of the data to be decoded to the length n of the base matrix; each sub-iteration corresponds to the decoding process of one bit of the data to be decoded in the current round; j =1,2,...,n. 4.根据权利要求1-3任意一项所述的QC-LDPC译码器,其特征在于,还包括:输入输出模块;4. The QC-LDPC decoder according to any one of claims 1 to 3, further comprising: an input and output module; 所述输入输出模块包括:用于缓存待译码数据的输入模块、和用于缓存译码结果的输出模块;所述输入模块包括:多个输入缓冲器;所述输出模块包括:多个输出缓冲器;输入缓冲器、输出缓冲器及译码单元的数量相同,且两两之间一一对应;The input and output modules include: an input module for caching data to be decoded, and an output module for caching decoding results; the input module includes: a plurality of input buffers; the output module includes: a plurality of output buffers; the number of input buffers, output buffers and decoding units is the same, and there is a one-to-one correspondence between them; 当所述轮次计数器的值为0时,所述译码计算器从对应的输入缓冲器中读取待译码数据,作为当前轮次下的待处理数据;When the value of the round counter is 0, the decoding calculator reads the data to be decoded from the corresponding input buffer as the data to be processed in the current round; 所述终止器用于当当前轮次下的译码结果满足LDPC的停止判决条件或者轮次计数器中的值达到预设最大值时,控制所述译码结果内存将该译码结果输出至输出缓冲器,并将所述轮次计数器的值置为0。The terminator is used to control the decoding result memory to output the decoding result to the output buffer and set the value of the round counter to 0 when the decoding result in the current round meets the stop decision condition of LDPC or the value in the round counter reaches a preset maximum value. 5.根据权利要求4所述的QC-LDPC译码器,其特征在于,所述译码单元与对应的输入缓冲器之间设置有输入FIFO队列;所述译码单元与对应的输出缓冲器之间设置有输出FIFO队列。5. The QC-LDPC decoder according to claim 4 is characterized in that an input FIFO queue is set between the decoding unit and the corresponding input buffer; an output FIFO queue is set between the decoding unit and the corresponding output buffer. 6.根据权利要求4所述的QC-LDPC译码器,其特征在于,所述输入模块中设置有第一全局任务计数器,所述输出模块中设置有第二全局任务计数器,每一个所述译码单元中设置有局部任务计数器;6. The QC-LDPC decoder according to claim 4, characterized in that the input module is provided with a first global task counter, the output module is provided with a second global task counter, and each of the decoding units is provided with a local task counter; 所述局部任务计数器用于当其所在的译码单元中的译码结果内存每输出一个译码结果时,进行加一操作;且当所述局部任务计数器的值达到预设局部译码数量后,控制其所在的译码单元停止工作;The local task counter is used to increase the value of the local task counter by one each time a decoding result is output from the decoding result memory in the decoding unit where the local task counter is located; and when the value of the local task counter reaches a preset local decoding quantity, the decoding unit where the local task counter is located is controlled to stop working; 所述第一全局任务计数器用于当任一输入缓冲器每输出一个译码结果至对应译码单元时,进行加一操作;且当所述第一全局任务计数器的值达到预设整体译码数量后,控制所述输入模块停止工作;The first global task counter is used to perform an increment operation when any input buffer outputs a decoding result to the corresponding decoding unit; and when the value of the first global task counter reaches a preset overall decoding quantity, the input module is controlled to stop working; 所述第二全局任务计数器用于当任一输出缓冲器每从对应译码单元接收到一个译码结果时,进行加一操作;且当所述第二全局任务计数器的值达到预设整体译码数量后,控制所述QC-LDPC译码器停止工作。The second global task counter is used to perform an increment operation when any output buffer receives a decoding result from the corresponding decoding unit; and when the value of the second global task counter reaches a preset overall decoding quantity, the QC-LDPC decoder is controlled to stop working. 7.一种存储设备,其特征在于,包括权利要求1-6任意一项所述的QC-LDPC译码器。7. A storage device, characterized in that it comprises the QC-LDPC decoder described in any one of claims 1-6.
CN202411008991.8A 2024-07-26 2024-07-26 A QC-LDPC decoder Active CN118539932B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411008991.8A CN118539932B (en) 2024-07-26 2024-07-26 A QC-LDPC decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411008991.8A CN118539932B (en) 2024-07-26 2024-07-26 A QC-LDPC decoder

Publications (2)

Publication Number Publication Date
CN118539932A true CN118539932A (en) 2024-08-23
CN118539932B CN118539932B (en) 2024-10-15

Family

ID=92392463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411008991.8A Active CN118539932B (en) 2024-07-26 2024-07-26 A QC-LDPC decoder

Country Status (1)

Country Link
CN (1) CN118539932B (en)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101262231A (en) * 2008-04-25 2008-09-10 浙江大学 Decoding method and reconfigurable multi-mode decoder of block low density check code
CN101465654A (en) * 2009-01-06 2009-06-24 中山大学 Method for judging decode halt of LDPC code based on checksum error mode
CN102005250A (en) * 2010-10-27 2011-04-06 记忆科技(深圳)有限公司 Quasi-cyclic low-density parity check code decoder and decoding method
WO2015101521A1 (en) * 2013-12-30 2015-07-09 Alcatel Lucent Ldpc encoder and decoder
US20180262211A1 (en) * 2017-03-07 2018-09-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Stopping criterion for decoding quasi-cyclic ldpc codes
CN112653474A (en) * 2020-12-22 2021-04-13 西南大学 Design method of compact LDPC-CC decoder for reducing average iteration number
WO2022037504A1 (en) * 2020-08-16 2022-02-24 复旦大学 Multi-mode ldpc decoder for use in deep space communication
CN115037310A (en) * 2022-05-17 2022-09-09 北京航空航天大学 Performance optimization method and architecture of 5G LDPC decoder based on random computation
WO2022204900A1 (en) * 2021-03-29 2022-10-06 华为技术有限公司 Ldpc code decoding method and ldpc code decoder

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101262231A (en) * 2008-04-25 2008-09-10 浙江大学 Decoding method and reconfigurable multi-mode decoder of block low density check code
CN101465654A (en) * 2009-01-06 2009-06-24 中山大学 Method for judging decode halt of LDPC code based on checksum error mode
CN102005250A (en) * 2010-10-27 2011-04-06 记忆科技(深圳)有限公司 Quasi-cyclic low-density parity check code decoder and decoding method
WO2015101521A1 (en) * 2013-12-30 2015-07-09 Alcatel Lucent Ldpc encoder and decoder
US20180262211A1 (en) * 2017-03-07 2018-09-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Stopping criterion for decoding quasi-cyclic ldpc codes
WO2022037504A1 (en) * 2020-08-16 2022-02-24 复旦大学 Multi-mode ldpc decoder for use in deep space communication
CN112653474A (en) * 2020-12-22 2021-04-13 西南大学 Design method of compact LDPC-CC decoder for reducing average iteration number
WO2022204900A1 (en) * 2021-03-29 2022-10-06 华为技术有限公司 Ldpc code decoding method and ldpc code decoder
CN115037310A (en) * 2022-05-17 2022-09-09 北京航空航天大学 Performance optimization method and architecture of 5G LDPC decoder based on random computation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YIFAN ZHANG: "HF-LDPC: HLS-friendly QC-LDPC FPGA Decoder with High Throughput and Flexibility", 2023 IEEE 41ST INTERNATIONAL CONFERENCE ON COMPUTER DESIGN, 22 December 2023 (2023-12-22) *
胡震宇: "一种低码率的LDPC译码器的设计研究", 研究与设计, 31 August 2020 (2020-08-31) *

Also Published As

Publication number Publication date
CN118539932B (en) 2024-10-15

Similar Documents

Publication Publication Date Title
CN1874164B (en) Message passing decoding apparatus and method using simultaneous memory access
CN101800559B (en) A High-Speed Configurable QC-LDPC Code Decoder Based on TDMP
CN106911336B (en) High-speed parallel low-density parity check decoder with multi-core scheduling and decoding method thereof
Murugappa et al. A flexible high throughput multi-ASIP architecture for LDPC and turbo decoding
CN103618556A (en) Partially parallel quasi-cyclic low-density parity-check (QC-LDPC) decoding method based on row message passing (RMP) scheduling
CN101692611A (en) Multi-standard LDPC encoder circuit base on SIMD architecture
Kuo et al. A flexible decoder IC for WiMAX QC-LDPC codes
CN101707510B (en) A high-speed turbo decoding method and device
CN110048805A (en) Encoded control system and method, the wireless communication system of low density parity check code
CN118539932A (en) QC-LDPC decoder
CN109245775B (en) Decoder and method for realizing decoding
CN101090274A (en) A Viterbi decoder and its backtracking decoding method and backtracking decoding device
CN118353476A (en) A LDPC code decoding method and device based on Da Vinci architecture
US8843807B1 (en) Circular pipeline processing system
CN111431543B (en) Variable code length and variable code rate QC-LDPC decoding method and device
CN112187286A (en) Multi-mode LDPC decoder applied to CCSDS satellite deep space communication
CN106330200B (en) Low density parity check decoding method executed in flux graphic processor
CN104052500A (en) LDPC code decoder and its realization method
US10644725B1 (en) Interleaved data block processing in low-density parity-check (LDPC) encoder and decoder
CN102201817A (en) Low-power-consumption LDPC decoder based on optimization of memory folding architecture
Yang et al. Network-on-chip for turbo decoders
WO2022089429A1 (en) Decoding method and apparatus
CN115694513A (en) Ultra-high throughput rate LDPC decoder based on shift-type base graph
Liu et al. A high-performance FPGA-based LDPC decoder for solid-state drives
Scarpellino et al. Reconfigurable architecture for LDPC and turbo decoding: A NoC case study

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