WO2018164297A1 - Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 - Google Patents
Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 Download PDFInfo
- Publication number
- WO2018164297A1 WO2018164297A1 PCT/KR2017/002546 KR2017002546W WO2018164297A1 WO 2018164297 A1 WO2018164297 A1 WO 2018164297A1 KR 2017002546 W KR2017002546 W KR 2017002546W WO 2018164297 A1 WO2018164297 A1 WO 2018164297A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- check
- nodes
- syndrome
- node
- variable
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 208000011580 syndromic disease Diseases 0.000 claims abstract description 93
- 239000011159 matrix material Substances 0.000 claims description 99
- 230000015654 memory Effects 0.000 claims description 30
- 238000004891 communication Methods 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 230000001934 delay Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000009897 systematic effect Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0052—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/114—Shuffled, staggered, layered or turbo decoding schedules
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
- H03M13/1185—Parity 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/1188—Parity 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
Definitions
- the present invention relates to a method of decoding a channel code in a wireless communication system, and more particularly, to a layered decoding method of a low-density parity-check (LDPC) code and an apparatus therefor.
- LDPC low-density parity-check
- Wireless access systems are widely deployed to provide various kinds of communication services such as voice and data.
- a wireless access system is a multiple access system capable of supporting communication with multiple users by sharing available system resources (bandwidth, transmission power, etc.).
- multiple access systems include code division multiple access (CDMA) systems, frequency division multiple access (FDMA) systems, time division multiple access (TDMA) systems, orthogonal frequency division multiple access (OFDMA) systems, and single carrier frequency (SC-FDMA). division multiple access) system.
- CDMA code division multiple access
- FDMA frequency division multiple access
- TDMA time division multiple access
- OFDMA orthogonal frequency division multiple access
- SC-FDMA single carrier frequency division multiple access
- channel codes are essentially used in broadcast systems.
- a transmitter may perform encoding on an input symbol by using an encoder and transmit an encoded symbol.
- the receiving end may restore the input symbol by receiving the encoded symbol and performing decoding on the received symbol.
- the size of the input symbol and the size of the encoded symbol may be defined differently according to the communication system.
- LTE Long Term Evolution
- 3GPP 3rd Generation Partnership Project
- an input symbol has a maximum size of 6144 bits and a coded symbol size 18432 (6144 * 3) bits.
- Turbo coding in an LTE communication system may be referred to by 3GPP Technical Specification 36.212.
- the LTE turbo code has a slight improvement in performance even if the signal to noise ratio (SNR) increases due to the structure of the code.
- SNR signal to noise ratio
- it may be considered to use a code having a lower error rate, but in this case, there is a problem that the complexity increases.
- the current LTE turbo code has a problem that an error floor occurs when the size of information increases. Accordingly, there is a need for a channel coding method capable of satisfying Ultra Reliable Radio (URR) and Low Latency Radio (LLR).
- URR Ultra Reliable Radio
- LLR Low Latency Radio
- the present invention was devised to solve the above problems, and an object of the present invention is to provide a decoding method of an LDPC code with reduced power consumption and delay.
- Another object of the present invention is to provide an apparatus supporting these methods.
- the layered decoding method of the Low Density Parity Check (LDPC) code of the present application for solving the above-mentioned problems, the method comprising: calculating a log likelihood value from an input signal; Initializing a plurality of variable nodes based on the likelihood ratio value; Updating a plurality of check nodes based on a parity check matrix and values of the plurality of variable nodes until a success or failure of decoding on the input signal is determined based on a syndrome check; Repeating the updating of the plurality of variable nodes based on the parity check matrix and the values of the plurality of check nodes, wherein the repeating includes sequentially updating the plurality of variable nodes Performing a syndrome check on the plurality of check nodes whenever updated, wherein the association of the plurality of check nodes with the plurality of variable nodes is determined based on the parity check matrix, If the value of the syndrome check for all the check nodes is zero, the success of the decoding can be determined.
- LDPC Low Density
- the failure of the decoding may be determined.
- the performing of the syndrome check may be performed using syndrome check values of check nodes associated with one variable node updated in the current iteration and syndrome check values of the remaining check nodes calculated in the previous iteration.
- a flag bit of one bit representing a syndrome check value may be set for each of the plurality of check nodes.
- performing the syndrome check may include performing a syndrome check by performing an exclusive OR operation on values of variable nodes associated with each of the plurality of check nodes.
- said plurality of check nodes comprises a first check node and a second check node subsequent to said first check node, wherein a syndrome check of said second check node comprises a variable node associated with said first check node.
- the operation may be performed by an exclusive OR operation on the remaining variable nodes except the variable nodes associated with the second check node.
- the terminal for solving the above problems, the transceiver for transmitting and receiving a signal; Memory; And a processor for controlling the transceiver and the memory, the processor comprising: calculating a log likelihood value from an input signal, initializing a plurality of variable nodes based on the likelihood ratio value, and checking a plurality of checks The plurality of checks based on a parity check matrix and values of the plurality of variable nodes until a success or failure of decoding on the input signal is determined based on a syndrome check on the nodes.
- the LDPC code decoding method of the present invention has a lower memory read count than the conventional LDPC code decoding method.
- the LDPC code decoding method of the present invention has low power consumption and delay.
- FIG. 1 illustrates an encoding process according to an example.
- FIG. 2 illustrates an encoding process of a transport block according to an example.
- FIG 3 illustrates a Recursive Systematic Convolutional (RSC) encoder according to an example.
- FIG 5 shows an example of a trellis according to an RSC encoder.
- FIG. 6 shows an example of a trellis structure.
- FIG. 7 illustrates a structured parity check matrix, according to one example.
- FIG. 8 illustrates a model matrix according to an example.
- 9 is a diagram for explaining transformation of a matrix according to the number of shifts.
- FIG. 10 is a flowchart illustrating an LDPC code decoding method according to an example.
- FIG. 11 shows a bipartite graph according to one example.
- FIG. 12 illustrates an LDPC code decoding method using syndrome check according to an example.
- FIG. 13 illustrates a syndrome check method according to an example.
- FIG. 14 is a flowchart of a syndrome check method according to an embodiment.
- 15A and 15B are diagrams for describing a syndrome check method, according to an exemplary embodiment.
- 16A and 16B illustrate a hierarchical LDPC code decoding method, according to an exemplary embodiment.
- 17A and 17B are diagrams for describing a hierarchical LDPC code decoding method, according to another embodiment.
- FIG. 18 is a configuration diagram of a base station and a terminal according to an embodiment of the present invention.
- CDMA code division multiple access
- FDMA frequency division multiple access
- TDMA time division multiple access
- OFDMA orthogonal frequency division multiple access
- SC-FDMA single carrier frequency division multiple access
- CDMA may be implemented with a radio technology such as Universal Terrestrial Radio Access (UTRA) or CDMA2000.
- TDMA may be implemented with wireless technologies such as Global System for Mobile communications (GSM) / General Packet Radio Service (GPRS) / Enhanced Data Rates for GSM Evolution (EDGE).
- GSM Global System for Mobile communications
- GPRS General Packet Radio Service
- EDGE Enhanced Data Rates for GSM Evolution
- OFDMA may be implemented in a wireless technology such as IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802-20, Evolved UTRA (E-UTRA), or the like.
- UTRA is part of the Universal Mobile Telecommunications System (UMTS).
- 3rd Generation Partnership Project (3GPP) long term evolution (LTE) employs OFDMA in downlink and SC-FDMA in uplink as part of Evolved UMTS (E-UMTS) using E-UTRA.
- LTE-A Advanced is an evolution of 3GPP LTE.
- FIG. 1 illustrates an encoding process according to an example.
- the encoding process of FIG. 1 may be applied to many channel codes including a turbo code used in an LTE communication system.
- a turbo code used in an LTE communication system.
- the encoding process will be described based on terms according to standard documents of the LTE communication system.
- the transmitting end may generate a transport block (TB) (S101).
- the transmitting end adds a CRC bit for the transport block to the transport block (S102).
- the transmitter may generate a code block from the transport block to which the CRC bit is added (S103).
- the transmitting end may segment the transport block into code blocks based on the input size of the encoder.
- the transmitter may add a CRC bit to each divided code block (S104). In this case, for example, the size of the code block and the code block CRC bits may consist of 6144 bits.
- the transmitter may perform encoding and modulation (S105) on each block composed of a code block and CRC bits. For example, as described above, turbo coding may be applied.
- the decoding process may be performed in the reverse order of the encoding process of FIG. 1.
- the receiver may decode each code block by using a decoder corresponding to each encoder, and finally configure one transport block to check whether the CRC passes through the transport block.
- the size of the input symbol may be different from the size of a transport block (TB) from the Media Access Control (MAC) layer. If the size of the transport block is larger than the maximum input symbol size of the turbo code, the transport block may be divided into a plurality of code blocks (CBs). According to the standard of the LTE communication system, the size of the code block may be the same as subtracting the Cyclic Redundancy Check (CRC) bit from 6144 bits.
- An input symbol of a turbo code may be defined as data comprising a code block and a CRC or data including a transport block (eg, a transport block is less than 6144 bits) and a CRC. The CRC bit is a very small value (e.g.
- a code block may refer to a code block itself or a CRC bit corresponding to a code block
- a transport block refers to a transport block itself or a CRC bit corresponding to a transport block. can do.
- FIG. 2 illustrates an encoding process of a transport block according to an example.
- FIG. 2 illustrates an encoding process of the transport block 201 corresponding to the encoding process described above with reference to FIG. 1.
- a transport block CRC 202 is added to the transport block 201.
- the transport block CRC 202 may be used for identification of the transport block 201 in the decoding process.
- the transport block 201 and transport block CRC 202 are then divided into three code blocks 203.
- the code block 203 is divided into three code blocks, but the transport block 201 may be divided into a plurality of code blocks based on an input size of the encoder 205.
- Code block CRC 204 is added to each code block 203.
- the code block CRC 204 may be used for identification of the code block 203 at the receiving end.
- Code block 203 and code block CRC 204 may be encoded via encoder 205 and modulator 206.
- FIG 3 illustrates a Recursive Systematic Convolutional (RSC) encoder according to an example.
- the RSC encoder 300 of FIG. 3 may be used for turbo coding.
- m denotes input data
- C1 denotes a systematic bit string
- C2 denotes a coded bit string.
- the RSC encoder 300 has a 1/2 code rate.
- RSC encoder 300 may be configured by feeding back the encoded output to the input of a nonrecursive-non-systematic convoluational encoder.
- the encoder 300 includes two delayers 301 and 302.
- the values D of the delayers 301 and 302 may be determined according to a coding scheme.
- Delays 301 and 302 may be configured as memory or shift registers.
- the coding scheme of the LTE turbo encoder 400 is a parallel concatenation with two eight-state element encoders 410 and 420 and one turbo code internal interleaver 430.
- Parallel Concatenated Convolutional Code (PCCC) is a parallel concatenation with two eight-state element encoders 410 and 420 and one turbo code internal interleaver 430.
- Parallel Concatenated Convolutional Code (PCCC) is a parallel concatenation with two eight-state element encoders 410 and 420 and one turbo code internal interleaver 430.
- PCCC Parallel Concatenated Convolutional Code
- the turbo encoder 400 is composed of a first constituent encoder 410, a second element encoder 420, and a turbo code internal interleaver 430.
- the first element encoder 410 and the second element encoder 420 are eight-state element encoders.
- Each of the first element encoder 410 and the second element encoder 420 has a structure similar to that of the RSC encoder of FIG. 3.
- the first element encoder 410 and the second element encoder 420 each include three delayers 411, 412, 413, 421, 422, and 423.
- D is a value determined according to a coding scheme.
- c k is the input to the turbo encoder 400.
- the outputs from the first element encoder 410 and the second element encoder 420 are denoted as z k and z ' k , respectively.
- the value output from the turbo code internal interleaver 430 is denoted by c ' k .
- the delays 411, 412, 413, 421, 42, and 423 may delay the input value by one clock.
- the delays 411, 412, 413, 421, 42, 423 may be configured to delay the input value for more than one clock according to the internal setting.
- the delays 411, 412, 413, 421, 42, and 423 may be configured as shift registers, and may be configured to delay the input bits by a predetermined clock and then output the input bits to the next delays 411, 412, 413, 421, 42, 423. .
- the turbo code internal interleaver 430 may reduce the effects of burst errors that may occur when transmitting signals over a wireless channel.
- the turbo code internal interleaver 430 may be a Quadratic Polynomial Permutation (QPP) interleaver.
- QPP Quadratic Polynomial Permutation
- Turbo codes are high performance forward error correction (FEC) codes and are used in LTE communication systems.
- a data block coded by turbo code may consist of three subblocks.
- One subblock may correspond to m-bit payload data.
- Another subblock may consist of n / 2 bits of parity bits for the payload, calculated using a recursive systematic convolution (RSC) code.
- the remaining sub-blocks may be composed of n / 2 bits of parity bits for permutation of payload data, calculated using an RSC code.
- the above-described permutation may be performed by an interleaver.
- two subblocks of parity bits different from each other with the payload may be configured as one block. For example, if m is equal to n / 2, one block has a code rate of 1/3.
- a process of reaching the input bit z k by the input c k may be divided into two paths.
- the two paths are a first path connected without input feedback from the input to the output and a second path fed back from the input to the input.
- c k is input, input via a delay unit 411, a rough input c k, and the retarder (411, 412, and 413), c k is applied to the output stage.
- the relationship between the input end and the output end of the first path may be expressed by a polynomial.
- the polynomial for the first path is called a forward generator polynomial and may be expressed as g1 of the following equation.
- a rough input c k is fed back to the input end.
- the polynomial for the second path is called a recursive generator polynomial and can be expressed as g0 in the following equation.
- Equations 1 and 2 "+” means exclusive OR (XOR), and 1 means that the input goes through 0 delays.
- D n means that the input goes through n delays.
- FIG 5 shows an example of a trellis according to an RSC encoder.
- FIG. 5 shows the configuration of the trellis of the RSC encoder shown in FIG.
- S i represents a state of the i th input data.
- each circle represents each node.
- the line between each node means a branch.
- the solid line refers to the branch for input value 1
- the dotted line refers to the branch for input value 0.
- the value on the branch is expressed as m / C1C2 (input value / systematic bit, coded bit). It may also have a state that is exponentially proportional to the number of memories of the encoder. For example, if the encoder includes a memory, 2 a states can be included in the trellis.
- Trellis is a state machine that shows the possible state transitions of an encoder between two states.
- a convolutional encoder such as an RSC encoder, may perform encoding according to a trellis diagram. Codewords encoded by the RSC encoder may be decoded according to an algorithm based on the trellis structure. For example, Viterbi or BCJR (Bahl, Cocke, Jelinek and Raviv) algorithms can be used.
- FIG. 6 shows an example of a trellis structure.
- n represents the length of a codeword.
- trellis can be terminated by adding additional bits after the input sequence.
- a sequence consisting of a sequence of zeros is called a tail bit. The tail bit terminates the trellis so that nodes in one state of the trellis have a value of zero.
- the length of a codeword may be determined in consideration of the length k of input data and the length t of tail bits.
- the length n of the codeword may have a value of (k + t) / R.
- the length t of the tail bits can be determined as the length by which all delays (eg, memories) of the encoder can be reset.
- the RSC encoder of FIG. 3 may use a total of 2 bits of tail bits.
- the turbo encoder of the LTE communication as shown in FIG. 4 may use 3 bits of tail bits.
- the tail bit has a relatively short length compared to the length of the input data.
- code rate loss due to the tail bits may occur when the length of the codeword is limited.
- trellis termination using tail bits is widely used. This is because the computational complexity is low and the error correction performance is excellent.
- a puncturing code is a method of puncturing some of codewords.
- some codewords are not transmitted because some of the codewords are punctured.
- puncturing codes may be used to reduce code rate loss due to the addition of tail bits.
- the receiving end may decode by using the trellis corresponding to the sum of the length k of the input data and the length t of the tail bit. That is, the receiver may perform decoding on the assumption that it has received a non-punctured codeword. In this case, the receiving end may assume that there is no input value for the branch from the node corresponding to the punctured bit (ie, the bit not transmitted at the transmitting end). That is, input data is assumed to be 0 or 1 with equal probability for branches of the node.
- the CRC for the code block is added to the code block.
- the CRC may be determined as the remainder derived after dividing the data to be transmitted using a preset check value as a divisor.
- the CRC can generally be added at the end of the transmission data.
- the receiving end may compare the remainder obtained by dividing the received data by a predetermined check value with the CRC or determine whether the remainder obtained by dividing the received data by the check value for the entire received data including the CRC is 0.
- the size of the transport block is 6144 bits
- the size of the CRC may be configured up to 24 bits. Therefore, the remaining bits except the CRC bit are determined as the size of the code block.
- the receiving end may perform decoding in units of code blocks. Thereafter, the receiving end may configure the transport block from the code block, and determine success of decoding by checking the CRC for the transport block.
- codeblock CRC is used for early decoding termination. For example, when a CRC check for one code block fails, the receiving end may transmit a negative acknowledgment (NACK) to the transmitting end without decoding the remaining code blocks.
- NACK negative acknowledgment
- the transmitting end may retransmit at least part of the transmission data. For example, the transmitting end may retransmit a transport block or one or more code blocks. For example, when retransmitting the entire transport block, excessive radio resources may be consumed for retransmission. Also, for example, when a NACK occurs due to a code block CRC failure at the receiver, the receiver may transmit information (eg, an index of a code block) of the code block at which the CRC failure occurs to the transmitter. In addition, the transmitting end may increase the radio resource efficiency by transmitting only the code block in which the CRC failure occurs using the information of the code block. However, when the number of code blocks is increased, the amount of data for feeding back the information of the code blocks (for example, the indexes of the code blocks) is increased.
- the receiving end may inform the transmitting end of whether data reception was successful by using an ACK / NACK signal.
- ACK / NACK for data received in the i-th subframe is transmitted in the i + 4th subframe.
- retransmission may be performed in the i + 8th subframe. This takes into account the time for processing the transport block and the time for ACK / NACK generation. This is because the channel code processing for the processing of the transport block takes a lot of time.
- the ACK / NACK and retransmission subframes are based on the processing of the transport block and the time for uplink ACK / NACK generation and uplink subframe allocation (for example, TDD uplink / downlink configuration). This can be determined.
- ACK / NACK bundling and multiplexing may be used.
- the turbo code has no further error rate improvement over a certain SNR.
- a low-density parity-check (LDPC) code has been proposed.
- the LDPC code is a linear block code, which is used in IEEE 802.11n, 802.11ac and Digital Video Broadcasting (DVB).
- the LDPC code may be composed of a generation matrix and a parity check matrix.
- data may be encoded through a product operation on message bits and a generation matrix.
- a parity check matrix may be used instead of a generation matrix. For example, encoding of data may be performed using a parity check matrix.
- the linear block code may be generated based on the generation matrix G or the parity check matrix H.
- the linear block code is coded so that for every codeword c, Hc t has a value of zero.
- the LDPC code may also be performed by checking whether the product of the parity check matrix H and the codeword c becomes '0' like other linear block codes. For example, the decoding of the LDPC code may be performed by determining whether the product (ie, Hc t ) of the transpose matrix and the parity check matrix of the codeword c is 0.
- the parity check matrix is defined in a non-systematic form, and a uniform weight is applied to the rows and columns of the parity check matrix. The weight may mean the number of 1s included in a row or column.
- the density of nonzero elements on the parity check matrix H of the LDPC code is low.
- the LDPC code has a low decoding complexity and performance close to Shannon's theoretical limit. Due to the high error correction performance and low decoding complexity of the LDPC code, the LDPC code has characteristics suitable for high speed wireless communication.
- the parity check matrix H may be used to generate the LDPC code.
- the H matrix contains many zeros and one less.
- the size of the H matrix may be 10 5 bits or more, and a lot of memory may be consumed to represent the H matrix.
- the elements of the H matrix may be represented as sub-blocks of constant size, as shown in FIG. In FIG. 7, each element of the matrix H represents one subblock.
- the size of the memory for representing the H matrix can be reduced by marking the subblocks with one integer index.
- Each subblock may be, for example, a constant size permutation matrix.
- FIG. 8 illustrates a model matrix according to an example.
- the model matrix used for LDPC code encoding / decoding is shown in FIG. 8.
- the model matrix may mean a parity check matrix composed of at least one subblock described below.
- a sub block may be referred to as a shift number in the following description.
- the model matrix may be extended to a parity check matrix based on the method described below. Therefore, encoding and decoding based on a specific model matrix means encoding and decoding based on a parity check matrix generated from an extension of the corresponding model matrix.
- an index '-1' represents a zero matrix of a predetermined size.
- the index '0' represents an identity matrix of a predetermined size.
- Positive integer indices except '-1' and '0' represent the number of shifts.
- the sub block represented by the index of '1' may mean a matrix shifted once in a specific direction from the unit matrix.
- 9 is a diagram for explaining transformation of a matrix according to the number of shifts.
- FIG. 9 illustrates a case in which the size of the sub block has four rows and four columns.
- the subblock is shifted three times to the right from the unit matrix.
- the parity check matrix of the code of the structured LDPC may indicate a sub block using an integer index of '3'.
- encoding of the LDPC code may be performed by generating a generation matrix G from the parity check matrix H and encoding the information bits using the generation matrix.
- Gaussian reduction is performed on the parity check matrix H to form a matrix of the form [P T : I].
- the matrix P is a matrix in which the number of rows is k and the number of columns is nk
- I is an identity matrix of size k.
- the generation matrix G has the form [I: P T ].
- the encoded information bits may be represented by a matrix x of one row k columns.
- codeword c is xG
- xG has the form [x: xP].
- x represents an information part (or a systematic part)
- xP represents a parity part.
- the H matrix into a special structure without using Gaussian elimination, it is also possible to code information bits directly from the H matrix without inducing the matrix G. From the structures of the H matrix and the G matrix described above, the product of the transpose matrix of the matrix G and the matrix H has a value of zero. Using this feature and the relationship between the information bits and codewords described above, a codeword can be obtained by adding a parity bit after the information bits.
- FIG. 10 is a flowchart illustrating an LDPC code decoding method according to an example.
- codeword c is represented by codeword c 'which includes noise at the receiving end.
- the receiver performs demultiplexing and demodulation on the received signal (S1000) and initializes decoding parameters (S1005).
- the receiver updates check nodes and variable nodes (S1010 and S1015) and performs syndrome checks (S1020). That is, by checking whether c'H T is 0, the decoding procedure may be terminated.
- the first k bits in c ' may be determined as information bits x. If c'H T is not 0, the information bit x may be recovered by finding c 'where c'H T satisfies 0 based on a decoding technique such as a sum-product algorithm.
- FIG. 11 illustrates a bipartite graph, according to one example.
- nodes on the left represent variable nodes
- nodes on the right represent check nodes.
- a binary graph is shown around the variable node v 0 and the check node c 1 for illustrative purposes.
- the connecting line of the binary graph of FIG. 11 may be referred to as an edge.
- the binary graph of FIG. 11 can be generated from Hc t .
- the edge from variable node v 0 corresponds to one column of parity check matrix H and the edge from check node c 1 corresponds to one row of matrix H.
- the product of the parity check matrix H and the transpose matrix of the codeword matrix c must have a value of '0'. Therefore, the value of variable nodes connected to one check node should be zero. Therefore, in FIG. 11, the exclusive OR (XOR) of the values of the variable nodes (v 0 , v 1 , v 4 , v 6 , v 9 , v 11 ) connected to the check node c 1 is' It must be 0 '.
- Syndrome check means to check whether the value of the variable nodes connected to each check node is exclusive OR.
- LDPC codes may be used.
- an LDPC code may be used for the data channel.
- a method of decoding an LDPC code using syndrome check instead of CRC has been proposed.
- a syndrome check is performed every iterative decoding, the memory in which the log likelihood ratio for the variable node needs to be read every time for the syndrome check. Therefore, a problem may occur in which power consumption and delay due to memory reading are increased.
- the sum-product algorithm is used as a standard deocoding algorithm for capacity-approaching code (e.g., turbo code or LDPC code).
- a trust propagation algorithm is used as a decoding method using a sum-product algorithm.
- operations on check nodes and variable nodes of the sum-product algorithm are sequentially processed to decode the LDPC code.
- the probability value of the first variable node is passed to the check nodes associated with the first variable node, and the side information value calculated based on the probability value passed to each check node is calculated for each check node. Passed to variable nodes connected to. Updates to the remaining variable nodes are sequentially performed based on the passed side information value.
- the probability values of all the variable nodes can be updated.
- the probability value of another variable node already updated for the update of a particular variable node may be used.
- decoding using a hierarchical trust propagation algorithm has a disadvantage in that the time for decoding is increased by the length of the codeword compared with the flooding belief propagation algorithm. For example, the decoding time may be increased by N times the length of the codeword.
- FIG. 12 is a flowchart of an LDPC code decoding method using syndrome check according to an example.
- the receiver calculates a Log Likelihood Ratio (LLR) value from the channel (S1201). For example, the receiving end may calculate the LLR value of the received input signal or codeword. In addition, although not shown in FIG. 12, the receiving end may initialize the variable nodes using the LLR value. In addition, the receiving end initializes the value of the parameter Itr to 0 (S1202). The parameter Itr is a parameter representing the number of repetitions.
- the receiving end updates each of the check nodes based on the values of the variable nodes (S1203). For example, each check node may be updated based on the value of variable nodes associated with each check node by a parity check matrix. In addition, the receiving end may update each variable node (S1204). For example, the receiving end may update each variable node based on the value of the check nodes associated with each variable node (eg, the LLR value of the check node) by the parity check matrix.
- the receiving end determines whether the value of Itr is less than the preset maximum value (S1205). If the value of Itr is less than the maximum value, the receiving end may determine whether the syndrome check succeeds (S1206). For example, the receiving end may perform syndrome check on the check nodes using the parity check matrix. For example, the syndrome check may be performed according to the method described above with respect to FIGS. 9 to 11. If the syndrome check is successful, the decoding can be considered successful. Therefore, decoding can be ended. However, if the syndrome check fails, the receiving end may increase the value of Itr by 1 and repeat steps S1203 to S1205. However, when the number of repetitions reaches a predetermined maximum value, the receiving end may consider that decoding has failed. For example, when decoding fails, the receiving end may terminate decoding and transmit a negative acknowledgment (NACK) and / or a retransmission request to the transmitting end.
- NACK negative acknowledgment
- FIG. 13 is a flowchart of a syndrome check method according to an example.
- a syndrome check method will be described in more detail with reference to FIG. 13.
- the syndrome check method of FIG. 13 may correspond to step S1206 of FIG. 12.
- the receiving end may initialize the value of the parameter N to 1 (S1301). Thereafter, the receiving end may update the check nodes connected to the N th column of the parity check matrix (S1302). That is, the receiving end may update the values of the check nodes corresponding to the elements having a value of 1 in the Nth column of the parity check matrix. In addition, the receiving end may update the variable nodes connected to the updated check nodes (S1303).
- the receiving end may determine whether the N value and the number of columns of the parity check matrix are the same (S1304). If the value of N is smaller than the number of columns of the parity check matrix, the receiving end may increase the value of N by 1 (S1305) and repeat steps S1302 to S1304. Accordingly, check nodes and variable nodes corresponding to all columns of the parity check matrix may be sequentially updated.
- the receiving end may determine whether the decoding succeeds by performing a syndrome check on the parity check matrix (S1306). For example, the receiving end may perform syndrome check by using a hard decision LLR value for the check node.
- FIG. 14 is a flowchart of a syndrome check method according to an embodiment.
- the syndrome check method of FIG. 14 may correspond to step S1206 of FIG. 12.
- the receiving end may initialize the value of the parameter N to 1 (S1401). Thereafter, the receiving end may update the check nodes connected to the Nth column of the parity check matrix (S1402). That is, the receiving end may update the values of check nodes corresponding to elements having a value of 1 in the Nth column of the parity check matrix. In addition, the receiving end may update the variable nodes connected to the updated check nodes (S1403).
- the receiving end determines whether the syndrome check for the parity check matrix is successful (S1404).
- the syndrome check is performed before the check nodes and variable nodes for the entire parity check matrix are updated. Therefore, even before the check nodes and variable nodes for all columns of the parity check matrix are updated, the receiving end may determine that the decoding is successful and terminate the decoding if the syndrome check succeeds. Thus, time and power consumption for decoding can be reduced.
- the receiving end may determine whether the N value and the number of columns of the parity check matrix are the same (S1405). If the value of N is smaller than the number of columns of the parity check matrix, the receiving end may increase the value of N by 1 (S1406) and repeat steps S1402 to S1405. Accordingly, check nodes and variable nodes corresponding to all columns of the parity check matrix may be sequentially updated.
- the receiving end may determine whether the decoding succeeds by performing a syndrome check on the parity check matrix (S1407). For example, the receiving end may perform syndrome check by using a hard decision LLR value for the check node.
- step S1407 may be omitted. This is because the syndrome check has already been performed in step S1404. In this case, whether or not the decoding succeeds may be determined in step S1404.
- 15A and 15B are diagrams for describing a syndrome check method, according to an exemplary embodiment.
- FIGS. 15A and 15B show bipartite graphs according to one embodiment.
- the nodes on the left have variable nodes v 1 , v 2 , v 3 , v 4 , and v 5
- the nodes on the right have check nodes c 1 , c 2 , c 3 , and c 4 ).
- variable nodes v 1 , v 2 , v 3 , v 4 , and v 5 represents the value of the current variable node, and also check nodes c 1 , c 2 , c 3 , and c 4 ), the values of the variable nodes (v 1 , v 2 , v 3 , v 4 , and v 5 ) connected to the check nodes c 1 , c 2 , c 3 , and c 4 are XOR-operated. Syndrome checks may be performed. "+" In FIGS. 15A and 15B may mean an XOR operation.
- each variable node and check node are sequentially updated.
- decryption may be performed again because of failing to verify the syndrome in the previous decoding.
- the data may be sequentially updated from the variable node v 1 .
- 15A shows a bipartite graph before variable node v 1 is updated.
- the values of the variable nodes v 1 , v 2 , and v 3 at the check node c1 are XORed.
- the value of check node c 1 is 1.
- FIG. 15B shows a bipartite graph in which the first variable node v 1 and the check node c 1 connected thereto are updated.
- the value of the variable node v 1 is updated to zero.
- check nodes connected to the updated variable node are updated.
- variable node v 1 is connected only to check node c 1 . Therefore, only the value of the check node c 1 is updated.
- all check nodes c 1 , c 2 , c 3 , and c 4 have a value of zero.
- the receiving end can know the syndrome values for the remaining check nodes other than the updated check node. Accordingly, the receiving end may confirm that the syndrome value of all the check nodes is 0, and may terminate decoding.
- a flag bit for each check node can be set.
- a flag may be set for a check node whose value of the syndrome is not zero (ie, a check node that fails to check the syndrome) in the previous decoding step.
- the syndrome value of the check node becomes 0 according to the update of the variable node, the corresponding flag may be released. Accordingly, the receiving end may perform syndrome check without checking the syndrome values for all the check nodes by checking only the syndrome values for the check nodes in which the flag is set.
- the conventional syndrome check method described above with reference to FIG. 13 continuously updates the remaining variable nodes and check nodes. Therefore, in the conventional syndrome check method, since the receiver performs syndrome check after all the variable nodes and the check nodes are updated, time and power consumption for decoding increase.
- 16A and 16B illustrate a hierarchical LDPC code decoding method, according to an exemplary embodiment.
- 16A and 16B show bipartite graphs according to one embodiment.
- the nodes on the left have variable nodes v 1 , v 2 , v 3 , v 4 , and v 5
- the nodes on the right have check nodes c 1 , c 2 , c 3 , and c 4 ).
- the check nodes (c 1, c 2, c 3, and c 4) from the check nodes (c 1, c 2, c 3, and c 4), the variable nodes connected to (v 1, v 2, Syndrome check may be performed by performing an XOR operation on the values of v 3 , v 4 , and v 5 ).
- "+" In FIGS. 16A and 16B may mean an XOR operation.
- Fig. 16A in order to update a check node, the memory corresponding to all variable nodes connected to the check node needs to be read.
- the variable node v 4 when the variable node v 4 is updated, the connected check nodes c 2 , c 3 , and c 4 are updated.
- the memory corresponding to the variable nodes v 2 , v 3 , v 4 , and v 5 needs to be read.
- a relation for determining a syndrome value different from that in FIG. 16A may be used.
- a relational expression for determining a syndrome value of a check node may be modified to not include a variable node connected to a check node before the check node.
- the syndrome value of c 2 ′ is determined by XOR operation on variable nodes that do not overlap c 1 .
- the set of variable nodes connected to the previous check node may be referred to as the first set.
- the set of variable nodes connected to the check node subsequent to the previous check node may be referred to as a second set.
- the syndrome value of the modified subsequent check node may be determined by the variable nodes included in the difference set of the first set for the second set.
- the check nodes c 1 is because it is the first node, has the same relationship as Fig. 16a.
- the check node c 2 ′ has a relation in which the variable node v 2 is removed from the relation in FIG. 16a.
- node variable v 4 is updated.
- check nodes c 2 ′, c 3 ′, and c 4 ′ connected to node variable v 4 are updated.
- the variable nodes connected to the check nodes c 2 ′, c 3 ′, and c 4 ′ are v 4 , v 5 , v 2 , and v 3, respectively.
- 17A and 17B are diagrams for describing a hierarchical LDPC code decoding method, according to another embodiment.
- FIGS. 17A and 17B show bipartite graphs according to one embodiment.
- the nodes on the left have variable nodes v 1 , v 2 , v 3 , v 4 , and v 5
- the nodes on the right have check nodes c 1 , c 2 , c 3 , and c 4 ).
- the check nodes (c 1, c 2, c 3, and c 4) from the check nodes (c 1, c 2, c 3, and c 4), the variable nodes connected to (v 1, v 2, Syndrome check may be performed by performing an XOR operation on the values of v 3 , v 4 , and v 5 ).
- "+" In FIGS. 17A and 17B may mean an XOR operation.
- 17A changes the order of check nodes from FIG. 16A. This is to minimize the number of variable nodes for calculating the syndrome value of the check node.
- the method of modifying the relational expression described above with reference to FIG. 16B may be applied to the check nodes having the changed order of FIG. 17A. That is, the changed check nodes may remove variable nodes that overlap with their previously located check nodes from their relations.
- FIG. 17B shows a modified relation in accordance with the method described above with respect to FIG. 17A.
- the modified relation c 3 ' it is not connected to any variable node. Therefore, the following effects can be obtained by reducing the number of variable nodes connected to the check node as shown in FIG. 17B.
- the value of each variable node connected to each syndrome check is read from the memory.
- the number of memory reads can be reduced. Considering that the power consumption due to the memory read in the decoder has a relatively high proportion, this can greatly reduce the power consumption of the memory.
- the decoding time and delay can be reduced.
- a pipeline can be used, for example, to reduce the decoding delay.
- the updated value is used for decoding after the updating of the variable nodes connected to the check node is completed. In this case, the decoding time and delay can be further reduced.
- variable node v1 when the variable node v1 is updated, a syndrome value for the check node c 1 connected to the variable node v 1 may be checked.
- the values for the variable nodes v 1 , v 2 , and v 3 connected to the check node c 1 are read.
- updating one variable node requires reading the values of all the variable nodes associated with the check node connected to that variable node.
- Table 1 the list of variable nodes requiring reading according to the update of each variable node is shown in Table 1 below.
- V1 V2 V3 V4 V5 Variable node read V1, V2, V3 V2, V4V1, V2, V3 V2, V3, V4, V5 V1, V2, V3V2, V3, V4, V5 V2, V4V2, V3, V4, V5 V4, V5 V2, V3, V4, V5 V4, V5 V2, V3, V4, V5 V4, V5 V4, V5 V4, V5 V4, V5 V4, V5 V4, V5
- V1 V2 V3 V4 V5 Updated variable node V1 V2 V3 V4 V5
- V1 V2 V3 V4 V5 V1 V2 V3 V4 V5
- the value of the variable node may be determined based on the likelihood ratio. Accordingly, the above-described embodiments may be applied to a sum-product algorithm as well as a min-sum algorithm (eg, a Viterbi algorithm).
- FIG. 18 is a diagram for schematically describing a configuration of devices to which the embodiments of the present invention described with reference to FIGS. 1 to 17B may be applied.
- the base station apparatus 10 may include a receiving module 11, a transmitting module 12, a processor 13, a memory 14, and a plurality of antennas 15. .
- the transmission module 12 may transmit various signals, data, and information to an external device (eg, a terminal).
- the reception module 11 may receive various signals, data, and information from an external device (eg, a terminal).
- the receiving module 11 and the transmitting module 12 may be referred to as transceivers.
- the processor 13 may control the overall operation of the base station apparatus 10.
- the plurality of antennas 15 may be configured according to, for example, a two-dimensional antenna arrangement.
- the processor 13 of the base station apparatus 10 may be configured to receive channel state information according to examples proposed by the present invention.
- the processor 13 of the base station apparatus 10 performs a function of processing information received by the base station apparatus 10, information to be transmitted to the outside, and the like. And may be replaced by a component such as a buffer (not shown).
- the terminal device 20 may include a receiving module 21, a transmitting module 22, a processor 23, a memory 24, and a plurality of antennas 25.
- the plurality of antennas 25 refers to a terminal device that supports MIMO transmission and reception.
- the transmission module 22 may transmit various signals, data, and information to an external device (eg, a base station).
- the reception module 21 may receive various signals, data, and information from an external device (eg, a base station).
- the receiving module 21 and the transmitting module 22 may be referred to as transceivers.
- the processor 23 may control operations of the entire terminal device 20.
- the processor 23 of the terminal device 20 may be configured to transmit channel state information according to examples proposed by the present invention.
- the processor 23 of the terminal device 20 performs a function of processing the information received by the terminal device 20, information to be transmitted to the outside, etc., and the memory 24 stores the calculated information and the like for a predetermined time. And may be replaced by a component such as a buffer (not shown).
- terminal device 10 may be implemented so that the above-described matters described in various embodiments of the present invention can be applied independently or two or more embodiments are applied at the same time, overlapping description will be described for clarity Omit.
- a downlink transmission entity or an uplink reception entity is mainly described using a base station
- a downlink reception entity or uplink transmission entity is mainly described using a terminal as an example.
- the scope of the present invention is not limited thereto.
- the description of the base station is a cell, an antenna port, an antenna port group, an RRH, a transmission point, a reception point, an access point, a repeater, or the like as a downlink transmission entity to a terminal or an uplink reception entity from a terminal.
- the repeater becomes a downlink transmission entity to the terminal or an uplink reception entity from the terminal, or when the repeater becomes an uplink transmission entity to the base station or a downlink reception entity from the base station,
- the principles of the present invention described through various embodiments may be equally applied.
- Embodiments of the present invention described above may be implemented through various means.
- embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof.
- a method according to embodiments of the present invention may include one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), and Programmable Logic Devices (PLDs). It may be implemented by field programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
- ASICs Application Specific Integrated Circuits
- DSPs Digital Signal Processors
- DSPDs Digital Signal Processing Devices
- PLDs Programmable Logic Devices
- FPGAs field programmable gate arrays
- processors controllers, microcontrollers, microprocessors, and the like.
- the method according to the embodiments of the present invention may be implemented in the form of a module, a procedure, or a function that performs the functions or operations described above.
- the software code may be stored in a memory unit and driven by a processor.
- the memory unit may be located inside or outside the processor, and may exchange data with the processor by various known means.
- each component or feature is to be considered optional unless stated otherwise.
- Each component or feature may be embodied in a form that is not combined with other components or features. It is also possible to combine some of the components and / or features to form an embodiment of the invention.
- the order of the operations described in the embodiments of the present invention may be changed. Some components or features of one embodiment may be included in another embodiment or may be replaced with corresponding components or features of another embodiment. It is obvious that the claims may be combined to form an embodiment by combining claims that do not have an explicit citation relationship in the claims or as new claims by post-application correction.
- Embodiments of the present invention can be applied to various wireless access systems and broadcast communication systems.
- various radio access systems include 3rd Generation Partnership Project (3GPP), 3GPP2 and / or IEEE 802.xx (Institute of Electrical and Electronic Engineers 802) systems.
- Embodiments of the present invention can be applied not only to the various radio access systems, but also to all technical fields to which the various radio access systems are applied.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
Abstract
개선된 LDPC (Low Density Parity Check) 코드의 계층적 복호화 방법 및 이를 위한 장치가 개시된다. 본 개시물의 LDPC 코드의 계층적 복호화 방법은, 매 변수 노드의 갱신 마다 각 체크 노드에 대한 신드롬 체크를 수행하여 복호 성공 여부를 결정할 수 있다. 또한, 감소된 변수 노드들을 이용하여 신드롬 체크를 수행함으로써 복호를 위한 전력 소모와 복호 소모 시간이 감소될 수 있다.
Description
본 발명은 무선 통신 시스템 상에서의 채널 코드의 복호화 방법에 관한 것으로서, 특히, LDPC (Low-Density Parity-Check) 코드의 계층적 복호화 (layered decoding) 방법 및 이를 위한 장치에 관한 것이다.
무선 접속 시스템이 음성이나 데이터 등과 같은 다양한 종류의 통신 서비스를 제공하기 위해 광범위하게 전개되고 있다. 일반적으로 무선 접속 시스템은 가용한 시스템 자원(대역폭, 전송 파워 등)을 공유하여 다중 사용자와의 통신을 지원할 수 있는 다중 접속(multiple access) 시스템이다. 다중 접속 시스템의 예들로는 CDMA(code division multiple access) 시스템, FDMA(frequency division multiple access) 시스템, TDMA(time division multiple access) 시스템, OFDMA(orthogonal frequency division multiple access) 시스템, SC-FDMA(single carrier frequency division multiple access) 시스템 등이 있다.
상술한 통신 시스템들에서뿐만 아니라, 방송 시스템에 있어서도 채널 코드(channel code)가 필수적으로 이용되고 있다. 채널 코드의 일반적인 구성 방법의 예시로서, 송신단이 부호화기를 이용하여 입력 심볼에 대하여 부호화를 수행하고 부호화된 심볼을 송신할 수 있다. 또한, 예를 들어, 수신단은 부호화된 심볼을 수신하고 수신된 심볼에 대하여 복호를 수행하여 입력 심볼을 복원할 수 있다. 이 경우, 입력 심볼의 크기와 부호화된 심볼의 크기는 통신 시스템에 따라서 달리 정의될 수 있다. 예를 들어, 3GPP (3rd Generation Partnership Project)의 LTE (Long Term Evolution) 통신 시스템에서 사용되는 데이터 정보용 터보(turbo) 코드에서, 입력 심볼의 채되 크기는 최대 6144 비트이고, 부호화된 심볼의 크기는 18432 (6144*3) 비트이다. LTE 통신 시스템에서의 터보 코딩은 3GPP 기술 규격 36.212에 의하여 참조될 수 있다.
그러나, LTE 터보 코드는 코드의 구조상 SNR (Signal to Noise Ratio)이 증가되더라도 일정 영역을 벗어나면 성능 개선이 미미한 특징이 있다. 이와 관련하여, 보다 오류 발생률이 낮은 코드를 이용하는 것이 고려될 수 있으나, 이 경우, 복잡도가 증가하는 문제점이 있다.
통신 시스템에 있어서 높은 오류율은 불필요한 데이터의 재송신과 채널 수신 실패를 초래할 수 있다. 또한, 지나치게 높은 복잡도의 코드는 기지국과 단말의 부하를 증가시킬 뿐만 아니라, 송수신 지연을 초래할 수 있다. 특히, 더 빠른 데이터의 송수신이 요구되는 차세대 통신 시스템에 있어서는, 상술한 문제점들이 해결이 요구된다. 따라서, 오류율을 낮추면서도 낮은 복잡도를 갖는 코딩 방법이 요구된다.
특히, 현재의 LTE 터보 코드는 정보의 크기가 증가하면 오류 플로어(error floor)가 발생하는 문제점이 있다. 따라서, URR (Ultra Reliable Radio) 및 LLR (Low Latency Radio)을 만족할 수 있는 채널 코딩 방법이 요구된다.
본 발명은, 상술한 문제점들을 해결하기 위하여 창안된 것으로서, 본 발명의 목적은 전력 소모 및 지연이 감소된 LDPC 코드의 복호화 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 이러한 방법들을 지원하는 장치를 제공하는 것이다.
본 발명에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 발명의 실시예들로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
상술한 과제를 해결하기 위한 본원의 LDPC (Low Density Parity Check) 코드의 계층적 복호화(layered decoding) 방법은, 입력 신호로부터 우도비(Log Likelihood) 값을 계산하는 단계; 상기 우도비 값에 기초하여 복수의 변수 노드들을 초기화하는 단계; 및 신드롬 체크(syndrome check)에 기초하여 상기 입력 신호에 대한 복호의 성공 또는 실패가 결정될 때까지, 패리티 체크 행렬(Parity Check Matrix) 및 상기 복수의 변수 노드들의 값에 기초한 복수의 체크 노드들의 갱신 및 상기 패리티 체크 행렬 및 상기 복수의 체크 노드들의 값에 기초한 상기 복수의 변수 노드들의 갱신을 반복하는 단계를 포함하고, 상기 반복하는 단계는, 상기 복수의 변수 노드들을 순차적으로 갱신하고 하나의 변수 노드가 갱신될 때 마다 상기 복수의 체크 노드들에 대한 신드롬 체크를 수행하는 단계를 포함하고, 상기 복수의 체크 노드들과 상기 복수의 변수 노드들의 연관은 상기 패리티 체크 행렬에 기초하여 결정되고, 상기 복수의 체크 노드들 모두에 대한 신드롬 체크의 값이 0인 경우, 상기 복호의 성공이 결정될 수 있다.
바람직하게는, 상기 반복하는 단계가 기설정된 횟수 이상 반복되면 상기 복호의 실패가 결정될 수 있다.
바람직하게는, 상기 신드롬 체크를 수행하는 단계는 현재 반복에서 갱신된 하나의 변수 노드와 연관된 체크 노드들의 신드롬 체크 값과 이전 반복에서 계산된 나머지 체크 노드들의 신드롬 체크 값을 이용하여 수행될 수 있다.
바람직하게는, 상기 복수의 체크 노드들 각각에 대하여 신드롬 체크 값을 나타내는 1 비트의 플래그 비트(flag bit)가 설정될 수 있다.
바람직하게는, 상기 신드롬 체크를 수행하는 단계는, 상기 복수의 체크 노드들 각각에 연관된 변수 노드들의 값에 대한 배타적 논리합(exclusive OR) 연산을 수행함으로써 신드롬 체크를 수행하는 단계를 포함할 수 있다.
바람직하게는, 상기 복수의 체크 노드들은 제1 체크 노드와 상기 제1 체크 노드에 후속하는 제2 체크 노드를 포함하고, 상기 제2 체크 노드의 신드롬 체크는, 상기 제1 체크 노드에 연관된 변수 노드들을 상기 제2 체크 노드에 연관된 변수 노드들로부터 제외한 나머지 변수 노드들에 대한 배타적 논리합(exclusive OR) 연산에 의하여 수행될 수 있다.
또한, 상술한 과제를 해결하기 위한 단말은, 신호를 송수신하는 트랜시버; 메모리; 및 상기 트랜시버 및 상기 메모리를 제어하는 프로세서를 포함하고, 상기 프로세서는: 입력 신호로부터 우도비(Log Likelihood) 값을 계산하고, 상기 우도비 값에 기초하여 복수의 변수 노드들을 초기화하고, 복수의 체크 노드들에 대한 신드롬 체크(syndrome check)에 기초하여 상기 입력 신호에 대한 복호의 성공 또는 실패가 결정될 때까지, 패리티 체크 행렬(Parity Check Matrix) 및 상기 복수의 변수 노드들의 값에 기초한 상기 복수의 체크 노드들의 갱신 및 상기 패리티 체크 행렬 및 상기 복수의 체크 노드들의 값에 기초한 상기 복수의 변수 노드들의 갱신을 반복하도록 더 구성되고, 상기 복수의 변수 노드들은 순차적으로 갱신되고, 상기 복수의 체크 노드들에 대한 신드롬 체크는, 하나의 변수 노드가 갱신될 때 마다 수행되고, 상기 복수의 체크 노드들과 상기 복수의 변수 노드들의 연관은 상기 패리티 체크 행렬에 기초하여 결정되고, 상기 복수의 체크 노드들 모두에 대한 신드롬 체크의 값이 0인 경우, 상기 복호의 성공이 결정될 수 있다.
상술한 본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명의 실시예들에 따르면 다음과 같은 효과가 있다.
본 발명의 LDPC 코드 복호화 방법은 종래의 LDPC 코드 복호화 방법에 비하여 낮은 메모리 판독 (read) 횟수 갖는다.
또한, 본 발명의 LDPC 코드 복호화 방법은 낮은 전력 소모 및 지연을 갖는다.
본 발명의 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 이하의 본 발명의 실시예들에 대한 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 발명을 실시함에 따른 의도하지 않은 효과들 역시 본 발명의 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되고, 첨부된 도면들은 본 발명에 대한 다양한 실시예들을 제공한다. 또한, 첨부된 도면들은 상세한 설명과 함께 본 발명의 실시 형태들을 설명하기 위해 사용된다.
도 1은 일 예시에 따른 부호화 과정을 도시한다.
도 2는 일 예시에 따른 운송 블록의 부호화 과정을 도시한다.
도 3은 일 예시에 따른 RSC (Recursive Systematic Convolutional) 부호화기를 도시한다.
도 4는 LTE 터보 부호화기(encoder)를 도시한다.
도 5는 RSC 부호화기에 따른 트렐리스(Trellis)의 일 예시를 도시한다.
도 6은 트렐리스 구조의 일 예시를 도시한다.
도 7은 일 예시에 따른 구조화된 패리티 체크 행렬을 도시한다.
도 8은 일 예시에 따른 모델 행렬(model matrix)을 도시한다.
도 9는 쉬프트 수에 따른 행렬의 변환을 설명하기 위한 도면이다.
도 10은 일 예시에 따른 LDPC 코드 복호화 방법의 흐름도이다.
도 11은 일 예시에 따른 이분 그래프(bipartite graph)를 도시한다.
도 12는 일 예시에 따른 신드롬 체크를 이용한 LDPC 코드 복호화 방법을 도시한다.
도 13은 일 예시에 따른 신드롬 체크 방법을 도시한다.
도 14는 일 실시예에 따른 신드롬 체크 방법의 흐름도이다.
도 15a 및 15b는 일 실시예에 따른 신드롬 체크 방법을 설명하기 위한 도면이다.
도 16a 및 16b는 일 실시예에 따른 계층적 LDPC 코드 복호 방법을 설명하기 위한 도면이다.
도 17a 및 17b는 다른 실시예에 따른 계층적 LDPC 코드 복호 방법을 설명하기 위한 도면이다.
도 18은 본 발명의 일 실시예에 따른 기지국 및 단말의 구성도이다.
이하의 기술은 CDMA(code division multiple access), FDMA(frequency division multiple access), TDMA(time division multiple access), OFDMA(orthogonal frequency division multiple access), SC-FDMA(single carrier frequency division multiple access) 등과 같은 다양한 무선 접속 시스템에 사용될 수 있다. CDMA는 UTRA(Universal Terrestrial Radio Access)나 CDMA2000과 같은 무선 기술(radio technology)로 구현될 수 있다. TDMA는 GSM(Global System for Mobile communications)/GPRS(General Packet Radio Service)/EDGE(Enhanced Data Rates for GSM Evolution)와 같은 무선 기술로 구현될 수 있다. OFDMA는 IEEE 802.11(Wi-Fi), IEEE 802.16(WiMAX), IEEE 802-20, E-UTRA(Evolved UTRA) 등과 같은 무선 기술로 구현될 수 있다. UTRA는 UMTS(Universal Mobile Telecommunications System)의 일부이다. 3GPP(3rd Generation Partnership Project) LTE(long term evolution)는 E-UTRA를 사용하는 E-UMTS(Evolved UMTS)의 일부로서 하향링크에서 OFDMA를 채용하고 상향링크에서 SC-FDMA를 채용한다. LTE-A(Advanced)는 3GPP LTE의 진화된 버전이다.
설명을 명확하게 하기 위해, 3GPP LTE/LTE-A를 위주로 기술하지만 본 발명의 기술적 사상이 이에 제한되는 것은 아니다. 또한, 이하의 설명에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
도 1은 일 예시에 따른 부호화 과정을 도시한다.
LTE 통신 시스템에서 이용하는 터보 코드를 포함하는 많은 채널 코드들에 도 1과 같은 부호화 과정이 적용될 수 있다. 이하에서는, 설명의 편의를 위하여 LTE 통신 시스템의 표준 문서에 따른 용어에 기초하여 부호화 과정을 설명한다.
도 1의 예시에서, 송신단은 운송 블록(Transport Block, TB)을 생성(S101)할 수 있다. 또한, 송신단은 운송 블록에 운송 블록에 대한 CRC 비트를 추가(S102)된다. 또한, 송신단은 CRC 비트가 추가된 운송 블록으로부터 코드 블록을 생성(S103)할 수 있다. 예를 들어, 송신단은 인코더의 입력 크기에 기초하여 운송 블록을 코드 블록으로 분할(segmentation)할 수 있다. 또한, 송신단은 분할된 각각의 코드 블록에 대하여 CRC 비트를 추가(S104)할 수 있다. 이 경우, 예를 들어, 코드 블록 및 코드 블록 CRC 비트의 크기는 6144 비트로 구성될 수도 있다. 송신단은 코드 블록과 CRC 비트로 구성된 블록 각각에 대하여 부호화 및 변조(S105)를 수행할 수 있다. 예를 들어, 상술한 바와 같이, 터보 코딩이 적용될 수도 있다.
복호화 과정은 도 1의 부호화 과정의 역순으로 수행될 수 있다. 예를 들어, 수신단은 각 부호화기에 대응하는 복호화기(decoder)를 이용하여 각 코드 블록 단위로 복호화를 수행하고, 최종적으로 하나의 운송 블록을 구성하여, 운송 블록의 CRC 통과여부를 확인할 수 있다.
예를 들어, 입력 심볼의 크기는 MAC(Media Access Control) 계층으로부터의 운송 블록(transport block, TB)의 크기와는 상이할 수 있다. 운송 블록의 크기가 터보 코드의 최대 입력 심볼 크기보다 큰 경우에는, 운송 블록은 복수의 코드 블록(code block, CB)들로 분할 될 수 있다. LTE 통신 시스템의 표준에 따를 경우, 코드 블록의 크기는 6144 비트에서 CRC (Cyclic Redundancy Check) 비트를 감산한 것과 동일할 수도 있다. 터보 코드의 입력 심볼은 코드 블록과 CRC를 포함하는 데이터 또는 운송 블록 (예를 들어, 운송 블록은 6144 비트 미만) 과 CRC를 포함하는 데이터로 정의될 수도 있다. CRC 비트는 6144 비트에 비하여 매우 작은 값(예를 들어, 최대 24 비트)이다. 따라서, 이하의 설명에 있어서는, 다르게 정의되지 않는 한, 코드 블록은 코드 블록 자체 또는 코드 블록과 대응하는 CRC 비트를 지칭할 수 있으며, 운송 블록은 운송 블록 자체 또는 운송 블록과 대응하는 CRC 비트를 지칭할 수 있다.
도 2는 일 예시에 따른 운송 블록의 부호화 과정을 도시한다.
도 2는 도 1과 관련하여 상술한 부호화 과정에 대응하는 운송 블록(201)의 부호화 과정을 도시한다. 먼저, 운송 블록(201)에 운송 블록 CRC(202)가 추가된다. 운송 블록 CRC(202)는 복호 과정에서 운송 블록(201)의 확인을 위하여 이용될 수 있다. 그 후에 운송 블록(201) 및 운송 블록 CRC(202)는 3개의 코드 블록(203)들로 분할 된다. 본 실시예에서는 3 개의 코드 블록(203)들로 분할되었으나, 운송 블록(201)은 부호화기(205)의 입력 크기에 기초하여 복수의 코드블록들로 분할될 수 있다.
코드 블록(203) 각각에는 코드 블록 CRC(204)가 추가된다. 코드 블록 CRC(204)는 수신단에서 코드 블록(203)의 확인을 위하여 이용될 수 있다. 코드 블록(203)과 코드 블록 CRC(204)은 부호화기(205) 및 변조기(206)를 거쳐 부호화될 수 있다.
도 3은 일 예시에 따른 RSC (Recursive Systematic Convolutional) 부호화기를 도시한다.
도 3의 RSC 부호화기(300)는 터보 코딩에 이용될 수 있다. 도 3에서, m은 입력 데이터를 나타내며, C1은 시스테매틱(systematic) 비트열, C2는 부호화된(coded) 비트열을 나타낸다. 여기서, RSC 부호화기(300)는 1/2 코드율(code rate)을 갖는다.
RSC 부호화기(300)는 비재귀적(nonrecursive)-비-시스테매틱(non-systematic) 콘볼루셔널(convoluational) 부호화기의 입력에 부호화된 출력을 피드백함으로써 구성될 수 있다. 도 3의 실시예에서 부호화기(300)는 2개의 지연기(301, 302)들을 포함한다. 지연기(301, 302)의 값 D는 코딩 방식(coding scheme)에 따라서 결정될 수 있다. 지연기(301, 302)는 메모리 또는 쉬프트 레지스터(shift register)로 구성될 수 있다.
도 4는 LTE 터보 부호화기(encoder)를 도시한다.
LTE 터보 부호화기(400)의 코딩 방식(scheme)은 2개의 8-상태 요소 부호화기(410, 420)들(constituent encoders)과 하나의 터보 코드 내부 인버리버(internal interleaver)(430)를 갖는 병렬 연접 컨벌루션 코드(Parallel Concatenated Convolutional Code, PCCC)이다.
도 4에서, 터보 부호화기(400)은 제1 요소 부호화기(constituent encoder)(410), 제2 요소 부호화기(420), 및 터보 코드 내부 인터리버(internal interleaver)(430)로 구성된다. 제1 요소 부호화기(410) 및 제2 요소 부호화기(420)는 8-상태(state) 요소 부호화기들이다. 제1 요소 부호화기(410) 및 제2 요소 부호화기(420)는 각각 도 3의 RSC 부호화기와 유사한 구조로 구성된다. 제1 요소 부호화기(410) 및 제2 요소 부호화기(420)는 각각 3개의 지연기(411, 412, 413, 421, 422, 423)를 포함한다.
도 4에서, D는 코딩 방식(coding scheme)에 따라서 결정되는 값이다. ck는 터보 부호화기(400)로의 입력이다. 제1 요소 부호화기(410) 및 제2 요소 부호화기(420)로부터의 출력은 각각 zk와 z'k으로 표시된다(denoted). 터보 코드 내부 인터리버(430)로부터 출력되는 값은 c'k로 표시된다. 일반적으로, 지연기(411,412,413,421,42,423)는 입력된 값을 1 클록씩 지연시킬 수 있다. 그러나, 지연기(411,412,413,421,42,423)는 내부 설정에 따라 1 클록 이상 동안 입력된 값을 지연시키도록 구성될 수 있다. 지연기(411,412,413,421,42,423)는 쉬프트 레지스터(shift register)로 구성될 수 있으며, 기설정된 클록만큼 입력된 비트를 지연시킨 뒤 입력된 비트를 다음 지연기(411,412,413,421,42,423)로 출력하도록 구성될 수 있다.
터보 코드 내부 인터리버(430)는 무선 채널로의 신호 송신시 발생할 수 있는 버스트 오류(burst error)의 영향을 감소시킬 수 있다. 예를 들어, 터보 코드 내부 인터리버(430)는 QPP(Quadratic Polynomial Permutation) 인터리버일 수도 있다.
터보 코드는 고성능 순방향 오류 정정 (forward error correction, FEC) 코드로서, LTE 통신 시스템에서 이용되고 있다. 예를 들어, 터보 코드에 의하여 코딩된 데이터 블록은 3개의 서브블록들로 구성될 수도 있다. 하나의 서브블록은 m 비트의 페이로드(payload) 데이터에 대응할 수 있다. 다른 서브블록은, RSC(recursive systematic convolution) 코드를 이용하여 계산된, 페이로드에 대한 n/2 비트의 패리티(parity) 비트들로 구성될 수 있다. 또한, 나머지 서브 블록은 RSC 코드를 이용하여 계산된, 페이로드 데이터의 퍼뮤테이션(permutation)에 대한 n/2 비트의 패리티 비트들로 구성될 수 있다. 예를 들어, 상술한 퍼뮤테이션은 인터리버(interleaver)에 의하여 수행될 수 있다. 따라서, 페이로드와 함께 서로 상이한 패리티 비트의 2개의 서브블록들이 하나의 블록으로서 구성될 수 있다. 예를 들어, m이 n/2와 동일한 경우, 하나의 블록은 1/3의 부호율(code rate)을 갖는다.
제1 요소 부호화기(410)에서, 입력 ck가 부호화된 비트 zk에 도달하는 과정은 두 개의 경로로 구분될 수 있다. 두 개의 경로는 입력단으로부터 출력단으로 출력 피드백 없이 연결된 제1 경로와 입력단으로부터 다시 입력단으로 피드백되는 제2 경로이다.
제1 경로에서, 입력 ck, 지연기(411)을 거친 입력 ck, 및 지연기들(411, 412, 및 413)을 거친 입력 ck가 출력단에 인가된다. 제1 경로에 대한 입력단 출력단 사이의 관계는 다항식으로 표현될 수 있다. 제1 경로에 대한 다항식은 순방향 생성기 다항식(forward generator polynomial)으로 호칭되고, 하기의 수학식의 g1과 같이 표현될 수 있다.
한편, 제2 경로에서, 입력 ck, 지연기들(411 및 412)을 거친 입력 ck, 및 지연기들(411, 412, 및 413)을 거친 입력 ck가 입력단에 피드백된다. 제2 경로에 대한 다항식은 재귀적 생성기 다항식(recursive generator polynomial)으로 호칭되고, 하기의 수학식의 g0와 같이 표현될 수 있다.
상기 수학식 1 및 2에서, “+”는 배타적 논리합(exclusive OR, XOR)을 의미하며, 1은 입력이 0번의 지연을 거침을 의미한다. 또한, Dn은 입력이 n번의 지연을 거침을 의미한다.
도 5는 RSC 부호화기에 따른 트렐리스(Trellis)의 일 예시를 도시한다.
도 5는 도 3에 도시된 RSC 부호화기의 트렐리스의 구성을 도시한다. 도 5에서 Si는 i번째 입력 데이터의 상태(state)를 나타낸다. 도 5에서, 각 원은 각 노드를 나타낸다. 아울러, 각 노드들 사이에 이어진 선은 브랜치(branch)를 의미한다. 실선의 브랜치는 입력값 1에 대한 브랜치를, 점선의 브랜치는 입력값 0에 대한 브랜치를 의미한다. 브랜치 상의 값은 m/C1C2 (입력값/시스테매틱 비트, 부호화된 비트)로 표시된다. 또한, 인코더의 메모리의 개수에 지수적으로 비례하는 상태를 가질 수 있다. 예를 들어, 인코더가 a개의 메모리를 포함하는 경우, 2a개의 상태가 트렐리스에 포함될 수 있다.
트렐리스는 2개의 상태 사이에서 가능한 부호기의 상태 전이를 도시하는 상태 기계(state machine)이다. RSC 부호화기와 같은 컨볼루션 부호화기는 트렐리스 다이어그램(diagram)에 따라서 부호화를 수행할 수 있다. RSC 부호화기에 의하여 부호화된 코드워드는 트렐리스 구조에 기반한 알고리즘에 따라서 복호화될 수 있다. 예를 들어, 비터비(Viterbi) 또는 BCJR(Bahl, Cocke, Jelinek and Raviv) 알고리즘이 이용될 수 있다.
도 6은 트렐리스 구조의 일 예시를 도시한다.
도 6에서, n은 코드워드(codeword)의 길이를 나타낸다. 통상적으로, 추가적인 비트들을 입력 시퀀스 뒤에 추가함으로써, 트렐리스가 종료(terminated)될 수 있다. 일반적으로 0의 시퀀스로 구성된 시퀀스는 테일 비트(tail bit)로 호칭된다. 테일 비트는 트렐리스의 한 상태의 노드들이 0 값을 가지도록 하여 트렐리스를 종료시킨다.
도 6에서, 코드워드의 길이는 입력 데이터의 길이 k 및 테일 비트의 길이 t를 고려하여 결정될 수 있다. 예를 들어, 코드율이 R인 경우, 코드워드의 길이 n은 (k+t)/R의 값을 가질 수 있다. 일반적으로, 테일 비트의 길이 t는 부호화기의 모든 지연기(예를 들어, 메모리)를 리셋할 수 있는 길이로 결정될 수 있다. 예를 들어, 도 3의 RSC 부호화기는 총 2 비트의 테일 비트를 사용할 수 있다. 또한, 도 4와 같은 LTE 통신의 터보 부호화기는 3 비트의 테일 비트를 사용할 수 있다.
테일 비트는 입력 데이터의 길이에 비하여 상대적으로 짧은 길이를 갖는다. 상술한 바와 같이 코드워드의 길이는 테일 비트의 길이와 연관되기 때문에, 코드워드의 길이가 한정된 경우에 테일 비트로 인한 코드율 손실이 발생할 수 있다. 그러나, 테일 비트로 인한 코드율 손실에도 불구하고, 테일 비트를 이용한 트렐리스 종료가 널리 이용되고 있다. 계산의 복잡도가 낮고 오류 정정 성능이 우수하기 때문이다.
펑쳐링(puncturing) 코드는 코드워드 중 일부를 펑쳐링하는 방식이다. 펑쳐링 코드에서, 코드워드 중 일부가 펑쳐링됨으로써 일부 코드워드가 송신되지 않는다. 예를 들어, 테일 비트의 추가로 인한 코드율 손실을 감소시키기 위하여 펑쳐링 코드가 이용될 수 있다. 이 경우, 수신단은 입력 데이터의 길이 k와 테일 비트의 길이 t의 합에 대응하는 트렐리스를 이용하여 복호를 수행할 수 있다. 즉, 수신단은 펑쳐링되지 않은 코드워드를 수신한 것으로 가정하고 복호를 수행할 수 있다. 이 경우, 수신단은 펑쳐링된 비트(즉, 송신단에서 송신되지 않은 비트)에 대응하는 노드로부터의 브랜치에 대하여는 입력값이 없는 것으로 간주할 수 있다. 즉, 해당 노드의 브랜치들에 대하여 입력 데이터는 동일한 확률로 0 또는 1로 가정된다.
도 1과 관련하여 상술한 바와 같이, 코드블록에 대한 CRC가 코드블록에 추가된다. CRC는 송신하려는 데이터를 기설정된 체크값을 제수로 사용하여 나눈 후, 도출되는 나머지로서 결정될 수 있다. CRC는 일반적으로 송신 데이터의 끝에 추가될 수 있다. 수신단은 수신 데이터를 기설정된 체크 값으로 나눈 나머지를 CRC와 비교하거나, CRC를 포함한 전체 수신 데이터에 대하여 체크 값으로 나눈 나머지가 0인지를 판단할 수 있다.
운송 블록의 크기가 6144 비트인 경우, CRC의 크기는 최대 24 비트로 구성될 수 있다. 따라서, CRC 비트를 제외한 나머지 비트가 코드 블록의 크기로 결정된다.
수신단은 복호화를 각 코드블록 단위로 수행할 수 있다. 그 후, 수신단은 코드블록으로부터 운송블록을 구성하고, 운송블록에 대한 CRC를 확인함으로써 복호 성공 여부를 판단할 수 있다. 현재의 LTE 시스템에서, 코드블록 CRC는 빠른 복호화 종료(early decoding termination)를 위하여 이용된다. 예를 들어, 하나의 코드블록에 대한 CRC 체크가 실패하는 경우, 수신단은 나머지 코드블록들을 복호화하지 않고 NACK (Negative ACKnowledgement)을 송신단에 송신할 수 있다.
NACK이 수신되는 경우, 송신단은 송신 데이터의 적어도 일부를 재송신할 수 있다. 예를 들어, 송신단은 운송블록 또는 하나 이상의 코드 블록을 재송신할 수도 있다. 예를 들어, 운송블록 전체를 재송신하는 경우, 재송신을 위하여 무선 자원이 과다하게 소모될 수 있다. 또한, 예를 들어, 수신단에서 코드블록 CRC 실패로 인한 NACK이 발생하는 경우, 수신단은 CRC 실패가 발생한 코드블록의 정보(예를 들어, 코드블록의 인덱스)를 송신단에 송신할 수 있다. 또한, 송신단은 코드블록의 정보를 이용하여 CRC 실패가 발생한 코드블록만을 전송하여 무선 자원 효율을 증가시킬 수도 있다. 그러나, 코드블록의 개수가 증가되는 경우, 코드블록의 정보(예를 들어, 코드블록의 인덱스)를 피드백하기 위한 데이터 양이 증가하게 된다.
LTE 통신 시스템에서, 수신단은 ACK/NACK 신호를 이용하여 데이터 수신 성공 여부를 송신단에 알려줄 수 있다. FDD(Frequency Division Duplex)의 경우, i번째 서브프레임에서 수신된 데이터에 대한 ACK/NACK이 i+4번째 서브프레임에서 송신된다. i+4번째 서브프레임에서 NACK이 수신되는 경우, 재전송은 i+8번째 서브프레임에서 수행될 수 있다. 이는, 운송블록을 처리하기 위한 시간과 ACK/NACK 생성을 위한 시간을 고려한 것이다. 운송블록의 처리를 위한 채널 코드 처리가 많은 시간을 소요하기 때문이다. TDD(Time Division Duplex)의 경우, 운송블록의 처리와 ACK/NACK 생성을 위한 시간과 상향링크 서브프레임 할당(예를 들어, TDD 상향링크/하향링크 설정)에 기초하여 ACK/NACK 및 재전송 서브프레임이 결정될 수 있다. 또한, ACK/NACK 번들링(bundling) 및 멀티플렉싱이 이용될 수 있다.
상술한 바와 같이, 터보 코드는 일정 SNR을 넘어서면 더 이상의 오류율 개선이 미미하다. 터보 코드의 대안으로서, LDPC (Low-Density Parity-Check) 코드가 제안되고 있다. LDPC 코드는 선형 블록 코드(linear block code)로서, IEEE 802.11n, 802.11ac 및 디지털 비디오 브로드캐스팅(Digital Video Broadcasting, DVB)에서 이용된다. LDPC 코드는 생성 행렬(generation matrix)과 패리티 검사 행렬(parity check matrix)로 구성될 수 있다. LDPC 코드에서, 데이터는 메시지 비트들(message bits)과 생성 행렬에 대한 곱 연산을 통하여 부호화될 수 있다. 일반적으로 LDPC 코드를 이용하는 통신 표준에서는, 생성 행렬 대신에 패리티 검사 행렬이 이용될 수 있다. 예를 들어, 패리티 검사 행렬을 이용하여 데이터의 부호화가 수행될 수 있다.
선형 블록 코드는 생성행렬 G 또는 패리티 체크 행렬 H에 기초하여 생성될 수 있다. 선형 블록 코드는 모든 코드워드 c에 대하여, Hct가 0의 값을 갖도록 코드가 구성된다. LDPC 코드 또한, 다른 선형 블록 코드와 동일하게, 패리티 검사 행렬 H와 코드워드 c의 곱이 '0'이 되는지를 확인함으로써 수행될 수 있다. 예를 들어, 코드워드 c의 전치행렬과 패리티 검사 행렬에 대한 곱(즉, Hct)이 0인지를 판단함으로써 LDPC 코드의 복호화가 수행될 수 있다.
LDPC 코드에 있어서, 패리티 체크 행렬의 원소는 대부분 0으로 이루어지고, 0이 아닌 원소의 수는 코드의 길이에 비하여 적은 수를 가진다. 따라서, LDPC 부호는 확률에 기초한 반복적 복호가 가능하다. 초기에 제안된 LDPC 부호에서, 패리티 체크 행렬을 비체계적(non-systematic) 형태로 정의되고, 패리티 체크 행렬의 행(row)과 열(column)에 균일하게 적은 웨이트(weight)가 적용되었다. 웨이트는 행 또는 열에 포함된 1의 개수를 의미할 수 있다.
상술한 바와 같이, LDPC 코드의 패리티 체크 행렬 H 상에 0이 아닌 원소의 밀도가 낮다. 따라서, LDPC 코드는 낮은 복호 복잡도를 가지면서도 섀넌(Shannon)의 이론적 한계에 근접하는 성능을 갖는다. 이러한 LDPC 코드의 높은 오류 정정 성능과 낮은 복호 복잡도로 인하여, LDPC 코드는 고속 무선 통신에 적합한 특성을 갖는다.
이하에서, 구조화된(structured) LDPC 코드에 대하여 설명된다.
상술한 바와 같이, LDPC 코드의 생성을 위하여 패리티 체크 행렬 H가 이용될 수 있다. H 행렬은 많은 0과 적은 수의 1을 포함한다. H 행렬의 크기는 105 비트 이상의 크기를 가질 수 있으며, H 행렬을 표현하기 위하여 많은 메모리가 소모될 수 있다. 구조화된 LDPC 코드에서, H 행렬의 원소들은, 도 7에 도시된 바와 같이, 일정한 크기의 서브 블록(sub-block)들로 표현될 수 있다. 도 7에서, 행렬 H의 각각의 요소들은 하나의 서브블록을 나타낸다.
IEEE 802.16e 표준 문서에서는, 서브 블록을 하나의 정수 인덱스(index)로 표시함으로써, H 행렬을 표현하기 위한 메모리의 크기를 감소시킬 수 있다. 각각의 서브 블록은, 예를 들어, 일정한 크기의 퍼뮤테이션 행렬(permutation matrix)일 수도 있다.
도 8은 일 예시에 따른 모델 행렬(model matrix)을 도시한다.
예를 들어, IEEE 802.16e 표준 문서를 참조하면, 코드워드의 크기가 2304이고 부호율(code rate)이 2/3인 경우, LDPC 코드 부호화/복호화를 위하여 사용되는 모델 행렬은 도 8과 같다. 모델 행렬은 이하에서 설명되는 적어도 하나의 서브 블록으로 구성된 패리티 검사 행렬을 의미할 수 있다. 또한, 서브 블록은, 이하의 설명에 있어서, 쉬프트 수(shift number)로 지칭될 수 있다. 모델 행렬은 후술하는 방법에 기초하여 패리티 검사 행렬로 확장될 수 있다. 따라서, 특정한 모델 행렬에 기초한 부호화 및 복호화는 해당 모델 행렬의 확장으로부터 생성된 패리티 검사 행렬에 기초한 부호화 및 복호화를 의미한다.
도 8에서, 인덱스 '-1'은 기설정된 크기의 영 행렬(zero matrix)을 나타낸다. 또한, 인덱스 '0'은 기설정된 크기의 단위 행렬(identity matrix)을 나타낸다. '-1' 및 '0'을 제외한 양의 정수의 인덱스는 쉬프트 수를 나타낸다. 예를 들어, '1'의 인덱스로 표현되는 서브 블록은 단위 행렬으로부터 특정한 방향으로 1회 쉬프트된 행렬을 의미할 수 있다.
도 9는 쉬프트 수에 따른 행렬의 변환을 설명하기 위한 도면이다.
예를 들어, 도 9는 서브 블록의 크기가 4행 및 4열을 갖는 경우를 도시한다. 도 9에서, 서브 블록은 단위 행렬으로부터 우측으로 3회 쉬프트 된다. 이 경우, 구조화된 LDPC의 코드의 패리티 체크 행렬은 '3'의 정수 인덱스를 이용하여 서브 블록을 표시할 수 있다.
일반적으로, LDPC 코드의 부호화는 패리티 체크 행렬 H로부터 생성 행렬(Generation Matrix) G를 생성하고, 생성 행렬을 이용하여 정보 비트를 부호화함으로써 수행될 수 있다. 생성 행렬 G의 생성을 위하여, 패리티 체크 행렬 H에 대하여 가우스 소거(Gaussian Reduction)를 수행하여 [PT : I] 형태의 행렬을 구성한다. 정보 비트의 수가 k이고 부호화된 코드워드의 크기가 n인 경우, 행렬 P는 행의 개수가 k이고 열의 개수가 n-k인 행렬이고, I는 크기가 k인 단위 행렬이다.
패리티 체크 행렬 H가 [PT : I] 의 형태를 갖는 경우, 생성 행렬 G는 [I : PT]의 형태를 갖는다. 크기 k비트의 정보 비트가 부호화되는 경우, 부호화된 정보 비트는 1행 k열의 행렬 x로 표현될 수 있다. 이 경우, 코드워드 c는 xG이고, xG는 [x : xP]의 형태를 갖는다. 여기서, x는 정보 부분(또는 시스테매틱 부분(systematic part))을 나타내고, xP는 패리티 부분(parity part)을 나타낸다.
또한, 가우스 소거를 이용하지 않고, H 행렬을 특수한 구조로 설계함으로써, 행렬 G를 유도하지 않고 H 행렬로부터 직접 정보 비트를 부호화할 수도 있다. 상술한 H 행렬과 G 행렬의 구조로부터, 행렬 G와 행렬 H의 전치 행렬의 곱은 0의 값을 갖는다. 이러한 특징과 상술한 정보 비트와 코드워드 사이의 관계를 이용하면, 정보 비트의 뒤에 패리티 비트를 추가함으로써 코드워드가 획득될 수 있다.
도 10은 일 예시에 따른 LDPC 코드 복호화 방법의 흐름도이다.
통신 시스템에서, 부호화된 데이터는 무선 채널을 통과하는 과정에서 잡음을 포함하게 된다. 따라서, 코드워드 c는 수신단에서 잡음을 포함하는 코드워드 c'으로 표현된다. 수신단은 수신신호에 대하여 역다중화 및 복조(demultiplexing and demodulation)를 수행(S1000)하고, 복호 파라미터들을 초기화(S1005)한다. 수신단은 체크 노드(check node)와 변수 노드(variable)를 갱신(S1010, S1015)하고, 신드롬 체크를 수행(S1020)한다. 즉, c'HT가 0인지를 확인함으로써, 복호화 절차가 종료될 수 있다. c'HT가 0인 경우, c'에서 처음 k개의 비트가 정보 비트x로 결정될 수 있다. 만약 c'HT가 0이 아닌 경우, 합곱(sum-product) 알고리즘 등의 복호화 기법에 기초하여 c'HT가 0을 만족하는 c'을 찾음으로써 정보 비트x가 복구될 수 있다.
도 11은 일 예시에 따른 이진 그래프(bipartite graph)를 도시한다.
도 11에서, 좌측의 노드들(v0, v1, …, v11)은 변수 노드(variable node)들을 나타내며, 우측의 노드들(c1, c2, …, c6)은 체크 노드들을 나타낸다. 도 11의 예시에서, 설명을 위하여 변수 노드 v0와 체크 노드 c1을 중심으로 이진 그래프가 도시되었다. 도 11의 이진 그래프의 연결선은 에지(edge)로 호칭될 수 있다. 도 11의 이진 그래프는 Hct로부터 생성될 수 있다. 따라서, 도 11에서, 변수 노드 v0로부터의 에지는 패리티 체크 행렬 H의 1열에 대응하고, 체크 노드 c1으로부터의 에지는 행렬 H의 1행에 대응한다.
상술한 바와 같이, 복호가 성공되기 위하여는, 패리티 체크 행렬H와 코드워드 행렬c의 전치행렬의 곱이 '0'값을 가져야 한다. 따라서, 하나의 체크 노드에 연결된 변수 노드들의 값이 0이어야 한다. 따라서, 도 11의 경우, 체크 노드 c1에 연결된 변수 노드들(v0, v1, v4, v6, v9, v11)의 값의 배타적 논리합(exclusive OR, XOR)의 값이 '0'이어야 한다. 신드롬 체크(syndrome check)는, 각 체크 노드에 연결된 변수 노드들의 값이 배타적 논리합의 값이 0인지를 확인하는 것을 의미한다.
eMBB (enhanced Mobile BroadBand) 통신 환경에서, LDPC 코드가 이용될 수 있다. 예를 들어, LDPC 코드는 데이터 채널에 이용될 수도 있다. 이와 관련하여, CRC 대신에 신드롬 체크를 이용하는 LDPC 코드의 복호화 방법이 제안된 바 있다. 그러나, 반복 복호마다 신드롬 체크가 수행되는 경우, 신드롬 체크를 위하여 변수 노드에 대한 로그 우도비(log likelihood ratio)가 저장된 메모리가 매번 판독(read)될 필요가 있다. 따라서, 메모리 판독으로 인한 전력 소모와 지연이 증가하는 문제가 발생될 수 있다.
합-곱(sum-product) 알고리즘은 용량-접근 코드(capacity-approaching code)(예를 들어, 터보 코드 또는 LDPC 코드)에 대한 표준적 복호화 알고리즘(standard deocoding algorithm)으로서 이용된다. 합-곱 알고리즘을 이용한 복호화 방법으로서는, 신뢰 전파(belief propagation) 알고리즘이 이용된다. 계층적 신뢰 전파 알고리즘(layered belief propagation algorithm)에서, LDPC 코드의 복호를 위하여 합-곱(sum-product) 알고리즘의 체크 노드와 변수 노드에 대한 연산이 순차적으로 프로세싱된다. 따라서, 계층적 신뢰 전달 알고리즘에서, 첫 번째 변수 노드의 확률 값이 첫 번째 변수노드와 연결된 체크 노드들에 전달되고, 각 체크 노드에 전달된 확률 값에 기초하여 계산된 부가정보 값이 각 체크 노드에 연결된 변수 노드들에 전달된다. 전달된 부가정보 값에 기초하여 나머지 변수 노드들에 대한 갱신이 순차적으로 수행된다. 따라서, 전체 변수 노드들의 확률 값이 갱신될 수 있다.
계층적 신뢰 전파 알고리즘의 순차적 변수 노드 갱신으로 인하여, 특정 변수 노드의 갱신에 이미 갱신된 다른 변수 노드의 확률 값이 이용될 수 있다. 그러나, 계층적 신뢰 전파 알고리즘을 이용한 복호화는 복호를 위한 시간이 플루딩 신뢰 전파(flooding belief propagation) 알고리즘에 비하여 코드워드의 길이만큼 증가하는 단점이 있다. 예를 들어, 복호화 시간은 코드워드의 길이 N배만큼 증가될 수 있다.
도 12는 일 예시에 따른 신드롬 체크를 이용한 LDPC 코드 복호화 방법의 흐름도이다.
수신단은 채널로부터 LLR(Log Likelihood Ratio) 값을 계산(S1201)한다. 예를 들어, 수신단은 수신된 입력신호 또는 코드워드의 LLR 값을 계산할 수 있다. 또한, 도 12에는 미도시되었으나, 수신단은 LLR 값을 이용하여 변수 노드들을 초기화할 수 있다. 또한, 수신단은 파라미터 Itr의 값을 0으로 초기화(S1202)한다. 파라미터 Itr은 반복 횟수를 나타내는 파라미터이다. 수신단은 변수 노드들의 값에 기초하여 각각의 체크 노드들을 갱신(S1203)한다. 예를 들어, 패리티 체크 행렬에 의하여 각각의 체크 노드와 연관된 변수 노드들의 값에 기초하여 각각의 체크 노드가 갱신될 수 있다. 또한, 수신단은 각각의 변수 노드들을 갱신(S1204)할 수 있다. 예를 들어, 수신단은 패리티 체크 행렬에 의하여 각각의 변수 노드와 연관된 체크 노드들의 값(예를 들어, 체크 노드의 LLR 값)에 기초하여 각각의 변수 노드들을 갱신할 수 있다.
수신단은 Itr의 값이 기설정된 최댓값 미만인지를 결정(S1205)한다 수신단은, Itr의 값이 최댓값 미만인 경우, 신드롬 체크 성공 여부를 결정(S1206)할 수 있다. 예를 들어, 수신단은 패리티 체크 행렬을 이용하여 체크 노드들에 대한 신드롬 체크를 수행할 수 있다. 예를 들어, 신드롬 체크는 도 9 내지 도 11과 관련하여 상술한 방법에 따라서 수행될 수 있다. 신드롬 체크가 성공된 경우, 복호가 성공된 것으로 간주될 수 있다. 따라서, 복호가 종료될 수 있다. 그러나, 신드롬 체크가 실패한 경우, 수신단은 Itr의 값을 1 증가시키고 단계 S1203 내지 단계 S1205를 반복할 수 있다. 그러나, 반복 횟수가 기설정된 최댓값에 도달하면, 수신단은 복호가 실패한 것으로 간주할 수 있다. 예를 들어, 복호가 실패된 경우, 수신단은 복호를 종료하고 NACK (Negative ACKnowledgement) 및/또는 재송신 요청을 송신단에 송신할 수 있다.
도 13은 일 예시에 따른 신드롬 체크 방법의 흐름도이다.
도 13을 참조하여, 신드롬 체크 방법에 대하여 보다 구체적으로 설명한다. 도 13의 신드롬 체크 방법은 도 12의 단계 S1206에 대응할 수 있다.
먼저, 수신단은 파라미터 N의 값을 1로 초기화(S1301)할 수 있다. 그 후, 수신단은 패리티 체크 행렬의 N번째 열에 연결된 체크 노드들을 갱신(S1302)할 수 있다. 즉, 수신단은 패리티 체크 행렬의 N번째 열에서 1값을 갖는 요소들에 대응하는 체크 노드들의 값을 갱신할 수 있다. 또한, 수신단은 갱신된 체크 노드들에 연결된 변수 노드들을 갱신(S1303)할 수 있다.
그 후, 수신단은 N 값과 패리티 체크 행렬의 열의 수가 동일한지 결정(S1304)할 수 있다. N의 값이 패리티 체크 행렬의 열의 수보다 작은 경우, 수신단은 N의 값을 1 증가(S1305)시키고, 단계 S1302 내지 S1304를 반복할 수 있다. 따라서, 패리티 체크 행렬의 모든 열에 대응하는 체크노드들과 변수 노드들이 순차적으로 갱신될 수 있다.
N의 값이 패리티 체크 행렬의 열의 수와 동일한 경우, 수신단은 패리티 체크 행렬에 대한 신드롬 체크를 수행함으로써 복호 성공 여부를 결정(S1306)할 수 있다. 예를 들어, 수신단은 체크 노드에 대하여 경판정(hard decision)된 LLR 값을 이용하여 신드롬 체크를 수행할 수 있다.
따라서, 도 12 및 도 13과 관련하여 상술한 바와 같이, 매 반복 마다, 전체 노드들의 갱신 및 신드롬 체크가 수행된다. 따라서, 메모리 판독 및 처리를 위한 전력 소모 및 시간이 증가될 수 있다.
이하에서, 전력 소모 및 복호 시간을 감소시킬 수 있는 복호 방법에 대하여 설명된다.
도 14는 일 실시예에 따른 신드롬 체크 방법의 흐름도이다.
도 14의 신드롬 체크 방법은 도 12의 단계 S1206에 대응할 수 있다.
먼저, 수신단은 파라미터 N의 값을 1로 초기화(S1401)할 수 있다. 그 후, 수신단은 패리티 체크 행렬의 N번째 열에 연결된 체크 노드들을 갱신(S1402)할 수 있다. 즉, 수신단은 패리티 체크 행렬의 N번째 열에서 1값을 갖는 요소들에 대응하는 체크 노드들의 값을 갱신할 수 있다. 또한, 수신단은 갱신된 체크 노드들에 연결된 변수 노드들을 갱신(S1403)할 수 있다.
도 13의 예시와 달리, 본 실시예에서는, 변수 노드들의 갱신(S1403) 후에, 수신단이 패리티 체크 행렬에 대한 신드롬 체크 성공 여부를 결정(S1404)한다. 도 13의 예시와 달리, 패리티 체크 행렬 전체에 대한 체크 노드들 및 변수 노드들이 갱신되기 전에, 신드롬 체크가 수행된다. 따라서, 패리티 체크 행렬의 모든 열에 대한 체크 노드들 및 변수 노드들이 갱신되기 전이라도, 수신단은 신드롬 체크가 성공되면, 복호가 성공한 것으로 판단하고 복호를 종료할 수 있다. 따라서, 복호를 위한 시간 및 전력 소모가 감소될 수 있다.
단계 S1404에서 신드롬 체크가 실패하는 경우, 수신단은 N 값과 패리티 체크 행렬의 열의 수가 동일한지 결정(S1405)할 수 있다. N의 값이 패리티 체크 행렬의 열의 수보다 작은 경우, 수신단은 N의 값을 1 증가(S1406)시키고, 단계 S1402 내지 S1405를 반복할 수 있다. 따라서, 패리티 체크 행렬의 모든 열에 대응하는 체크노드들과 변수 노드들이 순차적으로 갱신될 수 있다.
N의 값이 패리티 체크 행렬의 열의 수와 동일한 경우, 수신단은 패리티 체크 행렬에 대한 신드롬 체크를 수행함으로써 복호 성공 여부를 결정(S1407)할 수 있다. 예를 들어, 수신단은 체크 노드에 대하여 경판정(hard decision)된 LLR 값을 이용하여 신드롬 체크를 수행할 수 있다.
도 14에 있어서, 단계 S1407이 생략될 수도 있다. 이미 단계 S1404에서 신드롬 체크가 수행되었기 때문이다. 이 경우, 복호의 성공 여부는 단계 S1404에서 결정될 수 있다.
도 15a 및 15b는 일 실시예에 따른 신드롬 체크 방법을 설명하기 위한 도면이다.
도 15a 및 15b는 일 실시예에 따른 이분(bipartite) 그래프를 도시한다. 도 15a 및 15b에서, 좌측의 노드들은 변수 노드들(v1, v2, v3, v4, 및 v5)을, 우측의 노드들은 체크 노드들(c1, c2, c3, 및 c4)을 나타낸다. 또한, 변수 노드들(v1, v2, v3, v4, 및 v5) 내의 숫자는 현재의 변수 노드의 값을 나타낸다, 또한, 체크 노드들 (c1, c2, c3, 및 c4)에서, 체크 노드들(c1, c2, c3, 및 c4)에 연결된 변수 노드들 (v1, v2, v3, v4, 및 v5)의 값이 XOR 연산됨으로써 신드롬 체크가 수행될 수 있다. 도 15a 및 15b에서의 "+" 는 XOR 연산을 의미할 수 있다.
신드롬 체크를 위하여, 도 13 및 14와 관련하여 상술한 바와 같이, 각 변수 노드와 체크 노드가 순차적으로 갱신된다. 예를 들어, 이전 복호에서 신드록 확인에 실패하여 복호가 재차 수행될 수 있다. 이 경우, 변수 노드 v1부터 순차적으로 갱신될 수 있다. 도 15a는 변수 노드 v1이 갱신되기 전의 이분 그래프를 도시한다. 도 15a에서, 체크 노드 c1에서 변수 노드들 v1, v2, 및 v3의 값이 XOR 연산된다. 도 15a 에서, 체크 노드 c1의 값은 1이다.
도 15b는 첫 번째 변수 노드 v1 및 이에 연결된 체크 노드 c1이 갱신된 상태의 이분 그래프를 도시한다. 순차적 변수 노드의 갱신에 따라서, 도 15b에서, 변수 노드 v1의 값이 0으로 갱신된다. 또한, 갱신된 변수 노드에 연결된 체크 노드들이 갱신된다. 도 15b에서, 변수 노드 v1은 체크 노드 c1에만 연결된다. 따라서, 체크 노드 c1의 값 만이 갱신된다. 도 15b에 도시된 바와 같이, 갱신 후에 모든 체크 노드들(c1, c2, c3, 및 c4)은 0의 값을 갖는다.
상술한 바와 같이, 이전 복호에서 모든 체크 노드들에 대한 신드롬 체크가 수행되었기 때문에, 수신단은 갱신된 체크 노드 외의 나머지 체크 노드들에 대한 신드롬 값을 알 수 있다. 따라서, 수신단은 모든 체크 노드들의 신드롬 값이 0임을 확인하고, 복호를 종료할 수 있다.
예를 들어, 각각의 체크 노드들에 대한 플래그 비트(flag bit)가 설정될 수 있다. 예를 들어, 이전 복호 단계에서 신드롬의 값이 0이 아닌 체크 노드(즉, 신드롬 체크에 실패한 체크 노드)에 대하여 플래그가 설정될 수 있다. 또한, 변수 노드의 갱신에 따라서 해당 체크 노드의 신드롬 값이 0이 된 경우, 대응하는 플래그가 해제될 수 있다. 따라서, 수신단은 플래그가 설정된 체크 노드에 대한 신드롬 값 만을 확인함으로써 모든 체크 노드에 대한 신드롬 값을 확인하지 않고도 신드롬 체크를 수행할 수 있다.
한편, 도 13과 관련하여 상술한 종래의 신드롬 체크 방법은 계속하여 나머지 변수 노드들과 체크 노드들을 갱신한다. 따라서, 종래의 신드롬 체크 방법에 있어서, 수신단은 모든 변수 노드들과 체크 노드들이 갱신된 후에 신드롬 체크를 수행하기 때문에 복호를 위한 시간 및 전력 소모가 증가한다.
도 16a 및 16b는 일 실시예에 따른 계층적 LDPC 코드 복호 방법을 설명하기 위한 도면이다.
도 16a 및 16b는 일 실시예에 따른 이분(bipartite) 그래프를 도시한다. 도 16a 및 16b에서, 좌측의 노드들은 변수 노드들(v1, v2, v3, v4, 및 v5)을, 우측의 노드들은 체크 노드들(c1, c2, c3, 및 c4)을 나타낸다. 또한, 체크 노드들 (c1, c2, c3, 및 c4)에서, 체크 노드들(c1, c2, c3, 및 c4)에 연결된 변수 노드들 (v1, v2, v3, v4, 및 v5)의 값이 XOR 연산됨으로써 신드롬 체크가 수행될 수 있다. 도 16a 및 16b에서의 "+" 는 XOR 연산을 의미할 수 있다.
도 16a에서, 체크 노드를 업데이트 하기 위하여는, 해당 체크 노드에 연결된 모든 변수 노드들에 대응하는 메모리가 판독될 필요가 있다. 도 16a를 참조하여, 변수 노드 v4가 갱신되는 경우, 연결된 체크 노드 c2, c3, 및 c4가 갱신된다. 예를 들어, 갱신된 체크 노드 c4의 신드롬 값을 계산하기 위하여, 변수 노드 v2, v3, v4, 및 v5에 대응하는 메모리가 판독될 필요가 있다.
체크 노드의 갱신을 위한 메모리 판독 횟수를 감소시키기 위하여, 도 16a와는 상이한 신드롬 값을 결정하기 위한 관계식이 이용될 수 있다. 도 16b를 참조하여, 체크노드의 신드롬 값은 결정하기 위한 관계식은 해당 체크 노드 이전의 체크 노드에 연결된 변수 노드를 포함하지 않도록 수정될 수 있다.
도 16b에서, c2’의 신드롬 값은 c1과 겹치지 않는 변수 노드들에 대한 XOR 연산에 의하여 결정된다. 예를 들어, 이전 체크 노드에 연결된 변수 노드들의 집합은 제1 집합으로 호칭될 수 있다. 또한, 이전 체크 노드에 후속하는 체크 노드에 연결된 변수 노드들의 집합은 제2 집합으로 호칭될 수 있다. 이 경우, 수정된 후속 체크 노드의 신드롬 값은 제2 집합에 대한 제1 집합의 차집합에 포함된 변수 노드들에 의하여 결정될 수 있다.
도 16b에서, 체크 노드 c1은 첫 번째 노드이기 때문에, 도 16a와 동일한 관계식을 갖는다. 그러나, 체크 노드 c2’는 도 16a의 관계식으로부터 변수노드 v2가 제거된 관계식을 갖는다.
도 16b를 참조하여, 예를 들어, 노드 변수 v4가 갱신된다. 이 경우, 노드 변수 v4에 연결된 체크 노드 c2’, c3’, 및 c4’가 갱신된다. 도 16b의 수정된 관계식에 따르면, 체크 노드 c2’, c3’, 및 c4’에 연결된 변수노드는 각각, v4, v5, v2, 및 v3이다.
도 17a 및 17b는 다른 실시예에 따른 계층적 LDPC 코드 복호 방법을 설명하기 위한 도면이다.
도 17a 및 17b는 일 실시예에 따른 이분(bipartite) 그래프를 도시한다. 도 17a 및 17b에서, 좌측의 노드들은 변수 노드들(v1, v2, v3, v4, 및 v5)을, 우측의 노드들은 체크 노드들(c1, c2, c3, 및 c4)을 나타낸다. 또한, 체크 노드들 (c1, c2, c3, 및 c4)에서, 체크 노드들(c1, c2, c3, 및 c4)에 연결된 변수 노드들 (v1, v2, v3, v4, 및 v5)의 값이 XOR 연산됨으로써 신드롬 체크가 수행될 수 있다. 도 17a 및 17b에서의 "+" 는 XOR 연산을 의미할 수 있다.
도 17a는 도 16a로부터 체크 노드의 순서가 변경된다. 이는 체크 노드의 신드롬 값을 계산하기 위한 변수 노드의 수를 최소화하기 위함이다. 도 17a의 순서가 변경된 체크 노드에 대하여 도 16b와 관련하여 상술한 관계식 수정 방법이 동일하게 적용될 수 있다. 즉, 변경된 체크 노드들은 자신의 이전에 위치된 체크 노드와 중복되는 변수 노드를 자신의 관계식으로부터 제거할 수 있다.
도 17b는 도 17a와 관련하여 상술한 방법에 따라서 변경된 관계식을 도시한다. 수정된 관계식 c3’의 경우, 어떠한 변수 노드와도 연결되지 않는다. 따라서, 도 17b와 같이 체크 노드에 연결된 변수 노드의 수를 줄임으로서 다음과 같은 효과들이 획득될 수 있다. 상술한 바와 같이, 각 체크 노드의 신드롬 체크를 위하여, 각 신드롬 체크에 연결된 각 변수 노드들의 값이 메모리로부터 판독된다. 따라서, 각 체크 노드에 연결된 변수 노드의 수를 줄임으로써, 메모리 판독 횟수가 감소될 수 있다. 복호기에서의 메모리 판독으로 인한 전력 소모가 상대적으로 높은 비중을 가짐을 고려할 때, 이는 메모리의 전력 소모를 크게 감소시킬 수 있다. 아울러, 메모리 판독 횟수를 줄임으로써, 복호 시간 및 지연이 감소될 수 있다. 또한, 예를 들어, 복호 지연을 감소시키기 위하여 파이프라인(pipeline)이 이용될 수 있다. 파이프라인이 이용되는 경우, 체크 노드에 연결된 변수 노드들의 갱신이 모두 끝난 후에 갱신된 값이 복호에 이용된다. 이 경우, 복호 시간 및 지연이 더욱 감소될 수 있다.
예를 들어, 도 17a와 같은 경우, 변수 노드 v1이 갱신되는 경우, 변수 노드 v1에 연결된 체크 노드 c1에 대한 신드롬 값이 확인될 수 있다. 따라서, 체크 노드 c1에 연결된 변수 노드 v1, v2, 및 v3에 대한 값이 판독된다. 이처럼, 하나의 변수 노드의 갱신은, 해당 변수 노드에 연결된 체크 노드와 연관된 모든 변수 노드들의 값에 대한 판독을 요한다. 도 17a의 경우, 각 변수 노드의 업데이트에 따라서 판독이 요구되는 변수 노드의 목록은 하기의 표 1과 같다.
갱신된변수 노드 | V1 | V2 | V3 | V4 | V5 |
판독된 변수 노드 | V1, V2, V3 | V2, V4V1,V2,V3V2,V3,V4,V5 | V1, V2, V3V2,V3,V4,V5 | V2, V4V2,V3,V4,V5V4,V5 | V2,V3,V4,V5V4,V5 |
도 17b의 경우, 각 변수 노드의 업데이트에 따라서 판독이 요구되는 변수 노드의 목록은 하기의 표 2과 같다.
갱신된변수 노드 | V1 | V2 | V3 | V4 | V5 |
판독된 변수 노드 | V1, V2, V3 | V2, V4V1, V3V4, V5 | V1, V2, V3V4, V5 | V2, V4V2,V3,V4,V5 | V2,V3,V4,V5 |
따라서, 도 17a의 경우, 모든 변수 노드가 업데이트 되는 경우, 신드롬 체크를 위한 변수 노드의 메모리 판독은 33회 요구된다. 반면, 도 17b의 경우, 메모리 판독은 24회 요구된다. 따라서, 메모리 판독 횟수가 크게 감소될 수 있다.
상술한 실시예들에 있어서, 변수 노드의 값은 우도비에 기초하여 결정될 수 있다. 따라서, 최소합(min-sum) 알고리즘(예를 들어, 비터비 알고리즘) 뿐만 아니라, 합-곱(sum-product) 알고리즘에 대하여도 상술한 실시예들이 적용될 수 있다.
도 18은 본 발명의 실시예로서 도 1 내지 도 17b에서 설명한 본 발명의 실시예들이 적용될 수 있는 기기들의 구성을 개략적으로 설명하기 위한 도면이다.
도 18을 참조하여, 본 발명에 따른 기지국 장치(10)는, 수신 모듈(11), 송신모듈(12), 프로세서(13), 메모리(14) 및 복수개의 안테나(15)를 포함할 수 있다. 송신 모듈(12)은 외부 장치(예를 들어, 단말)로의 각종 신호, 데이터 및 정보를 전송할 수 있다. 수신 모듈(11)은 외부 장치(예를 들어, 단말)로부터의 각종 신호, 데이터 및 정보를 수신할 수 있다. 수신 모듈(11)과 송신 모듈(12)은 트랜시버(transceiver)로서 호칭될 수 있다. 프로세서(13)는 기지국 장치(10) 전반의 동작을 제어할 수 있다. 복수개의 안테나(15)는 예를 들어 2-차원 안테나 배치에 따라서 구성될 수 있다.
본 발명의 일례에 따른 기지국 장치(10)의 프로세서(13)는, 본 발명에서 제안하는 예시들에 따라서 채널상태정보를 수신하도록 구성될 수 있다. 기지국 장치(10)의 프로세서(13)는 그 외에도 기지국 장치(10)가 수신한 정보, 외부로 전송할 정보 등을 연산 처리하는 기능을 수행하며, 메모리(14)는 연산 처리된 정보 등을 소정시간 동안 저장할 수 있으며, 버퍼(미도시) 등의 구성요소로 대체될 수 있다.
도 18을 참조하여, 본 발명에 따른 단말 장치(20)는, 수신 모듈(21), 송신 모듈(22), 프로세서(23), 메모리(24) 및 복수개의 안테나(25)를 포함할 수 있다. 복수개의 안테나(25)는 MIMO 송수신을 지원하는 단말 장치를 의미한다. 송신 모듈(22)은 외부 장치(예를 들어, 기지국)로의 각종 신호, 데이터 및 정보를 전송할 수 있다. 수신 모듈(21)은 외부 장치(예를 들어, 기지국)로부터의 각종 신호, 데이터 및 정보를 수신할 수 있다. 수신 모듈(21)과 송신 모듈(22)은 트랜시버(transceiver)로서 호칭될 수 있다. 프로세서(23)는 단말 장치(20) 전반의 동작을 제어할 수 있다.
본 발명의 일례에 따른 단말 장치(20)의 프로세서(23)는, 본 발명에서 제안하는 예시들에 따라서 채널상태정보를 송신하도록 구성될 수 있다. 단말 장치(20)의 프로세서(23)는 그 외에도 단말 장치(20)가 수신한 정보, 외부로 전송할 정보 등을 연산 처리하는 기능을 수행하며, 메모리(24)는 연산 처리된 정보 등을 소정시간 동안 저장할 수 있으며, 버퍼(미도시) 등의 구성요소로 대체될 수 있다.
위와 같은 단말 장치(10)의 구체적인 구성은, 전술한 본 발명의 다양한 실시예에서 설명한 사항들이 독립적으로 적용되거나 또는 2 이상의 실시예가 동시에 적용되도록 구현될 수 있으며, 중복되는 내용은 명확성을 위하여 설명을 생략한다.
또한, 본 발명의 다양한 실시예들을 설명함에 있어서, 하향링크 전송 주체(entity) 또는 상향링크 수신 주체는 주로 기지국을 예로 들어 설명하였고, 하향링크 수신 주체 또는 상향링크 전송 주체는 주로 단말을 예로 들어 설명하지만, 본 발명의 범위가 이에 제한되는 것은 아니다. 예를 들어, 상기 기지국에 대한 설명은 셀, 안테나 포트, 안테나 포트 그룹, RRH, 전송 포인트, 수신 포인트, 액세스 포인트, 중계기 등이 단말로의 하향링크 전송 주체가 되거나 단말로부터의 상향링크 수신 주체가 되는 경우에 동일하게 적용될 수 있다. 또한, 중계기가 단말로의 하향링크 전송 주체가 되거나 단말로부터의 상향링크 수신 주체가 되는 경우, 또는 중계기가 기지국으로의 상향링크 전송 주체가 되거나 기지국으로부터의 하향링크 수신 주체가 되는 경우에도 본 발명의 다양한 실시예를 통하여 설명한 본 발명의 원리가 동일하게 적용될 수도 있다.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
이상에서 설명된 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 통상의 기술자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명의 실시예들은 다양한 무선접속 시스템 및 방송 통신 시스템에 적용될 수 있다. 다양한 무선접속 시스템들의 일례로서, 3GPP(3rd Generation Partnership Project), 3GPP2 및/또는 IEEE 802.xx (Institute of Electrical and Electronic Engineers 802) 시스템 등이 있다. 본 발명의 실시예들은 상기 다양한 무선접속 시스템뿐 아니라, 상기 다양한 무선접속 시스템을 응용한 모든 기술 분야에 적용될 수 있다.
Claims (12)
- 단말의 LDPC (Low Density Parity Check) 코드의 계층적 복호화(layered decoding) 방법으로서,입력 신호로부터 우도비(Log Likelihood) 값을 계산하는 단계;상기 우도비 값에 기초하여 복수의 변수 노드들을 초기화하는 단계; 및복수의 체크 노드들에 대한 신드롬 체크(syndrome check)에 기초하여 상기 입력 신호에 대한 복호의 성공 또는 실패가 결정될 때까지, 패리티 체크 행렬(Parity Check Matrix) 및 상기 복수의 변수 노드들의 값에 기초한 상기 복수의 체크 노드들의 갱신 및 상기 패리티 체크 행렬 및 상기 복수의 체크 노드들의 값에 기초한 상기 복수의 변수 노드들의 갱신을 반복하는 단계를 포함하고,상기 반복하는 단계는, 상기 복수의 변수 노드들을 순차적으로 갱신하고 하나의 변수 노드가 갱신될 때 마다 상기 복수의 체크 노드들에 대한 신드롬 체크를 수행하는 단계를 포함하고,상기 복수의 체크 노드들과 상기 복수의 변수 노드들의 연관은 상기 패리티 체크 행렬에 기초하여 결정되고,상기 복수의 체크 노드들 모두에 대한 신드롬 체크의 값이 0인 경우, 상기 복호의 성공이 결정되는, LDPC 코드의 계층적 복호화 방법.
- 제 1 항에 있어서,상기 반복하는 단계가 기설정된 횟수 이상 반복되면 상기 복호의 실패가 결정되는, LDPC 코드의 계층적 복호화 방법.
- 제 1 항에 있어서,상기 신드롬 체크를 수행하는 단계는 현재 반복에서 갱신된 하나의 변수 노드와 연관된 체크 노드들의 신드롬 체크 값과 이전 반복에서 계산된 나머지 체크 노드들의 신드롬 체크 값을 이용하여 수행되는, LDPC 코드의 계층적 복호화 방법.
- 제 3 항에 있어서,상기 복수의 체크 노드들 각각에 대하여 신드롬 체크 값을 나타내는 1 비트의 플래그 비트(flag bit)가 설정되는, LDPC 코드의 계층적 복호화 방법.
- 제 1 항에 있어서,상기 신드롬 체크를 수행하는 단계는, 상기 복수의 체크 노드들 각각에 연관된 변수 노드들의 값에 대한 배타적 논리합(exclusive OR) 연산을 수행함으로써 신드롬 체크를 수행하는 단계를 포함하는, LDPC 코드의 계층적 복호화 방법.
- 제 1 항에 있어서,상기 복수의 체크 노드들은 제1 체크 노드와 상기 제1 체크 노드에 후속하는 제2 체크 노드를 포함하고,상기 제2 체크 노드의 신드롬 체크는, 상기 제1 체크 노드에 연관된 변수 노드들을 상기 제2 체크 노드에 연관된 변수 노드들로부터 제외한 나머지 변수 노드들에 대한 배타적 논리합(exclusive OR) 연산에 의하여 수행되는, LDPC 코드의 계층적 복호화 방법.
- 무선 통신 시스템의 단말로서,신호를 송수신하는 트랜시버;메모리; 및상기 트랜시버 및 상기 메모리를 제어하는 프로세서를 포함하고,상기 프로세서는:입력 신호로부터 우도비(Log Likelihood) 값을 계산하고,상기 우도비 값에 기초하여 복수의 변수 노드들을 초기화하고,복수의 체크 노드들에 대한 신드롬 체크(syndrome check)에 기초하여 상기 입력 신호에 대한 복호의 성공 또는 실패가 결정될 때까지, 패리티 체크 행렬(Parity Check Matrix) 및 상기 복수의 변수 노드들의 값에 기초한 상기 복수의 체크 노드들의 갱신 및 상기 패리티 체크 행렬 및 상기 복수의 체크 노드들의 값에 기초한 상기 복수의 변수 노드들의 갱신을 반복하도록 더 구성되고,상기 복수의 변수 노드들은 순차적으로 갱신되고,상기 복수의 체크 노드들에 대한 신드롬 체크는, 하나의 변수 노드가 갱신될 때 마다 수행되고,상기 복수의 체크 노드들과 상기 복수의 변수 노드들의 연관은 상기 패리티 체크 행렬에 기초하여 결정되고,상기 복수의 체크 노드들 모두에 대한 신드롬 체크의 값이 0인 경우, 상기 복호의 성공이 결정되는, 단말.
- 제 7 항에 있어서,상기 복수의 변수 노드들의 갱신 및 상기 복수의 체크 노드들에 대한 신드롬 체크의 반복이 기설정된 횟수 이상 반복되면 상기 복호의 실패가 결정되는, 단말.
- 제 7 항에 있어서,상기 프로세서는, 현재 반복에서 갱신된 하나의 변수 노드와 연관된 체크 노드들의 신드롬 체크 값과 이전 반복에서 계산된 나머지 체크 노드들의 신드롬 체크 값을 이용하여 신드롬 체크를 수행하도록 더 구성된, 단말.
- 제 9 항에 있어서,상기 복수의 체크 노드들 각각에 대하여 신드롬 체크 값을 나타내는 1 비트의 플래그 비트(flag bit)가 설정된, 단말.
- 제 7 항에 있어서,상기 신드롬 체크는, 상기 복수의 체크 노드들 각각에 연관된 변수 노드들의 값에 대한 배타적 논리합(exclusive OR) 연산을 수행함으로써 수행되는, 단말.
- 제 7 항에 있어서,상기 복수의 체크 노드들은 제1 체크 노드와 상기 제1 체크 노드에 후속하는 제2 체크 노드를 포함하고,상기 제2 체크 노드의 신드롬 체크는, 상기 제1 체크 노드에 연관된 변수 노드들을 상기 제2 체크 노드에 연관된 변수 노드들로부터 제외한 나머지 변수 노드들에 대한 배타적 논리합(exclusive OR) 연산에 의하여 수행되는, 단말.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019548987A JP6821825B2 (ja) | 2017-03-09 | 2017-03-09 | Ldpc符号の階層的復号の方法及びそのための装置 |
PCT/KR2017/002546 WO2018164297A1 (ko) | 2017-03-09 | 2017-03-09 | Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 |
US16/492,458 US11206042B2 (en) | 2017-03-09 | 2017-03-09 | Layered decoding method for LDPC code and device therefor |
EP17899375.4A EP3595203B1 (en) | 2017-03-09 | 2017-03-09 | Layered decoding method for ldpc code and device therefor |
CN201780088167.XA CN110383727B (zh) | 2017-03-09 | 2017-03-09 | 用于ldpc码的分层解码方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2017/002546 WO2018164297A1 (ko) | 2017-03-09 | 2017-03-09 | Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018164297A1 true WO2018164297A1 (ko) | 2018-09-13 |
Family
ID=63447922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2017/002546 WO2018164297A1 (ko) | 2017-03-09 | 2017-03-09 | Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11206042B2 (ko) |
EP (1) | EP3595203B1 (ko) |
JP (1) | JP6821825B2 (ko) |
CN (1) | CN110383727B (ko) |
WO (1) | WO2018164297A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11955987B2 (en) | 2021-05-25 | 2024-04-09 | Samsung Electronics Co., Ltd. | Neural self-corrected min-sum decoder and an electronic device comprising the decoder |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102525414B1 (ko) * | 2020-07-29 | 2023-04-25 | 한국전자통신연구원 | LDPC(low-density parity-check) 부호의 복호화 방법 및 장치 |
CN114415817B (zh) * | 2020-10-28 | 2024-05-07 | 北京小米移动软件有限公司 | 显示控制方法、电子设备及存储介质 |
US11817952B2 (en) * | 2022-01-31 | 2023-11-14 | Dialog Semiconductor (Uk) Limited | Systems and methods for providing end-to-end data protection |
CN118484152B (zh) * | 2024-07-16 | 2024-09-24 | 济南浪潮数据技术有限公司 | 数据的调用方法及装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011055168A (ja) * | 2009-08-31 | 2011-03-17 | Fujitsu Ltd | 復号化装置及び復号化方法 |
KR20140032524A (ko) * | 2012-08-27 | 2014-03-17 | 삼성전자주식회사 | 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더 |
KR20150067338A (ko) * | 2012-10-11 | 2015-06-17 | 마이크론 테크놀로지, 인크 | 신뢰도 데이터 업데이트 |
KR20160024247A (ko) * | 2014-08-25 | 2016-03-04 | 삼성전자주식회사 | 에러 정정 디코더를 포함하는 스토리지 장치 및 에러 정정 디코더의 동작 방법 |
KR20160113001A (ko) * | 2015-03-20 | 2016-09-28 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005045735A (ja) * | 2003-07-25 | 2005-02-17 | Sony Corp | 符号検出装置及び方法、復号装置及び方法、並びに情報処理装置及び方法 |
KR101147768B1 (ko) * | 2005-12-27 | 2012-05-25 | 엘지전자 주식회사 | 채널 코드를 이용한 복호화 방법 및 장치 |
JP2009100222A (ja) * | 2007-10-16 | 2009-05-07 | Toshiba Corp | 低密度パリティ検査符号の復号装置およびその方法 |
JP5790029B2 (ja) * | 2011-03-01 | 2015-10-07 | ソニー株式会社 | 復号装置、復号方法、およびプログラム |
US8826096B2 (en) * | 2011-12-29 | 2014-09-02 | Korea Advanced Institute Of Science And Technology | Method of decoding LDPC code for producing several different decoders using parity-check matrix of LDPC code and LDPC code system including the same |
KR101968746B1 (ko) * | 2011-12-30 | 2019-04-15 | 삼성전자주식회사 | 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 |
US9141467B2 (en) * | 2012-03-23 | 2015-09-22 | Samsung Electronics Co., Ltd. | Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof |
US9191256B2 (en) | 2012-12-03 | 2015-11-17 | Digital PowerRadio, LLC | Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems |
US8984376B1 (en) | 2013-03-14 | 2015-03-17 | Pmc-Sierra Us, Inc. | System and method for avoiding error mechanisms in layered iterative decoding |
US9136877B1 (en) * | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9977713B2 (en) | 2015-03-20 | 2018-05-22 | SK Hynix Inc. | LDPC decoder, semiconductor memory system and operating method thereof |
US20170134048A1 (en) * | 2015-11-10 | 2017-05-11 | Samsung Electronics Co., Ltd. | Message-passing based decoding using syndrome information, and related methods |
KR102706725B1 (ko) * | 2018-07-03 | 2024-09-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
WO2021049888A1 (en) * | 2019-09-10 | 2021-03-18 | Samsung Electronics Co., Ltd. | Method and apparatus for data decoding in communication or broadcasting system |
-
2017
- 2017-03-09 EP EP17899375.4A patent/EP3595203B1/en active Active
- 2017-03-09 US US16/492,458 patent/US11206042B2/en active Active
- 2017-03-09 CN CN201780088167.XA patent/CN110383727B/zh active Active
- 2017-03-09 JP JP2019548987A patent/JP6821825B2/ja active Active
- 2017-03-09 WO PCT/KR2017/002546 patent/WO2018164297A1/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011055168A (ja) * | 2009-08-31 | 2011-03-17 | Fujitsu Ltd | 復号化装置及び復号化方法 |
KR20140032524A (ko) * | 2012-08-27 | 2014-03-17 | 삼성전자주식회사 | 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더 |
KR20150067338A (ko) * | 2012-10-11 | 2015-06-17 | 마이크론 테크놀로지, 인크 | 신뢰도 데이터 업데이트 |
KR20160024247A (ko) * | 2014-08-25 | 2016-03-04 | 삼성전자주식회사 | 에러 정정 디코더를 포함하는 스토리지 장치 및 에러 정정 디코더의 동작 방법 |
KR20160113001A (ko) * | 2015-03-20 | 2016-09-28 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
Non-Patent Citations (1)
Title |
---|
See also references of EP3595203A4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11955987B2 (en) | 2021-05-25 | 2024-04-09 | Samsung Electronics Co., Ltd. | Neural self-corrected min-sum decoder and an electronic device comprising the decoder |
Also Published As
Publication number | Publication date |
---|---|
CN110383727A (zh) | 2019-10-25 |
CN110383727B (zh) | 2022-01-11 |
US11206042B2 (en) | 2021-12-21 |
EP3595203A4 (en) | 2020-12-02 |
JP6821825B2 (ja) | 2021-01-27 |
JP2020511079A (ja) | 2020-04-09 |
EP3595203B1 (en) | 2021-11-10 |
EP3595203A1 (en) | 2020-01-15 |
US20210218418A1 (en) | 2021-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018062660A1 (ko) | Qc ldpc 코드의 레이트 매칭 방법 및 이를 위한 장치 | |
US10903857B2 (en) | Data retransmission method for polar code, and device therefor | |
WO2018164297A1 (ko) | Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치 | |
WO2018225885A1 (ko) | Sc-ldpc 코드 부호화 방법 및 이를 위한 장치 | |
WO2018128435A2 (ko) | 다중 ldpc 코드에서 ldpc 베이스 코드를 선택하는 방법 및 이를 위한 장치 | |
WO2018143743A1 (ko) | 행-직교 구조(row-orthogonal)를 이용한 LDPC 코드 전송 방법 및 이를 위한 장치 | |
US10116332B2 (en) | Method for configuring circular buffer including outer code parity and apparatus therefor | |
US20170279464A1 (en) | Method of ldpc code encoding for reducing signal overhead and apparatus therefor | |
WO2018079987A1 (ko) | Ldpc 코드의 운송블록 분할 방법 및 이를 위한 장치 | |
WO2017018859A1 (en) | Method and apparatus for channel encoding and channel decoding in a wireless communication system | |
WO2017217715A1 (ko) | 폴라 코드를 위한 프로즌 비트 결정 방법 및 이를 위한 장치 | |
WO2018084617A1 (ko) | Ldpc 코드의 운송블록 분할 방법 및 이를 위한 장치 | |
WO2018226019A1 (ko) | 행-직교 구조를 이용한 ldpc 코드 전송 방법 및 이를 위한 장치 | |
US10312945B2 (en) | Channel coding method using concatenated code structure and apparatus therefor | |
WO2017213329A1 (ko) | 우도비를 갖는 이진소거채널 기반 오류 정정 코드 복호화 방법 및 이를 위한 장치 | |
KR101835341B1 (ko) | Sc-ldpc 코드의 쌍방향 슬라이딩 윈도우 복호 방법 및 이를 위한 장치 | |
WO2018143489A1 (ko) | 오류 정정 효율 개선을 위한 터보 코드 부호화기 및 부호화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17899375 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2019548987 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2017899375 Country of ref document: EP Effective date: 20191009 |