CN101632230B - 低密度奇偶校验(ldpc)码的编码和解码 - Google Patents

低密度奇偶校验(ldpc)码的编码和解码 Download PDF

Info

Publication number
CN101632230B
CN101632230B CN200880007735.XA CN200880007735A CN101632230B CN 101632230 B CN101632230 B CN 101632230B CN 200880007735 A CN200880007735 A CN 200880007735A CN 101632230 B CN101632230 B CN 101632230B
Authority
CN
China
Prior art keywords
variable node
closed loop
degree
displacement
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200880007735.XA
Other languages
English (en)
Other versions
CN101632230A (zh
Inventor
T·理查森
N·布尚
A·汉德卡尔
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101632230A publication Critical patent/CN101632230A/zh
Application granted granted Critical
Publication of CN101632230B publication Critical patent/CN101632230B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • 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/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
    • 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/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

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

提供了一种新型的装置和方法,用于使用能够采用二分图表示的低密度奇偶校验(LDPC)码来对数据进行编码。为了对所述数据进行编码,可以生成多个低度可变节点的累加链。所述累加链随后可以被闭合来两次形成环,一次使用低度可变节点,一次使用比该低度可变节点更高的较高度可变节点,其中该较高度可变节点包括非闭环边。在一个实施例中,所述多个低度可变节点可以在每个边上具有相同的置换,其中置换被使用来将小尺寸的基本图提升为LDPC码的图。

Description

低密度奇偶校验(LDPC)码的编码和解码
基于35U.S.C.§119要求优先权 
本专利申请要求2007年3月9日提交的、名称为“Methods and Apparatusfor Encoding and Decoding LDPC Codes”的美国临时申请No.60/894,183的优先权,该申请被转让给本申请的受让人,在此将其明确地引入作为参考。 
技术领域
本申请针对用于出于检测和/或校正二进制数据中的错误的目的而对数据进行编码和解码的方法和装置,例如,通过使用诸如低密度奇偶校验(LDPC)码之类的奇偶校验码。 
背景技术
纠错码在通信和数据存储系统中是普遍存在的。近年来,对称为低密度奇偶校验(LDPC)码的一类代码逐渐产生非常大的兴趣。 
通常采用被称为特纳图(Tanner graph)的二分图(bipartite graph)来表示LDPC码,在所述二分图中,一组节点,即可变节点,对应于码字的比特,而另一组节点,即约束节点,有时称为校验节点,对应于用于定义所述代码的一组奇偶校验约束。所述图中的边连接可变节点和约束节点。如果可变节点和约束节点通过所述图中的边相连,则所述可变节点和所述约束节点被称为邻居。为了简单起见,通常假设一对节点通过最多一条边相连。 
当且仅当对于每个约束节点,与约束节点相邻的比特(经由它们与可变节点之间的关联)的求和模2为0,即,它们包括偶数个比特时,与所述可变节点一一关联的比特序列是所述代码的码字。 
在一些情况下,可以对码字进行打孔。这指的是从所述码字移除或打孔某些比特而并不实际发送它们的动作。然而,当对LDPC码进行编码时,仍然确定要被打孔的比特。因此,打孔对编码过程的影响较小或没有影响。为此,在本申请的剩余部分中将不考虑打孔的可能性。 
通过在所述图内沿着所述边交换消息并且通过基于输入的消息在所述节点处执行计算来更新这些消息,用于对LDPC码字进行解码的解码器和解码算法进行操作。这种算法通常被称为消息传递算法。所述图中的每个可变节点初始具备有被称为接收值的软比特,所述接收值用于指示通过来自例如通信信道的观测所确定的关联比特值的估计。所述编码过程还部分地沿着所述图的边来进行操作,但是所述连接不够准确。 
与节点(即,可变节点或约束节点)相连的边的数目被称为该节点的度。正则图或正则码是所有可变节点都具有相同的度j而所有约束节点都具有相同的度k的图或代码。在这种情况下,所述代码是(j,k)正则码。这些代码最初由Gallager发明(1961年)。与“正则”码相反,非正则码的约束节点和/或可变节点具有不同的度。例如,一些可变节点的度可以为4,另一些可变节点的度可以为3,以及又一些可变节点的度可以为2。 
尽管非正则码的表示和/或实现更为复杂,但是已经表明,与正则LDPC码相比,非正则LDPC码可以提供更好的错误校正/检测性能。 
尽管对于要被实践来在宽范围的设备(例如,消费设备)中使用的编码和/或解码系统而言,编码效率和高数据速率是重要的,但是能够以合理的成本实现编码器和/或解码器也是重要的。因此,需要例如就硬件成本而言有效率地实现用于错误校正和/或检测目的的编码/解码方案。 
发明内容
一个特征提供用于对数据进行编码的装置和方法。特别地,提供了用于使用低密度奇偶校验(LDPC)码来对数据进行编码的方法,所述LDPC码能够采用二分图表示。为了对所述数据进行编码,可以生成多个低度可变节点的累加链。所述累加链随后可以被闭合来两次形成环,一次使用低度可变节点,而一次使用比该低度可变节点更高的较高度可变节点,其中该较高度可变节点包括非闭环边。在一个实施例中,所述多个低度可变节点可以在每条边上具有相同的置换(permutation)。 
在所述方法中,所述多个低度可变节点可以包括多个核度为2的可变节点,所述较高度可变节点可以包括核度为3的可变节点,所述低度闭环可变节点可以包括核度为2的闭环可变节点。 
所述方法还可以包括:使用提升图(lifted graph),所述提升图包括所述累加链的多个置换副本、所述低度闭环可变节点的多个置换副本以及所述较高度闭环可变节点的多个置换副本。 
所述方法还可以包括:使用循环提升后的低密度奇偶校验(LDPC)码,在所述循环提升后的LDPC码中,对于一些基本可变节点,所述提升后的可变节点中的一半可以是信息节点,一半可以是奇偶节点。 
所述方法还可以包括:使用核度为3的编码节点的非闭环边上的非闭环边置换,其中所述非闭环边置换可以为0,并且对于在参与所述环的核度为2的可变节点的边上的所有其它置换,使用值0或-1mod 2n。 
类似地,提供了一种装置,所述装置包括通信接口和处理器。所述通信接口可以被配置来接收和发送数据。所述处理器可以被配置来(a)生成多个低度可变节点的累加链,以及(b)闭合所述累加链来两次形成环,一次使用低度可变节点,一次使用较高度可变节点,所述较高度可变节点高于所述低度可变节点,其中,所述较高度可变节点包括非闭环边。 
所述装置还可以包括:使用提升图,所述提升图包括所述累加链的多个置换副本、所述低度闭环可变节点的多个置换副本以及所述较高度闭环可变节点的多个置换副本。 
所述装置还可以包括:使用循环提升后的低密度奇偶校验(LDPC)码,在所述循环提升后的LDPC码中,对于一些基本可变节点,所述提升后的可变节点中的一半可以是信息节点,一半可以是奇偶节点。 
所述装置还可以包括:使用核度为3的编码节点的非闭环边上的非闭环边置换,其中所述非闭环边置换可以为0,并且对于在参与所述环的核度为2的可变节点的边上的所有其它置换,使用值0或-1mod 2n。 
相应地,提供了一种装置,所述装置包括(a)用于生成多个低度可变节点的累加链的模块,以及(b)用于闭合所述累加链来两次形成环的模块,一次使用低度可变节点,一次使用较高度可变节点,所述较高度可变节点高于所述低度可变节点,其中,所述较高度可变节点包括非闭环边。 
所述装置还可以包括:用于使用提升图的模块,所述提升图包括所述累加链的多个置换副本、所述低度闭环可变节点的多个置换副本以及所述较高度闭环可变节点的多个置换副本。 
所述装置还可以包括:用于使用循环提升后的低密度奇偶校验(LDPC)码的模块,在所述循环提升后的LDPC码中,对于一些基本可变节点,所述提升后的可变节点中的一半可以是信息节点,一半可以是奇偶节点。 
所述装置还可以包括:用于使用核度为3的编码节点的非闭环边上的非闭环边置换的模块,其中所述非闭环边置换可以为0,并且对于在参与所述环的核度为2的可变节点的边上的所有其它置换,使用值0或-1mod 2n。 
类似地,提供了一种处理器可读介质,所述处理器可读介质具有可在编码器上运行的一个或多个指令,用实现于使用低密度奇偶校验(LDPC)码来对数据进行编码,所述LDPC码可以由二分图表示,当由所述处理器执行时,所述指令使得所述处理器(a)生成多个低度可变节点的累加链,以及(b)闭合所述累加链来两次形成环,一次使用低度可变节点,一次使用较高度可变节点,所述较高度可变节点高于所述低度可变节点,其中,所述较高度可变节点包括非闭环边。 
类似地,提供了一种处理器,所述处理器具有处理电路,所述处理电路被配置来执行功能来实现(a)生成多个低度可变节点的累加链,以及(b)闭合所述累加链来两次形成环,一次使用低度可变节点,一次使用较高度可变节点,所述较高度可变节点高于所述低度可变节点,其中,所述较高度可变节点包括非闭环边。 
附图说明
根据下面结合附图阐述的详细描述,本发明的特征、特点和优点将变得更加显而易见,在整个所述附图中,类似的参考标记相应地表示相同的部件。 
图1例示长度为10的正则LDPC码的小二分图表示; 
图2是图1中图形例示的代码的矩阵表示; 
图3是小LDPC码的图形表示; 
图4例示了图3中图形例示的小LDPC码的奇偶校验矩阵表示; 
图5例示了用于对图3中例示的LDPC码进行编码的预前处理的实例; 
图6例示了用于使用预先计算出的矩阵来对信息块进行编码的过程; 
图7例示了作为与图3中示出的LDPC码对应的两个简单指令/操作的 序列的编码过程; 
图8例示了通常的LDPC编码器; 
图9例示了长度为10的正则LDPC码的大二分图表示; 
图10例示了图9中例示的LDPC图的奇偶校验矩阵表示; 
图11例示了用循环置换矩阵来替换图9中示出的3×3单位矩阵的效果; 
图12例示了在经历循环置换后,如何从可变节点侧开始按照顺序列举图11中示出的代码中的边,以及如何从约束节点侧开始呈现所述相同的边; 
图13例示了用于对图11中例示的LDPC码进行编码的可能的前处理步骤; 
图14例示了在给定图11中例示的示例性LDPC码的预先计算出的矩阵时,用于对信息块进行编码的过程; 
图15例示了作为一序列操作的LDPC编码过程; 
图16例示了用于对图7中的编码器进行矢量化的LDPC编码器; 
图17例示了基本图的奇偶校验矩阵; 
图18例示了基本编码结构的特纳图; 
图19例示了图17的图的更为完整的基本图的奇偶校验矩阵表示; 
图20例示了除去度为1的可变节点和相关边的更为完整的基本图的奇偶校验矩阵表示; 
图21例示了具有附加的度为2的可变节点的基本编码结构的扩展,所述附加的度为2的可变节点用于闭合累加链来形成环; 
图22例示了图21的扩展的基本编码结构的Z=8的提升; 
图23例示了图22中的图的扩展; 
图24是例示用于使用低密度奇偶校验(LDPC)码来对数据进行编码的编码器的方框图; 
图25例示了在编码器上运行的示例性方法。 
具体实施方式
在下面的描述中,为了提供对实施例的全面理解,给出了许多具体细节。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实现所述实施例。例如,电路可以以方框图的形式示出以使得实施 例不被不必要的细节所混淆。在其它例子中,可以详细地示出公知的电路、结构和技术,以便不对所述实施例产生混淆。 
而且,要注意的是,所述实施例被描述为过程,所述过程被描述为流程图、流程图表、结构图或方框图。尽管流程图可以将所述操作描述为顺序过程,但是所述操作中的多个操作可以并行或同时执行。另外,可以重排所述操作的顺序。当过程的操作完成时,所述过程终止。过程可以对应于方法、函数、步骤、子例程、子程序等。当过程对应于函数时,所述过程的终止对应于所述函数返回到调用函数或主函数。 
此外,存储介质可以表示一个或多个用于存储数据的设备,包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备和/或其它用于存储信息的机器可读介质。术语“机器可读介质”包括但不限于,便携式或固定存储设备、光存储设备、无线信道和能够存储、包含或承载指令和/或数据的各种其它介质。 
此外,实施例可以采用硬件、软件、固件、中间件、微代码或其任何组合来实现。当采用软件、固件、中间件或微代码实现时,用于执行必需任务的程序代码或代码段可以存储在诸如存储介质或其它存储设备的机器可读介质中。处理器可以执行所述必需任务。代码段可以表示步骤、函数、子程序、程序、例程、子例程、模块、软件包、类、或指令、数据结构或程序语句的任何组合。一个代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容,耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的机制传递、转发或发送,所述任何合适的机制包括存储器共享、消息传递、令牌传递、网络传输等。 
结合本文公开的实例描述的各种例示性的逻辑块、模块、电路、元件和/或组件可以采用被设计来执行本文所描述的功能的下述部件实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、分立门或晶体管逻辑、分立硬件组件、或其任何组合。通用处理器可以是微处理器,但是在替换实例中,所述处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器还可以被实现为计算组件的组合,例如,DSP和微处理器、多个微处理器、一个或多个微处理器结合DSP内核的组合,或任何其它此种配置。 
结合本文所公开的实例描述的方法和算法可以直接以硬件、由处理器执行的软件模块或两者的组合,以处理单元、编程指令或其它指令(direction)的形式体现,所述方法或算法可以包含在单个设备中或者分布在多个设备之间。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM,或本领域中公知的其它形式的存储介质中。存储介质可以与所述存储器耦合,以便所述存储器可以从所述存储介质读取信息或者向所述存储介质写入信息。在替换实例中,所述存储介质可以与所述处理器集成在一起。 
LDPC码
图1例示了用于确定长度为10且码率为1/2的(3,6)正则LDPC码的二分图100的实例。长度10指示存在10个可变节点V1-V10102,每个用码字的一个比特X1-X10标识。码率1/2指示校验节点的个数为可变节点的一半,即,存在5个校验节点C1-C5106。码率1/2还可以指示5个约束是线性独立的,如下所述。 
尽管图1例示了与长度为10的代码相关联的图,但是可以明白的是,对长度为1000的码字的图的表示将复杂100倍。 
图2例示了图1中示出的LDPC码的奇偶校验矩阵表示,其是特纳图(或二分图)表示的替换。奇偶校验矩阵包括对所发送的比特的一组线性约束。在代码的该种表示中,通常被称为奇偶校验矩阵的矩阵H 202可以包括相关边连接、可变节点和约束节点信息。在矩阵H 202中,每列可以对应于所述可变节点中的一个可变节点;而每行可以对应于所述约束节点中的一个约束节点。由于在示例性代码中存在10个可变节点和5个约束节点,所以矩阵H包括10个列和5个行。如果在所述图中存在边,即,如果特定的可变节点和特定的约束节点是邻居,则与该特定的可变节点和特定的约束节点对应的矩阵的项可以被设置为1;否则,所述矩阵的项被设置为0。例如,由于可变节点V1通过一个边连接到约束节点C1,则矩阵H 202的最左上角为1。然而,可变节点V5不与约束节点C1相连,因此矩阵H 202的第一行的第5个位置为0,这表示对应的可变节点和约束节点不相连。如果矩阵H 202的行在GF[2](阶为2的Galois域)上是线性独立的矢量,则所述约 束可以是线性独立的。 
在矩阵表示的情况下,要被发送的码字X可以被表示为矢量206,所述矢量206包括要被处理的码字的比特X1-Xn。当且仅当矩阵206和202的乘积为0,即,Hx=0,时,比特序列X1-Xn才可以是码字。 
对LDPC码进行编码
对LDPC码的编码过程可以是从输入信息比特到LDPC码字的映射。这种映射可以采用多种可能的形式。 
在2001年2月的IEEE Trans.on Information Theory,第2期第47卷的第638-656页上出版的Thomas J.Richardson和Ruediger L.Urbanke的名称为“Efficient Encoding of Low Density Parity Check Codes”的论文中,详细地描述了对LDPC码进行编码的通用方案。 
本申请的编码过程可以与用于实现对所述一类LDPC码进行快速并行编码的通用编码设备一起使用,所述一类LDPC码可以由美国专利申请No.09/975,331(现在为美国专利No.6,633,856)中公开的解码器支持。在专利6,633,856中,考虑特定结构的一类LDPC码,并且为该类LDPC码提供解码器架构。在本申请中,该解码器架构的特定特征可以再现为编码器结构的一部分。 
在本申请的编码过程中,m×n奇偶校验矩阵可以具有m<n和秩m,即行是线性独立的。当m>n时,冗余行可以被移除,而不会改变所述代码。 
首先,将描述作为设计编码器的过程的一部分的特定操作。如下描述的前处理计算可以在软件中作为代码设计的一部分来执行,并且可以不是编码器的实际实现的一部分。 
编码器的设计的第一步骤可以是重排行和列,以将矩阵H置为合适的下三角形式。 
H = A B T C D E
其中,A是(m-g)×(n-m),B是(m-g)×g,T是(m-g)×(m-g),C是g×(n-m),D是g×g,E是g×(m-g)。矩阵T可以是下三角矩阵,其中所有 对角项等于1。将矩阵H左乘 I 0 ET - 1 I , 得到 A B T - ET - 1 A + C - ET - 1 B + D 0 .
接着,φ可以被定义为φ=(-ET-1B+D)且是非奇异的。随后,可以计算和保存矩阵φ-1。在φ不可逆的情况下,H的行可以被认为是线性独立的,并且在子矩阵 A B C D 内部置换所述列,以确保φ是不可逆的。如果H的行不是线性独立的,则可以移除H的一些行,以便剩余行可以是线性独立的,而不会改变代码的定义。应该注意的是,所有上述计算可以是与要被编码的数据无关,可以是编码过程的一部分。这些步骤可以作为编码器设计的一部分正常地执行一次,并在编码器使用期间可以或可以不重复。 
将数据编码为码字
码字可以被表示为x=(s,p1,p2),其中s可以表示系统部分,组合的p1和p2可以表示奇偶部分,p1可以具有长度g,而p2可以具有长度(m-g)。编码问题是在给定s的情况下找到p1和p2。限定等式HxT=0T可以被自然地分裂为下述两个等式: 
As T + Bp 1 T + Tp 2 T = 0
( - ET - 1 A + C ) s T + ( - ET - 1 B + D ) p 1 T = 0
根据上述等式,可以得出 p 1 T = - φ - 1 ( - ET - 1 A + C ) s T . 由于所有矩阵是稀疏的,所以可以有效地计算出(-ET-1A+C)sT,并且在给定AsT的情况下,可以通过对等式Tz=AsT进行求解来使用z回代,有效地找到T-1AsT。矩阵φ-1通常可以是密集的,但是可以通过设计来使得g非常小,并且可以预先计算出该矩阵。因此,可以有效地得到p1 T。现在,可以通过求解 Tp 2 T = - As T - Bp 1 T 来容易且有效地确定p2 T(参见图6和7)。 
上述描述提供了用于对任何LDPC码进行编码的方法。可以明白,LDPC码的许多构造可以产生其它固有的编码机制,例如,RA码。 
本申请提供了并行编码器,该并行编码器可以使用二进制码的编码方法,诸如如上所述的,并且将它们和奇偶校验矩阵一起提升为“矢量化的” LDPC码的并行编码引擎。提升是一种用于根据小的“基本码”的若干副本来生成大的LDPC码的技术,所述小的基本码是小的奇偶校验矩阵,大小为(n0,k0)。它可以实现并行编码和解码算法以及减少大代码的描述复杂度。 
在名称为“Methods and Apparatus for Decoding LDPC Codes”的美国专利申请No.09/975,331,现在为2003年10月14日授权的美国专利No.6,633,856,中,描述和推动了结构化矢量化的一类LDPC图。在专利6,633,856中,所述推动用于提供高效解码器架构。本申请针对可以适用于对与专利6,633,856中的代码的类别相同的一类代码进行编码的对应架构。然而,与专利6,633,856不同,本申请可以包括可以有效且并行地执行的编码操作,并且因此所述架构可以允许对特定LDPC码的规格进行编程。 
小LDPC图
图3例示了简单非正则LDPC的图300。所述代码的长度可以为5,由5个可变节点V1到V5302指示。4个校验节点C1到C4306可以通过总共12条边304耦合到可变节点302。 
图4例示了使用矩阵402、404以奇偶校验矩阵形式的图3中示出的LDPC码。可以在置换矩阵H 402中,使用1来表示边。比特xi可以与可变节点Vi相关联。 
图5和图6例示了图3中示出的LDPC码的编码过程。如上所述,编码前处理步骤可以包括将图4中示出的奇偶校验矩阵H 404的行和列重排为下三角形式。图5例示了对图4中的矩阵的重排的实例。可以通过交换第2行和第4行来对所述矩阵进行重排。 
在图5中,矩阵H 501示出了重排后的不同分量。出于注释的目的,子矩阵(r1,r2;c1,c2)可以被定义为包括原矩阵中的行索引在[r1,r2]中以及列索引在[c1,c2]中的所有项。矩阵A 502可以被定义为矩阵H 501的子矩阵(1,3;1,1)。矩阵B 503可以被定义为矩阵H的子矩阵(1,3;2,2)。矩阵T 504可以被定义为矩阵H的子矩阵(1,3;3,5),其可以是下三角形式。矩阵C 505可以被定义为矩阵H的子矩阵(4,4;1,1)。矩阵D 506可以被定义为矩阵H的子矩阵(4,4;2,2)。矩阵E 507可以被定义为矩阵H的子矩阵(4,4;3,5)。在508中例示了采用Gaussian排除法来导出φ=(-ET-1B+D),其中可以获得φ509 和其逆φ-1510。 
图6例示了在给定信息块s=[1]601和图5中示出的预计算出的矩阵的情况下的实际编码过程。标准的矢量与矩阵的相乘可以允许计算As602、T-1As 603、ET-1As 604、ET-1As+Cs 605、p1=φ-1(ET-1As+Cs)606、Bp1607、Bp1+As 608和p2=T-1(Bp1+As)609。应该注意的是,可以通过使用回代来执行与T-1的相乘。在最后的结果中,可以在矢量610中示出编码后的比特x=[p1,p2,s]。 
二进制矢量和二进制矩阵的相乘可以被分解为简单操作序列。例如,考虑在硬件处理器中将二进制矩阵U(m×n)与二进制矢量v(n×1)相乘。可以假设在相乘之前,可以在开始于索引s的一些物理位置,例如存储器,获得矢量v,并且结果可以存储在开始于索引t的位置。此外,可以假设矩阵U的行i,i∈[0,m-1],在被索引为 
Figure G200880007735XD00111
的列处具有非0项,即,1。可以如下定义两个指令(1)(0a b)和(2)(1a b):(0a b)可以指示处理器读出位置b处的值,并将该值写入到位置a;(1a b)可以指示读出位置b处的值,并将其添加到位置a,即与位置a处的当前值异或。换言之,第二个操作可以累加位置a处的值;第一个操作重写位置a处的值。现在,矢量v与U的相乘可以被分解为这两个简单操作的下述序列:(0ts+l0,1),(1ts+l0,2),…, 
Figure G200880007735XD00112
Figure G200880007735XD00113
(0t+1 s+l1,1),(1 t+1s+l1,2),…, 
Figure G200880007735XD00114
…;(0t+m-1 s+ln1,1),(1t+m-1 s+ln-1,2),…, 
Figure G200880007735XD00115
指令的总数目可以与矩阵中的非零项的数目相同。 
图7例示了作为与图3中示出的LDPC码对应的两个简单指令/操作序列的编码过程。存储器设备702可以存储信息比特、编码比特和中间变量。存储器702的位置0可以被分配来存储单个信息比特s 710;位置1可以被分配来存储奇偶比特p1712;位置2到4可以被分配来存储奇偶比特p2714。另外的存储器空间可以被提供来保持中间值。示例性存储器902可以提供位置5到7来存储As 716的值以及稍后存储Bp1+As的值;它可以提供位置8到10来存储T-1As 718;以及可以提供位置11来存储ET-1As 720。 
相对于存储器702的上述分配,作为与矢量间的矩阵乘法的图6中例示的编码过程可以被分解为表704中列出的操作(0a b)和(1ab)的序列。为了清楚起见,表704示出了指令序列(每行一个)以及它们的相应的矩阵乘法 对等方。例如,乘法As可以被分解为两个指令:(050),其后为(070)。表706示出了在执行表704中的对应行中示出的指令时存储器位置0到11的内容。执行表704上的指令的结果可以在表706的下一行中示出。例如,通过将s=[1]存储在位置0中,如表706的第一行中所例示,可以如图5中所示来对相同的信息比特进行编码。执行其后为指令(070)的指令(050)的操作可以给出从5到7的位置中的结果As=(101),如块706的第3行中所示。这可以是与图5中的其对等方相同的结果。表706例示了在执行表704中的基本指令序列时针对存储器位置0到11的内容的完整编码过程。 
表704的序列指令可以被容易地转化为硬件实现。在硬件实现期间可以进行简单的修改,以例如符合所使用的硬件的存储器操作约束。 
通用LDPC编码器
图8例示了通用LDPC编码器800。单元操作处理器808可以执行由所接收的指令指示的三种可能的操作中的一种。所述单元操作处理器808可以将求和比特清零,将求和比特与从存储器读取的比特进行异或或者将求和比特输出到编码存储器806。要执行的操作可以由编码器控制模块800中的操作控制模块810上的操作来选择,并且以一个或多个指令的形式指定给单元操作处理器808。读/写控制模块804、编码器控制模块800可以指定访问编码存储器806的顺序。操作控制模块810和读/写控制模块804两者的定时形式可以由编码器控制模块800中的编码器定时控制模块802控制,该编码器定时控制模块802通过定时控制信号确定编码器的数据流。编码存储器806可以是双端口存储器块,其可以通过使用SIMD读或写指令而被独立地写入或读取。 
编码过程的矢量化
在给定矢量化的LDPC图的情况下,本申请的编码过程可以被如下矢量化。所述编码器可以如同它正在同步且并行地对所投影的LDPC码的Z个副本进行编码一样进行操作。对编码过程的控制可以对应于所投影的LDPC图,并可以在所述Z个副本之间共享。因此,所述编码器可以被描述为对若干个比特矢量进行操作,每个矢量具有Z个元素。对Z个投影图 的完全分离地并行编码的一个变型可以是在编码过程期间,在比特矢量内对比特进行重新排序。这种重新排序操作可以称为旋转。所述旋转可以实现由Ψ定义的置换操作,其中Ψ可以表示用于定义所述置换的组。由于所述旋转,投影图的Z个副本的处理路径可以混合,由此将它们链接以形成单个大图。可以获得用于指定所述旋转的控制信息以及投影图的控制信息。幸运的是,所述旋转控制信息可以使用相对小的存储器来指定。 
尽管各种置换可以用于所述旋转,但是使用循环置换特别值得关注,因为利用它可以容易地实现此种置换。为了简单起见,可以假设Ψ包括循环置换的组。在这种情况下,大LDPC图可以被约束为具有准循环结构。出于该实例的目的,N可以是图中的可变节点的数目,M可以是图中的约束节点的数目。可以假设N和M都是Z的倍数,N=nZ和M=mZ,其中Z可以表示循环的阶数。 
节点可以通过使用双索引来标识。因此,可变节点vi,j可以是投影图的第i个副本的第j个可变节点。由于Ψ是循环置换的组,所以当且仅当对于k=1,…,Z,节点vi+kmod Z,j连接到约束节点ca+kmod Z,b时,可变节点vi,j才可以连接到约束节点ca,b。 
大LDPC图
可以参照图9-16来进一步描述用于使用非常小的图形表示和旋转信息来表示大图的本申请的技术,所述图9-16涉及图3中的图300的矢量化。参照这些图形描述的本申请的技术可以适用于非常大的LDPC图。 
可以通过对图3中示出的小图进行复制,即实现多个副本,并随后执行旋转操作来互连所复制的图的各个副本来生成更大的图。出于讨论的目的,更大的图结构内的小图在下文中将被称为投影图。 
图9例示了大图900,其是对图3中例示的小图进行三次并行拷贝的结果。可变节点902’、902”和902”’分别对应于第一到第三图,所述第一到第三图是通过对图3中的图进行三次拷贝得到的。另外,校验节点906’、906”和906”’分别对应于第一到第三图,所述第一到第三图是通过进行三次拷贝得到的。应该注意的是,没有边连接所述三个图中的一个图的节点和所述三个图中的另一图的节点。相应地,这种拷贝过程将基本图“提升”了三 倍,产生三个分离的相同图。 
图10使用矩阵1002和1004例示了如上讨论的拷贝过程的结果。应该注意的是,为了得到原始图3的图的三个副本,图4的矩阵402中的每个非零元素使用3×3单位矩阵来替换。因此,矩阵402中的每个1使用3×3矩阵来替换,以生成矩阵1002,其中所述3×3矩阵中沿着对角线为1而其余地方为0。应该注意的是,矩阵1002中的边的数目是图4中的矩阵402的边的数目的3倍,图3中示出的基本图的3个副本的每个具有12条边。这里,变量xij可以对应于可变节点Vij。 
编码器的修改
图8的编码器800可以被修改来对如上所述的(Z=3个)并行图进行编码。可以将单元操作处理器1008形成为能够并行地同时处理3个相同的操作的矢量单元操作处理器。所述单元操作处理器1008的所有输出可以被矢量化,从而承载3倍于原先承载的数据。可以使编码存储器1006变为3倍大,使得能够在单个SIMD指令的指导下并行地写入或读取3个比特。这些存储器的输出可以是3比特宽的矢量。然而,单元操作控制1010、排序(读/写)控制1004和编码器定时控制模块1002可以保持与图8中的相同命名的元件相同或相似。 
旋转
可以通过利用图11中示出的3×3循环置换矩阵替换图10中示出的3×3单位矩阵中的每个来引入旋转。应该注意的是,图11中使用的循环置换矩阵可以存在三种可能性。可以通过指示特定置换矩阵在该置换矩阵的第一行中的第一、第二或第三位置上是否存在1,来指示该置换矩阵替换单位矩阵。例如,在矩阵1102的情况下,从左上方开始进行到右下角,可以利用序列(2,2,3,3,1,1,1,3,2,1,2,3)来指定所述旋转。 
图12例示了在约束节点侧执行循环置换(旋转)的效果。由于所述置换可以在约束节点侧执行,所以可变节点侧的边之间的关系,例如排序,保持不变,如行1202’、1202”和1202”’中所示。然而,在所述约束侧,所述置换导致列内的边,例如特定矢量边内的边,被重新排序,如行1204’、1204” 和1204”’中所示。这可以产生与所述投影图的不同副本对应的节点之间的互连。 
应该注意的是,作为矢量边置换操作的结果,约束节点C1,1现在可以连接到与边(1,1)相对的边(2,1),约束节点C2,1可以耦合到与边(2,1)相对的边(3,1),约束节点C3,1可以耦合到与边(3,1)相对的边(1,1)。 
通过将开关引入到消息路径来执行旋转,可以如图11中所定义地对LDPC码进行编码。 
通过应用如上所述的通用LDPC编码过程,可以进一步地理解矢量编码过程。取代对二进制数据进行处理,所述编码器可以对Z个比特的矢量进行处理,所述Z个比特对应于投影图中的比特的Z个并行副本。奇偶校验矩阵H 1102可以包括ZxZ全零矩阵或表示为σk,k∈[0,Z-1]的ZxZ循环置换矩阵的项。循环矩阵σk与Z比特二进制矢量的相乘可以等价于将所述矢量右移k个比特。在域GF(2z)中,除了当测试φ的可逆性时所述矩阵可以首先恢复到二进制表示之外,可以与二进制数据情形一样处理所述编码过程。 
编码过程的实例
图13和14例示了图11中示出的LDPC码的示例性编码过程。编码前处理步骤可以将奇偶校验矩阵H的行和列重排为下三角形式。在图13中示出了一个示例性重排H’1301。H’1301可以通过置换原始矩阵H’1102的第2行和第4行来获得。 
在构造编码器时,前处理可以提取和存储特定信息。矩阵A 1302可以是矩阵H’1301的子矩阵(1,3;1,1)。矩阵B 1303可以是子矩阵(1,3;2,2)。矩阵T 1304可以是子矩阵(1,3;3,5),其是下三角形式。矩阵C 1305可以是子矩阵(4,4;1,1)。矩阵D 1306可以是子矩阵(4,4;2,2)。矩阵E 1307可以是子矩阵(4,4;3,5)。在1308和1309中例示了采用Gaussian排除法得到φ=(-ET-1B+D),并且随后计算出它的逆φ-11310。 
在给出离线预先计算出的矩阵的情况下,图14例示了示例性信息块s=[100]1401的实际编码过程。与矢量间的矩阵乘法计算出矢量Cs1402、As1404、T-1As 1405、ET-1As 1406、ET-1As+Cs1407、p1=φ-1(ET-1As+Cs)1408、Bp1 1409、Bp1+As 1410和p2=T-1(Bp1+As)1411。在1412中示出了 所得到的码字。 
类似于上述和图7中例示的二进制矩阵乘法分解,当结合旋转,例如,循环移位,时,域GF(2z)中的上述矩阵操作可以被分解为简单操作序列。可以如下定义两个指令(0arb)和(1arb):(0arb)指示处理器读出位置b处的值,将所述值循环左移r,并且将结果写入到位置a;(1arb)指示处理器读出位置b处的值,将所述值循环左移r,并将所述结果与位置a处的值相加。 
乘法矩阵的分解
当对包括ZxZ循环矩阵或零矩阵的项的矩阵U(mxn)与Z比特数据的矢量v(nx1)间的乘法进行分解时,可以假设在乘法之前,源数据可以保持在Z比特数据宽的某一存储器中的位置s,s+1,…,s+n-1处,所得到的数据将存储在同一存储器中的位置t,…,t+m-1处。还可以进一步假设矩阵U的行i,i∈[0,m-1],在列 
Figure G200880007735XD00161
k∈[0,Z-1],具有非零项,即,σk,所述非零项具有循环移位值 
Figure G200880007735XD00162
∈[0,Z-1]。在这些假设的情况下,U与v间的乘法等价于下述操作序列: 
(0tu0,1s+l0,1),(1tu0,2s+l0,2),…, 
Figure G200880007735XD00163
(0t+1 u1,1s+l1,1),(1t+1u1,2s+l1,2),…, 
Figure G200880007735XD00164
…;(0t+m-1 un-1,1 s+ln-1,1),(1t+m-1 un-1,2s+ln-1,2),…, 
Figure G200880007735XD00165
指令的总数目与所述矩阵中的非零项的数目相同。 
编码过程
图15例示了作为对图11中示出的矢量LDPC码进行的一序列操作(0arb)和(1arb)的编码过程。存储器1502可以存储信息比特、编码比特和中间变量。存储器位置0’到11’中的每个位置的内容在对应的存储器位置上方的行1503中示出。存储器可以具有Z比特数据宽度,即,简单SIMD指令的访问单位为Z比特矢量,并且每个存储器位置0’到11’保持Z个比特。存储器1502的位置0’可以被分配来存储单个信息矢量s;位置1’可以被分配来存储奇偶矢量p1;位置2’到4’可以被分配来存储奇偶矢量p′2。另外的存储器空间可以被提供来保持中间值。存储器1502可以提供位置5’到7’来存储As的值以及稍后存储Bp1+As的值;它可以提供位置9’到11’来存储T-1As; 以及可以提供位置12’来存储ET-1As。 
相对于存储器1502的上述分配,作为与矢量间的矩阵乘法的图14中例示的编码过程可以被分解为表1504中列出的操作(0arb)和(1arb)的序列。为了清楚起见,表1504示出了指令序列以及它们的相应的矩阵乘法对等方。例如,乘法As可以被分解为两个指令:(0510),其后为(0700)。可以通过将s=[100]存储在位置0中,如表706的第一行中所例示,可以对与图14中相同的信息比特进行编码。执行指令(0510)和(0700)的操作可以给出从5’到7’的位置中的结果As=(001,000,100),与图14中其对等方相同。表1506例示了在执行指令序列时针对存储器1502的内容的完整编码过程。 
表1504中列出的指令可以被容易地转化为硬件实现。所述指令集的许多变型是可能的,包括例如移除所述指令集中的冗余,将指令添加到所述指令集中以避免对所述存储器进行初始化,或者优化所述指令集以符合存储器操作特性。此种变型可以被认为在本申请的范围内。 
编码器
图16例示了编码器1600。编码器1600可以利用旋转来对编码器800进行完全地矢量化。编码器1600和编码器800之间的相似性是显而易见的。具体地,编码器控制模块1612和操作控制模块1610可以按照与编码器800中的它们的对等方802和812相同或相似的方式进行工作。例如,为了对图12和13中定义的LDPC码进行编码,这些组件的操作与编码器800中的它们的对等方在对图3中的示例性代码300进行编码时的操作完全相同。编码存储器1606可以是编码器800中的它的对等方806的矢量化版本。在编码器800中,存储器存储单个比特,然而,编码器1600中的对应存储器可以存储集合,即,Z比特矢量。这些矢量可以通过使用SIMD指令作为单个单元写入以及读取。因此,从排序(读/写)控制1604发送到存储器的消息标识符,即存储器索引,可以等价于或类似于编码器800中的那些。除了编码器800中的它的对等方804的角色外,排序或读/写控制模块1604还具有下述其它角色:存储和提供所述置换信息,例如旋转信息。 
在编码实例300中,编码器800将多个单个步骤的顺序存储在其排序 模块1004中,其中所述多个单个步骤一起执行一系列矩阵乘法。考虑使用编码器1600来对图11中的代码进行编码。所述排序模块1604可以存储与上述相同的顺序来在编码期间访问Z比特矢量,并且还存储用于描述与Z比特矢量的顺序相同的顺序相关联的旋转的顺序。该顺序用作生成旋转信号的基础,所述旋转信号被排序模块1604用来使得开关1616旋转矢量。所述矢量单元操作处理器1608与编码器800中的它的对等方808相同,除了矢量单元操作处理器1608对Z比特矢量而不是对单个比特进行操作(清零、累加或输出)之外。 
如上讨论的编码方法和装置的一些变型可以导致在一些实现时减少复杂度。下面是可以减少如上讨论的控制存储器1604和编码存储器1606两者的存储器要求的一些变型。实现可以结合一个或多个如下所述的变化。 
首先,可以简化指令表示:如上所述,在各个实施例中,编码指令是两个基本指令(0arb)和(1arb)的有序序列,当执行所述序列时,产生实际的编码。此种指令序列可以通过将某一矩阵与某一矢量的乘法连续地分解为基本指令序列来生成。一些示例性分解包括占压倒性百分比的下述模式的子序列: 
Figure G200880007735XD00181
在该子序列中对a的重复可以是冗余的。可以通过修改基本指令来容易地去除该冗余。因此,可以如下定义两个新的指令(00a)和(1ra):(1ra)可以指示处理器读出位置a处的值,将该值循环左移r,并将该值与累加器中的当前值进行异或;(00a)可以指示处理器将累加器中的当前值写入到位置a,并将累加器中的值复位为0。从旧指令到新指令的转换可以如下:(0arb)可以被转换为(1rb)和(00a);(1a rb)可以被转换为(10a)、(1rb)和(00a)。按照这个规则,示例性序列 
Figure G200880007735XD00182
可以转换为 
Figure G200880007735XD00183
Figure G200880007735XD00184
和(00a),从而去除所述冗余。按照这种方式对指令集进行转换可以减少实现所述编码存储器1606所需要的存储器的量。 
接着,可以减少指令集的基数(cardinality):当将LDPC编码看作矩阵和矢量乘法的序列1600时,编码过程可以被粗分为3个阶段。在第一阶段,可以通过先求解AsT然后求解Tz=AsT来得到T-1AsT;在第二阶段,可以得到p1 T;在最后阶段,在给定p1 T的情况下,可以通过求解 Tp 2 T = - As T - Bp 1 T 来得到p2 T,这可以通过使用回代来有效地完成。在原始形式中,每个阶段中的矩 阵和矢量乘法可以被分解为指令子集。这些三个子集的顺序级联可以是完整的指令集,并且所述指令集的结束暗示编码过程的结束。然而,在第一阶段和最后阶段之间共享指令子集是可能的,并且从而可以减少指令集的基数。 
可以注意到,如果p1 T被初始化为0,则可以通过求解 Tp 2 T = - As T - Bp 1 T 来得到T-1AsT。接着,可以定义要成为最后阶段和第二阶段的指令子集的级联的指令的顺序。因此,编码可以包括:1)将p1 T初始化为0;2)运行最后阶段的指令子集(得到T-1AsT);3)运行第二阶段的指令子集(得到p1 T);4)再次运行最后阶段的指令子集(得到p2 T)。 
这种指令集共享可以减少编码器控制设备1612中的存储器,并且因为T-1AsT现在可以保存在p1 T的位置处并且可以不需要保存,所以它还可以减少编码存储器1606。 
基本编码结构
图17例示了奇偶校验矩阵1700(包含图形符号的块指示1,没有图形符号或空块指示0),图18例示了特纳图,它们都是基本编码结构A的表示,如下所述。当图18中的图被提升时,矩阵(这里被描述为方阵)中的每个项可以变为置换矩阵或零矩阵。零矩阵对应于空块,而置换矩阵对应于具有图形符号的块。在循环提升的情况下,所述置换矩阵可以是循环置换矩阵。应该理解的是,在作为奇偶校验矩阵的结构的表示中,行和列可以被显示为被置换。类似地,特纳图可以以置换的方式显现。此外,所述矩阵和所述图可以是较大的结构的子矩阵和子图。 
投影图还可以被公知为基本图。完整图可以被公知为提升图。所述提升图可以通过制作基本图的Z个副本并在所述副本间置换相似的边来获得。为了简单起见,关注循环置换。 
基本图中具有的简便的编码结构可以是度为2的可变节点的累加链与度为3的单个可变节点。所述结构主要包括单环1800,所述单环1800穿过所述累加链中的所有度为2的可变节点V2-V9以及所述度为3的可变节点V1。所述度为3的可变节点上的边中的两条边(1802,1804)参与所述环。所述度为3的可变节点V1上的第三边1806可以属于所述环外的任意校验节点,从而使得相关联的奇偶校验矩阵可逆。(在图18中,校验节点可以包括C1-C9)。这种编码结构可以称为基本编码结构A,并在图18中示出。在一些实施例中,所述度为3的节点V1可能不形成包括所述累加链中的所有度节点的环。这种编码结构可以称为基本编码结构B。因此,基本编码结构A可以是基本编码结构B的特殊情形。 
基本图的核可以包括上述结构以及可以与参与上述环的约束节点相连的其它可变节点。可以存在根据属于所述基本图1900的核的可变节点所形成的其它奇偶校验比特,如图19中所示。 
一旦所有其它比特被确定,对度为1的可变节点的编码可以非常简单。因此,对于编码,首先关注的可是除去这些节点的结构。图20给出与图19对应的不包括所除去的节点的实例2000。得到的结构可以称为核。当所述核包含基本编码结构A作为子结构时,如图19中的实例,则使用基本编码结构A可要求将其它可变节点设置为信息节点,其也可称为系统节点。根据所述信息比特分配与这些节点相关的比特的值。随后,可计算与基本编码结构A相关联的比特,以完成所述编码。一旦确定基本编码结构A中的所述度为3的可变节点的值,则通过简单卷积型处理确定所述累加链比特。如果添加GF[2]上的所述核基本图中的所有约束,即,在编码时,从约束节点到可变节点的偶数个边等于0个边,而从约束节点到可变节点的奇数个边等于1个边,则可以观察到,基本编码结构A中的度为3的节点可以写入作为对所述核基本图中的具有奇数度的信息可变节点的简单奇偶校验。 
如果在图被提升时,与所述累加链中的度为2的可变节点相关联的每对边被赋予相同的提升值,则可以为所述核提升图预留所述核基本图的如上所述的关键特性。特别地,除了现在以逐块的方式之外,类似于向基本图添加约束,添加所提升的奇偶置换矩阵,与所述累加链中的度为2的节点相关联的边有效地彼此消除,留下度为3的提升后的可变节点作为信息提升节点的奇偶校验。所得到的与度为3的可变节点相关联的矩阵为矩阵Φ。 
在提升基本编码结构B的一个实施例中,与度为3的节点相关联的边中的两条边上的旋转值可以采取形式s和s+L/4,而第三边采取任意的不同值。这里,s是任意的整数,而L是提升尺寸。在这种情况下,矩阵Φ-1可 以被证明是最多9个置换矩阵的和,即,与Φ-1的乘法包括对矢量最多置换9次,并且相加最多9个副本。这种编码结构可以称为提升后的编码结构B。 
在提升基本编码结构B的另一实施例中,与度为3的节点相关联的环边中的两条边上的旋转值可以采取形式s和s+L/2,而第三边采取任意的不同值。在这种情况下,矩阵Φ-1可以被证明是最多3个置换矩阵的和,即,与Φ-1的乘法包括对矢量最多置换3次,并且相加最多3个副本。这种编码结构可以称为提升后的编码结构C。 
在提升基本编码结构B的另一实施例中,与度为3的节点相关联的边中的两条边上的旋转值可以采取值s,而第三边采取任意的不同值。在这种情况下,矩阵Φ-1可以被证明是单个置换矩阵,即,与Φ-1的乘法包括仅仅一个简单置换。这种编码结构可以称为提升后的编码结构D。 
应该注意的是,提升后的编码结构B、C和D可以都是对基本编码结构B的提升。在一些实施例中,度为3的节点的两个指定边可以是基本编码结构A中的度为3的节点的两条环边。在提升后的编码结构B、C和D中,D可以具有最小的复杂度,而B可以具有最大的复杂度,C可以在两者之间。相反,B的优点是,在提升图中,通过度为2的节点的环还可以通过4个度为3的节点,这可以改进图的性能,尤其是在高信噪比时。与之形成对照,在结构C中,通过度为2的链的环可以通过仅仅两个度为3的节点,而在结构A中,它可以通过仅仅一个度为3的节点。因此,编码结构B、C和A可以提供性能和复杂度之间的不同折衷。 
对于编码结构B的大多数提升版本,在对与所述累加链相关联的置换的上述约束的情况下,矩阵Φ将是三个置换矩阵的和。如果度为3的节点的边中的两条边具有相同的置换,则矩阵Φ可以是置换矩阵。这可以是提升后的编码结构D的情形。如果提升后的编码结构D是基本编码结构A的提升,并且具有相同置换的边是度为3的基本节点的两条提升后的环边,则这种结构可以称为提升后的编码结构A。如果与剩余的未删除的边相关联的旋转为0,或者如果Φ是单位矩阵,则所述结构可以称为具有等同性(identity)的提升后的编码结构A。 
对于解码器中的大并行度,具有大值的提升尺寸Z是有利的。对应地,可以期望具有小的基本图。这可能在使用上述编码结构时产生难度。特别 地,如果基本图小,则累加链可以非常短。当使用提升后的编码结构A时,可以产生Z个环,所述环包括所述提升后的度为3的可变节点的一个副本和其长度为基本图累加链的度为2的节点的链。因此,这种编码环非常短,并且这可以导致代码的性能差。 
这里所呈现的结构可以允许有效地增加从L到2L+1的编码环中的累加链,同时保持小的基本图。在利用提升尺寸Z扩充基本图后,所述编码结构A可以显示为基本图的大小为2倍且提升尺寸为Z/2的结构。这种扩充不会改变所述图,仅仅改变作为基本图和提升的解释。 
扩充
整数集{0,...,Z-1}是集合{0,2,...,Z-2}和集合{1,3,...,Z-1}的交织。可以通过向右循环移位S来执行对{0,...,Z-1}的循环置换,并且对{0,...,Z-1}的循环置换可以等效地表示为偶数元素{0,2,...,Z-2}和奇数元素{1,3,...,Z-1}的循环置换和两者的交织。如果S是偶数,则对所述序列的再交织可以开始于偶数子集;如果S是奇数,则对所述序列的再交织可以开始于奇数子集。偶数序列的循环移位可以为K,其是最多为S/2的最大整数,而奇数序列的循环移位将是S-K。 
开始于作为对基本图的尺寸为Z的提升的图,每个基本图节点可以被复制,一个是偶数节点,而另一个是奇数节点,将提升尺寸减小到Z/2,并且使用上述的表示,准确地再生与具有两倍于原始尺寸的尺寸为Z/2的基本图的提升相同的图。如果在原始图中,提升后的可变节点通过置换S与提升后的校验节点相连,则在对所述节点进行复制后,如果S是偶数,则可变节点的偶数副本可以连接到校验节点的偶数副本,而可变节点的奇数副本可以连接到校验节点的奇数副本。如果S是奇数,则偶数可变节点可以连接到奇数校验节点,而奇数可变节点可以连接到偶数校验节点。与这两条边相关联的提升可以是K和S-K。 
其目标是使提升后的编码结构A显示为这种两倍于基本图大小的进行Z/2提升后的结构。因此,所述编码结构应该隐含在原始的经过Z提升后的较小的基本图结构中。 
为了实现这,将用于闭合累加链的所述环的另一度为2的节点添加到 基本编码结构A中。在基本图中,这个节点的边平行于度为3的节点的边中的两条边。当执行所述提升时,这个节点上的边可以采取整数值A和A-1,所有值被解释为对Z求模。按照这种方式,在基本图的Z个副本中出现的通过度为2的节点的Z个环变为单个环的Z倍长。除了在编码结构中的度为3的可变节点的环边上的这种循环置换为整数B-1与B模Z之外,其中,在所述基本图中,所述B-1置换可与连接到与具有提升值A的度为2的环可变节点上的边相同的约束节点的边相关联。在这种结构的情况下,如上所述,可以扩充所述基本图,并且可以将所述提升尺寸减半,从而所得到的图将包含提升后的编码结构A,在该提升后的编码结构A中,另一度为2的可变节点的一个副本现在参与所述编码结构,而其它副本不会参与所述编码结构;并且度为3的可变节点的两个副本中的一个参与所述编码结构,而另一副本不会参与所述编码结构。 
这里,可以进行一些概括。首先,暂时假设提升Z是2的幂,当对基本图进行扩展时,可以将提升值S的LSB移入到基本图中。可以使用不同的比特。如果使用第k个比特(目前k=0),则取代上述A-1和B-1,将得到A-2k和B-2k。在这种情况下,所述提升后的累加结构不能形成单个大环,而是形成若干个环。其次,尽管这种关注集中在2的幂,但是对于Z,可以使用其它值。通常,可以按照这种方式将基本图增加因子F,只要F是Z的因子。 
一些代码设计中期望的另一特性是提升的缩放性(scalability),即,可以采用不同的提升尺寸Z来使用相同的基本图。而且,通常可以从单个提升中导出不同尺寸的提升。特别地,可以关注于支持作为2的幂的Z值,所述Z值从16直到512或1024。另一目标是在所述缩放下保留上述的编码结构。这限制了缩放参数。可以提供一种缩放规则,在该缩放规则中,定义最大提升尺寸的提升,并且通过从所述提升值中移除合适数目的LSB来导出较小的提升。这种缩放定律通常可以如下表述。如果S是与提升尺寸Zmax相关联的提升,则与提升尺寸Z1相关联的提升可以是最大整数,最多为S* Z1/Zmax。期望在缩放下保留所述编码结构。存在两个特定的提升值数目,即0和-1mod 2n,其在这种类型的缩放下总是保留。因此,如果所述编码结构仅仅使用这两个值,则它将在缩放下保留。 
因此,一个选项是在度为3的节点的环边上具有提升值0和-1,而在非环边上具有任意值。当这种基本图被扩充1倍时,它具有提升后的编码结构A。在采用所有2的幂进行的缩放下,这种结构可以保留,因为值0和-1可以在此种缩放下保留。此外,现在可以使用提升后的编码结构A,这意味着在扩充后的图中,Φ-1是置换矩阵。 
另一可能期望的特征是度为3的编码节点的非环边上的置换为0,即,具有等同性的提升后的编码结构A。这与具有0或-1的值且在所述图中同时避免低度可变节点的短环的编码结构中的所有其它循环置换相冲突。 
然而,如果对所述编码结构的保留仅仅局限于比2大的一些最小的提升尺寸,例如16,那么可以使用除0和-1之外的值。 
度为2的提升环结构和度为3的编码列的主要特征是对于某一整数K,提升置换采用值K和K-1。对于降至尺寸2的所有提升,仅仅K=0可以保留这一点。然而,如果降至尺寸为16的提升,仍要保留这种特性,则对于K可以选择不同值。如果K的长度为n比特,对应于Z=2n,其中n大于或等于4,则可以选择K的n-3个LSB为0,而其它为任意值。遵循K-1 mod2n的n-3个LSB为1。在这种情况下,保留以1区分的提升值的主要特征。例如,如果K是此种n比特数,并且J是给定的m比特数作为开始的m个比特,换言之,K的m个MSB,其中m是4或更大,则J-1 mod 2m等于K-1 mod 2n的m个MSB。换言之,如果从K和K-1中丢掉n-m个LSB,则结果是J与J-1 mod 2m的二进制表示。这可以用来设置编码结构中的度为3的非环边上的置换,从而在扩充后的编码结构中,参与提升后的编码结构A的编码的度为3的可变节点的副本具有采用置换值0提升的非环边。因此,所述扩充后的编码结构是具有等同性的提升后的编码结构A。其中最后n-3个比特为0的n比特数将被称为n-30比特数。 
图21例示了基本编码结构A的扩展,其具有可变节点V1-V4和约束节点C1-C4以及另一度为2的可变节点Vx,该另一度为2的可变节点Vx用于闭合所述累加链来形成环2102。 
图22例示了对图21中的扩展后的基本编码结构A 2100的Z=8的提升。使用图形符号来区分奇数副本和偶数副本。在该图中,仅仅使用0和-1的移位。未示出度为3的节点的非环边,并且没有给出其置换。由于对提升 后的度为3的节点的环边上的置换的选择,这不表示提升后的编码结构A。可变节点Vx,z可以对应于第1到第8图,其中x是图的数目,z是提升尺寸。约束节点Cx,z可以对应于第1到第8图,其中x是图的数目,z是提升尺寸。 
图23例示了在提升尺寸为4和双倍基本图时的对图22中示出的图的扩充。注意,所述图现在可以包含使用度为3的奇数可变节点和度为2的可变节点中的一半可变节点的提升后的编码结构A,所述度为2的可变节点中的一半可变节点用于闭合图22中的累加环。 
奇偶校验矩阵
上述申请可以在第三代合作伙伴计划2(3GPP2)无线通信系统中使用。在共同待决的美国临时专利申请No.60/862,730中对此种系统进行了一定程度的描述,该申请在此引入作为参考,并且形成本申请的一部分。此外,这些实例的所提出的编码可以使用提升后的编码结构A作为编码基础。换言之,在扩充图中出现的提升后的编码结构A表示内核的奇偶比特。应该理解的是,实例中的对所述列或可变节点的重新排序不会显著地改变所述实例。类似地,对所述行或约束节点的重新排序不会改变所述实例。类似地,将常数与列中的所有提升值相加,不会显著地改变所述实例。 
图24是例示用于使用低密度奇偶校验(LDPC)码来对数据进行编码的编码器2400的方框图。所述编码器能够利用二分图来表示编码后的数据。编码器2400可以包括与通信接口2704耦合的处理电路(例如,处理器、处理模块等)2402和用于存储编码数据的存储器设备2406,其中所述通信接口2604能够接收和发送数据。所述处理电路2402可以与控制模块2408耦合,以向处理电路2402提供一个或多个指令。所述指令可以包括但不限于,访问存储器设备2406的顺序和数据流的定时。所述处理电路2402可以执行实现下述的功能:(a)生成多个低度可变节点的累加链;以及(b)闭合所述累加链来两次形成环,一次使用低度可变节点,而一次使用比所述低度可变节点高的较高度可变节点,其中所述较高度可变节点包括非环闭合边。 
图25例示了在用于使用低密度奇偶校验(LDPC)码来对数据进行编码的编码器上操作的示例方法。所述编码器能够利用二分图来表示编码数据。当编码器接收到用于编码的低密度奇偶校验(LDPC)码时开始操作示例方法 (2502)。接着,所述编码器可以生成低度可变节点的累加链(2504)。在一种配置中,所述多个低度可变节点可以在每边上具有相同的置换。接着,可以闭合(2506)所述累加链来两次形成环,一次使用低度可变节点,而一次使用比所述低度可变节点高的较高度可变节点,其中所述较高度可变节点包括非环闭合边(2508)。 
根据另一配置,编码器中的电路可以用于使用低密度奇偶校验(LDPC)码来对数据进行编码,所述LDPC码能够利用二分图表示。相同的电路、不同的电路、或该相同的电路或不同的电路的第二部分可以用于生成累加链,该累加链创建多个低度可变节点的环,所述多个低度可变节点在每条边上具有相同的置换。另外,相同的电路、不同的电路、或该相同的电路或不同的电路的第三部分可以用于使用低度可变节点和比所述低度可变节点高的较高度可变节点来闭合所述环,其中所述较高度可变节点包括非闭环边。类似地,所述相同电路、不同电路或第四部分可以用于使用提升图,所述提升图包括所述累加链的多个置换后的副本、所述环低度可变节点的多个置换后的副本和所述较高度可变节点的多个置换后的副本。本领域的普通技术人员将认识到,通常,在本公开中描述的所述处理的大部分可以按照类似的方式实现。任何电路或电路部分可以单独实现或作为集成电路的一部分与一个或多个处理器组合实现。所述电路中的一个或多个可以在集成电路、高级RISC机(ARM)处理器、数字信号处理器(DSP)、通用处理器等上实现。 
总之,本申请可以提供许多优点,包括但不限于,关于基本图: 
1、具有所有度为2的可变节点的累加链可以在每条边上具有相同的置换。 
2、用于闭合所述环的另一度为2的可变节点,度为2的环节点,以及也用于闭合所述环的度为3的可变节点。所述度为3的可变节点的第三边可以是非环边。 
关于提升: 
3、在度为2的环可变节点边上的置换为n-30比特数A与A-1mod 2n,其中2n是最大提升大小。 
4、在度为3的可变节点的环边上的置换为n-30比特数B与B-1mod 2n,其中,在基本图中,B-1置换与连接到与具有提升值A的度为2的环可变节点上的边相同的约束节点的边相关联。 
5、度为3的可变节点的非环边上的置换为C。 
此外,具体实例可以包括C=0。当所述结构被扩充时,所述扩充后的图包含提升后的编码结构A,并且如果C=0,则它可以包括具有等同性的提升后的编码结构A,其中,所述提升后的编码结构A包括所有累加的度为2的可变节点,所述度为2的环可变节点中的一半对应于在所述扩充后的基本图中出现的度为2的环节点的两个副本中的一个,而度为3的可变节点中的一半对应于在所述扩充后的基本图中出现的度为3的节点的两个副本中的一个。 
所公开的实施例可以应用于下述技术中的任何一个或组合:码分多址(CDMA)系统、多载波CDMA(MC-CDMA)、宽带CDMA(W-CDMA)、高速下行分组接入(HSPDA)、时分多址(TDMA)系统、频分多址(FDMA)系统和正交频分多址(OFDMA)系统。 
这里所描述的信令传输技术可以采用各种手段实现。例如,这些技术可以采用硬件、软件或其组合实现。对于硬件实现,用于处理(例如,压缩和编码)信令的处理单元可以在下述部件中实现:一个或多个专用集成电路(ASIC)、数字信号处理(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计来执行这里所描述的功能的其它电子单元、或其组合。用于解码和解压缩所述信令的处理单元也可以利用一个或多个ASIC、DSP等实现。 
对于软件实现,信令传输技术可以利用执行本文所描述的功能的模块(例如,过程,函数等)实现,并且可以存储在诸如紧凑计算机盘的机器可读介质上。软件代码可以存储在存储器单元中,并且由处理器执行。所述存储器单元可以在所述处理器内部或外部实现。 
图8、16、24和25中例示的所述组件、步骤和/或功能中的一个或多个可以被重排和/或合并为单个组件、步骤或功能,或者在若干个组件、步骤或功能中具体体现。还可以在不背离所述范围的情况下,添加其它元件、组件、步骤和/或功能。图8、16和/或24中例示的装置、设备和/或组件可以被配置来执行如上所述的方法、特征或步骤中的一个或多个。本文所描 述的新型算法可以在软件和/或嵌入式硬件中有效地实现。 
本领域的技术人员还将明白的是,结合本文所公开的实施例描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地例示硬件和软件的这种互换性,就各种示例性的组件、块、模块、电路和步骤的功能,如上对其进行了一般性的描述。此种功能是被实现为硬件还是被实现为软件,取决于具体应用和对整个系统施加的设计约束。 
可以在不背离所述范围的情况下,在不同的系统中实现本文所述的申请的各个特征。例如,可以在计算机、个人数字助理、数字组织器等上执行本申请的一些实现。 
应该理解的是,上述实施例仅仅是实例,而不应被解释为限制范围。实施例的描述意在例示,而不限制权利要求的范围。而且,本教导可以容易地应用于其它类型的装置,并且对于本领域的技术人员而言,许多替换、修改和变动是显而易见的。 

Claims (30)

1.一种用于使用低密度奇偶校验LDPC码来对数据进行编码的方法,所述LDPC码能够采用二分图表示,所述方法包括:
生成表示多个低度可变节点的累加链的基本图;
闭合所述累加链以两次形成环,一次使用低度闭环可变节点,一次使用比所述低度闭环可变节点高的较高度闭环可变节点,其中所述较高度闭环可变节点包括非闭环边,其中非闭环边是不闭合所述累加链的边;以及
使用提升图,所述提升图包括所述累加链的多个置换副本、所述低度闭环可变节点的多个置换副本以及所述较高度闭环可变节点的多个置换副本,其中,置换包括将所述基本图的非零位置用置换矩阵来替换。
2.如权利要求1所述的方法,其中,所述多个低度可变节点在每个边上具有相同的置换。
3.如权利要求1所述的方法,其中,
所述多个低度可变节点包括多个度为2的可变节点;
所述较高度闭环可变节点包括度为3的可变节点;并且
所述低度闭环可变节点包括度为2的闭环可变节点。
4.如权利要求1所述的方法,其中,所述低度闭环可变节点的多个置换副本包括利用数A与A+C-1mod2n进行的低度闭环置换,其中A是其第n-3个最低有效位为0的n位数,2n是最大提升尺寸,而C也是其第n-3个最低有效位为0的n位数,并且其中n为A或C的长度。
5.如权利要求4所述的方法,其中,所述较高度闭环可变节点的多个置换副本的多个置换的非闭环边包括利用数B与B+C-1mod2n进行的非闭环置换,其中B是其第n-3个最低有效位为0的n位数,C也是其第n-3个最低有效位为0的n位数,并且在基本图中,所述B+C-1置换与连接到与具有利用数A进行的置换的所述低度闭环可变节点上的边相同的约束节点的边相关联,并且其中n为B或C的长度。
6.如权利要求1所述的方法,其中,在所述较高度可变节点的非闭环边上的置换具有为0的置换值。
7.如权利要求5所述的方法,还包括使用循环提升后的低密度奇偶校验LDPC码,在所述循环提升后的LDPC码中,对于一些基本可变节点,所述提升后的可变节点中的一半为信息节点,一半为奇偶节点,其中,循环提升码是一种在其中所述置换矩阵是循环置换矩阵的码。
8.如权利要求7所述的方法,其中,所述LDPC码的基本图结构包括具有另一度为2的可变节点的基本编码结构A,其中,所述基本编码结构A包括度为2的可变节点的累加链与度为3的单个可变节点,并且包括穿过所有度为2的可变节点和所述度为3的可变节点的单环,所述度为3的可变节点上的两条边参与所述环,并且所述度为3的可变节点上的第三边属于所述环外的任意校验节点,所述另一度为2的可变节点包括度为2的闭环可变节点,所述度为2的闭环可变节点闭合结构A的所述累加链的所述环。
9.如权利要求8所述的方法,其中,除所述提升后的度为2的闭环可变节点之外的所有提升后的节点也都是响应于它们各自的基本节点的奇偶节点或信息节点。
10.如权利要求3所述的方法,其中,所述度为2的闭环可变节点具有置换X与X+C-1模Z,其中X是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为X或C的长度。
11.如权利要求10所述的方法,其中,C是0。
12.如权利要求1所述的方法,其中,所述较高度可变节点的闭环边具有相关联的提升置换Y与Y+C-1模Z,其中Y是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为Y或C的长度。
13.如权利要求8所述的方法,其中,附接到具有置换X的边上的度为2的闭环可变节点的所述约束节点连接到具有置换Y+C-1的所述较高度可变节点,其中X是其第n-3个最低有效位为0的n位数,Y是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为X、Y或C的长度。
14.如权利要求8所述的方法,其中,当将所述基本图结构扩充了2倍,并通过将一个比特从所述提升移入到所述基本图中来将所述提升尺寸降低了2倍时,所得到的编码结构是具有等同性或不具有等同性的提升后的编码结构A。
15.如权利要求1所述的方法,还包括:
使用度为3的编码节点的非闭环边上的非闭环边置换,其中所述非闭环边置换为0;以及
对于参与所述环的度为2的可变节点的边上的所有其它置换,使用值0或-1mod2n,其中,n是所述值的长度。
16.一种用于使用低密度奇偶校验LDPC码来对数据进行编码的装置,所述LDPC码能够采用二分图表示,所述装置包括:
用于生成表示多个低度可变节点的累加链的基本图的模块;
用于闭合所述累加链以两次形成环的模块,一次使用低度闭环可变节点,一次使用比所述低度闭环可变节点高的较高度闭环可变节点,其中所述较高度闭环可变节点包括非闭环边,其中非闭环边是不闭合所述累加链的边;以及
用于使用提升图的模块,所述提升图包括所述累加链的多个置换副本、所述低度闭环可变节点的多个置换副本以及所述较高度闭环可变节点的多个置换副本,其中,置换包括将所述基本图的非零位置用置换矩阵来替换。
17.如权利要求16所述的装置,其中,所述多个低度可变节点在每个边上具有相同的置换。
18.如权利要求16所述的装置,其中,
所述多个低度可变节点包括多个度为2的可变节点;
所述较高度闭环可变节点包括度为3的可变节点;并且
所述低度闭环可变节点包括度为2的闭环可变节点。
19.如权利要求16所述的装置,其中,所述低度闭环可变节点的多个置换副本包括利用数A与A+C-1mod2n进行的低度闭环置换,其中A是其第n-3个最低有效位为0的n位数,2n是最大提升尺寸,而C也是其第n-3个最低有效位为0的n位数,并且其中n为A或C的长度。
20.如权利要求19所述的装置,其中,所述较高度闭环可变节点的多个置换副本的多个置换的非闭环边包括利用数B与B+C-1mod2n进行的非闭环置换,其中B是其第n-3个最低有效位为0的n位数,C是也是其第n-3个最低有效位为0的n位数,并且在基本图中,所述B+C-1置换与连接到与具有利用数A进行的置换的所述低度闭环可变节点上的边相同的约束节点的边相关联,并且其中n为B或C的长度。
21.如权利要求16所述的装置,其中,在所述较高度可变节点的非闭环边上的置换具有为0的置换值。
22.如权利要求20所述的装置,其中,还包括用于使用循环提升后的低密度奇偶校验LDPC码的模块,在所述循环提升后的LDPC码中,对于一些基本可变节点,所述提升后的可变节点中的一半为信息节点,一半是奇偶节点,其中,循环提升码是一种在其中所述置换矩阵是循环置换矩阵的码。
23.如权利要求22所述的装置,其中,所述LDPC码的基本图结构包括具有另一度为2的可变节点的基本编码结构A,其中,所述基本编码结构A包括度为2的可变节点的累加链与度为3的单个可变节点,并且包括穿过所有度为2的可变节点和所述度为3的可变节点的单环,所述度为3的可变节点上的两条边参与所述环,并且所述度为3的可变节点上的第三边属于所述环外的任意校验节点,所述另一度为2的可变节点包括度为2的闭环可变节点,所述度为2的闭环可变节点闭合结构A的所述累加链的所述环。
24.如权利要求23所述的装置,其中,除所述提升后的度为2的闭环可变节点之外的所有提升的节点也都是响应于它们各自的基本节点的奇偶节点或信息节点。
25.如权利要求18所述的装置,其中,所述度为2的闭环可变节点具有置换X与X+C-1模Z,其中X是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为X或C的长度。
26.如权利要求25所述的装置,其中,C是0。
27.如权利要求16所述的装置,其中,所述较高度可变节点的闭环边具有相关联的提升置换Y与Y+C-1模Z,其中Y是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为Y或C的长度。
28.如权利要求23所述的装置,其中,附接到具有置换X的边上的度为2的闭环可变节点的所述约束节点连接到具有置换Y+C-1的所述较高度可变节点,其中X是其第n-3个最低有效位为0的n位数,Y是其第n-3个最低有效位为0的n位数,并且C是其第n-3个最低有效位为0的n位数,并且其中n为X、Y或C的长度。
29.如权利要求23所述的装置,其中,当将所述基本图结构扩充了2倍,并通过将一个比特从所述提升移入到所述基本图中来将所述提升尺寸降低了2倍时,所得到的编码结构是具有等同性或不具有等同性的提升后的编码结构A。
30.如权利要求16所述的装置,还包括:
用于使用度为3的编码节点的非闭环边上的非闭环边置换的模块,其中所述非闭环边置换为0;以及
用于对于参与所述环的度为2的可变节点的边上的所有其它置换,使用值0或-1mod2n的模块,其中,n是所述值的长度。
CN200880007735.XA 2007-03-09 2008-03-10 低密度奇偶校验(ldpc)码的编码和解码 Expired - Fee Related CN101632230B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US89418307P 2007-03-09 2007-03-09
US60/894,183 2007-03-09
US12/044,962 US8261155B2 (en) 2007-03-09 2008-03-08 Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
US12/044,962 2008-03-08
PCT/US2008/056390 WO2008112625A1 (en) 2007-03-09 2008-03-10 Encoding and decoding of low density parity check (ldpc ) codes

Publications (2)

Publication Number Publication Date
CN101632230A CN101632230A (zh) 2010-01-20
CN101632230B true CN101632230B (zh) 2014-02-19

Family

ID=39742876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880007735.XA Expired - Fee Related CN101632230B (zh) 2007-03-09 2008-03-10 低密度奇偶校验(ldpc)码的编码和解码

Country Status (7)

Country Link
US (1) US8261155B2 (zh)
EP (1) EP2132878A1 (zh)
JP (1) JP5231459B2 (zh)
KR (1) KR101198536B1 (zh)
CN (1) CN101632230B (zh)
TW (1) TW200849834A (zh)
WO (1) WO2008112625A1 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117523B2 (en) * 2007-05-23 2012-02-14 California Institute Of Technology Rate-compatible protograph LDPC code families with linear minimum distance
KR100949519B1 (ko) * 2007-12-18 2010-03-24 한국전자통신연구원 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법
ES2363846B1 (es) * 2009-02-06 2012-06-06 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos.
EP2395667B1 (en) * 2009-02-06 2015-12-16 Marvell Hispania S.L. Quasi-cyclic ldpc coding
ES2386449B1 (es) * 2010-01-20 2013-08-23 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos mejorado.
JP5440836B2 (ja) * 2009-03-24 2014-03-12 ソニー株式会社 受信装置及び方法、プログラム、並びに受信システム
US8407555B2 (en) * 2009-03-30 2013-03-26 Broadcom Corporation LDPC codes robust to non-stationary narrowband ingress noise
TWI427936B (zh) * 2009-05-29 2014-02-21 Sony Corp 接收設備,接收方法,程式,及接收系統
CN101902227B (zh) * 2009-05-31 2012-11-28 中兴通讯股份有限公司 一种ldpc码的分层编码方法和装置
US8516351B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8375278B2 (en) * 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8516352B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
FR2951339B1 (fr) * 2009-10-09 2011-12-09 Commissariat Energie Atomique Procede de decodage de codes non binaires
US8553686B2 (en) * 2010-04-28 2013-10-08 Broadcom Corporation Performing actions on frame entries in response to receiving bulk instruction
WO2012039798A2 (en) * 2010-06-15 2012-03-29 California Institute Of Technology Rate-compatible protograph ldpc codes
JP5269936B2 (ja) * 2011-03-17 2013-08-21 株式会社東芝 符号化器及び記憶装置
US8839069B2 (en) 2011-04-08 2014-09-16 Micron Technology, Inc. Encoding and decoding techniques using low-density parity check codes
US8832520B2 (en) 2011-11-29 2014-09-09 California Institute Of Technology High order modulation protograph codes
US9154261B2 (en) * 2013-01-16 2015-10-06 Broadcom Corporation Low density parity check (LDPC) coding in communication systems
US9306601B2 (en) * 2013-02-13 2016-04-05 Qualcomm Incorporated LDPC design for high parallelism, low error floor, and simple encoding
CN107404322B (zh) * 2014-09-17 2020-10-16 上海数字电视国家工程研究中心有限公司 针对低码率ldpc码的校验矩阵及ldpc码字
CN112165335B (zh) 2015-02-25 2023-09-01 三星电子株式会社 发送设备和接收设备
KR101776273B1 (ko) 2015-02-25 2017-09-07 삼성전자주식회사 송신 장치 및 그의 부가 패리티 생성 방법
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US10469104B2 (en) 2016-06-14 2019-11-05 Qualcomm Incorporated Methods and apparatus for compactly describing lifted low-density parity-check (LDPC) codes
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US20190181882A1 (en) * 2016-08-12 2019-06-13 Telefonaktiebolaget Lm Ericsson (Publ) Determining elements of base matrices for quasi-cyclic ldpc codes having variable code lengths
CN107959501B (zh) * 2016-10-17 2021-06-29 上海数字电视国家工程研究中心有限公司 一种ldpc编码器
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10534838B2 (en) * 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
WO2019095336A1 (en) * 2017-11-17 2019-05-23 Zte Corporation System and method for processing control information
WO2019107912A1 (ko) * 2017-11-29 2019-06-06 연세대학교 산학협력단 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법
CN108270450B (zh) * 2018-01-19 2021-05-14 南开大学 一种高码率下的规则准循环ldpc码的构造方法
CN110022187B (zh) * 2019-03-06 2020-08-04 华中科技大学 通信调制系统中(n,n(n-1),n-1)-PGC代数解码方法及解码器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1701515A (zh) * 2003-05-13 2005-11-23 索尼株式会社 解码方法、解码装置和程序

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US31734A (en) * 1861-03-19 Btjikding for preserving
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US6961888B2 (en) 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
KR101058324B1 (ko) 2003-02-26 2011-08-22 콸콤 인코포레이티드 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치
US6957375B2 (en) 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
KR100809619B1 (ko) 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US20050283707A1 (en) * 2004-06-22 2005-12-22 Eran Sharon LDPC decoder for decoding a low-density parity check (LDPC) codewords
US7458010B2 (en) 2004-08-05 2008-11-25 Nokia Corporation Irregularly structured, low density parity check codes
US7617439B2 (en) 2005-01-10 2009-11-10 Broadcom Corporation Algebraic construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
GB2434946B (en) * 2006-02-01 2008-07-23 Toshiba Res Europ Ltd Wireless communications apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1701515A (zh) * 2003-05-13 2005-11-23 索尼株式会社 解码方法、解码装置和程序

Also Published As

Publication number Publication date
US8261155B2 (en) 2012-09-04
JP5231459B2 (ja) 2013-07-10
KR20090130183A (ko) 2009-12-18
EP2132878A1 (en) 2009-12-16
JP2010521128A (ja) 2010-06-17
KR101198536B1 (ko) 2012-11-06
CN101632230A (zh) 2010-01-20
WO2008112625A1 (en) 2008-09-18
TW200849834A (en) 2008-12-16
US20080222486A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
CN101632230B (zh) 低密度奇偶校验(ldpc)码的编码和解码
US8751902B2 (en) Methods and apparatus for encoding LDPC codes
CN100472971C (zh) 解码方法与解码装置
US8347170B2 (en) Method and apparatus for performing decoding using LDPC code
CN105075128B (zh) 用于经提升ldpc码的方法、计算机可读存储介质和设备
CN104868925B (zh) 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
US7499490B2 (en) Encoders for block-circulant LDPC codes
CN101924565B (zh) Ldpc编码器、解码器、系统及方法
JP4820368B2 (ja) Ldpcコードを用いた符号化及び復号化方法
CA2536259C (en) Methods and apparatus for encoding ldpc codes
JP4339886B2 (ja) マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
JP4822452B2 (ja) Ldpcコードを用いた符号化または復号化方法及びその装置
JP4978625B2 (ja) 誤り訂正符号化方法及び装置
JP2007215089A (ja) 復号装置及び復号方法
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
KR101370903B1 (ko) Ldpc 코드를 이용한 부호화 및 복호화 방법
CN1973440A (zh) Ldpc编码器、解码器、系统及方法
JP2006100941A (ja) 信号処理装置、低密度パリティ検査符号の符号化方法および復号方法
Echard et al. Irregular/spl pi/-rotation LDPC codes
Ma et al. Recursive encoding of spatially coupled LDPC codes with arbitrary rates
Donovan et al. Combinatorial Questions: How Can Graph Labelling Help?
KR101221062B1 (ko) 가변 usc 부호를 이용한 부호화 및 복호화 방법
Wagner Low Density MDS Codes and Factors of Complete Graphs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140219

Termination date: 20160310

CF01 Termination of patent right due to non-payment of annual fee