LDPC CODE MATRICES
20220368350 · 2022-11-17
Inventors
- Shaw Yuan (San Diego, CA)
- Zong Liang Wu (San Diego, CA)
- David Barr (San Jose, CA, US)
- Shachar Kons (San Diego, CA, US)
Cpc classification
H03M13/036
ELECTRICITY
H03M13/1102
ELECTRICITY
H03M13/116
ELECTRICITY
H03M13/1177
ELECTRICITY
International classification
H03M13/00
ELECTRICITY
Abstract
An LDPC parity check matrix includes a systematic portion having a plurality of systematic elements and a parity portion having a plurality of parity elements. The value of each systematic element determines a cyclic shift to be applied to rows of an identity submatrix corresponding to that element. The value of each parity element determines a cyclic shift to be applied to rows of an identity submatrix corresponding to that element. The weights of two or more columns of the parity portion are the same.
Claims
1-57. (canceled)
58. A network node comprising: an encoder operable according to a Low Density Parity Check (LDPC) matrix, wherein: the LDPC matrix relates a payload of a code word with a parity of the code word, the parity minimizes iterations required by a decoder that receives the code word, the LDPC matrix comprises a systematic portion comprising a first number of elements and a parity portion comprising a second number of elements, the length of the payload is a product of a first positive integer (X) and a second positive integer (Y), the length of the parity is a product of X and a third positive integer (Z), the first number of elements is the product of Y and Z, the second number of elements is the product of Z and Z, each element in the systematic portion and the parity portion is a submatrix having X columns and X rows, a zero-valued element corresponds to an identity submatrix, a positive-valued element corresponds to an identity submatrix with rows that are a cyclically shifted according the positive value, and a negative-valued systematic element corresponds to a zero submatrix, and two or more columns of the parity portion have an equal number of positive-valued elements.
59. The system of claim 58, wherein X is greater than or equal to 48 and less than or equal to 100.
60. The system of claim 58, wherein the Y is greater than or equal to 34 and less than or equal to 43.
61. The system of claim 58, wherein the Z is greater than or equal to 5 and less than or equal to 7.
62. The system of claim 58, wherein the code word is communicated according to a Media over Coax Alliance (MoCA) specification.
63. The system of claim 58, wherein two or more columns of the parity portion have 4 positive elements.
64. The system of claim 58, wherein two or more columns of the parity portion have 5 positive elements.
65. A method for operating a network node comprising: encoding data as a code word according to a Low Density Parity Check (LDPC) matrix, wherein: the LDPC matrix relates a payload of the code word with a parity of the code word, the parity minimizes iterations required by a decoder that receives the code word, the LDPC matrix comprises a systematic portion comprising a first number of elements and a parity portion comprising a second number of elements, the length of the payload is a product of a first positive integer (X) and a second positive integer (Y), the length of the parity is a product of X and a third positive integer (Z), the first number of elements is the product of Y and Z, the second number of elements is the product of Z and Z, each element in the systematic portion and the parity portion is a submatrix having X columns and X rows, a zero-valued element corresponds to an identity submatrix, a positive-valued element corresponds to an identity submatrix with rows that are a cyclically shifted according the positive value, and a negative-valued systematic element corresponds to a zero submatrix, and two or more columns of the parity portion have an equal number of positive-valued elements.
66. The method of claim 65, wherein the X is greater than or equal to 48 and less than or equal to 100.
67. The method of claim 65, wherein the Y is greater than or equal to 34 and less than or equal to 43.
68. The method of claim 65, wherein Z is greater than or equal to 5 and less than or equal to 7.
69. The method of claim 65, wherein the code word is communicated according to a Media over Coax Alliance (MoCA) specification.
70. The method of claim 65, wherein two or more columns of the parity portion have 4 positive elements.
71. The method of claim 65, wherein two or more columns of the parity portion have 5 positive elements.
72. A network node comprising: a wireless communication device operable to encode data as a code word according to a Low Density Parity Check (LDPC) matrix, wherein: the LDPC matrix relates a payload of a code word with a parity of the code word, the parity minimizes iterations required by a decoder that receives the code word, the LDPC matrix comprises a systematic portion comprising a first number of elements and a parity portion comprising a second number of elements, the length of the payload is a product of a first positive integer (X) and a second positive integer (Y), the length of the parity is a product of X and a third positive integer (Z), the first number of elements is the product of Y and Z, the second number of elements is the product of Z and Z, each element in the systematic portion and the parity portion is a submatrix having X columns and X rows, a zero-valued element corresponds to an identity submatrix, a positive-valued element corresponds to an identity submatrix with rows that are a cyclically shifted according the positive value, and a negative-valued systematic element corresponds to a zero submatrix, and two or more columns of the parity portion have an equal number of positive-valued elements.
73. The system of claim 72, wherein X is greater than or equal to 48 and less than or equal to 100.
74. The system of claim 72, wherein Y is greater than or equal to 34 and less than or equal to 43.
75. The system of claim 72, wherein Z is greater than or equal to 5 and less than or equal to 7.
76. The system of claim 72, wherein the code word is communicated according to a Media over Coax Alliance (MoCA) specification.
77. The system of claim 72, wherein the code word is communicated to a smart phone.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
DETAILED DESCRIPTION
[0026] One embodiment of the disclosed includes a party check matrix that can be used with a variety of data storage and communication systems. For example, an LDPC parity cheek matrix can be provided for a communication system in which nodes sequentially or simultaneously transmit information to one or more other nodes in the network.
[0027] In the illustrated example, client nodes 34-37 are coupled to a network media 50 over which the digital data is transferred. In various embodiments, network media 50 is coaxial cable. However, network media 50 may be any other type of media, including other wired media or wireless media. In various embodiments, network 10 is a full mesh network so that any node on the net work can communicate directly with any of the other nodes on the network in any direction. Alternatively, the network 10 may be an access network in which communications from client nodes go through a central node, such as, for example, the network controller 37. In one embodiment, network 10 includes a single NC node and up to 15 client nodes.
[0028] Each client node 34-36 includes an encoder 31 for encoding data, a modulator 32 for modulating data, and a transceiver 33 for transmitting data. Similarly, NC node 37 includes a transceiver 43 for receiving data, a demodulator 42 for demodulating data, and a decoder 41 for decoding data. The embodiment of
[0029] In one embodiment, two or more client nodes 34-36 transmit data to NC node 37. In one embodiment, the data is transmitted using Orthogonal Frequency Division Multiple (“OFDM”). In general, OFDM uses a large number of orthogonal sub-carriers to carry data. Each sub-carrier is modulated with a conventional modulation scheme, such as, for example, quadrature amplitude modulation (QAM) or phase shift keying (PSK). In some cases, the data is modulated at a low symbol rate to maintain a total data rate across all of the sub-carriers that is similar to the data rate achieved by a conventional single-carrier modulation scheme having the same bandwidth.
[0030] In one embodiment, the data transmitted from nodes 34-36 is first encoded using an LDPC parity check matrix. The LDPC parity check matrix may be partitioned into an matrix
H=[H.sub.1|H.sub.2]
in which H.sub.1 defines a systematic or data portion of the LDPC and H.sub.2 defines a parity portion of the LDPC. Accordingly, H.sub.1 can be configured to define data connections and H.sub.2 configured to satisfy the parity condition (e.g., XOR=0).
[0031] In various embodiments, each element of the parity portion of the parity check matrix, H.sub.2, represents a circular shifted identity submatrix and a negative entry (e.g., “−1”) indicates an all-zeros submatrix. The value of a given matrix element is the amount of cyclic shift applied to each row of the identity submatrix for that element. The column weight of each column of the parity check portion, H.sub.2, can be determined by summing the non-negative entries in each column. In various embodiments, the code and parity check portions are chosen such that the weights of each column, or of a group of columns, of the parity check portion, H.sub.2, are the same. More particularly, in one embodiment, the code is designed such that the weights of all but one column of parity check portion, H.sub.2, are the same. In some embodiments, the weights of all but the first column of parity cheek portion, H.sub.2, are the same. In various embodiments, the column weight of H.sub.1 is the same for all columns. In further embodiments, there are no non-negative entries in systematic portion, H.sub.1, therefore, each column of systematic portion, H.sub.1, has the same weight.
[0032] Consider a specific example in which the parity check matrix is a 7×46 parity check matrix, also partitioned into H=[H.sub.1|H.sub.2], where H.sub.1 defines a 7×39 systematic portion of the LDPC, and H.sub.2 defines a 7×7 parity portion of the LDPC. Consider a further example in which each element of the 7×7 parity check portion, H.sub.2, of the matrix represents a circular shifted 100×100 identity submatrix, a “−1” indicates a 100×100 all zeros submatrix. As with the general case, the value of a given matrix element identifies (or actually is) the amount of cyclic shift applied to each row of the identity submatrix. In various embodiments, the column weight of H.sub.1 is the same for all columns, which for a 7×39 systematic portion results in a column weight 7 for all columns. Because parity check portion, H.sub.2, is a 7×7 matrix, the maximum column weight for each column of the parity check portion, H.sub.2, is seven. As noted above, in various embodiments some or all of the columns of parity check portion, H.sub.2, have the same weight. In one embodiment, one column of H.sub.2 has the maximum weight (in this example, 7) and the rest of the parity portion has lesser column weight (e.g., 1-6) that is the same across those remaining columns.
[0033]
[0034] As seen front
[0035] In other embodiments, a similar structure, higher rate LDPC may be used in the access network.
[0036] In this example, the composite parity check matrix is 500×4600 where each code word has parity length of 500 bits and a payload length of 4100 bits. The column weight of H.sub.1 is regular with column weight 5. The first column of H.sub.2 has a column weight of 5 and the rest of the parity portion has column weight of 4.
[0037]
[0038] This 6×40 parity check matrix is partitioned into H=[H.sub.1|H.sub.2] where, H.sub.1 defines the 6×34 systematic portion, and H.sub.2 defines the 6×6 parity portion. Each element of the parity check matrix represents a right circular shifted 48×48 identity matrix and the “−1” indicates a 48×48 all zeroes matrix. The value of the matrix element is the amount of right cyclic shift applied to each row of the identity matrix. The composite parity check matrix is 288×1920 where each codeword has parity length of 288 bits and payload length of 1632 bits. The first column of H.sub.2 has a column weight of 6 and the rest of the parity portion has column weight of 5.
[0039]
[0040] This 5×48 parity check matrix is partitioned into H=[H.sub.1|H.sub.2] where, H.sub.1, defines the 5×43 systematic portion, and H.sub.2 defines the 5×5 parity portion. In this embodiment, each element of the parity cheek matrix represents a right circular shifted 80×80 identity matrix and the “−1” indicates a 80×80 all zeroes matrix. The value of the matrix element is the amount of right cyclic shift applied to each row of the identity matrix. The composite parity check matrix is 409×3840 where each codeword has parity length of 400 bits and payload length of 3440 bits. The first column of H.sub.2 has a column weight of 5 and the rest of the parity portion has column weight of 4.
[0041] With the LDPC matrices described herein, including the specific example matrices presented, variations on the matrix can he made and still yield desired performance. For example, tor the LDPC matrices disclosed herein, the matrix can comprise any permutation of the rows or columns of the matrix. Also, the matrix can be a modulo P of that matrix. For example, for any X greater than or equal to zero (i.e., non-negative), the non-negative values, H, of the matrix can also be (H+X)mod P, where P is the parallelism degree of the code embodied by the matrix.
[0042] Where components or modules of the invention are implemented in whole or in part using software, in one embodiment, these software elements can be implemented to operate with a computing or processing module capable of carrying out the functionality described with respect thereto. One example of such a computing module is shown in
[0043] Referring now to
[0044] Computing module 400 might include, for example, one or more processors, controllers, control modules, or other processing devices, such as a processor 404. Processor 404 might be implemented using a general-purpose or special-purpose processing engine such as, for example, a microprocessor, controller, or other control logic. In the illustrated example, processor 404 is connected to a bus 402, although any communication medium can be used to facilitate interaction with other components of computing module 400 or to communicate externally.
[0045] Computing module 400 might also include one or more memory modules, simply referred to herein as main memory 408. For example, preferably random access memory (RAM) or other dynamic memory, might be used for storing information and instructions to be executed by processor 404. Main memory 408 might also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 404. Computing module 400 might likewise include a read only memory (“ROM”) or other static storage device coupled to bus 402 for storing static information and instructions for processor 404.
[0046] The computing module 400 might also include one or more various forms of information storage mechanism 410, which might include, for example, a media drive 412 and a storage unit interface 420. The media drive 412 might include a drive or other mechanism to support fixed or removable storage media 414. For example, a hard disk drive, a floppy disk drive, a magnetic tape drive, an optical disk drive, a CD or DVD drive (R or RW), or other removable or fixed media drive might be provided. Accordingly, storage media 414 might include, for example, a hard disk, a floppy disk, magnetic tape, cartridge, optical disk, a CD or DVD, or other fixed or removable medium that is read by, written to or accessed by media drive 412. As these examples illustrate, the storage media 414 can include a computer usable storage medium having stored therein computer software or data.
[0047] In alternative embodiments, information storage mechanism 410 might include other similar instrumentalities for allowing computer programs or other instructions or data to be loaded into computing module 400. Such instrumentalities might include, for example, a fixed or removable storage unit 422 and an interface 420. Examples of such storage units 422 and interfaces 420 Can include a program cartridge and cartridge interface, a removable memory (for example, a flash memory or other removable memory module) and memory slot, a PCMCIA slot and card, and other fixed or removable storage units 422 and interfaces 420 that allow software and data to be transferred from the storage unit 422 to computing module 400.
[0048] Computing module 400 might also include a communications interface 424. Communications interface 424 might be used to allow software and data to be transferred between computing module 400 and external devices. Examples of communications interface 424 might include a modem or softmodem, a network interface (such as an Ethernet, network interface card, WiMedia, IEEE 802.XX or other interface), a communications port (such as for example, a USB port, IR port, RS232 port Bluetooth® interface, or other port), or other communications interface. Software and data transferred via communications interface 424 might typically be carried on signals, which can be electronic, electromagnetic (which includes optical) or other signals capable of being exchanged by a given communications interface 424. These signals might be provided to communications interface 424 via a channel 428. This channel 428 might carry signals and might be implemented using a wired or wireless communication medium. Some examples of a channel might include a MoCA channel over coaxial cable, phone line, a cellular link, an RF link, an optical link, a network interface, a local or wide area network, and other wired or wireless communications channels.
[0049] In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to physical storage media such as, for example, memory 408, storage unit 420, and media 414. Those and other various forms of computer program storage media or computer usable storage media may be involved in storing and providing one or more sequences of one or more instructions to a processing device for execution. Such instructions embodied on the medium, are generally referred to as “computer program code” or a “computer program product” (which may be grouped in the form of computer programs or other groupings). When executed, such instructions might enable the computing module 400 to perform features or functions of the disclosed method and apparatus as discussed herein. While various embodiments of the disclosed method and apparatus have been described above, it should be understood that they have been presented by way of example only, and not of limitation. Likewise, the various diagrams may depict an example architectural or other configuration for the disclosed method and apparatus, which is done to aid in understanding the features and functionality that can be included in the disclosed method and apparatus. The claimed invention is not restricted to the illustrated example architectures or configurations, but the desired features can be implemented using a variety of alternative architectures and configurations. Indeed, it will be apparent to one of skill in the art how alternative functional, logical or physical partitioning and configurations can be implemented to implement the desired features of the disclosed method and apparatus. Also, a multitude of different constituent module names other than those depicted herein can be applied to the various partitions. Additionally, with regard to flow diagrams, operational descriptions and method claims, the order in which the blocks are presented herein shall not mandate that various embodiments be implemented to perform the recited functionality in the same order unless the context dictates otherwise.
[0050] Although the disclosed method and apparatus is described above in terms of various exemplary embodiments and implementations, it should be understood that the various features, aspects and functionality described in one or more of the individual embodiments are not limited in their applicability to the particular embodiment with which they are described, but instead can be applied, alone or in various combinations, to one or more of the other embodiments of the disclosed method and apparatus, whether or not such embodiments are described and whether or not such features are presented as being a part of a described embodiment. Thus, the breadth and scope of the claimed invention should not be limited by any of the above-described embodiments, which are presented as mere examples for illustration only.
[0051] Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open ended as opposed to limiting. As examples of the foregoing: the term “including” should be read as meaning “including, without limitation” or the like; the term “example” is used to provide exemplary instances of the item in discussion, not an exhaustive or limiting list thereof; the terms “a” or “an” should be read as meaning “at least one,” “one or more” or the like; and adjectives such as “conventional,” “traditional,” “normal,” “standard,” “known” and terms of similar meaning should not be construed as limiting the item described to a given time period or to an item available as of a given time, but instead should be read to encompass conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future. Likewise, where this document refers to technologies that would be apparent or known to one of ordinary skill in the art, such technologies encompass those apparent or known to the skilled artisan now or at any time in the future.
[0052] The presence of broadening words and phrases such as “one or more,” “at least,” “but not limited to” or other like phrases in some instances shall not be read to mean that the narrower case is intended or required in instances where such broadening phrases may be absent. The use of the term “module” does not imply that the components or functionality described or claimed as part of the module are all configured in a common package. Indeed, any or all of the various components of a module, whether control logic or other components, can be combined in a single package or separately maintained and can further be distributed in multiple groupings or packages or across multiple locations.
[0053] Additionally, the various embodiments set forth herein are described in terms of exemplary block diagrams, flow charts and other illustrations. As will become apparent to one of ordinary skill in the art after reading this document, the illustrated embodiments and their various alternatives can be implemented without confinement to the illustrated examples. For example, block diagrams and their accompanying description should not be construed as mandating a particular architecture or configuration.