WO2006115164A1 - 復号装置および復号方法 - Google Patents

復号装置および復号方法 Download PDF

Info

Publication number
WO2006115164A1
WO2006115164A1 PCT/JP2006/308300 JP2006308300W WO2006115164A1 WO 2006115164 A1 WO2006115164 A1 WO 2006115164A1 JP 2006308300 W JP2006308300 W JP 2006308300W WO 2006115164 A1 WO2006115164 A1 WO 2006115164A1
Authority
WO
WIPO (PCT)
Prior art keywords
decoding
matrix
unit
calculation
result
Prior art date
Application number
PCT/JP2006/308300
Other languages
English (en)
French (fr)
Inventor
Takashi Yokokawa
Toshiyuki Miyauchi
Osamu Shinya
Original Assignee
Sony Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corporation filed Critical Sony Corporation
Priority to US11/912,481 priority Critical patent/US8086934B2/en
Priority to KR1020077027304A priority patent/KR101164283B1/ko
Priority to EP06745481A priority patent/EP1876716A4/en
Priority to CN2006800229264A priority patent/CN101208864B/zh
Publication of WO2006115164A1 publication Critical patent/WO2006115164A1/ja

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions

Definitions

  • the present invention relates to a decoding apparatus and a decoding method, and more particularly to a decoding apparatus and a decoding method for decoding a code that has been subjected to code encoding using a low density parity check code (LDP C code).
  • LDP C code low density parity check code
  • LDPC codes are becoming clear that performance close to the Shannon limit can be obtained as the code length is increased, like turbo codes and the like.
  • LDPC codes have the property that the minimum distance is proportional to the code length.
  • LDPC codes are characterized by a probable error characteristic and a so-called turbo code and other decoding characteristics. Another advantage is that the error floor phenomenon hardly occurs.
  • LDPC code is a linear code and does not necessarily need to be binary, but here it will be described as being binary.
  • the LDPC code is characterized by the fact that the parity check matrix that defines the LDPC code is sparse.
  • a sparse matrix is composed of a very small number of matrix components ⁇ 1 ".
  • H such a check matrix H
  • the hamming weight (number of “1”) of each column is “3” and the hamming weight of each row is “6”. is there.
  • an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is constant is referred to as a regular LDPC code.
  • the LDPC code defined by the parity check matrix H in which the Hamming weight of each row and each column is not constant is referred to as an irregular LDPC code.
  • Such a code ⁇ using an LDPC code generates a generation matrix G based on a check matrix H, and generates a codeword by multiplying the binary information message by the generation matrix G. It is realized with.
  • the generator matrix G is a kX n matrix (a matrix of k rows and n columns)
  • the check matrix H is a matrix of nk rows and n columns.
  • an n-bit code word is a systematic code that matches a bit string in which k-bit information message u is followed by nk-bit null bits, nk rows and n columns Inspection
  • the portion of nk rows and k columns corresponding to the k-bit information message u of the n-bit codeword c is referred to as an information portion, and nk rows and nk columns of the nk bits corresponding to the parity bits of nk.
  • the part is a parity part
  • the parity part is a lower triangular matrix or an upper triangular matrix
  • the sign of the information message u to the LDPC code can be performed using the check matrix H. .
  • the parity check matrix H force is composed of an information part and a parity part of a lower triangular matrix, and all the elements of the lower triangular part of the parity part are 1.
  • the first bit of the parity bit of codeword c is 1 in the first row of the information part of the check matrix H in the information message u and becomes 1! (Exclusive OR) is the calculated value.
  • the second bit of the normative bit of codeword c corresponds to the element that is 1 in the second row of the information part of check matrix H in information message u. This is the value obtained by calculating the EXOR of the bit to be used and the first bit of the NORITY bit.
  • the third bit of the NORITY bit of codeword c corresponds to the element that is 1 in the third row of the information part of parity check matrix H in information message u. It is the value obtained by calculating the EXOR of the bit and the first and second bits of the NORITY bit.
  • the bit of the normative bit of codeword c is 1 in the i-th row of the information part of parity check matrix H of information message u. It is the value obtained by calculating the EXOR of the bit corresponding to the element and the 1st to 1st bit of the NORITY bit.
  • n-k parity bits are obtained and arranged after the k-bit information message u, whereby an n-bit codeword c can be obtained.
  • LDPC code decoding is an algorithm proposed by Gallager as probabilistic decoding (Probabilistic Decoding), which is called a noble node (also called a message node (message node)). This can be done by a message-passing algorithm based on belief propagation on a so-called Tanner graph consisting of check nodes.
  • the variable node and the check node are also simply referred to as nodes as appropriate.
  • Gallager has proposed algorithm A or algorithm B as a decoding algorithm for LDPC codes.
  • LDPC code decoding is generally performed according to the procedure shown in FIG.
  • the received value is U (u)
  • the message output from the check node is, and the message output from the noble node is V.
  • the message is a real value representing the “0 likelihood” of the value by the so-called log likelihood ratio.
  • the log likelihood of the “0” likelihood of the received value U is expressed as received data u.
  • step S 11 the received value U (u) is received, the message u is initialized to “0”, and the iterative process is performed. Power
  • step S12 a message is obtained by performing the operation shown in equation (1) based on the received value U (u).
  • the message V is obtained, and further, the message u is obtained by performing the calculation shown in Equation (2) based on the message V.
  • V i U 0 i + ⁇ Uj
  • d v in Equation (1) and Equation (2) is an arbitrary value indicating the number of ⁇ 1 "in the vertical direction (row direction) and horizontal direction (column direction) of the parity check matrix H, respectively.
  • Equation (2) the calculation shown in Equation (2) is actually performed by Equation (3) defined by one output for two inputs V and V.
  • Equation (4) A table of the function R (v, ⁇ ) shown in advance is created in advance, and this is continuously expressed as shown in Equation (4) (
  • step S12 the variable k is further incremented by " ⁇ , and the process proceeds to step S13.
  • step S13 it is determined whether or not the variable k is greater than or equal to a predetermined number of iterations ⁇ ⁇ ⁇ ⁇ . If it is determined in step S13 that the variable k is not greater than or equal to N, the process returns to step S12, and thereafter the same processing is repeated.
  • step S13 If it is determined in step S13 that the variable k is equal to or greater than N, the process proceeds to step S14, and a calculation result as a decoding result that is finally output by performing the calculation shown in equation (5). Message V is obtained and output, and the LDPC code decoding process ends.
  • V U 0 i + ⁇ Uj
  • equation (5) is performed using input messages from all branches connected to the variable node.
  • Fig. 5 is an example of a parity check matrix H (parity check matr ix) of a (3, 6) LDPC code (coding rate 1/2, code length 12).
  • the parity check matrix H of the LDPC code can be written using a Tanner graph as shown in FIG.
  • Check nodes and variable nodes correspond to the rows and columns of the check matrix H, respectively.
  • the connection between the check node and the variable node is an edge, which corresponds to 'T of the check matrix H. That is, if the component in the j-th row and i-th column of the parity check matrix H is 1, in FIG.
  • FIG. 6 is a Tanner graph of the parity check matrix H in FIG.
  • a Sum Product Algorithm which is a decoding method of an LDPC code, repeatedly performs a computation of a noble node and a computation of a check node.
  • the message to be calculated is calculated similarly.
  • the check node performs the calculation of Expression (7).
  • the message u corresponding to the branch to be calculated in FIG. 8 is calculated using the remaining messages V 1, 2, 2, 3, 4, and 4 connected to the check node. Messages corresponding to other branches
  • the code represented by the check matrix H of 36 (row) X 108 (column) in FIG. Code (coding rate 2/3, code length 108).
  • the number of 1s in the check matrix H in Fig. 9 is 32.
  • FIG. 10 shows a configuration example of a decoding apparatus that performs one-time decoding of an LDPC code.
  • a message corresponding to one branch is calculated for each clock that operates.
  • the decoding device of FIG. 10 includes two branch memories 100 and 102, one check node calculator 101, one variable node calculator 103, one reception memory 104, and one control unit 105. It consists of.
  • message data is read one by one from the branch memory 100 or 102, and message data corresponding to a desired branch is calculated using the message data. Then, the message data obtained by the calculation is stored in the branch memory 102 or 100 in the subsequent stage.
  • iterative decoding is realized by concatenating a plurality of decoding devices in FIG. 10 that perform this one-time decoding in cascade, or by repeatedly using the decoding device in FIG.
  • the branch memory 100 stores the message D100 supplied from the variable node calculator 103 of the preceding decoding device (not shown) in the order in which the subsequent check node calculator 101 reads the message D100. In the check node calculation phase, the branch memory 100 supplies the message D100 to the check node calculator 101 as the message D101 in the stored order.
  • the check node calculator 101 performs an operation according to the equation (7) using the message D101 supplied from the branch memory 100 based on the control signal D106 supplied from the control unit 105, and is obtained by the operation.
  • the received message D102 is supplied to the branch memory 102 in the subsequent stage.
  • the branch memory 102 stores the message D102 supplied from the previous check node calculator 101 in the order in which the subsequent variable node calculator 103 reads the message D102.
  • the branch memory 102 supplies the message D102 to the noble node calculator 103 as a message D103 in the stored node order in the stored node calculation phase.
  • the variable node calculator 103 is supplied with the control signal D 107 from the control unit 105 and also with the reception data D 104 from the reception memory 104.
  • the noble node calculator 103 uses the message D1 03 supplied from the branch memory 100 and the received data D104 supplied from the reception memory 100, and performs an operation according to the equation (1).
  • the message D105 obtained as a result of the operation is supplied to the branch memory 100 of the decoding device in the subsequent stage (not shown).
  • the reception memory 104 stores LDPC-encoded reception data (LDPC code).
  • the control unit 105 supplies the control signal D106 for controlling the variable node calculation and the control signal D107 for controlling the check node calculation to the check node calculator 101 and the variable node calculator 103, respectively.
  • the control unit 105 supplies the control signal D106 to the check node calculator 101, and when all the branch messages are stored in the branch memory 102.
  • the control signal D1 07 is supplied to the variable node calculator 103.
  • FIG. 11 shows a configuration example of the check node calculator 101 in FIG. 10 that performs check node operations one by one.
  • the check node calculator 101 is represented on the assumption that each message is quantized to a total of 6 bits including the sign bits.
  • a check node operation of the LDPC code represented by the check matrix H in FIG. 9 is performed.
  • a clock ck is supplied to the check node computing unit 101 in FIG. 11, and this clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.
  • the check node calculator 101 in FIG. 11 uses the message D101 supplied from the branch memory 100, for example, based on the 1-bit control signal D106 supplied from the control unit 105, for example, Calculate according to 7).
  • the check node calculator 101 reads one 6-bit message D101 (message V) from the variable node corresponding to each column of the check matrix H one by one, and the absolute value that is its lower bit D122 (
  • the LUT 121 calculates the 5-bit operation result 0123 ( ⁇ (
  • the Calo arithmetic unit 122 adds the operation result 0123 ( ⁇ (
  • register 125 is accumulated ⁇ (
  • the FIFO memory 127 stores the calculation result D123 output by the LUT 121 until a new value D126 ( ⁇ ⁇ (
  • the subtractor 126 subtracts the value D127 supplied from the FIFO memory 127 from the value D126 supplied from the register 125, and supplies the subtraction result to the LUT 128 as a 5-bit subtraction value D128.
  • the subtractor 126 From the integrated value of ⁇ (
  • ) is subtracted, and the subtraction value ( ⁇ ⁇ (
  • the subtracter 126 subtracts the 5-bit value D127 supplied from the FIFO memory 127 from the 9-bit value D126 supplied from the register 125, the subtraction result is a maximum of 9 bits. In contrast, the 5-bit subtraction value D128 is output. Therefore, if the subtraction result obtained by subtracting the 5-bit value D127 supplied from the FIFO memory 127 from the 9-bit value D126 supplied from the register 125 cannot be expressed in 5 bits, that is, the subtraction result is 5 If the maximum value that can be represented in bits (31 (11111 in binary)) is exceeded, the subtractor 126 clips the subtraction result to the maximum value that can be represented in 5 bits and subtracts 5 bits. Outputs the value D128.
  • LUT128 takes the subtraction value D128 ( ⁇ ⁇ (
  • ))) is output.
  • the EXOR circuit 129 calculates the exclusive OR of the 1-bit value D131 stored in the register 130 and the sign bit D121, thereby multiplying the sign bits.
  • 1-bit multiplication result D130 is stored again in register 130. Note that the register 130 is reset when the sign bit D121 of the message D101 from all the branches over one row of the check matrix ⁇ is multiplied.
  • the selector 131 multiplies the value stored in the register 130, that is, the sign bit D121 of the message D101 from all branches over one row of the check matrix H.
  • the register 132 supplies the stored value D132 to the selector 131 and the EXOR circuit 134 as a 1-bit value D133.
  • control signal D106 is ⁇ 0 '' In this case, the selector 131 selects the value D133 supplied from the register 132, outputs it to the register 132, and stores it again. That is, the register 132 supplies the previously stored value to the selector 131 and the EXOR circuit 134 until the sign bit D121 of all branch messages D101 (message V) over one row of the check matrix H is multiplied. .
  • the 1-bit value D134 is supplied to the EXOR circuit 134.
  • the EXOR circuit 134 calculates the exclusive OR of the value D133 supplied from the register 132 and the value D134 supplied from the FIFO memory 133, and divides the value D133 by the value D134 to obtain a 1-bit value.
  • the division result is output as the division value D135.
  • the EXOR circuit 134 calculates the multiplication value of the sign bit D121 (sign (
  • the 5-bit operation result D129 output from the LUT 128 is set to the lower 5 bits, and the 1-bit division value D135 output from the EXOR circuit 134 is set to the most significant bit.
  • the bit is output as message D102 (message u).
  • check node calculator 101 Since the maximum weight of the row of parity check matrix H in Fig. 9 is 9, that is, the maximum number of messages supplied to the check node is 9, check node calculator 101 has nine It has a FIFO memory 127 and a FIFO memory 133 to delay the message ( ⁇ (
  • FIG. 12 shows a configuration example of the noble node calculator 103 of FIG. 10 that performs the noble node calculation one by one.
  • the noble node calculator 103 is represented on the assumption that each message is quantized to a total of 6 bits including the sign bits. Also, in FIG. 12, a noble node calculation of the LDPC code represented by the parity check matrix H in FIG. 9 is performed. In addition, Figure 1 The second noble node computer 103 is supplied with a clock ck, and the clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.
  • variable node calculator 103 in FIG. 12 is supplied from the control unit 105, for example, a message D1 03 read from the branch memory 102 one by one based on a 1-bit control signal D107, and a reception Using the received data D104 read from the memory 104, the calculation is performed according to the equation (1).
  • the noble node calculator 103 reads one 6-bit message D103 (message u) from the check node corresponding to each row of the check matrix H one by one, and the message D103 is added to the adder. 151 and FIFO memory 155. Further, the noble node calculator 103 reads 6-bit received data D104 one by one from the receiving memory 104 and supplies it to the adder 156. Furthermore, the control signal D107 is supplied from the control unit 105 to the variable node calculator 103, and the control signal D107 is supplied to the selector 153.
  • the adder 151 adds the message D103 (message u) and the 9-bit value D151 stored in the register 152 to add up the message D103, and the resulting 9-bit integration. The value is stored again in register 152. Note that when the messages D103 from all branches over one column of the check matrix H are accumulated, the register 152 is reset.
  • the control signal D107 supplied from the control unit 105 Changes from “0” to “1”. For example, when the column weight is “5”, the control signal D107 is “0” from the first to the fourth clock, and “1” at the fifth clock.
  • the register 154 supplies the stored value D151 to the selector 153 and the adder / subtractor 156 as a 9-bit value D152.
  • the selector 153 selects the value D152 supplied from the register 154, outputs it to the register 154, and stores it again. That is, the message D103 (message u) from all branches over one column of the check matrix H is integrated. Until this time, the register 154 supplies the previously accumulated value to the selector 153 and the adder / subtractor 156.
  • the message D103 from the check node is delayed until V j is output, and supplied to the adder / subtracter 156 as a 6-bit value D153.
  • the noble node calculator 103 performs the calculation of Expression (1) to obtain the message v.
  • the Calo subtractor 156 subtracts the 6-bit value D153 supplied from the FIFO memory 155 from the 9-bit value D152 supplied from the register 154, and is supplied from the reception memory 104. Therefore, the calculation result may exceed the minimum value or the maximum value that can be represented by the 6-bit message D105. If the operation result is less than the minimum value that can be represented by the 6-bit message D105, the adder / subtracter 156 clips to the minimum value, and the operation result can be represented by the 6-bit message D105. If the maximum value is exceeded, the maximum value is clipped.
  • a control signal is given from control section 105 according to the weight of parity check matrix H.
  • the branch memories 100 and 102 As long as the FIFO memory 127, 1 33, 155 of the check node calculator 101 and variable node calculator 103 is sufficient, the LDP C code of various check matrices H can be decoded by changing only the control signal. .
  • the check node calculation and the variable node calculation are alternately performed. That is, in the decoding device of FIG. 10, using the result of the check node calculation performed by the check node calculator 101, the variable node calculation is performed by the variable node calculator 103, and the result of the variable node calculation performed by the noble node calculator 103. Check node calculation is performed by the check node calculator 101.
  • the second frame Multiple noble node operations and check node operations can be performed simultaneously, such as performing check node operations and variable node operations in the third frame.
  • the decoding device since it is only necessary to calculate 323 branches while 108 codes are received, the decoding device only needs to operate at a frequency approximately 3 ( ⁇ 323/108) times the reception frequency. It is fully feasible.
  • the circuit scale is simply 50 times that of the decoding device of FIG.
  • FIG. 13 shows an exemplary configuration of a decoding apparatus that decodes a code (coding rate 2/3, code length 108) represented by parity check matrix H in FIG.
  • the decoding device includes one reception memory 205, two branch switching devices 200 and 203, two branch memories 202 and 206, and 36 check node calculators 201
  • the branch memory 206 is a message of the variable node calculators 204 to 204 in the preceding stage.
  • D206 to D206 are all stored at the same time, and at the next time (next clock timing)
  • a message D200 (D200 to D200) is supplied to the replacement device 200.
  • Branch replacement
  • the device 200 determines the order of the messages D200 to D200 supplied from the branch memory 206.
  • check node calculator 201 Reordering according to the check matrix H in Fig. 9, check node calculator 201
  • the check node calculators 201 to 201 are messages supplied from the branch switching apparatus 200.
  • Page D201 to D201 are used to calculate according to Equation (7), and the result of the calculation is obtained.
  • Messages D202 through D202 are supplied to the branch memory 202.
  • the branch memory 202 is a message to which the previous check node calculators 201 to 201 are also supplied.
  • D202 to D202 are used as messages D203 to D203, and the next branch replacement device 20 is used.
  • the branch switching device 203 receives messages D203 to D203 supplied from the branch memory 202.
  • the noble node calculators 204 to 204 receive the memory supplied from the branch switching device 203.
  • Steps D206 to D206 are supplied to the branch memory 206 at the next stage.
  • m is the same as the check node calculator 101 of FIG.
  • the LUTs 221 to 221 have the absolute values D222 to D222 (
  • Subtracters 223 to 223 are supplied. Also, LUT221 to 221 ⁇ , calculation
  • the calculator 222 calculates the sum of the values of the operation results D224 to D224 ( ⁇ (
  • the subtracters 223 to 223 are connected to the calculation result D225 from the calculation result D225.
  • the subtracters 223 to 223 receive messages from all branches.
  • LUTs 224 to 224 are subtracted values D227 to 5-bit calculation result obtained by calculating ⁇ ⁇ ⁇ (
  • the EXOR circuit 225 performs exclusive OR of all the sign bits D223 to D223.
  • the EXOR circuits 226 to 226 include a multiplication value D226 and a sign bit D22.
  • Result D228 to D228 are set to the lower 5 bits, and EXOR circuits 226 to 22
  • the check node calculator 201 is represented on the assumption that each message is quantized to a total of 6 bits including the sign bits. Also, the circuit in Figure 14 is a single m
  • the decoding device in FIG. 13 performs the check as shown in FIG. Have 36 node calculators 201!
  • check node calculator 201 in Fig. 14 calculates 9 messages simultaneously m
  • the weights of the check matrix H in FIG. 9 to be processed here are 8 for the first row and 9 for the second to 36th rows, that is, the message supplied to the check node. Since there are 1 case with 8 and 29 cases with 9, the check node calculator 2101 can simultaneously calculate 8 messages similar to the circuit in Figure 14.
  • the remaining check node calculators 201 to 201 are identical to the circuit of FIG.
  • variable node calculator 204 in FIG. 15 is the same as the variable node calculator 103 in FIG.
  • variable node calculator 204 in FIG. 1 That is, the variable node calculator 204 in FIG.
  • variable node calculator 204 is supplied to the adder 251.
  • variable node calculator 204 is supplied to the adder 251.
  • the received data D271 is supplied from the receiving memory 205, and the received data D271 is supplied to the calorie subtracters 252 to 252.
  • the Karo Arithmetic 251 adds all the messages D251 to D251 (message u) and adds 9 bits.
  • the calorie subtracters 252 to 252 can receive the message D from the added value D252.
  • D271 (u) is added, and the 6-bit addition values D253 to D253 are added to the NORMAL node operation.
  • the noble node calculator 204 performs the operation of the equation (1) to obtain the message.
  • FIG. 15 shows the novel node calculator 204 on the assumption that each message is quantized to a total of 6 bits including the sign bits.
  • Figure 15 shows one circuit.
  • variable node This corresponds to the variable node.
  • the decoding device in FIG. 13 has 108 circuits as shown in FIG. Have.
  • variable node calculator 204 in Fig. 15 calculates five messages simultaneously. can do.
  • the check matrix H in Fig. 9 to be processed here has 18 columns, 54 columns, 35 columns, and 1 column with weights of 5, 3, 2, and 1, respectively.
  • 18 of the devices 204 to 204 have the same configuration as the circuit of FIG.
  • the four, 35, and 1 circuits have the same circuit configuration that can calculate 3, 2, and 1 messages at the same time as the circuit of Fig. 15.
  • the decoding apparatus in FIG. 13 performs message operations corresponding to all branches of the Tanner graph in parallel, the circuit scale increases in proportion to the code length.
  • the decoding device in FIG. 13 is configured as a device that decodes an LDPC code having a certain code length, a certain coding rate, and a certain check matrix H, in the decoding device, other code lengths, It is difficult to decode LDPC codes with other coding rates and other check matrices H. That is, like the decoding device of FIG. 10, the decoding device of FIG. 13 is difficult to cope with decoding various codes only by changing the control signal, and has high code dependency.
  • Non-Patent Document 2 In addition to the decoding devices in Fig. 10 and Fig. 13, an implementation method for simultaneously calculating four messages, one by one or all, is described in Non-Patent Document 2, for example. In this case, there is a problem that memory access control is difficult because it is generally easy to avoid simultaneous reading or writing from different addresses in the memory. [0120] In order to solve this problem, a code and a decoding device having high affinity for the implementation of a partially parallel decoder rather than a random code have been reported (for example, see Non-Patent Documents 3 and 4). However, the realization method of the decoding device described in Non-Patent Document 3 corresponds only to a specific code, and it is not possible to decode codes of various code lengths and coding rates with one decoder. Have difficulty.
  • a 6 X 6 unit matrix a matrix in which one or more of the unit matrices are zero (hereinafter referred to as a quasi-unit matrix as appropriate), a unit matrix or a quasi-unit A sum of two or more of a unit matrix, a cyclic shift (hereinafter referred to as a shift matrix), a unit matrix, a quasi-unit matrix, or a shift matrix (hereinafter referred to as a sum matrix as appropriate).
  • LDPC code with a parity check matrix H that can be represented by a combination of 6 X 6 zero matrices, or an LDPC code with a parity check matrix H that can be represented by a combination of these matrices by row or column replacement
  • a decoding device that can decode even codes with different code lengths and coding rates (see, for example, Patent Document 1).
  • parity check matrix H in FIG. 16 represents the parity check matrix H shown in FIG. 9 with an interval in the unit of a 6 ⁇ 6 matrix.
  • 6 ⁇ 6 unit matrix, quasi-unit matrix, shift matrix, sum matrix, and zero matrix constituting the parity check matrix H in FIG.
  • FIG. 17 is a block diagram showing an example of the configuration of decoding apparatus 400 that decodes the LDPC code represented by parity check matrix H in FIG.
  • the decoding device 400 includes a decoding intermediate result storage memory 410, a cyclic shift circuit 411, six calculators 412 to a calculator 412, a calculation unit 412, and a decoding intermediate result storage memory 41.
  • the calculation unit 412 performs the first calculation according to the above-described equation (7) and the following equation (8), and the decoding intermediate result u that is the result of the first calculation is u.
  • the calculation unit 415 performs the second calculation according to the above-described equation (5), and supplies the decoding intermediate result V, which is the result of the second calculation, to the decoding intermediate result storage memory 410 for storage.
  • u in Equation (8) is a check from the branch from which an i-column message of the parity check matrix H is to be obtained.
  • the value V used in the above equation (7) is derived from the intermediate decoding result V obtained as a result of the second operation according to equation (5), and the parity check matrix H Subtracting the decoding intermediate result u of the check node operation of the branching force for which the message is to be obtained from the decoding intermediate result u of the check node operation from the branch corresponding to 1 of each row in the i column of .
  • Equation (7) the first calculation result according to Equation (7) and Equation (8) is described as decoding intermediate result u.
  • This decoding intermediate result u is the check node calculation of Equation (7).
  • the result is equal to u.
  • V in Expression (5) obtained by the second calculation is the variable node calculation result in Expression (1).
  • V is the result of adding the check node operation result u from the branch for which the message is to be obtained, only one is obtained for one column (one variable node) of the check matrix H.
  • calculation unit 412 detects the result of the second calculation by calculation unit 415. ⁇ ⁇ ⁇ ⁇ ⁇ Perform the first operation using the decoding intermediate result v corresponding to the column of matrix H, and the message of the branch corresponding to 1 of each row of i column of check matrix H obtained as a result of the operation (each check In the decoding intermediate result storage memory 413, the decoding intermediate result u of the check node calculation of the branch force of the message (which is output to each branch by the first node) is stored.
  • the capacity of the decoding intermediate result storage memory 413 is equal to the value obtained by multiplying the number of 1 (the number of all branches) of the parity check matrix H by the number of quantization bits, as in the case of storing the result of the check node operation. Obviously, the capacity of the decoding intermediate result storage memory 413 is equal to the value obtained by multiplying the number of 1 (the number of all branches) of the parity check matrix H by the number of quantization bits, as in the case of storing the result of the check node operation. Become.
  • calculation unit 415 uses decoding intermediate result u corresponding to “1” of each row and received value u in the example of parity check matrix H that is the result of the first calculation by calculation unit 412 to 2 is performed, and the decoding intermediate result V corresponding to the i column obtained as a result of the calculation is stored in the decoding intermediate result storage memory 410. Accordingly, the capacity required for the decoding intermediate result storage memory 410 is less than the number of check matrix H columns smaller than the number of “1” in the check matrix H, that is, the code length of the LCPC code and the quantization bit of the decoding intermediate result V The value is multiplied by the number.
  • the decoding intermediate result storage memory 410 is supplied with six decoding intermediate results D415 corresponding to the six columns of the check matrix H, which is the result of the second calculation by the calculation unit 415, from the calculation unit 415.
  • the decoding intermediate result storage memory 410 also stores (stores) the six decoding intermediate results D415 supplied from the calculation unit 415 in order of the first address force.
  • the first address of the decoding intermediate result storage memory 410 stores the decoding intermediate result V of the first column force sixth column among the decoding intermediate results corresponding to the columns of the check matrix H. .
  • the second address stores the decoding result V of the seventh column and the twelfth column
  • the third address also stores the decoding of the thirteenth column and the eighteenth column.
  • the result is stored.
  • the decoding middle result V for the 103rd column and the 108th column is stored in increments of 6, and the fourth address is also stored up to the 18th address, for a total of 108 decoding intermediate results V.
  • the number of words in the decoding result storage memory 410 is 108, which is the number of columns of the check matrix H (code length of the LDPC code) in FIG.
  • the result of dividing by 6 is the number of intermediate decoding results.
  • the decoding intermediate result storage memory 410 uses the decoding intermediate result D415 already stored in the row of the check matrix H corresponding to the decoding intermediate result u to be obtained by the calculation unit 412 in the subsequent stage.
  • Six decoding intermediate results V that are 1 ′′ are simultaneously read and supplied to the cyclic shift circuit 411 as decoding intermediate results D41 0.
  • the decryption intermediate result storage memory 410 is composed of, for example, a single-port RAM that can simultaneously read and write six decryption intermediate results.
  • the decoding intermediate result storage memory 410 stores the decoding intermediate result D414 corresponding to the column calculated by the second calculation of the calculation unit 415, so that it is stored in the decoding intermediate result storage memory 410.
  • the amount of data, that is, the storage capacity required for the decoding intermediate result storage memory 410 is the product of the number of quantization bits of the decoding intermediate result D414 and the number of columns of the check matrix H (code length of the LDPC code). Value.
  • the cyclic shift circuit 411 is also supplied with the decoding intermediate result storage memory 410 and six decoding intermediate results D410, and from the control unit 417, 1 of the check matrix H corresponding to the intermediate decoding result D410 However, a control signal D619 representing information (Matrix data) indicating how many cyclic shifts of the original unit matrix in the parity check matrix H is supplied.
  • the cyclic shift circuit 611 performs a cyclic shift by rearranging the six decoding results D410 based on the control signal D619, and supplies the result to the calculation unit 412 as a decoding intermediate result D411.
  • the calculation unit 412 includes six calculators 412 to 412.
  • the calculator 412 has a cycle
  • the shift circuit 411 is supplied with six decoding intermediate results D411 (v) obtained as a result of the second calculation by the calculation unit 415, and from the decoding intermediate result storage memory 413, the previous calculators 412 to 412. 6 decoding intermediate results obtained as a result of the first calculation by D413 (u)
  • the calculation unit 412 is controlled by the control unit 417.
  • the signal D419 is supplied and the control signal D419 is supplied to the calculators 412 to 412.
  • the control signal D419 is a signal common to the six calculators 412 to 412.
  • the calculators 412 to 412 respectively use the decoding intermediate result D411 and the decoding intermediate result D413.
  • the calculation unit 412 calculates 6 of the check matrix H obtained as a result of the calculation by the calculators 412 to 412. Six decoding intermediate results D412 corresponding to each one are supplied to the decoding intermediate result storage memory 413.
  • the decoding intermediate result storage memory 413 is composed of, for example, two single-port RAM cards that can simultaneously read and write six decoding intermediate results.
  • Six decoding intermediate results D412 are supplied from the calculation unit 412 to the decoding intermediate result storage memory 413, and a control signal D420 for controlling the reading / writing of the decoding intermediate result 413 is also supplied to the control unit 417.
  • the decoding intermediate result storage memory 413 stores the six decoding intermediate results D412 supplied from the calculation unit 412 together based on the control signal D420, and simultaneously stores the six decoding intermediate results already stored. D412 is read out, and is supplied to the calculation unit 412 and the cyclic shift circuit 414 as a decoding intermediate result D413. That is, the decoding intermediate result storage memory 413 simultaneously reads the decoding intermediate result D413 supplied to the calculation unit 412 and the cyclic shift circuit 414 and writes the decoding intermediate result D412 supplied from the calculation unit 412. .
  • the decoding intermediate result storage memory 413 stores the first calculation of the branch force corresponding to 1 in each row of i columns of the parity check matrix H calculated by the first calculation of the calculation unit 412. Since the decoding intermediate result D 412 is stored, the amount of data stored in the decoding intermediate result storage memory 413, that is, the storage capacity required for the decoding intermediate result storage memory 413 is the quantization of the decoding intermediate result D 412. It is the product of the number of bits and the number of 1 in the check matrix H
  • the cyclic shift circuit 414 is supplied with six decoding intermediate results D413 (decoding intermediate results u) from the decoding intermediate result storage memory 413, and from the control unit 417 to the decoding intermediate result D413.
  • a control signal D421 representing information (Matrix data) indicating how many 1s of the corresponding parity check matrix H is the cyclic shift of the original unit matrix in the parity check matrix H is supplied.
  • the cyclic shift circuit 414 performs a cyclic shift for rearranging the six decoding results D413 based on the control signal D421, and supplies the result to the calculation unit 415 as a decoding result D414.
  • the calculation unit 415 includes six calculators 415 to 415.
  • the calculation unit 415 includes a cycle
  • Six intermediate decoding results D414 are supplied from the shift circuit 414 and supplied to the respective decoding intermediate results D414 1S calculators 415 to 415. Also, the calculation unit 415 receives
  • Six received data D417 (LDPC code) is supplied from the memory 417, and the received data D41 7 is supplied to each of the calculators 415-415. Furthermore, the calculation unit 417 has a control function.
  • the control signal D422 is supplied from the unit 417, and the control signal D422 is supplied to the calculators 415 to 415.
  • the control signal D422 is a signal common to the six calculators 417 to 417.
  • Calculators 415 to 415 use decoding result D414 and received data D417, respectively.
  • the calculation unit 415 is the middle of six decryptions obtained as a result of the second calculation of the calculators 415 to 415.
  • the result D415 (v) is supplied to the decoding intermediate result storage memory 410.
  • the calculation unit 415 outputs six decoding intermediate results D415 obtained as a result of the operation as final decoding results.
  • the reception memory 416 receives the received LLR (log likelihood ratio) data (received data) D41 6 which is the value of 0 of the sign bit calculated from the received value (code bit) D416 received through the communication channel. Is stored.
  • LLR log likelihood ratio
  • the first column force of the parity check matrix H also corresponds to the first column of the reception memory 416 up to the sixth column.
  • Received data D416 is stored.
  • the second address stores received data D416 corresponding to the seventh column power of the parity check matrix H up to the twelfth column, and the third address of the thirteenth column power of the parity check matrix H is also stored in the third address.
  • the received data D416 corresponding to the 18th column is stored. Thereafter, similarly, received data D416 corresponding to the fourth address force up to the 18th address and the 19th column power of the parity check matrix H up to the 108th column are stored six by six.
  • the reception memory 616 reads the received data D416 already stored six by six in the order required for the variable node calculation, and supplies the received data D417 to the calculation unit 415.
  • the reception memory 416 is also configured with, for example, a single port RAM capable of simultaneously reading and writing six pieces of received data.
  • the amount of data stored in the reception memory 416 that is, the storage capacity required for the reception memory 315, is a product of the code length of the LDPC code and the number of quantization bits of the reception data D416. is there.
  • the number of words in the reception memory 416 is 108, which is the code length of the LDPC code, that is, 108 which is the number of columns of the check matrix H.
  • Received data D417 is 18 divided by 6.
  • the control unit 417 controls the control signal D418 by supplying the control signal D418 to the cyclic shift circuit 411 and the control signal D419 to the calculation unit 412.
  • the control unit 417 controls the control signal D420 by supplying the control signal D420 to the decoding intermediate result storage memory 413, the control signal D421 to the cyclic shift circuit 414, and the control signal D421 to the calculation unit 415, respectively. To do.
  • decryption-in-progress result storage memory 410, cyclic shift circuit 411, calculation unit 412, decoding-in-progress result storage memory 413, cyclic shift circuit 414, calculation unit 415 The decoding device 400 can perform one decoding. In the decoding device 400, after decoding is repeated a predetermined number of times, a decoding intermediate result D415, which is the result of the second calculation by the calculation unit 415, is output as the final decoding result.
  • FIG. 18 is a block diagram showing a configuration example of the calculator 412 of the calculation unit 412 in FIG.
  • the calculator 412 is described. However, the calculator 412 to the calculator 412 are described.
  • each decoding intermediate result (u) obtained as a result of the first calculation by the previous calculation unit 412 is quantized to a total of 6 bits (bits) including the sign bit, and the calculation unit 415 By second dv
  • the clock ck is supplied to a necessary block. Each block performs processing in synchronization with the clock ck.
  • the calculator 412 in FIG. 18 performs recovery based on the control signal D419 supplied from the control unit 417.
  • the first calculation is performed according to Eqs. (7) and (8) using the intermediate decoding results D411 (V) read one by one.
  • the calculator 412 has six 9-bit values supplied from the cyclic shift circuit 411.
  • decoding intermediate result D411 (v)
  • one decoding intermediate result D411 is supplied, and the result of the previous calculation by the calculation unit 412 is supplied from the decoding intermediate result storage memory 413.
  • the six 6-bit decoding intermediate results D413 (u) one decoding intermediate result D413 that is the result of the previous calculation by the calculation unit 412 is supplied, and the 9-bit decoding intermediate result D411 (V ) And 6-bit decoding result D413 (u) force is supplied to the subtractor 431.
  • the arithmetic unit 412 is supplied with a control signal D419 from the control unit 417, and the control signal D419 is transmitted to the calculator 412.
  • the subtracter 431 subtracts the 6-bit decoding intermediate result D413 (u) from the 9-bit decoding intermediate result D411 (v), and outputs the 6-bit subtraction value D431. That is, the subtractor 431 performs an operation according to the equation (8) and outputs a subtraction value D431 (V) that is the result of the operation.
  • the LUT432 calculates the 5-bit calculation result D434 ( ⁇ (
  • the Calo arithmetic unit 433 adds the operation result D434 ( ⁇ (
  • Decoding halfway result D411 over one row of parity check matrix H is read one by one, and when integrated value obtained by integrating operation result D434 for one row is stored in register 434, supplied from control unit 417
  • the controlled signal D419 changes from 0 to 1. For example, when the row weight is “9”, the control signal D419 becomes “0” from the 1st clock to the 8th clock and becomes “1” at the 9th clock.
  • the selector 435 determines that the value stored in the register 434, that is, the decoding intermediate result D411 corresponding to all 1s in one row of the check matrix H (decoding intermediate result). Select the 9-bit value D435 ( ⁇ ⁇ (
  • the selector 435 selects the value D437 supplied from the register 436, outputs it to the register 436, and stores it again.
  • register 436 is accumulated last time until ⁇ (
  • ) is supplied to selector 435 and calorie calculator 437.
  • the FIFO memory 438 operates until the new value D437 ( ⁇ ⁇ (
  • the subtractor 437 subtracts the value D438 supplied from the FIFO memory 438 from the value D437 supplied from the register 436, and supplies the subtraction result to the LUT 439 as a 5-bit subtraction value D439.
  • the subtractor 437 calculates the branch to be obtained from the integrated value of ⁇ (
  • )) from l to i d— 1 is supplied to LUT439 as subtraction value D439.
  • the EXOR circuit 440 calculates the exclusive OR of the 1-bit value D442 stored in the register 441 and the sign bit D432, thereby multiplying the sign bits.
  • 1-bit multiplication result D441 is stored again in register 441. Note that the register 441 is reset when the sign bit D 432 obtained from the decoding intermediate result D411 corresponding to all 1s in one row of the check matrix ⁇ is multiplied.
  • decoding intermediate result D411 (decoding intermediate result V) force corresponding to all 1s in one row of the check matrix H is stored in the register 443 until the previously stored code bit D432 is multiplied. 442 and EXOR circuit 445.
  • the EXOR circuit 445 calculates the exclusive OR of the value D444 supplied from the register 443 and the value D445 supplied from the FIFO memory 444, and divides the value D444 by the value D445 to obtain a 1-bit value. The division result is output as the division value D446.
  • the 5-bit calculation result D440 output from the LUT439 is converted into the lower 5 bits.
  • the calculator 412 performs the calculations of the equations (7) and (8), and the decoding result u
  • the calculator 412 has nine calculation results D434 (p
  • FIFO memory 438 that delays ⁇ (
  • the delay power in the FIFO memory 438 and FIFO memory 444 is reduced to the value of that row weight.
  • FIG. 19 is a block diagram showing a configuration example of the calculator 415 of the calculation unit 415 in FIG.
  • calculator 415 will be described, but calculator 415 to calculator 415
  • each decoding intermediate result (u) obtained as a result of the first calculation by the calculation unit 412 is quantized to a total of 6 bits including the sign bit, the calculator 415 is
  • Each block performs processing in synchronization with the clock ck.
  • the calculator 415 in FIG. 19 receives the control signal D422 supplied from the control unit 417.
  • Received data D417 (received value u) read one by one from the credit memory 416 and cyclic
  • the second calculation according to the equation (5) is performed using the decoding intermediate result D414 (u) read one by one from the shift circuit 414.
  • the cyclic shift circuit 414 applies 1 to each row of the check matrix H.
  • Corresponding 6-bit decoding result D414 (decoding result u) is read one by one, and the decoding result D414 is supplied to adder 471.
  • Calculator 415 for reception
  • the 6-bit received data D417 is read from the memory 416 one by one and supplied to the adder 475. Further, the control signal D422 is supplied from the control unit 417 to the calculator 415, and
  • the control signal D422 is supplied to the selector 473.
  • Adder 471 adds decoding intermediate result D414 by adding decoding intermediate result D414 (decoding intermediate result u) and 9-bit value D471 stored in register 472, and obtains the result. Store the 9-bit accumulated value in register 472 again. When the decoding intermediate results D414 corresponding to all 1s over one column of the check matrix H are accumulated, the register 472 is reset.
  • the decoding intermediate result D414 over one column of the check matrix H is read one by one and the value obtained by integrating the decoding intermediate result D414 for one column is stored in the register 472, it is supplied from the control unit 417.
  • the control signal D422 changes from “0” to “1”.
  • the column weight is “5”
  • the control signal D422 becomes “0” from the 1st to the 4th clock and becomes “1” at the 5th clock.
  • the register 474 supplies the stored value D471 to the selector 471 and the adder 475 as a 9-bit value D472.
  • the selector 473 selects the value D472 supplied to the register 474 and outputs it to the register 474 to be stored again. That is, until the decoding intermediate result D414 (decoding intermediate result u) from all the branches over one column of the check matrix H is integrated, the register 474 supplies the previously integrated value to the selector 473 and the adder 475. To do.
  • the Karo arithmetic unit 475 adds the 9-bit value D472 and the 6-bit received data D417 supplied from the reception memory 416, and obtains the 6-bit value obtained as a result of the intermediate decoding result D415 ( Output as decryption result V).
  • the calculator 415 performs the calculation of the equation (5), and obtains the decoding intermediate result V.
  • the calculator 415 calculates 6-bit decryption j 1
  • the output of calculator 415 is a 9-bit value j 1
  • FIG. 20 is a block diagram showing a configuration example of the decoding intermediate result storage memory 413 of FIG.
  • Decoding halfway result storage memory 413 is composed of switches 501 and 504, and two halfway decoding result storage RAMs 502 and 503, which are two single-port RAMs.
  • the decoding intermediate result storage RAMs 502 and 503 store the decoding intermediate result D412 obtained as a result of the first calculation by the calculation unit 412 and supplied via the switch 501.
  • the first address power of the decoding intermediate result storage RAM 502 is the ninth address, and the intermediate decoding results corresponding to 1 from the first row to the sixth row of the parity check matrix H in FIG. D412 (D501) Force Each row is stored in the horizontal (column direction) format (ignoring 0).
  • the first address of the decoding intermediate result storage RAM 502 is the component matrix of the check matrix H of FIG. 1) to (6,6) 6 x 6 unit matrix 1 corresponding to unity 1
  • the second address has (1,25) to (6,30) which is the component matrix of parity check matrix H in Fig. 16.
  • Shift matrix (shift matrix obtained by cyclically shifting 5 unit matrices of 6 X 6) to the right by 1) is stored.
  • the third address force and the eighth address store data in association with the configuration matrix of the check matrix H in FIG.
  • the 9th address has a shift matrix from (1,102) to (6,108) of the parity check matrix H (1 in the first row of the 6 X 6 unit matrix is replaced with 0 and left by one) Stores data corresponding to 1 in a cyclically shifted shift matrix.
  • the shift matrix from (1,102) to (6,108) of parity check matrix H in FIG. 16 there is no 1 in the first row, so no data is stored at the ninth address.
  • the data corresponding to 1 from the 13th to the 18th rows of the parity check matrix H in Fig. 16 is stored in the 10th address force of the RAM 502 for storing the decoding intermediate results as the 18th address. That is, at the 10th address, there is data corresponding to 1 of the matrix obtained by cyclically shifting the 6 ⁇ 6 unit matrix from (13,7) to (18,12) of the check matrix H by five in the right direction.
  • the 11th address is the sum matrix of (13, 13) to (18, 18) of the check matrix H (6 X 6 unit matrix and 6 X 6 unit matrix).
  • data corresponding to 1 of the unit matrix constituting the sum matrix of (13, 13) to (18, 18) of the check matrix H is stored at the 12th address.
  • data for the 13th address power and the 18th address are stored in association with the check matrix H.
  • the configuration matrix is a unit matrix of PX P with a weight of 1, a quasi-unit matrix with one or more of its components being 0, Or a unit matrix, quasi-unit matrix, or shift matrix whose weight is 1 when expressed in the form of the sum of multiple shift matrices obtained by cyclically shifting a unit matrix or quasi-unit matrix
  • the data corresponding to position 1 (the result of decoding a message corresponding to a branch belonging to a unit matrix, quasi-unit matrix, or shift matrix) is stored at the same address.
  • the 19th address force and the 27th address of the decoding intermediate result storage RAM 502 are associated with the parity check matrix H in FIG. 16, and the 25th row force also corresponds to 1 up to the 30th row. Is stored. That is, the number of words in the decoding intermediate result storage RAM 502 is 27.
  • Decoding halfway result storage RAM 503 first address force
  • the ninth address has a decoding middle result D412 (D502) corresponding to 1 in the seventh row force of the check matrix H in FIG. Force
  • Each row is stored in the horizontal (column) direction (ignoring 0).
  • the first address of the decoding intermediate result storage RAM 503 has a sum matrix of (7,1) to (12,6) (6 X 6 unit matrix to the right) Corresponding to 1 of the first shift matrix that forms the sum of the first shift matrix that is cyclically shifted by 2 and the second shift matrix that is cyclically shifted by 4 to the right. Data corresponding to 1 of the second shift matrix that constitutes the sum matrix of (7,1) to (12,6), which is the component matrix of the check matrix H, is stored at the second address . In the following, the third address force and the ninth address are also stored in correspondence with the configuration matrix of the check matrix H.
  • the data corresponding to 1 in the 19th row force of the parity check matrix H in FIG. The data corresponding to 1 in the 31st row force of the parity check matrix H up to the 36th row is stored in the 27th address in association with the parity check matrix H in FIG. That is, the number of words in the decoding intermediate result storage RAM 503 is 27.
  • the number of words in the decoding intermediate result storage RAMs 502 and 503 is 27. That is, the number of words is multiplied by 9 of the row weight of the check matrix H and 36 of the number of rows, and the multiplication result (the number of 1s of the check matrix H) is read simultaneously. The value is divided by the number 6 and further divided by 2 which is the number of decoding intermediate result storage RAMs in the decoding intermediate result storage memory 413.
  • a decoding intermediate result D412 ( Uj ) obtained as a result of the first calculation is supplied from the calculation unit 412, and the decoding intermediate result D412 is a predetermined one of the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503.
  • the decoding intermediate result D412 (u) obtained as a result of the first calculation by the previous calculation unit 412 is read out and output to the calculation unit 412.
  • the decoding intermediate result storage memory 413 does not write to the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503, and either one of the predetermined RAMs is stored.
  • the intermediate decoding result is read out from the address of, and supplied to the cyclic shift circuit 414.
  • the decoding unit 412 is supplied with six intermediate decoding results D412 from the calculation unit 412, and the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503 is used as a memory for writing the intermediate decoding result D412.
  • the control signal D420 indicating one of the selections is the control unit 4
  • switch 501 stores the decoding result
  • One of the RAM 502 for decoding and the RAM 503 for storing the decoding result is selected, and six decoding results D412 are supplied to the selected one.
  • the decoding intermediate result storage RAM 502 is supplied with six decoding intermediate results D 412 from the switch 501 as decoding intermediate results D 501 and a control signal D 420 representing an address from the control unit 417. Decoding halfway result storage RAM 502 is represented by control signal D420.
  • decoding intermediate result storage RAM 502 scans the address indicated by the control signal D420.
  • the decoding intermediate result storage RAM 503 is supplied with six decoding intermediate results D412 from the switch 501 as decoding intermediate results D502 and a control signal D420 representing an address from the control unit 417. Decoding halfway result storage RAM 503 is represented by control signal D420.
  • decoding intermediate result storage RAM 503 is stored at the address indicated by the control signal D420.
  • the switch 504 Stores (writes) the six decryption intermediate results D502 supplied from the switch 501.
  • the switch 504 is supplied with the decoding intermediate result D503 from the decoding intermediate result storage RAM 502 or a certain! / ⁇ is supplied with the decoding intermediate result D504 from the decoding intermediate result storage RAM 503.
  • the control unit 417 supplies a control signal D420 indicating selection of either the decoding intermediate result storage RAM 502 or the decoding intermediate result storage RAM 503.
  • Switch 504 controls
  • RAM502 for storing intermediate decoding results or for storing intermediate decoding results
  • One of the RAMs 503 is selected, and the six decoding intermediate results supplied from the selected one are supplied to the calculation unit 412 and the cyclic shift circuit 414 as six decoding intermediate results D413.
  • FIG. 21 is a timing chart for explaining the reading and writing operations of the decoding intermediate result storage RAM 502 and the decoding intermediate result storage RAM 503 of the decoding intermediate result storage memory 413.
  • the horizontal axis represents time (t).
  • the reading of data corresponding to 1 of the constituent matrix of the number i described in the circle of FIG. 22 is represented as Ri, and the writing (storage) of the data is represented as Wi.
  • the decoding intermediate result storage RAM 502 when the calculation unit 412 performs the first operation, the decoding intermediate result storage RAM 502 has already stored based on the control signal D420.
  • Decoding halfway result D501 is read out nine times (for nine clocks) six times per clock (RO to R8 in the figure), and supplied to calculation section 412 via switch 504. That is, since the row weight of the parity check matrix H in FIG. 16 is 9, there are nine intermediate decoding results corresponding to 1 in each row of the parity check matrix H, and the intermediate decoding result storage RAM 502 has the Six decryption results D501 corresponding to 1 up to the sixth line are read out nine times in units of six.
  • the decoding intermediate result storage RAM 503 already stores data based on the control signal D420.
  • the power of the 7th row of the parity check matrix H stored at the same address is also set to 1 until the 12th row.
  • the corresponding decoding intermediate result D502 is read out nine times in units of six (R9 to R17), and supplied to the calculation unit 412 via the switch 504. [0211]
  • calculators 412 to 412 or 415 to 415 that calculate nodes one by one
  • calculators 412 through 412 have 9
  • the calculators 412 to 412 further cause a delay of about 3 clocks.
  • a degree of pipeline is required.
  • the time required for the calculation unit 412 to perform the first operation that is, after the decoding intermediate result D413 is read from the decoding intermediate result storage memory 413, the decoding intermediate result D413 is used.
  • the time until the decoding intermediate result D412 obtained as a result of the operation 1 is supplied to the decoding intermediate result storage memory 413 is a time T1 corresponding to 12 clocks.
  • the first reading (RO) of the decoding intermediate result D503 from the decoding intermediate result storage RAM 502 is started, and after the time T1 time, the calculation unit 412 sends the decoding intermediate result storage memory 413 to the decoding intermediate result storage memory 413.
  • Supply of six intermediate decoding results D412 corresponding to 1 from the first row to the sixth row of the parity check matrix H obtained as a result of the operation of 1 is started.
  • the decoding intermediate result D413 is supplied to the decoding intermediate result storage RAM 502 as the decoding intermediate result D501 via the switch 501, and the decoding intermediate result storage RAM 502 has already received the decoding intermediate result D501 based on the control signal D420.
  • the circuit scale of the computer 412 is particularly large.
  • the circuit size of the calculation unit 412 is 20% of the entire decoding device 400
  • the memory of the decoding device 400 (for example, the decoding intermediate result storage memory 410, the decoding intermediate result) It may reach 60% of the logic circuit excluding storage memory (413, reception memory 416, etc.).
  • Non-Patent Document 1 C. Howland and A. Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes, Symposium on Circuits and Systems, 2001
  • Non-Patent Document 2 E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam, "VLSI Architectures for iterative Decoders in Magnetic Recording Channels", IEEE Transactions on Magnetics, Vol. 37, No. 2, March 2001
  • Non-Patent Literature 3 T.Zhang, KKParhi ,, Joint (3, k)-regular LDPC Code and decoder / encoder design, "IEEE Transactions on Signal Processing, Vol.52, No.4, pp.1065- 1079, Apri 1 2004
  • Patent Document 1 JP 2004-364233 A
  • the present invention has been made in view of such a situation, and enables decoding of an LDPC code to be accurately performed while suppressing a large-scale error of the apparatus.
  • the decoding apparatus of the present invention includes a first calculation unit that performs a check node operation for decoding an LDPC code, and a second calculation unit that performs a variable node operation for decoding an LDPC code. Whether only the first arithmetic unit performs N (N is a positive integer less than P) check nodes at the same time, or only the second arithmetic unit performs N variable node operations at the same time, Alternatively, the first arithmetic unit simultaneously performs calculations on N check nodes, and the second arithmetic unit simultaneously performs calculations on N novel nodes.
  • the decoding method of the present invention includes a first calculation step for calculating a check node for decoding an LDPC code, and a second calculation step for calculating a noble node for decoding an LDPC code. Only the processing of the first computation step performs N (N is a positive integer less than P) check nodes at the same time, or the processing of the second computation step only performs the computation of variable nodes. It is characterized in that it is performed at the same time or the processing of the first computation step performs computation of N check nodes at the same time, and the processing power of the second computation step computes the number of novel nodes at the same time.
  • N N is a positive integer less than P
  • N variable node operations at the same time N variable node operations at the same time or N check node operations at the same time
  • N check node operations at the same time calculate N variable nodes at the same time.
  • decoding of an LDPC code can be accurately performed while suppressing a large scale error of the apparatus.
  • FIG. 1 is a diagram for explaining a parity check matrix H of an LDPC code.
  • FIG. 2 is a diagram illustrating a parity check matrix H in which a parity part is a lower triangular matrix.
  • FIG. 3 is a flowchart for explaining a decoding procedure of an LDPC code.
  • FIG. 4 is a diagram for explaining a message flow.
  • FIG. 5 is a diagram illustrating an example of a parity check matrix H of an LDPC code.
  • FIG. 6 shows a Tanner graph of the check matrix H.
  • FIG. 7 is a diagram showing a variable node.
  • FIG. 8 shows a check node
  • FIG. 9 is a diagram illustrating an example of a parity check matrix H of an LDPC code.
  • FIG. 10 is a block diagram showing a configuration example of an LDPC code decoding apparatus that performs node operations one by one.
  • FIG. 11 is a block diagram illustrating a configuration example of the check node calculator of FIG.
  • FIG. 12 is a block diagram illustrating a configuration example of the noble node calculator of FIG.
  • FIG. 13 is a block diagram showing a configuration example of an LDPC code decoding apparatus that performs all node operations simultaneously.
  • FIG. 14 is a block diagram showing a configuration example of a check node calculator of FIG.
  • FIG. 15 is a block diagram showing a configuration example of the noble node calculator of FIG.
  • FIG. 16 shows a parity check matrix H divided into 6 ⁇ 6 units.
  • FIG. 17 is a block diagram illustrating a configuration example of a decoding device that performs six node operations simultaneously.
  • FIG. 18 is a block diagram showing a configuration example of the check node calculator of FIG.
  • FIG. 19 is a block diagram showing a configuration example of the noble node calculator of FIG.
  • FIG. 20 is a block diagram illustrating a configuration example of a decoding intermediate result storage memory in FIG.
  • FIG. 21 is a timing chart for explaining the operation of the decoding intermediate result storage RAM of FIG.
  • FIG. 22 is a diagram showing the position of the configuration matrix corresponding to the decoding result.
  • ⁇ 23 It is a block diagram showing a configuration example of a first embodiment of a decoding device to which the present invention is applied.
  • FIG. 24 is a block diagram illustrating a configuration example of a decoding intermediate result storage memory in FIG. 23.
  • 25 is a timing chart for explaining the operation of the decoding intermediate result storage RAM in FIG. 24.
  • FIG. 26 is a diagram illustrating a position of a configuration matrix corresponding to a decoding intermediate result.
  • FIG. 27 is a flowchart for explaining decoding processing of the decoding device in FIG.
  • FIG. 28 is a block diagram illustrating a configuration example of a second embodiment of a decoding device to which the present invention has been applied.
  • FIG. 29 is a block diagram showing a configuration example of a reception memory in FIG. 28.
  • FIG. 30 is a block diagram showing a configuration example of a decoding intermediate result storage memory in FIG. 28.
  • FIG. 30 is a block diagram showing a configuration example of a decoding intermediate result storage memory in FIG. 28.
  • FIG. 31 is a timing chart for explaining the operation of the reception memory and the decoding result storage memory.
  • FIG. 32 is a block diagram illustrating a configuration example of a third embodiment of a decoding device to which the present invention has been applied.
  • FIG. 33 is a block diagram illustrating a configuration example of a decoding intermediate result storage memory in FIG. 32.
  • FIG. 34 is a block diagram illustrating a configuration example of a fourth embodiment of a decoding device to which the present invention has been applied.
  • FIG. 35 is a flowchart for explaining decoding processing of the decoding device in FIG. 34;
  • FIG. 23 shows a configuration example of a first embodiment of a decoding device to which the present invention for decoding an LDPC code represented by parity check matrix H in FIG. 16 is applied.
  • the decoding apparatus 1000 in Fig. 23 includes a cyclic shift circuit 414, a calculation unit 415, a reception memory 416, a cyclic shift circuit 1101, a calculation unit 1102 including three calculators 1102 to 1102.
  • a decoding intermediate result storage memory 1103, a decoding intermediate result storage memory 1104, and a control unit 1105 are included. Note that the same components as those in FIG. 17 are denoted by the same reference numerals.
  • the cyclic shift circuit 1101 is supplied with six decoding intermediate results D1104 from the decoding intermediate result storage memory 1104 and six reception data D417 (LDPC code) from the reception memory 416.
  • the cyclic shift circuit 1101 cyclically shifts, from the control unit 1105, one of the parity check matrix H corresponding to the decoding intermediate result D1 104 to the parity check matrix H by some number of the original unit matrix, etc.
  • the control signal D1106 that represents the information (Matrix data) indicating whether the data is one of the six decoding results D1104 or the received data D417 is selected.
  • Cyclic shift circuit 1101 selects six decoding intermediate results D1104 or received data D417 based on control signal D1106, and performs cyclic shift for rearrangement.
  • the cyclic shift circuit 1101 performs the upper half (1st to 3rd rows) or the lower half (4th row) of the result of cyclic shifting the six decoding results D1104 or the received data D417. To the calculation unit 1102 as the decryption result D1101.
  • the calculation unit 1102 includes three calculators 1102 to 1102.
  • the calculator 1102 has a cycle
  • Three shift intermediate results DllOl (v) obtained as a result of the second calculation by the calculation unit 415 are supplied from the clock shift circuit 1101 and the previous calculators 1102 to 1102 from the decoding intermediate result storage memory 1103 Upper half or lower half of the configuration matrix obtained as a result of the first operation
  • the calculation unit 1102 is supplied with the control unit 1105 force control signal D1107, and the control signal D 1107 is supplied to the calculators 1102 to 1102. Note that the control signal D1107 has three calculations.
  • This signal is common to the devices 1102 to 1102.
  • Calculators 1102 to 1102 are configured in the same manner as the calculator 412 shown in FIG.
  • the first calculation is performed according to equations (7) and (8).
  • D1102 (v) is obtained.
  • the calculation unit 1102 is based on the calculators 1102 to 1102.
  • the decoding intermediate result storage memory 1103 is configured with, for example, four single-port RAMs capable of simultaneously reading and writing three decoding intermediate results D1102. Three decoding intermediate results D1102 are supplied from the calculation unit 1102 to the decoding intermediate result storage memory 1103, and a control signal D110 8 is supplied from the control unit 1105 to control reading and writing of the decoding intermediate result storage memory 1103. Is done.
  • the decoding intermediate result storage memory 1103 based on the control signal D1108, the three decoding intermediate results D1102 supplied from the calculation unit 1102 are stored together, and at the same time, the three already stored The decoding intermediate result D1102 is read out and supplied to the calculation unit 1102 and the cyclic shift circuit 414 as the decoding intermediate result D1103. That is, reading of the decoding intermediate result D1103 supplied to the calculation unit 1102 and the cyclic shift circuit 414 and writing of the decoding intermediate result D1102 supplied to the calculation unit 1103 are performed with respect to the decoding intermediate result storage memory 1103. At the same time.
  • the decoding intermediate result storage memory 1103 the first calculation of the branch force corresponding to 1 in each row of i columns of the check matrix H calculated by the first calculation of the calculation unit 1102 is performed. Since the decoding intermediate result D 1102 is stored, the amount of data stored in the decoding intermediate result storage memory 1103, that is, the storage capacity required for the decoding intermediate result storage memory 1103, is determined by the decoding intermediate result D1102. This is the product of the number of quantization bits and the number of 1 in the check matrix H.
  • the cyclic shift circuit 414, the calculation unit 415, and the reception memory 416 are the same as those shown in FIG.
  • the cyclic shift circuit 414 cyclically shifts six decoding intermediate results D1103 supplied from the decoding intermediate result storage memory 1103 three by three, and supplies six decoding intermediate results D414 to the calculation unit 415.
  • decoding intermediate result storage memory 110 In the decoding intermediate result storage memory 1104, six decoding results D 1105 from the cyclic shift circuit 1101 are stored in order of the first address, and are already stored from the decoding intermediate result storage memory 1104. A decoding result D1105 is output.
  • the decoding intermediate result storage memory 1104 includes six check matrices H, which are the results of the second calculation supplied from the calculation unit 415. Six intermediate decoding results D415 corresponding to the column are stored in order of the first address.
  • the first address of the decoding intermediate result storage memory 1104 contains the first column of the decoding intermediate results corresponding to the columns of the check matrix H as in the decoding intermediate result storage memory 410 of FIG. Power Decryption result V in the sixth column is stored.
  • the second address stores the decoding intermediate result V of the twelfth column for the seventh column, and the decoding intermediate result of the thirteenth column and the eighteenth column is stored at the third address. Is done.
  • the decoding halfway results V up to the 108th column are stored in increments of 6, and the fourth address is also stored up to the 18th address.
  • a total of 108 decoding intermediate results V are stored in the middle of decoding. Stored in the memory 1104.
  • the number of words in the decoding intermediate result storage memory 1104 is the number of decoding intermediate results simultaneously reading and writing 108, which is the number of columns of the parity check matrix H (code length of the LDPC code) in FIG. Divide by 6 to get 18.
  • decoding intermediate result storage memory 1104 From the decoding intermediate result storage memory 1104, from the decoding intermediate result D415 that has already been stored, in the row of the check matrix H corresponding to the decoding intermediate result u to be obtained by the subsequent calculation unit 1102 " Six decoding intermediate results V that are 1 "are simultaneously read and supplied to the cyclic shift circuit 1101 as decoding intermediate results D1104.
  • the decoding intermediate result storage memory 1104 is composed of, for example, a single-port RAM that can simultaneously read and write six decoding intermediate results.
  • the decoding intermediate result storage memory 1104 stores the decoding intermediate result D4 15 corresponding to the column calculated by the second calculation of the calculation unit 415, so that it is stored in the decoding intermediate result storage memory 1104.
  • the amount of data, that is, the storage capacity required for the decoding intermediate result storage memory 1104 is the product of the number of quantization bits of the decoding intermediate result D415 and the number of columns of the check matrix H (code length of the LDPC code). is there.
  • the control unit 1105 controls the control signal D1106 by supplying the control signal D1106 to the cyclic shift circuit 1101 and the control signal D1107 to the calculation unit 1102, respectively.
  • the control unit 1105 controls the control signal D1108 by supplying the control signal D1108 to the decoding intermediate result storage memory 1103, the control signal D421 to the cyclic shift circuit 414, and the control signal D422 to the calculation unit 415, respectively.
  • Cyclic shift circuit 1101, calculation unit 1102, decoding intermediate result storage memory 1103, cyclic shift circuit 414, calculation unit 415, decoding intermediate result storage memory 1104 in this order By making a round, the decoding apparatus 1000 can perform one decoding. In decoding apparatus 1000, for example, after decoding is repeated a predetermined number of times, decoding intermediate result D1104, which is the result of the second calculation by calculation unit 415, is output as the final decoding result.
  • FIG. 24 is a block diagram showing a configuration example of the decoding intermediate result storage memory 1103 of FIG.
  • the decoding intermediate result storage memory 1103 includes switches 1201 and 1206, and decoding intermediate result storage RAMs 1202 to 1205, which are four single-port RAMs.
  • Decoding intermediate result storage RAMs 1202 to 1205 store the decoding intermediate result D1102 obtained as a result of the first calculation by the calculation unit 1102 and supplied via the switch 1201.
  • the first address power of the decoding intermediate result storage RAM 1202 includes the decoding intermediate result corresponding to 1 from the first row to the third row of the parity check matrix H in FIG. D1102 (D1201) is stored in the row (column direction) packed in each row (ignoring 0)
  • the first address of the decoding intermediate result storage RAM 1202 is the component matrix of the check matrix H in FIG.
  • the second address is the component matrix of the check matrix H in Fig. 16
  • the third address force and the eighth address store the data in association with the upper half of the matrix of the check matrix H in FIG.
  • Corresponding data is stored, and the 11th address is the sum matrix of (13,13) to (18,18) of the check matrix H (6 X 6 unit matrix and 6 X 6 unit matrix to the right.
  • the 19th address power and the 27th address of the RAM 1202 for storing intermediate decoding results are associated with the parity check matrix H in FIG. 16, and the 25th line power also corresponds to 1 row up to the 27th line. Data is stored. That is, the number of words in the decoding intermediate result storage RAM 1202 is 27.
  • the first address of the RAM1203 for storing intermediate decoding results 1203 also includes a decoding intermediate result D1102 corresponding to the first address from the fourth to sixth rows of the parity check matrix H in FIG. D120 2) is stored in a form packed horizontally in each row.
  • the first address of the RAM1203 for storing the decoding result is stored under the 6 ⁇ 6 unit matrix from (1,1) to (6,6), which is the configuration matrix of the parity check matrix H in FIG.
  • Half of the data (corresponding to the 4th to 6th rows) corresponding to “1 ⁇ ” is the shift matrix (1,25) to (6,30) which is the component matrix of the check matrix H in FIG.
  • the 9th address is stored in correspondence with the lower half of the matrix of the check matrix H in Fig. 16.
  • the 10th address of the RAM1203 for storing the decoding result is also stored in the 18th address in the 18th address in the parity check matrix H of Fig. 16 from the 16th line to the 18th line. . That is, at the 10th address, the lower half of the matrix obtained by cyclically shifting the 6 ⁇ 6 unit matrix from (13,7) to (18,12) of the check matrix H by 5 to the right.
  • the corresponding data is stored, and at the 11th address, the sum matrix (6 ⁇ 6 unit matrix and (13,13) to (18,18) of the check matrix H , 1 ⁇ 1 ⁇ corresponding to the lower half of the shift matrix that forms the sum matrix of the 6 ⁇ 6 unit matrix with the shift matrix shifted by one cyclic shift to the right.
  • the 12th address stores data corresponding to “1 ⁇ ” in the lower half of the unit matrix constituting the sum matrix of (13,13) to (18,18) of the check matrix H. For both the address power and the 18th address, data is stored in association with the lower half of the check matrix H component matrix.
  • the 19th address power and the 27th address of the RAM1203 for storing the intermediate result of decoding correspond to the parity check matrix H in FIG. 16, and the power on the 28th line also corresponds to 1 row up to the 30th line. Data is stored. That is, the number of words in the decoding intermediate result storage RAM 1203 is 27.
  • Decoding halfway result storage RAM 1204 1st address power
  • the 9th address contains the halfway decoding result D1102 (D1203) corresponding to 1 from the 7th row to the 9th row of the check matrix H in FIG. Are stored in a form packed horizontally in each row.
  • the first address of the decoding intermediate result storage RAM 1204 has a sum matrix of (7,1) to (12,6) (6 X 6 unit matrix to the right)
  • the upper half of the first shift matrix (sum matrix that is the sum of the first shift matrix that is cyclically shifted by 2 and the second shift matrix that is cyclically shifted by 4 to the right) (7th to 9th rows)
  • the data corresponding to “1 ⁇ ” is the second address that forms the sum matrix of (7,1) to (12,6), which is the component matrix of the check matrix H, at the second address.
  • the data corresponding to the upper half of the shift matrix is stored in the upper half of the shift matrix.
  • the third address force and the ninth address are also stored in correspondence with the upper half of the check matrix H.
  • the 10th address power of the RAM1204 for storing the decoding result is also the 18th address, and the corresponding data up to the 19th line of the parity check matrix H in FIG.
  • the address 27th address the data corresponding to the 1st row force of the 31st row of the check matrix H up to the 33rd row is stored in association with the check matrix H in FIG. In other words, the number of words in the decoding intermediate result storage RAM 1204 is 27.
  • Decoding midway result storage RAM 1205 1st address power
  • the 9th address contains the 10th row power of the check matrix H in Fig. 16 up to the 12th row "Decoration midway result D1102 (D1204) , Each row is stored horizontally packed.
  • the first address of the decoding intermediate result storage RAM 1205 includes the component matrix of the check matrix H. (7,1) to (12,6) sum matrix (the first shift matrix that is a cyclic shift of two 6 ⁇ 6 unit matrices to the right, and four cyclics to the right).
  • the corresponding data in the lower half (10th to 12th rows) of the first shift matrix that constitutes the sum matrix of the shifted second shift matrix is the check matrix at the second address.
  • the corresponding data in the lower half of the second shift matrix that constitutes the sum matrix of (7,1) to (12,6), which is the component matrix of H, is stored.
  • the 9th address stores data corresponding to the lower half of the check matrix H component matrix.
  • the 10th address power and the 18th address of the decoding intermediate result storage RAM 1205 include the data corresponding to the 1st row of the 22nd row force of the parity check matrix H in FIG. 16 up to the 24th row.
  • the 19th address and the 27th address store the data corresponding to the 1st row of the 34th row of the parity check matrix H up to the 36th row in association with the parity check matrix H of FIG. That is, the number of words in the decoding intermediate result storage RAM 1205 is 27.
  • the number of words in the decoding intermediate result storage RAMs 1202 to 1205 is 27. That is, the number of words is obtained by multiplying the row weight 9 of the parity check matrix H by the number 36 of the rows, and simultaneously decoding the multiplication result (the number of ⁇ 1 "of the parity check matrix H) during decoding.
  • the result D120 1 is divided by 3, which is the number of the decoding intermediate result storage memory 1103 in the decoding intermediate result storage memory 1103, and divided by four.
  • the decoding intermediate result D 1102 (u) obtained as a result of the first calculation is supplied to the decoding result storage memory 1103.
  • the decoding intermediate result D1102 is written to any one of the decoding intermediate result storage RAMs 1202 to 1205, and at the same time, the other one is obtained as a result of the first calculation by the previous calculation unit 1102.
  • Decoding halfway result D1102 is read and output to calculation unit 1102 as decoding halfway result D1103.
  • the calculation unit 415 performs the second calculation, the decoding intermediate result storage memory 1103 does not write to the decoding intermediate result storage RAMs 1202 to 1205, and V, the displacement force, stores one decoding intermediate result.
  • the predetermined address of RAM 1202 to 1205 is also read out decoding result D1102 and becomes decoding result D1103. To the cyclic shift circuit 414.
  • the switch 1201 is supplied with three intermediate decoding results D1102 from the calculation unit 1102, and stores any of the decoding intermediate result storage RAMs 1202 to 1205 as a memory for writing the intermediate decoding result D1102.
  • a control signal D1108 indicating selection is supplied from the control unit 1105.
  • the switch 1201 stores a decoding intermediate result storage RAM 1202
  • the decoding intermediate result storage RAMs 1202 to 1205 are supplied with three decoding intermediate results D1102 from the switch 1201 as decoding intermediate results D1201 to D1204, respectively, and a control signal D1108 representing an address from the control unit 1105. Through D1108. Decoding halfway
  • the fruit storage RAMs 1202 to 1205 are respectively addressed by the control signals D1108 to D1108.
  • the three intermediate decoding results D1201 to D1204 obtained as a result of the first calculation by the previous calculation unit 1102 already stored in the network are read and supplied to the switch 1206 as intermediate decoding results D1205 to D1208. Further, the RAM 1202 to 1205 for storing the decoding result is supplied with the switch 1201 to the addresses indicated by the control signals D1108 to D1108, respectively.
  • the switch 1206 includes a decoding intermediate result D1205 from the decoding intermediate result storage RAM 1202, a decoding intermediate result D1206 from the decoding intermediate result storage RAM 1203, a decoding intermediate result D1207 from the decoding intermediate result storage RAM 1204, or Decoding intermediate result D1208 is supplied from the decoding intermediate result storage RAM 1205.
  • control unit 1105 supplies a control signal D1108 indicating selection of any one of the decoding intermediate result storage RAMs 1202 to 1205.
  • Switch 1206 is based on control signal D1108.
  • FIG. 25 is a timing chart for explaining the reading and writing operations of the decoding intermediate result storage RAM 1202 to the decoding intermediate result storage RAM 1205 of the decoding intermediate result storage memory 1103. [0273]
  • the horizontal axis represents time (t).
  • the decoding intermediate result storage RAM 1202 already stores the result based on the control signal D1108.
  • decoding intermediate results D1201 obtained as a result of the first calculation of the previous calculation unit 1102, “1” from the first row to the third row of the parity check matrix H stored at the same address.
  • Corresponding decryption result D120KD1205) is read out 9 times (9 clocks) at a time (RO
  • the decoding intermediate result storage RAM 1203 has already received data based on the control signal D1108.
  • the time required for the calculation unit 1102 to perform the first operation that is, after the decoding intermediate result D1103 is read from the decoding intermediate result storage memory 1103, the decoding intermediate result D1103 is used. It is assumed that the time until the decoding intermediate result D 1102 obtained as a result of the first calculation is supplied to the decoding intermediate result storage memory 1103 is a time T1 of 12 clocks.
  • the calculation unit 1102 stores the decoding intermediate result.
  • the supply of three intermediate decoding results D1102 corresponding to 1 ⁇ ⁇ from the first row to the third row of the check matrix H obtained as a result of the first calculation to the memory 1103 is started.
  • the result D1102 is supplied to the decoding intermediate result storage RAM 1202 as the decoding intermediate result D1201 via the switch 1201, and the decoding intermediate result D1202 is already stored in the decoding intermediate result storage RAM 1202 based on the control signal D1108.
  • the read decoding result D1205 is stored.
  • the decoding intermediate result D1205 is read out from the decoding intermediate result storage RAM 1202 nine times.
  • the decoding intermediate result storage memory 1103 the "decoding intermediate result corresponding to 1" from the seventh row to the ninth row of the check matrix H used for the next first calculation D1203 Is stored in the decoding intermediate result storage RAM 1204, immediately after nine readings (RO to R8) from the decoding intermediate result storage RAM 1203, the decoding intermediate result storage RAM 1204
  • the decoding intermediate result D1204 corresponding to 1 until the 10th row power of the parity check matrix H used for the next first calculation is 1 to the 12th row is stored in the decoding intermediate result storage RAM 1205 to 9 Read out (R9 to R17) o
  • the 13th row power of the parity check matrix H used for the next first calculation, and the corresponding decoding intermediate result D1201 up to the 15th row, are read out from the decoding intermediate result storage RAM 1202 nine times ( R18 to R26) o
  • the decoding intermediate result storage memory 1103 the corresponding decoding intermediate result D1102 for three rows of the check matrix H is sequentially stored in the four decoding intermediate result storage RAMs 1202 to 1205. Therefore, even when the time T1 is required for the calculation unit 1102 to perform the first calculation, the decoding intermediate result D1103 can be continuously output to the calculation unit 1102. As a result, the calculation unit In 1102, the first calculation can be performed continuously.
  • FIG. 27 is a flowchart for explaining the decoding process of the decoding apparatus 1000 in FIG. This process is started, for example, when reception data to be decoded is stored in the reception memory 416.
  • step S49 the control unit 1105 selects any one of the decoding intermediate result storage RAMs 1202 to 1205 as a read memory, and sends a control signal D1108 indicating the selection to the switch 1206 (Fig. 24).
  • Supply. Switch 1206 is based on control signal D1108
  • the decoding intermediate result storage RAMs 1202 to 1205 are selected, and the decoding intermediate results D1205 to D1208 supplied in units of three from the selected decoding intermediate result storage RAMs 1202 to 1205 are used as a decoding intermediate result D1103, and a cyclic shift circuit. 414 and calculation unit 1102 are supplied.
  • step S50 the cyclic shift circuit 414 receives three decodings corresponding to the upper half of the constituent matrix supplied from the decoding intermediate result storage memory 1103 (switch 1206).
  • the intermediate result D1103 and three intermediate decoding results D1103 (u) corresponding to the lower half are combined, cyclically shifted, and supplied to the calculation unit 415.
  • the cyclic shift circuit 414 is supplied with the decoding intermediate result D1103 from the decoding intermediate result storage memory 1103 in units of three, and from the control unit 1105 to the decoding intermediate result D1103.
  • a control signal D421 representing the corresponding Matrix data is supplied.
  • the cyclic shift circuit 414 cyclically shifts the three decoding intermediate results D1103 corresponding to the upper half of the component matrix and the three decoding intermediate results D1103 corresponding to the lower half based on the control signal D421. (Reorder), and the result is supplied to the calculation unit 415 as a decoding intermediate result D414.
  • the calculation unit 415 performs the second calculation, and supplies the decoding intermediate result D415, which is the result of the calculation, to the decoding intermediate result storage memory 1104.
  • the calculation unit 415 is supplied with the six intermediate decoding results D414 from the cyclic shift circuit 414 and the six reception data D417 from the reception data memory 416 in step S50.
  • the decoding result D414 and the received data D417 are supplied to each of the calculators 415 to 415 of the calculation unit 415, one by one. Further, the calculation unit 415 has a control.
  • the control signal D422 is supplied from the unit 1105, and the control signal D422 is supplied from the calculators 415 to 415.
  • the calculators 415 to 415 use the decoding intermediate result D414 and the received data D417 to control signals.
  • the second calculation is performed according to the equation (5), and the decoding intermediate result D415 (v) corresponding to the column of the parity check matrix H obtained as a result of the second calculation is intermediately decoded. Supplied to fruit storage memory 1104.
  • the calculation unit 415 sets the decoding intermediate result u to an initial value and performs the second calculation.
  • step S51 After the processing in step S51, the process proceeds to step S52, and the decoding intermediate result storage memory 1104 stores the decoding intermediate result D415 (v) supplied from the calculation unit 415 in step S51 at the same address. Proceed to S 53.
  • step S53 the control unit 1105 determines whether or not all decoding intermediate results D1104 corresponding to the columns of the check matrix H are calculated by the calculation unit 415, and all decoding intermediate results D1104 are calculated. If it is determined that it has not been performed, the process returns to step S49 and the above-described processing is repeated.
  • step S53 when it is determined by calculation unit 415 that all decoding intermediate results D1104 corresponding to columns of parity check matrix H have been calculated by calculation unit 415, control unit 1105 proceeds to step S54 and cyclic shift circuit 1101 cyclically shifts six decoding intermediate results D1104 (v) supplied from the decoding intermediate result storage memory 1104 based on the control signal D1106 supplied by the control unit 1105, and the results are divided into three units.
  • decoding result D1101 calculation unit 110 Supply to 2.
  • step S54 After the processing in step S54, the process proceeds to step S55, in which the calculation unit 1102 performs the first calculation, and the decoding intermediate result D 1102 that is the result of the first calculation is stored in the decoding intermediate result storage memory 110 3. To supply.
  • the calculation unit 1102 is supplied with the three intermediate decoding results DllOl (v) from the cyclic shift circuit 1101 in step S54, and has previously been stored in step S57 described later.
  • the three intermediate decoding results D1102 (D1103) (u) obtained as a result of the first operation by the calculation unit 1102 are supplied, and the decoding intermediate results D1101 and D1103 are respectively supplied to the calculators 1102 to 1102 of the calculation unit 1102.
  • the calculation unit 1102 includes a control unit.
  • the control signal D1107 is supplied from 1105, and the control signal D1107 is supplied to the calculators 1102 to 1102.
  • Calculators 1102 to 1102 perform control using decoding intermediate results D1101 and D1103, respectively.
  • the first calculation is performed according to the equations (7) and (8), respectively, and the decoding intermediate result D1102 (u) obtained as a result of the first calculation is stored in the decoding intermediate result storage memory. 1 Supply to 103.
  • the calculation unit 1102 sets the decoding intermediate result u to 0. Specifically, for example, dv
  • the decoding intermediate result storage memory 1103 is initialized to 0, or the calculation unit 1102 masks the input from the intermediate decoding result storage memory 1103 to zero.
  • step S55 After the processing of step S55, the process proceeds to step S56, and the control unit 1105 selects one of the decoding result storage RAMs 1202 to 1205 as a storage memory, and a control signal D1108 indicating the selection. Is supplied to switch 1201 (Fig. 24). Switch 1201 is a control signal
  • M1202 to 1205 are selected, and the decoding intermediate result D1102 is supplied to the selected decoding intermediate result storage RAMs 1202 to 1205.
  • step S56 After the processing in step S56, the process proceeds to step S57, and the decoding intermediate result storage RAM 1202 To 1205, the three intermediate decoding results D1201 to D1204 (D1102) supplied with the switch 1201 in step S56 are stored at the same address, and the process proceeds to step S58.
  • step S58 the control unit 1105 determines whether or not the calculation unit 1102 has calculated the decoding intermediate results D1102 corresponding to all “1 ⁇ ” of the parity check matrix H, and all the decoding intermediate results D1102 are If it is determined that it has not been calculated, the process returns to step S54 and the above-described processing is repeated.
  • step S57 when it is determined by calculation unit 1102 that all “one-corresponding decoding result D1102” has been calculated by calculation unit 1102, processing ends.
  • the decoding apparatus 1000 repeatedly performs the decoding process of FIG. 27 as many times as the number of decoding times, and the message D1104 obtained as a result of the last second calculation is output as the final decoding result.
  • the calculation unit 1102 includes three calculators 1102 to 1102.
  • the calculation unit 415 is composed of three calculators 415 to 415.
  • both the calculation unit 415 and the calculation unit 1102 include three calculators 415 to 415 and a calculator 1 respectively.
  • 102 to 1102 forces may also be configured.
  • the decoding intermediate result storage memory 1103 includes the four decoding intermediate result storage RAMs 1202 to 1205, and the calculation unit 1102 has three units as the first. Since the operation is performed, the circuit scale without impairing the operating frequency can be reduced.
  • the calculator 412 For example, in the decoding device 400 including the conventional six calculators 412 to 412, the calculator 412
  • the number of clocks required for the first calculation by 1 6 1 to 412 is 72.
  • the decoder 10 in FIG. 10 is 72.
  • the number of clocks required for the first calculation by the calculators 1102 to 1102 is 117.
  • the number of clocks is less than twice.
  • the number of clocks required for the second calculation by the calculators 415 to 415 is 59 clocks.
  • the ratio of the time required for one decoding in the decoding apparatuses 400 and 1000 is small. For example, if the number of “1” s in each row of the check matrix H is 4, the ratio of the time required for the first calculation in the decoding apparatuses 400 and 1000 is 37:52, and the time in the decoding apparatus 1000 is It is about 1.4 times that of the decryption device 1000.
  • FIG. 28 is a block diagram illustrating a configuration example of the second embodiment of the decoding apparatus 1000 to which the present invention has been applied.
  • a decoding intermediate result storage memory 1401 instead of the decoding intermediate result storage memory 1104, A control unit 1402 is provided instead of the control unit 1105.
  • the reception memory 1400 is supplied with a control signal D 1400 indicating selection of one of the control unit 1402 received data storage memory 1502 and 1503 (FIG. 29 described later).
  • a control signal D1401 representing selection of one of the control unit 1402 decoding intermediate result storage memory 1602 and 1603 (FIG. 30 described later) is supplied to the decoding intermediate result storage memory 1401.
  • FIG. 29 is a block diagram showing a configuration example of the reception memory 1400 of FIG.
  • the reception memory 1400 in FIG. 29 includes switches 1501 and 1504 and reception data storage memories 1 502 and 1503.
  • reception data D416 is supplied as reception data D1501 to the reception data storage memory 1502 or as reception data D1502 to the reception data storage memory 1503.
  • Reception data D1501 from switch 1501 is stored in reception data storage memory 1502, and reception data D1501 already stored in reception data storage memory 1502 is received data D1503. Supplied to switch 1504.
  • the reception data storage memory 1503 stores the reception data D1502 from the switch 1 501, and the reception data storage memory 1503 stores the reception data D already stored. 1504 is supplied to switch 1504.
  • the amount of data stored in each of the received data storage memories 1502 and 1503, that is, the storage capacity required for each of the received data storage memories 1502 and 1503, is the code length of the LDPC code, It is a multiplication value with the number of quantization bits of the received data.
  • the switch 1504 is supplied with a control signal D1400 indicating the selection of one of the control unit 1105 force received data storage memories 1502 and 1503, and the switch 1504 is based on the control signal D1400.
  • the received data D1503 from the received data storage memory 1502 or the received data D1504 from the received data storage memory 1503 is supplied to the cyclic shift circuit 1101 and the calculation unit 415 as received data D417.
  • the control signal D1400 indicates the selection of one of the received data storage memories 1502 and 1503.
  • the control signal D1400 represents the other selection. That is, the received data storage memories 1502 and 15
  • reception memory 1400 is provided with the two reception data storage memories 1502 and 1503, while the reception data D416 input on one side is being stored, the other already has the other side. Stored received data D417 can be output. As a result, the reception memory 1400 can continuously output the reception data D416 inputted continuously as the reception data D417.
  • the decoding intermediate result storage memory 1401 in FIG. 30 includes switches 1601, 1604 and 1605, and decoding intermediate result storage memories 1602 and 1603.
  • Three intermediate decoding results D415 are supplied from the calculation unit 415 to the switch 1601, and a control signal D1401 indicating selection of one of the decoding intermediate result storage memories 1602 and 1603 is supplied to the control unit 1105. .
  • Switch 1601 is in the process of decoding based on control signal D1401.
  • the result D415 is supplied to the decoding intermediate result storage memory 1602 as the decoding intermediate result D1601 or to the decoding intermediate result storage memory 1603 as the decoding intermediate result D1602.
  • Decoding halfway result storage memory 1602 stores the halfway decoding result D1601 of the switch 1601 force.
  • the already stored decoding intermediate result D1601 is supplied to the switch 1604 as a decoding intermediate result D1603 and also supplied to the switch 1605 as a decoding intermediate result D1604.
  • the decoding intermediate result D 1602 from the switch 1601 is stored in the decoding intermediate result storage memory 1603.
  • the already stored decoding intermediate result D 1602 is supplied to the switch 1604 as the decoding intermediate result D 1605 and also supplied to the switch 1605 as the decoding intermediate result D1606.
  • the amount of data stored in each of the decoding intermediate result storage memories 1602 and 1603, that is, the storage capacity required for each of the decoding intermediate result storage memories 1602 and 1603, is determined by the L DPC code. This is the product of the code length and the number of quantization bits of the decoding intermediate result D415.
  • control signal D1401 indicating selection of one of the control unit 1105 force decoding result storage memory 1602 and 1603 is supplied to the switch 1604, and the switch 1604 receives the control signal D1401.
  • the decoding intermediate result D1603 from the decoding intermediate result storage memory 1602 or the decoding intermediate result D1605 from the decoding intermediate result storage memory 1603 is output as a decoding result D1402 (soft decision value).
  • control signal D1401 representing selection of one of the control unit 1105 force decoding result storage memory 1602 and 1603 is supplied to the switch 1605, and the switch 1605 receives the control signal D1401.
  • the decoding intermediate result D1604 from the decoding intermediate result storage memory 1602 or the decoding intermediate result D1606 from the decoding intermediate result storage memory 1603 is output to the cyclic shift circuit 1101 as the decoding intermediate result D1403.
  • control signal D1401 selects one of the decoding intermediate result storage memories 1602 and 1603.
  • the control signal D1401 represents the other selection.
  • Decoding halfway result D1603 or D1605 output decoding completed in one of 2 and 1603
  • the decryption result D 1403 is output.
  • the decoding intermediate result storage memory 1401 is provided with the two decoding intermediate result storage memories 1602 and 1603.
  • the decoding intermediate result D1601 or Can store D1602 and on the other hand can store the decoding result D1601 or D1602 that has been decoded.
  • the decoding intermediate result storage memory 1401 can perform decoding while the decoding result D1402 is being output, and, for example, can continuously output the decoding result D1402.
  • FIG. 31 is a timing chart for explaining the read (output) and write (store) operations of the reception memory 1400 and the decoding intermediate result storage memory 1401.
  • reception data # 1 represents the reception data D416 of the i-th frame supplied to the reception memory 1400. Further, the decoding result D1403 of the received data #i is represented as decoding result #i, and the decoding result D1402 of the reception data # 1 is represented as decoding result #i. In FIG. 31, it is assumed that decoding of one piece of received data is completed at the time from when reception of received data #i is started until the end of power.
  • reception data # 2 is input to reception memory 1400, reception data # 2 is received via switch 1501 for the time Ta until all reception data # 2 is input.
  • the data is supplied to the storage memory 1502 and stored.
  • the reception data # 1 already stored is supplied from the reception data storage memory 1503 to the switch 1504, and the switch 1504 outputs the reception data # 1 to the cyclic shift circuit 1101 and the calculation unit 415.
  • the received data # 1 is decrypted.
  • the decoding intermediate result storage memory 1602 of the decoding intermediate result storage memory 1401 stores the decoding intermediate result # 1 supplied from the calculation unit 415 via the switch 1601, and also during the decoding. From the result storage memory 1602, the already stored decryption result # 1 is supplied to the cyclic shift circuit 1101. The intermediate decoding result # 0 that has already been stored is output to the decoding intermediate result storage memory 1603 via the switch 1604 as the decoding result # 0. In other words, the decoding intermediate result # 0 is output from the decoding intermediate result storage memory 1401 during the time Ta.
  • received data # 3 is input to reception memory 1400, and during the time Tb until all received data # 3 is input, the received data # 3 is sent via switch 1501. The data is supplied to the received data storage memory 1503 and stored. At this time, receive data storage memo Received data # 2 stored at time Ta is read from register 1502 and output to cyclic shift circuit 1101 and calculation unit 415 via switch 1504. Then, the received data # 2 is decrypted.
  • Decoding intermediate result # 1 stored during time Ta is output from decoding intermediate result storage memory 1602 as decoding result # 1. That is, after the time Ta, during the time Tb, the intermediate decoding result storage memory 1401 outputs the intermediate decoding result # 1 as the decoding result # 1.
  • the decoding intermediate result storage memory 1603 stores the decoding intermediate result # 2 supplied from the calculation unit 415 via the switch 1601, and the decoding intermediate result storage memory 1603 stores the decoding intermediate result already stored.
  • the result # 2 is supplied to the cyclic shift circuit 1101.
  • received data # 4 is input to reception memory 1400, and during time Tc, the same processing as at time Ta is performed. That is, after time Tb, during time Tc, reception data # 3 is supplied to cyclic shift circuit 1101 and calculation unit 415, and reception data # 3 is decoded. In addition, the intermediate decoding result # 2 stored during time Tb is output from the decoding intermediate result storage memory 1603 as decoding result # 2.
  • the decoding apparatus 1000 in Fig. 28 can sequentially decode the reception data D417 that are continuously input, and continuously output the decoding results. As a result, decoding can be performed at high speed. That is, the throughput of the decoding apparatus 1000 is improved.
  • the number of received data storage memories 1502 (1503) in the reception memory 1400 in FIG. 29 and the number of decoding intermediate result storage memories 1602 (1603) in the decoding intermediate result storage memory 1401 in FIG. It is not limited to two. By increasing the number of received data storage memory 1502 and decoding result storage memory 1602, the number of decoding iterations can be increased, and decoding performance can be improved.
  • FIG. 32 is a block diagram showing a configuration example of the third embodiment of the decoding apparatus 1000 to which the present invention has been applied.
  • the decoding intermediate result storage memory 1701 of the decoding device 1000 of FIG. 28 is replaced by a control unit 1 799 instead of the control unit 1402 instead of the decoding intermediate result storage memory 1401. Is provided.
  • the decoding intermediate result storage memory 1701 is supplied with a control signal D1701 indicating selection of one of the decoding hard decision result storage memories 1802 and 1803 (FIG. 33 described later) of the decoding intermediate result storage memory 1701.
  • FIG. 33 is a block diagram illustrating a configuration example of the decoding intermediate result storage memory 1701 of FIG.
  • the decoding intermediate result storage memory 1701 in FIG. 32 includes switches 1801, 1805, and 1806, decoded hard decision result storage memories 1802 and 1803, and a decoded soft decision result storage memory 1804.
  • the hard decision values of the three intermediate decoding results D415 are supplied from the calculation unit 415 to the switch 1801 as the decoded hard decision results D1801, and the decoded hard decision result storage memories 1801 and 1802 are also supplied from the control unit 1702. A control signal D1701 representing one of the selections is supplied. Switch 1801
  • the decryption hard decision result D1801 is converted into the decryption hard decision result D1803.
  • the decoded hard decision result storage memory 1802 or the decoded hard decision result storage memory D 1804 is supplied to the decoded hard decision result storage memory 1803.
  • a decryption intermediate result D1803 of the switch 1801 force is stored.
  • the decoding intermediate result D 1803 already stored is supplied to the switch 1805 as the decoding intermediate result D 1805 and also to the switch D 1806 as the decoding intermediate result D 1807. Supplied.
  • the decoding intermediate result D1804 from the switch 1801 is stored in the decoding intermediate result storage memory 1803. Also, from the decoding intermediate result storage memory 1803, the decoding intermediate result D1804 already stored is used as the decoding intermediate result D1806. In addition to being supplied to the switch 1805, it is supplied to the switch 1806 as a decoding intermediate result D1808.
  • the amount of data stored in each of the decoded hard decision result storage memories 1802 and 1803, that is, the storage capacity required for each of the decoded hard decision result storage memories 1802 and 1803, is the LDPC code. This is the product of the code length and 1 bit which is the number of bits of the hard decision value of the decoding result D415.
  • the decoding soft decision result storage memory 1804 is supplied with a soft decision value excluding the upper 1 bit of the three decoding intermediate results D415 from the calculation unit 415 as a decoding soft decision result D1802.
  • the decoding soft decision result storage memory 1804 stores the decoding soft decision result D1802, or the decoding soft decision result storage memory 1804 stores the already stored decoding soft decision result D1802 as the decoding soft decision result. Output as D1811.
  • the amount of data stored in the decoded soft decision result storage memory 1804, that is, the storage capacity required for the decoded soft decision result storage memory 1804 is higher than the code length of the LDPC code and the soft decision value. This is the product of the number of bits excluding 1 bit (the number of quantization bits of decoding intermediate result D415 is 1).
  • control signal D1701 representing selection of one of the decoded hard decision result storage memories 1802 and 1803 is supplied from the control unit 1702 to the switch 1805, and the switch 1805 receives the control signal D1701.
  • the decoding hard decision result D1805 from the decoding hard decision result storage memory 1802 or the decoding hard decision result D1806 from the decoding intermediate result storage memory 1803 is output as a decoding result D1702 (hard decision value).
  • the switch 1806 is supplied with a control signal D1701 indicating selection of one of the decoded hard decision result storage memories 1802 and 1803 from the control unit 1702, and the switch 1805 receives the control signal D1701.
  • the decoding hard decision result D1807 from the decoding hard decision result storage memory 1802 or the decoding intermediate result D1808 from the decoding hard decision result storage memory 1803 is output as the decoding hard decision result D 1810.
  • the soft decision value obtained by setting the decoded hard decision result D1810 from the switch 1806 as the upper one bit and the lower bits as the decoded soft decision result D1811 from the decoded soft decision result storage memory 1804 is obtained as the decoding intermediate result D1703. It is output to the cyclic shift circuit 1101. [0350] Note that the control signal D1701 selects one of the decoding intermediate result storage memories 1802 and 1803.
  • the control signal D1701 represents the other selection.
  • Decoding halfway result D1805 or D1806 output decoded as stored in one of 2 and 1803 Decoding result D1807 or D1808 stored in the other halfway while being output as decoding result D1702 Hard decision result D1810 is output.
  • the decoding intermediate result storage memory 1701 the hard decision values of the decoding intermediate result D415 are stored in the two decoding hard decision result storage memories 1802 and 1803, and the upper half of the decoding intermediate result D41 5 Since the soft decision value excluding the bits is stored in one decoded soft decision result storage memory 1804, the decoding intermediate result storage memory 1701 is obtained by multiplying the code length of the LDPC code by 1 bit and the LDPC code. It should have a recording capacity that is the sum of the code length of the code and the product of (the number of quantization bits of decoding result D415 1).
  • the storage capacity is twice the multiplication value of the code length of LDP C code and the number of quantization bits of decoding intermediate result D415.
  • the circuit scale can be reduced.
  • FIG. 34 is a block diagram illustrating a configuration example of the fourth embodiment of the decoding device 1000 to which the present invention has been applied.
  • the decoding apparatus 1000 in FIG. 34 includes three syndrome judging units 2001 to 2001.
  • a ROHM determination unit 2001 is provided to perform a syndrome calculation of the hard decision result D20000 output from the cyclic shift circuit 2000, and terminate decoding based on the result of the calculation.
  • the cyclic shift circuit 2000 selects six decoding intermediate results D1104 or received data D417 based on the control signal D1106, performs cyclic shift to rearrange, and among the results, the upper half of the component matrix (The first to third lines) or the lower half (fourth to sixth lines) corresponding to "1" is supplied to the calculation unit 412 as the decoding intermediate result D1999.
  • the shift circuit 2000 supplies the hard decision value obtained as a result of cyclic shifting the six intermediate decoding results D1104 or the received data D417 to the syndrome decision unit 2000 as the hard decision result D2000.
  • the syndrome determination unit 2001 includes three syndrome determination units 2001 to 2001. It is.
  • the syndrome determination unit 2001 is supplied with a hard decision result D2000 output from the cyclic shift circuit 2000 and a control signal D2001 for controlling the calculation of the syndrome from the control unit 2003. Supplied to each
  • the syndrome determiners 2001 to 2001 are based on the control signal D2001, respectively.
  • Judgment result D2000 syndrome is calculated. Specifically, the syndrome determiner 2001
  • R is calculated, and it is determined whether or not the value force obtained as a result is ⁇ 0 "in all rows.
  • the syndrome determiners 2001 to 2001 send the determination result D2002 to the control unit 2003.
  • the control unit 2003 ends the decoding according to the determination result D2002 supplied from the syndrome determination unit 2000. Specifically, in accordance with the determination result D2002, the control unit 2003 supplies a control signal D2003 that causes the decoding intermediate result storage memory 2002 to output the decoding intermediate result D415 or the decoding result D1105 as a decoding result. From the decoding intermediate result storage memory 2002, based on the control signal D2003 from the control unit 2003, the already stored decoding intermediate result D415 or decoding result D1105 is output as a decoding result, or decoding intermediate result D415 Is supplied to the cyclic shift circuit 2000.
  • FIG. 35 is a flowchart for explaining the decoding process of the decoding apparatus 1000 in FIG. This process is started, for example, when reception data D416 to be decoded is stored in the reception memory 416.
  • control unit 2003 sets count value K to 0, and proceeds to step S72.
  • syndrome determination unit 2001 (syndrome determination unit 2001)
  • the syndrome determination unit 2001 is supplied with a hard decision result D2000, which is a hard decision value obtained by cyclically shifting the received data D417, and the syndrome decision unit 2001 receives the hard decision result 2001.
  • Judgment result Calculate the syndrome.
  • step S72 the process proceeds to step S73, and the control unit 2003 determines whether or not the syndrome force is 0 "based on the determination result D2002 supplied from the syndrome determination unit 2001, and the syndrome force If it is determined that it is not “0”, the process proceeds to step S 74.
  • step S74 the control unit 2003 determines whether or not the count value K is equal to or greater than the predetermined number of times N. When determining that the count value K is not equal to or greater than the predetermined number of times N, the control unit 2003 proceeds to step S75.
  • steps S75 to S84 is the same as the processing in steps S49 to S58 in Fig. 27, and a description thereof will be omitted.
  • step S84 After the process of step S84, the process proceeds to step S85, and the control unit 2003 increments the count value K by one and returns to step S72.
  • step S73 If it is determined in step S73 that the syndrome force is 0 ", the process proceeds to step S86, where the control unit 2003 finishes decoding and is stored in the decoding intermediate result storage memory 2002. Decoding halfway result D415 or decoding result D1105 is output as a decoding result.
  • step S71 When it is determined in the first step S71 that the syndrome force is 0 ", decoding is not performed once and is supplied to calculation unit 415.
  • Received data D417 (decoding result D1105) force Decoding midway result Output through the storage memory 2002 as it is as a decoding result.
  • step S74 If it is determined in step S74 that the count value K is equal to or greater than the predetermined number N, the process proceeds to step S86, where the control unit 2003 terminates the decoding and stores the decoding intermediate result storage memory 2002.
  • the decryption result D415 stored in is output as the decryption result.
  • the circuit scale of syndrome determination unit 2001 is generally small, and the increase in the circuit scale of decoding apparatus 1000 due to provision of syndrome determination unit 2001 is small enough to be ignored.
  • the force provided by syndrome determining unit 2001 in decoding apparatus 1000 in FIG. 23 is calculated in two phases (for example, check node calculation and variable node calculation, first
  • the syndrome determination unit 2001 may be provided in any device as long as it is a device that performs decoding by the above calculation and the second calculation.
  • the syndrome determination unit 2001 may be provided in the decoding device 400 of FIG. 17 or the decoding device 1000 of FIG. 28 or FIG.
  • the decoding intermediate result storage memory 1103 has four decoding intermediate result storage RAMs 1202 to 1205.
  • the number of decoding intermediate result storage RAMs 1202 to 1205 is three or more. Any number can be used. As the number of RAMs 1202 to 1205 for storing intermediate decoding results increases, the operation speed of the decoding device can be increased.
  • decoding is performed by repeatedly performing the first calculation and the second calculation.
  • the decoding is performed by repeatedly performing the check node calculation and the variable node calculation. Say it with a word.
  • the decoding intermediate result storage RAMs 1202 to 1205 in FIG. 24, the received data storage memories 1502 and 1503 in FIG. 29, the decoding intermediate result storage memories 1602 and 1603 in FIG. 30, and the decoded hard decision result storage in FIG. 33 are stored.
  • the RAMs 1802 and 1803 for decoding and the soft decision result storage memory 1804 can be logically provided by giving the same control signal using a plurality of RAMs. Can be regarded as one RAM.
  • the power given as an example when P is 6, that is, when the number of rows and the number of columns of the constituent matrix constituting the check matrix H is six is given.
  • the number of rows and the number of columns P of the constituent matrix does not necessarily have to be 6, and can take different values depending on the check matrix H.
  • P may be 360 or 392.
  • the code length and coding rate of the power LDP C code using an LDPC code having a code length of 108 and a code rate of 2/3 may be any value.
  • the LDPC code of any code length and coding rate can be used to change the decoding apparatus 1000 by simply changing the control signal. And can be decrypted.
  • a decoding apparatus for an LDPC code that satisfies the condition of t, where the number of rows and the number of columns P of the constituent matrix is a predetermined value and the total number of branches is less than or equal to a certain value, An LDPC code having an arbitrary code rate can be decoded with a code length.
  • the number of force calculators 1102 to 1102 may be less than P.
  • P is a large prime number
  • the number of calculators 1102 to 1102 is an integer close to 1 in the integer part of P.
  • calculation unit 415 that is not calculation unit 1102 may be configured of calculators of less than P. That is, at least one of the calculation unit 1102 or the calculation unit 415 may be configured by less than P calculators, and the other may be configured by P calculators or less than P calculators. Well, ...
  • the unit matrix of PX P is a quasi-unit matrix, a unit matrix or a shift matrix that is a cyclic shift of the quasi-unit matrix, unit A sum matrix that is the sum of multiple matrices, quasi-unit matrices, or shift matrices, PX
  • PX Uses an architecture that decodes an LDPC code with a parity check matrix H that can be represented by a combination of P or N (N is a positive integer less than P) at the same time.
  • the calculation unit 1102 that performs the first operation is configured as compared with the case where the first and second operations are performed simultaneously.
  • the number of calculators 415 to 415 constituting the calculation unit 415 that performs 2 or the second calculation is reduced.
  • the circuit scale can be reduced.
  • LDPC codes have code lengths as large as several thousand and several tens of thousands, so the value of P is also several hundred The one with the thickness is used. In that case, the effect of using the decoding device according to the present invention is further increased.
  • the decoding device that decodes the LDPC code described above can be applied to, for example, a tuner that receives a (digital) satellite broadcast.

Landscapes

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

Abstract

本発明は、LDPC符号の復号を、装置の大規模化を抑えつつ精度良く行うことができる復号装置および復号方法に関する。計算部1102は、復号途中結果格納用メモリ1104からサイクリックシフト回路1101を介して供給される復号途中結果D1101を用いて、3つのチェックノード演算に対応する第1の演算を行い、その結果得られる復号途中結果D1102を復号途中結果格納用メモリ1103に記憶させる。計算部415は、復号途中結果格納用メモリ1103からサイクリックシフト回路を介して供給される復号途中結果D414を用いて、6つのバリアブルノードの演算に対応する第2の演算を行い、その結果得られる復号途中結果D415を復号途中結果格納用メモリ1104に記憶させる。本発明は、例えば、衛星放送を受信するチューナに適用できる。  

Description

明 細 書
復号装置および復号方法
技術分野
[0001] 本発明は、復号装置および復号方法に関し、特に、低密度パリティ検査符号 (LDP C符号)による符号ィ匕が施された符号の復号を行う復号装置および復号方法に関す る。
背景技術
[0002] 近年、例えば、移動体通信や深宇宙通信と!/、つた通信分野、及び地上波又は衛星 ディジタル放送といった放送分野の研究が著しく進められているが、それに伴い、誤 り訂正符号化及び復号の効率化を目的として符号理論に関する研究も盛んに行わ れている。
[0003] 符号性能の理論的限界としては、いわゆるシャノン (C. E. Shannon)の通信路符号 化定理によって与えられるシャノン限界が知られて 、る。符号理論に関する研究は、 このシャノン限界に近い性能を示す符号を開発することを目的として行われている。 近年では、シャノン限界に近い性能を示す符号ィ匕方法として、例えば、並列連接畳 み込み符号 (PCCC(Parallel Concatenated Convolutional Codes》や、縦列連接畳み 込み符号 (SCCC(Serially Concatenated Convolutional Codes》といった、いわゆるタ ーボ符号化 (Turbo coding)と呼ばれる手法が開発されている。また、これらのターボ 符号が開発される一方で、古くから知られる符号ィ匕方法である低密度パリティ検査符 号 (Low Density Parity Check codes) (以下、 LDPC符号という)が脚光を浴びつつあ る。
[0004] LDPC符号は、 R. G. Gallagerによる「R. G. Gallager, "Low Density Parity Check C odes", Cambridge, Massachusetts: M. I. T. Press, 1963」において最初に提案された のであり、その後、「D. J. C. MacKay, "Good error correcting codes based on very sparse matrices", Submitted to IEEE Trans. Inf. Theory, IT- 45, pp. 399-431, 1999」 や、「M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi and D. A. Spielman, "Analysi s of low density codes ana improved designs using irregular graphs , in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998」等において再注 目されるに至ったものである。
[0005] LDPC符号は、近年の研究により、ターボ符号等と同様に、符号長を長くしていくに したがって、シャノン限界に近い性能が得られることがわ力りつつある。また、 LDPC符 号は、最小距離が符号長に比例するという性質があることから、その特徴として、プロ ック誤り確率特性がよぐさらに、ターボ符号等の復号特性において観測される、いわ ゆるエラーフロア現象が殆ど生じないことも利点として挙げられる。
[0006] 以下、このような LDPC符号について具体的に説明する。なお、 LDPC符号は、線形 符号であり、必ずしも 2元である必要はないが、ここでは、 2元であるものとして説明す る。
[0007] LDPC符号は、その LDPC符号を定義する検査行列 (parity check matrix)が疎なも のであることを最大の特徴とするものである。ここで、疎な行列とは、行列のコンポ一 ネントの〃 1"の個数が非常に少なく構成されるものであり、疎な検査行列を Hで表すも のとすると、そのような検査行列 Hとしては、例えば、図 1に示すように、各列のハミン グ重み("1"の数) (weight)が" 3〃であり、且つ、各行のハミング重みが" 6〃であるもの等 がある。
[0008] このように、各行及び各列のハミング重みが一定である検査行列 Hによって定義さ れる LDPC符号は、レギュラー LDPC符号と称される。一方、各行及び各列のハミング 重みが一定でな 、検査行列 Hによって定義される LDPC符号は、イレギュラー LDPC 符号と称される。
[0009] このような LDPC符号による符号ィ匕は、検査行列 Hに基づいて生成行列 Gを生成し、 この生成行列 Gを 2元の情報メッセージに対して乗算することによって符号語を生成 することで実現される。具体的には、 LDPC符号による符号ィ匕を行う符号ィ匕装置は、ま ず、検査行列 Hの転置行列 Ητとの間に、式 GHT=0が成立する生成行列 Gを算出する 。ここで、生成行列 Gが、 kX n行列(k行 n列の行列)である場合には、検査行列 Hは、 n-k行 n列の行列である。
[0010] なお、例えば、 nビットの符号語じが、 kビットの情報メッセージ uに続けて、 n-kビットの ノ リティビットを配置したビット列に一致する組織符号である場合に、 n-k行 n列の検査 行列 Hにお 、て、 nビットの符号語 cのうちの kビットの情報メッセージ uに対応する n-k 行 k列の部分を情報部というとともに、 n-kビットのパリティビットに対応する n-k行 n-k 列の部分をパリティ部ということとすると、パリティ部が、下三角行列または上三角行 列になっていれば、情報メッセージ uの LDPC符号への符号ィ匕は、検査行列 Hを用い て行うことができる。
[0011] 即ち、例えば、検査行列 H力 図 2に示すように、情報部と、下三角行列のパリティ 部とで構成され、パリティ部の下三角の部分の要素が、すべて 1であるとすると、符号 語 cのパリティビットの 1番目のビットは、情報メッセージ uのうちの、検査行列 Hの情報 部の第 1行にぉ 、て 1になって!/、る要素に対応するビットの EXOR (排他的論理和)を 演算した値となる。
[0012] また、符号語 cのノ リティビットの 2番目のビットは、情報メッセージ uのうちの、検査行 列 Hの情報部の第 2行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビット の 1番目のビットの EXORを演算した値となる。
[0013] さらに、符号語 cのノ リティビットの 3番目のビットは、情報メッセージ uのうちの、検査 行列 Hの情報部の第 3行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビッ トの 1番目および 2番目のビットの EXORを演算した値となる。
[0014] 以下、同様にして、符号語 cのノ リティビットの潘目のビットは、情報メッセージ uのう ちの、検査行列 Hの情報部の第 i行にお 、て 1になって 、る要素に対応するビットと、 ノ リティビットの 1乃至卜 1番目のビットの EXORを演算した値となる。
[0015] 以上のようにして、 n-kビットのパリティビットを求め、 kビットの情報メッセージ uに続け て配置することにより、 nビットの符号語 cを得ることができる。
[0016] 一方、 LDPC符号の復号は、 Gallagerが確率復号 (Probabilistic Decoding)と称して 提案したアルゴリズムであって、ノ リアブルノード (variable node (メッセージノード (mes sage node)とも呼ばれる。;))と、チェックノード (check node)とからなる、いわゆるタナー グラフ (Tanner graph)上での確率伝播 (belief propagation)によるメッセージ ·パッシン グ.アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノード とチェックノードを、単に、ノードともいう。
[0017] し力しながら、確率復号においては、各ノード間で受け渡されるメッセージが実数値 であることから、解析的に解くためには、連続した値をとるメッセージの確率分布その ものを追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、 Gallagerは、 LDPC符号の復号アルゴリズムとして、アルゴリズム A又はアルゴリズム B を提案している。
[0018] LDPC符号の復号は、一般的には、図 3に示すような手順にしたがって行われる。な 、 :では、受信値を U (u )とし、チェックノードから出力されるメッセージを とし、 ノリアブルノードから出力されるメッセージを Vとする。また、ここでは、メッセージとは 、値の" 0〃らしさを、いわゆる対数尤度比 (log likelihood ratio)で表現した実数値であ る。さらに、受信値 Uの "0 "らしさの対数尤度比を、受信データ uと表すこととする。
0 0i
[0019] まず、 LDPC符号の復号においては、図 3に示すように、ステップ S11において、受 信値 U (u )が受信され、メッセージ uが" 0〃に初期化されるとともに、繰り返し処理の力
0 0i j
ゥンタとしての整数をとる変数 kが" 0Ίこ初期化され、ステップ S 12に進む。ステップ S 12において、受信値 U (u )に基づいて、式(1)に示す演算を行うことによってメッセ
0 0i
ージ Vが求められ、さらに、このメッセージ Vに基づいて、式(2)に示す演算を行うこと によってメッセージ uが求められる。
[0020] [数 1]
dv- 1
V i =U0 i + ∑ Uj
j =1
(1)
[0021] [数 2]
Figure imgf000006_0001
(2)
[0022] ここで、式(1)と式(2)における dvと は、それぞれ、検査行列 Hの縦方向(行方向) と横方向(列方向)の〃 1"の個数を示す任意に選択可能とされるパラメータであり、例 えば、(3,6)符号の場合には、 d =3, d =6となる。
[0023] なお、式(1)または(2)の演算においては、それぞれ、メッセージを出力しょうとする 枝 (edge)力も入力されたメッセージを、和または積演算のパラメータとしては用いな!/ヽ ことから、和または積演算の範囲が、 1乃至 -1または 1乃至 d lとなっている。また、 式(2)に示す演算は、実際には、 2入力 V , Vに対する 1出力で定義される式(3)に
1 2
示す関数 R(v ,ν )のテーブルを予め作成しておき、これを式 (4)に示すように連続的(
1 2
再帰的)に用いることによって行われる。
[0024] [数 3] x=2tanh~1 {tanh (v,/2) tanh (v2/2) } =R ( , v2)
•••(3)
[0025] [数 4]
^:^ ^ ^, …!^ — 2, vdc—】))))
•••(4)
[0026] ステップ S12では、さらに、変数 kが "Γだけインクリメントされ、ステップ S13に進む。
ステップ S 13では、変数 kが所定の繰り返し復号回数 Ν以上であるか否かが判定され る。ステップ S 13において、変数 kが N以上ではないと判定された場合、ステップ S 12 に戻り、以下、同様の処理が繰り返される。
[0027] また、ステップ S 13において、変数 kが N以上であると判定された場合、ステップ S 14 に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメ ッセージ Vが求められて出力され、 LDPC符号の復号処理が終了する。
[0028] [数 5]
dv
V = U0 i + ∑ Uj
J = 1
•••(5)
[0029] ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している 全ての枝からの入力メッセージを用いて行われる。
[0030] このような LDPC符号の復号は、例えば (3,6)符号の場合には、図 4に示すように、各 ノード間でメッセージの授受が行われる。なお、図 4における' '=〃で示すノード (バリア ブルノード)では、式(1)に示した演算が行われ、〃+"で示すノード (チェックノード)で は、式(2)に示した演算が行われる。特に、アルゴリズム Aにおいては、メッセージを 2 元化し、〃+"で示すノードにて、 d l個の入力メッセージの排他的論理和演算を行い 、 で示すノードにて、受信値 Rに対して、 d -1個の入力メッセージが全て異なるビッ ト値であった場合には、符号を反転して出力する。
[0031] また、一方で、近年、 LDPC符号の復号の実装法に関する研究も行われて 、る。実 装方法について述べる前に、まず、 LDPC符号の復号を摸式化して説明する。
[0032] 図 5は、(3,6)LDPC符号(符号化率 1/2、符号長 12)の検査行列 H(parity check matr ix)の例である。 LDPC符号の検査行列 Hは、図 6のように、タナーグラフを用いて書き 表すことができる。ここで、図 6において、 で表されるのが、チェックノードであり、 " = "で表されるのが、ノ リアブルノードである。チェックノードとバリアブルノードは、それ ぞれ、検査行列 Hの行と列に対応する。チェックノードとバリアブルノードとの間の結 線は、枝 (edge)であり、検査行列 Hの 'Tに相当する。即ち、検査行列 Hの第 j行第 i列 のコンポーネントが 1である場合には、図 6において、上から i番目のバリアブルノード ("="のノード)と、上から j番目のチェックノード ("+"のノード)とが、枝により接続される 。枝は、ノ リアブルノードに対応する符号ビットが、チェックノードに対応する拘束条 件を持つことを表す。なお、図 6は、図 5の検査行列 Hのタナーグラフとなっている。
[0033] LDPC符号の復号方法であるサムプロダクトアルゴリズム (Sum Product Algorithm)は 、 ノ リアブルノードの演算とチェックノードの演算とを繰り返し行う。
[0034] ノ リアブルノードでは、図 7のように、式(1)の演算を行う。すなわち、図 7において、 計算しょうとしている枝に対応するメッセージ Vは、ノ リアブルノードに繋がっている残 りの枝力 のメッセージ uおよび uと、受信情報 uを用いて計算される。他の枝に対応
1 2 0i
するメッセージも同様に計算される。
[0035] チェックノードの演算について説明する前に、式(2)を、式 a X b=exp{ln(|a|)+ln(|b|)}
X sign(a) X sign(b)の関係を用いて、式(6)のように書き直す。但し、 sign(x)は、 x≥0の とき 1であり、 x< 0のとき- 1である。
[0036] [数 6]
Figure imgf000009_0001
v dc- 1
=2tanh- exp - I n tanh x TT s i gn
2 i = 1
d i
•(6)
[0037] 更に、 x≥0において、 () (x)=ln(tanh(x/2》と定義すると、 φ— ^x^Stanh— — x)であるか ら、式 (6)は、式(7)のように書くことができる。
[0038] [数 7]
( d
Figure imgf000009_0002
•••(7)
[0039] チェックノードでは、図 8のように、式(7)の演算を行う。すなわち、図 8において、計 算しょうとしている枝に対応するメッセージ uは、チェックノードに繋がっている残りの 枝力ゝらのメッセージ V ,ν ,ν ,ν ,νを用いて計算される。他の枝に対応するメッセージも
1 2 3 4 5
同様に計算される。
[0040] なお、関数 φ (X)は、 φ (x)=ln((ex+l)/(ex- 1》とも表すことができ、 x>0にお 、て、 φ (χ) = φ— )である。関数 φ および φ— )をノヽードウエアに実装する際には、 LUT(Look Up Table)を用いて実装される場合がある力 両者共に同一の LUTとなる。
[0041] サムプロダクトアルゴリズムをノヽードウエアに実装する場合、式(1)で表されるバリア ブルノード演算および式 (7)で表されるチェックノード演算を、適度な回路規模と動 作周波数で繰り返し行うことが必要である。
[0042] 復号装置の実装の例として、まず、単純に各ノードの演算を一つずつ順次行うこと によって復号を行う場合 (foil serial decoding)の実装法について説明する。
[0043] なお、ここでは、例えば、図 9の、 36 (行) X 108 (列)の検査行列 Hで表現される符 号 (符号化率 2/3、符号長 108)を復号することとする。図 9の検査行列 Hの 1の数は 32
3であり、従って、そのタナーグラフでは、枝の数は 323個となる。ここで、図 9の検査 行列 Hでは、 0を、 で表現している。
[0044] 図 10は、 LDPC符号の 1回復号を行う復号装置の構成例を示して!/ヽる。
[0045] 図 10の復号装置では、その動作する 1クロック (clock)ごとに、 1つの枝に対応するメ ッセージが計算される。
[0046] 即ち、図 10の復号装置は、 2つの枝用メモリ 100および 102、 1つのチェックノード 計算器 101、 1つのバリアブルノード計算器 103、 1つの受信用メモリ 104、 1つの制 御部 105からなる。
[0047] 図 10の復号装置では、枝用メモリ 100または 102からメッセージデータが 1つずつ 読み出され、そのメッセージデータを用いて、所望の枝に対応するメッセージデータ が計算される。そして、その計算によって求められたメッセージデータ力^つずつ後 段の枝用メモリ 102または 100に格納されていく。繰り返し復号を行う際には、この 1 回復号を行う図 10の復号装置を複数個縦列に連接するか、もしくは図 10の復号装 置を繰り返し用いることによって、繰り返し復号を実現する。なお、ここでは、例えば、 図 10の復号装置が複数個接続されているものとする。
[0048] 枝用メモリ 100は、前段の復号装置(図示せず)のバリアブルノード計算器 103から 供給されるメッセージ D100を、後段のチェックノード計算器 101が読み出す順番に格 納していく。そして、枝用メモリ 100は、チェックノード計算のフェーズでは、メッセージ D100を、格納してある順番通りに、メッセージ D101として、チェックノード計算器 101 に供給する。
[0049] チェックノード計算器 101は、制御部 105から供給される制御信号 D106に基づき、 枝用メモリ 100から供給されるメッセージ D101を用いて、式(7)に従って演算を行い、 その演算によって求められたメッセージ D102を、後段の枝用メモリ 102に供給する。
[0050] 枝用メモリ 102は、前段のチェックノード計算器 101から供給されるメッセージ D102 を、後段のバリアブルノード計算器 103が読み出す順番に格納していく。そして、枝 用メモリ 102は、ノ リアブルノード計算のフェーズでは、メッセージ D102を、格納して ある順番通りに、メッセージ D103として、ノ リアブルノード計算器 103に供給する。 [0051] さらに、バリアブルノード計算器 103には、制御部 105から制御信号 D107が供給さ れるとともに、受信用メモリ 104から受信データ D104が供給される。ノリアブルノード 計算器 103は、制御信号 D107に基づき、枝用メモリ 100から供給されるメッセージ D1 03と受信用メモリ 100から供給される受信データ D104を用い、式(1)に従って演算を 行い、その演算の結果得られるメッセージ D105を、図示せぬ後段の復号装置の枝用 メモリ 100に供給する。
[0052] 受信用メモリ 104には、 LDPC符号化された受信データ(LDPC符号)が格納される 。制御部 105は、バリアブルノード演算を制御する制御信号 D106と、チェックノード演 算を制御する制御信号 D107を、それぞれチヱックノード計算器 101とバリアブルノー ド計算器 103に供給する。制御部 105は、枝用メモリ 100に全ての枝のメッセージが 格納されたとき、チェックノード計算器 101に制御信号 D106を供給し、枝用メモリ 102 に全ての枝のメッセ一が格納されたとき、バリアブルノード計算器 103に制御信号 D1 07を供給する。
[0053] 図 11は、チェックノード演算を 1つずつ行う図 10のチェックノード計算器 101の構成 例を示している。
[0054] なお、図 11では、各メッセージが符号ビットを合わせて合計 6ビット (bit)に量子化さ れているものとして、チェックノード計算器 101を表している。また、図 11では、図 9の 検査行列 Hで表される LDPC符号のチェックノード演算が行われる。さらに、図 11のチ エックノード演算器 101には、クロック ckが供給され、このクロック ckは、必要なブロッ クに供給されるようになっている。そして、各ブロックは、クロック ck〖こ同期して処理を 行う。
[0055] 図 11のチェックノード計算器 101は、制御部 105から供給される、例えば、 1ビットの 制御信号 D106に基づき、枝用メモリ 100から 1つずつ読み込まれるメッセージ D101を 用いて、式(7)にしたがって演算を行う。
[0056] 即ち、チェックノード計算器 101では、検査行列 Hの各列に対応するバリアブルノー ドからの 6ビットのメッセージ D101 (メッセージ V )が 1つずつ読み込まれ、その下位ビッ トである絶対値 D122(|v|)が LUT121に、その最上位ビットである符号ビット D121が EX OR回路 129と FIFO(First In First Out)メモリ 133にそれぞれ供給される。また、チェ ックノード計算器 101には、制御部 105から制御信号 D106が供給され、その制御信 号 D106は、セレクタ 124とセレクタ 131に供給される。
[0057] LUT121は、絶対値 D122(|v |)に対して、式(7)における φ (|ν|)の演算を行った 5ビッ トの演算結果 0123 ( φ (|ν |))を読み出し、加算器 122と FIFOメモリ 127に供給する。
[0058] カロ算器 122は、演算結果 0123 ( φ (|ν |))とレジスタ 123に格納されている 9ビットの 値 D124とを加算することにより、演算結果 D123を積算し、その結果得られる 9ビットの 積算値をレジスタ 123に再格納する。なお、検査行列 Ηの 1行に亘る全ての枝からの メッセージ D101の絶対値 D122(|v |)に対する演算結果が積算された場合、レジスタ 12
3はリセットされる。
[0059] 検査行列 Hの 1行に亘るメッセージ D101が 1つずつ読み込まれ、レジスタ 123に 1行 分の演算結果 D123が積算された積算値が格納された場合、制御部 105から供給さ れる制御信号 D106は、 0力ら 1に変ィ匕する。例えば、行の重み (row weight)が「9」で ある場合、制御信号 D106は、 1から 8クロック目までは、「0」となり、 9クロック目では「1 」となる。
[0060] 制御信号 D106が「1」の場合、セレクタ 124は、レジスタ 123に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (メッセージ v.)から求 められた φ (|v |)が積算された 9ビットの値 D124 (i= 1から i= dまでの∑ φ (|ν |))を選択 し、値 D125として、レジスタ 125に出力して格納させる。レジスタ 125は、格納してい る値 D125を、 9ビットの値 D126として、セレクタ 124と加算器 126に供給する。制御信 号 D106が「0」の場合、セレクタ 124は、レジスタ 125から供給された値 D126を選択し 、レジスタ 125に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての枝から のメッセージ D101 (メッセージ V)から求められた φ (|v |)が積算されるまで、レジスタ 12 5は、前回積算された φ (|ν|)を、セレクタ 124と加算器 126に供給する。
[0061] 一方、 FIFOメモリ 127は、レジスタ 125から新たな値 D126 (i= lから i= dまでの∑ φ (|v|))が出力されるまでの間、 LUT121が出力した演算結果 D123 ( φ (|ν |))を遅延し 、 5ビットの値 D127として減算器 126に供給する。減算器 126は、レジスタ 125から供 給された値 D126から、 FIFOメモリ 127から供給された値 D127を減算し、その減算結 果を、 5ビットの減算値 D128として LUT128に供給する。即ち、減算器 126は、検査 行列 Hの 1行に亘る全ての枝からのメッセージ D101 (メッセージ V )から求められた φ (| v |)の積算値から、求めたい枝からのメッセージ D101 (メッセージ V )から求められた φ ( |v |)を減算して、その減算値 (i= lから i=d— 1までの∑ φ (|ν|))を減算値 D128として LUT128に供給する。
[0062] なお、減算器 126は、レジスタ 125から供給される 9ビットの値 D126から、 FIFOメモリ 127から供給される 5ビットの値 D127を減算するから、その減算結果は、最大で 9ビッ トとなり得るのに対して、 5ビットの減算値 D128を出力する。このため、レジスタ 125か ら供給される 9ビットの値 D126から、 FIFOメモリ 127から供給される 5ビットの値 D127 を減算した減算結果が、 5ビットで表せない場合、つまり、減算結果が、 5ビットで表す ことができる最大値(31 (2進数では 11111) )を越える場合には、減算器 126は、減 算結果を、 5ビットで表すことができる最大値にクリッピングし、 5ビットの減算値 D128 を出力する。
[0063] LUT128は、減算値 D128 (i= lから i=d— 1までの∑ φ (|ν |))に対して、式(7)にお ける φ— 1 (∑ φ (|ν |))の演算を行った 5ビットの演算結果 D129 ( _1(∑ (|ν|)))を出力 する。
[0064] 以上の処理と並行して、 EXOR回路 129は、レジスタ 130に格納されている 1ビット の値 D131と符号ビット D121との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D130をレジスタ 130に再格納する。なお、検査行 列 Ηの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗算された場合 、レジスタ 130はリセットされる。
[0065] 検査行列 Ηの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗算さ れた乗算結果 D130 (i= lから dまでの nsign(v))がレジスタ 130に格納された場合、 制御部 105から供給される制御信号 D106は、「0」から「1」に変化する。
[0066] 制御信号 D106が「1」の場合、セレクタ 131は、レジスタ 130に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗 算された値 D131 (i= 1から i=dまでの nsign(v))を選択し、 1ビットの値 D132としてレ ジスタ 132に出力して格納させる。レジスタ 132は、格納している値 D132を、 1ビットの 値 D133としてセレクタ 131と EXOR回路 134に供給する。制御信号 D106が「0」の場 合、セレクタ 131は、レジスタ 132から供給された値 D133を選択し、レジスタ 132に出 力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての枝力ものメッセージ D101 ( メッセージ V )の符号ビット D121が乗算されるまで、レジスタ 132は、前回格納した値を 、セレクタ 131と EXOR回路 134に供給する。
[0067] 一方、 FIFOメモリ 133は、レジスタ 132から新たな値 D133 (i= 1から i=dまでの Ilsi gn(v))が EXOR回路 134に供給されるまでの間、符号ビット D121を遅延し、 1ビットの 値 D134として EXOR回路 134に供給する。 EXOR回路 134は、レジスタ 132から供給 された値 D133と、 FIFOメモリ 133から供給された値 D134との排他的論理和を演算す ることにより、値 D133を、値 D134で除算し、 1ビットの除算結果を除算値 D135として出 力する。即ち、 EXOR回路 134は、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121 (sign(|v |))の乗算値を、求めたい枝からのメッセージ D101の 符号ビット D121 (sign(|v |))で除算して、その除算値 (i= lから i=d— 1までの risign(| v |))を除算値 D135として出力する。
[0068] チェックノード計算器 101では、 LUT128から出力された 5ビットの演算結果 D129を 下位 5ビットとするとともに、 EXOR回路 134から出力された 1ビットの除算値 D135を最 上位ビットとする合計 6ビットがメッセージ D102 (メッセージ u)として出力される。
[0069] 以上のように、チェックノード計算器 101では、式(7)の演算が行われ、メッセージ u が求められる。
[0070] なお、図 9の検査行列 Hの行の重みの最大は 9であるため、即ち、チヱックノードに 供給されるメッセージの最大数は 9であるため、チェックノード計算器 101は、 9個のメ ッセージ( φ (|v |))を遅延させる FIFOメモリ 127と FIFOメモリ 133を有して!/、る。
行の重みが 9未満の行のメッセージを計算するときには、 FIFOメモリ 127と FIFOメモリ 133における遅延量力 その行の重みの値に減らされる。
[0071] 図 12は、ノ リアブルノード演算を 1つずつ行う図 10のノ リアブルノード計算器 103 の構成例を示している。
[0072] なお、図 12では、各メッセージが符号ビットを合わせて合計 6ビット (bit)に量子化さ れているものとして、ノ リアブルノード計算器 103を表している。また、図 12では、図 9 の検査行列 Hで表される LDPC符号のノ リアブルノード演算が行われる。さらに、図 1 2のノ リアブルノード計算機 103には、クロック ckが供給され、クロック ckは、必要なブ ロックに供給されるようになっている。そして、各ブロックは、クロック ckに同期して処 理を行う。
[0073] 図 12のバリアブルノード計算器 103は、制御部 105から供給される、例えば、 1ビッ トの制御信号 D107に基づき、枝用メモリ 102から 1つずつ読み込まれるメッセージ D1 03と、受信用メモリ 104から読み込まれる受信データ D104を用いて、式(1)にしたが つて演算を行う。
[0074] 即ち、ノ リアブルノード計算器 103では、検査行列 Hの各行に対応するチェックノー ドからの 6ビットのメッセージ D103 (メッセージ u)が 1つずつ読み込まれ、そのメッセ一 ジ D103が、加算器 151と FIFOメモリ 155に供給される。また、ノ リアブルノード計算器 103では、受信用メモリ 104から 6ビットの受信データ D104が 1つずつ読み込まれ、加 算器 156に供給される。さらに、バリアブルノード計算器 103には、制御部 105から制 御信号 D107が供給され、その制御信号 D107は、セレクタ 153に供給される。
[0075] 加算器 151は、メッセージ D103 (メッセージ u)とレジスタ 152に格納されている 9ビッ トの値 D151とを加算することにより、メッセージ D103を積算し、その結果得られる 9ビッ トの積算値を、レジスタ 152に再格納する。なお、検査行列 Hの 1列に亘る全ての枝か らのメッセージ D103が積算された場合、レジスタ 152はリセットされる。
[0076] 検査行列 Hの 1列に亘るメッセージ D103が 1つずつ読み込まれ、レジスタ 152に 1列 分のメッセージ D103が積算された値が格納された場合、制御部 105から供給される 制御信号 D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制 御信号 D107は、 1から 4クロック目までは「0」となり、 5クロック目では「1」となる。
[0077] 制御信号 D107が「1」の場合、セレクタ 153は、レジスタ 152に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)が積算 された 9ビットの値 D151 (i = lから dまでの∑u)を選択し、レジスタ 154に出力して格
V j
納させる。レジスタ 154は、格納している値 D151を、 9ビットの値 D152として、セレクタ 153と加減算器 156に供給する。制御信号 D107が「0」の場合、セレクタ 153は、レジ スタ 154から供給された値 D152を選択し、レジスタ 154に出力し再格納させる。即ち 、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)が積算され るまで、レジスタ 154は、前回積算された値を、セレクタ 153と加減算器 156に供給す る。
[0078] 一方、 FIFOメモリ 155は、レジスタ 154から新たな値 D152 (j = lから dまでの∑u)が
V j 出力されるまでの間、チェックノードからのメッセージ D103を遅延し、 6ビットの値 D153 として加減算器 156に供給する。加減算器 156は、レジスタ 154から供給された値 D1 52から、 FIFOメモリ 155から供給された値 D153を減算する。即ち、加減算器 156は、 検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (メッセージ u)の積算値から 、求めたい枝からのメッセージ uを減算して、その減算値 (j = lから d— 1までの∑u) を求める。さらに、加減算器 156には、その減算値 (j = 1から d - 1までの∑ u)に、受 信用メモリ 104から供給された受信データ D104を加算して、その結果得られる 6ビット の値をメッセージ D105 (メッセージ V )として出力する。
[0079] 以上のように、ノ リアブルノード計算器 103では、式(1)の演算が行われ、メッセ一 ジ v.が求められる。
[0080] なお、図 9の検査行列 Hの列の重みの最大は 5であるため、即ち、バリアブルノード に供給されるメッセージの最大数は 5であるため、ノ リアブルノード計算器 103は、 5 個のメッセージ (u )を遅延させる FIFOメモリ 155を有して!/、る。列の重みが 5未満の 列のメッセージを計算するときには、 FIFOメモリ 155における遅延量力 その列の重 みの値に減らされる。
[0081] また、カロ減算器 156は、レジスタ 154から供給される 9ビットの値 D152から、 FIFOメ モリ 155から供給される 6ビットの値 D153を減算するとともに、受信用メモリ 104から供 給される 6ビットの受信データ D104を加算する演算を行うから、その演算結果は、 6ビ ットのメッセージ D105で表すことができる最小値未満となる力 または最大値を越える ことがある。加減算器 156は、演算結果が、 6ビットのメッセージ D105で表すことがで きる最小値未満である場合には、その最小値にクリッピングし、演算結果が、 6ビット のメッセージ D105で表すことができる最大値を越える場合には、その最大値にクリツ ビングする。
[0082] 図 10の復号装置では、検査行列 Hの重みにしたがって、制御部 105から制御信号 が与えられる。そして、図 10の復号装置によれば、枝用メモリ 100および 102、並び にチェックノード計算器 101およびバリアブルノード計算器 103の FIFOメモリ 127, 1 33, 155の容量さえ足りれば、制御信号のみを変えることで様々な検査行列 Hの LDP C符号を復号することができる。
[0083] なお、図示しないが、図 10の復号装置において、復号の最終段においては、式(1 )のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最 終的な復号結果として出力される。
[0084] 図 10の復号装置を繰り返し用いて、 LDPC符号を復号する場合には、チェックノー ド演算とバリアブルノード演算とが交互に行われる。即ち、図 10の復号装置では、チ エックノード計算器 101によるチェックノード演算の結果を用いて、バリアブルノード計 算器 103によりバリアブルノード演算が行われ、ノリアブルノード計算器 103によるバ リアブルノード演算の結果を用いて、チェックノード計算器 101によりチェックノード演 算が行われる。
[0085] 従って、 323の枝を有する図 9の検査行列 Hを用いた 1回の復号に、 323 X 2=646ク ロック (clock)を必要とする。例えば、 50回の繰り返し復号を行うためには、符号長であ る 108個の符号(受信データ)を 1フレームとして、その 1フレームを受信する間に、 646 X 50=32300クロック動作することが必要であり、受信周波数の約 300 (^32300/108) 倍の高速動作が必要になる。受信周波数が数十 MHzであるとすると、 GHz以上の速 度での動作を要求されることになる
[0086] また、図 10の復号装置を、例えば、 50台連接して、 LDPC符号を復号する場合に は、 1フレーム (frame)目のバリアブルノード演算を行っている間に、 2フレーム目のチ エックノード演算を行い、 3フレーム目のバリアブルノード演算を行う、というように、複 数のノリアブルノード演算とチェックノード演算とを同時に行うことができる。この場合 、 108個の符号を受信する間に、 323個の枝を計算すればよいので、復号装置は、受 信周波数の約 3 (^323/108)倍の周波数で動作すればよいことになり、十分に実現 可能である。
しかしながら、この場合、回路規模が、単純には、図 10の復号装置の 50倍になる。
[0087] 次に、全ノードの演算を同時に行うことによって復号を行う場合 (foil parallel decodin g)の復号装置の実装法にっ 、て説明する。 [0088] この実装法については、例えば、非特許文献 1に記載されている。
[0089] 図 13は、図 9の検査行列 Hで表現される符号 (符号化率 2/3、符号長 108)を復号す る復号装置の一例の構成を示して ヽる。
[0090] 図 13の復号装置では、枝用メモリ 202または 206から、 323個ある枝に対応するメ ッセージデータを全て同時に読み出し、そのメッセージデータを用いて、 323個の枝 に対応する新たなメッセージデータを演算する。さらに、その演算の結果求められた 新たなメッセージデータが全て同時に後段の枝用メモリ 206または 202に格納されて いく。そして、図 13の復号装置を繰り返し用いることで繰り返し復号が実現される。
[0091] 図 13において、復号装置は、 1つの受信用メモリ 205、 2つの枝入れ替え装置 200 および 203、 2つの枝用メモリ 202および 206、 36個のチェックノード計算器 201乃
1 至 201 、 108個のノリアブルノード計算器 204乃至 204 力らなる。以下、各部に
36 1 108
ついて詳細に説明する。
[0092] 枝用メモリ 206は、前段のバリアブルノード計算器 204乃至 204 力ものメッセージ
1 108
D206乃至 D206 を全て同時に格納し、次の時刻(次のクロックのタイミング)に、メッ
1 108
セージ D206乃至 D206 を、メッセージ D207乃至 D207 として読み出し、次段の枝
1 108 1 108
入れ替え装置 200に、メッセージ D200(D200乃至 D200 )として供給する。枝入れ替
1 108
え装置 200は、枝用メモリ 206から供給されたメッセージ D200乃至 D200 の順番を
1 108
、図 9の検査行列 Hにしたがって並び替え (入れ替え)、チェックノード計算器 201乃
1 至 201 〖こ、メッセージ D201乃至 D201 として供給する。
36 1 36
[0093] チェックノード計算器 201乃至 201 は、枝入れ替え装置 200から供給されるメッセ
1 36
ージ D201乃至 D201 を用いて式(7)にしたがって演算を行い、その演算の結果得ら
1 36
れるメッセージ D202乃至 D202 を、枝用メモリ 202に供給する。
1 36
[0094] 枝用メモリ 202は、前段のチェックノード計算器 201乃至 201 力も供給されるメッ
1 36
セージ D202乃至 D202 を全て同時に格納し、次の時刻に、そのすベてのメッセージ
1 36
D202乃至 D202 を、メッセージ D203乃至 D203 として、次段の枝入れ替え装置 20
1 36 1 36
3に供給する。
[0095] 枝入れ替え装置 203は、枝用メモリ 202から供給されたメッセージ D203乃至 D203
1 3 の順番を図 9の検査行列 Hにしたがって並び替え、ノ リアブルノード計算器 204乃 至 204 〖こ、メッセージ D204乃至 D204 として供給する。
108 1 108
[0096] ノリアブルノード計算器 204乃至 204 は、枝入れ替え装置 203から供給されるメ
1 108
ッセージ D204乃至 D204 と、受信用メモリ 205から供給される受信データ D205乃
1 108 1 至 D205 を用いて式(1)にしたがって演算を行い、その演算の結果得られるメッセ
108 一 ジ D206乃至 D206 を、次段の枝用メモリ 206に供給する。
1 108
[0097] 図 14は、チェックノード演算を同時に行う図 13のチェックノード計算器 201 (m=l m
, 2, ···, 36)の構成例を示している。
[0098] 図 14のチェックノード計算器 201では、図 11のチェックノード計算器 101と同様に m
して、式(7)のチェックノード演算が行われる力 そのチェックノード演算力 すべての 枝について同時に行われる。
[0099] 即ち、図 14のチェックノード計算器 201では、枝入れ替え装置 200から供給される m
図 9の検査行列 Hの各列に対応するバリアブルノードからのメッセージ D221乃至 D22
1
1 (V)が全て同時に読み込まれ、それぞれの下位 5ビットである絶対値 D222乃至 D2
9 i 1
22 (|v|)力LUT221乃至 221にそれぞれ供給される。また、メッセージ D221乃至 D2
9 i 1 9 1
21 (V)の最上位ビットである 1ビットの符号ビット D223乃至 D223力 EXOR回路 226
9 i 1 9 1 乃至 226にそれぞれ供給されるとともに、 EXOR回路 225に供給される。
9
[0100] LUT221乃至 221は、絶対値 D222乃至 D222 (|v|)に対して、式(7)における φ(|
1 9 1 9 i
v I)の演算を行った 5ビットの演算結果 D224乃至 D224 ( φ (|v|))をそれぞれ読み出し i 1 9 i
、それぞれを減算器 223乃至 223【こ供給する。また、 LUT221乃至 221 ίま、演算
1 9 1 9 結果 D224乃至 D224 (φ (|ν|))を加算器 222に供給する。
1 9 i
[0101] 力!]算器 222は、演算結果 D224乃至 D224 ( φ ( |))の値の総和(1行分の演算結
1 9 i
果の総和)を演算し、 9ビットの演算結果 D225(i=lから 9の∑ φ (|v|))を、減算器 22 3乃至 223に供給する。減算器 223乃至 223は、演算結果 D225から、演算結果 D
1 9 1 9
224乃至 D224 ( φ (|ν|))をそれぞれ減算し、 5ビットの減算値 D227乃至 D227を、 L
1 9 i 1 9
UT224乃至 224に供給する。即ち、減算器 223乃至 223は、全ての枝からのメッ
1 9 1 9
セージ Vから求められた φ (|v|)の積算値から、求めたい枝からのメッセージ Vから求め られた φ(|ν|)を減算して、その減算値 D227乃至 D227 (i=lから 8までの∑ φ(|ν|))を i 1 9 i
LUT224乃至 224にそれぞれ供給する。 LUT224乃至 224は、減算値 D227乃至 D227に対して、式(7)における φ— ∑ φ (|ν|》の演算を行った 5ビットの演算結果 D22
9 i
8乃至 D228を読み出して出力する。
1 9
[0102] 一方、 EXOR回路 225は、全ての符号ビット D223乃至 D223の排他的論理和を演
1 9
算することにより、符号ビット D223乃至 D223の乗算を行い、 1ビットの乗算値 D226 (l
1 9
行分の符号ビットの乗算値(i= 1から 9までの nsign (v) ) )を EXOR回路 226乃至 22 i 1
6にそれぞれ供給する。 EXOR回路 226乃至 226は、乗算値 D226と符号ビット D22
9 1 9
3乃至 D223それぞれとの排他的論理を演算することにより、乗算値 D226を、符号ビ
1 9
ット D223乃至 D223それぞれで除算した 1ビットの除算値 D229乃至 D229 (i= lから
1 9 1 9
8までの nsign (V ) )を求めて出力する。
[0103] チェックノード計算器 201では、 LUT224乃至 224力 出力された 5ビットの演算 m 1 9
結果 D228乃至 D228それぞれを下位 5ビットとするとともに、 EXOR回路 226乃至 22
1 9 1
6力も出力された除算値 D229乃至 D229それぞれを最上位ビットとする合計 6ビット
9 1 9
力 チェックノード演算の結果得られるメッセージ D230乃至 D230として出力される。
1 9
[0104] 以上のように、チェックノード計算器 201では、式(7)の演算が行われ、メッセージ m
uが求められる。
[0105] なお、図 14では、各メッセージが符号ビットを合わせて合計 6ビットに量子化されて いるものとして、チェックノード計算器 201を表している。また、図 14の回路は 1つの m
チェックノードに相当する。ここで処理の対象として 、る図 9の検査行列 Hにつ 、ては 、その行数である 36行のチェックノードが存在するため、図 13の復号装置は、図 14 に示したようなチェックノード計算器 201を 36個有して!/、る。
m
[0106] ここで、図 14のチェックノード計算器 201では、 9個のメッセージを同時に計算する m
ことができる。そして、ここで処理の対象としている図 9の検査行列 Hの行の重みは、 第 1行が 8で、第 2乃至第 36行が 9であるため、即ち、チェックノードに供給されるメッ セージの数が、 8のケースが 1つと、 9のケースが 29あるため、チェックノード計算器 2 01は、図 14の回路と同様の 8つのメッセージを同時に計算することができる回路構
1
成となっており、残りのチェックノード計算器 201乃至 201 は、図 14の回路と同一
2 36
構成となっている。
[0107] 図 15は、バリアブルノード演算を同時に行う図 13のバリアブルノード計算器 204 ( p = l, 2, · · · , 108)の構成例を示している。
[0108] 図 15のバリアブルノード計算器 204では、図 12のバリアブルノード計算器 103と同
P
様にして、式(1)のノ リアブルノード演算が行われる力 そのノ リアブルノード演算が
、すべての枝について同時に行われる。
[0109] 即ち、図 15のバリアブルノード計算器 204では、枝入れ替え装置 203から供給さ
P
れる、検査行列 Hの各行に対応するチェックノードからの 6ビットのメッセージ D251乃
1 至 D251 (メッセージ u)が全て同時に読み込まれ、それぞれ加算器 252乃至 252に
5 j 1 5 供給されるとともに、加算器 251に供給される。また、バリアブルノード計算器 204に
P
は、受信用メモリ 205から受信データ D271が供給され、その受信データ D271は、カロ 減算器 252乃至 252に供給される。
1 5
[0110] カロ算器 251は、全てのメッセージ D251乃至 D251 (メッセージ u)を積算し、 9ビット
1 5 j
の積算値 D252 (1列分のメッセージの総和値 (j = 1から 5までの∑ u) )を加減算器 25 2乃至 252に供給する。カロ減算器 252乃至 252は、加算値 D252から、メッセージ D
1 5 1 5
251乃至 D251 (メッセージ u)をそれぞれ減算する。即ち、力!]減算器 252乃至 252
1 5 j 1 5 は、全ての枝からのメッセージ uの積算値 D252から、求めたい枝からのメッセージ D25 1乃至 D251 (メッセージ u)をそれぞれ減算して、その減算値 (j = lから 4までの∑u)
1 5 j j を求める。
[0111] さらに、加減算器 252乃至 252は、減算値 (j = lから 4までの∑u)に、受信データ
1 5 j
D271 (u )を加算して、 6ビットの加算値 D253乃至 D253を、ノ リアブルノード演算の
Oi 1 5
結果として出力する。
[0112] 以上のように、ノ リアブルノード計算器 204では、式(1)の演算が行われ、メッセ
P 一 ジ Vが求められる。
[0113] なお、図 15では、各メッセージが符号ビットを合わせて合計 6ビットに量子化されて いるものとして、ノ リアブルノード計算器 204を表している。また、図 15の回路は 1つ
P
のバリアブルノードに相当する。ここで処理の対象としている図 9の検査行列 Hについ ては、その列数である 108列のバリアブルノードが存在するから、図 13の復号装置は 、図 15に示したような回路を 108個有している。
[0114] ここで、図 15のバリアブルノード計算器 204では、 5個のメッセージを同時に計算 することができる。そして、ここで処理の対象としている図 9の検査行列 Hは、重みが 5 , 3, 2, 1の列が、それぞれ、 18列、 54列、 35列、 1列あるので、バリアブルノード計 算器 204乃至 204 のうちの 18個は、図 15の回路と同一構成となっており、残りの 5
1 108
4個、 35個、 1個は、図 15の回路と同様の 3, 2, 1つのメッセージをそれぞれ同時に 計算することができる回路構成となっている。
[0115] なお、図示しないが、図 13の復号装置においても、図 10における場合と同様に、 復号の最終段においては、式(1)のバリアブルノード演算の代わりに、式(5)の演算 が行われ、その演算結果が最終的な復号結果として出力される。
[0116] 図 13の復号装置によれば、 323個ある枝に対応するメッセージすべてを 1クロック で同時に計算することができる。
[0117] 図 13の復号装置を繰り返し用いて復号する場合には、チェックノード演算とバリア ブルノード演算とを交互に行い、 1回の復号を 2クロックで行うことができる。従って、 例えば、 50回の復号を行うためには、符号長が 108個の符号を 1フレームとする受信 データを受信する間に 2 X 50=100クロック動作すれば良いことになり、ほぼ受信周波 数と同一の動作周波数でよいことになる。一般的に、 LDPC符号は、符号長が数千か ら数万と大きいことから、図 13の復号装置を用いれば、復号回数を極めて多くするこ とができ、誤り訂正性能の向上を期待することができる。
[0118] し力しながら、図 13の復号装置は、タナーグラフのすべての枝に対応するメッセ一 ジの演算を、並列で行うため、回路規模が、符号長に比例して大きくなる。また、図 1 3の復号装置を、ある符号長の、ある符号化率の、ある検査行列 Hを持つ LDPC符号 の復号を行う装置として構成した場合、その復号装置において、他の符号長や、他 の符号化率、他の検査行列 Hを持つ LDPC符号の復号を行うことは困難となる。即ち 、図 13の復号装置は、図 10の復号装置のように、制御信号を変えるだけでは、様々 な符号を復号することに対処することが困難であり、符号依存性が高い。
[0119] 図 10および図 13の復号装置の他に、一つでも全てでもなぐ 4つずつのメッセージ の計算を同時に行う実装法について、例えば、非特許文献 2に述べられているが、こ の場合、メモリの異なるアドレスからの同時読み出し、もしくは同時書き込みを避ける ことが一般的には容易でなぐメモリアクセス制御が困難であるという問題がある。 [0120] この問題を解決するため、ランダムな符号ではなぐ部分的にパラレルな復号器の 実装に親和性の高い符号および復号装置について報告されている (例えば、非特許 文献 3と 4参照)。し力 ながら、非特許文献 3に記載されている復号装置の実現方法 は特定の符号のみに対応するものであり、 1つの復号器で様々な符号長、符号化率 の符号を復号することは困難である。
[0121] また、図 16に示すように、 6 X 6の単位行列、その単位行列の 1のうち 1個以上が 0 になった行列(以下、適宜、準単位行列という)、単位行列または準単位行列をサイク リックシフト (cyclic shift)した行列(以下、適宜、シフト行列という)、単位行列、準単位 行列、またはシフト行列のうちの 2以上 (複数)の和(以下、適宜、和行列という)、 6 X 6 の 0行列の組み合わせで表すことが可能な検査行列 Hを有する LDPC符号、もしくは 行や列の置換により、これらの行列の組み合わせで表すことが可能な検査行列 Hを 有する LDPC符号であれば、符号長、符号化率が異なる符号であっても復号可能な 復号装置がある (例えば、特許文献 1参照)。
[0122] なお、図 16の検査行列 Hは、図 9に示した検査行列 Hを、 6 X 6の行列の単位に間 隔を空けて表している。また、図 16の検査行列 Hを構成する 6 X 6の単位行列、準単 位行列、シフト行列、和行列、 0行列を、以下、適宜、構成行列という。
[0123] 図 17乃至図 22を参照して、図 16の検査行列 Hで表現される LDPC符号を復号する 復号装置について説明する。
[0124] 図 17は、図 16の検査行列 Hで表現される LDPC符号を復号する復号装置 400の構 成の一例を示すブロック図である。
[0125] 復号装置 400は、復号途中結果格納用メモリ 410、サイクリックシフト回路 411、 6つ の計算器 412乃至計算器 412力もなる計算部 412、復号途中結果格納用メモリ 41
1 6
3、サイクリックシフト回路 414、 6つの計算器 415乃至計算器 415からなる計算部 4
1 6
15、受信用メモリ 416、および制御部 417から構成される。
[0126] ここで、計算器 412 (k=l,2, · · · , 6)で行われる演算と、計算器 415で行われる演 k k
算について、式を用いて説明する。
[0127] 具体的には、計算部 412は、上述した式(7)と、以下に表す式 (8)にしたがう第 1の 演算を行い、その第 1の演算の結果である復号途中結果 uを復号途中結果格納用メ モリ 410に供給して格納させる。計算部 415は、上述した式(5)にしたがう第 2の演算 を行い、その第 2の演算の結果である復号途中結果 Vを復号途中結果格納用メモリ 4 10に供給して格納させる。
[0128] [数 8]
V j— V"~ Udv
•••(8)
[0129] なお、式(8)の u は、検査行列 Hの i列のメッセージを求めようとする枝からのチエツ
dv
クノード演算の途中結果 (ここでは、チヱックノード演算結果そのもの)を表して 、る。 即ち、 u は、求めたい枝に対応する復号途中結果である。
dv
[0130] 即ち、上述した式(5)にしたがう第 2の演算の結果得られる復号途中結果 Vは、受信 値 uと検査行列 Hの i列の各行の 1に対応するすべての枝からのチェックノード演算
Oi
の復号途中結果 uとを加算したものであるので、上述した式(7)に用いられる値 Vは、 式(5)にしたがう第 2の演算の結果得られる復号途中結果 Vから、検査行列 Hの i列の 、各行の 1に対応する枝からのチヱックノード演算の復号途中結果 uのうち、メッセ一 ジを求めようとする枝力ものチェックノード演算の復号途中結果 u を引 、た値となる。
dv
つまり、式(7)の演算に用いられる値 Vを求める式(1)の演算は、上述した式(5)と式
(8)を組み合わせた演算である。
[0131] 従って、復号装置 400では、計算部 412による式(7)および式 (8)にしたがう第 1の 演算と、計算部 415による式 (5)にしたがう第 2の演算とが交互に行われ、計算部 41
5が、最後の第 2の演算の結果を復号結果として出力することにより、 LDPC符号の繰 り返し復号を行うことができる。
[0132] なお、ここでは、式(7)と式 (8)にしたがう第 1の演算結果を、復号途中結果 uと記載 するが、この復号途中結果 uは、式(7)のチ ックノード演算結果 uに等しい。
[0133] また、第 2の演算により求められる式(5)の Vは、式(1)のバリアブルノード演算結果
Vに対して、メッセージを求めようとする枝からのチェックノード演算結果 uを加算した ものであるから、検査行列 Hの 1列(1つのバリアブルノード)に対して、 1つだけ求めら れる。
[0134] 復号装置 400では、計算部 412が、計算部 415による第 2の演算の結果である検 查行列 Hの列に対応する復号途中結果 vを用いて、第 1の演算を行い、その演算の 結果得られる検査行列 Hの i列の、各行の 1に対応する枝のメッセージ (各チェックノ 一ドが各枝に出力するメッセージ)の枝力 のチェックノード演算の復号途中結果 uを 復号途中結果格納用メモリ 413に格納する。従って、復号途中結果格納用メモリ 41 3の容量は、チェックノード演算の結果を格納する場合と同様に、検査行列 Hの 1の 数 (全枝数)と量子化ビット数とを乗算した値となる。
[0135] 一方、計算部 415は、計算部 412による第 1の演算の結果である検査行列 Hの例 の、各行の" 1"に対応する復号途中結果 uと受信値 uを用いて、第 2の演算を行い、 その演算の結果得られる i列に対応する復号途中結果 Vを復号途中結果格納用メモリ 410に格納する。従って、復号途中結果格納用メモリ 410に必要な容量は、検査行 列 Hの" 1"の数より少ない検査行列 Hの列数、即ち、 LCPC符号の符号長と復号途中 結果 Vの量子化ビット数とを乗算した値となる。
[0136] その結果、バリアブルノード演算の結果を格納する場合に比べて、復号途中結果 格納用メモリ 410のメモリ容量を削減することができ、これにより、復号装置 400の回 路規模を小さくすることができる。
[0137] 以下、図 17の復号装置 400の各部の動作について詳細に説明する。
[0138] 復号途中結果格納用メモリ 410には、計算部 415から、計算部 415による第 2の演 算の結果である検査行列 Hの 6つの列に対応する 6つの復号途中結果 D415が供給 され、復号途中結果格納用メモリ 410は、計算部 415から供給された 6つの復号途中 結果 D415を、第 1アドレス力も順に格納 (記憶)する。
[0139] 即ち、復号途中結果格納用メモリ 410の第 1アドレスには、検査行列 Hの列に対応 する復号途中結果のうち、第 1列目力 第 6列目の復号途中結果 Vが格納される。そ して、同様に、第 2アドレスには、第 7列目力も第 12列目の復号途中結果 Vが格納さ れ、第 3アドレスには、第 13列目力も第 18列目の復号途中結果が格納される。以後 、同様に、第 103列目力も第 108列目までの復号途中結果 Vが、 6個ずつ、第 4ァドレ スカも第 18アドレスまで格納され、計 108個の復号途中結果 Vが復号途中結果格納 用メモリ 410に格納される。従って、復号途中結果格納用メモリ 410のワード (word) 数は、図 16の検査行列 Hの列数 (LDPC符号の符号長)である 108を、同時に読み書 きする復号途中結果の数である 6で割り算した 18となる。
[0140] また、復号途中結果格納用メモリ 410は、既に格納してある復号途中結果 D415か ら、後段の計算部 412が求めようとする復号途中結果 uの対応する検査行列 Hの行 において" 1"になっている復号途中結果 Vを 6つ同時に読み出し、復号途中結果 D41 0として、サイクリックシフト回路 411に供給する。
[0141] なお、復号途中結果格納用メモリ 410は、例えば、 6つの復号途中結果を同時に読 み書き可能なシングルポート RAMで構成される。また、復号途中結果格納用メモリ 41 0には、計算部 415の第 2の演算により演算された列に対応する復号途中結果 D414 が格納されるので、復号途中結果格納用メモリ 410に格納されるデータ量、即ち、復 号途中結果格納用メモリ 410に必要とされる記憶容量は、復号途中結果 D414の量 子化ビット数と、検査行列 Hの列数 (LDPC符号の符号長)との乗算値である。
[0142] サイクリックシフト回路 411には、復号途中結果格納用メモリ 410力も 6つの復号途 中結果 D410が供給されるとともに、制御部 417から、その復号途中結果 D410に対応 する検査行列 Hの 1が、検査行列 Hにおいて元となる単位行列などを幾つサイクリック シフトであるかの情報 (Matrixデータ)を表す制御信号 D619が供給される。サイクリツ クシフト回路 611は、制御信号 D619を元に、 6つの復号結果 D410を並べ替えるサイ クリックシフトを行い、その結果を復号途中結果 D411として、計算部 412に供給する。
[0143] 計算部 412は、 6つの計算器 412乃至 412力もなる。計算部 412には、サイクリツ
1 6
クシフト回路 411から、計算部 415による第 2の演算の結果得られた 6つの復号途中 結果 D411 (v)が供給されるとともに、復号途中結果格納用メモリ 413から、前回、計 算器 412乃至 412による第 1の演算の結果得られた 6つの復号途中結果 D413 (u)
1 6 j が供給され、その 6つの復号途中結果 D411と 6つの復号途中結果 D413が、計算器 4 12乃至 412にそれぞれ供給される。また、計算部 412には、制御部 417から制御
1 6
信号 D419が供給され、その制御信号 D419が、計算器 412乃至 412に供給される。
1 6
なお、制御信号 D419は、 6つの計算器 412乃至 412に共通の信号である。
1 6
[0144] 計算器 412乃至 412は、それぞれ復号途中結果 D411と復号途中結果 D413を用
1 6
V、て、式(7)と式 (8)にしたがって第 1の演算を行 、、復号途中結果 D412 (V )を求め る。計算部 412は、計算器 412乃至 412による演算の結果得られる検査行列 Hの 6 つの 1に対応する 6つの復号途中結果 D412を復号途中結果格納用メモリ 413に供 給する。
[0145] 復号途中結果格納用メモリ 413は、例えば、 6つの復号途中結果を同時に読み書 き可能な、 2つのシングルポート RAMカゝら構成される。復号途中結果格納用メモリ 41 3には、計算部 412から 6つの復号途中結果 D412が供給されるとともに、制御部 417 力も復号途中結果 413の読み書きを制御する制御信号 D420が供給される。
[0146] 復号途中結果格納用メモリ 413は、制御信号 D420に基づいて、計算部 412から供 給される 6つの復号途中結果 D412をまとめて格納すると同時に、既に格納してある 6 つの復号途中結果 D412を読み出し、復号途中結果 D413として、計算部 412とサイク リックシフト回路 414に供給する。即ち、復号途中結果格納用メモリ 413は、計算部 4 12とサイクリックシフト回路 414に供給する復号途中結果 D413の読み出しと、計算部 412から供給される復号途中結果 D412の書き込みとを、同時に行う。
[0147] なお、復号途中結果格納用メモリ 413には、計算部 412の第 1の演算により演算さ れた検査行列 Hの i列の、各行の 1に対応する枝力 の第 1の演算の復号途中結果 D 412が格納されるので、復号途中結果格納用メモリ 413に格納されるデータ量、即ち 、復号途中結果格納用メモリ 413に必要とされる記憶容量は、復号途中結果 D412の 量子化ビット数と、検査行列 Hの 1の数との乗算値となる。
[0148] サイクリックシフト回路 414には、復号途中結果格納用メモリ 413から 6つの復号途 中結果 D413 (復号途中結果 u)が供給されるとともに、制御部 417から、その復号途 中結果 D413に対応する検査行列 Hの 1が検査行列 Hにおいて元となる単位行列など を幾つサイクリックシフトしたものであるかの情報 (Matrixデータ)を表す制御信号 D42 1が供給される。サイクリックシフト回路 414は、制御信号 D421を元に、 6つの復号途 中結果 D413を並べ替えるサイクリックシフトを行 、、その結果を復号途中結果 D414と して、計算部 415に供給する。
[0149] 計算部 415は、 6つの計算器 415乃至 415力もなる。計算部 415には、サイクリツ
1 6
クシフト回路 414から 6つの復号途中結果 D414が供給され、その復号途中結果 D414 1S 計算器 415乃至 415のそれぞれに供給される。また、計算部 415には、受信用
1 6
メモリ 417から 6つの受信データ D417 (LDPC符号)が供給され、その受信データ D41 7が、計算器 415乃至 415のそれぞれに供給される。さらに、計算部 417には、制御
1 6
部 417から制御信号 D422が供給され、その制御信号 D422が計算器 415乃至 415
1 6 に供給される。なお、制御信号 D422は、 6つの計算器 417乃至 417に共通の信号
1 6
である。
[0150] 計算器 415乃至 415は、それぞれ復号途中結果 D414と受信データ D417とを用い
1 6
て、式(5)にしたがって、それぞれ第 2の演算を行い、復号途中結果 D415を求める。 計算部 415は、計算器 415乃至 415の第 2の演算の結果得られる 6つの復号途中
1 6
結果 D415(v)を、復号途中結果格納用メモリ 410に供給する。また、計算部 415は、 V、ま行う演算が最後の第 2の演算である場合、その演算の結果得られる 6つの復号 途中結果 D415を、最終的な復号結果として出力する。
[0151] 受信用メモリ 416は、通信路を通して受信した受信値 (符号ビット) D416から計算し た符号ビットの 0らしさの値である受信 LLR (対数尤度比)のデータ(受信データ) D41 6を格納する。
[0152] 即ち、受信用メモリ 416の第 1のアドレスには、検査行列 Hの列に対応する受信デ ータ D416のうち、検査行列 Hの第 1列目力も第 6列目までに対応する受信データ D41 6が格納される。そして、第 2のアドレスには、検査行列 Hの第 7列目力も第 12列目ま でに対応する受信データ D416が格納され、第 3アドレスには、検査行列 Hの第 13列 目力も第 18列目までに対応する受信データ D416が格納される。以後、同様に、第 4 アドレス力も第 18アドレスまでに、検査行列 Hの第 19列目力も第 108列目までに対 応する受信データ D416が、 6つずつ格納される。
[0153] そして、受信用メモリ 616は、既に格納している受信データ D416を、バリアブルノー ド演算に必要となる順番に 6つずつ読み出し、受信データ D417として計算部 415に 供給する。
[0154] なお、受信用メモリ 416は、例えば、 6つの受信データを同時に読み書き可能なシ ングルポート RAM力も構成される。また、受信用メモリ 416に格納されるデータ量、即 ち、受信用メモリ 315に必要とされる記憶容量は、 LDPC符号の符号長と、受信デー タ D416の量子化ビット数との乗算値である。さらに、受信用メモリ 416のワード (word) 数は、 LDPC符号の符号長、即ち、検査行列 Hの列数である 108を、同時に読み出 す受信データ D417の数である 6で割り算した値の 18である。
[0155] 制御部 417は、制御信号 D418をサイクリックシフト回路 411に、制御信号 D419を計 算部 412に供給することにより、それぞれを制御する。また、制御部 417は、制御信 号 D420を復号途中結果格納用メモリ 413に、制御信号 D421をサイクリックシフト回路 414に、制御信号 D421を計算部 415にそれぞれ供給することにより、それぞれを制 御する。
[0156] 復号途中結果格納用メモリ 410、サイクリックシフト回路 411、計算部 412、復号途 中結果格納用メモリ 413、サイクリックシフト回路 414、計算部 415の順で、データが 一巡することで、復号装置 400は、 1回の復号を行うことができる。復号装置 400では 、所定の回数だけ繰り返して復号が行われた後、計算部 415による第 2の演算の結 果である復号途中結果 D415が、最終的な復号結果として出力される。
[0157] 図 18は、図 17の計算部 412の計算器 412の構成例を示すブロック図である。
1
[0158] なお、図 18では、計算器 412について説明するが、計算器 412乃至計算器 412
1 2 6 も同様に構成される。
[0159] また、図 18では、前回の計算部 412による第 1の演算の結果得られる各復号途中 結果 (u )が符号ビットを合わせて合計 6ビット (bit)に量子化され、計算部 415による第 dv
2の演算の結果得られる各復号途中結果 (V)が 9ビットに量子化されているものとして 、計算器 412を表している。さらに、図 18の計算器 412には、クロック ckが供給され
1 1
、このクロック ckは、必要なブロックに供給されるようになっている。そして、各ブロック は、クロック ckに同期して処理を行う。
[0160] 図 18の計算器 412は、制御部 417から供給される制御信号 D419に基づいて、復
1
号途中結果格納用メモリ 413から 1つずつ読み込まれる、前回の計算部 412による 第 1の演算の結果得られた復号途中結果 D413 (u )と、サイクリックシフト回路 411か dv
ら 1つずつ読み込まれる復号途中結果 D411 (V)とを用いて、式(7)と式 (8)にしたがう 第 1の演算を行う。
[0161] 即ち、計算器 412には、サイクリックシフト回路 411から供給される 6つの 9ビットの
1
復号途中結果 D411(v)のうちの、 1つの復号途中結果 D411が供給されるとともに、復 号途中結果格納用メモリ 413から供給される、前回の計算部 412による演算の結果 である 6つの 6ビットの復号途中結果 D413 (u)のうちの、前回の計算部 412による演 算の結果である 1つの復号途中結果 D413が供給され、その 9ビットの復号途中結果 D411 (V)と 6ビットの復号途中結果 D413 (u )力 減算器 431に供給される。また、計
dv
算器 412には、制御部 417から制御信号 D419が供給され、その制御信号 D419がセ
1
レクタ 435とセレクタ 442に供給される。
[0162] 減算器 431は、 9ビットの復号途中結果 D411 (v)力も 6ビットの復号途中結果 D413 ( u)を減算し、その 6ビットの減算値 D431を出力する。即ち、減算器 431は、式 (8)に したがって演算を行い、その演算の結果である減算値 D431 (V )を出力する。
[0163] 減算器 431により出力された 6ビットの減算値 D431のうち、最上位ビットの正負を示 す符号ビット D432 (sign (v) )力 XOR回路 440に供給され、下位 5ビットの絶対値 D43 3 (|v |)力 SLUT432に供給される。
[0164] LUT432は、絶対値 D433(|v.|)に対して、式(7)における φ (|ν.|)の演算を行った 5ビッ トの演算結果 D434 ( φ (|ν |))を読み出し、加算器 433と FIFOメモリ 438に供給する。
[0165] カロ算器 433は、演算結果 D434 ( φ (|ν |))とレジスタ 434に格納されて!、る 9ビットの 値 D435とを加算することにより、演算結果 D434を積算し、その結果得られる 9ビットの 積算値をレジスタ 434に再格納する。なお、検査行列 Ηの 1行に亘る全ての 1に対応 する復号途中結果 D411から求められた絶対値 D433(|v |)に対する演算結果が積算さ れた場合、レジスタ 434はリセットされる。
[0166] 検査行列 Hの 1行に亘る復号途中結果 D411が 1つずつ読み込まれ、レジスタ 434に 1行分の演算結果 D434が積算された積算値が格納された場合、制御部 417から供 給される制御信号 D419は、 0から 1に変化する。例えば、行の重み (row weight)が「9 」である場合、制御信号 D419は、 1から 8クロック目までは、「0」となり、 9クロック目で は「1」となる。
[0167] 制御信号 D419が「1」の場合、セレクタ 435は、レジスタ 434に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411 (復号途中結 果 V)から求められた φ (|v |)が積算された 9ビットの値 D435 (i= 1から i=dまでの∑ φ ( |v |))を選択し、値 D436として、レジスタ 436に出力して格納させる。レジスタ 436は、 格納している値 D436を、 9ビットの値 D437として、セレクタ 435とカロ算器 437に供給す る。制御信号 D419が「0」の場合、セレクタ 435は、レジスタ 436から供給された値 D43 7を選択し、レジスタ 436に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全 ての 1に対応する復号途中結果 D411 (復号途中結果 V)力も求められた φ (|v |)が積算 されるまで、レジスタ 436は、前回積算された φ (|v|)を、セレクタ 435とカロ算器 437に 供給する。
[0168] 一方、 FIFOメモリ 438は、レジスタ 436から新たな値 D437 (i= lから i=dまでの∑ φ (|ν|))が出力されるまでの間、 LUT432が出力した演算結果 ΙΜ34 ( φ (|ν |))を遅延し 、 5ビットの値 D438として減算器 437に供給する。減算器 437は、レジスタ 436から供 給された値 D437から、 FIFOメモリ 438から供給された値 D438を減算し、その減算結 果を、 5ビットの減算値 D439として LUT439に供給する。即ち、減算器 437は、検査 行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411 (復号途中結果 V)から求 められた φ (|ν |)の積算値から、求めたい枝に対応する復号途中結果、即ち、検査行 列 Ηの所定の 1に対応する復号途中結果 D411 (復号途中結果 V)から求められた φ (| vj)を減算して、その減算値 (i= lから i=d— 1までの∑ φ (|ν|))を減算値 D439として LUT439に供給する。
[0169] LUT439は、減算値 D439 (i= lから i=d— 1までの∑ φ (|v.|))に対して、式(7)にお ける φ— 1 (∑ φ (|ν |))の演算を行った 5ビットの演算結果 D440 ( _1(∑ (|ν|》)を出力 する。
[0170] 以上の処理と並行して、 EXOR回路 440は、レジスタ 441に格納されている 1ビット の値 D442と符号ビット D432との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D441をレジスタ 441に再格納する。なお、検査行 列 Ηの 1行に亘る全ての 1に対応する復号途中結果 D411から求められた符号ビット D 432が乗算された場合、レジスタ 441はリセットされる。
[0171] 検査行列 Ηの 1行に亘る全ての 1に対応する復号途中結果 D411から求められた符 号ビット D432が乗算された乗算結果 D441 (i= 1力ら dまでの nsign(v))がレジスタ 44 1に格納された場合、制御部 417から供給される制御信号 D419は、「0」から「1」に変 化する。
[0172] 制御信号 D419が「1」の場合、セレクタ 442は、レジスタ 441に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての 1に対応する復号途中結果 D411から求められ た符号ビット D432が乗算された値 D442 (i= 1から 1= までの nsign(Vi))を選択し、 1 ビットの値 D443としてレジスタ 443に出力して格納させる。レジスタ 443は、格納して いる値 D443を、 1ビットの値 D444としてセレクタ 442と EXOR回路 445に供給する。制 御信号 D419が「0」の場合、セレクタ 442は、レジスタ 443から供給された値 D444を選 択し、レジスタ 443に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての 1 に対応する復号途中結果 D411 (復号途中結果 V)力 求められた符号ビット D432が 乗算されるまで、レジスタ 443は、前回格納した値を、セレクタ 442と EXOR回路 445 に供給する。
[0173] 一方、 FIFOメモリ 444は、レジスタ 443から新たな値 D444 (i= 1から i=dまでの Ilsi gn(v))が EXOR回路 445に供給されるまでの間、符号ビット D432を遅延し、 1ビットの 値 D445として EXOR回路 445に供給する。 EXOR回路 445は、レジスタ 443から供給 された値 D444と、 FIFOメモリ 444力 供給された値 D445との排他的論理和を演算す ることにより、値 D444を、値 D445で除算し、 1ビットの除算結果を除算値 D446として出 力する。即ち、 EXOR回路 445は、検査行列 Hの 1行に亘る全ての 1に対応する復号 途中結果 D411から求められた符号ビット D432 (sign(v))の乗算値を、検査行列 Hの所 定の 1に対応する復号途中結果 D411から求められた符号ビット D432 (sign(v))で除 算して、その除算値 (i= lから i=d— 1までの nsign(v))を除算値 D446として出力す る。
[0174] 計算器 412では、 LUT439から出力された 5ビットの演算結果 D440を下位 5ビットと
1
するとともに、 EXOR回路 445から出力された 1ビットの除算値 D446を最上位ビットと する合計 6ビットが復号途中結果 D412 (復号途中結果 u)として出力される。
[0175] 以上のように、計算器 412では、式(7)と式 (8)の演算が行われ、復号途中結果 u
1 i が求められる。
[0176] なお、図 16の検査行列 Hの行の重みの最大は 9であるため、即ち、計算器 412に
1 供給される復号途中結果 D411 (V)と復号途中結果 D413 (u )の最大数は 9であるた dv
め、計算器 412は、 9個の復号途中結果 D411から求められる 9個の演算結果 D434 (
1
Φ (|ν|))を遅延させる FIFOメモリ 438と、 9個の符号ビット D432を遅延させる FIFOメモ リ 444を有している。行の重みが 9未満の行のメッセージを計算するときには、 FIFOメ モリ 438と FIFOメモリ 444における遅延量力 その行の重みの値に減らされる。
[0177] 図 19は、図 17の計算部 415の計算器 415の構成例を示すブロック図である。
1
[0178] なお、図 19では、計算器 415について説明するが、計算器 415乃至計算器 415
1 2 6 も同様に構成される。
[0179] また、図 19では、計算部 412による第 1の演算の結果得られる各復号途中結果 (u )が符号ビットを合わせて合計 6ビットに量子化されているものとして、計算器 415を
1 表している。さらに、図 19の計算器 415には、クロック ckが供給され、このクロック ck
1
は、必要なブロックに供給されるようになっている。そして、各ブロックは、クロック ckに 同期して処理を行う。
[0180] 図 19の計算器 415は、制御部 417から供給される制御信号 D422に基づいて、受
1
信用メモリ 416から 1つずつ読み込まれる受信データ D417 (受信値 u )と、サイクリック
0i
シフト回路 414から 1つずつ読み込まれる復号途中結果 D414 (u)とを用いて、式(5) にしたがう第 2の演算を行う。
[0181] 即ち、計算器 415では、サイクリックシフト回路 414から、検査行列 Hの各行の 1に
1
対応する 6ビットの復号途中結果 D414 (復号途中結果 u)が 1つずつ読み込まれ、そ の復号途中結果 D414が、加算器 471に供給される。また、計算器 415では、受信用
1
メモリ 416から 6ビットの受信データ D417が 1つずつ読み込まれ、加算器 475に供給 される。さらに、計算器 415には、制御部 417から制御信号 D422が供給され、その
1
制御信号 D422は、セレクタ 473に供給される。
[0182] 加算器 471は、復号途中結果 D414 (復号途中結果 u)とレジスタ 472に格納されて いる 9ビットの値 D471とを加算することにより、復号途中結果 D414を積算し、その結果 得られる 9ビットの積算値を、レジスタ 472に再格納する。なお、検査行列 Hの 1列に 亘る全ての 1に対応する復号途中結果 D414が積算された場合、レジスタ 472はリセッ トされる。
[0183] 検査行列 Hの 1列に亘る復号途中結果 D414が 1つずつ読み込まれ、レジスタ 472 に 1列分の復号途中結果 D414が積算された値が格納された場合、制御部 417から 供給される制御信号 D422は、「0」から「1」に変化する。例えば、列の重みが「5」であ る場合、制御信号 D422は、 1から 4クロック目までは「0」となり、 5クロック目では「1」と なる。
[0184] 制御信号 D422が「1」の場合、セレクタ 473は、レジスタ 472に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からの復号途中結果 D414 (復号途中結果 u ) が積算された 9ビットの値 D471 (j = lから dまでの∑u)を選択し、レジスタ 474に出力
V j
して格納させる。レジスタ 474は、格納している値 D471を、 9ビットの値 D472として、セ レクタ 471と加算器 475に供給する。制御信号 D422が「0」の場合、セレクタ 473は、 レジスタ 474力 供給された値 D472を選択し、レジスタ 474に出力し再格納させる。 即ち、検査行列 Hの 1列に亘る全ての枝からの復号途中結果 D414 (復号途中結果 u ) が積算されるまで、レジスタ 474は、前回積算された値を、セレクタ 473と加算器 475 に供給する。
[0185] カロ算器 475は、 9ビットの値 D472と、受信用メモリ 416から供給された 6ビットの受信 データ D417とを加算して、その結果得られる 6ビットの値を復号途中結果 D415 (復号 途中結果 V)として出力する。
[0186] 以上のように、計算器 415では、式(5)の演算が行われ、復号途中結果 Vが求めら
1
れる。
[0187] なお、図 9の検査行列 Hの列の重みの最大は 5であるため、即ち、計算器 415に供
1 給される復号途中結果 uの最大数は 5であるため、計算器 415は、 6ビットの復号途 j 1
中結果 uを最大 5個加算する。従って、計算器 415の出力は、 9ビットの値となってい j 1
る。
[0188] 図 20は、図 17の復号途中結果格納用メモリ 413の構成例を示すブロック図である
[0189] 復号途中結果格納用メモリ 413は、スィッチ 501と 504、および 2つのシングルポー ト RAMである復号途中結果格納用 RAM502と 503から構成される。
[0190] この復号途中結果格納用メモリ 413の各部について詳細に説明する前に、まず、 復号途中結果格納用 RAM502と 503へのデータの格納方法について説明する。
[0191] 復号途中結果格納用 RAM502と 503は、計算部 412による第 1の演算の結果得ら れ、スィッチ 501を介して供給された復号途中結果 D412を格納する。 [0192] 具体的には、復号途中結果格納用 RAM502の第 1アドレス力 第 9アドレスには、 図 16の検査行列 Hの第 1行目から第 6行目までの 1に対応する復号途中結果 D412( D501)力 各行ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される。
[0193] 即ち、第 j行第冽を、(j,i)と表すこととすると、復号途中結果格納用 RAM502の第 1 アドレスには、図 16の検査行列 Hの構成行列である (1,1)から (6,6)の 6 X 6の単位行 列の 1に対応するデータ力 第 2アドレスには、図 16の検査行列 Hの構成行列である ( 1,25)から (6,30)のシフト行列(6 X 6)の単位行列を右方向に 5つだけサイクリックシフト したシフト行列)の 1に対応するデータが格納される。第 3アドレス力 第 8アドレスも 同様に図 16の検査行列 Hの構成行列と対応づけてデータが格納される。そして、第 9アドレスには、検査行列 Hの (1,102)から (6, 108)のシフト行列(6 X 6の単位行列のう ちの 1行目の 1を 0に置き換えて 1つだけ左方向にサイクリックシフトしたシフト行列)の 1に対応するデータが格納される。ここで、図 16の検査行列 Hの (1,102)から (6,108)の シフト行列においては、 1行目に 1がないため、第 9アドレスにはデータが格納されな い。
[0194] また、復号途中結果格納用 RAM502の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 13行目から第 18行目までの 1に対応するデータが格納される。即 ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方向 に 5つだけサイクリックシフトした行列の 1に対応するデータが格納され、第 11アドレス には、検査行列 Hの (13, 13)から(18, 18)の和行列(6 X 6の単位行列と、 6 X 6の単位 行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である和行列)を構成 するシフト行列の 1に対応するデータが格納される。また、第 12アドレスには、検査行 列 Hの (13, 13)から(18, 18)の和行列を構成する単位行列の 1に対応するデータが格 納される。以下、第 13アドレス力も第 18アドレスについても、検査行列 Hに対応づけ てデータが格納される。
[0195] 即ち、重みが 2以上の構成行列については、その構成行列を、重みが 1である PX P の単位行列、そのコンポーネントである 1のうち 1個以上が 0になった準単位行列、ま たは単位行列もしくは準単位行列をサイクリックシフトしたシフト行列のうちの複数の 和の形で表現したときの、その重みが 1の単位行列、準単位行列、またはシフト行列 の 1の位置に対応するデータ(単位行列、準単位行列、またはシフト行列に属する枝 に対応するメッセージの復号途中結果)は、同一アドレスに格納される。
[0196] 同様に、復号途中結果格納用 RAM502の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 25行目力も第 30行目までの 1に対応するデータ が格納される。即ち、復号途中結果格納用 RAM502のワード数は、 27である。
[0197] 復号途中結果格納用 RAM503の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 7行目力も第 12行目までの 1に対応する復号途中結果 D412(D502)力 各行 ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される。
[0198] 即ち、復号途中結果格納用 RAM503の第 1アドレスには、検査行列 Hの構成行列 である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の 1に対応するデータが、第 2アドレス には、検査行列 Hの構成行列である (7,1)から (12,6)の和行列を構成する第 2のシフト 行列の 1に対応するデータが格納される。以下、第 3アドレス力ゝら第 9アドレスも同様 に検査行列 Hの構成行列と対応づけてデータが格納される。
[0199] 同様に、復号途中結果格納用 RAM503の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 19行目力も第 24行目までの 1に対応するデータが、第 19アド レス力も第 27アドレスには、検査行列 Hの第 31行目力も第 36行目までの 1に対応す るデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果格納 用 RAM503のワード数は、 27である。
[0200] 上述したように、復号途中結果格納用 RAM502と 503のワード (word)数は、 27であ る。即ち、ワード数は、検査行列 Hの行の重み (row weight)の 9と行数の 36とを乗算し 、その乗算結果 (検査行列 Hの 1の数)を、同時に読み出す復号途中結果 D501の数の 6で除算し、さらに、復号途中結果格納用メモリ 413が有する復号途中結果格納用 R AMの個数の 2で除算した値となる。
[0201] 以下、図 20の復号途中結果格納用メモリ 413の各部の動作について詳細に説明 する。
[0202] 復号途中結果格納用メモリ 413には、計算部 412により第 1の演算が行われる場合 、計算部 412から第 1の演算の結果得られる復号途中結果 D412 (Uj)が供給され、そ の復号途中結果 D412が復号途中結果格納用 RAM502または復号途中結果格納用 RAM503のうちの一方の所定のアドレスに書き込まれると同時に、他方から、前回の 計算部 412による第 1の演算の結果得られた復号途中結果 D412 (u)が読み出され、 計算部 412に出力される。一方、計算部 415により第 2の演算が行われる場合、復号 途中結果格納用メモリ 413は、復号途中結果格納用 RAM502または復号途中結果 格納用 RAM503に書き込みを行わず、どちらか一方の RAMの所定のアドレスから復 号途中結果を読み出して、サイクリックシフト回路 414に供給する。
[0203] スィッチ 501には、計算部 412から 6つの復号途中結果 D412が供給されるとともに 、その復号途中結果 D412を書き込むメモリとして、復号途中結果格納用 RAM502ま たは復号途中結果格納用 RAM503の一方の選択を表す制御信号 D420が制御部 4
1
17から供給される。スィッチ 501は、制御信号 D420に基づいて、復号途中結果格納
1
用 RAM502または復号途中結果格納用 RAM503の一方を選択し、その選択した一 方に、 6つの復号途中結果 D412を供給する。
[0204] 復号途中結果格納用 RAM502には、スィッチ 501から 6つの復号途中結果 D412が 、復号途中結果 D501として供給されるとともに、制御部 417からアドレスを表す制御 信号 D420が供給される。復号途中結果格納用 RAM502は、制御信号 D420が表す
2 2 アドレスに既に格納されている前回の計算部 412による第 1の演算の結果得られた 6 つの復号途中結果 D501を読み出し、復号途中結果 D503としてスィッチ 504に供給 する。また、復号途中結果格納用 RAM502は、制御信号 D420が表すアドレスに、ス
2
イッチ 501から供給された 6つの復号途中結果 D501を格納する (書き込む)。
[0205] 復号途中結果格納用 RAM503には、スィッチ 501から 6つの復号途中結果 D412が 、復号途中結果 D502として供給されるとともに、制御部 417からアドレスを表す制御 信号 D420が供給される。復号途中結果格納用 RAM503は、制御信号 D420が表す
3 3 アドレスに既に格納されている前回の計算部 412による第 1の演算の結果得られた 6 つの復号途中結果 D502を読み出し、復号途中結果 D504としてスィッチ 504に供給 する。また、復号途中結果格納用 RAM503は、制御信号 D420が表すアドレスに、ス
3
イッチ 501から供給された 6つの復号途中結果 D502を格納する (書き込む)。 [0206] スィッチ 504には、復号途中結果格納用 RAM502から復号途中結果 D503が供給さ れるか、ある!/ヽは復号途中結果格納用 RAM503から復号途中結果 D504が供給される 。また、制御部 417から、復号途中結果格納用 RAM502または復号途中結果格納用 RAM503の一方の選択を表す制御信号 D420が供給される。スィッチ 504は、制御
4
信号 D420に基づいて、復号途中結果格納用 RAM502または復号途中結果格納用
4
RAM503の一方を選択し、その選択した一方から供給された 6つの復号途中結果を 、 6つの復号途中結果 D413として計算部 412とサイクリックシフト回路 414に供給する
[0207] 図 21は、復号途中結果格納用メモリ 413の復号途中結果格納用 RAM502と復号 途中結果格納用 RAM503の読み出しと書き込みの動作を説明するタイミングチヤ一 トである。
[0208] なお、図 21において、横軸は、時間(t)を表している。また、図 21では、図 22の〇 印内に記載された数字 iの構成行列の 1に対応するデータの読み出しを Riと表し、そ のデータの書き込み (格納)を Wiと表す。
[0209] 復号途中結果格納用メモリ 413では、計算部 412により第 1の演算が行われる場合 、復号途中結果格納用 RAM502が、制御信号 D420に基づいて、既に格納している
2
、前回の計算部 412の第 1の演算の結果得られた復号途中結果 D501のうち、同一ァ ドレスに格納している検査行列 Hの第 1行目から第 6行目までの 1に対応する復号途 中結果 D501を、 1クロックに 6つずつ、 9回(9クロック分)読み出し(図中、 RO乃至 R8) 、スィッチ 504を介して、計算部 412に供給する。即ち、図 16の検査行列 Hの行重み は、 9であるため、検査行列 Hの各行の 1に対応する復号途中結果は 9つあり、復号 途中結果格納用 RAM502は、第 1行目から第 6行目までの 1に対応する 6つの復号 途中結果 D501を、 6つ単位で 9回読み出す。
[0210] 次に、復号途中結果格納用 RAM503は、制御信号 D420に基づいて、既に格納し
3
ている、前回の計算部 412による第 1の演算の結果得られた復号途中結果 D502のう ち、同一アドレスに格納している検査行列 Hの第 7行目力も第 12行目までの 1に対応 する復号途中結果 D502を、 6つ単位で 9回続けて読み出し (R9乃至 R17)、スィッチ 504を介して、計算部 412に供給する。 [0211] ここで、ノードを 1つずつ計算する計算器 412乃至 412または 415乃至 415では
1 6 1 6
、ノード次数 (node degree)分の遅延が生じる。例えば、計算器 412乃至 412では 9
1 6 クロック分の遅延が生じる。また、復号装置 400が 100MHzを超える高速動作を行う場 合、計算器 412乃至 412では、さらに 3クロック分程度の遅延が生じ、 3クロック分程
1 6
度のパイプラインィ匕が必要となる。
[0212] 即ち、計算部 412が第 1の演算を行うために必要な時間、即ち復号途中結果格納 用メモリ 413から復号途中結果 D413が読み出されてから、その復号途中結果 D413を 用いた第 1の演算の結果得られる復号途中結果 D412が復号途中結果格納メモリ 41 3に供給されるまでの時間は、 12クロック分の時間 T1となる。
[0213] この場合、復号途中結果格納用 RAM502から復号途中結果 D503の 1回目の読み 出し (RO)が開始されて力も T1時間後に、計算部 412から復号途中結果格納メモリ 4 13への、第 1の演算の結果得られる検査行列 Hの第 1行目から第 6行目までの 1に対 応する 6つの復号途中結果 D412の供給が開始される。その復号途中結果 D413は、 スィッチ 501を介して復号途中結果 D501として復号途中結果格納用 RAM502に供給 され、復号途中結果格納用 RAM502は、その復号途中結果 D501を、制御信号 D420 に基づいて、既に読み出された復号途中結果 D503が格納されていたアドレスに 9回
2
続けて格納する(WO乃至 W8)。
[0214] 即ち、復号途中結果格納用 RAM502により復号途中結果 D503の 9回の読み出し( RO乃至 R8)が終了してから、復号途中結果格納用 RAM502により復号途中結果 D5 01の 9回の格納(WO乃至 W8)が開始されるまでに、 3クロック分の時間 Tw(=Tl— 9)の待ち時間が生じる。
[0215] その結果、復号途中結果格納用 RAM503からの 9回の読み出し (R9乃至 R17)が 終了してから、時間 Twが経過後に復号途中結果格納用 RAM502への 9回の格納( WO乃至 W8)が終了する。従って、復号途中結果格納用 RAM503からの 9回の読み 出し (R9乃至 R17)が終了してから、復号途中結果格納用 RAM502からの 9回の読 み出し (R18乃至 R26)を開始するまでに、時間 Twの待ち時間が必要となる。
[0216] また、サムプロダクトアルゴリズムを近似して実装する方法なども提案されている力 この方法では、性能の劣化を招いてしまう。 [0217] 以上のように、サムプロダクトアルゴリズムをノヽードウエアに実装する場合には、上述 したように、枝に対応するメッセージの演算(チェックノード演算とバリアブルノード演 算、または第 1の演算と第 2の演算)を、 1つずつシリアル (serial)に行う方法、すべて 並列(フルパラレル (foil parallel))に行う方法、幾つかずつ並列(パラレル (parallel))に 行う方法がある。
[0218] し力しながら、 P個ずつ並列に行う方法では、 Pの値が大きいとき、特に計算機 412 の回路規模が大きくなつてしまう。例えば、 Pが 360、符号長が 64800のときに、計算部 412の回路規模は、復号装置 400の全体の 20%、復号装置 400のメモリ (例えば、 復号途中結果格納用メモリ 410、復号途中結果格納用メモリ 413、受信用メモリ 416 など)を除いた論理回路の 60%に達する場合がある。
[0219] また、図 21に示すように、復号途中結果格納用 RAM502と 503のいずれ力 も読 み出しが行われない時間 Twが生じる。即ち、時間 Twの間、第 1の演算を行う計算部 412には、復号途中結果 D413が供給されないので、計算部 412は、第 1の演算を行 わない(遊んでしまう)。特に、ノード次数が小さい場合、時間 Twは相対的に長くなり 、計算部 412を長い間無駄にしていることになる。
[0220] 非特許文献 1 : C. Howland and A. Blanksby, "Parallel Decoding Architectures for Lo w Density Parity Check Codes , Symposium on Circuits and Systems, 2001 非特許文献 2 : E. Yeo, P. Pakzad, B. Nikolic and V. Anantharam, "VLSI Architectur es for iterative Decoders in Magnetic Recording Channels", IEEE Transactions on Magnetics, Vol. 37, No. 2, March 2001
非特許文献 3 : T.Zhang,K.K.Parhi,,,Joint(3,k)- regular LDPC Code and decoder/ enco der design, "IEEE Transactions on Signal Processing, Vol.52, No.4, pp.1065-1079,Apri 1 2004
f^^ j¾ : M.M.Mansour,N.R.Shanbhag,"A novel design methodology for high— p erformance programmable decoder cores for AA- LDPC codes , " Proceedings of IEEE Workshop on Signal Processing Systems 2003(SIPS 2003),pp.29-34,Aug.2003 特許文献 1:特開 2004— 364233号公報
発明の開示 発明が解決しょうとする課題
[0221] 本発明は、このような状況に鑑みてなされたものであり、 LDPC符号の復号を、装置 の大規模ィ匕を抑えつつ精度良く行うことができるようにするものである。
課題を解決するための手段
[0222] 本発明の復号装置は、 LDPC符号の復号のためのチェックノードの演算を行う第 1 の演算部と、 LDPC符号の復号のためのバリアブルノードの演算を行う第 2の演算部 とを備え、第 1の演算部のみが N (Nは P未満の正の整数)個のチェックノードの演算を 同時に行うか、第 2の演算部のみが N個のバリアブルノードの演算を同時に行うか、ま たは第 1の演算部が N個のチヱックノードの演算を同時に行い、かつ第 2の演算部が N個のノ リアブルノードの演算を同時に行うことを特徴とする。
[0223] 本発明の復号方法は、 LDPC符号の復号のためのチェックノードの演算を行う第 1 の演算ステップと、 LDPC符号の復号のためのノ リアブルノードの演算を行う第 2の演 算ステップとを含み、第 1の演算ステップの処理のみが N (Nは P未満の正の整数)個 のチェックノードの演算を同時に行うか、第 2の演算ステップの処理のみ力 個のバリ ァブルノードの演算を同時に行うか、または第 1の演算ステップの処理が N個のチェッ クノードの演算を同時に行い、かつ第 2の演算ステップの処理力 個のノ リアブルノ ードの演算を同時に行うことを特徴とする。
[0224] 本発明においては、 N (Nは P未満の正の整数)個のチェックノードの演算を同時に 行う力 N個のバリアブルノードの演算を同時に行う力 または N個のチェックノードの 演算を同時に行い、かつ N個のバリアブルノードの演算を同時に行う。
発明の効果
[0225] 本発明によれば、 LDPC符号の復号を、装置の大規模ィ匕を抑えつつ精度良く行うこ とが可能となる。
図面の簡単な説明
[0226] [図 1]LDPC符号の検査行列 Hを説明する図である。
[図 2]パリティ部が下三角行列になっている検査行列 Hを示す図である。
[図 3]LDPC符号の復号手順を説明するフローチャートである。 [図 4]メッセージの流れを説明する図である。
[図 5]LDPC符号の検査行列 Hの例を示す図である。
[図 6]検査行列 Hのタナーグラフを示す図である。
[図 7]バリアブルノードを示す図である。
[図 8]チェックノードを示す図である。
[図 9]LDPC符号の検査行列 Hの例を示す図である。
[図 10]ノード演算を 1つずつ行う LDPC符号の復号装置の構成例を示すブロック図で ある。
[図 11]図 10のチェックノード計算器の構成例を示すブロック図である。
[図 12]図 10のノリアブルノード計算器の構成例を示すブロック図である。
[図 13]ノード演算を全て同時に行う LDPC符号の復号装置の構成例を示すブロック図 である。
[図 14]図 13のチェックノード計算器の構成例を示すブロック図である。
[図 15]図 13のノリアブルノード計算器の構成例を示すブロック図である。
[図 16]6 X 6単位に分割した検査行列 Hを示す図である。
[図 17]ノード演算を 6個同時に行う復号装置の構成例を示すブロック図である。
[図 18]図 17のチェックノード計算器の構成例を示すブロック図である。
[図 19]図 17のノリアブルノード計算器の構成例を示すブロック図である。
[図 20]図 17の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 21]図 17の復号途中結果格納用 RAMの動作を説明するタイミングチャートである
[図 22]復号途中結果に対応する構成行列の位置を示す図である。
圆 23]本発明を適用した復号装置の第 1実施の形態の構成例を示すブロック図であ る。
[図 24]図 23の復号途中結果格納メモリの構成例を示すブロック図である。
[図 25]図 24の復号途中結果格納用 RAMの動作を説明するタイミングチャートである
[図 26]復号途中結果に対応する構成行列の位置を示す図である。 [図 27]図 23の復号装置の復号処理を説明するフローチャートである。
[図 28]本発明を適用した復号装置の第 2実施の形態の構成例を示すブロック図であ る。
[図 29]図 28の受信用メモリの構成例を示すブロック図である。
[図 30]図 28の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 31]受信用メモリと復号途中結果格納用メモリの動作を説明するタイミングチャート である。
[図 32]本発明を適用した復号装置の第 3実施の形態の構成例を示すブロック図であ る。
[図 33]図 32の復号途中結果格納用メモリの構成例を示すブロック図である。
[図 34]本発明を適用した復号装置の第 4実施の形態の構成例を示すブロック図であ る。
[図 35]図 34の復号装置の復号処理を説明するフローチャートである。
符号の説明
[0227] 414 サイクリックシフト回路, 415 計算部, 416 受信用メモリ, 1000 復号 装置, 1101 サイクリックシフト回路, 1102 計算部, 1103, 1104 復号途中 結果格納用メモリ, 1105 制御部, 1202乃至 1205 復号途中結果格納用 RAM , 1499 制御部, 1500 受信用メモリ, 1600 復号途中結果格納用メモリ, 1 502, 1503 受信データ格納用メモリ, 1602, 1603 復号途中結果格納用メモリ , 1799 制御部, 1800 復号途中結果格納用メモリ, 1801, 1802 復号硬判 定結果格納用メモリ, 1803 復号軟判定結果格納用メモリ, 2000 サイクリックシ フト回路, 2001 シンドローム判定部, 2002 復号途中結果格納用メモリ, 200 3 制御部
発明を実施するための最良の形態
[0228] 以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細 に説明する。
[0229] 図 23は、図 16の検査行列 Hで表現される LDPC符号を復号する本発明を適用した 復号装置の第 1実施の形態の構成例を示している。 [0230] 図 23の復号装置 1000は、サイクリックシフト回路 414、計算部 415、受信用メモリ 41 6、サイクリックシフト回路 1101、 3つの計算器 1102乃至 1102からなる計算部 1102、
1 3
復号途中結果格納用メモリ 1103、復号途中結果格納用メモリ 1104、および制御部 11 05から構成される。なお、図 17と同一のものには、同一の符号を付してある。
[0231] サイクリックシフト回路 1101には、復号途中結果格納用メモリ 1104から 6つの復号途 中結果 D1104と、受信用メモリ 416から 6つの受信データ D417 (LDPC符号)が供給さ れる。また、サイクリックシフト回路 1101には、制御部 1105から、その復号途中結果 D1 104に対応する検査行列 Hの 1が、検査行列 Hにお 、て元となる単位行列などを幾つ サイクリックシフトしたものであるかの情報 (Matrixデータ)を表し、さらに 6つの復号途 中結果 D1104または受信データ D417のいずれを選択するかの情報を表す制御信号 D1106が供給される。
[0232] サイクリックシフト回路 1101は、制御信号 D1106を元に、 6つの復号途中結果 D1104 または受信データ D417を選択し、並べ替えるサイクリックシフトを行う。サイクリックシ フト回路 1101は、 6つの復号途中結果 D1104または受信データ D417をサイクリックシ フトした結果のうち、構成行列の上半分(1行目乃至 3行目)または下半分 (4行目乃 至 6行目)の 1に対応する 3つを復号途中結果 D1101として、計算部 1102に供給する
[0233] 計算部 1102は、 3つの計算器 1102乃至 1102からなる。計算部 1102には、サイクリツ
1 3
クシフト回路 1101から、計算部 415による第 2の演算の結果得られた 3つの復号途中 結果 DllOl (v)が供給されるとともに、復号途中結果格納用メモリ 1103から、前回計 算器 1102乃至 1102による第 1の演算の結果得られた構成行列の上半分または下半
1 3
分の 1に対応する 3つの復号途中結果 D1103 (u)が供給され、その 3つの復号途中 結果 D1101と 3つの復号途中結果 D1103が、計算器 1102乃至 1102に供給される。ま
1 3
た、計算部 1102には、制御部 1105力 制御信号 D1107が供給され、その制御信号 D 1107が、計算器 1102乃至 1102に供給される。なお、制御信号 D1107は、 3つの計算
1 3
器 1102乃至 1102に共通の信号である。
1 3
[0234] 計算器 1102乃至 1102は、図 18に示した計算器 412と同様に構成され、それぞれ
1 3 1
復号途中結果 D1101と D1103を用いて、式(7)と式(8)にしたがって第 1の演算を行 い、復号途中結果 D1102 (v )を求める。計算部 1102は、計算器 1102乃至 1102による
i 1 3 演算の結果得られる、構成行列の上半分または下半分の 3つの 1に対応する 3つの 復号途中結果 D1102を復号途中結果格納用メモリ 1103に供給する。
[0235] 復号途中結果格納用メモリ 1103は、例えば、 3つの復号途中結果 D1102を同時に 読み書き可能な、 4つのシングルポート RAM力 構成される。復号途中結果格納用メ モリ 1103には、計算部 1102から 3つの復号途中結果 D1102が供給されるとともに、制 御部 1105から復号途中結果格納用メモリ 1103の読み書きを制御する制御信号 D110 8が供給される。
[0236] 復号途中結果格納用メモリ 1103には、制御信号 D1108に基づいて、計算部 1102か ら供給される 3つの復号途中結果 D1102がまとめて格納されると同時に、既に格納し てある 3つの復号途中結果 D1102が読み出され、復号途中結果 D1103として、計算部 1102とサイクリックシフト回路 414に供給される。即ち、復号途中結果格納用メモリ 110 3に対して、計算部 1102とサイクリックシフト回路 414に供給する復号途中結果 D1103 の読み出しと、計算部 1103力 供給される復号途中結果 D1102の書き込みとが、同 時に行われる。
[0237] なお、復号途中結果格納用メモリ 1103には、計算部 1102の第 1の演算により演算さ れた検査行列 Hの i列の、各行の 1に対応する枝力 の第 1の演算の復号途中結果 D 1102が格納されるので、復号途中結果格納用メモリ 1103に格納されるデータ量、即 ち、復号途中結果格納用メモリ 1103に必要とされる記憶容量は、復号途中結果 D110 2の量子化ビット数と、検査行列 Hの 1の数との乗算値となる。
[0238] サイクリックシフト回路 414、計算部 415、および受信用メモリ 416は、図 17のそれ らと同一であるので説明は省略する。なお、サイクリックシフト回路 414は、復号途中 結果格納用メモリ 1103から 3つずつ供給される 6つの復号途中結果 D1103をサイタリ ックシフトし、 6つの復号途中結果 D414を計算部 415に供給する。
[0239] 復号途中結果格納用メモリ 1104には、サイクリックシフト回路 1101からの復号結果 D 1105が 6つずつ、第 1アドレス力 順に格納され、復号途中結果格納用メモリ 1104か らは既に格納してある復号結果 D1105が出力される。また、復号途中結果格納用メモ リ 1104には、計算部 415から供給された第 2の演算の結果である検査行列 Hの 6つの 列に対応する 6つの復号途中結果 D415が、第 1アドレス力 順に格納される。
[0240] 即ち、復号途中結果格納用メモリ 1104の第 1アドレスには、図 17の復号途中結果 格納用メモリ 410と同様に、検査行列 Hの列に対応する復号途中結果のうち、第 1列 目力 第 6列目の復号途中結果 Vが格納される。そして、同様に、第 2アドレスには、 第 7列目力も第 12列目の復号途中結果 Vが格納され、第 3アドレスには、第 13列目 力 第 18列目の復号途中結果が格納される。以後、同様に、第 19列目力も第 108 列目までの復号途中結果 Vが、 6個ずつ、第 4アドレス力も第 18アドレスまで格納され 、計 108個の復号途中結果 Vが復号途中結果格納用メモリ 1104に格納される。
[0241] 従って、復号途中結果格納用メモリ 1104のワード (word)数は、図 16の検査行列 H の列数 (LDPC符号の符号長)である 108を、同時に読み書きする復号途中結果の数 である 6で割り算した 18となる。
[0242] 復号途中結果格納用メモリ 1104からは、既に格納してある復号途中結果 D415から 、後段の計算部 1102が求めようとする復号途中結果 uの対応する検査行列 Hの行に おいて" 1"になっている復号途中結果 Vが 6つ同時に読み出され、復号途中結果 D11 04として、サイクリックシフト回路 1101に供給される。
[0243] なお、復号途中結果格納用メモリ 1104は、例えば、 6つの復号途中結果を同時に 読み書き可能なシングルポート RAMで構成される。また、復号途中結果格納用メモリ 1104には、計算部 415の第 2の演算により演算された列に対応する復号途中結果 D4 15が格納されるので、復号途中結果格納用メモリ 1104に格納されるデータ量、即ち、 復号途中結果格納用メモリ 1104に必要とされる記憶容量は、復号途中結果 D415の 量子化ビット数と、検査行列 Hの列数 (LDPC符号の符号長)との乗算値である。
[0244] 制御部 1105は、制御信号 D1106をサイクリックシフト回路 1101に、制御信号 D1107を 計算部 1102に供給することにより、それぞれを制御する。また、制御部 1105は、制御 信号 D1108を復号途中結果格納用メモリ 1103に、制御信号 D421をサイクリックシフト 回路 414に、制御信号 D422を計算部 415にそれぞれ供給することにより、それぞれ を制御する。
[0245] サイクリックシフト回路 1101、計算部 1102、復号途中結果格納用メモリ 1103、サイタリ ックシフト回路 414、計算部 415、復号途中結果格納用メモリ 1104の順で、データが 一巡することで、復号装置 1000は、 1回の復号を行うことができる。復号装置 1000で は、例えば、所定の回数だけ繰り返して復号が行われた後、計算部 415による第 2の 演算の結果である復号途中結果 D1104が、最終的な復号結果として出力される。
[0246] 図 24は、図 23の復号途中結果格納用メモリ 1103の構成例を示すブロック図である
[0247] 復号途中結果格納用メモリ 1103は、スィッチ 1201と 1206、並びに 4つのシングルポ ート RAMである復号途中結果格納用 RAM1202乃至 1205から構成される。
[0248] この復号途中結果格納用メモリ 1103の各部について詳細に説明する前に、まず、 復号途中結果格納用 RAM1202乃至 1205へのデータの格納方法について説明する
[0249] 復号途中結果格納用 RAM1202乃至 1205には、計算部 1102による第 1の演算の結 果得られ、スィッチ 1201を介して供給された復号途中結果 D1102が格納される。
[0250] 具体的には、復号途中結果格納用 RAM1202の第 1アドレス力 第 9アドレスには、 図 16の検査行列 Hの第 1行目から第 3行目までの 1に対応する復号途中結果 D1102( D1201)が、各行ともに横方向(列方向)に詰めた形に (0を無視した形で)格納される
[0251] 即ち、第 j行第冽を、(j,i)と表すこととすると、復号途中結果格納用 RAM1202の第 1 アドレスには、図 16の検査行列 Hの構成行列である (1,1)から (6,6)の 6 X 6の単位行 列の上半分(1乃至 3行目)の 1に対応するデータ力 第 2アドレスには、図 16の検査 行列 Hの構成行列である (1,25)から (6,30)のシフト行列(6 X 6)の単位行列を右方向 に 5つだけサイクリックシフトしたシフト行列)の上半分の 1に対応するデータが格納さ れる。第 3アドレス力も第 8アドレスも同様に図 16の検査行列 Hの構成行列の上半分 と対応づけてデータが格納される。
[0252] そして、第 9アドレスには、検査行列 Hの (1,103)から (6, 108)のシフト行列(6 X 6の単 位行列のうちの 1行目の" 1 "を" ΟΊこ置き換えて 1つだけ左方向にサイクリックシフトし たシフト行列)の上半分の〃 1Ίこ対応するデータが格納される。ここで、図 16の検査 行列 Hの (1,103)から (6,108)のシフト行列においては、 1行目に〃 1 "がないため、第 9ァ ドレスにはデータが格納されな!、。 [0253] また、復号途中結果格納用 RAM1202の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 13行目から第 15行目までの〃 1Ίこ対応するデータが格納される。 即ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方 向に 5つだけサイクリックシフトした行列の上半分の〃 1Ίこ対応するデータが格納され 、第 11アドレスには、検査行列 Hの (13,13)から(18,18)の和行列(6 X 6の単位行列と 、 6 X 6の単位行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である 和行列)を構成するシフト行列の上半分の〃 1Ίこ対応するデータが格納される。
[0254] また、第 12アドレスには、検査行列 Hの (13,13)から(18,18)の和行列を構成する単 位行列の上半分の" 1Ίこ対応するデータが格納される。以下、第 13アドレス力も第 1 8アドレスにつ 、ても、検査行列 Hの構成行列の上半分に対応づけてデータが格納 される。
[0255] 同様に、復号途中結果格納用 RAM1202の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 25行目力も第 27行目までの〃 1Ίこ対応するデー タが格納される。即ち、復号途中結果格納用 RAM1202のワード数は、 27である。
[0256] また、復号途中結果格納用 RAM1203の第 1アドレス力も第 9アドレスには、図 16の 検査行列 Hの第 4行目から第 6行目までの〃 1Ίこ対応する復号途中結果 D1102(D120 2)が、各行ともに横方向に詰めた形に格納される。
[0257] 即ち、復号途中結果格納用 RAM1203の第 1アドレスには、図 16の検査行列 Hの構 成行列である (1,1)から (6,6)の 6 X 6の単位行列の下半分 (4乃至 6行目 )の" 1Ίこ対応 するデータが、第 2アドレスには、図 16の検査行列 Hの構成行列である (1,25)から (6,3 0)のシフト行列(6 X 6)の単位行列を右方向に 5つだけサイクリックシフトしたシフト行 列)の下半分の" 1Ίこ対応するデータが格納される。第 3アドレス力 第 9アドレスも同 様に図 16の検査行列 Hの構成行列の下半分と対応づけてデータが格納される。
[0258] また、復号途中結果格納用 RAM1203の第 10アドレス力も第 18アドレスには、図 16 の検査行列 Hの第 16行目から第 18行目までの〃 1Ίこ対応するデータが格納される。 即ち、第 10アドレスには、検査行列 Hの (13,7)から (18,12)の 6 X 6の単位行列を右方 向に 5つだけサイクリックシフトした行列の下半分の〃 1Ίこ対応するデータが格納され 、第 11アドレスには、検査行列 Hの (13,13)から(18,18)の和行列(6 X 6の単位行列と 、 6 X 6の単位行列を右方向に 1つだけサイクリックシフトしたシフト行列との和である 和行列)を構成するシフト行列の下半分の〃 1Ίこ対応するデータが格納される。また 、第 12アドレスには、検査行列 Hの (13,13)から(18,18)の和行列を構成する単位行列 の下半分の" 1Ίこ対応するデータが格納される。以下、第 13アドレス力も第 18ァドレ スについても、検査行列 Hの構成行列の下半分に対応づけてデータが格納される。
[0259] 同様に、復号途中結果格納用 RAM1203の第 19アドレス力も第 27アドレスには、図 16の検査行列 Hに対応づけて、第 28行目力も第 30行目までの〃 1Ίこ対応するデー タが格納される。即ち、復号途中結果格納用 RAM1203のワード数は、 27である。
[0260] 復号途中結果格納用 RAM1204の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 7行目から第 9行目までの 1に対応する復号途中結果 D1102(D1203)が、各 行ともに横方向に詰めた形に格納される。
[0261] 即ち、復号途中結果格納用 RAM1204の第 1アドレスには、検査行列 Hの構成行列 である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の上半分(7乃至 9行目)の" 1Ίこ対応 するデータが、第 2アドレスには、検査行列 Hの構成行列である (7,1)から (12,6)の和行 列を構成する第 2のシフト行列の上半分の〃 1Ίこ対応するデータが格納される。以下 、第 3アドレス力 第 9アドレスも同様に検査行列 Hの構成行列の上半分と対応づけて データが格納される。
[0262] 同様に、復号途中結果格納用 RAM1204の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 19行目力 第 21行目までの〃 1Ίこ対応するデータが、第 19ァ ドレス力も第 27アドレスには、検査行列 Hの第 31行目力も第 33行目までの〃 1Ίこ対 応するデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果 格納用 RAM1204のワード数は、 27である。
[0263] 復号途中結果格納用 RAM1205の第 1アドレス力 第 9アドレスには、図 16の検査行 列 Hの第 10行目力 第 12行目までの" 1Ίこ対応する復号途中結果 D1102(D1204)が 、各行ともに横方向に詰めた形に格納される。
[0264] 即ち、復号途中結果格納用 RAM1205の第 1アドレスには、検査行列 Hの構成行列 である (7,1)から (12,6)の和行列(6 X 6の単位行列を右方向に 2つだけサイクリックシフ トした第 1のシフト行列と、右方向に 4つだけサイクリックシフトした第 2のシフト行列の 和である和行列)を構成する第 1のシフト行列の下半分(10乃至 12行目)の" 1Ίこ対 応するデータが、第 2アドレスには、検査行列 Hの構成行列である (7,1)から (12,6)の和 行列を構成する第 2のシフト行列の下半分の〃 1Ίこ対応するデータが格納される。以 下、第 3アドレス力 第 9アドレスも同様に検査行列 Hの構成行列の下半分と対応づ けてデータが格納される。
[0265] 同様に、復号途中結果格納用 RAM1205の第 10アドレス力も第 18アドレスには、図 16の検査行列 Hの第 22行目力も第 24行目までの〃 1Ίこ対応するデータが、第 19ァ ドレス力も第 27アドレスには、検査行列 Hの第 34行目力も第 36行目までの〃 1Ίこ対 応するデータが、図 16の検査行列 Hに対応づけて格納される。即ち、復号途中結果 格納用 RAM1205のワード数は、 27である。
[0266] 上述したように、復号途中結果格納用 RAM1202乃至 1205のワード (word)数は、 27 である。即ち、ワード数は、検査行列 Hの行の重み (row weight)の 9と行数の 36とを乗 算し、その乗算結果 (検査行列 Hの〃 1 "の数)を、同時に読み出す復号途中結果 D120 1の数の 3で除算し、さらに、復号途中結果格納用メモリ 1103が有する復号途中結果 格納用 RAMの個数の 4で除算した値となる。
[0267] 以下、図 24の復号途中結果格納用メモリ 1103の各部の動作について詳細に説明 する。
[0268] 復号途中結果格納用メモリ 1103には、計算部 1102により第 1の演算が行われる場 合、計算部 1102力 第 1の演算の結果得られる復号途中結果 D 1102 (u)が供給され 、その復号途中結果 D1102が復号途中結果格納用 RAM1202乃至 1205のいずれか 1 つの所定のアドレスに書き込まれると同時に、その他の 1つから、前回の計算部 1102 による第 1の演算の結果得られた復号途中結果 D1102が読み出され、復号途中結果 D1103として計算部 1102に出力される。一方、計算部 415により第 2の演算が行われ る場合、復号途中結果格納用メモリ 1103では、復号途中結果格納用 RAM1202乃至 1 205の書き込みが行われず、 V、ずれ力 1つの復号途中結果格納用 RAM1202乃至 120 5の所定のアドレス力も復号途中結果 D1102を読み出して、復号途中結果 D1103とし てサイクリックシフト回路 414に供給される。
[0269] スィッチ 1201には、計算部 1102から 3つの復号途中結果 D1102が供給されるととも に、その復号途中結果 D1102を書き込むメモリとして、復号途中結果格納用 RAM120 2乃至 1205のいずれか 1つの選択を表す制御信号 D1108が制御部 1105から供給さ
1
れる。スィッチ 1201は、制御信号 D1108に基づいて、復号途中結果格納用 RAM 1202
1
乃至 1205のいずれ力 1つを選択し、その選択した復号途中結果格納用 RAM1202乃 至 1205に、 3つの復号途中結果 D1102を供給する。
[0270] 復号途中結果格納用 RAM1202乃至 1205には、スィッチ 1201から 3つの復号途中結 果 D1102が、それぞれ復号途中結果 D1201乃至 D1204として供給されるとともに、制 御部 1105からアドレスを表す制御信号 D1108乃至 D1108が供給される。復号途中結
2 5
果格納用 RAM1202乃至 1205は、それぞれ制御信号 D1108乃至 D1108が表すアドレ
2 5
スに既に格納されている前回の計算部 1102による第 1の演算の結果得られた 3つの 復号途中結果 D1201乃至 D1204を読み出し、復号途中結果 D1205乃至 D1208として スィッチ 1206に供給する。また、復号途中結果格納用 RAM1202乃至 1205には、それ ぞれ、制御信号 D1108乃至 D1108が表すアドレスに、スィッチ 1201力 供給された 3
2 5
つの復号途中結果 D1201乃至 D1204が格納される。
[0271] スィッチ 1206には、復号途中結果格納用 RAM1202からの復号途中結果 D1205、復 号途中結果格納用 RAM1203からの復号途中結果 D1206、復号途中結果格納用 RA M1204からの復号途中結果 D1207、または復号途中結果格納用 RAM1205からの復 号途中結果 D1208が供給される。
また、制御部 1105から、復号途中結果格納用 RAM1202乃至 1205のいずれか 1つの 選択を表す制御信号 D1108が供給される。スィッチ 1206は、制御信号 D1108に基づ
6 6 いて、復号途中結果格納用 RAM1202乃至 1205のいずれ力 1つを選択し、その選択 した 1つ力 供給された 3つの復号途中結果 D1205乃至 D1208が、 3つの復号途中結 果 D1103として計算部 1102またはサイクリックシフト回路 414に供給される。
[0272] 図 25は、復号途中結果格納用メモリ 1103の復号途中結果格納用 RAM1202乃至復 号途中結果格納用 RAM1205の読み出しと書き込みの動作を説明するタイミングチヤ ートである。 [0273] なお、図 25において、横軸は、時間(t)を表している。また、図 25では、図 26の〇 印内に記載された数字 i
0の構成行列の上半分の〃 1Ίこ対応するデータの読み出しを
Riと表し、そのデータの書き込み (格納)を Wiと表す。さらに、図 26の〇印内に記載
0 0
された数字 iの構成行列の下半分の〃 1〃に対応するデータの読み出しを Riと表し、
1 1 そのデータの書き込みを Wiと表す。
1
[0274] 復号途中結果格納用メモリ 1103では、計算部 1102により第 1の演算が行われる場 合、復号途中結果格納用 RAM1202から、制御信号 D1108に基づいて、既に格納し
2
ている、前回の計算部 1102の第 1の演算の結果得られた復号途中結果 D1201のうち 、同一アドレスに格納している検査行列 Hの第 1行目から第 3行目までの" 1Ίこ対応 する復号途中結果 D120KD1205)が、 3つずつ 9回(9クロック分)読み出され (RO乃
0 至 R8 )、スィッチ 1206を介して、復号途中結果 D1103として計算部 1102に供給される
0
。即ち、図 16の検査行列 Hの行重みは、 9であるため、検査行列 Hの各行の" 1Ίこ対 応する復号途中結果は 9つあり、復号途中結果格納用 RAM1202からは、第 1行目か ら第 3行目までの" 1Ίこ対応する 3つの復号途中結果 D1201が、 3つ単位で 9回読み 出される。
[0275] 次に、復号途中結果格納用 RAM 1203からは、制御信号 D1108に基づいて、既に
3
格納されている、前回の計算部 1102の第 1の演算の結果得られた復号途中結果 D12 02のうち、同一アドレスに格納されている検査行列 Hの第 4行目から第 6行目までの" 1Ίこ対応する復号途中結果 D1202が、 3つ単位で 9回続けて読み出され(図中、 RO
1 乃至 R8 )、スィッチ 1206を介して、計算部 1102に供給される。
1
[0276] ここで、計算部 1102が第 1の演算を行うために必要な時間、即ち復号途中結果格 納メモリ 1103から復号途中結果 D1103が読み出されてから、その復号途中結果 D110 3を用 、た第 1の演算の結果得られる復号途中結果 D 1102が復号途中結果格納メモ リ 1103に供給されるまでの時間は、 12クロック分の時間 T1であるものとする。
[0277] この場合、復号途中結果格納用 RAM1202から復号途中結果 D1205の 1回目の読 み出し (RO )が開始されてから T1時間後に、計算部 1102から復号途中結果格納用
0
メモリ 1103への、第 1の演算の結果得られる検査行列 Hの第 1行目から第 3行目まで の〃 1Ίこ対応する 3つの復号途中結果 D1102の供給が開始される。その復号途中結 果 D1102は、スィッチ 1201を介して復号途中結果 D1201として復号途中結果格納用 R AM1202に供給され、復号途中結果格納用 RAM1202には、その復号途中結果 D120 2が、制御信号 D1108に基づいて、既に読み出された復号途中結果 D1205が格納さ
2
れていたアドレスに 9回続けて格納される(WO乃至 W8;)。
0 0
[0278] 即ち、復号途中結果格納用 RAM1202からの復号途中結果 D1205の 9回の読み出し
(RO乃至 R8 )が終了してから、復号途中結果格納用 RAM1202への復号途中結果
0 0
D1201の 9回の格納(WO乃至 W8 )が開始されるまでに、 3クロック分の時間 Tw (二
0 0
T1 9)が生じる。その結果、復号途中結果格納用 RAM1203からの 9回の読み出し( RO乃至 R8 )が終了してから、時間 Twが経過後に復号途中結果格納用 RAM1202
1 1
への 9回の格納(WO乃至 W8 )が終了する。
0 0
[0279] し力しながら、復号途中結果格納用メモリ 1103では、次の第 1の演算に用いられる 検査行列 Hの第 7行目から第 9行目までの" 1Ίこ対応する復号途中結果 D1203が、復 号途中結果格納用 RAM1204に格納されているので、復号途中結果格納用 RAM 120 3からの 9回の読み出し (RO乃至 R8 )直後に、復号途中結果格納用 RAM 1204から
1 1
の 9回の読み出し (R9乃至 R17 )を行うことができる。
0 0
[0280] また、復号途中結果格納用 RAM1203からの 9回の読み出し (RO乃至 R8 )が終了
1 1 してから時間 Tw後に、復号途中結果格納用 RAM1203への復号途中結果 D1202の 9 回の格納 (WO乃至 W8 )が開始される。
1 1
[0281] 次に、復号途中結果格納用 RAM1204からの 9回の読み出し (R9乃至 R17 )が終
0 0 了した直後に、次の第 1の演算に用いられる検査行列 Hの第 10行目力も第 12行目ま での 1に対応する復号途中結果 D1204が、復号途中結果格納用 RAM1205から 9回読 み出される(R9乃至 R17 ) oまた、復号途中結果格納用 RAM1204からの 9回の読み
1 1
出し (R9乃至 R17 )が終了してから時間 Tw後に、復号途中結果格納用 RAM 1204
0 0
への復号途中結果 D1203の 9回の格納 (W9乃至 W17 )が開始される。
0 0
[0282] 復号途中結果格納用 RAM1205からの 9回の読み出し (R9乃至 R17 )が終了した
1 1
直後に、次の第 1の演算に用いられる検査行列 Hの第 13行目力 第 15行目までの〃 1Ίこ対応する復号途中結果 D1201が、復号途中結果格納用 RAM1202から 9回読み 出される(R18乃至 R26 ) oまた、復号途中結果格納用 RAM1205からの 9回の読み 出し (R9乃至 R17 )が終了してから時間 Tw後に、復号途中結果格納用 RAM 1205
1 1
への復号途中結果 D1204の 9回の格納 (W9乃至 W17 )が開始される。そして、以
1 1
降同様の処理が繰り返される。
[0283] 以上のように、復号途中結果格納用メモリ 1103では、検査行列 Hの 3行分の" 1Ίこ 対応する復号途中結果 D1102が、 4つの復号途中結果格納用 RAM1202乃至 1205に 順に格納されるので、計算部 1102が第 1の演算を行うために時間 T1が必要な場合 であっても、復号途中結果 D1103を計算部 1102に連続して出力することができる。そ の結果、計算部 1102では、連続して第 1の演算を行うことができる。
[0284] 図 27は、図 23の復号装置 1000の復号処理を説明するフローチャートである。この 処理は、例えば、受信用メモリ 416に復号すべき受信データが格納されたとき、開始 される。
[0285] ステップ S49において、制御部 1105は、復号途中結果格納用 RAM1202乃至 1205 のうちのいずれか 1つを読み出しメモリとして選択し、その選択を表す制御信号 D110 8をスィッチ 1206 (図 24)に供給する。スィッチ 1206は、制御信号 D1108に基づいて
6 6
、復号途中結果格納用 RAM1202乃至 1205を選択し、その選択した復号途中結果格 納用 RAM1202乃至 1205から 3つ単位で供給される復号途中結果 D1205乃至 D1208 を、復号途中結果 D1103としてサイクリックシフト回路 414と計算部 1102に供給する。
[0286] ステップ S49の処理後は、ステップ S50に進み、サイクリックシフト回路 414は、復号 途中結果格納用メモリ 1103 (のスィッチ 1206)から供給される、構成行列の上半分に 対応する 3つの復号途中結果 D1103と下半分に対応する 3つの復号途中結果 D1103 (u)とを合わせて、サイクリックシフトし、計算部 415に供給する。
[0287] 具体的には、サイクリックシフト回路 414には、復号途中結果格納用メモリ 1103から 3つ単位で復号途中結果 D1103が供給されるとともに、制御部 1105から、その復号途 中結果 D1103に対応する Matrixデータを表す制御信号 D421が供給される。サイクリツ クシフト回路 414は、制御信号 D421を元に、構成行列の上半分に対応する 3つの復 号途中結果 D1103と下半分に対応する 3つの復号途中結果 D1103とを合わせて、サ イクリックシフトし (並べ替え)、その結果を復号途中結果 D414として、計算部 415に 供給する。 [0288] ステップ S51において、計算部 415は、第 2の演算を行い、その演算の結果である 復号途中結果 D415を復号途中結果格納用メモリ 1104に供給する。
[0289] 具体的には、計算部 415には、ステップ S50でサイクリックシフト回路 414から 6つ の復号途中結果 D414が供給されるとともに、受信データ用メモリ 416から 6つの受信 データ D417が供給され、復号途中結果 D414と受信データ D417が、計算部 415の計 算器 415乃至 415それぞれに 1つずつ供給される。さらに、計算部 415には、制御
1 6
部 1105から制御信号 D422が供給され、その制御信号 D422が計算器 415乃至 415
1 6 に供給される。
[0290] 計算器 415乃至 415は、復号途中結果 D414と受信データ D417を用いて、制御信
1 6
号 D422に基づいて、式(5)にしたがって、それぞれ第 2の演算を行い、その第 2の演 算の結果得られる検査行列 Hの列に対応する復号途中結果 D415(v)を復号途中結 果格納用メモリ 1104に供給する。
[0291] なお、受信用メモリ 416から供給された受信データ D417に対して、まだ第 1の演算 が行われておらず、復号途中結果格納用メモリ 1103に復号途中結果 D1103が格納さ れていない場合、計算部 415は、復号途中結果 uを初期値に設定し、第 2の演算を 行う。
[0292] ステップ S51の処理後は、ステップ S52に進み、復号途中結果格納用メモリ 1104は 、ステップ S51で計算部 415から供給された復号途中結果 D415(v)を、同一アドレス に格納し、ステップ S 53に進む。
[0293] ステップ S53において、制御部 1105は、計算部 415により、検査行列 Hの列に対応 する全ての復号途中結果 D1104が演算された力どうかを判定し、全ての復号途中結 果 D1104が演算されていないと判定した場合、ステップ S49に戻り、上述した処理を 繰り返す。
[0294] 一方、ステップ S53において、制御部 1105は、計算部 415により、検査行列 Hの列 に対応する全ての復号途中結果 D1104が演算されたと判定した場合、ステップ S54 に進み、サイクリックシフト回路 1101は、制御部 1105力 供給される制御信号 D1106を 元に、復号途中結果格納用メモリ 1104から供給される 6つの復号途中結果 D1104(v) をサイクリックシフトし、その結果を 3つ単位で復号途中結果 D1101として、計算部 110 2に供給する。
[0295] ステップ S54の処理後は、ステップ S55に進み、計算部 1102は、第 1の演算を行い 、その第 1の演算の結果である復号途中結果 D 1102を復号途中結果格納用メモリ 110 3に供給する。
[0296] 具体的には、計算部 1102には、ステップ S54でサイクリックシフト回路 1101から 3つ の復号途中結果 DllOl(v)が供給されるとともに、後述するステップ S57で既に格納さ れた前回の計算部 1102による第 1の演算の結果得られた 3つの復号途中結果 D1102 (D1103) (u)が供給され、その復号途中結果 D1101と D1103が、計算部 1102の計算器 1102乃至 1102のそれぞれに 1つずつ供給される。さらに、計算部 1102には、制御部
1 3
1105から制御信号 D1107が供給され、その制御信号 D1107が計算器 1102乃至 1102
1 3 に供給される。
[0297] 計算器 1102乃至 1102は、それぞれ復号途中結果 D1101と D1103を用いて、制御
1 3
信号 D1107に基づいて、式(7)と式 (8)にしたがって、それぞれ第 1の演算を行い、そ の第 1の演算の結果得られる復号途中結果 D1102 (u)を復号途中結果格納用メモリ 1 103に供給する。
[0298] なお、受信用メモリ 416から供給された受信データ D417に対して、まだ第 1の演算 が行われておらず、復号途中結果格納用メモリ 1103に復号途中結果 D1103が格納さ れていない場合、計算部 1102は復号途中結果 u を 0に設定する。具体的には、例え dv
ば、受信データ D417に対する復号を行う前に、復号途中結果格納用メモリ 1103が 0 に初期化される力 または計算部 1102が復号途中結果格納用メモリ 1103からの入力 を 0にマスクする。
[0299] ステップ S55の処理後は、ステップ S56に進み、制御部 1105は、復号途中結果格 納用 RAM1202乃至 1205のうちのいずれ力 1つを格納メモリとして選択し、その選択を 表す制御信号 D1108をスィッチ 1201 (図 24)に供給する。スィッチ 1201は、制御信号
1
D1108に基づいて、 3つの復号途中結果 D1102を格納する復号途中結果格納用 RA
1
M1202乃至 1205を選択し、その選択した復号途中結果格納用 RAM1202乃至 1205に 、復号途中結果 D1102を供給する。
[0300] ステップ S56の処理後は、ステップ S57に進み、復号途中結果格納用 RAM1202乃 至 1205には、ステップ S56でスィッチ 1201力 供給された 3つの復号途中結果 D1201 乃至 D1204(D1102)が、同一のアドレスに格納され、ステップ S58に進む。
[0301] ステップ S58において、制御部 1105は、計算部 1102により、検査行列 Hの全ての" 1 〃に対応する復号途中結果 D1102が演算された力どうかを判定し、全ての復号途中 結果 D1102が演算されていないと判定した場合、ステップ S54に戻り、上述した処理 を繰り返す。
[0302] 一方、ステップ S57において、制御部 1105は、計算部 1102により、全ての" 1Ίこ対 応する復号途中結果 D1102が演算されたと判定した場合、処理を終了する。
[0303] なお、復号装置 1000は、復号回数だけ図 27の復号処理を繰り返し行い、最後の第 2の演算の結果得られるメッセージ D1104が、最終的な復号結果として出力される。
[0304] 上述した図 23の復号装置 1000では、計算部 1102が 3つの計算器 1102乃至 1102
1 3 から構成されたが、計算部 1102ではなぐ計算部 415が 3つの計算器 415乃至 415か
1 3 ら構成されるよう〖こしてもよい。この場合、 3つ単位で第 2の演算が行われ、復号途中 結果格納用メモリ 1104が 3つ以上の復号途中結果格納用メモリから構成される。また 、計算部 415と計算部 1102の両方が、それぞれ 3つの計算器 415乃至 415、計算器 1
1 3
102乃至 1102力も構成されるようにしてもよい。
1 3
[0305] 以上のように、図 23の復号装置 1000では、復号途中結果格納用メモリ 1103が 4つ の復号途中結果格納用 RAM1202乃至 1205から構成され、計算部 1102が 3つ単位で 第 1の演算を行うので、動作周波数を損なうことなぐ回路規模を削減することができ る。
[0306] 例えば、従来の 6つの計算器 412乃至 412を備える復号装置 400では、計算器 412
1 6 1 乃至 412による第 1の演算が必要とするクロック数は 72である力 図 23の復号装置 10
6
00では、計算器 1102乃至 1102による第 1の演算が必要とするクロック数は 117であり
1 3
、復号装置 400の場合の 1.6倍程度である。即ち、計算器 1102乃至 1102の数を半減
1 3
させたにも関わらず、クロック数は 2倍より小さい値となっている。
[0307] また、計算器 415乃至 415による第 2の演算が必要とするクロック数は 59クロックで
1 6
あるため、 1回の復号に要する時間は、復号装置 400と 1000で 131 ( = 72 + 59)対 176 ( = 117 + 59)となり、復号装置 1000の復号に要する時間は、復号装置 400に比べて 1.3 倍程度である。即ち、復号装置 1000の動作周波数は、復号装置 400に比べて 1.3倍 程度で済む。
[0308] さらに、第 1の演算が必要とするクロック数が小さい場合には、復号装置 400と 1000 における 1回の復号に要する時間の比率は小さくなる。例えば、検査行列 Hの各行の "1"の数が 4である場合、復号装置 400と 1000における第 1の演算に要する時間の比 率は、 37対 52であり、復号装置 1000における時間は、復号装置 1000に比べて 1.4倍 程度となる。
[0309] 図 28は、本発明を適用した復号装置 1000の第 2実施の形態の構成例を示すブロッ ク図である。
[0310] 図 28の復号装置 1000では、図 23の復号装置 1000の受信用メモリ 416の代わりに、 受信用メモリ 1400力 復号途中結果格納用メモリ 1104の代わりに復号途中結果格納 用メモリ 1401が、制御部 1105の代わりに制御部 1402が設けられている。受信用メモリ 1400には、制御部 1402力 受信データ格納用メモリ 1502と 1503 (後述する図 29)のい ずれか一方の選択を表す制御信号 D 1400が供給される。復号途中結果格納用メモリ 1401には、制御部 1402力 復号途中結果格納用メモリ 1602と 1603(後述する図 30)の いずれか一方の選択を表す制御信号 D1401が供給される。
[0311] 図 29は、図 28の受信用メモリ 1400の構成例を示すブロック図である。
[0312] 図 29の受信用メモリ 1400は、スィッチ 1501と 1504、並びに受信データ格納用メモリ 1 502と 1503から構成される。
[0313] スィッチ 1501には、通信路を通して受信した受信値 (符号ビット)力も計算した符号 ビットの 0らしさの値である受信 LLR (対数尤度比)のデータ (受信データ) D416が供給 されるとともに、制御部 1105力 受信データ格納用メモリ 1502と 1503のいずれか一方 の選択を表す制御信号 D1400が供給される。スィッチ 1501は、制御信号 D1400に基
1 1 づいて、受信データ D416を、受信データ D1501として受信データ格納用メモリ 1502に 、または受信データ D1502として受信データ格納用メモリ 1503に供給する。
[0314] 受信データ格納用メモリ 1502には、スィッチ 1501からの受信データ D1501が格納さ れ、また、受信データ格納用メモリ 1502からは、既に格納されている受信データ D150 1が、受信データ D1503としてスィッチ 1504に供給される。 受信データ格納用メモリ 1503には、受信データ格納用メモリ 1502と同様に、スィッチ 1 501からの受信データ D1502が格納され、また、受信データ格納用メモリ 1503からは、 既に格納している受信データ D 1504がスィッチ 1504に供給される。
[0315] なお、受信データ格納用メモリ 1502と 1503のそれぞれに格納されるデータ量、即ち 、受信データ格納用メモリ 1502と 1503のそれぞれに必要とされる記憶容量は、 LDPC 符号の符号長と、受信データの量子化ビット数との乗算値である。
[0316] スィッチ 1504には、制御部 1105力 受信データ格納用メモリ 1502と 1503の一方の選 択を表す制御信号 D1400が供給され、スィッチ 1504は、その制御信号 D1400に基づ
2 2 いて、受信データ格納用メモリ 1502からの受信データ D1503または受信データ格納 用メモリ 1503からの受信データ D1504を、受信データ D417としてサイクリックシフト回 路 1101と計算部 415に供給する。
[0317] なお、制御信号 D1400は、受信データ格納用メモリ 1502と 1503の一方の選択を表
1
し、制御信号 D1400は、他方の選択を表す。即ち、受信データ格納用メモリ 1502と 15
2
03の一方で書き込みが行われている間、他方で読出しが行われる。
[0318] 以上のように、受信用メモリ 1400では、 2つの受信データ格納用メモリ 1502と 1503が 設けられているので、一方で入力される受信データ D416を格納している間に、他方 で既に格納されている受信データ D417を出力することができる。その結果、受信用メ モリ 1400では、連続して入力される受信データ D416を、受信データ D417として連続 出力することができる。
[0319] 図 30を参照して、図 28の復号途中結果格納用メモリ 1401の構成を詳細に説明す る。
[0320] 図 30の復号途中結果格納用メモリ 1401は、スィッチ 1601, 1604、および 1605、並び に復号途中結果格納用メモリ 1602と 1603から構成される。
[0321] スィッチ 1601には、計算部 415から 3つの復号途中結果 D415が供給されるとともに 、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方の選択を表す制御 信号 D1401が供給される。スィッチ 1601は、制御信号 D1401に基づいて、復号途中
1 1
結果 D415を、復号途中結果 D1601として復号途中結果格納用メモリ 1602に、または 復号途中結果 D1602として復号途中結果格納用メモリ 1603に供給する。 [0322] 復号途中結果格納用メモリ 1602には、スィッチ 1601力 の復号途中結果 D1601が 格納される。また、復号途中結果格納用メモリ 1602からは、既に格納されている復号 途中結果 D1601が、復号途中結果 D1603としてスィッチ 1604に供給されるとともに、復 号途中結果 D1604としてスィッチ 1605に供給される。復号途中結果格納用メモリ 1603 には、復号途中結果格納用メモリ 1602と同様に、スィッチ 1601からの復号途中結果 D 1602が格納される。また、復号途中結果格納用メモリ 1602からは、既に格納してある 復号途中結果 D 1602が、復号途中結果 D 1605としてスィッチ 1604に供給されるととも に、復号途中結果 D1606としてスィッチ 1605に供給される。
[0323] なお、復号途中結果格納用メモリ 1602と 1603のそれぞれに格納されるデータ量、即 ち、復号途中結果格納用メモリ 1602と 1603のそれぞれに必要とされる記憶容量は、 L DPC符号の符号長と、復号途中結果 D415の量子化ビット数との乗算値である。
[0324] スィッチ 1604には、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方 の選択を表す制御信号 D1401が供給され、スィッチ 1604は、その制御信号 D1401に
2 2 基づいて、復号途中結果格納用メモリ 1602からの復号途中結果 D1603または復号途 中結果格納用メモリ 1603からの復号途中結果 D1605を、復号結果 D1402 (軟判定値) として出力する。
[0325] スィッチ 1605には、制御部 1105力 復号途中結果格納用メモリ 1602と 1603の一方 の選択を表す制御信号 D1401が供給され、スィッチ 1605は、その制御信号 D1401に
3 3 基づいて、復号途中結果格納用メモリ 1602からの復号途中結果 D1604、または復号 途中結果格納用メモリ 1603からの復号途中結果 D1606を、復号途中結果 D1403とし てサイクリックシフト回路 1101に出力する。
[0326] なお、制御信号 D1401は、復号途中結果格納用メモリ 1602と 1603の一方の選択を
2
表し、制御信号 D1401は、他方の選択を表す。即ち、復号途中結果格納用メモリ 160
3
2と 1603の一方に格納されている復号が完了した復号途中結果 D1603または D1605 力 復号結果 D1402として出力されている間、他方に格納されている復号途中の復 号途中結果 D 1604または D 1606が、復号結果 D 1403として出力される。
[0327] 以上のように、復号途中結果格納用メモリ 1401では、 2つの復号途中結果格納用メ モリ 1602と 1603が設けられているので、一方で復号途中の復号途中結果 D1601また は D1602を格納し、他方で復号が完了した復号途中結果 D1601または D1602を格納 することができる。その結果、復号途中結果格納用メモリ 1401では、復号結果 D1402 を出力している間にも復号を行うことができ、これにより、例えば、連続して復号結果 D1402を出力することができる。
[0328] 図 31は、受信用メモリ 1400と復号途中結果格納用メモリ 1401の読み出し (出力)と書 き込み (格納)の動作を説明するタイミングチャートである。
[0329] なお、図 31において、横軸は時間(t)を表している。また、図 31において、受信デ 一タ# 1とは、受信用メモリ 1400に供給される i番目のフレームの受信データ D416を表 す。さらに、受信データ # iの復号途中結果 D1403を復号途中結果 # iと表し、受信デ 一タ# 1の復号結果 D1402を復号結果 # iと表す。図 31において、受信データ # iの 受信が開始されて力 終了するまでの時間に、 1つの受信データに対する復号が終 了するものとする。
[0330] 受信用メモリ 1400に受信データ # 2が入力されると、受信データ # 2がすべて入力 されるまでの時間 Taの間、その受信データ # 2がスィッチ 1501を介して、受信用デー タ格納用メモリ 1502に供給され、格納される。このとき、受信データ格納用メモリ 1503 から、既に格納されている受信データ # 1がスィッチ 1504に供給され、スィッチ 1504 は受信データ # 1をサイクリックシフト回路 1101および計算部 415に出力される。そし て、受信データ # 1の復号が行われる。
[0331] また、復号途中結果格納用メモリ 1401の復号途中結果格納用メモリ 1602には、スィ ツチ 1601を介して計算部 415から供給される復号途中結果 # 1が格納され、また、復 号途中結果格納用メモリ 1602からは、既に格納されている復号途中結果 # 1がサイク リックシフト回路 1101に供給される。復号途中結果格納用メモリ 1603には、スィッチ 16 04を介して、既に格納されている復号途中結果 # 0が、復号結果 # 0として出力され る。即ち、時間 Taの間に復号途中結果格納用メモリ 1401から復号途中結果 # 0が出 力される。
[0332] 時間 Taの後、受信用メモリ 1400に受信データ # 3が入力され、受信データ # 3がす ベて入力されるまでの時間 Tbの間、その受信データ # 3がスィッチ 1501を介して、受 信データ格納用メモリ 1503に供給され、格納される。このとき、受信データ格納用メモ リ 1502からは、時間 Taに格納された受信データ # 2が読み出され、スィッチ 1504を介 してサイクリックシフト回路 1101および計算部 415に出力される。そして、受信データ # 2の復号が行われる。
[0333] また、復号途中結果格納用メモリ 1602からは、時間 Taの間に格納された復号途中 結果 # 1が、復号結果 # 1として出力される。即ち、時間 Taの後、時間 Tbの間に復 号途中結果格納用メモリ 1401から復号途中結果 # 1が復号結果 # 1として出力され る。復号途中結果格納用メモリ 1603には、スィッチ 1601を介して計算部 415から供給 される復号途中結果 # 2が格納され、また、復号途中結果格納用メモリ 1603からは、 既に格納してある復号途中結果 # 2がサイクリックシフト回路 1101に供給される。
[0334] 時間 Tbの後、受信用メモリ 1400に受信データ # 4が入力され、時間 Tcの間、時間 Taの場合と同様の処理が行われる。即ち、時間 Tbの後、時間 Tcの間、受信データ # 3がサイクリックシフト回路 1101と計算部 415に供給され、受信データ # 3の復号が 行われる。また、時間 Tbの間に格納された復号途中結果 # 2が、復号途中結果格納 用メモリ 1603から復号結果 # 2として出力される。
[0335] 以上のように、図 28の復号装置 1000では、連続して入力される受信データ D417を 順に復号し、その復号結果を連続して出力することができる。これにより、高速で復号 を行うことができる。即ち、復号装置 1000のスループットが向上する。
[0336] なお、図 29の受信用メモリ 1400の受信データ格納用メモリ 1502 (1503)の数と図 30 の復号途中結果格納用メモリ 1401の復号途中結果格納用メモリ 1602 (1603)の数は、 2つに限定されない。受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602 の数を増カロさせることにより、復号の繰り返し回数を増加させ、復号性能を改善するこ とがでさる。
[0337] 例えば、受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602が、それぞ れ 3つずつ設けられる場合、 1つの受信データ格納用メモリ 1502を受信データ D417 の格納用に、 1つの復号途中結果格納用メモリ 1602を復号結果 D1402の出力用に用 い、残りの 2つの受信データ格納用メモリ 1502と復号途中結果格納用メモリ 1602を復 号用に用いることができる。この場合、計算部 415と 1102を 2つずつ設ける必要があり 、回路規模は増大するが、復号の繰り返し回数を 2倍多くすることができる。 [0338] 図 32は、本発明を適用した復号装置 1000の第 3実施の形態の構成例を示すブロッ ク図である。
[0339] 図 32の復号装置 1000では、図 28の復号装置 1000の復号途中結果格納用メモリ 14 01の代わりに、復号途中結果格納用メモリ 1701が、制御部 1402の代わりに、制御部 1 799が設けられている。復号途中結果格納用メモリ 1701には、復号途中結果格納用メ モリ 1701の復号硬判定結果格納用メモリ 1802と 1803 (後述する図 33)のいずれか一 方の選択を表す制御信号 D1701が供給される。復号途中結果格納用メモリ 1701から は、復号が完了した復号途中結果 D415の硬判定値が復号結果 D1702として出力さ れ、復号途中の復号途中結果 D415の軟判定値が復号途中結果 D1703として出力さ れる。
[0340] 図 33は、図 32の復号途中結果格納用メモリ 1701の構成例を示すブロック図である
[0341] 図 32の復号途中結果格納用メモリ 1701は、スィッチ 1801, 1805、および 1806、復号 硬判定結果格納用メモリ 1802と 1803、並びに復号軟判定結果格納用メモリ 1804から 構成される。
[0342] スィッチ 1801には、計算部 415から 3つの復号途中結果 D415の硬判定値が復号硬 判定結果 D1801として供給されるとともに、制御部 1702から復号硬判定結果格納用メ モリ 1801と 1802の一方の選択を表す制御信号 D1701が供給される。スィッチ 1801は
1
、制御信号 D1701に基づいて、復号硬判定結果 D1801を、復号硬判定結果 D1803と
1
して復号硬判定結果格納用メモリ 1802に、または復号硬判定結果 D1804として復号 硬判定結果格納用メモリ 1803に供給する。
[0343] 復号硬判定結果格納用メモリ 1802には、スィッチ 1801力 の復号途中結果 D1803 が格納される。また、復号硬判定結果格納用メモリ 1802からは、既に格納してある復 号途中結果 D 1803が、復号途中結果 D 1805としてスィッチ 1805に供給されるとともに、 復号途中結果 D 1807としてスィッチ D 1806に供給される。
[0344] 復号途中結果格納用メモリ 1803には、復号途中結果格納用メモリ 1802と同様に、ス イッチ 1801からの復号途中結果 D1804を格納される。また、復号途中結果格納用メモ リ 1803からは、既に格納してある復号途中結果 D1804が、復号途中結果 D1806として スィッチ 1805に供給されるとともに、復号途中結果 D1808としてスィッチ 1806に供給さ れる。
[0345] なお、復号硬判定結果格納用メモリ 1802と 1803のそれぞれに格納されるデータ量、 即ち、復号硬判定結果格納用メモリ 1802と 1803のそれぞれに必要とされる記憶容量 は、 LDPC符号の符号長と、復号途中結果 D415の硬判定値のビット数である 1ビットと の乗算値である。
[0346] 復号軟判定結果格納用メモリ 1804には、計算部 415から 3つの復号途中結果 D415 の上位 1ビットを除く軟判定値が復号軟判定結果 D1802として供給される。復号軟判 定結果格納用メモリ 1804には、復号軟判定結果 D1802が格納され、または、復号軟 判定結果格納用メモリ 1804からは、既に格納されている復号軟判定結果 D1802が復 号軟判定結果 D1811として出力される。
[0347] なお、復号軟判定結果格納用メモリ 1804に格納されるデータ量、即ち復号軟判定 結果格納用メモリ 1804に必要とされる記憶容量は、 LDPC符号の符号長と、軟判定値 の上位 1ビットを除く値のビット数 (復号途中結果 D415の量子化ビット数 1)との乗算 値である。
[0348] スィッチ 1805には、制御部 1702から復号硬判定結果格納用メモリ 1802と 1803の一 方の選択を表す制御信号 D1701が供給され、スィッチ 1805は、その制御信号 D1701
2 2 に基づいて、復号硬判定結果格納用メモリ 1802からの復号硬判定結果 D1805または 復号途中結果格納用メモリ 1803からの復号硬判定結果 D1806を、復号結果 D1702 ( 硬判定値)として出力する。
[0349] スィッチ 1806には、制御部 1702から復号硬判定結果格納用メモリ 1802と 1803の一 方の選択を表す制御信号 D1701が供給され、スィッチ 1805は、その制御信号 D1701
3 3 に基づいて、復号硬判定結果格納用メモリ 1802からの復号硬判定結果 D1807または 復号硬判定結果格納用メモリ 1803からの復号途中結果 D1808を、復号硬判定結果 D 1810として出力する。スィッチ 1806からの復号硬判定結果 D1810を上位 1ビットとし、 その下位ビットを復号軟判定結果格納用メモリ 1804からの復号軟判定結果 D1811と することにより得られる軟判定値が、復号途中結果 D1703としてサイクリックシフト回路 1101に出力される。 [0350] なお、制御信号 D1701は、復号途中結果格納用メモリ 1802と 1803の一方の選択を
2
表し、制御信号 D1701は、他方の選択を表す。即ち、復号途中結果格納用メモリ 180
3
2と 1803の一方に格納されている復号が完了した復号途中結果 D1805または D1806 力 復号結果 D1702として出力されている間、他方に格納されている復号途中の復 号途中結果 D1807または D1808が、復号硬判定結果 D1810として出力される。
[0351] 以上のように、復号途中結果格納用メモリ 1701では、復号途中結果 D415の硬判定 値が 2つの復号硬判定結果格納用メモリ 1802と 1803に格納され、復号途中結果 D41 5の上位 1ビットを除く軟判定値が 1つの復号軟判定結果格納用メモリ 1804に格納さ れるので、復号途中結果格納用メモリ 1701は、 LDPC符号の符号長と 1ビットとの乗算 値の 2倍と、 LDPC符号の符号長と (復号途中結果 D415の量子化ビット数 1)との乗 算値とを合計した記録容量を有すればょ ヽ。
[0352] 従って、復号途中結果格納用メモリ 1701を有する図 32の復号装置 1000では、 LDP C符号の符号長と、復号途中結果 D415の量子化ビット数との乗算値の 2倍の記憶容 量が必要である復号途中結果格納用メモリ 1401を有する図 28の復号装置に比べて 、回路規模を削減することができる。
[0353] 図 34は、本発明を適用した復号装置 1000の第 4実施の形態の構成例を示すブロッ ク図である。
[0354] 図 34の復号装置 1000は、 3つのシンドローム判定器 2001乃至 2001力 なるシンド
1 3
ローム判定部 2001を設け、サイクリックシフト回路 2000から出力される硬判定結果 D20 00のシンドローム演算を行 、、その演算の結果に基づ!/、て復号を終了する。
[0355] サイクリックシフト回路 2000は、制御信号 D1106を元に、 6つの復号途中結果 D1104 または受信データ D417を選択し、並べ替えるサイクリックシフトを行い、その結果のう ち、構成行列の上半分( 1行目乃至 3行目分)または下半分 (4行目乃至 6行目分)の 〃1"に対応する 3つを復号途中結果 D1999として、計算部 412に供給する。また、サイ クリックシフト回路 2000は、 6つの復号途中結果 D1104または受信データ D417をサイ クリックシフトした結果の硬判定値を硬判定結果 D2000としてシンドローム判定部 2000 に供給する。
[0356] シンドローム判定部 2001は、 3つのシンドローム判定器 2001乃至 2001から構成さ れる。シンドローム判定部 2001には、サイクリックシフト回路 2000から出力される硬判 定結果 D2000が供給されるとともに、制御部 2003からシンドロームの演算を制御する 制御信号 D2001が供給され、シンドローム判定器 2001乃至 2001にそれぞれ供給さ
1 3
れる。
[0357] シンドローム判定器 2001乃至 2001は、それぞれ制御信号 D2001に基づいて、硬
1 3
判定結果 D2000のシンドロームの計算を行う。具体的には、シンドローム判定器 2001
1 乃至 2001は、検査行列 Hの行に対応する硬判定結果 D2000の排他的論理和(EXO
3
R)を計算し、その結果得られる値力 すべての行において〃 0 "であるかどうかを判定 する。シンドローム判定器 2001乃至 2001は、その判定結果 D2002を制御部 2003に
1 3
供給する。
[0358] なお、シンドローム判定部 2001によるシンドロームの演算と計算部 1102による第 1の 演算は、同時に行われるようにしてもよい。
[0359] 制御部 2003は、シンドローム判定部 2000から供給される判定結果 D2002に応じて、 復号を終了する。具体的には、制御部 2003は、判定結果 D2002に応じて、復号途中 結果格納用メモリ 2002に、復号途中結果 D415または復号結果 D1105を復号結果とし て出力させる制御信号 D2003を供給する。復号途中結果格納用メモリ 2002からは、 制御部 2003からの制御信号 D2003に基づいて、既に格納してある復号途中結果 D41 5または復号結果 D1105が復号結果として出力される力、または復号途中結果 D415 がサイクリックシフト回路 2000に供給される。
[0360] 図 35は、図 34の復号装置 1000の復号処理を説明するフローチャートである。この 処理は、例えば、受信用メモリ 416に復号すべき受信データ D416が格納されたとき、 開始される。
[0361] ステップ S71において、制御部 2003は、カウント値 Kを 0に設定し、ステップ S72に 進む。ステップ S72において、シンドローム判定部 2001 (のシンドローム判定器 2001
1 乃至 2001 )は、サイクリックシフト回路 2000から供給される硬判定結果 D2000のシンド
3
ロームを演算する。なお、最初のステップ S72では、シンドローム判定部 2001には、 受信データ D417がサイクリックシフトされた結果の硬判定値である硬判定結果 D2000 が供給され、シンドローム判定部 2001は、受信データ D417の硬判定結果 D2000のシ ンドロームを演算する。
[0362] ステップ S72の処理後は、ステップ S73に進み、制御部 2003は、シンドローム判定 部 2001から供給される判定結果 D2002に基づいて、シンドローム力 0"であるかどう かを判定し、シンドローム力 0"ではないと判定された場合、ステップ S 74に進む。
[0363] ステップ S74において、制御部 2003は、カウント値 Kが所定の回数 N以上であるか どうかを判定し、所定の回数 N以上ではないと判定した場合、ステップ S75に進む。
[0364] ステップ S75乃至 S84の処理は、図 27のステップ S49乃至 S58の処理と同様であ るので、説明は省略する。
[0365] ステップ S84の処理後は、ステップ S85に進み、制御部 2003は、カウント値 Kを 1つ だけインクリメントし、ステップ S72に戻る。
[0366] ステップ S73にお!/、て、シンドローム力 0"であると判定された場合、ステップ S86 に進み、制御部 2003は復号を終了し、復号途中結果格納用メモリ 2002に格納されて いる復号途中結果 D415または復号結果 D1105を復号結果として出力する。なお、最 初のステップ S71でシンドローム力 0"であると判定された場合、復号が 1度も行われ ず、計算部 415に供給される受信データ D417 (復号結果 D1105)力 復号途中結果 格納用メモリ 2002を介して、そのまま復号結果として出力される。
[0367] また、ステップ S 74において、カウント値 Kが所定の回数 N以上であると判定された 場合にも、ステップ S86に進み、制御部 2003は復号を終了し、復号途中結果格納用 メモリ 2002に格納されている復号途中結果 D415を復号結果として出力する。
[0368] 以上のように、図 35の復号処理では、シンドロームが" ΟΊこなる場合、またはカウン ト値 Kが所定の回数 N以上になる場合 (N回復号が行われた場合)、復号が終了され る。これにより、シンドロームが "0"、即ち誤り数が 0である復号途中結果 D415がさらに 復号されて、誤り数が再び増加することを防止することができる。また、受信データ D4 16の SN (Signal Noise)比が大きい場合、復号性能を劣化させずに、復号回数を抑え ることができるので、復号装置 1000の消費電力を低減することができる。
[0369] なお、シンドローム判定部 2001の回路規模は一般的に小さぐシンドローム判定部 2 001を設けることによる復号装置 1000の回路規模の増加は無視することができる程度 に小さい。 [0370] また、図 34の復号装置 1000では、図 23の復号装置 1000にシンドローム判定部 200 1が設けられた力 2つのフェーズの演算(例えば、チェックノード演算とバリアブルノ ード演算、第 1の演算と第 2の演算など)によって復号を行う装置であれば、どのよう な装置にシンドローム判定部 2001が設けられるようにしてもよい。例えば、図 17の復 号装置 400、もしくは図 28または図 32の復号装置 1000にシンドローム判定部 2001が 設けられるようにしてもよい。
[0371] 本実施の形態では、復号途中結果格納メモリ 1103は、 4つの復号途中結果格納用 RAM1202乃至 1205力 構成されるようにした力 復号途中結果格納用 RAM1202乃 至 1205の数は 3つ以上であればどのような数であってもよい。復号途中結果格納用 R AM1202乃至 1205の数が増加すればするほど、復号装置の動作速度を速めることが できる。
[0372] また、本実施の形態では、第 1の演算と第 2の演算を繰り返し行うことにより復号を 行ったが、チェックノード演算とバリアブルノード演算を繰り返し行うことにより復号を 行うよう〖こすることちでさる。
[0373] なお、図 24の復号途中結果格納用 RAM1202乃至 1205、図 29の受信データ格納 用メモリ 1502と 1503、図 30の復号途中結果格納用メモリ 1602と 1603、図 33の復号硬 判定結果格納用メモリ 1802と 1803、並びに復号軟判定結果格納用メモリ 1804は、例 えば、 RAMの物理的なビットが足りない場合には、複数の RAMを用いて同じ制御信 号を与えることで、論理的に 1つの RAMとみなすことができる。
[0374] 上述の場合には、説明を簡単にするために、 Pが 6の場合、即ち、検査行列 Hを構 成する構成行列の行数および列数が 6の場合を例に挙げた力 構成行列の行数お よび列数 Pは必ずしも 6である必要はなぐ検査行列 Hによって異なる値を取ることもあ り得る。例えば、 Pは 360や 392であってもよい。
[0375] また、本実施の形態では、符号長 108、符号ィ匕率 2/3の LDPC符号を用いた力 LDP C符号の符号長や符号化率は、どのような値であってもよい。例えば、構成行列の行 数および列数 Pが 6の場合、枝総数が 6以下であれば、どのような符号長、符号化率 の LDPC符号でも、制御信号を代えるだけで、復号装置 1000を用いて復号可能であ る。 [0376] さらに、構成行列の行数および列数 Pが所定の値で、枝の総数がある値以下、 t 、 う条件を満たす、ある LDPC符号の復号装置は、その条件を満たす、任意の符号長 で、任意の符号ィ匕率の LDPC符号を復号することができる。
[0377] 検査行列 H力 構成行列の行数および列数 Pの倍数でな 、場合は、検査行列 Hの 端数の外側にすべて 0(all 0)の成分を付けて Pの倍数とみなして適用することができる 場合がある。
[0378] 上述した復号装置 1000では、計算部 1102の計算器 1102乃至 1102の数を P/2 ( = 3
1 3
)とした力 計算器 1102乃至 1102の数は P未満であればよい。なお、 Pが大きな素数
1 3
である場合においても、計算器 1102乃至 1102の数を Pの整数部の 1に近い整数個
1 3
にすればよい。
[0379] また、復号装置 1000では、計算部 1102ではなぐ計算部 415が P未満の計算器から 構成されるようにしてもよい。即ち、計算部 1102または計算部 415の少なくとも一方が 、 P未満の計算器から構成されればよぐ他方は、 P個の計算器カゝら構成されても、 P 未満の計算器から構成されてもょ 、。
[0380] 以上のように、 PX Pの単位行列、そのコンポーネントの〃 1 "のうち 1個以上が" ΟΊこ なった準単位行列、単位行列もしくは準単位行列をサイクリックシフトしたシフト行列、 単位行列、準単位行列、もしくはシフト行列の複数の和である和行列、 PX
Figure imgf000069_0001
の組み合わせで表すことができる検査行列 Hを持つ LDPC符号の復号を、第 1と第 2 の演算を P個または N個(Nは P未満の正の整数)同時に行うアーキテクチャ (architect ure)を採用することにより、第 1と第 2の演算を、 P個または N個同時に行うことで動作 周波数を実現可能な範囲に抑えることができ、多数の繰り返し復号を行うことを可能 にしつつ、メモリ(FIFOや RAM)への書き込みと読み出し時に、異なるアドレスへの同 時アクセスが起きることを防止することができる。
[0381] また、第 1または第 2の演算を N個同時に行うことにより、第 1と第 2の演算を P個同時 に行う場合に比べて、第 1の演算を行う計算部 1102を構成する計算器 1102乃至 110
1
2または第 2の演算を行う計算部 415を構成する計算器 415乃至 415の数を削減し
3 1 6
、回路規模を削減することができる。
[0382] 一般的に、 LDPC符号は符号長が数千力も数万と大きいため、 Pの値も数百の大き さを持つものが使われる。その場合には、更に本発明に係る復号装置を用いる効果 は大きくなる。
[0383] また、本発明に係る復号装置は、サムプロダクトアルゴリズムを忠実に実装するもの であるため、メッセージの量子化以外の復号損失が起きることはな 、。
[0384] 以上の観点から、本発明に係る復号装置を用いることで、高性能な復号が可能に なる。
[0385] なお、上述した LDPC符号を復号する復号装置は、例えば、(ディジタル)衛星放送 を受信するチューナなどに適用することができる。

Claims

請求の範囲
[1] LDPC(Low Density Parity Check)符号の復号装置であって、
PX P(Pは正の整数)の単位行列、前記単位行列のコンポーネントである 1のうちの 1個以上が 0になった行列である準単位行列、前記単位行列もしくは前記準単位行 列をサイクリックシフトした行列であるシフト行列、
前記単位行列、前記準単位行列、もしくは前記シフト行列のうちの複数の行列の和 である和行列、または P X Pの 0行列、
を構成行列として、前記 LDPC符号の検査行列が、前記構成行列の一以上からなる 組合せで表される場合にぉ 、て、
前記 LDPC符号の復号のためのチェックノードの演算を行う第 1の演算部と、 前記 LDPC符号の復号のためのバリアブルノードの演算を行う第 2の演算部と を備え、
前記第 1の演算部のみが N (Nは P未満の正の整数)個のチェックノードの演算を同 時に行うか、前記第 2の演算部のみが前記 N個のバリアブルノードの演算を同時に行 うか、または前記第 1の演算部が前記 N個のチェックノードの演算を同時に行い、力 つ前記第 2の演算部が前記 N個のバリアブルノードの演算を同時に行う
ことを特徴とする復号装置。
[2] 前記 Nは前記 Pの整数分の 1の整数である
ことを特徴とする請求項 1に記載の復号装置。
[3] 前記第 1の演算部は、前記チェックノードの演算と前記バリアブルノードの演算の一 部とを行い、
前記第 2の演算部は、前記バリアブルノードの演算の他の一部を行い、 前記第 1の演算部のみが前記 N個の前記チェックノードの演算と前記バリアブルノ ードの演算の一部を同時に行うか、前記第 2の演算部のみが前記 N個の前記バリア ブルノードの演算の他の一部を同時に行うか、または前記第 1の演算部が前記チヱッ クノードの演算と前記バリアブルノードの演算の一部を同時に行い、かつ前記第 2の 演算部が前記 N個の前記バリアブルノードの演算の他の一部を同時に行う
ことを特徴とする請求項 1に記載の復号装置。
[4] 前記第 1の演算部のみが前記チェックノードの演算を行う前記 N個のチェックノード 計算器を有するか、前記第 2の演算部のみが前記バリアブルノードの演算を行う前記 N個のバリアブルノード計算器を有するか、または前記第 1の演算部が前記 N個のチ エックノード計算器を有し、かつ前記第 2の演算部が前記 N個のバリアブルノード計算 器を有する
ことを特徴とする請求項 1に記載の復号装置。
[5] 前記第 1の演算部が前記 N個のチェックノード計算器を有する場合、前記 N個のチ ックノード計算器それぞれには、前記第 2の演算部により得られる第 2の演算結果 が順次入力され、前記 N個のチェックノード計算器それぞれは、その第 2の演算結果 を用 、てチェックノードの演算を行つた結果得られる第 1の演算結果を順次出力し、 前記第 2の演算部が前記 N個のバリアブルノード計算器を有する場合、前記 N個の バリアブルノード計算器それぞれには、前記第 1の演算部により得られる第 1の演算 結果が順次入力され、前記 N個のノリアブルノード計算器それぞれは、その第 1の演 算結果を用いてバリアブルノードの演算を行った結果得られる第 2の演算結果を順 次出力する
ことを特徴とする請求項 4に記載の復号装置。
[6] 前記第 1の演算部により得られる第 1の演算結果を記憶する第 1の記憶部と、 前記第 2の演算部により得られる第 2の演算結果を記憶する第 2の記憶部と をさらに備え、
前記第 1の記憶部は、前記 N個の第 1の演算結果を同時に記憶し、かつ読み出し、 または前記第 2の記憶部は、前記 N個の第 2の演算結果を同時に記憶し、かつ読み 出す
ことを特徴とする請求項 2に記載の復号装置。
[7] 前記第 1の記憶部は、前記第 1の演算結果を、前記 LDPC符号の検査行列の 1を列 方向に詰めるように格納する
ことを特徴とする請求項 6に記載の復号装置。
[8] 前記第 1の記憶部は、前記 N個の第 1の演算結果を同時に記憶し、かつ読み出す ことが可能な複数のメモリから構成される力、または前記第 2の記憶部は、前記 N個の 第 2の演算結果を同時に記憶し、かつ読み出すことが可能な複数のメモリから構成さ れる
ことを特徴とする請求項 6に記載の復号装置。
[9] 前記第 1の記憶部は、前記和行列を、前記単位行列、前記準単位行列、または前 記シフト行列のうちの複数の行列の和に分解したときの、その複数の行列それぞれ に対して得られる前記 N個の第 1の演算結果を、同一のアドレスに格納する力 また は前記第 2の記憶部は、前記和行列を、前記単位行列、前記準単位行列、または前 記シフト行列のうちの複数の行列の和に分解したときの、その複数の行列それぞれ に対して得られる前記 N個の第 2の演算結果を、同一のアドレスに格納する ことを特徴とする請求項 6に記載の復号装置。
[10] P個の前記第 1または第 2の演算結果を並べ替え、前記 P個の第 1または第 2の演算 結果のうち、 N個の第 1または第 2の演算結果を選択して出力する並べ替え部 をさらに備える
ことを特徴とする請求項 2に記載の復号装置。
[11] 前記並べ替え部は、バレルシフタで構成される
ことを特徴とする請求項 10に記載の復号装置。
[12] 前記 LDPC符号の受信情報を記憶する複数の受信情報記憶部と、
前記第 2の演算部により得られる演算結果を記憶する複数の演算結果記憶部と、 前記受信情報記憶部と前記演算結果記憶部を制御する記憶制御部と をさらに備え、
前記記憶制御部は、複数の前記受信情報記憶部のうちのいずれ力 1つの前記受 信情報記憶部を選択して、後の復号に用いられる前記受信情報を記憶させるととも に、他の前記受信情報記憶部から、現在の復号に用いられる前記受信情報を読み 出させ、複数の前記演算結果記憶部のうちのいずれか 1つの前記演算結果記憶部 から、前記 LDPC符号の復号結果を読み出させるとともに、他の前記演算結果記憶 部を現在の復号に用いる
ことを特徴とする請求項 1に記載の復号装置。
[13] 前記記憶制御部は、後の復号に用いられる前記受信情報を記憶させる前記受信 情報記憶部を、前記 LDPC符号の符号長分の前記受信情報が前記受信情報記憶部 に記憶されるごとに切り替える
ことを特徴とする請求項 12に記載の復号装置。
[14] 前記記憶制御部は、前記 LDPC符号の復号結果を読み出す前記演算結果記憶部 を、前記 LDPC符号の符号長分の前記受信情報が前記受信情報記憶部に記憶され るごとに切り替える
ことを特徴とする請求項 12に記載の復号装置。
[15] 前記 LDPC符号の受信情報を記憶する複数の受信情報記憶部と、
前記第 2の演算部により得られる演算結果の硬判定値を記憶する複数の硬判定値 前記第 2の演算部により得られる演算結果の軟判定値を記憶する軟判定値記憶部 と、
前記受信情報記憶部と前記硬判定値記憶部を制御する記憶制御部と をさらに備え、
前記記憶制御部は、複数の前記受信情報記憶部のうちのいずれ力 1つの前記受 信情報記憶部を選択して、後の復号に用いられる前記受信情報を記憶させるととも に、他の前記受信情報記憶部から、現在の復号に用いられる前記受信情報を読み 出させ、複数の前記硬判定値記憶部のうちの!、ずれか 1つの前記硬判定値記憶部 から、前記 LDPC符号の復号結果を読み出させるとともに、他の前記硬判定値記憶 部を現在の復号に用いる
ことを特徴とする請求項 1に記載の復号装置。
[16] LDPC(Low Density Parity Check)符号の復号装置の復号方法であって、
PX P(Pは正の整数)の単位行列、前記単位行列のコンポーネントである 1のうちの 1個以上が 0になった行列である準単位行列、前記単位行列もしくは前記準単位行 列をサイクリックシフトした行列であるシフト行列、前記単位行列、前記準単位行列、 もしくは前記シフト行列のうちの複数の行列の和である和行列、または P X Pの 0行列 を構成行列として、前記 LDPC符号の検査行列が、前記構成行列の一以上からなる 組合せで表される場合にぉ 、て、 前記 LDPC符号の復号のためのチェックノードの演算を行う第 1の演算ステップと、 前記 LDPC符号の復号のためのノ リアブルノードの演算を行う第 2の演算ステップと を含み、
前記第 1の演算ステップの処理のみが N (Nは P未満の正の整数)個のチェックノード の演算を同時に行うか、前記第 2の演算ステップの処理のみが前記 N個のバリアブル ノードの演算を同時に行うか、または前記第 1の演算ステップの処理が前記 N個のチ エックノードの演算を同時に行い、かつ前記第 2の演算ステップの処理が前記 N個の ノ リアブルノードの演算を同時に行う
ことを特徴とする復号方法。
PCT/JP2006/308300 2005-04-25 2006-04-20 復号装置および復号方法 WO2006115164A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US11/912,481 US8086934B2 (en) 2005-04-25 2006-04-20 Decoding apparatus and decoding method
KR1020077027304A KR101164283B1 (ko) 2005-04-25 2006-04-20 복호 장치 및 복호 방법
EP06745481A EP1876716A4 (en) 2005-04-25 2006-04-20 DECODING DEVICE AND DECODING METHOD
CN2006800229264A CN101208864B (zh) 2005-04-25 2006-04-20 解码装置及解码方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-125962 2005-04-25
JP2005125962A JP4622654B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法

Publications (1)

Publication Number Publication Date
WO2006115164A1 true WO2006115164A1 (ja) 2006-11-02

Family

ID=37214782

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/308300 WO2006115164A1 (ja) 2005-04-25 2006-04-20 復号装置および復号方法

Country Status (6)

Country Link
US (1) US8086934B2 (ja)
EP (1) EP1876716A4 (ja)
JP (1) JP4622654B2 (ja)
KR (1) KR101164283B1 (ja)
CN (1) CN101208864B (ja)
WO (1) WO2006115164A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006304131A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
EP2051386A3 (en) * 2007-10-19 2010-03-31 Sony Corporation Partly-parallel message passing decoding for different structured LDPC codes
CN101615913B (zh) * 2009-07-17 2011-04-27 清华大学 Ldpc码的快速收敛译码方法
EP2088679A3 (en) * 2007-10-19 2012-08-01 Sony Corporation Data decoding apparatus, data decoding method, data transmitting/receiving system, data receiving apparatus, data receiving method and program
JP2012216889A (ja) * 2011-03-31 2012-11-08 Sony Corp 受信装置、受信方法、プログラム、および受信システム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4743156B2 (ja) * 2007-04-27 2011-08-10 ソニー株式会社 復号装置
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
JP4858335B2 (ja) * 2007-07-10 2012-01-18 ソニー株式会社 符号化方法および符号化装置
JP4674226B2 (ja) * 2007-08-22 2011-04-20 日本電信電話株式会社 通信路符号化方法及び通信路符号化システム及び階層的通信路符号化プログラム及び階層的通信路復号プログラム
CN101414833B (zh) * 2007-10-19 2010-08-04 中兴通讯股份有限公司 低密度生成矩阵码的编码方法及装置
TWI425519B (zh) * 2009-12-09 2014-02-01 Nat Chip Implementation Ct Nat Applied Res Lab 低複雜度低密度同位元檢查碼解碼器之記憶體配置方法及其解碼器結構
TW201126537A (en) * 2010-01-20 2011-08-01 Sunplus Technology Co Ltd Memory utilization method for low density parity check code, low density parity check code decoding method and apparatus thereof
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
JP2015179960A (ja) 2014-03-19 2015-10-08 ソニー株式会社 データ処理装置、及び、データ処理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004186940A (ja) * 2002-12-03 2004-07-02 Nec Corp 誤り訂正符号復号装置
JP2004531972A (ja) * 2001-06-15 2004-10-14 フラリオン テクノロジーズ,インコーポレーテッド Ldpc符号を復号する方法と装置
EP1494358A2 (en) 2003-07-03 2005-01-05 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
JP2005065066A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4042841B2 (ja) * 2002-03-29 2008-02-06 富士通株式会社 行列演算処理装置
ATE360284T1 (de) * 2002-07-03 2007-05-15 Directv Group Inc Codierung von ldpc-codes (low-density parity check) durch verwendung einer strukturierten paritätsprüfmatrix
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
FR2858649B1 (fr) * 2003-08-05 2005-09-23 Snecma Moteurs Turbine basse-pression de turbomachine
JP2005093038A (ja) * 2003-09-19 2005-04-07 Fujitsu Ltd 記録再生装置および記録再生回路
JP3891186B2 (ja) * 2004-03-22 2007-03-14 住友電気工業株式会社 復号装置および前処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004531972A (ja) * 2001-06-15 2004-10-14 フラリオン テクノロジーズ,インコーポレーテッド Ldpc符号を復号する方法と装置
JP2004186940A (ja) * 2002-12-03 2004-07-02 Nec Corp 誤り訂正符号復号装置
EP1494358A2 (en) 2003-07-03 2005-01-05 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
JP2005065066A (ja) * 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1876716A4

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006304131A (ja) * 2005-04-25 2006-11-02 Sony Corp 復号装置および復号方法
EP2051386A3 (en) * 2007-10-19 2010-03-31 Sony Corporation Partly-parallel message passing decoding for different structured LDPC codes
EP2088679A3 (en) * 2007-10-19 2012-08-01 Sony Corporation Data decoding apparatus, data decoding method, data transmitting/receiving system, data receiving apparatus, data receiving method and program
US8281205B2 (en) 2007-10-19 2012-10-02 Sony Corporation LDPC decoding apparatus, decoding method and program
CN101615913B (zh) * 2009-07-17 2011-04-27 清华大学 Ldpc码的快速收敛译码方法
JP2012216889A (ja) * 2011-03-31 2012-11-08 Sony Corp 受信装置、受信方法、プログラム、および受信システム

Also Published As

Publication number Publication date
CN101208864B (zh) 2012-06-06
US20090217121A1 (en) 2009-08-27
KR20080004628A (ko) 2008-01-09
CN101208864A (zh) 2008-06-25
KR101164283B1 (ko) 2012-07-09
JP2006304129A (ja) 2006-11-02
EP1876716A4 (en) 2008-07-23
US8086934B2 (en) 2011-12-27
JP4622654B2 (ja) 2011-02-02
EP1876716A1 (en) 2008-01-09

Similar Documents

Publication Publication Date Title
JP4622654B2 (ja) 復号装置および復号方法
KR101090001B1 (ko) 복호 장치 및 복호 방법, 및 기록 매체
JP4595650B2 (ja) 復号装置および復号方法
JP4224777B2 (ja) 復号方法および復号装置、並びにプログラム
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP4293172B2 (ja) 復号装置および復号方法
JP2007036776A (ja) 復号装置および復号方法
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP4284600B2 (ja) 復号装置
JP4822071B2 (ja) 復号装置および復号方法
JP4730592B2 (ja) 復号装置および復号方法
JP4288582B2 (ja) 復号装置および復号方法、並びにプログラム
JP4821724B2 (ja) 復号装置および復号方法
JP2007081602A (ja) 復号装置および復号方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680022926.4

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 8141/DELNP/2007

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2006745481

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020077027304

Country of ref document: KR

NENP Non-entry into the national phase

Ref country code: RU

WWP Wipo information: published in national office

Ref document number: 2006745481

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 11912481

Country of ref document: US