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

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

Info

Publication number
WO2007032251A1
WO2007032251A1 PCT/JP2006/317735 JP2006317735W WO2007032251A1 WO 2007032251 A1 WO2007032251 A1 WO 2007032251A1 JP 2006317735 W JP2006317735 W JP 2006317735W WO 2007032251 A1 WO2007032251 A1 WO 2007032251A1
Authority
WO
WIPO (PCT)
Prior art keywords
bit
value
quantized value
calculation
quasi
Prior art date
Application number
PCT/JP2006/317735
Other languages
English (en)
French (fr)
Inventor
Osamu Shinya
Takashi Yokokawa
Yuji Shinohara
Toshiyuki Miyauchi
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 EP06797611A priority Critical patent/EP1947772A4/en
Priority to KR1020087008741A priority patent/KR101312799B1/ko
Priority to CN2006800423353A priority patent/CN101310446B/zh
Priority to US12/066,641 priority patent/US8166363B2/en
Publication of WO2007032251A1 publication Critical patent/WO2007032251A1/ja

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block 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/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure

Definitions

  • the present invention relates to a decoding apparatus and a decoding method, and in particular, decodes a code that has been encoded with a low-density parity check code (LDP C code) with high accuracy while suppressing an increase in the scale of the apparatus.
  • LDP C code low-density parity check code
  • the present invention relates to a decoding apparatus and a decoding method that can perform the above processing.
  • 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.
  • an LDPC code defined by a parity check matrix H in which the Hamming weight of each row and each column is not constant is called 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.
  • This encoding device The generated codeword c is mapped and transmitted in such a way that a bit with a value of “0” is “+ ⁇ ” and a value of “ ⁇ is a bit—— ⁇ , and is transmitted via a predetermined channel. It will be received by the receiving side.
  • the second bit of the NORMAL 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.
  • 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.
  • decoding of LDPC codes is an algorithm proposed by Gallager called Probabilistic Decoding, which is a variable node (message node (mes sage node). ))) And a check node (check node), a so-called Tanner graph can be used by a message passing algorithm based on belief propagation.
  • the variable node and the check node are also simply referred to as nodes as appropriate.
  • Decoding of an LDPC code is generally performed according to a procedure as shown in FIG.
  • the received value of LDPC code (encoding c) is U and output from the check node.
  • a message (hereinafter also referred to as a check node node message) is u, and a message output from a variable node (hereinafter also referred to as a nodal node message) ⁇ V.
  • the message is a real value representing the likelihood of ⁇ 0 "by the so-called log likelihood ratio. Further, the log likelihood ratio of the received value U" 0 "is expressed as the received data u.
  • step S 11 received value U (received data u) is received, and message u is initialized to “0” and repeated.
  • step S12 the operation shown in the equation (1) is performed based on the received data u.
  • a variable node message V is obtained, and further, a check node message u is obtained by performing an operation shown in Expression (2) based on the variable node message V.
  • V i U 0 i + ⁇ Uj
  • Equation (1) and Equation (2) can be arbitrarily selected to indicate the number of ⁇ 1 "in the vertical direction (row direction) and horizontal direction (column direction) of the 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 greater than or equal to 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 messages from all branches connected to the variable node.
  • FIG. 5 is an example of a parity check matrix of (3,6) LDPC code (coding rate 1/2, code length 12).
  • the LDPC code parity check matrix H can be written using a Tanner graph as shown in Fig. 6.
  • ⁇ + ⁇ is a check node, and is a force-noble node represented by “:”.
  • 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 in the parity check matrix.
  • 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 calculation of Expression (1) is performed. That is, in FIG. 7, the noble node message V corresponding to the branch to be calculated is the check node messages u and u from the remaining branches connected to the noreal node and the received data u.
  • sign (x) represents the sign (positive or negative) of x, and is 1 when x ⁇ 0, and -1 when x ⁇ 0.
  • the check node performs the calculation of Expression (7). That is, in FIG. 8, the check node message u corresponding to the branch to be calculated is calculated using the variable messages V, ⁇ , ⁇ , ⁇ , and ⁇ from the remaining branches connected to the check node. .
  • ⁇ ( ⁇ ) ⁇ —
  • the decoding method of the LDPC code is the same as the content of the operation to be performed, for example, with any force called Belief Propagation.
  • 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. Consists of.
  • the decoding device of FIG. 10 In the decoding device of FIG. 10, messages are read one by one from the branch memory 100 or 102, and a message corresponding to a desired branch is calculated using the messages. Then, the messages obtained by the calculation are stored one by one in the subsequent branch memory 102 or 100.
  • the decoding device shown in FIG. 10 that performs this one-time decoding is used by connecting a plurality of decoding devices in series or by repeatedly using the decoding device shown in FIG. Realize iterative decoding.
  • the branch memory 100 stores messages (variable node messages) D100 supplied from the variable node calculator 103 of the preceding decoding device (not shown) in the order in which the check node calculator 101 in the subsequent stage reads the messages. I will do it.
  • 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 Based on the control signal D106 supplied from the control unit 105, the check node calculator 101 uses the message D101 (variable node message V) supplied from the branch memory 100 to perform an operation ( Check node calculation), and the message D102 (check node message u) obtained by the calculation is supplied to the branch memory 102 in the subsequent stage.
  • the branch memory 102 stores the message D102 supplied from the preceding check node calculator 101 in the order in which the succeeding 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 D107 from the control unit 105 and is also supplied with the reception data D104 from the reception memory 104. Based on the control signal D107, the variable node calculator 1103 receives the message D103 (check node message u) supplied from the branch memory 100 and the received data D104 (received data u) supplied from the receiving memory 100. Is used to perform an operation (variable node operation) according to equation (1), and a message D105 (variable node message V) obtained as a result of the operation is supplied to the branch memory 100 of the decoding device, not shown.
  • the reception memory 104 stores LDPC code reception data u.
  • the control unit 105 supplies a control signal D106 for controlling the variable node calculation and a control signal D107 for controlling the check node calculation to the check node calculator 101 and the variable node calculator 103, respectively.
  • 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 (bits representing positive and negative bits). That is, the message is represented by a 6-bit quantized value assigned to each numerical value that is equally divided into 64 values that can be represented by 6 bits with a sign bit in a predetermined numerical range.
  • FIG. 11 a check node calculation of the LDPC code represented by the check matrix H in FIG. 9 is performed. Further, 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 clock ck.
  • the check node calculator 101 in FIG. 11 is supplied from the control unit 105, for example, based on a 1-bit control signal D106, the message D101 (Norable node message V ) To calculate according to equation (7).
  • the check node calculator 101 reads a 6-bit message D101 (variable node message V) from the variable node corresponding to each column of the check matrix H one by one, and its lower 5 bits.
  • the check signal calculator 101 is supplied with a control signal D106 from the controller 105, and the control signal D106 is supplied to the selector 124 and the selector 131.
  • the LUT 121 calculates the 5-bit operation result D123 (by calculating the nonlinear function ⁇ (
  • the arithmetic unit 122 adds up the operation result 0123 ( ⁇ (
  • ⁇ ) force supplied from the LUT 121 is the maximum, the maximum number of delay times in the FIFO memory 127, that is, the check matrix H Is multiplied by the number of times of the maximum weight of the row.
  • the maximum weight of the row is 9, and therefore, the arithmetic unit 122 and the register 123 accumulate the 9-bit operation result D123 (
  • control is performed.
  • the control signal D106 supplied from the unit 105 changes from 0 to 1. For example, when the row weight is “9”, the control signal D106 becomes “0” from the 1st to the 8th clock and becomes “1” at the 9th clock.
  • the selector 124 sets the value stored in the register 123, that is, the message D101 (variable node message V) from all branches over one row of the check matrix H.
  • ) Obtained from the above is selected and output to register 125 as value D125.
  • the register 125 supplies the stored value D125 to the selector 124 and the arithmetic unit 126 as a 9-bit value D126.
  • the selector 124 selects the value D126 supplied from the register 125, outputs it to the register 125, and stores it again.
  • the FIFO memory 127 has a 5-bit output from the LUT 121 until a new value D126 ( ⁇ ⁇ (
  • )) is delayed and supplied to the calculator 126 as a 5-bit value D127.
  • the arithmetic unit 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 arithmetic unit 126 calculates the check node message u from the integrated value of ⁇ (
  • the arithmetic unit 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 9 bits at maximum. 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 calculator 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 uses the inverse function ⁇ — ⁇ ⁇ (
  • 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 when the sign bit D121 of the message D101 (variable node message V) from all branches in one row of the check matrix ⁇ is multiplied, the register 130 is reset.
  • the selector 131 multiplies the value stored in the register 130, that is, the sign bit D121 of the message D101 from all the 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.
  • the selector 131 selects the value D133 supplied from the register 132 and outputs it to the register 132. Force re-store.
  • the register 132 stores the previously stored value as the selector 131 and the EXOR circuit. Supply to 134.
  • 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 calculation 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 (sign bit). A total of 6 bits are output as message D102 (check node message u).
  • the check node calculator 101 performs the calculation of Expression (7) to obtain the check node 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 noble node messages V supplied to the check node is 9, check node calculator 101 Has a FIFO memory 127 and a FIFO memory 133 for delaying the operation result ( ⁇ (
  • the delay amount in the FIFO memory 127 and the FIFO memory 133 is reduced to the value of the row weight.
  • FIG. 12 shows a configuration example of the noble node calculator 103 in FIG. 10 that performs the noble node calculation one by one.
  • the novel node calculator 103 is represented on the assumption that each message is quantized into a total of 6 bits (bits) including the sign bits. Further, also in FIG. 12, the variable node calculation of the LDPC code represented by the check matrix H in FIG. 9 is performed. Further, the clock ck is supplied to the noble node calculator 103 in FIG. 12, and the clock ck is supplied to a necessary block. Each block performs processing in synchronization with clock ck.
  • variable node calculator 103 in FIG. 12 is supplied from the control unit 105, for example, based on a 1-bit control signal D107, and read message D1 03 read from the branch memory 102 one by one. Using the received data D104 (u) read from the memory 104, the equation (1) is obtained.
  • the noble node calculator 103 reads one 6-bit message D103 (check node message u) from the check node corresponding to each row of the check matrix H, and the message D103 151 and FIFO memory 155.
  • the variable node calculator 103 receives one 6-bit received data D104 (u) from the receiving memory 104.
  • 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 computing unit 151 adds up the 6-bit message D103 by calculating the 6-bit message D103 (check node message u) and the 9-bit value D151 stored in the register 152, and The resulting 9-bit integrated 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 6-bit message D103 is accumulated up to the maximum number of delay times in the FIFO memory 155, that is, the number of times corresponding to the maximum weight of the column of the check matrix H. Is done. Now, the maximum weight of the column of the parity check matrix H in FIG. 9 is 5. Therefore, in the calculator 151 and the register 152, the 6-bit message D103 is accumulated 5 times at the maximum (6-bit 5 values are accumulated). For this reason, after the output of the arithmetic unit 151, the number of quantization bits is 3 bits (5 (times) than the 6-bit message D103 so that a value obtained by accumulating the 6-bit values 5 times can be represented.
  • 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 arithmetic unit 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, until the message D103 (check node message u) from all the branches over one column of the check matrix H is accumulated, the register 154 supplies the previously accumulated value to the selector 153 and the calculator 156.
  • the message D103 from the check node is delayed and supplied to the calculator 156 as a 6-bit value D1 53.
  • the arithmetic unit 156 subtracts the value D153 supplied from the FIFO memory 155 from the value D152 supplied with the register 154 force.
  • the 6-bit value is set to message D105 (valid
  • the noble node calculator 103 performs the calculation of the equation (1) to obtain the variable node message V.
  • variable node calculator 103 Since the maximum weight of the column of parity check matrix H in Fig. 9 is 5, that is, the maximum number of check node messages u supplied to the noble node is 5, the variable node calculator 103 is a FIFO memo that delays 5 check node messages u. Have 155! When computing the variable node message V for a column with a column weight less than 5, the delay amount in the FIFO memory 155 is reduced to the value of the column weight.
  • the arithmetic unit 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 6-bit supplied from the reception memory 104. Since the received data D104 is added, the result of the calculation may exceed the minimum value or the maximum value that can be represented by the 6-bit message D105. If the calculation result is less than the minimum value that can be represented by the 6-bit message D105, the computing unit 156 clips to the minimum value, and the calculation result can be represented by the 6-bit message D105. If it exceeds the maximum value, it will clip to that maximum value.
  • a control signal is given from control section 105 according to the weight of parity check matrix H.
  • the control signal can be changed as long as the capacity of the branch memories 100 and 102 and the FIFO memories 127, 133, and 155 of the check node calculator 101 and the noble node calculator 103 are sufficient. It can decode LDPC codes of various check matrices H.
  • 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 decoding device in Fig. 10 performs decoding of LDP C code by sequentially performing the calculation of each node one by one (foil serial decoding).
  • Decoding for example, refer to Non-Patent Document 1
  • decoding of a certain number of nodes simultaneously for example, see Non-Patent Document 2 and Patent Document 1.
  • Devices for example, see Non-Patent Document 2 and Patent Document 1 have also been proposed.
  • the storage capacity of the reception memory 104 that stores the reception data D104 is at least the code length of the LDPC code and the bit of the quantization value that represents the reception data D104. Only the number of bits multiplied by the number (quantization bit number) is required.
  • the storage capacity of the branch memories 100 and 102 for storing messages is at least the product of the total number of branches (total number of branches) and the number of quantized bits representing the message (quantized bit number). Is required.
  • a force with a code length of 108 is practically about several thousand as the code length of the LD PC code.
  • the storage capacity of the branch memories 100 and 102 and the reception memory 104 is proportional to the number of bits of the quantized value representing the message, so that When expressed by a number of quantized values, a memory having a large capacity is required as a memory constituting the decoding apparatus, and the scale of the apparatus increases.
  • Patent Document 1 JP 2004-364233 A
  • Non-Patent Literature 1 C. Howland and A. Blan sby, Parallel Decoding Architectures for Low Density Parity Check Codes, Symposium on Circuits and Systems, 2001
  • Non-Patent Literature 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
  • )) is, for example, the quantization width of a quantized value used in the computation (a certain quantum The difference between the numerical value represented by the quantized value and the numerical value represented by the quantized value that differs by 1), or the dynamic range of the numerical value represented by the quantized value (the numerical value represented by the quantized value) It can be improved by increasing the difference between the maximum value and the minimum value of (or by performing both of them).
  • the quantization width is small and the dynamic range is small.
  • a large quantized value (which can represent a numerical value) is adopted throughout the decoding device, such a quantized value has a large number of bits, so that the decoding device is configured as described above.
  • a memory with a large capacity is required, and the scale of the apparatus increases.
  • the present invention has been made in view of such circumstances, and enables decoding of an LDPC code to be performed with high accuracy while suppressing a large-scale error of the apparatus.
  • a decoding device or decoding method is a check node calculation of a check node for decoding an LDPC code, and includes an operation of a nonlinear function and an inverse function of the nonlinear function.
  • the first calculation means that performs check node calculation including number calculation
  • the first quantization value which is a bit string that expresses a numerical value with a fixed quantization width
  • the result of the calculation of the nonlinear function is partially
  • the function operation means Z step that outputs the second quantized value, which is a bit string that expresses a numerical value with a quantization width determined according to the bit sequence of, and the second quantized value as input, the inverse function of the nonlinear function Inverse function computing means Z step for outputting the result of the computation as a first quantized value.
  • the check node operation is a check node operation including a calculation of a nonlinear function and an inverse function of the nonlinear function, which is a check node operation for decoding an LDPC code.
  • the first quantization value which is a bit string that expresses a number with a fixed quantization width
  • the result of the operation of the nonlinear function and a quantization width that is determined according to a part of the bit string Output as the second quantized value, which is a bit string representing a numerical value, and outputs the result of the inverse function of the nonlinear function as the first quantized value with the second quantized value as input.
  • decoding of an LDPC code can be performed with high accuracy while suppressing a large scale error of the apparatus.
  • FIG. 1 is a view 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 noble 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 illustrating a configuration example of an LDPC code decoding device that performs node operations one by one.
  • FIG. 11 is a block diagram showing a configuration example of a check node calculator 101 that calculates messages one by one.
  • FIG. 12 is a block diagram illustrating a configuration example of the variable node calculator 103 that calculates messages one by one.
  • FIG. 13 is a block diagram illustrating a configuration example of a decoding device to which the present invention is applied.
  • FIG. 14 is a block diagram showing a configuration example of a check node calculator 171.
  • FIG. 15 is a flowchart for explaining processing of a check node calculator 171.
  • This is a diagram showing the nonlinear function ⁇ (X) and its inverse function ⁇ y).
  • FIG. 17 is a block diagram illustrating a configuration example of a first embodiment of a decoding device to which the present invention has been applied.
  • FIG. 18 is a block diagram showing a configuration example of a check node calculator 181.
  • FIG. 19 is a diagram for explaining the LUT 221.
  • FIG. 20 is a diagram for explaining the conversion circuit 231.
  • FIG. 22 is a diagram for explaining the conversion circuit 233.
  • ⁇ 23 It is a diagram illustrating the processing of the conversion circuit 233.
  • FIG. 24 is a diagram for explaining the LUT 228.
  • FIG. 25 is a flowchart for explaining processing of the check node calculator 181.
  • FIG. 26 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. 27 is a block diagram showing a configuration example of the noble node calculator 103.
  • FIG. 28 is a block diagram showing a configuration example of a semi-check node calculator 412.
  • FIG. 29 is a block diagram showing a configuration example of a quasi-noble node calculator 415.
  • FIG. 30 is a diagram showing BER / FER.
  • FIG. 31 is a block diagram showing another configuration example of the semi-check node calculator 412.
  • FIG. 32 is a block diagram showing still another configuration example of the semi-check node calculator 412. Explanation of symbols
  • FIG. 13 shows a configuration example of a decoding device that decodes an LDPC code to which the present invention is applied.
  • the decoding device of FIG. 13 is common to the decoding device of FIG. 10 in that branch memories 100 and 102, a variable node calculator 103, a reception memory 104, and a control unit 105 are provided. 10 is different from the decoding device of FIG. 10 in that a check node calculator 171 is provided instead of the check node calculator 101.
  • the LDPC code (code rate 2/3, code length 108) is to be decoded. The same applies to the decoding devices shown in FIGS. 17 and 26 described later.
  • the check node calculator 171 performs a check node operation
  • the variable node calculator 103 performs a variable node operation
  • these check node operation and variable node operation are alternately performed.
  • the LDPC code is decoded.
  • the reception memory 104 stores the received data of the LDPC code u-force code length (here, the upper
  • variable node calculator 103 performs a variable node variable node calculation for decoding the LDPC code.
  • the branch memory 102 stores a message D102 (check node message u) as a result of the check node calculation by the check node calculator 171 described later, and the branch memory 102 stores the message D102. Is supplied to the noble node calculator 103 as message D103. Further, the control signal D107 is supplied from the control unit 105 to the variable node calculator 103, and the reception data D104 is supplied from the reception memory 104.
  • the noble node calculator 103 is configured as shown in FIG. 12, and based on the control signal D107, the message D103 (check node message u) supplied from the branch memory 100 and the receiving node are received. Using the received data D104 (u) supplied from the memory 100, according to equation (1) j Oi
  • variable node operation is performed, and a message D105 (variable node message V) obtained as a result of the variable node operation is supplied to the branch memory 100 as a message D100.
  • the branch memory 100 stores a message D100 (variable node message V), which is a result of the variable node calculation, supplied from the variable node calculator 103.
  • the branch memory 100 reads the message D100 as the message D101 and supplies it to the check node calculator 171.
  • Check node calculator 171 is a check node calculation of a check node for decoding an LDPC code, and performs a check node calculation including a calculation of a nonlinear function and a calculation of an inverse function of the nonlinear function.
  • the check node calculator 171 uses the message D101 (variable node message V) supplied from the branch memory 100 on the basis of the control signal D106 supplied from the control unit 105, and uses the nonlinear function ⁇ ( Check node operation is performed according to Equation (7) including the operation of X) and the inverse function ⁇ — ⁇ ⁇ ) of its non-linear function ⁇ (X), and the message D102 (check node message) obtained by the check node operation u) is provided to the branch memory 102 in the subsequent stage. To pay.
  • the branch memory 102 stores the message D102 supplied from the check node calculator 171 at the preceding stage. Then, the message D102 stored in the branch memory 102 is read as the message D103 as described above, and is supplied to the noble node calculator 103.
  • the noble node calculation and the check node calculation power are repeatedly performed on the received data u for the code length stored in the reception memory 104, for example, a predetermined multiple times, and In the last round, instead of the noble node computation of Equation (1), the computation of Equation (5) is performed, and the result of the computation is received data u (LDPC for the code length stored in the reception memory 104. Code) as a final decoding result.
  • the decoding apparatus in FIG. 13 is common to the decoding apparatus in FIG. 10 described above in that the LDPC code is decoded by repeatedly performing the check node calculation and the variable node calculation.
  • the decoding apparatus in FIG. 13 performs the processing from the calculation of the nonlinear function ⁇ (X) to the calculation of the inverse function ⁇ ) in the processing performed as the check node calculation and the variable node calculation.
  • Quantization values that represent numerical values with higher accuracy than the quantization values used by other decoding devices are used, and quantization values similar to those used by the decoding device in FIG. 10 are used in other processes. Use.
  • the message (same for received data u) is equally divided into 64 values that can represent a predetermined numerical range with 6 bits with a sign bit. It is represented by a 6-bit quantized value assigned to each numerical value.
  • each 6-bit quantized value representing the message has a quantization width of RZ64 from RZ2 to + RZ2—RZ64. Is assigned to each of the 64 numbers and represents each number. Now, this 6-bit quantized value representing the message is called the normal quantized value.
  • the quantized value representing the numerical value with higher accuracy than the normal quantized value used in the processing up to the calculation of the inverse function ⁇ as well as the post-computation power of the nonlinear function ⁇ ( ⁇ ).
  • the value is called a high-precision quantized value.
  • the high-precision quantized value represents a numerical value with higher precision than the normal quantized value, so the quantization width, that is, the numerical value assigned to a certain quantized value and one smaller than the quantized value.
  • quantum The difference (absolute value) from the numerical value assigned to the quantized value is usually smaller than the quantized value.
  • the numerical range that can be represented by the high-precision quantized value is the normal quantized value. It is narrower than the numerical range that can be represented by the value. In other words, the difference between the maximum value and the minimum value that can be represented by a high-precision quantized value (dynamic range) is greater than the difference between the maximum value and the minimum value that can be represented by a normal quantized value (dynamic range).
  • the dynamic range that can be represented by the high-precision quantized value is represented as Dyl, and If the quantization width of a high-precision quantized value is expressed as Qdl, for example, the quantization range of the high-precision quantized value remains Qdl, and the numerical range of Dy2 wider than the dynamic range force 3 ⁇ 4yl is accurately quantized.
  • the quantization range of a high-precision quantized value is expressed as a small Qd and Qd2 and the numerical range with a dynamic range of Dyl is expressed as a high-precision quantized value
  • the number of bits of the high-precision quantized value Is usually required more than the number of bits of the quantized value.
  • a quantized value representing a numerical value with higher accuracy than the normal quantized value that is, if the quantization width is smaller than the normal quantized value and the quantized value is used, regardless of the dynamic range or the number of bits, although it can be adopted as a high-precision quantized value, here the quantized value is a quantized value whose quantization range is smaller than the normal quantized value, and the number of bits whose dynamic range is wider than the normal quantized value is also the normal quantizer. A quantized value larger than the quantized value is adopted as the high-precision quantized value.
  • the decoding apparatus in FIG. To the inverse function ⁇ _1 ( ⁇ ) (hereinafter referred to as non-linear function calculation), the 10-bit high-precision quantized value is used, and the other processing is 6-bit.
  • the normal quantization value of is used.
  • the non-linear function calculation process is a part of the check node calculation, and the 10-bit high-precision quantized value is used only in the non-linear function calculation process. Accordingly, since the 6-bit normal quantized value is used for the message stored in the branch memories 100 and 102 and the received data u stored in the reception memory 104, the decoding device of FIG. The storage capacity required for the branch memories 100 and 102 and the reception memory 104 is shown in FIG. It is the same as that of the decoding apparatus.
  • FIG. 14 shows a configuration example of the check node calculator 171 of FIG.
  • parts corresponding to those of the check node calculator 101 in FIG. 11 are given the same reference numerals, and description thereof will be omitted below as appropriate.
  • the check node calculator 171 replaces the LUT 121, the calculator 122, the register 123, the selector 124, the register 125, the calculator 126, the FIFO memory 127, and the LUT 128 of FIG. Register 1123, selector 1124, register 1125, arithmetic unit 112 6, FIFO memory 1127, LUT1128 power ⁇
  • the number of bits in the bold line in Fig. 14 is the high-precision quantized value and normal quantized value. This is different from the check node calculator 101 of FIG. 11 in that it is increased by 4 bits, which is the difference in the number of bits from the value.
  • the check node calculator 171 in FIG. 14 also has the branch memory 100 power based on, for example, a 1-bit control signal D106 supplied from the control unit 105. Using the message D101 (variable node message v.) That is read one by one, check node calculation is performed according to equation (7).
  • FIG. 15 shows processing performed by the check node calculator 171.
  • the check node calculator 171 reads one by one from the 6-bit message D101 (variable node message V) force branch memory 100 (Fig. 13) from the noble node corresponding to each column of the check matrix H.
  • ) Are supplied to LUT1121, and the most significant bit, sign bit D121, is supplied to EXOR circuit 129 and FIFO (First In First Out) memory 133.
  • the check node calculator 171 is supplied with a control signal D106 from the control unit 105, and the control signal D106 is supplied to the selector 1124 and the selector 131.
  • the LUT1121 calculates the nonlinear function ⁇ (
  • )) of I) is stored in association with each other. Furthermore, in the LUT1121, the absolute value D122 (
  • the LUT1121 uses, for example, a 9-bit nonlinear function ⁇ (
  • step S1 the LUT 1121 receives the 5-bit absolute value D12 2 (
  • step S1 the LUT 1121 equivalently performs the process of calculating the nonlinear function ⁇ (
  • step S2 the calculator 1122 adds the 9-bit calculation result D1123 ( ⁇ (
  • the operation result D 1123 is accumulated, and the 13-bit accumulated value obtained as a result is stored again in the register 1123. Note that when the operation results for the absolute value D122 (
  • )) force supplied from the LUT 1121 is the maximum, and the maximum number of delays in the FIFO memory 1127, that is, the check The number of times corresponding to the maximum weight of the rows of the matrix H is accumulated.
  • the maximum weight of the row of the check matrix H in FIG. 9 is 9, and therefore, the arithmetic unit 1122 and the register 1123 accumulate 9-bit high-precision quantized values at the maximum 9 times (9 Nine accumulations of high-precision quantized values of bits are performed).
  • the number of bits of the high-precision quantized value is output by the LUT 1121 so that a value obtained by accumulating the 9-bit high-precision quantized value 9 times can be represented.
  • the bit operation result is 13 bits, which is 4 bits (minimum number of bits that can represent 9 (times)) more than D1123 ( ⁇ (
  • the selector 1124 determines that the value stored in the register 1123 in step S3, that is, the message D10 1 (from all branches over one row of the check matrix H) ( Select 13-bit integrated value D1124 ( ⁇ ⁇ (
  • the register 1125 supplies the stored value D1125 as a 13-bit value D1126 to the selector 1124 and the arithmetic unit 1126.
  • the selector 1124 selects the value D1 26 supplied from the register 1125, outputs it to the register 1125, and stores it again. That is, until the ⁇ (
  • )) Is delayed and supplied as a 9-bit value D1127 to the arithmetic unit 1126.
  • the arithmetic unit 1126 uses the 13-bit value D1126 supplied from the register 1125 as a FIFO.
  • 9-bit value D1127 supplied from memory 1127 is subtracted (13-bit value D1126 supplied from register 1125 is multiplied by -1 to 9-bit value D1127 supplied from FIFO memory 1127. The result is added to the LUT1128 as the 9-bit subtraction value D1128.
  • the operator 1126 obtains the check node from the integrated value of ⁇ (
  • Message D101 (variable node message V) from the branch whose message u is to be obtained Subtract the ⁇ (
  • the quantized value (high-precision quantized value) as a subtraction result obtained by subtracting the 9-bit value D1127 supplied from the FIFO memory 1127 from the 13-bit value D1126 supplied from the register 1125 is 9 Bit subtraction value
  • the arithmetic unit 1126 expresses the high-precision quantized value as the subtraction result as a 9-bit high-precision quantized value. Is clipped to the maximum possible value and output as a 9-bit subtraction value D1128.
  • LUT1128 performed the inverse function ⁇ _1 ( ⁇ ⁇ ) in equation (7) for the subtraction value D1128 ( ⁇ ⁇ (
  • ))) is stored in association.
  • v I)) is represented by a normal quantized value without a sign bit.
  • step S5 the LUT 1128 performs processing for calculating the inverse function ⁇ ⁇ (
  • the processing is performed using the normal quantization value until the above-described LUT 1121 performs the process of converting the normal quantization value into the high-precision quantization value.
  • the EXOR circuit 129, the register 130, the selector 131, the register 132, the FIFO memory 133, and the EXOR circuit 134 perform the same processing as the check node calculator 101 in FIG.
  • the EXOR circuit 134 uses the multiplication value of the sign bit D121 (sign (lvj)) of the message D101 (variable node message V) from all the branches over one row of the check matrix H, and the check node message u.
  • Message from the desired branch Divide by the sign bit D121 ( S ign (
  • the check node calculator 171 sets the 5-bit operation result D1129 of the normal quantized value output from the LUT 1128 as the lower 5 bits and the 1-bit division value D135 output from the EXOR circuit 134.
  • Message D102 (check node message u) represented by a normal quantization value of 6 bits in total, which is the most significant bit (sign bit), is output.
  • the LUT 1121 converts the normal quantized value to the high-precision quantized value
  • the LUT 1128 converts the high-precision quantized value to the normal quantized value
  • FIG. 16 shows a nonlinear function ⁇ ( ⁇ ) and its inverse function ⁇ y).
  • the circles indicate the numerical values that can be taken by the operation result of the nonlinear function ⁇ (X) and its argument X, and the inverse function ⁇ _1 ( ⁇ ) and its argument when the normal quantization value is adopted.
  • the value that y can take is shown.
  • FIG. 16 The left side of FIG. 16 shows the nonlinear function ⁇ (X), and the right side of FIG. 16 shows the inverse function ⁇ y).
  • the nonlinear function ⁇ (X) shown on the left side of Fig. 16 has an argument X that is larger than a certain value.
  • Equation (7) which is a check node calculation
  • To the calculation of its inverse function ⁇ _1 ( ⁇ ) is usually quantized. If it is performed using values, the calculation accuracy will deteriorate.
  • the argument y of the inverse function ⁇ — ⁇ y) is the integrated value of the nonlinear function ⁇ (
  • the inverse function ⁇ -y changes sharply when its argument y is close to the numerical value 0, so that an accurate calculation result can be obtained as the calculation result of the inverse function ⁇ -).
  • the normal quantized value when used, the nonlinear function ⁇ (
  • the quantized value is also a normal quantized value representing the numerical value 0.
  • the result of the nonlinear function ⁇ (X) is a highly accurate quantized value that accurately represents a value near zero. Furthermore, as a result, even if the integrated value ⁇ ⁇ (
  • decoding of an LDPC code can be performed with high accuracy while suppressing a large scale error of the decoding device.
  • check node calculator 171 (Fig. 14) is , Which delays 9 messages ( ⁇ (
  • ) and the calculation of the inverse function ⁇ ) in the check node calculation are performed by the LUT 1121 and the LUT 1128, respectively.
  • the calculation of the nonlinear function ⁇ takes the normal quantization value of 5 bits as an input, the result of the calculation of the nonlinear function ⁇ (Iv.l), and the high precision quantization value of 9 bits.
  • the inverse function ⁇ — is calculated using the 9-bit high-precision quantized value and the inverse function ⁇ — is output as a 5-bit normal quantized value. Done.
  • LUT1121 and LUT1128 The capacity of such LUTs such as LUT1121 and LUT1128 is 2 a X b, assuming that the number of quantized bits as input is a bit and the quantized value as output is b bits. Capacity is required.
  • the LUT1121 whose quantized value as input is a normal quantized value of 5 bits and whose quantized value as output is a high-precision quantized value of 9 bits, has a capacity of 2 5 X 9 bits. It requires der is is, a highly accurate quantized values quantized value of 9 bits as input, the LUT1128 is usually quantized value of the quantized values output bits as an output, 2 9 X 5 bits of capacity is required. Accordingly, the capacity required for the LUT 1121 and LUT 1128 in the check node calculator 171 in FIG. 14 is larger than that in the check node calculator 101 in FIG. 11, and the check in FIG. The node calculator 171 is larger than the check node calculator 101 in FIG. Further, as a result, the decoding device in FIG. 13 is also larger than the decoding device in FIG.
  • FIG. 17 shows a configuration example of the first embodiment of the decoding device to which the present invention is applied.
  • portions corresponding to those of the decoding device of FIG. 13 are denoted by the same reference numerals, and description thereof will be omitted below as appropriate.
  • the decoding apparatus in FIG. 17 is common to the decoding apparatus in FIG. 13 in that branch memories 100 and 102, a variable node calculator 103, a reception memory 104, and a control unit 105 are provided. 13 is different from the decoding apparatus of FIG. 13 in that a check node calculator 181 is provided instead of the check node calculator 171.
  • the LDPC code (code rate 2/3, code length) represented by the parity check matrix H shown in FIG. 108) is decrypted.
  • the check node calculator 181 corresponding to the check node calculator 17 1 of FIG. 13 performs the check node operation, and the variable node calculator 103 is variable.
  • the node operation is performed, and the check node operation and the variable node operation are alternately performed, whereby the LDPC code is decoded.
  • check node calculator 181 also performs a check node check node calculation for decoding an LDPC code in the same manner as check node calculator 171 in Fig. 13, and calculates a non-linear function and an inverse function of the non-linear function.
  • the non-linear function ⁇ is calculated using the message D101 (variable node message V) supplied from the branch memory 100 based on the control signal D106 supplied from the control unit 105.
  • Check node operation is performed according to Equation (7) including the operation of (X) and the inverse function ⁇ — ⁇ ⁇ ) of its nonlinear function ⁇ (X), and the message D102 ( The check node message u) is supplied to the branch memory 102 in the subsequent stage.
  • Check Node Calculator 181 uses the first quantized value, which is a bit string expressing a numerical value with a fixed quantization width, as input, and obtains the result of the operation of nonlinear function ⁇ ( ⁇ ) as a part of the result.
  • Bit string The output point of the second quantized value, which is a bit string that expresses a numerical value with a quantization width determined according to, and the result of the operation of the inverse function ( ⁇ ⁇ ⁇ ) using the second quantized value as input This is different from the check node calculator 171 of FIG. 13 in that the first quantized value is output.
  • the fixed quantization width is expressed as S
  • the first quantization value is expressed as Q.
  • Bit string Q +1 always represents a number that is S larger than the number represented by the first quantized value Q
  • the first quantized value is equivalent to a bit string that represents a numerical value in a so-called fixed-point representation format.
  • a fixed-point quantized value or a fixed-point format quantized value is appropriately used. Called value.
  • the quantization width is set to a part of the bit string of the second quantized value. Therefore, if the second quantized value is represented as Q, the numerical value represented by the second quantized value Q +1 is the second quantized value.
  • the second quantized value Q +1 depends on a part of the bit sequence of the second quantized value Q and Q +1.
  • the numerical value represented by 2 2 2 is larger than the numerical value represented by the second quantized value Q by a certain number S.
  • the second quantized value may be a certain number S 'different from S.
  • the numerical value represented by the second quantized value may increase, for example, by S or may increase by S ′, which is different from S. .
  • V Floating Point a bit string that expresses a numerical value in an expression format called “V Floating Point” generally does not include a sign bit (a bit that represents positive or negative), but generally converts the exponent part e to a part of the bit string. In addition to allocating the mantissa part to the remaining bit string, the numerical value represented by fX 2 e is expressed.
  • bit string representing the numerical value fX 2 e in floating point for example, if the bit string as the exponent part e is 0, the bit string as the mantissa part f increases by 1, and the exponent A numerical value fX 2 e represented by a bit string composed of a part e and a mantissa part f and representing a numerical value in floating point increases by one. Also, for example, if the bit string as the exponent part e is 1, the numerical value composed of the exponent part e and the mantissa part f is increased to increase by the bit string force S1 as the mantissa part f. The numerical value fX 2 e represented by the bit string expressed in floating point increases by 2.
  • the exponent A numerical value represented by a bit string composed of a part e and a mantissa part f may increase by one or may increase by two, for example.
  • the second quantized value which is a bit string that expresses a numerical value with a quantization width determined according to a part of the bit string, has a method of increasing the numerical value represented by the second quantized value. This is common to the bit string that expresses the numerical value in floating point.
  • the second quantized value is equivalent to a bit string that represents a numerical value in floating point. Therefore, the second quantized value is hereinafter referred to as a quasi-floating point quantized value, Or the quantized value in quasi-floating point format.
  • FIG. 18 shows a configuration example of the check node calculator 181 in FIG.
  • check node calculator 181 in FIG. 18 replaces the LUT 1121 and the LUT 1128 with the LUT
  • the check node calculator 181 performs the check node calculation of Equation (7).
  • the fixed-point quantized value is input and the result of the calculation of the nonlinear function ⁇ ( ⁇ ) Is output as a quasi-floating point quantized value, and the result of the inverse function ⁇ -) is output as a fixed-point quantized value with the quasi-floating point quantized value as an input.
  • the LUT 221 is similar to the LUT 1121 in Fig. 14, with respect to the 5-bit absolute value D122 (
  • ) are stored in association with each other.
  • ) While the calculation result is represented by a 9-bit high-precision quantized value, in LUT221, the operation result of the nonlinear function ⁇ (
  • the LUT221 obtains the result of computing the nonlinear function ⁇ (
  • the LUT 221 calculates the operation result of the nonlinear function ⁇ (
  • the 5-bit quasi-floating point quantized value is supplied to the conversion circuit 231 and FIF01127.
  • ))) Stores a 5-bit normal quantized value that represents the result of the operation in association with it.
  • the argument y of the inverse function ⁇ —) is given as a high-precision quantized value that is also a 9-bit fixed-point quantized value
  • the argument y of _1 ( ⁇ ) is a 5-bit quasi-floating point quantized value, which is supplied from the conversion circuit 233 described later.
  • the LUT228 takes the 5-bit quasi-floating point quantized value (the quasi-floating point quantized value without the sign bit) as the numerical value ⁇ ⁇ (
  • a 5-bit fixed-point quantized value (a fixed-point quantized value without a sign bit) that represents the numerical value obtained as a result of the operation of the inverse function ⁇ — 1 ( ⁇ ⁇ (Iv.D)) ) Is stored in association with each other.
  • the LUT 228 supplies the 5-bit quasi-floating point quantized value F1128 (128
  • the conversion circuit 231 supplies the 5-bit quasi-floating-point quantized value representing the operation result of the nonlinear function ⁇ (
  • the fixed-point quantized value D1123 is supplied to the computing unit 1122.
  • a 5-bit quasi-float representing the result of the nonlinear function ⁇ (
  • the decimal point quantization value is a bit string that represents a numerical value with a quantization width determined according to a part of the bit string, it is difficult to perform integration in the arithmetic unit 1122 in the subsequent stage. is there. Therefore, the conversion circuit 231 converts the 5-bit quasi-floating point quantized value output from the LUT 221 into a fixed-point quantized value that is also a 9-bit high-precision quantized value.
  • the conversion circuit 232 converts the numerical expression format.
  • the conversion circuit 232 is supplied with a delay in a 5-bit quasi-floating point quantized value FIF01127 representing the calculation result of the nonlinear function ⁇ (
  • the conversion circuit 232 converts the 5-bit quasi-floating point quantized value (after delay) supplied from the FIF01127 into a fixed-point quantized value that is also a 9-bit high-precision quantized value. To supply.
  • the conversion circuit 232 is subject to the operation (integration) of the arithmetic unit 1126 in the subsequent stage for the same reason as the conversion circuit 231 converts the quasi-floating point quantized value to the fixed-point quantized value. Converts the 5-bit quasi-floating-point quantized value to a fixed-point quantized value that is also a 9-bit high-precision quantized value.
  • the conversion circuit 233 performs conversion in an expression format opposite to the conversion of the conversion circuits 231 and 232. That is, the conversion circuit 233 is supplied with a fixed-point quantized value that is also a 9-bit high-precision quantized value from the arithmetic unit 1126. The conversion circuit 233 converts the 9-bit fixed-point quantized value from the arithmetic unit 1126 into a 5-bit quasi-floating-point quantized value, and provides it to the LUT 228 as an input.
  • connection line through which the 9-bit fixed-point quantized value (and the result of the operation performed using the 9-bit fixed-point quantized value) is exchanged is indicated by a solid thick line.
  • the connection line through which 5-bit floating-point quantized values are exchanged is indicated by a thick dotted line. The same applies to FIG. 28 described later.
  • the LUT 221 is supplied with a fixed-point quantized value that is also a 5-bit normal quantized value shown in the left table of FIG.
  • the table on the left of FIG. 19 also shows the decimal number that the bit string represents along with the bit string as a 5-bit fixed-point quantized value.
  • LUT221 is the result of computing the nonlinear function ⁇ (
  • a 5-bit quasi-floating point quantized value representing the obtained numerical value ⁇ (X) is output.
  • the table on the right side of Fig. 19 shows the 5-bit quasi-floating point quantized values output by the LUT221.
  • the table on the right side of FIG. 19 shows a bit string as a 5-bit quasi-floating point quantized value and a fixed-point quantized value (quasi-floating point quantized value) corresponding to the quasi-floating point quantized value.
  • 9 bits as a fixed-point quantized value representing the numerical value represented by, and the decimal number represented by the 9 bits are also shown.
  • the range of decimal numbers represented by the 5-bit fixed-point quantized values in the table on the left in Fig. 19 is 0 to 31, whereas the 5-bit quasi-floating point in the table on the right in Fig. 10
  • the range of decimal numbers represented by the quantized value is 0 to 448. Therefore, even with the same 5 bits, the quasi-floating-point quantized value is more It can represent numerical values with a wider dynamic range than fixed-point quantized values.
  • the range of a decimal number represented by a 9-bit fixed-point quantized value is 0 to 511, and according to a 5-bit quasi-floating-point quantized value, it is the same as a 9-bit fixed-point quantized value. It can represent numerical values with a wide dynamic range.
  • the quantization width of the 5-bit quasi-floating-point quantized value in the table on the right side of FIG. 19 differs depending on the upper 3 bits, which are some of the bits.
  • the 5-bit quasi-floating-point quantized value represents each time the remaining lower 2 bits are incremented by 1. Decimal numbers increase by 2. Therefore, the quantization width is 2.
  • the quantization width is 4.
  • the quantization width is 8, 16, 32, and 64, respectively. It has become.
  • the quasi-exponential part e the upper 3 bits of the 5-bit quasi-floating point quantized value in the table on the right side of FIG. 19 is called a quasi-exponential part e and the remaining lower 2 bits are called a quasi-mantissa part f
  • the decimal number represented by the 5-bit quasi-floating-point quantized value is (1+ f / 2 2 ) X 2 e + 1 . Therefore, it can be said that the quasi-floating point quantized value is a floating point (number) of a radix power with the mantissa part (l + f / 2 2 ) and the exponent part e + 1.
  • the quasi-floating point quantized value can be said to be a floating point (number) of a radix power with the mantissa part being f / 2 and the exponent part being e + 1.
  • the quantization width of the quasi-floating point quantized value becomes larger as the numerical value represented by the quasi-floating point quantized value becomes larger (smaller as it becomes smaller).
  • the minimum quantization width of a 5-bit quasi-floating-point quantized value for example, the quantization width of a high-precision quantized value that is also a 9-bit fixed-point quantized value (high-precision quantum Therefore, according to the 5-bit quasi-floating-point quantized value, as with the 9-bit high-precision quantized value, the nonlinear function is the same as or smaller than the quantized width of the quantized value.
  • ⁇ ( ⁇ ) left side of Fig. 16
  • the 9-bit fixed-point quantization value (high-precision quantization value) is wider than the 5-bit fixed-point quantization value (normal quantization value).
  • 9-bit fixed-point quantized values (high-precision quantized values) (or more), and numerical values near 0 can be represented with precision. Can be expressed well.
  • FIG. 20 shows the relationship between the 5-bit quasi-floating-point quantized value input (given) to the conversion circuit 231 and the 9-bit fixed-point quantized value output from the conversion circuit 231.
  • the conversion circuit 231 converts the 5-bit quasi-floating point quantized value supplied from the LUT 221 into a 9-bit fixed point quantized value that is also a high-precision quantized value. Perform expression format conversion.
  • the conversion circuit 231 converts the 5-bit quasi-floating point quantization value shown in the first column from the left in FIG. 20 into the 9-bit fixed-point quantum shown in the second column in the left force of FIG. Convert to a digitized value and output.
  • the conversion circuit 231 uses a quasi-mantissa part (lower 2 bits) 3 ⁇ 4, A 9-bit fixed-point quantized value is output, with the lower 2 bits unchanged and the remaining upper 7 bits set to 0.
  • the conversion circuit 231 sets the lower third bit (the third bit counted from the least significant bit) to 1 And a 9-bit fixed-point quantized value with the lower 2 bits immediately after that set as the quasi-mantissa part f and the remaining higher 6 bits as 0.
  • the conversion circuit 231 sets the lower 4 bits to 1 and the lower 2 bits immediately thereafter.
  • a 9-bit fixed-point quantized value is output, with quasi-mantissa part f and the remaining 6 bits as 0.
  • the conversion circuit 231 represents the lower e + 1-th bit with respect to the 5-bit quasi-floating point quantized value represented by the quasi-exponential part ⁇ and the quasi-mantissa part represented by fC. Outputs a 9-bit fixed-point quantized value with 1 as the quasi-mantissa part f and the remaining 6 bits as 0.
  • conversion circuit 232 in FIG. 18 performs conversion in the same display format as conversion circuit 231 in FIG. 18 (conversion from a quasi-floating point quantized value to a fixed point quantized value).
  • the conversion circuit 231 converts the quasi-floating point quantized value into a 9-bit bit string based on the quasi-exponential part e that is the upper 3 bits of the quasi-floating point quantized value.
  • the position to insert the quasi-mantissa part f ⁇ which is the lower 2 bits of the quasi-floating-point quantized value, is determined (the bit to be replaced with the quasi-mantissa part f), and the 9-bit bit string with the quasi-mantissa part inserted at that position Is output as a 9-bit fixed-point quantized value.
  • the conversion circuit 231 generates 2 for the values 000, 001, 010, 011, 100, 101, 110, 111 represented by 3 bits as the quasi-exponential part e.
  • Bit xy force S Undetermined 9-bit bit sequence OOOOOOOxy, 000000 lxy, 00000 lxyO, OOOOlxyOO, OOOlxyOOO, OOlxyOOOO, OlxyOOOOO, lxyOOOOOOOOOOOOOO
  • the conversion circuit 231 selects the 9-bit bit string associated with the quasi-exponent part e, which is the upper 3 bits of the 5-bit quasi-floating point quantized value, and selects the undecided 2 bits xy of the 9-bit bit string.
  • a 9-bit bit string is obtained and the 9-bit bit string is output as a 9-bit fixed-point quantized value.
  • the quasi-exponential part e that is the upper 3 bits is 100, so that the conversion circuit 2 31 Is associated with 100! /, And selects the 9-bit bit string OOOlxyOOO.
  • the conversion circuit 231 converts the undecided 2-bit xy of the selected 9-bit bit string OOOlxyOOO.
  • the first bit 0 and the second bit 1 from the left of 01 that is the quasi-mantissa part fC, a 9-bit bit string 000101000 is obtained, and a 9-bit fixed-point quantized value is obtained. Output.
  • the conversion circuit 231 can convert the quasi-floating point quantized value to a fixed-point quantized value by using the quasi-mantissa part f (which is a bit string) of the floating-point quantized value as it is.
  • the conversion circuit 231 can be configured relatively easily, and therefore the circuit scale is not much. Don't get big.
  • FIG. 22 shows a 9-bit fixed-point quantized value input (given) to the conversion circuit 233.
  • the conversion circuit 233 converts the fixed-point quantized value, which is also the 9-bit high-precision quantized value supplied from the arithmetic circuit 1126 (Fig. 18), into the 5-bit quasi-floating-point quantized value. Convert the representation format of numerical values to.
  • the conversion circuit 233 converts the 9-bit fixed-point quantized values shown in the left table of FIG.
  • the left table of FIG. 22 shows the 9-bit fixed-point quantized values together with the decimal numbers represented by the fixed-point quantized values.
  • FIG. 22 the table on the right side of FIG. 22 is the same as FIG. 20, and therefore shows the correspondence between the 5-bit quasi-floating point quantized value and the 9-bit fixed point quantized value.
  • the conversion circuit 233 has a decimal number close to the decimal number represented by the fixed-point quantized value, for example, FIG.
  • the maximum decimal number of decimal numbers represented by the 9-bit fixed-point quantized values shown in the table on the left is shown in Fig. 22.
  • the 5-bit quasi-floating-point quantized values corresponding to the fixed-point quantized values in the table on the right are Output.
  • the conversion circuit 233 has the upper 6 bits of the 9-bit fixed-point quantized value set to 0.
  • a 5-bit quasi-floating point quantized value corresponding to the 9-bit fixed point quantized value is output.
  • conversion circuit 233 has the upper 5 bits of the 9-bit fixed-point quantized value set to 0, If the 6th bit (the 6th bit from the most significant bit) is 1, the lower 1 bit (the least significant bit) of the 9-bit fixed-point quantized value is set to 0 in the table on the right side of Figure 22 Outputs a 5-bit quasi-floating-point quantized value corresponding to the truncated fixed-point quantized value.
  • the conversion circuit 233 inputs the 9-bit fixed-point quantized values shown in the left table of FIG.
  • the 9-bit fixed-point quantized value is 0 and the upper 5 bits are 1
  • the conversion circuit 233 has the upper 3 bits of the 9-bit fixed-point quantized value set to 0, If the 4th bit is 1, the 5-bit quasi-floating value corresponding to the fixed-point quantized value obtained by rounding down the lower 3 bits of the 9-bit fixed-point quantized value to 0 in the table on the right of Figure 22 Outputs the quantized value of several points.
  • Conversion circuit 233 inputs a fixed-point quantized value whose upper 2 bits are 0 and upper 3 bits are 1, and fixed-point quantized value whose upper 1 bit is 0 and upper 2 bits are 1. For, the same 5-bit quasi-floating point quantized value is output as above.
  • the conversion circuit 233 uses the lower order of the 9-bit fixed-point quantized value in the table on the right side of FIG. Outputs a 5-bit quasi-floating-point quantized value corresponding to a fixed-point quantized value with 6 bits rounded down to zero.
  • conversion circuit 233 detects the position of 1 in the most significant bit side of the 9-bit fixed-point quantized value, and Based on this, a 3-bit quasi-exponent part e and a 2-bit quasi-mantissa part f are obtained, and the 3-bit quasi-exponent part e and 2-bit quasi-mantissa part f are sequentially arranged from the most significant bit side.
  • the 5-bit bit string is output as a 5-bit quasi-floating point quantized value.
  • the 9-bit fixed-point quantized value is represented as IN
  • the a + 1-th bit counted from the least significant bit of the 9-bit fixed-point quantized value IN is represented as IN [a].
  • a 0, l,-• ⁇ , 8.
  • the bit string from the least significant bit of the 9-bit fixed-point quantized value IN to the a + 1 bit power to the b + 1 bit is represented as IN [a: b].
  • b 0, l,..., 8 and a> b.
  • the conversion circuit 233 converts the exponent part e into the bit HN [8] (most significant bit) power 1 out of the 9-bit fixed-point quantized value IN.
  • the 2 bits of IN [7: 6] of the 9-bit fixed-point quantized value IN are the mantissa part f.
  • the conversion circuit 233 indicates that the bit IN [8] of the 9-bit fixed-point quantized value IN is 0.
  • the conversion circuit 233 uses an exponent part e when 2 bits IN [8: 7] force SO of 9-bit fixed-point quantized value IN and bit IN [6] is set. And the two bits of IN [5: 4] of the 9-bit fixed-point quantized value IN are the mantissa part f.
  • the conversion circuit 233 has 3 bits IN [8: 6] of 9-bit fixed-point quantized values IN.
  • exponent part e is set to 100, and 2 bits of IN [4: 3] of 9-bit fixed-point quantized value IN are converted to mantissa part f And
  • the conversion circuit 233 uses the 4-bit IN [8: 5] power ⁇ of the 9-bit fixed-point quantized value IN and the bit IN [4] ⁇ is the exponent part e. And the 2 bits of IN [3: 2] of the 9-bit fixed-point quantized value IN are the mantissa part f.
  • the conversion circuit 233 uses the exponent part e when the 5-bit IN [8: 4] of the 9-bit fixed-point quantized value IN is 0 and the bits IN [3] are 1. If 010 is 010, the 2 bits of IN [2: 1] of the 9-bit fixed-point quantized value IN are the mantissa part f.
  • the conversion circuit 233 uses the 6-bit IN [8: 3] power ⁇ of the 9-bit fixed-point quantized value IN, and when the bit IN [2] is 1, the exponent part e Is set to 001, and 2 bits of IN [1: 0] of the 9-bit fixed-point quantized value IN are used as the mantissa part f.
  • the conversion circuit 233 sets the exponent e to 000 and sets the 9-bit
  • the 2 bits of IN [1: 0] of the fixed-point quantized value IN are the mantissa part f.
  • the conversion circuit 233 sets the quasi-exponent part e to the upper 3 bits and the quasi-mantissa part lower
  • the conversion circuit 233 sets the exponent part e to 011 and the 9-bit fixed-point quantized value IN. 2 bits 10 of IN [3: 2] are the mantissa part f. Then, the conversion circuit 233 converts the 5-bit bit string 01110 having the quasi-exponent part e 011 as the upper 3 bits and the quasi-mantissa part fC 10 as the lower 2 bits into a 5-bit quasi-floating point quantized value. Output as.
  • the fixed-point quantized value can be converted into a quasi-floating-point quantized value by using a partial bit string of the fixed-point quantized value as it is for the quasi-mantissa part f.
  • the conversion circuit 233 can be configured relatively easily, and therefore the circuit scale is not so large.
  • the LUT 221 is supplied with the 5-bit quasi-floating point quantized values shown in the table on the right side of FIG. 24.
  • the table on the right side of FIG. 24 shows the bit string as the 5-bit quasi-floating point quantized values.
  • the 9-bit fixed-point quantized value corresponding to the quasi-floating-point quantized value and the decimal number represented by the 9-bit are also shown.
  • the LUT 221 receives the inverse function ⁇ 1 ( ⁇ ⁇ (
  • the 5-bit fixed-point quantized value representing the value ⁇ _1 (y) obtained as a result of the operation is output.
  • the table on the left of FIG. 24 shows the 5-bit fixed-point quantized values output from the LUT 228.
  • a decimal number represented by the bit string is also shown together with the bit string as a 5-bit fixed-point quantized value.
  • the range of decimal numbers represented by 5-bit fixed-point quantized values is 0 to 31, whereas 5-bit quasi-floating-point quantized values ( The range of decimal numbers represented by the 9-bit fixed-point quantized value corresponding to is 0 to 448. The range of decimal numbers represented by 9-bit fixed-point quantized values is 0 to 511. Therefore, a 5-bit quasi-floating-point quantized value is wider than a 5-bit fixed-point quantized value. It can represent a numerical value with the same dynamic range as a 9-bit fixed-point quantized value.
  • the high-precision quantization in which the minimum quantization width of the 5-bit quasi-floating-point quantized value is also, for example, a 9-bit fixed-point quantized value. Therefore, according to the 5-bit quasi-floating-point quantized value, as with the 9-bit high-precision quantized value, when the argument y is near the numerical value 0, it is steep.
  • the numerical value near 0 can be expressed with high accuracy as the argument y of the changing inverse function ⁇ -).
  • the 9-bit fixed-point quantized value (high-precision quantized value) is wider than the 5-bit fixed-point quantized value (normal quantized value).
  • 9-bit fixed-point quantized values (high-precision quantized values) (or more), and numerical values near 0 can be represented with precision. Can be expressed well.
  • the LUT221 is a 5-bit expression that accurately represents a value near 0 as the result of the nonlinear function ⁇ (X) that becomes a value near 0 for an argument x greater than a certain large number. Output quasi-floating point quantized value.
  • the LUT228 is a 5-bit value that accurately represents a numerical value near 0 that is input as an integrated value ⁇ ⁇ (
  • )) is output as a fixed-point quantized value that is also a 5-bit normal quantized value.
  • the LUT 221 and the LUT 228 can be configured in a small size, and as a result, the large-scale error of the check node calculator 181 (FIG. 18) and consequently the decoding device of FIG. 17 can be suppressed.
  • the check node calculator 181 reads one by one from the 6-bit message D101 (variable node message V) force branch memory 100 (Fig. 17) from the variable node corresponding to each column of the check matrix H,
  • ) are supplied to the LUT 221 and the most significant bit, the sign bit D121, is supplied to the EXOR circuit 129 and the FIFO memory 133, respectively.
  • the control signal D106 is supplied from the control unit 105 (FIG. 17) to the check node calculator 181, and the control signal D106 is supplied to the selector 1124 and the selector 131.
  • step S21 the LUT 221 takes the 5-bit absolute value D122 (
  • D122
  • the 5-bit normal quantum that matches the 5-bit absolute value D122
  • F1123 the 9-bit quasi-floating point quantized value F1123, which represents the operation result of the nonlinear function ⁇ (
  • step S21 the absolute value D122 (
  • step S22 the conversion circuit 231 converts the 5-bit quasi-floating-point quantized value F1123 representing the calculation result of the nonlinear function ⁇ (
  • the display format is converted to the fixed-point quantized value that is also the high-precision quantized value of the bit, and the resulting 9-bit fixed-point quantized value D1123 is sent to the calculator 1122 Output.
  • step S23 the arithmetic unit 1122 stores the operation result D1123 ( ⁇ (
  • the result D1123 is added to the value D1124, and the 13-bit integrated value obtained as a result is stored in the register 1123 again. Note that if the calculation results for the absolute value D122 (
  • )) represented by the 9-bit fixed-point quantized value supplied from the conversion circuit 231 is the maximum, and the FIFO memory 11 Accumulated by the maximum number of delays in 27, that is, the number of times of the maximum weight of the row of the check matrix H.
  • the maximum weight of the row of the parity check matrix H in FIG. 9 is 9, and therefore the 9-bit fixed-point quantized value is accumulated nine times at maximum in the arithmetic unit 1 122 and the register 1123 (9 Nine accumulations of fixed-point quantized values of bits are performed).
  • the number of bits of the connection line is the 9-bit fixed decimal number output by the LUT221 so that a value obtained by accumulating the 9-bit fixed-point quantized value 9 times can be represented. It is 13 bits, which is 4 bits more than the point quantized value D1123 (the minimum number of bits that can represent 9 (times)).
  • the register 1125 supplies the stored value D1125 to the selector 1124 and the arithmetic unit 1126 as a 13-bit value D1126.
  • control signal D106 is ⁇ 0 ''
  • the selector 1124 selects the value D1126 supplied from the register 1125, outputs it to the register 1125, and stores it again. That is, register 1125 was accumulated last time until ⁇ (
  • the FIFO memory 1127 stores the nonlinear function output by the LUT 221 until a new value D1126 (i ⁇ (
  • D1126 i ⁇ (
  • the register 1125 Delay the 5-bit quasi-floating-point quantized value representing the operation result D112 3 ( ⁇ (
  • the conversion circuit 232 converts the 5-bit quasi-floating point quantized value F1127 representing the calculation result of the nonlinear function ⁇ (
  • the display format is converted to a fixed-point quantized value that is also a quantized value, and the 9-bit fixed-point quantized value D1127 obtained as a result is supplied to the computing unit 1126.
  • step S25 the arithmetic unit 1126 subtracts the 9-bit value D1127 output from the FIFO memory 1127 and converted by the conversion circuit 232 from the 13-bit value D1126 supplied from the register 1125. (The value obtained by multiplying the 13-bit value D1126 supplied from register 1125 by the 9-bit value D1127 multiplied by -1 is added), and it is also a 9-bit high-precision quantized value that represents the subtraction result. The decimal point quantized value D1128 is supplied to the conversion circuit 233.
  • the operator 1126 obtains the check node from the integrated value of ⁇ (
  • Message D101 (variable node message V) from the branch for which message u is to be calculated Subtract the ⁇ (
  • )) is supplied to the conversion circuit 233.
  • the 9-bit value D1126 supplied from the register 1125 is subtracted from the 9-bit value D1127 supplied from the FIFO memory 1127.
  • the quantized value is 9-bit fixed-point quantization. If the maximum value that can be represented by the value D1128 is exceeded, the arithmetic unit 1106 clicks the subtraction result to the maximum value that can be represented by the 9-bit fixed-point quantized value. Bing and output.
  • step S26 the conversion circuit 233 converts the 9-bit fixed-point quantized value D1128 from the arithmetic unit 1126 into a 5-bit quasi-floating-point quantized value as described in FIG. The format is converted, and the resulting 5-bit quasi-floating point quantized value F 1128 is supplied to the LUT 228.
  • step S27 the LUT 228 receives the 5-bit quasi-floating point quantized value F1128 representing the integrated value ⁇ ⁇ (
  • D1129 that is also a 5-bit normal quantized value that represents the operation result of the inverse function ⁇ — ⁇ ⁇ (
  • step S27 equivalently, the integrated value
  • the calculation processing and the expression format conversion are performed to convert the floating-point quantized value representing the calculation result into a fixed-point quantized value.
  • the EXOR circuit 129, the register 130, the selector 131, the register 132, the FIFO memory 133, and the EXOR circuit 134 perform the same processing as the check node calculator 101 in FIG.
  • the EXOR circuit 134 uses the multiplication value of the sign bit D121 (sign (lvj)) of the message D101 (variable node message V) from all the branches over one row of the check matrix H, and the check node message u.
  • Message from the desired branch Divide by the sign bit D121 ( S ign (
  • the check node calculator 181 uses the 5-bit fixed-point quantized value D1129 output from the LUT 228 as the lower 5 bits and the 1-bit divided value D135 output from the EXOR circuit 134.
  • Message D102 (check node message u) is output that is represented by a fixed-point quantized value that is also a normal quantized value of 6 bits in total, which is the most significant bit (sign bit).
  • a 9-bit fixed-point quantized value that is also a high-precision quantized value, or a numerical value close to 0 with the same degree of precision as the 9-bit fixed-point quantized value, and has a dynamic range that is comparable to 5 Bit quasi-floating-point quantized values are used, and other processing uses fixed-point quantized values that are also normally quantized values, so LDPC codes can be decoded while suppressing large-scale decoding of the decoding device ( This can be performed accurately (without increasing the capacity of the branch memories 100 and 102 and the reception memory 104 in FIG. 17).
  • Check Node Calculator 181 receives the 5-bit fixed-point quantification value as input in LUT221 and outputs the result of the calculation of nonlinear function ⁇ ( ⁇ ) as a 5-bit quasi-floating-point quantification value. And the LUT228 outputs the result of the inverse function ⁇ -) as a 5-bit fixed-point quantized value with the 5-bit quasi-floating-point quantized value as input.
  • the LDPC code can be accurately decoded (using the small-capacity LUTs 221 and 228) while suppressing an increase in the size of the decoding device.
  • the check node calculator 181 requires new conversion circuits 231 to 233 as compared with the check node calculator 171 of FIG. However, if the minimum value of the quantization width of the quasi-floating-point quantized value is approximately the same as the quantization width of the fixed-point quantized value that is also a high-precision quantized value, the conversion circuits 231 to 233 are as described above. The circuit scale increment by newly providing the conversion circuits 231 to 233 is not so large.
  • the capacity proportional to the circuit scale required for the LUT 221 is the corresponding 5Z9 of the LUT 1121 in FIG. 14, and the capacity proportional to the circuit scale required for the LUT 228. is because it requires half 4 of LUT1128 corresponding 14, reduction of the circuit scale by employing the LUT221 and LUT 2 28 is very large.
  • the circuit scale of the check node calculator 181 can be reduced even if the circuit scale increment due to the newly provided conversion circuits 231 to 233 is taken into account. it can.
  • FIG. 26 shows a configuration example of a second embodiment of a decoding device for decoding an LDPC code to which the present invention is applied.
  • the decoding device in FIG. 26 accurately decodes the LDPC code while suppressing an increase in the size of the decoding device.
  • the memory capacity of the memory required for the decoding device can be reduced more than the decoding device of FIG.
  • the LDPC code represented by the check matrix H shown in FIG. 9 (code rate 2/3, The code length 108) is decoded.
  • the decoding device includes a decoding intermediate result storage memory 410, a switch 411, a quasi-check node calculator 412, a branch memory 413, a quasi-noble node calculator 415, a reception memory 416, and a control unit. It decodes the LDPC code by equivalently repeating the check node operation and variable node operation similar to the decoding device of FIG.
  • FIG. 18 shows a configuration example of the check node calculator 181 of FIG. 17 that performs the check node calculation as described above.
  • FIG. 27 shows a configuration example of the noble node calculator 103 of FIG. 17 that performs the noble node calculation.
  • the variable node calculator 103 in FIG. 17 is the same as the variable node calculator 103 in FIG. 10, and therefore the variable node calculator 103 in FIG. 17 shown in FIG. 27 is shown in FIG. This has the same configuration as the variable node calculator 103 in FIG.
  • the arithmetic unit 156 of FIG. 12 is illustrated as being divided into two arithmetic units 156 and 156.
  • the arithmetic unit 156 of FIG. 12 subtracts the value D153 supplied from the FIFO memory 155 from the value D152 supplied from the register 154 as described above, and further subtracts the value D153 supplied from the FIFO memory 155 from the reception memory 104. Since the supplied reception data D104 is added and the 6-bit value obtained as a result is output as message D105 (variable node message V), the processing to be performed by the calculator 156 is supplied from the register 154.
  • the value D152 can be divided into a subtraction process for subtracting the value D153 supplied from the FIFO memory 155 and an addition process for adding the reception data D104 supplied from the reception memory 104. Therefore, in FIG. 27, the computing unit 156 in FIG. 12 is replaced with the computing unit 156 that performs addition processing and the subtraction processing.
  • 1 is divided into an arithmetic unit 156 that performs processing.
  • FIG. 28 shows a configuration example of the quasi-check node calculator 412 of FIG. 26, and
  • FIG. 29 shows a configuration example of the quasi-noble node calculator 415 of FIG.
  • the quasi-check node calculator 412 performs the check node operation itself, and also performs the quasi-noble node calculator 415 force S variable node operation itself.
  • the quasi-check node calculator 412 performs a part of the check node operation and the variable node operation, and the quasi-noble node calculator 415 performs the other part of the noble node operation.
  • the quasi-check node calculator 412 of Fig. 28 is composed of a block A 'and a block B'.
  • Block A corresponds to block A that performs the check node calculation of check node calculator 181 in FIG.
  • the block B ′ obtains the variable node message V from the integrated value of the check node message corresponding to all the branches of each column of the check matrix H, which is a part of the variable node calculator 103 in FIG.
  • the check node message u corresponding to the branch is subtracted from the block B.
  • the quasi-variable node calculator 415 of Fig. 29 includes a block C '.
  • Block C ′ integrates check node message u corresponding to each column branch of check matrix H, which is another part of variable node calculator 103 in FIG. 27, and adds received data u to the integrated value.
  • block C ′ integrates check node message u corresponding to each column branch of check matrix H, which is another part of variable node calculator 103 in FIG. 27, and adds received data u to the integrated value.
  • the check node calculator 181 in FIG. 17 is configured by a block A that performs the check node operation itself, as shown in FIG.
  • the variable node calculator 103 in FIG. 17 obtains the variable node message V from the integrated values of the check node messages u corresponding to all the branches of each column of the check matrix H as shown in FIG.
  • the check node message u corresponding to the branch is subtracted from the check node message u corresponding to the branch, and the check node message u corresponding to the branch of each column of the check matrix H is accumulated. It can be divided into block C which performs the other part of the variable node calculation, which adds the received data u to the value.
  • the quasi-check node calculator 412 of FIG. 28 has a block A ′ corresponding to the block A of FIG. This block consists of block B 'corresponding to block B in Fig. 27. In block A, a part of the variable node operation is performed, and in block A, the check node operation itself is performed.
  • a part of the noble node calculation and the check node calculation performed by the quasi check node calculator 412 are hereinafter referred to as quasi check node calculation as appropriate.
  • the quasi-variable node calculator 415 in FIG. 29 is configured by a block C corresponding to the block C in FIG. 27, and performs another part of the nodal node calculation in the block C.
  • the other part of the noble node calculation performed by the quasi-noble node calculator 415 is hereinafter referred to as quasi-noble node calculation as appropriate.
  • the quasi-check node calculator 412 performs quasi-check node operation (part of variable node operation and check node operation) using the storage contents of the decoding result storage memory 410 and the like.
  • the check node message u obtained as a result is supplied to the branch memory 413 and stored therein.
  • the quasi-noble node calculator 415 performs a quasi-variable node operation (another part of the variable node operation) using the check node message u or the like stored in the branch memory 413, and the resulting decoding is performed.
  • the intermediate result V is supplied to and stored in the decoding intermediate result storage memory 410.
  • the quasi-check node calculation by the quasi-check node calculator 412 and the quasi-noble node calculation by the quasi-noble node calculator 415 are alternately performed, so that eventually the check node calculation And variable node calculation are alternately performed, and thereby the LDPC code is decoded.
  • a FIFO memory 155 that is delayed until the integration of the check node message u corresponding to the branch is completed is required.
  • the check node message u corresponding to all the branches of each column of the check matrix H is similar to the corresponding block B (FIG. 27).
  • the node node V is obtained from the integrated value! /,
  • the check node message u is stored in the branch memory.
  • the check node message u (message D411) is supplied from the branch memory 413 to the quasi check node calculator 412 from the branch for which the node node V is desired to be obtained. It is like that.
  • the check node message u from the branch for which the node message V is to be obtained is integrated with the check node message u corresponding to each column branch of the check matrix H.
  • the decoding device of FIG. 26 can be configured to be smaller than the decoding device of FIG. 17 by the FIFO memory 155.
  • the semi-check node calculator 412 performs the operation of the following equation (8) (part of the variable node operation) and the operation of the above equation (7) (check node operation) as a semi-tic node operation.
  • the check node message u which is the result of the quasi-check node operation, is supplied to the branch memory 413 and stored (stored).
  • the quasi-variable node calculator 415 performs the operation of the above formula (5) (a part of the variable node operation) as a quasi-variable node operation!
  • the result V is supplied to the decoding result storage memory 410 and stored.
  • u in equation (8) is a variable of i columns of the parity check matrix H by a noble node operation.
  • the decoding intermediate result V obtained as a result of the calculation of the above equation (5) is the received data u and
  • 0i check matrix H is the sum of check node messages u obtained as a result of check node operations from all branches corresponding to 1 in each row of column i in column i. Therefore, according to equation (8), such a Among the check node messages u obtained by the check node operation from the branch corresponding to 1 in each row of the i column of the check matrix H from the decoding intermediate result V, the branch node from the branch that is trying to obtain the noble node message V By subtracting the check node message u
  • variable node message V of each branch can be obtained.
  • variable node calculation of the equation (1) for obtaining the noble node message V is the equation (1).
  • variable node operation of equation (1) and the check node operation of equation (7) are the same as the operation of equation (5) and the operations of equation (8) and equation (7). Is equivalent to
  • the quasi-check node calculator 412 performs the operations (quasi-check node operation) of Equations (8) and (7), and the quasi-noble node calculator 41
  • step 5 the calculation of equation (5) (quasi-variable node calculation) is performed to decode the LDPC code.
  • the decoding intermediate result V obtained by the quasi-variable node operation of Equation (5) is the variable node message V for each branch variable node message V obtained as a result of the variable node operation of Equation (1). Since the check node message u from the branch corresponding to V is added, only one is obtained for one column (one variable node) of the check matrix H. Therefore, the decoding result V for the code length (number of columns of the check matrix H) is obtained for the received data u for the code length.
  • the quasi-check node calculator 412 uses the decoding intermediate result V corresponding to each column of the check matrix H that is the result of the quasi-variable node calculation by the quasi-variable node calculator 415.
  • Check node message obtained as a result of the quasi-check node operation (check node message output by each check node to each branch) Message) Uj is stored in the branch memory 413.
  • the storage capacity required for the branch memory 413 is the same as the branch memory 102 shown in FIG. 17 for storing the result of the check node calculation. It is a value obtained by multiplying the number of quantization bits of the message u (in this embodiment, the number of bits of a normal quantization value that is also a fixed-point quantization value).
  • the quasi-noble node calculator 415 receives the check node message u corresponding to "" in each row of i columns of the check matrix H, which is the result of the quasi-check node calculation by the quasi-check node calculator 412. Use data u to perform quasi-variable node operation and
  • the decoding intermediate result V corresponding to the i column obtained as a result of the applet node operation is stored in the decoding intermediate result storage memory 410.
  • the storage capacity required for the decoding intermediate result storage memory 410 is smaller than the number of parity check matrix H “1”, that is, the code length of the LDPC code and the decoding intermediate result V This is a value obtained by multiplying the number of quantization bits (in this embodiment, the number of bits of a normal quantized value that is also a fixed-point quantized value).
  • the storage capacity of the decoding intermediate result storage memory 410 is reduced compared to the branch memory 100 in FIG.
  • the device scale of the decoding device in FIG. 26 can be reduced.
  • the quasi-variable node operation of Equation (5) performed by the quasi-variable node calculator 415 repeats the LDPC code by alternately repeating the check node operation and the variable node operation. This is an operation for obtaining the final decoding result of the LDPC code when performing decoding. Therefore, the decoding device of FIG. 26 obtains the final decoding result of the LDPC code as in the decoding device of FIG. There is no need to provide a block (not shown) that performs the calculation of equation (5). Therefore, the device scale of the decoding device in FIG. 26 can be reduced by an amount corresponding to such a block as compared with the decoding device in FIG.
  • the decoding intermediate result storage memory 410 In the decoding intermediate result storage memory 410, the intermediate decoding result D415 obtained from the quasivariable node calculator 415 for each column of the check matrix H obtained as a result of the quasivariable node calculation of Expression (5) D415 (V in Expression (5)) is supplied, and the decoding intermediate result storage memory 410 sequentially stores the decoding intermediate result D415 supplied from the quasi-variable node calculator 415.
  • the decoding intermediate result D415 for each column of the check matrix H stored in the decoding intermediate result storage memory 410 is also sequentially read out and supplied to the switch 411.
  • the switch 411 is also supplied with reception data D 417 (u) from the reception memory 416. Switch 411 is
  • control unit 417 supplies switch 411 with control signal D421 for instructing selection of reception data D417.
  • the switch 411 selects the reception data D417 supplied from the reception memory 416 and supplies it to the quasi-check node calculator 412 as the decoding intermediate result D411.
  • the semi-check node calculator 412 performs the semi-check node calculation using the received data D417 as the decoding intermediate result V of Expression (8).
  • the check node message u stored in the branch memory 413 uses the check node message u.
  • the check node message u stored in the branch memory 413 uses the new received data D417. Initialized to 0 when stored in
  • reception data D417 is stored in reception memory 416, and after the first quasi-variable node operation using reception data D417 is performed (the final decoding result for reception data D417). Is output), the demodulation result D415 for the received data D417 is stored in the decoding result storage memory 410, so that the control unit 417
  • the control signal D421 for instructing selection of the decoding intermediate result D415 is supplied to the switch 411.
  • the switch 411 selects the decoding intermediate result D415 supplied from the decoding intermediate result storage memory 410 and supplies it to the semi-check node calculator 412 as the decoding intermediate result D411. Therefore, in this case, the quasi-tic node calculator 412 performs a quasi-check node operation using the decoding intermediate result D415 as the decoding intermediate result V of Equation (8).
  • the semi-check node calculator 412 is supplied with the decoding intermediate result D411 as the decoding intermediate result v of the equation (8) from the switch 411, and from the branch memory 413 with the semi-check node calculator 412. Supplied as a check node message u force message D413 obtained as a result of the quasi-check node operation.
  • the semi-check node calculator 412 is supplied with a control signal D420 from the control unit 417.
  • the quasi-check node calculator 412 performs a quasi-check node operation using the decoding intermediate result D411 (V in equation (8)) from the switch 411 and the message D413 (previous check node message u), that is, Then, the calculation of Expression (8) is performed, and then the calculation of Expression (7) is further performed. As a result, the check node message u of Expression (7) is changed to the branch of the check matrix H (value is 1). Required for each element. Then, the semi-check node calculator 412 supplies the check node message u of each branch obtained as a result of the semi-check node calculation of Expression (8) to the branch memory 413 as a message D412.
  • the branch memory 413 sequentially stores the message D412 of each branch supplied from the semi-check node calculator 412.
  • the message D412 (u) of each branch stored in the branch memory 413 is also sequentially read out for the next quasi-check node operation and the next quasi-noble node operation. This is supplied to the calculator 412 and the quasi-noble node calculator 415.
  • the quasi-noble node calculator 415 is supplied with the message D 413 (check node message u) of each branch from the branch memory 413. Also, the quasi-noble node calculator 415 is supplied with received data D417 (u in equation (5)) of the LDPC code from the receiving memory 416. More
  • control signal D422 is supplied from the control unit 417 to the quasi-variable node calculator 415.
  • the quasi-noble node calculator 415 receives the message D413 (u) of each branch from the branch memory 413. Using the received data D417 (u) from the reception memory 416, the quasi-variable no
  • the quasi-noble node calculator 415 supplies the decoding intermediate result V obtained as a result of the quasi-noble node calculation of Expression (5) to the decoding intermediate result storage memory 410 as a decoding intermediate result D415.
  • the decoding intermediate result storage memory 410 sequentially stores the decoding intermediate result D415 supplied from the semi-variable node calculator 415, and further stores the stored decoding intermediate result.
  • the force is also sequentially read and supplied to the switch 411.
  • the quasi-noble node calculator 415 has performed the last quasi-noble node calculation, that is, for example, the reception data D417 stored in the reception memory 416 is determined in advance.
  • the decoding intermediate result storage memory 410 stores the decoding intermediate result D415 as the result of the last quasi-variable node operation.
  • the reception data D417 (LDPC code) stored in the reception memory 416 is output as the final decoding result.
  • the reception memory 416 receives the reception LLR (log likelihood ratio) corresponding to the code length, which is the value of zeroness of each bit of the LDPC code calculated from the reception signal D416 received through the communication path.
  • the data is stored as data D417 and supplied to the switch 411 and the quasi-noble node calculator 415.
  • the control unit 417 supplies the control signal D420 to the quasi-tic node calculator 412, the control signal D421 to the switch 411, and the control signal D422 to the quasi-noble node calculator 415, respectively. Control.
  • data is stored in the order of decoding result storage memory 410, quasi-check node calculator 412, branch memory 413, and quasi-noble node calculator 415.
  • One round of decoding one iteration of decoding (check node operation and variable node operation)) is performed.
  • a decoding intermediate result D415 which is a result of the quasi-noble node calculation by the quasi-noble node calculator 415, is output as a final decoding result. Is done.
  • FIG. 28 shows a configuration example of the semi-check node calculator 412 of FIG.
  • the semi-check node calculator 412 is supplied with the decoding intermediate result D411 as the decoding intermediate result V of Equation (8) from the switch 411 (Fig. 26) and the branch memory 413 (Fig. 26). From the check node message u (the check node message u used in the quasi-noble node operation performed immediately before) obtained as a result of the previous quasi-check node operation by the quasi-check node calculator 412 It is supplied as a check node message u force message D413 from the branch which is trying to obtain the variable node message V by (8).
  • the check node message u the check node message u used in the quasi-noble node operation performed immediately before
  • control signal D420 is supplied to the quasi-tic node calculator 412 from the control unit 417 (FIG. 26).
  • the quasi-check node operation and the quasi-variable node operation are repeatedly performed, so that equivalently, as in the decoding device in FIG. The calculation is repeated.
  • both the message u obtained by the check node operation and the message V obtained by the noble node operation are also 6-bit normal quantized values including the sign bit.
  • both message u and message V are fixed 6-bit normal quantization values including the sign bit. It shall be represented by a decimal point quantization value.
  • the received data D417 stored in the reception memory 416 is also a fixed-point quantizer that is also a 6-bit normal quantized value including the sign bit, as in the decoding device of FIG. It is expressed as a quantified value.
  • the message D413 (check node message u) supplied from the branch memory 413 (Fig. 26) to the semi-check node calculator 412 is a fixed small value that is also a 6-bit normal quantization value.
  • the decoding intermediate result D411 (v) supplied from the switch 411 (FIG. 26) to the quasi-check node calculator 412 is a fixed-point quantized value that is also a 9-bit normal quantized value as will be described later. expressed.
  • control signal D supplied from the control unit 417 (Fig. 26) to the quasi-tic node calculator 412.
  • the computing unit 431 calculates the calculation of equation (8), that is, the 9-bit decoding intermediate result D41 l (v) supplied thereto, and the 6-bit decoding intermediate result D413 (u )
  • the noble node message V is obtained, and the fixed-point quantized value D431 (V) that is also a 6-bit normal quantized value representing the variable node message V is output.
  • the calculator 431 is a fixed-point number in which the calculation result of Equation (8) is also a 6-bit normal quantized value, similar to the calculator 156 constituting the variable node calculator 103 of Fig. 12 described above. If it is outside the numerical range represented by the quantized value, the calculation result is clipped and output.
  • the 6-bit fixed-point quantized value D431 (v) output from the arithmetic unit 431 is supplied to the block A '.
  • the sign bit D432 (sign (V)) indicating the sign of the most significant bit out of the 6-bit fixed-point quantized value D431 (noreable node message V) from the arithmetic unit 431 is added to the EXOR circuit 440 and Supplied to the FIFO memory 444 and supplied to the absolute value D433 (
  • the block A corresponds to the block A of the check node calculator 181 shown in Fig. 18, and therefore performs the same processing as the block A.
  • LUT432 LUT432, arithmetic unit 433, register 434, selector 435, register 436, arithmetic unit 437, FIFO memory 438, LUT439, EXOR circuit 440, register 441, selector 442, register 443, FIFO
  • the memory 444, the EXOR circuit 445, and the conversion circuits 501 to 503 are the LUT221, the arithmetic unit 1122, the register 1123, the selector 1124, the register 1125, the arithmetic unit 1126, the FIFO memory 1127, the LUT228, the EXOR circuit 129, the register of the block A in FIG.
  • the LUT 432 receives as input a fixed-point quantized value that is also a 5-bit normal quantized value that matches the 5-bit absolute value D433 (
  • the 5-bit quasi-floating point quantized value F434 representing the operation result of the nonlinear function ⁇ (
  • the conversion circuit 501 converts the 5-bit quasi-floating point quantized value F434 from the LUT 432 to a fixed-point quantized value D4 34 which is also a 9-bit high-precision quantized value. And output to the calculator 433.
  • the arithmetic unit 433 includes a 9-bit fixed-point quantized value D434 representing the calculation result of the nonlinear function ⁇ (
  • the integrated value D435 output from the arithmetic unit 433 is 13 bits, and is input to the arithmetic unit 433 from the LUT 432 via the conversion circuit 501, and the arithmetic result D434 ( ⁇ (
  • the power bit in Fig. 18 is the output power of the arithmetic unit 1122 13 bits, which is 4 bits more than the 9-bit operation result 0434 ( ⁇ (
  • the selector 435 sets the value stored in the register 434, that is, the message D431 (variable node message V) from all the branches over one row of the check matrix H.
  • 13-bit fixed-point quantized value D435 (i ⁇ ⁇ ⁇ (
  • the register 436 supplies the stored fixed-point quantization value D436 to the selector 435 and the arithmetic unit 437 as a 13-bit fixed-point quantization value D437.
  • the selector 435 selects the fixed-point quantized value D437 supplied from the register 436, outputs it to the register 436, and stores it again. That is, until ⁇ (
  • ) up to i d).
  • ) is delayed and supplied to the conversion circuit 502 as a 5-bit quasi-floating point quantized value F438.
  • the conversion circuit 502 converts the 5-bit quasi-floating-point quantized value F438 from FIF0438 into a fixed-point quantized value D438 that is also a 9-bit high-precision quantized value, and supplies it to the arithmetic unit 437. To do.
  • the computing unit 437 subtracts the 9-bit fixed-point quantized value D438 supplied from the conversion circuit 502 from the 13-bit fixed-point quantized value D437 supplied from the register 436, and obtains the subtraction result.
  • the resulting 9-bit fixed-point quantized value D439 is supplied to the LUT439.
  • the computing unit 437 performs a check from the integrated value of the computation result of the nonlinear function ⁇ (
  • the node message u has been obtained! /,
  • ) up to 1 is supplied to the conversion circuit 503.
  • the subtraction result obtained by subtracting the 9-bit fixed-point quantization D438 supplied from the conversion circuit 502 from the 13-bit fixed-point quantization value D437 supplied from the register 436 is 9-bit high-precision quantum.
  • the conversion circuit 503 receives the 9-bit fixed-point quantized value D439 representing the subtraction value ( ⁇ ⁇ (
  • the LUT439 receives the 5-bit quasi-floating point quantized value F439 representing the subtraction value ( ⁇ ⁇ (
  • 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. If the sign bit D432 of the variable node message v (D431) obtained from the decoding intermediate result D411 corresponding to all 1s in one row of the check matrix is multiplied, the register 441 is reset.
  • the selector 442 uses the value stored in the register 441, that is, the code obtained from the decoding intermediate result D411 corresponding to all 1s over one row of the check matrix.
  • the register 443 supplies the stored value D443 to the selector 442 and the EXOR circuit 445 as a 1-bit value D444.
  • the selector 442 selects the value D444 supplied from the register 443, outputs it to the register 443, and stores it again.
  • 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 EXOR circuit 445 uses the sign bit D432 (sig n (v)) of the noble node message v (D431) obtained from the decoding result D411 corresponding to all 1s in one row of the check matrix.
  • the semi-check node calculator 412 the 5-bit normal quantization value D440 output from the LUT439 is set to the lower 5 bits, and the 1-bit division value D446 output from the EXOR circuit 445 is used.
  • Message D412 (check node message u) represented by a normal quantization value of 6 bits in total, which is the most significant bit (sign bit), is output.
  • the quasi-tic node calculator 412 performs the operations of Equations (7) and (8), and the check node message based on the 6-bit normal quantization value, which is the result of the check node operation. Di u is required.
  • This check node message u is supplied from the semi-check node calculator 412 to the branch memory 413 (FIG. 26) and stored.
  • the quasi-check node calculator 412 has nine calculation results ⁇ 34 ( ⁇ (
  • the amount of delay in the FIF 0 memory 438 and the FIFO memory 444 is reduced to the value of the row weight.
  • FIG. 29 shows a configuration example of the quasi-noreable node calculator 415 of FIG.
  • the quasi-noble node calculator 415 is composed of block C.
  • the block C corresponds to the block C of the variable node calculator 103 shown in FIG. 27. Accordingly, the same processing as the block C is performed. That is, in the block C, the computing unit 471, the register 472, the selector 473, the register 474, and the computing unit 475 are the computing unit 151, the register 152, the selector 153, the register 154, and the computing unit of the block C in FIG. 156 is configured in the same manner.
  • the quasi-noble node calculator 415 is supplied with the message D413 (check node message u), which is the result of the check node operation, from the branch memory 413 (Fig. 26). Supplied to vessel 471.
  • the quasi-noble node calculator 415 is supplied with the received data D417 (u) from the reception memory 416 (FIG. 26), and the received data D417 is
  • the quasi-noble node calculator 415 is supplied with the control signal D422 from the control unit 417 (FIG. 26), and the control signal D422 is supplied to the selector 473.
  • the message D413 (check node message u) supplied from the branch memory 413 (FIG. 26) and the reception memory 416 (FIG. 26) are supplied to the quasi-variable node calculator 415.
  • the received data D417 (u) is represented by a fixed-point quantized value that is also a 6-bit normal quantized value.
  • the arithmetic unit 471 adds the message D413 and the 9-bit value D471 stored in the register 472, adds up the message D413u, and stores the resulting 9-bit integrated value in the register 472. Store again. Note that when the message D413 (check node message u) corresponding to all 1s in one column of the check matrix is accumulated, the register 472 is reset.
  • the integrated value output by the arithmetic unit 471 is 9 bits, and the message D413 (u) input to the arithmetic unit 433 for integration is 6 bits.
  • 151 Output power 6-bit message input to the calculator 151 It is 9 bits, which is 3 bits more than D103, for the same reason.
  • the control signal D422 supplied from the control unit 417 changes from “0" to "1". For example, when the column weight is “5”, the control signal D422 becomes “0” until the fourth message D413 is accumulated, and becomes “1” when the fifth message D413 is accumulated.
  • the register 474 supplies the stored integrated value D471 to the selector 471 and the arithmetic unit 475 as a 9-bit value D472.
  • the selector 473 selects the 9-bit value D472 supplied from the register 474, outputs it to the register 474, and stores it again. That is, the register 474 supplies the previous integrated value D472 to the selector 473 and the arithmetic unit 475 until all branch messages D413 (check node message u) over one column of the check matrix are integrated.
  • the arithmetic unit 475 adds the 9-bit accumulated value D472 and the 6-bit received data D417 to which the receiving memory 416 (Fig. 26) is also supplied, and decodes the 9-bit value obtained as a result. Output as intermediate result D415 (decryption intermediate result V).
  • the quasi-noble node calculator 415 performs the calculation of Equation (5) while using the fixed-point quantized value, which is also the normal quantized value, and is in the middle of decoding 9 bits. Result V is obtained. This intermediate decoding result V is supplied from the quasi-variable node calculator 415 to the decoding intermediate result storage memory 410 (FIG. 26) and stored.
  • the decoding intermediate result storage memory 410 stores a decoding intermediate result V represented by a 9-bit fixed-point quantized value (normally quantized value), and the 9-bit decoding intermediate result V is stored in the decoding intermediate result storage memory 410. As described above, the data is supplied to the semi-check node calculator 412 via the switch 411 (FIG. 26).
  • the semi-check node calculator 412 (Fig. 28)
  • the fixed-point Using the quantized value as an input, the result of the operation of the nonlinear function ⁇ ( ⁇ ) is output as a 5-bit quasi-floating point quantized value, and in the LUT439, the 5-bit quasi-floating point quantized value is input. Since the result of the operation of the inverse function ⁇ — ⁇ ⁇ ) is output as a fixed-point quantized value, the LDPC code can be decoded using a large-scale decoder (LUT432 or 439 It is possible to carry out with high accuracy while suppressing the capacity.
  • the quasi-check node calculator 412 performs a check node operation and a part of the noble node operation, and the quasi-noreable node calculator 415 performs variable node operation. Since the other part is performed, the scale of the apparatus can be made smaller than that of the decoding apparatus in FIG.
  • the branch memory 413 corresponds to the branch memory 102 of FIG. 17, and the decoding intermediate result storage memory 410 corresponds to the branch memory 100 of FIG.
  • the memory for use 416 corresponds to the reception memory 104 in FIG.
  • both the branch memory 413 in FIG. 26 and the corresponding branch memory 102 in FIG. 17 need to store the 6-bit check node message u by the total number of branches, A storage capacity of 6 bits times the total number of branches is required.
  • both the reception memory 416 in FIG. 26 and the corresponding reception memory 104 in FIG. 17 need to store 6-bit reception data u for the code length, it is 6 bits times the code length. Storage capacity is required.
  • the branch memory 100 in FIG. 17 needs to store the 6-bit noble node message V by the total number of branches, similarly to the branch memory 102 in FIG. Requires 6 times the storage capacity.
  • the decoding intermediate result storage memory 410 in FIG. 26 corresponding to the branch memory 100 in FIG. 17 encodes the decoding intermediate result v (D415) output from the quasi-variable node calculator 415. It is necessary to memorize only for a long time. As described with reference to FIG. 29, the decoding intermediate result V is 9 bits (normal quantization value), and therefore the decoding intermediate result storage memory 410 requires a storage capacity of 9 bits times the code length.
  • the storage capacity of the decoding intermediate result storage memory 410 is equal to the corresponding branch memory 100 of FIG. It is larger than the storage capacity.
  • the parity check matrix H of the LDPC code is sparse.
  • the total number of branches (the total number of elements that are 1 in the parity check matrix H) is generally the code length (column of the parity check matrix H). For example, even in the parity check matrix H in Fig. 9, the total number of branches (323) is about 3 (323/108) times the code length (108). Yes.
  • the storage capacity of the decoding intermediate result storage memory 410 can be made smaller than the corresponding branch memory 100 of FIG.
  • the decoding apparatus of FIG. 26 can reduce the storage capacity of the decoding intermediate result storage memory 410 to the extent that the storage capacity of the branch memory 100 of FIG. Therefore, the scale of the apparatus can be made smaller than that of the decoding apparatus.
  • the decoding apparatus in Fig. 26 does not need to provide a block for calculating equation (5) (in addition to the quasi-variable node calculator 415), and the decoding apparatus in Fig. 27 (Fig. 12). Since it is not necessary to provide the FIFO memory 155, the FIFO memory 155 can be configured more compactly than the decoding device of FIG.
  • FIG. 30 shows BER / FER simulation results for various decoding apparatuses.
  • the horizontal axis represents the signal power to noise power ratio E / N per bit.
  • the vertical axis represents BER (Bit Error Rate) or FER (Frame Error Rate).
  • BER Bit Error Rate
  • FER Frame Error Rate
  • FIG. 30 when the LDPC code is decoded in the decoding device of FIG. 13, that is, the LUT1121 (FIG. 14) inputs a fixed-point quantized value that is also a 5-bit normal quantized value.
  • a fixed-point quantized value that is also a 9-bit high-precision quantized value is output, and a fixed-point quantized value that is also a 9-bit high-precision quantized value is input to the LUT1128.
  • By outputting a fixed-point quantized value that is also a normal quantized value it represents the BER and FER when LDPC code is decoded.
  • a circle indicates a fixed decimal number that is also a 5-bit normal quantized value in the decoding apparatus of FIG. 17, that is, in the LUT 221 (FIG. 18).
  • a point quantized value is input and a 5-bit quasi-floating point quantized value is output.
  • LUT 228, a 5-bit quasi-floating point quantized value is input and a fixed value that is also a 5-bit normal quantized value.
  • the decoding device of FIG. 17 can be configured smaller than the decoding device of FIG. 13 while having almost the same performance as the decoding device of FIG.
  • FIG. 31 shows another configuration example of the semi-check node calculator 412 of FIG.
  • the quasi-check node calculator 412 of FIG. 31 is basically configured in the same manner as the quasi-check node calculator 412 of FIG.
  • a 5-bit quasi-floating point quantum that represents the calculation result of the nonlinear function ⁇ ( ⁇ . ⁇ ) with the LUT432 force 5-bit fixed-point quantization value as input.
  • LUT439 receives a 5-bit quasi-floating-point quantized value as input and outputs a 5-bit fixed-point quantized value representing the result of the inverse function ⁇ — 1 ( ⁇ ⁇ (Iv.D).
  • the check node calculator 412 in Fig. 31 takes a fixed-point quantized value of LUT432 force of 5 bits as input and outputs a 6-bit quasi-representation result of the nonlinear function ⁇ ( ⁇ . ⁇ ).
  • a 5-bit fixed-point quantifier that outputs the floating-point quantized value and represents the result of the inverse function ⁇ — ⁇ ⁇ (
  • the conversion circuits 501 and 502 convert the 6-bit quasi-floating point quantized value to the 9-bit fixed-point quantized value.
  • the conversion circuit 503 converts the 9-bit fixed-point quantized value into a 6-bit quasi-floating-point quantized value.
  • the quasi-check node calculator 412 in Fig. 31 is similar to the quasi-check node calculator 412 in Fig. 28 except that the quasi-floating point quantized value is 6 bits instead of 5 bits. Thus, a semi-check node operation is performed.
  • a 6-bit quasi-floating point quantized value consisting of a 3-bit quasi-mantissa part f and a 3-bit quasi-index part e is employed.
  • Adopt a 5-bit quasi-floating-point quantized value consisting of a 2-bit quasi-mantissa part f and a 3-bit quasi-exponent part e.
  • the FIFO memory 438 delays the data for the operation performed by the arithmetic unit 437, which is a part of the semi-check node operation. That is, in the quasi-check node calculator 412 of FIG. 28 and FIG. 31, the calculation result of the nonlinear function ⁇ (
  • the 5-bit quasi-floating-point quantized value is output as the result of the nonlinear function ⁇ ( ⁇ . ⁇ ) for the LUT432 force 5-bit fixed-point quantized value input.
  • a 6-bit quasi-floating-point quantized value is output as the result of the nonlinear function ⁇ (
  • the quasi-check node calculator 412 (same as the check-node calculator 181 in Fig. 18) has a fixed-point quantized value input to the LUT 432 and a quasi-floating point quantized value output from the LUT 432. Of these, the smaller number of bits can be configured to be delayed by the FIFO memory 438.
  • FIG. 32 shows that when the fixed-point quantized value input to the LUT 432 is 5 bits and the quasi-floating-point quantized value output from the LUT 432 is 6 bits, the number of bits is small.
  • 26 shows a configuration example of the quasi-check node calculator 412 in FIG. 26 configured so that the fixed-point quantized value input to is delayed by the FIFO memory 438.
  • the quasi-check node calculator 412 in Fig. 32 in the FIFO memory 438, the 5-bit fixed-point quantization value input to the LUT 432 is not the 6-bit quasi-floating point quantization value output from the LUT 432 force. Being delayed! /
  • the FIFO memory 438 does not use the 6-bit quasi-floating point quantization value output from the LUT 4 32 but the 5-bit fixed-point quantization input to the LUT 432.
  • the 5-bit fixed-point quantized value after being delayed in the FIFO memory 438 is input, and the 6-bit quasi-floating-point quantization that represents the result of the nonlinear function ⁇ (
  • a LUT 504 configured to output a value in the same manner as the LUT 432 is newly provided between the FIFO memory 438 and the conversion circuit 502.
  • the FIFO memory 438 does not use the 6-bit quasi-floating point quantized value output from the LUT 432, but the 5-bit input to the LUT 4 32.
  • the fixed-point quantized values of are delayed and output.
  • the 5-bit fixed-point quantized value output from the LUT504 force FIFO memory 438 is input, and the 6-bit quasi-floating-point quantized value representing the result of the nonlinear function ⁇ (
  • Output is performed by the 6-bit quasi-floating-point quantized value representing the result of the nonlinear function ⁇ (
  • the conversion circuit 502 converts the 6-bit quasi-floating point quantized value output from the LUT 504 into a 9-bit fixed point quantized value, and supplies it to the computing unit 437.
  • the computing unit 437 performs computation using the computation result of the delayed nonlinear function ⁇ (
  • the FIFO memory 438 delays the fixed-point quantized value input to the LUT 432 and the quasi-floating-point quantized value output from the LUT 432 with the smaller number of bits.
  • the semi-check node calculator 412 for example, the fixed-point quantized value input to the LUT 432 is 5 bits and the semi-floating-point quantized value output from the LUT 432 is 6 bits.
  • the check node calculator 412 a FIFO memory with a small capacity can be adopted as the FIFO memory 438.
  • the quasi-check node calculator 412 when the quasi-check node calculator 412 is configured so that the fixed-point quantized value input to the LUT 432 is delayed by the FIFO memory 438 as shown in FIG. 32, the FIFO memory It is necessary to newly provide an LUT 504 between the 438 and the conversion circuit 502. Therefore, if the number of bits of the fixed-point quantized value input to the LUT 432 and the quasi-floating point quantized value output from the LUT 432 are the same, the quasi-check node calculator 412 As shown in FIG. 5, if the quasi-floating point quantized value output from the LUT 432 is delayed by the FIFO memory 438, the circuit scale can be reduced to the extent that the LUT 504 is not required.
  • the quasi-check node calculator 412 When the quasi-check node calculator 412 is configured so that the fixed-point quantized value input to the LUT 432 is delayed by the FIFO memory 438, the FIFO memory 438 and the conversion circuit 5002 are not connected. Since the LUT504 needs to be newly installed, the FIFO memory 438 delays either the fixed-point quantized value input to the LUT432 or the quasi-floating-point quantized value output from the LUT432. It is desirable to decide in consideration of the size of the LUT504 in addition to the size relationship of the number of bits between the fixed-point quantized value input to the LUT432 and the quasi-floating-point quantized value output from the LUT432. .
  • the quasi-check node calculator 412 As shown in FIG. 28, by configuring the quasi-floating point quantized value output from the LUT 432 to be delayed by the FIFO memory 438, the circuit scale can be reduced.
  • the number of bits input to the LUT 432 is less than the number of bits of the quasi-floating point quantized value output from the LUT 432
  • the number of bits input to the LUT 432 is The size of the FIFO memory 438 when a small fixed-point quantized value is delayed by the FIFO memory 438 and the size of the LUT 504 required at that time, and the semi-floating with a large number of bits output from the LUT432 power It is desirable to compare the scale of the decimal point quantized value with the FIFO memory 438 and the scale of the FIFO memory 438 and to adopt a configuration with a smaller scale power S. Good.
  • the architecture of the force decoding device that employs a decoding device having a full serial decoding (foil serial decoding) architecture that sequentially performs operations of each node one by one is particularly limited. It is not a thing. That is, the present invention is not limited to a decoding device having a full serial decode architecture, for example, a decoding device having a full parallel decoding architecture that performs operations of all nodes simultaneously, The present invention can also be applied to a decoding apparatus having a partial parallel decoding architecture that performs operations on a certain number of nodes simultaneously.
  • a decoding device having a full parallel decoding architecture or a decoding device having a partial parallel decoding architecture has a plurality of check node calculators (quasi-tic node calculators) that perform check node operations.
  • the effect of reducing the capacity of the LUT that performs (X) and its inverse function ⁇ _1 ( ⁇ ) (outputs the calculation result) is even greater.
  • parity check matrix ⁇ is not limited to that shown in Fig. 9.
  • the number of bits (quantization bit number) of the normal quantization value, high-precision quantization value, and quasi-floating point quantization value, which are fixed-point quantization values, is also limited to the values described above.
  • the branch memories 100 and 102 in FIG. 17, the reception memory 104, the decoding intermediate result storage memory 410, the branch memory 413, and the reception memory 416 in FIG. 26, for example, RAM (R ead Only Memory) can be used.
  • the number of bits per bit (bit width) of the RAM used as the branch memory 100 or the like and the number of nodes that can be stored in the RAM are not particularly limited.
  • the RAM bit width and number of words by giving similar control signals (for example, chip select signals and address signals) to multiple RAMs, the multiple RAMs can be logically combined with a single RAM. As a result, it can be used as the branch memory 100 or the like.
  • a plurality of RAMs are logically regarded as one RAM, and received data u, etc. Can be stored.
  • the calculation of the nonlinear function ⁇ 00 or its inverse function ⁇ - ⁇ ⁇ ) is performed using L Forces applied by LUTs such as UT1121 (Fig. 18), LUT432 (Fig. 28), or LUT1128 (Fig. 18) and LUT439 (Fig. 28) .
  • LUTs such as UT1121 (Fig. 18), LUT432 (Fig. 28), or LUT1128 (Fig. 18) and LUT439 (Fig. 28) .
  • Nonlinear function ⁇ (X) and its inverse function ⁇ _1 ( ⁇ ) The calculation can be performed by, for example, a CPU (Central Processing Unit) or a logic circuit.
  • the FIF01127 is configured to delay the 5-bit quasi-floating point quantized value output from the LUT221 force S, but in the FIFO 1127, the 5-bit output from the LUT221 is output.
  • the 9-bit fixed-point quantized value obtained by converting the display format of the 5-bit quasi-floating-point quantized value in the conversion circuit 231 is delayed. Is possible. In this case, the conversion circuit 232 provided in the subsequent stage of the FIFO 1127 in FIG. 18 becomes unnecessary.
  • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本発明は、LDPC符号の復号を、装置の大規模化を抑えつつ精度良く行うことができる復号装置および復号方法に関する。チェックノード計算器181は、LDPC符号の復号のためのチェックノード演算であって、非線形関数φ(x)の演算および非線形関数の逆関数φ-1(x)の演算を含むチェックノード演算を行う。バリアブルノード計算器103は、LDPC符号の復号のためのバリアブルノードのバリアブルノード演算を行う。そして、チェックノード計算器181は、固定の量子化幅で数値を表現する固定小数点量子化値を入力として、非線形関数φ(x)の演算の結果を、一部のビット列に応じて決まる量子化幅で数値を表現するビット列である準浮動小数点量子化値で出力するLUTと、準浮動小数点量子化値を入力として、逆関数φ-1(x)の演算の結果を、固定小数点量子化値で出力するLUTを有している。本発明は、例えば、衛星放送を受信するチューナに適用できる。

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] 符号化装置は、生成行列 Gに対して kビットからなる情報メッセージ (ベクトル) uを乗 算し、 nビットからなる符号語 (LDPC符号) c (=uG)を生成する。この符号化装置によ つて生成された符号語 cは、値が "0"のビットが" +Γに、値が" Γのビットが"— Γにとい つたようにマッピングされて送信され、所定の通信路を介して受信側にぉ 、て受信さ れること〖こなる。
[0011] なお、例えば、 ηビットの符号語 c力 kビットの情報メッセージ uに続けて、 n-kビットの ノ リティビットを配置したビット列に一致する組織符号である場合に、 n-k行 n列の検査 行列 Hにお 、て、 nビットの符号語 cのうちの kビットの情報メッセージ uに対応する n-k 行 k列の部分を情報部というとともに、 n-kビットのパリティビットに対応する n-k行 n-k 列の部分をパリティ部ということとすると、パリティ部が、下三角行列または上三角行 列になっていれば、情報メッセージ uの LDPC符号への符号ィ匕は、検査行列 Hを用い て行うことができる。
[0012] 即ち、例えば、検査行列 H力 図 2に示すように、情報部と、下三角行列のパリティ 部とで構成され、パリティ部の下三角の部分の要素が、すべて 1であるとすると、符号 語 cのパリティビットの 1番目のビットは、情報メッセージ uのうちの、検査行列 Hの情報 部の第 1行にぉ 、て 1になって!/、る要素に対応するビットの EXOR (排他的論理和)を 演算した値となる。
[0013] また、符号語 cのノ リティビットの 2番目のビットは、情報メッセージ uのうちの、検査行 列 Hの情報部の第 2行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビット の 1番目のビットの EXORを演算した値となる。
[0014] さらに、符号語 cのノ リティビットの 3番目のビットは、情報メッセージ uのうちの、検査 行列 Hの情報部の第 3行にぉ 、て 1になって 、る要素に対応するビットと、ノ リティビッ トの 1番目および 2番目のビットの EXORを演算した値となる。
[0015] 以下、同様にして、符号語 cのノ リティビットの潘目のビットは、情報メッセージ uのう ちの、検査行列 Hの情報部の第 i行にお 、て 1になって 、る要素に対応するビットと、 ノ リティビットの 1乃至卜 1番目のビットの EXORを演算した値となる。
[0016] 以上のようにして、 n-kビットのパリティビットを求め、 kビットの情報メッセージ uに続け て配置することにより、 nビットの符号語 cを得ることができる。
[0017] 一方、 LDPC符号の復号は、 Gallagerが確率復号 (Probabilistic Decoding)と称して 提案したアルゴリズムであって、ノ リアブルノード (variable node (メッセージノード (mes sage node)とも呼ばれる。;))と、チェックノード (check node)とからなる、いわゆるタナー グラフ (Tanner graph)上での確率伝播 (belief propagation)によるメッセージ ·パッシン グ.アルゴリズムによって行うことが可能である。ここで、以下、適宜、バリアブルノード とチェックノードを、単に、ノードともいう。
[0018] なお、確率復号にお 、ては、各ノード間で受け渡されるメッセージが実数値である ことから、解析的に解くためには、連続した値をとるメッセージの確率分布そのものを 追跡する必要があり、非常に困難を伴う解析を必要とすることになる。そこで、 Callage rは、 LDPC符号の復号アルゴリズムとして、アルゴリズム A又はアルゴリズム Bを提案 している。
[0019] LDPC符号の復号は、一般的には、図 3に示すような手順にしたがって行われる。な お、ここでは、 LDPC符号 (符号化 cの)受信値を Uとし、チェックノードから出力される
0
メッセージ(以下、適宜、チェックノードノードメッセージともいう)を uとし、バリアブルノ ードから出力されるメッセージ(以下、適宜、ノ リアブルノードメッセージともいう)^ Vと する。また、メッセージは、〃0"らしさを、いわゆる対数尤度比 (log likelihood ratio)で表 現した実数値である。さらに、受信値 U "0 "らしさの対数尤度比を、受信データ uと
0の 0i 表すこととする。
[0020] まず、 LDPC符号の復号においては、図 3に示すように、ステップ S11において、受 信値 U (受信データ u )が受信され、メッセージ uが" 0Ίこ初期化されるとともに、繰り返
0 0i j
し処理のカウンタとしての整数をとる変数 kが" 0〃に初期化され、ステップ S 12に進む。 ステップ S12において、受信データ uに基づいて、式(1)に示す演算を行うことによ つてバリアブルノードメッセージ Vが求められ、さらに、このバリアブルノードメッセージ Vに基づいて、式(2)に示す演算を行うことによってチェックノードメッセージ uが求め られる。
[0021] [数 1]
dv-1
V i = U0 i + ∑ Uj
J =1
•••(l)
[0022] [数 2]
Figure imgf000007_0001
•••(2)
[0023] ここで、式(1)と式(2)における と は、それぞれ、検査行列 Hの縦方向(行方向) と横方向(列方向)の〃 1"の個数を示す任意に選択可能とされるパラメータであり、例 えば、(3,6)符号の場合には、 d =3, d =6となる。
[0024] なお、式(1)または(2)の演算においては、それぞれ、メッセージを出力しょうとする 枝 (edge)力も入力されたメッセージを、和または積演算のパラメータとしては用いな!/ヽ ことから、和または積演算の範囲が、 1乃至 d -1または 1乃至 d - 1となっている。また、 式(2)に示す演算は、実際には、 2入力 V , Vに対する 1出力で定義される式(3)に
1 2
示す関数 R(v ,ν )のテーブルを予め作成しておき、これを式 (4)に示すように連続的(
1 2
再帰的)に用いることによって行うことができる。
[0025] [数 3] x=2tanh— 1 {tanh (v,/2) tanh (v2/2) } = (v、, v2)
•••(3)
[0026] 画
uj =R (vi , R (v2, R (v3,■■ -R (vdc— 2, vdc— ) ) ) )
•••(4)
[0027] ステップ S12では、さらに、変数 kが" 'だけインクリメントされ、ステップ S13に進む。
ステップ S 13では、変数 kが所定の繰り返し復号回数 Ν以上であるか否かが判定され る。ステップ S 13において、変数 kが N以上ではないと判定された場合、ステップ S 12 に戻り、以下、同様の処理が繰り返される。
[0028] また、ステップ S 13において、変数 kが N以上であると判定された場合、ステップ S 14 に進み、式(5)に示す演算を行うことによって最終的に出力する復号結果としてのメ ッセージ Vが求められて出力され、 LDPC符号の復号処理が終了する。
[0029] [数 5] dv
V = U0 i + ∑ Uj
j =1
•••(5)
[0030] ここで、式(5)の演算は、式(1)の演算とは異なり、バリアブルノードに接続している 全ての枝からのメッセージを用いて行われる。
[0031] このような LDPC符号の復号は、例えば (3,6)符号の場合には、図 4に示すように、各 ノード間でメッセージの授受が行われる。なお、図 4における' '=〃で示すノード (バリア ブルノード)では、式(1)に示した演算が行われ、〃+"で示すノード (チェックノード)で は、式(2)に示した演算が行われる。特に、アルゴリズム Aにおいては、メッセージを 2 元化し、 で示すノードにて、そのノードに入力される d -1個のメッセージの排他的 論理和演算を行い、〃="で示すノードにて、受信データ R(u )に対して、そのノードに 入力される d -1個のメッセージが全て異なるビット値であった場合には、符号を反転 して出力する。
[0032] また、一方で、近年、 LDPC符号の復号の実装法に関する研究も行われて 、る。実 装方法について述べる前に、まず、 LDPC符号の復号を摸式化して説明する。
[0033] 図 5は、(3,6)LDPC符号(符号化率 1/2、符号長 12)の検査行列 (parity check matrix )の例である。 LDPC符号の検査行列 Hは、図 6のように、タナーグラフを用いて書き表 すことができる。ここで、図 6において、〃+〃で表されるのが、チェックノードであり、 ":" で表されるの力 ノ リアブルノードである。チェックノードとバリアブルノードは、それぞ れ、検査行列 Hの行と列に対応する。チェックノードとバリアブルノードとの間の結線 は、枝 (edge)であり、検査行列の 'Tに相当する。即ち、検査行列 Hの第 j行第 i列のコ ンポーネントが 1である場合には、図 6において、上から i番目のバリアブルノード("=" のノード)と、上から j番目のチェックノード ("+"のノード)とが、枝により接続される。枝 は、ノ リアブルノードに対応する LDPC符号のビットが、チェックノードに対応する拘束 条件を持つことを表す。なお、図 6は、図 5の検査行列 Hのタナーグラフとなっている
[0034] LDPC符号の復号方法であるサムプロダクトアルゴリズム (Sum Product Algorithm)は 、 ノ リアブルノードの演算とチェックノードの演算とを繰り返し行う。 [0035] ノリアブルノードでは、図 7のように、式(1)の演算を行う。すなわち、図 7において、 計算しょうとしている枝に対応するノリアブルノードメッセージ Vは、ノリアブルノード に繋がっている残りの枝からのチェックノードメッセージ uおよび uと、受信データ uを
1 2 0i 用いて計算される。他の枝に対応するバリアブルノードメッセージも同様に計算され る。
[0036] チェックノードの演算について説明する前に、式(2)を、式 aXb=exp{ln(|a|)+ln(|b|)}
Xsign(a)Xsign(b)の関係を用いて、式(6)のように書き直す。但し、 sign(x)は、 xの符 号(正または負)を表し、 x≥0のとき 1であり、 x<0のとき- 1である。
[0037] [数 6]
Figure imgf000009_0001
dc- 1
=2tanh — 1 exp tanh x丌 sign
2 i=1 •••(6)
[0038] 更に、 x≥0において、非線形な関数 (非線形関数) φ (X)を、式 φ (X)=ln(tanh(X/2))と 定義すると (ln()は自然対数関数)、その非線形関数 Φ Gの逆関数 Φ )は、式 Φ ~ x)=2tanh— e— で表されるから、式(6)は、式(7)のように書くことができる。
[0039] [数 7]
dc— 1 dc-1
Uj , = 0 1 ∑ 0(|vil) x π si n (v:)
=1 =1
(7)
[0040] チェックノードでは、図 8のように、式(7)の演算を行う。すなわち、図 8において、計 算しょうとしている枝に対応するチェックノードメッセージ uは、チェックノードに繋がつ ている残りの枝からのバリアブルメッセージ V ,ν ,ν ,ν ,νを用いて計算される。
1 2 3 4 5 他の枝に対応するチェックノードメッセージも同様に計算される。
[0041] なお、関数 φ (X)は、 φ (x)=ln((ex+l)/(ex- 1》とも表すことができ、 x>0において、 φ (χ) = φ— である。関数 φ および φ _1(χ)をノヽードウエアに実装する際には、 LUT(Look Up Table)を用いて実装される場合がある力 両者共に同一の LUTとなる。
[0042] また、 LDPC符号の復号方法は、サムプロダクトアルゴリズムの他、例えば、ビリーフ プロパゲーション (Belief Propagation)などとも呼ばれる力 いずれにしても、行われる 演算の内容は同様である。
[0043] 復号装置へのサムプロダクトアルゴリズムの実装の例として、各ノードの演算を一つ ずつ順次行うことによって復号を行う場合 (foil serial decoding)の実装法について説 明する。
[0044] なお、サムプロダクトアルゴリズムをノヽードウエアに実装する場合、式(1)で表される ノリアブルノード演算および式 (7)で表されるチェックノード演算とを、適度な回路規 模と動作周波数で繰り返し行うことが必要である。
[0045] また、ここでは、例えば、図 9の、 36 (行) X 108 (列)の検査行列 Hで表現される符 号 (符号化率 2/3、符号長 108)を復号することとする。図 9の検査行列 Hの 1の数は 3 23であり、従って、そのタナーグラフでは、枝の数は 323個となる。ここで、図 9の検 查行列では、 0を、 "で表現している。
[0046] 図 10は、 LDPC符号の 1回復号を行う復号装置の構成例を示して!/、る。
[0047] 図 10の復号装置では、その動作する 1クロック (clock)ごとに、 1つの枝に対応するメ ッセージが計算される。
[0048] 即ち、図 10の復号装置は、 2つの枝用メモリ 100および 102、 1つのチェックノード 計算器 101、 1つのバリアブルノード計算器 103、 1つの受信用メモリ 104、 1つの制 御部 105からなる。
[0049] 図 10の復号装置では、枝用メモリ 100または 102からメッセージが 1つずつ読み出 され、そのメッセージを用いて、所望の枝に対応するメッセージが計算される。そして 、その計算によって求められたメッセージが 1つずつ後段の枝用メモリ 102または 10 0に格納されていく。繰り返し復号を行う際には、この 1回復号を行う図 10の復号装置 を複数個縦列に連接する力 もしくは図 10の復号装置を繰り返し用いることによって 、繰り返し復号を実現する。なお、ここでは、例えば、図 10の復号装置が複数個接続 されているものとする。
[0050] 枝用メモリ 100は、前段の復号装置(図示せず)のバリアブルノード計算器 103から 供給されるメッセージ (バリアブルノードメッセージ) D100を、後段のチェックノード計 算器 101が読み出す順番に格納していく。そして、枝用メモリ 100は、チェックノード 計算のフェーズでは、メッセージ D100を、格納してある順番通りに、メッセージ D101と して、チヱックノード計算器 101に供給する。
[0051] チェックノード計算器 101は、制御部 105から供給される制御信号 D106に基づき、 枝用メモリ 100から供給されるメッセージ D101 (バリアブルノードメッセージ V )を用い て、式(7)に従って演算(チヱックノード演算)を行い、その演算によって求められたメ ッセージ D102 (チェックノードメッセージ u)を、後段の枝用メモリ 102に供給する。
[0052] 枝用メモリ 102は、前段のチェックノード計算器 101から供給されるメッセージ D102 を、後段のバリアブルノード計算器 103が読み出す順番に格納していく。そして、枝 用メモリ 102は、ノ リアブルノード計算のフェーズでは、メッセージ D102を、格納して ある順番通りに、メッセージ D103として、ノ リアブルノード計算器 103に供給する。
[0053] バリアブルノード計算器 103には、制御部 105から制御信号 D107が供給されるとと もに、受信用メモリ 104から受信データ D104が供給される。バリアブルノード計算器 1 03は、制御信号 D107に基づき、枝用メモリ 100から供給されるメッセージ D103 (チェ ックノードメッセージ u )と受信用メモリ 100から供給される受信データ D104 (受信デー タ u )を用い、式(1)に従って演算 (バリアブルノード演算)を行い、その演算の結果 得られるメッセージ D105 (バリアブルノードメッセージ V )を、図示せぬ後段の復号装 置の枝用メモリ 100に供給する。
[0054] 受信用メモリ 104には、 LDPC符号の受信データ uが格納される。制御部 105は、 バリアブルノード演算を制御する制御信号 D106と、チ ックノード演算を制御する制 御信号 D107を、それぞれチェックノード計算器 101とバリアブルノード計算器 103に 供給する。
[0055] 図 11は、チェックノード演算を 1つずつ行う図 10のチェックノード計算器 101の構成 例を示している。 [0056] なお、図 11では、各メッセージが符号ビット (正負を表すビット)を合わせて合計 6ビ ット (bit)に量子化されているものとして、チェックノード計算器 101を表している。即ち 、メッセージは、所定の数値範囲を符号ビット付きの 6ビットで表すことができる 64値 に均等に分割する各数値に割り当てられた 6ビットの量子化値で表される。
[0057] また、図 11では、図 9の検査行列 Hで表される LDPC符号のチェックノード演算が行 われる。さらに、図 11のチェックノード演算器 101には、クロック ckが供給され、このク ロック ckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロ ック ckに同期して処理を行う。
[0058] 図 11のチェックノード計算器 101は、制御部 105から供給される、例えば、 1ビットの 制御信号 D106に基づき、枝用メモリ 100から 1つずつ読み込まれるメッセージ D101 ( ノリアブルノードメッセージ V )を用いて、式(7)にしたがって演算を行う。
[0059] 即ち、チェックノード計算器 101では、検査行列 Hの各列に対応するバリアブルノ ードからの 6ビットのメッセージ D101 (バリアブルノードメッセージ V )が 1つずつ読み込 まれ、その下位 5ビットである絶対値 D122(|v.|)が LUT121に、その最上位ビットである 符号ビット D121が EXOR回路 129と FIFO(First In First Out)メモリ 133にそれぞれ供 給される。また、チヱックノード計算器 101には、制御部 105から制御信号 D106が供 給され、その制御信号 D106は、セレクタ 124とセレクタ 131に供給される。
[0060] LUT121は、そこに入力される絶対値 D122(|v |)に対して、式(7)における非線形関 数 Φ (|v.|)の演算を行った 5ビットの演算結果 D123 ( φ (|ν|))を読み出し、演算器 122と FIFOメモジ 127に供給する。
[0061] 演算器 122は、演算結果 0123 ( φ (|ν |))とレジスタ 123に格納されている 9ビットの 値 D124とを加算することにより、演算結果 D123を積算し、その結果得られる 9ビットの 積算値をレジスタ 123に再格納する。なお、検査行列 Ηの 1行に亘る全ての枝からの メッセージ D101の絶対値 D122(|v |)に対する演算結果 D123が積算された場合、レジ スタ 123はリセットされる。
[0062] ここで、演算器 122およびレジスタ 123では、 LUT121から供給される 5ビットの演算 結果 0123 ( φ (|ν )力 最大で、 FIFOメモリ 127における最大の遅延回数分、即ち、 検査行列 Hの行の最大の重み分の回数だけ積算される。いま、図 9の検査行列 Hの 行の最大の重みは 9であり、従って、演算器 122およびレジスタ 123では、 9ビットの 演算結果 D123 (|v |))が、最大で、 9回積算される(5ビットの値の 9個分の積算が行 われる)。このため、演算器 122の出力以降においては、 5ビットの値を 9回積算した 値を表すことができるように、量子化ビット数は、 LUT121が出力する 5ビットの演算結 果 D1123 ( φ (|v |))よりも 4ビット(9 (回)を表すことができる最小のビット数)だけ多!、9 ビットになっている。
[0063] 検査行列の 1行に亘るメッセージ D101 (バリアブルノードメッセージ V )が 1つずつ読 み込まれ、レジスタ 123に 1行分の演算結果 D123が積算された積算値が格納された 場合、制御部 105から供給される制御信号 D106は、 0から 1に変化する。例えば、行 の重み (row weight)が「9」である場合、制御信号 D106は、 1から 8クロック目までは、「 0」となり、 9クロック目では「1」となる。
[0064] 制御信号 D106が「1」の場合、セレクタ 124は、レジスタ 123に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (バリアブルノードメッ セージ V )から求められた φ (|ν.|)が積算された 9ビットの値 D124 (i= lから i=dまでの ∑ φ (| ))を選択し、値 D125として、レジスタ 125に出力して格納させる。レジスタ 125 は、格納している値 D125を、 9ビットの値 D126として、セレクタ 124と演算器 126に供 給する。制御信号 D106が「0」の場合、セレクタ 124は、レジスタ 125から供給された 値 D126を選択し、レジスタ 125に出力して再格納させる。即ち、検査行列 Hの 1行に 亘る全ての枝からのメッセージ D101 (バリアブルノードメッセージ V )から求められた φ (|v|)が積算されるまで、レジスタ 125は、前回積算された φ (|ν |)を、セレクタ 124と演 算器 126に供給する。
[0065] 一方、 FIFOメモリ 127は、レジスタ 125から新たな値 D126 (i= lから i=dまでの∑ φ (|ν|))が出力されるまでの間、 LUT121が出力した 5ビットの演算結果 0123 ( φ (|ν|) )を遅延し、 5ビットの値 D127として演算器 126に供給する。演算器 126は、レジスタ 1 25から供給された値 D126から、 FIFOメモリ 127から供給された値 D127を減算し、そ の減算結果を、 5ビットの減算値 D128として LUT128に供給する。即ち、演算器 126 は、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (バリアブルノードメッセ ージ V )力 求められた φ (|v |)の積算値から、チェックノードメッセージ uを求めたい枝 からのメッセージ D101 (バリアブルノードメッセージ V )から求められた φ (|v |)を減算し て、その減算値(i= lから i=d— 1までの∑ φ (|ν |))を減算値 D128として LUT128に 供給する。
[0066] なお、演算器 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 を出力する。
[0067] LUT128は、減算値 D128 (i= lから i=d— 1までの∑ φ (|v.|))に対して、式(7)にお ける逆関数 Φ— ∑ φ (|ν |))の演算を行った 5ビットの演算結果 D129 — (|ν|))) を出力する。
[0068] 以上の処理と並行して、 EXOR回路 129は、レジスタ 130に格納されている 1ビット の値 D131と符号ビット D121との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D130をレジスタ 130に再格納する。なお、検査行 列 Ηの 1行に亘る全ての枝からのメッセージ D101 (バリアブルノードメッセージ V )の符 号ビット D121が乗算された場合、レジスタ 130はリセットされる。
[0069] 検査行列 Ηの 1行に亘る全ての枝からのメッセージ D101の符号ビット D121が乗算さ れた乗算結果 D130 (i= lから dまでの nsign(v))がレジスタ 130に格納された場合、 制御部 105から供給される制御信号 D106は、「0」から「1」に変化する。
[0070] 制御信号 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に供給する。
[0071] 一方、 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 |))の乗算値を、チェックノードメッセージ uを求めたい 枝からのメッセージ D101の符号ビット D121 (sign(|v|))で除算して、その除算値 (i= l から i=d - 1までの nsign(lvj))を除算値 D135として出力する。
[0072] チェックノード計算器 101では、 LUT128から出力された 5ビットの演算結果 D129を 下位 5ビットとするとともに、 EXOR回路 134から出力された 1ビットの除算値 D135を最 上位ビット(符号ビット)とする合計 6ビットがメッセージ D102 (チェックノードメッセージ u )として出力される。
[0073] 以上のように、チェックノード計算器 101では、式(7)の演算が行われ、チェックノー ドメッセージ uが求められる。
[0074] なお、図 9の検査行列 Hの行の重みの最大は 9であるため、即ち、チヱックノードに 供給されるノ リアブルノードメッセージ Vの最大数は 9であるため、チェックノード計算 器 101は、 9個のチェックノードメッセージ Vの非線形関数の演算結果( φ (|v |))を遅 延させる FIFOメモリ 127と FIFOメモリ 133を有している。行の重みが 9未満の行のチ エックノードメッセージ uを計算するときには、 FIFOメモリ 127と FIFOメモリ 133におけ る遅延量が、その行の重みの値に減らされる。
[0075] 図 12は、ノ リアブルノード演算を 1つずつ行う図 10のノ リアブルノード計算器 103 の構成例を示している。
[0076] なお、図 12でも、図 11と同様に、各メッセージが符号ビットを合わせて合計 6ビット( bit)に量子化されているものとして、ノ リアブルノード計算器 103を表している。 さらに、図 12でも、図 9の検査行列 Hで表される LDPC符号のバリアブルノード演算が 行われる。また、図 12のノ リアブルノード計算器 103には、クロック ckが供給され、ク ロック ckは、必要なブロックに供給されるようになっている。そして、各ブロックは、クロ ック ckに同期して処理を行う。
[0077] 図 12のバリアブルノード計算器 103は、制御部 105から供給される、例えば、 1ビッ トの制御信号 D107に基づき、枝用メモリ 102から 1つずつ読み込まれるメッセージ D1 03と、受信用メモリ 104から読み込まれる受信データ D104 (u )を用いて、式(1)にし
Oi
たがって演算 (バリアブルノード演算)を行う。
[0078] 即ち、ノ リアブルノード計算器 103では、検査行列 Hの各行に対応するチェックノー ドからの 6ビットのメッセージ D103 (チェックノードメッセージ u)が 1つずつ読み込まれ 、そのメッセージ D103が、演算器 151と FIFOメモリ 155に供給される。また、バリアブ ルノード計算器 103では、受信用メモリ 104から 6ビットの受信データ D104 (u )が 1つ
Oi ずつ読み込まれ、演算器 156に供給される。さらに、バリアブルノード計算器 103に は、制御部 105から制御信号 D107が供給され、その制御信号 D107は、セレクタ 153 に供給される。
[0079] 演算器 151は、 6ビットのメッセージ D103 (チェックノードメッセージ u)とレジスタ 152 に格納されている 9ビットの値 D151とをカ卩算することにより、 6ビットのメッセージ D103 を積算し、その結果得られる 9ビットの積算値を、レジスタ 152に再格納する。なお、 検査行列 Hの 1列に亘る全ての枝からのメッセージ D103が積算された場合、レジスタ 152はリセットされる。
[0080] ここで、演算器 151およびレジスタ 152では、 6ビットのメッセージ D103が、最大で、 FIFOメモリ 155における最大の遅延回数分、即ち、検査行列 Hの列の最大の重み分 の回数だけ積算される。いま、図 9の検査行列 Hの列の最大の重みは 5であり、従つ て、演算器 151およびレジスタ 152では、 6ビットのメッセージ D103が、最大で、 5回 積算される(6ビットの値の 5個分の積算が行われる)。このため、演算器 151の出力 以降においては、 6ビットの値を 5回積算した値を表すことができるように、量子化ビッ ト数は、 6ビットのメッセージ D103よりも 3ビット(5 (回)を表すことができる最小のビット 数)だけ多!、9ビットになって 、る。 [0081] 検査行列 Hの 1列に亘るメッセージ D103が 1つずつ読み込まれ、レジスタ 152に 1列 分のメッセージ D103が積算された値が格納された場合、制御部 105から供給される 制御信号 D107は、「0」から「1」に変化する。例えば、列の重みが「5」である場合、制 御信号 D107は、 1から 4クロック目までは「0」となり、 5クロック目では「1」となる。
[0082] 制御信号 D107が「1」の場合、セレクタ 153は、レジスタ 152に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (チェックノードメッセ ージ u)が積算された 9ビットの値 D151 (j = lから dまでの∑u)を選択し、レジスタ 154 j V j
に出力して格納させる。レジスタ 154は、格納している値 D151を、 9ビットの値 D152と して、セレクタ 153と演算器 156に供給する。制御信号 D107が「0」の場合、セレクタ 1 53は、レジスタ 154から供給された値 D152を選択し、レジスタ 154に出力し再格納さ せる。即ち、検査行列 Hの 1列に亘る全ての枝からのメッセージ D103 (チェックノード メッセージ u)が積算されるまで、レジスタ 154は、前回積算された値を、セレクタ 153 と演算器 156に供給する。
[0083] 一方、 FIFOメモリ 155は、レジスタ 154から新たな値 D152 (j = lから dまでの∑u)
V j が出力されるまでの間、チェックノードからのメッセージ D103を遅延し、 6ビットの値 D1 53として演算器 156に供給する。演算器 156は、レジスタ 154力も供給された値 D152 から、 FIFOメモリ 155から供給された値 D153を減算する。即ち、演算器 156は、検査 行列 Hの 1列に亘る全ての枝からのメッセージ D103 (チェックノードメッセージ u)の積 算値から、ノ リアブルノードメッセージ Vを求めたい枝からのチェックノードメッセージ u を減算して、その減算値 (j = lから d— 1までの∑u)を求める。さらに、演算器 156に は、その減算値 (j = lから d— 1までの∑u)に、受信用メモリ 104から供給された受 信データ D104 (u )を加算して、その結果得られる 6ビットの値をメッセージ D105 (バリ
0i
アブルノードメッセージ V )として出力する。
[0084] 以上のように、ノ リアブルノード計算器 103では、式(1)の演算が行われ、バリアブ ルノードメッセージ Vが求められる。
[0085] なお、図 9の検査行列 Hの列の重みの最大は 5であるため、即ち、ノ リアブルノード ノ リアブルノードに供給されるチェックノードメッセージ uの最大数は 5であるため、バ リアブルノード計算器 103は、 5個のチェックノードメッセージ uを遅延させる FIFOメモ リ 155を有して!/、る。列の重みが 5未満の列のバリアブルノードメッセージ Vを計算す るときには、 FIFOメモリ 155における遅延量力 その列の重みの値に減らされる。
[0086] また、演算器 156は、レジスタ 154から供給される 9ビットの値 D152から、 FIFOメモリ 155から供給される 6ビットの値 D153を減算するとともに、受信用メモリ 104から供給 される 6ビットの受信データ D104を加算する演算を行うから、その演算結果は、 6ビッ トのメッセージ D105で表すことができる最小値未満となる力、または最大値を越えるこ とがある。演算器 156は、演算結果が、 6ビットのメッセージ D105で表すことができる 最小値未満である場合には、その最小値にクリッピングし、演算結果が、 6ビットのメッ セージ D105で表すことができる最大値を越える場合には、その最大値にクリッピング する。
[0087] 図 10の復号装置では、検査行列 Hの重みにしたがって、制御部 105から制御信号 が与えられる。図 10の復号装置によれば、枝用メモリ 100および 102、並びにチエツ クノード計算器 101およびノ リアブノレノード計算器 103の FIFOメモリ 127, 133, 155 の容量さえ足りれば、制御信号のみを変えることで様々な検査行列 Hの LDPC符号を 復号することができる。
[0088] なお、図示しないが、図 10の復号装置において、復号の最終段においては、式(1 )のバリアブルノード演算の代わりに、式(5)の演算が行われ、その演算結果が、最 終的な復号結果として出力される。
[0089] 図 10の復号装置を繰り返し用いて、 LDPC符号を復号する場合には、チェックノー ド演算とバリアブルノード演算とが交互に行われる。即ち、図 10の復号装置では、チ エックノード計算器 101によるチェックノード演算の結果を用いて、バリアブルノード計 算器 103によりバリアブルノード演算が行われ、ノリアブルノード計算器 103によるバ リアブルノード演算の結果を用いて、チェックノード計算器 101によりチェックノード演 算が行われる。
[0090] なお、図 10の復号装置は、各ノードの演算を一つずつ順次行うことによって、 LDP C符号の復号を行う (foil serial decoding)復号装置である力 その他、全ノードの演算 を同時に行う (foil parallel decoding)復号装置 (例えば、非特許文献 1参照)や、一つ でも全てでもない、ある数のノードの演算を同時に行う (partly parallel decoding)復号 装置 (例えば、非特許文献 2や特許文献 1を参照)も提案されている。
[0091] ところで、例えば、図 10の復号装置では、受信データ D104を記憶する受信用メモリ 104の記憶容量としては、少なくとも、 LDPC符号の符号長と、受信データ D104を表 す量子化値のビット数 (量子化ビット数)との乗算値だけのビット数が必要である。また 、メッセージを記憶する枝用メモリ 100や 102の記憶容量としては、少なくとも、枝の 総数 (全枝数)と、メッセージを表す量子化値のビット数 (量子化ビット数)との乗算値 だけのビット数が必要である。
[0092] 従って、上述したように、符号長が 108で、メッセージ (受信データ D104を含む)を 表す量子化値のビット数が 6ビットで、枝の数が 323である場合には、記憶容量が少 なくとも 648(=108 X 6)ビットの受信用メモリ 104と、記憶容量が少なくとも 1938(=323 X 6 )ビットの枝用メモリ 100および 102とが必要となる。
[0093] なお、ここでは、説明を簡単にするために、符号長を 108とした力 現実的には、 LD PC符号の符号長としては、数千程度が採用される。
[0094] 一方、 LDPC符号の復号の精度を向上させるには、単純には、受信データ D104を 含むメッセージを表す量子化値として、ある程度のビット数の量子化値を採用する必 要がある。
[0095] し力しながら、上述したように、枝用メモリ 100および 102、並びに受信用メモリ 104 の記憶容量は、メッセージを表す量子化値のビット数に比例するので、メッセージを、 多くのビット数の量子化値で表すと、復号装置を構成するメモリとして、容量の大きな メモリが必要となり、装置の規模が大型化する。
[0096] 特許文献 1:特開 2004-364233号公報
非特干文献 1 : C. Howland and A. Blan sby, 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
発明の開示
発明が解決しょうとする課題 [0097] ところで、図 10の復号装置において、チェックノード計算器 101 (図 11)で行われる 式 (7)のチェックノード演算のうちの、非線形関数 φ (|v |)の演算と、逆関数 φ— 1 (∑ φ (| v |))の演算の精度は、 LDPC符号の復号の精度に影響する。
[0098] 即ち、非線形関数 φ (|ν |)の演算と、逆関数 φ— ∑ φ (|ν |))の演算の精度が悪けれ ば、 LDPC符号の復号の精度も悪くなる。
[0099] 非線形関数 φ (|ν |)の演算と、逆関数 φ— ∑ φ (|ν |))の演算の精度は、例えば、演 算に用いられる量子化値の量子化幅 (ある量子化値が表す数値と、その量子化値と 1だけ異なる量子化値が表す数値との差)を細力べすること、または、量子化値が表す 数値のダイナミックレンジ (量子化値が表す数値の最大値と最小値との差)を大にす ることにより、あるいは、その両方を行うことにより向上させることができる。
[0100] しかしながら、(現在のダイナミックレンジを維持したまま)量子化幅を細力べするにし ても、(現在の量子化幅を維持したまま)量子化値が表す数値のダイナミックレンジを 大にするにしても、量子化値のビット数は増加する。
[0101] 非線形関数 φ ( l)の演算と、逆関数 φ— 1 (∑ φ (|ν |))の演算の精度をある程度以上 とするために、量子化幅が細かぐかつ、ダイナミックレンジが大の(数値を表すことが できる)量子化値を、復号装置の全体に亘つて採用した場合、そのような量子化値は ビット数が大となるので、上述したように、復号装置を構成するメモリとして、容量の大 きなメモリが必要となり、装置の規模が大型化する。
[0102] さらに、非線形関数 φ (|ν |)の演算と、逆関数 φ— ∑ Φ (|ν;|))の演算を、図 11に示し たチェックノード計算器 101のように、 LUT (図 11における LUT121と 128)で実現す る場合には、ビット数が大の量子化値が入力および出力となる LUTとしては、容量が 大の LUTが必要となる。そして、そのような容量が大の LUT力 チェックノード計算器 101の回路規模のほとんどを占めることになる。
[0103] 本発明は、このような状況に鑑みてなされたものであり、 LDPC符号の復号を、装置 の大規模ィ匕を抑えつつ精度良く行うことができるようにするものである。
課題を解決するための手段
[0104] 本発明の一側面の復号装置または復号方法は、 LDPC符号の復号のためのチエツ クノードのチ ックノード演算であって、非線形関数の演算および非線形関数の逆関 数の演算を含むチェックノード演算を行う第 1の演算手段において、固定の量子化幅 で数値を表現するビット列である第 1の量子化値を入力として、非線形関数の演算の 結果を、一部のビット列に応じて決まる量子化幅で数値を表現するビット列である第 2 の量子化値で出力する関数演算手段 Zステップと、第 2の量子化値を入力として、非 線形関数の逆関数の演算の結果を、第 1の量子化値で出力する逆関数演算手段 Z ステップとを含む。
[0105] 力かる一側面の復号装置または復号方法においては、 LDPC符号の復号のための チ ックノードのチ ックノード演算であって、非線形関数の演算および非線形関数 の逆関数の演算を含むチェックノード演算が行われるときに、固定の量子化幅で数 値を表現するビット列である第 1の量子化値を入力として、非線形関数の演算の結果 力、一部のビット列に応じて決まる量子化幅で数値を表現するビット列である第 2の量 子化値で出力され、第 2の量子化値を入力として、非線形関数の逆関数の演算の結 果が、第 1の量子化値で出力される。
発明の効果
[0106] 本発明によれば、 LDPC符号の復号を、装置の大規模ィ匕を抑えつつ精度良く行うこ とがでさる。
図面の簡単な説明
[0107] [図 1]LDPC符号の検査行列 Hを説明する図である。
[図 2]パリティ部が下三角行列になっている検査行列 Hを示す図である。
[図 3]LDPC符号の復号手順を説明するフローチャートである。
[図 4]メッセージの流れを説明する図である。
[図 5]LDPC符号の検査行列 Hの例を示す図である。
[図 6]検査行列 Hのタナーグラフを示す図である。
[図 7]ノリアブルノードを示す図である。
[図 8]チェックノードを示す図である。
[図 9]LDPC符号の検査行列 Hの例を示す図である。
[図 10]ノード演算を一つずつ行う LDPC符号の復号装置の構成例を示すブロック図 である。 [図 11]メッセージを一つずつ計算するチェックノード計算器 101の構成例を示すプロ ック図である。
圆 12]メッセージを一つずつ計算するバリアブルノード計算器 103の構成例を示す ブロック図である。
圆 13]本発明が適用される復号装置の構成例を示すブロック図である。
[図 14]チェックノード計算器 171の構成例を示すブロック図である。
[図 15]チェックノード計算器 171の処理を説明するためのフローチャートである。 圆 16]非線形関数 φ (X)と、その逆関数 φ— y)とを示す図である。
圆 17]本発明を適用した復号装置の第 1実施の形態の構成例を示すブロック図であ る。
[図 18]チェックノード計算器 181の構成例を示すブロック図である。
[図 19]LUT221を説明するための図である。
圆 20]変換回路 231を説明するための図である。
圆 21]変換回路 231の処理を説明する図である。
圆 22]変換回路 233を説明するための図である。
圆 23]変換回路 233の処理を説明する図である。
[図 24]LUT228を説明するための図である。
[図 25]チェックノード計算器 181の処理を説明するためのフローチャートである。 圆 26]本発明を適用した復号装置の第 2実施の形態の構成例を示すブロック図であ る。
[図 27]ノリアブルノード計算器 103の構成例を示すブロック図である。
[図 28]準チェックノード計算器 412の構成例を示すブロック図である。
[図 29]準ノリアブルノード計算器 415の構成例を示すブロック図である。
[図 30]BER/FERを示す図である。
[図 31]準チェックノード計算器 412の他の構成例を示すブロック図である。
[図 32]準チェックノード計算器 412のさらに他の構成例を示すブロック図である。 符号の説明
100, 102 枝用メモリ, 103 バリアブルノード計算器, 104 受信用メモリ, 1 05 制御部, 129 EXOR回路, 130 レジスタ, 131 セレクタ, 132 レジスタ , 133 FIFOメモリ, 134 EXOR回路, 171, 181 チェックノード計算器, 22 1, 228 LUT, 231乃至 233 変換回路, 410 復号途中結果格納用メモリ, 4 11 スィッチ, 412 準チェックノード計算器, 413 枝用メモリ, 415 準バリア ブルノード計算器, 416 受信用メモリ, 417 制御部, 431 演算器, 432 L UT, 433 演算器, 434 レジスタ, 435 セレクタ, 436 レジスタ, 437 演 算器, 438 FIFOメモリ, 439 LUT, 440 EXOR回路, 441 レジスタ, 442 セレクタ, 443 レジスタ, 444 FIFOメモリ, 445 EXOR回路, 471 演算器 , 472 レジスタ, 473 セレクタ, 474 レジスタ, 475 演算器, 501乃至 50 3 変換回路, 504 LUT, 1211 LUT, 1122 演算器, 1123 レジスタ, 1 124 セレクタ, 1125 レジスタ, 1126 演算器, 1127 FIFOメモリ, 1128 LUT
発明を実施するための最良の形態
[0109] 以下、図面を参照して、本発明の実施の形態について説明する。
[0110] 図 13は、本発明が適用される、 LDPC符号を復号する復号装置の構成例を示して いる。
なお、図中、図 10の復号装置と対応する部分については、同一の符号を付してあり
、以下では、その説明は、適宜省略する。
[0111] 図 13の復号装置は、枝用メモリ 100, 102、バリアブルノード計算器 103、受信用メ モリ 104、制御部 105が設けられている点で、図 10の復号装置と共通するが、チエツ クノード計算器 101に代えてチェックノード計算器 171が設けられている点で、図 10 の復号装置と相違している。
[0112] ここで、図 13の復号装置では、例えば、前述の図 9に示した検査行列 Hで表される
LDPC符号 (符号ィ匕率 2/3、符号長 108)の復号が行われることとする。後述する図 17 および図 26の復号装置においても同様である。
[0113] 図 13の復号装置では、チェックノード計算器 171がチェックノード演算を行い、バリ アブルノード計算器 103がバリアブルノード演算を行 、、これらのチェックノード演算 とバリアブルノード演算とが交互に行われることによって、 LDPC符号が復号される。 [0114] 即ち、受信用メモリ 104には、 LDPC符号の受信データ u力 符号長(ここでは、上
0i
述したように 108)の単位で順次供給されて記憶される。
[0115] そして、ノ リアブルノード計算器 103は、 LDPC符号の復号のためのバリアブルノー ドのバリアブルノード演算を行う。
[0116] 即ち、枝用メモリ 102には、後述するチェックノード計算器 171によるチェックノード 演算の結果としてのメッセージ D102 (チェックノードメッセージ u)が格納されており、 枝用メモリ 102は、そのメッセージ D102を、メッセージ D103として、ノ リアブルノード計 算器 103に供給する。さらに、バリアブルノード計算器 103には、制御部 105から制 御信号 D107が供給されるとともに、受信用メモリ 104から受信データ D104が供給され る。
[0117] ノ リアブルノード計算器 103は、前述の図 12に示したように構成されており、制御 信号 D107に基づき、枝用メモリ 100から供給されるメッセージ D103 (チェックノードメッ セージ u)と受信用メモリ 100から供給される受信データ D104 (u )を用い、式(1)に従 j Oi
つてバリアブルノード演算を行 、、そのバリアブルノード演算の結果得られるメッセ一 ジ D105 (バリアブルノードメッセージ V )を、メッセージ D100として、枝用メモリ 100に供 給する。
[0118] 枝用メモリ 100は、バリアブルノード計算器 103から供給される、バリアブルノード演 算の結果であるメッセージ D100 (バリアブルノードメッセージ V )を格納して!/、く。
そして、枝用メモリ 100は、メッセージ D100を、メッセージ D101として読み出し、チエツ クノード計算器 171に供給する。
[0119] チェックノード計算器 171は、 LDPC符号の復号のためのチェックノードのチェックノ ード演算であって、非線形関数の演算および非線形関数の逆関数の演算を含むチ ックノード演算を行う。
[0120] 即ち、チェックノード計算器 171は、制御部 105から供給される制御信号 D106に基 づき、枝用メモリ 100から供給されるメッセージ D101 (バリアブルノードメッセージ V )を 用いて、非線形関数 Φ (X)の演算およびその非線形関数 Φ (X)の逆関数 Φ— ^χ)の演算 を含む式(7)に従ってチェックノード演算を行い、そのチェックノード演算によって求 められたメッセージ D102 (チェックノードメッセージ u)を、後段の枝用メモリ 102に供 給する。
[0121] 枝用メモリ 102は、前段のチェックノード計算器 171から供給されるメッセージ D102 を格納していく。そして、枝用メモリ 102に記憶されたメッセージ D102は、上述したよう にメッセージ D103として読み出され、ノリアブルノード計算器 103に供給される。
[0122] 図 13の復号装置では、受信用メモリ 104に記憶された符号長分の受信データ uに ついて、ノリアブルノード演算とチェックノード演算力 例えば、所定の複数回数だけ 繰り返し行われ、また、最後の回には、式(1)のノ リアブルノード演算の代わりに、式 (5)の演算が行われ、その演算結果が、受信用メモリ 104に記憶された符号長分の 受信データ u (LDPC符号)の最終的な復号結果として出力される。
[0123] 図 13の復号装置は、チェックノード演算およびバリアブルノード演算を繰り返し行う ことによって、 LDPC符号を復号する点では、前述の図 10の復号装置と共通する。
[0124] 但し、図 13の復号装置は、チェックノード演算およびバリアブルノード演算として行 う処理のうちの、非線形関数 φ (X)の演算後から逆関数 φ )の演算までの処理では 、図 10の復号装置が使用している量子化値よりも精度の高い数値を表す量子化値 を使用し、他の処理では、図 10の復号装置が使用しているのと同様の量子化値を使 用する。
[0125] ここで、図 10の復号装置では、上述したように、メッセージ (受信データ uも同様)は 、所定の数値範囲を符号ビット付きの 6ビットで表すことができる 64値に均等に分割 する各数値に割り当てられた 6ビットの量子化値で表される。即ち、所定の数値範囲 が— RZ2から +RZ2であるとすると (R>0)、メッセージを表す 6ビットの各量子化 値は、 RZ2から +RZ2— RZ64までの、量子化幅である RZ64きざみの 64の各 数値に割り当てられ、その各数値を表す。いま、この、メッセージを表す 6ビットの量子 化値を、通常量子化値という。
[0126] また、図 13の復号装置において、非線形関数 φ (χ)の演算後力も逆関数 φ— の 演算までの処理で使用される、通常量子化値よりも精度の高い数値を表す量子化値 を、高精度量子化値という。
[0127] 高精度量子化値は、通常量子化値よりも精度の高い数値を表すから、量子化幅、 即ち、ある量子化値に割り当てられた数値と、その量子化値よりも 1だけ小さい量子 化値に割り当てられた数値との差 (の絶対値)が通常量子化値よりも小さい。
[0128] 従って、高精度量子化値のビット数を、通常量子化値のビット数 (ここでは 6ビット)と 同一とすると、高精度量子化値によって表すことができる数値範囲は、通常量子化値 によって表すことができる数値範囲よりも狭くなる。即ち、高精度量子化値によって表 すことができる最大値と最小値との差 (ダイナミックレンジ)は、通常量子化値によって 表すことができる最大値と最小値との差 (ダイナミックレンジ)よりも狭くなる
[0129] また、高精度量子化値のビット数を、通常量子化値のビット数と同一とした場合の、 高精度量子化値によって表すことができるダイナミックレンジを、 Dylと表すとともに、 そのような高精度量子化値の量子化幅を、 Qdlと表すと、例えば、高精度量子化値 の量子化幅を Qdlのままで、ダイナミックレンジ力 ¾ylよりも広い Dy2の数値範囲を高 精度量子化値で表し、あるいは高精度量子化値の量子化幅を Qdはり小さ 、Qd2とし て、ダイナミックレンジが Dylの数値範囲を高精度量子化値で表す場合には、高精度 量子化値のビット数は、通常量子化値のビット数よりも多く必要となる。
[0130] 通常量子化値よりも精度の高い数値を表す量子化値、つまり、量子化幅が通常量 子化値よりも小さ 、量子化値であれば、ダイナミックレンジやビット数にかかわらず、 高精度量子化値として採用しうるが、ここでは、量子化幅が通常量子化値よりも小さ い量子化値であって、ダイナミックレンジが通常量子化値よりも広ぐビット数も通常量 子化値よりも多い量子化値を、高精度量子化値として採用することとする。
[0131] いま、高精度量子化値のビット数を、 6ビットの通常量子化値よりも多い、例えば、符 号ビットを含む 10ビットとすると、図 13の復号装置は、非線形関数 φ (χ)の演算後から 逆関数 φ _1(χ)の演算までの処理 (以下、適宜、非線形関数演算間処理という)では、 10ビットの高精度量子化値を使用し、他の処理では、 6ビットの通常量子化値を使用 する。
[0132] ここで、非線形関数演算間処理は、チェックノード演算の一部の処理であり、その非 線形関数演算間処理でのみ、 10ビットの高精度量子化値が使用される。従って、枝 用メモリ 100と 102に記憶されるメッセージにも、また、受信用メモリ 104に記憶される 受信データ uにも、 6ビットの通常量子化値が使用されるので、図 13の復号装置に おいて、枝用メモリ 100, 102、および受信用メモリ 104に必要な記憶容量は、図 10 の復号装置のそれと同一である。
[0133] 次に、図 14は、図 13のチェックノード計算器 171の構成例を示している。なお、図 中、図 11のチェックノード計算器 101と対応する部分については、同一の符号を付し てあり、以下では、その説明は、適宜省略する。
[0134] チェックノード計算器 171は、図 11の LUT121、演算器 122、レジスタ 123、セレク タ 124、レジスタ 125、演算器 126、 FIFOメモリ 127、 LUT128それぞれに代えて、 L UT1121,演算器 1122、レジスタ 1123、セレクタ 1124、レジスタ 1125、演算器 112 6、 FIFOメモリ 1127、 LUT1128力 ^設けられており、さらに、図 14において太線で示 す部分のビット数が、高精度量子化値と通常量子化値とのビット数の差である 4ビット だけ多くなつて 、る点で、図 11のチェックノード計算器 101と相違して 、る。
[0135] 図 14のチェックノード計算器 171も、図 11のチェックノード計算器 101と同様に、制 御部 105から供給される、例えば、 1ビットの制御信号 D106に基づき、枝用メモリ 100 力も 1つずつ読み込まれるメッセージ D101 (バリアブルノードメッセージ v.)を用いて、 式(7)にしたがってチヱックノード演算を行う。
[0136] 即ち、図 15は、チェックノード計算器 171で行われる処理を示している。
[0137] チェックノード計算器 171では、検査行列 Hの各列に対応するノリアブルノードから の 6ビットのメッセージ D101 (バリアブルノードメッセージ V )力 枝用メモリ 100 (図 13) から 1つずつ読み込まれ、その下位 5ビットである絶対値 D122(|v.|)が LUT1121に、そ の最上位ビットである符号ビット D121が EXOR回路 129と FIFO(First In First Out)メ モリ 133にそれぞれ供給される。また、チェックノード計算器 171には、制御部 105か ら制御信号 D106が供給され、その制御信号 D106は、セレクタ 1124とセレクタ 131に 供給される。
[0138] LUT1121は、 5ビットの絶対値 D122(|v|)に対して、式(7)における非線形関数 φ (|v
I)の演算結果 Dl 123 ( φ (|ν |))を対応付けて記憶している。さらに、 LUT1121では、絶 対値 D122(|v |)は、通常量子化値で表されているのに対して、非線形関数 φ (|ν |)の演 算結果 D1123 ( φ (|ν |))は、符号ビットなしの高精度量子化値で表されている。
即ち、 LUT1121は、通常量子化値で表される 5ビットの絶対値 D122(|v |)に対して、例 えば、高精度量子化値で表される 9ビットの、非線形関数 φ (|ν|)の演算結果 D1123 ( Φ (|v|))を対応付けて記憶して 、る。
[0139] LUT1121は、ステップ S1において、通常量子化値で表される 5ビットの絶対値 D12 2(|v|)を入力として、それに対応付けられている、高精度量子化値で表される 9ビット の、非線形関数 Φ (|ν;|)の演算結果 01123 ( φ (|ν |))を読み出し、演算器 1122と FIFO メモリ 1127に出力する。
[0140] 従って、 LUT1121は、ステップ S1において、式(7)における非線形関数 φ (|v|)を 演算する処理、および通常量子化値を高精度量子化値に変換する処理を、等価的 に行い、以降は、後述する LUT1128において、高精度量子化値を通常量子化値に 変換する処理が行われるまで、高精度量子化値を使用して処理が行われる。
[0141] その後、ステップ S2において、演算器 1122は、 9ビットの演算結果 D1123 ( φ (|v |)) とレジスタ 1123に格納されて!、る 13ビットの値 D 1124とを加算することにより、演算結 果 D 1123を積算し、その結果得られる 13ビットの積算値をレジスタ 1123に再格納す る。なお、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101の絶対値 D122(|v.|) に対する演算結果が積算された場合、レジスタ 1123はリセットされる。
[0142] ここで、演算器 1122およびレジスタ 1123では、 LUT1121から供給される 9ビットの 演算結果 01123 ( φ (|ν |))力 最大で、 FIFOメモリ 1127における最大の遅延回数分、 即ち、検査行列 Hの行の最大の重み分の回数だけ積算される。いま、図 9の検査行 列 Hの行の最大の重みは 9であり、従って、演算器 1122およびレジスタ 1123では、 9ビットの高精度量子化値が、最大で、 9回積算される(9ビットの高精度量子化値の 9 個分の積算が行われる)。このため、演算器 1122の出力以降においては、 9ビットの 高精度量子化値を 9回積算した値を表すことができるように、高精度量子化値のビッ ト数は、 LUT1121が出力する 9ビットの演算結果 D1123 ( φ (|ν|))よりも 4ビット(9 (回) を表すことができる最小のビット数)だけ多い 13ビットになっている。
[0143] 検査行列 Ηの 1行に亘るメッセージ D101 (バリアブルノードメッセージ ν)が 1つずつ 読み込まれ、レジスタ 1123に 1行分の演算結果 D1123が積算された積算値が格納さ れた場合、制御部 105から供給される制御信号 D106は、 0から 1に変化する。例えば 、検査行列 Ηの行の重み (row weight)が「9」である場合、制御信号 D106は、 1から 8 クロック目までは、「0」となり、 9クロック目では「1」となる。 [0144] 制御信号 D106が「1」の場合、セレクタ 1124は、ステップ S3において、レジスタ 112 3に格納されている値、即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D10 1 (バリアブルノードメッセージ V)から求められた φ (|v |)が積算された 13ビットの積算 値 D1124 (i= lから i=dまでの∑ φ (|ν |))を選択し、 13ビットの値 D1125として、レジス タ 1125〖こ出力して格納させる。レジスタ 1125は、格納している値 D1125を、 13ビット の値 D1126として、セレクタ 1124と演算器 1126〖こ供給する。
制御信号 D106が「0」の場合、セレクタ 1124は、レジスタ 1125から供給された値 D11 26を選択し、レジスタ 1125に出力して再格納させる。即ち、検査行列 Ηの 1行に亘る 全ての枝からのメッセージ D101 (バリアブルノードメッセージ V)力も求められた φ (|ν |) が積算されるまで、レジスタ 1125は、前回積算された φ (|ν |)を、セレクタ 1124と演算 器 1126に供給する。
[0145] 一方、 FIFOメモリ 1127は、レジスタ 1125から新たな値 D1126 (i= lから i=dまでの ∑ φ (|ν )が出力されるまでの間、 LUT1121が出力した 9ビットの演算結果 D1123 ( φ (|ν.|))を遅延し、 9ビットの値 D1127として演算器 1126に供給する。演算器 1126は 、ステップ S4において、レジスタ 1125から供給された 13ビットの値 D1126から、 FIFO メモリ 1127から供給された 9ビットの値 D1127を減算し(レジスタ 1125から供給された 13ビットの値 D1126に、 FIFOメモリ 1127から供給された 9ビットの値 D1127に- 1を乗 算して得られる値を積算し)、その減算結果を、 9ビットの減算値 D1128として LUT11 28に供給する。
[0146] 即ち、演算器 1126は、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (バ リアブルノードメッセージ V)力も求められた φ (|v |)の積算値から、チェックノードメッセ ージ uを求めたい枝からのメッセージ D101 (バリアブルノードメッセージ V)力も求めら れた φ (|ν |)を減算して、その減算値 (i= lから i=d — 1までの∑ φ (|ν |))を減算値 D11 28として LUT 1128に供給する。
[0147] なお、レジスタ 1125から供給される 13ビットの値 D1126から、 FIFOメモリ 1127力 供給される 9ビットの値 D1127を減算した減算結果としての量子化値 (高精度量子化 値)が、 9ビットの減算値 D1128で表すことができる最大値を越える場合には、演算器 1126は、減算結果としての高精度量子化値を、 9ビットの高精度量子化値で表すこ とができる最大値にクリッピングし、 9ビットの減算値 D1128として出力する。
[0148] LUT1128は、減算値 D1128(i=lから i=d— 1までの∑ φ(|ν|))に対して、式(7) における逆関数 φ_1(∑ ^ の演算を行った演算結果!^ ^ ^ φ(|ν|)))を対 応付けて記憶している。さらに、 LUT1128では、減算値 D1128(i=lから i=d—1ま での∑ φ (|v |))は、高精度量子化値で表されて!、るのに対して、逆関数 φ— 1 (∑ φ (|v I ))の演算結果 D1129( φ— ∑ φ (|v|》)は、符号ビットなしの通常量子化値で表されて いる。即ち、 LUT1128は、高精度量子化値で表される 9ビットの減算値 D1128 (i=l から i=d—1までの∑ (|ν|))に対して、通常量子化値で表される 5ビットの、逆関数 _1(∑ (^ の演算結果!^^^— φ(|ν|》)を対応付けて記憶している。
[0149] LUT1128は、ステップ S5において、高精度量子化値で表される 9ビットの減算値 D 1128(i=lから i=d—1までの∑ φ(|ν|))を入力として、それに対応付けられている、 通常量子化値で表される 5ビットの、逆関数 φ— ∑ (^( の演算結果!^ ^ ∑ φ(|ν|》)を読み出して出力する。
[0150] 従って、 LUT1128は、ステップ S5において、式(7)における逆関数 φ— ∑ (|ν|)) を演算する処理、および高精度量子化値を通常量子化値に変換する処理を、等価 的に行い、以降は、上述した LUT1121において、通常量子化値を高精度量子化値 に変換する処理が行われるまで、通常量子化値を使用して処理が行われる。
[0151] 以上の処理と並行して、 EXOR回路 129、レジスタ 130、セレクタ 131、レジスタ 132 、 FIFOメモリ 133、 EXOR回路 134では、図 11のチェックノード計算器 101と同様の 処理が行われ、これにより、 EXOR回路 134は、検査行列 Hの 1行に亘る全ての枝か らのメッセージ D101 (バリアブルノードメッセージ V)の符号ビット D121 (sign(lvj))の乗 算値を、チェックノードメッセージ uを求めたい枝からのメッセージ D101の符号ビット D 121(Sign(|V|))で除算して、その除算値 (i=lから i=d— 1までの nsign(|V|))を除算 値 D135として出力する。
[0152] そして、チェックノード計算器 171では、 LUT1128から出力された通常量子化値の 5ビットの演算結果 D1129を下位 5ビットとするとともに、 EXOR回路 134から出力され た 1ビットの除算値 D135を最上位ビット (符号ビット)とする合計 6ビットの通常量子化 値で表されるメッセージ D102 (チェックノードメッセージ u)が出力される。 [0153] 従って、チェックノード計算器 171では、 LUT1121において、通常量子化値を高精 度量子化値に変換するとともに、 LUT1128において、高精度量子化値を通常量子 化値に変換することにより、チェックノード演算およびバリアブルノード演算として行う 処理のうちの、非線形関数 φ (X)の演算後からその逆関数 φ— ^χ)の演算までの処理で は、高精度量子化値を使用し、他の処理では、通常量子化値を使用するので、 LDP C符号の復号を、復号装置の大規模ィ匕を抑えつつ精度良く行うことができる。
[0154] 即ち、図 16は、非線形関数 φ (χ)と、その逆関数 φ— y)とを示している。なお、図 16 において、〇印は、通常量子化値を採用した場合に、非線形関数 φ (X)の演算結果 とその引数 Xとがとり得る数値、および逆関数 φ _1(γ)とその引数 yとがとり得る数値を示 している。
[0155] 図 16の左側は、非線形関数 φ (X)を示しており、図 16の右側は、その逆関数 φ— y) を示している。
[0156] 図 16の左側に示した非線形関数 φ (X)は、その引数 Xが、ある程度の大きな数値以
_ヒとなると、ほぼ となる。
[0157] 一方、図 16の右側に示した逆関数 φ— )は、その引数 yが、数値 0付近である場合 に、急峻に変化する。
[0158] 従って、チェックノード演算である式(7)の演算において、非線形関数 φ (|v.|)の演 算後からその逆関数 φ _1(χ)の演算までの処理を、通常量子化値を使用して行った場 合、演算精度が劣化する。
[0159] 即ち、非線形関数 φ (X)の演算結果を、通常量子化値で表すと、ある程度の大きな 数値以上の引数 Xに対しては、すべて、非線形関数 φ (X)の演算結果として、同一の 数値 0を表す通常量子化値が得られる。つまり、ある程度の大きな数値以上の引数 X に対する非線形関数 φ (X)の演算結果は、ほぼ 0となるため、通常量子化値によって 精度良く表すことが困難である。
[0160] また、式(7)のチェックノード演算において、逆関数 φ— ^y)の引数 yとなるのは、非線 形関数 Φ (|v|)の積算値 (i= 1から i= d― 1までの∑ φ (|v |))であるが、非線形関数 φ ( |v |)の演算結果を表す通常量子化値は、上述したように、ある程度の大きな数値以上 の引数 |v |に対しては、すべて、数値 0を表す通常量子化値となる。 [0161] 従って、式 (7)の積算の対象となる非線形関数 φ (Iv の演算結果として、すべて、 数値 0を表す通常量子化値が得られた場合には、その積算値 (i=lから i=d— 1ま での∑ φ(|ν|))も、数値 0を表す通常量子化値となり、逆関数 φ— y)の引数 yとして、数 値 0を表す通常量子化値が与えられることになる。
[0162] 一方、逆関数 φ— y)は、その引数 yが、数値 0付近である場合に急峻に変化するか ら、逆関数 Φ— )の演算結果として、精度の良い演算結果を得るためには、特に、 0 付近の数値を精度良く表す量子化値によって、引数 yを表現することが望ましい。
[0163] し力しながら、通常量子化値を使用した場合には、上述したように、ある程度の大き な数値以上の引数 |v|に対しては、すべて、非線形関数 Φ(|ν|)の演算結果として、数 値 0を表す通常量子化値が得られ、その結果、逆関数 Φ— ∑ Φ(|ν|))の引数となる積 算値∑ Φ(|ν|)を表す通常量子化値も、数値 0を表す通常量子化値となる。
[0164] このため、積算値∑ φ (|ν|)が数値 0付近の値である場合には、その積算値∑ φ (|ν|) が僅かに違えば、本来は、逆関数 Φ— ∑ Φ(|ν|))の演算結果が大きく異なるはずな のに、 0付近の積算値∑ φ(|ν.|)が、すべて数値 0を表す通常量子化値で表されてしま うために、僅かに違う積算値∑ Φ(|ν|)に対し、逆関数 Φ— ∑ Φ(|ν.|))の演算結果とし て、同一の演算結果、つまり、誤差の大きな演算結果が得られることになる。
[0165] これに対して、非線形関数 φ (Ιν.Ι)の演算後からその逆関数 φ— )の演算までの処 理を、高精度量子化値を使用して行う場合には、ある程度の大きな数値以上の引数
Xに対しても、非線形関数 φ (X)の演算結果として、 0付近の数値を精度良く表す高精 度量子化値が得られる。さらに、その結果、逆関数 Φ— ∑ Φ(|ν|))の引数となる積算 値∑ Φ(|ν|)が、 0付近の数値であっても、その数値を精度良く表す高精度量子化値 が得られる。
[0166] 従って、積算値∑ φ (|ν |)が数値 0付近の値である場合であっても、その積算値∑ φ (
|ν|)が僅かに異なるごとに応じて異なる、精度の良い逆関数 Φ— ∑ Φ(|ν|))の演算結 果 (を表す高精度量子化値)が得られることになる。そして、その結果、 LDPC符号の 復号を精度良く行うことができる。
[0167] さらに、非線形関数 φ (|ν |)の演算後からその逆関数 φ— ^χ)の演算までの処理だけ を、高精度量子化値を使用し、他の処理を、通常量子化値を使用して行うので、チェ ックノード計算器 171 (図 14)において高精度量子化値を使用する部分、即ち、 LUT 1121乃至 LUT1128の規模が、高精度量子化値と通常量子化値とのビット数の差分 の分だけ僅かに大きくなるだけであり、上述したように、図 13の復号装置の枝用メモリ 100, 102、および受信用メモリ 104に必要な記憶容量は、通常量子化値を使用す る図 10の復号装置のそれと変わらない。
[0168] 従って、 LDPC符号の復号を、復号装置の大規模ィ匕を抑えつつ精度良く行うことが できる。
[0169] なお、図 9の検査行列 Hの行の重みの最大は 9であるため、即ち、チヱックノードに 供給されるメッセージの最大数は 9であるため、チェックノード計算器 171 (図 14)は、 9個のメッセージ( φ (|v |))を遅延させる FIFOメモリ 1127と FIFOメモリ 133を有し、行 の重みが 9未満の行のメッセージを計算するときには、 FIFOメモリ 1127と FIFOメモリ 133における遅延量力 その行の重みの値に減らされる。
[0170] ところで、図 14のチェックノード計算器 171において、チェックノード演算における 非線形関数 φ (|ν |)の演算と逆関数 φ )の演算とは、それぞれ LUT1121と LUT112 8で行われる。
[0171] 即ち、非線形関数 φ (|ν |)の演算は、 5ビットの通常量子化値を入力として、非線形 関数 Φ (Iv.l)の演算の結果を、 9ビットの高精度量子化値で出力する LUT1121で行わ れ、逆関数 Φ— の演算は、 9ビットの高精度量子化値を入力として、逆関数 φ— の演算の結果を、 5ビットの通常量子化値で出力する LUT1128で行われる。
[0172] このような LUT1121や LUT1128などの LUTの容量としては、入力としての量子化 値のビット数を aビットとするとともに、出力としての量子化値を bビットとすると、 2a X bビ ットだけの容量が必要となる。
[0173] 従って、入力および出力のいずれの量子化値も 5ビットの通常量子化値である図 1 1の LUT121と LUT 128には、 25 X 5ビットの容量が必要である。
[0174] 一方、入力としての量子化値が 5ビットの通常量子化値であり、出力としての量子化 値が 9ビットの高精度量子化値である LUT1121には、 25 X 9ビットの容量が必要であ り、入力としての量子化値が 9ビットの高精度量子化値であり、出力としての量子化値 力 ビットの通常量子化値である LUT1128には、 29 X 5ビットの容量が必要である。 [0175] 従って、図 14のチェックノード計算器 171における LUT1121や LUT1128に必要 な容量は、図 11のチェックノード計算器 101における LUT121や LUT128と比較して 大になり、その分、図 14のチェックノード計算器 171は、図 11のチェックノード計算器 101よりも大型化する。さらに、その結果、図 13の復号装置も、図 10の復号装置と比 較して大型化する。
[0176] そこで、図 17は、本発明を適用した復号装置の第 1実施の形態の構成例を示して いる。なお、図中、図 13の復号装置と対応する部分については、同一の符号を付し てあり、以下では、その説明は、適宜省略する。
[0177] 図 17の復号装置は、枝用メモリ 100, 102、バリアブルノード計算器 103、受信用メ モリ 104、制御部 105が設けられている点で、図 13の復号装置と共通するが、チエツ クノード計算器 171に代えてチェックノード計算器 181が設けられている点で、図 13 の復号装置と相違している。
[0178] ここで、図 17の復号装置では、図 13で説明したように、例えば、前述の図 9に示し た検査行列 Hで表される LDPC符号 (符号ィ匕率 2/3、符号長 108)の復号が行われる。
[0179] 図 17の復号装置でも、図 13の復号装置と同様に、図 13のチェックノード計算器 17 1に対応するチェックノード計算器 181がチェックノード演算を行い、バリアブルノード 計算器 103がバリアブルノード演算を行 、、これらのチェックノード演算とバリアブル ノード演算とが交互に行われることによって、 LDPC符号が復号される。
[0180] 従って、チェックノード計算器 181でも、図 13のチェックノード計算器 171と同様に 、 LDPC符号の復号のためのチヱックノードのチヱックノード演算であって、非線形関 数の演算および非線形関数の逆関数の演算を含むチ ックノード演算が行われ、即 ち、制御部 105から供給される制御信号 D106に基づき、枝用メモリ 100から供給され るメッセージ D101 (バリアブルノードメッセージ V )を用いて、非線形関数 φ (X)の演算 およびその非線形関数 φ (X)の逆関数 φ— ^χ)の演算を含む式(7)に従ってチェックノ ード演算が行われ、そのチェックノード演算によって求められたメッセージ D102 (チェ ックノードメッセージ u)が、後段の枝用メモリ 102に供給される。
[0181] 但し、チェックノード計算器 181では、固定の量子化幅で数値を表現するビット列で ある第 1の量子化値を入力として、非線形関数 φ (χ)の演算の結果を、一部のビット列 に応じて決まる量子化幅で数値を表現するビット列である第 2の量子化値で出力する 点、および、第 2の量子化値を入力として、逆関数 φ— ^χ)の演算の結果を、第 1の量 子化値で出力する点が、図 13のチェックノード計算器 171と異なっている。
[0182] ここで、固定の量子化幅で数値を表現するビット列である第 1の量子化値について は、固定の量子化幅を Sと表すとともに、第 1の量子化値を Qと表すと、第 1の量子化
1
値 (ビット列) Q +1が表す数値は、必ず、第 1の量子化値 Qが表す数値よりも Sだけ大
1 1
きい数値となる。従って、第 1の量子化値は、数値を、いわゆる固定小数点と呼ばれ る表現形式で表現するビット列と等価であり、以下、適宜、固定小数点量子化値、ま たは固定小数点形式の量子化値という。
[0183] また、一部のビット列に応じて決まる量子化幅で数値を表現するビット列である第 2 の量子化値については、量子化幅が、第 2の量子化値の一部のビット列に応じて変 化するので、第 2の量子化値を Qと表すと、第 2の量子化値 Q +1が表す数値が、第 2
2 2
の量子化値 Q
2が表す数値よりもどれだけ大きい数値であるかは、第 2の量子化値 Q
2 と Q +1の一部のビット列によって異なる。
2
[0184] 即ち、第 2の量子化値 Qと Q +1の一部のビット列によっては、第 2の量子化値 Q +1
2 2 2 が表す数値は、第 2の量子化値 Qが表す数値よりも、ある数 Sだけ大きい数値である
2
ことや、 Sとは異なるある数 S'だけ大きいことがある。つまり、第 2の量子化値が、 1だけ 増加すると、その第 2の量子化値が表す数値は、例えば、 Sだけ増加することもあるし 、 Sとは異なる S'だけ増加することもある。
[0185] 一方、数値を、 Vヽゎゆる浮動小数点と呼ばれる表現形式で表現するビット列は、符 号ビット (正負を表すビット)を考慮しなければ、一般に、指数部 eを一部のビット列に 割り当てるとともに、仮数部 残りのビット列に割り当てることによって、 fX 2eで表され る数値を表す。
[0186] 数値 fX 2eを浮動小数点で表現するビット列にっ 、ては、例えば、指数部 eとしての ビット列が 0であれば、仮数部 fとしてのビット列が 1だけ増加することに、その指数部 e と仮数部 fとで構成される、数値を浮動小数点で表現するビット列が表す数値 fX 2eは 、 1ずつ増加する。また、例えば、指数部 eとしてのビット列が 1であれば、仮数部 fとし てのビット列力 S1だけ増加することに、その指数部 eと仮数部 fとで構成される、数値を 浮動小数点で表現するビット列が表す数値 fX 2eは、 2ずつ増加する。
[0187] 従って、数値を浮動小数点で表現するビット列にっ 、ては、その一部のビット列に 割り当てられる指数部 eによっては、残りのビット列に割り当てられている仮数部 S i だけ増加すると、指数部 eと仮数部 fとで構成される、数値を浮動小数点で表現するビ ット列が表す数値は、例えば、 1だけ増加することもあるし、 2だけ増加することもある。
[0188] 一部のビット列に応じて決まる量子化幅で数値を表現するビット列である第 2の量 子化値は、その第 2の量子化値が表す数値の増加の仕方が一部のビット列によって 異なる点において、数値の増加の仕方が指数部 eによって異なる、数値を浮動小数 点で表現するビット列と共通する。
[0189] 以上のように、第 2の量子化値は、数値を浮動小数点で表現するビット列に、いわ ば準ずるので、第 2の量子化値を、以下、適宜、準浮動小数点量子化値、または準 浮動小数点形式の量子化値と 、う。
[0190] なお、上述の通常量子化値および高精度量子化値は、いずれも、固定小数点量子 化値である。
[0191] 次に、図 18は、図 17のチェックノード計算器 181の構成例を示している。
[0192] なお、図 18において、図 14のチェックノード計算器 171と共通する部分については
、同一の符号を付してあり、以下では、その説明は、適宜省略する。
[0193] 即ち、図 18のチェックノード計算器 181は、 LUT1121と LUT1128に代えて、 LUT
221と LUT228力 Sそれぞれ設けられており、力つ、変換回路 231, 232、および 233 が新たに設けられている他は、図 14のチェックノード計算器 171と同様に構成されて いる。
[0194] チェックノード計算器 181は、式(7)のチェックノード演算を行うが、その際、上述し たように、固定小数点量子化値を入力として、非線形関数 φ (χ)の演算の結果を、準 浮動小数点量子化値で出力するとともに、準浮動小数点量子化値を入力として、逆 関数 φ— )の演算の結果を、固定小数点量子化値で出力する。
[0195] 即ち、 LUT221は、図 14の LUT1121と同様に、固定小数点量子化値でもある通常 量子化値の 5ビットの絶対値 D122(|v |)に対して、式(7)における非線形関数 φ (| |)の 演算結果を対応付けて記憶している。但し、 LUT1121では、非線形関数 φ (|ν|)の演 算結果が、 9ビットの高精度量子化値で表されているのに対して、 LUT221では、非 線形関数 φ (|v|)の演算結果が、 5ビットの準浮動小数点量子化値で表されている。
[0196] 従って、 LUT221は、 5ビットの固定小数点量子化値に対し、その固定小数点量子 化値が表す数値 |v |を入力として、非線形関数 Φ (|v |)の演算を行った結果得られる数 値を表す 5ビットの準浮動小数点量子化値を対応付けて記憶している。
[0197] そして、 LUT221は、そこに供給される 5ビットの固定小数点量子化値である絶対値 D122(|Vil)に対応付けられている、非線形関数 φ (|v|)の演算結果を表す 5ビットの準 浮動小数点量子化値を、変換回路 231と FIF01127に供給する。
[0198] LUT228は、図 14の LUT1128と同様に、 5ビットの量子化値 y(=∑ φ (|ν|))に対し て、式 (7)における逆関数 φ )(= _1 (∑ (|ν |)) )の演算結果を表す 5ビットの通常 量子化値を対応付けて記憶している。但し、 LUT1128に対しては、逆関数 φ— )の 引数 yが 9ビットの固定小数点量子化値でもある高精度量子化値で与えられるのに対 して、 LUT228に対しては、逆関数 φ _1(γ)の引数 yが 5ビットの準浮動小数点量子化 値で、後述する変換回路 233から与えられるようになって 、る。
[0199] 従って、 LUT228は、 5ビットの準浮動小数点量子化値 (符号ビットなしの準浮動小 数点量子化値)に対し、その準浮動小数点量子化値が表す数値∑ Φ (|ν |)を入力とし て、逆関数 Φ— 1 (∑ Φ (Iv.D)の演算を行った結果得られる数値を表す 5ビットの固定小 数点量子化値 (符号ビットなしの固定小数点量子化値)を対応付けて記憶して 、る。
[0200] そして、 LUT228は、そこに供給される 5ビットの準浮動小数点量子化値 F1128(∑
(|ν|))に対応付けられている、逆関数 Φ— ∑ Φ (|ν |))の演算結果を表す、通常量子 化値でもある 5ビットの固定小数点量子化値を、逆関数 φ— ∑ φ (|ν|))の演算結果 D 1129として出力する。
[0201] 変換回路 231は、 LUT221から供給される、非線形関数 φ (|ν |)の演算結果を表す 5 ビットの準浮動小数点量子化値を、その非線形関数 φ (|ν |)の演算結果を表す、高精 度量子化値でもある 9ビットの固定小数点量子化値 (符号ビットなしの固定小数点量 子化値)に変換する、数値の表現形式の変換を行い、その結果得られる 9ビットの固 定小数点量子化値 D1123を、演算器 1122に供給する。
[0202] ここで、 LUT221が出力する非線形関数 φ (|ν|)の演算結果を表す 5ビットの準浮動 小数点量子化値は、上述したように、一部のビット列に応じて決まる量子化幅で数値 を表現するビット列であるため、そのままでは、後段の演算器 1122での積算を行うこ とが困難である。このため、変換回路 231は、 LUT221が出力する 5ビットの準浮動小 数点量子化値を、 9ビットの高精度量子化値でもある固定小数点量子化値に変換す る。
[0203] 変換回路 232は、変換回路 231と同様に、数値の表現形式の変換を行う。即ち、変 換回路 232には、 LUT221が出力する非線形関数 φ (|ν |)の演算結果を表す 5ビット の準浮動小数点量子化値力 FIF01127において遅延されて供給されるようになつ ている。変換回路 232は、 FIF01127から供給される(遅延後の) 5ビットの準浮動小 数点量子化値を、 9ビットの高精度量子化値でもある固定小数点量子化値に変換し 、演算器 1126に供給する。
[0204] つまり、変換回路 232は、変換回路 231で準浮動小数点量子化値を固定小数点量 子化値に変換するのと同様の理由で、後段の演算器 1126の演算 (積算)の対象とな る 5ビットの準浮動小数点量子化値を、 9ビットの高精度量子化値でもある固定小数 点量子化値に変換する。
[0205] 変換回路 233は、変換回路 231や 232の変換とは逆の表現形式の変換を行う。即 ち、変換回路 233には、演算器 1126から 9ビットの高精度量子化値でもある固定小 数点量子化値が供給されるようになっている。変換回路 233は、演算器 1126からの 9ビットの固定小数点量子化値を 5ビットの準浮動小数点量子化値に変換し、 LUT22 8に入力として与える。
[0206] なお、図 18では、 9ビットの固定小数点量子化値(およびその 9ビットの固定小数点 量子化値を用いて行われた演算の結果)がやりとりされる接続線を、実線の太線で示 してあり、 5ビットの浮動小数点量子化値がやりとりされる接続線を、点線の太線で示 してある。後述する図 28においても、同様である。
[0207] 次に、図 19を参照して、図 18の LUT221についてさらに説明する。
[0208] LUT221には、図 19左の表に示す 5ビットの通常量子化値でもある固定小数点量 子化値が供給される。なお、図 19左の表では、 5ビットの固定小数点量子化値として のビット列とともに、そのビット列が表す 10進数の数値も示してある。 [0209] LUT221は、 5ビットの固定小数点量子化値に対して、その固定小数点量子化値が 表す数値 Xを入力として式 (7)における非線形関数 φ (|v |)の演算を行った結果得られ る数値 φ (X)を表す 5ビットの準浮動小数点量子化値を出力する。
[0210] 図 19右の表は、 LUT221が出力する 5ビットの準浮動小数点量子化値を示してい る。ここで、図 19右の表には、 5ビットの準浮動小数点量子化値としてのビット列ととも に、その準浮動小数点量子化値に対応する固定小数点量子化値 (準浮動小数点量 子化値が表す数値を表す固定小数点量子化値)としての 9ビットと、その 9ビットが表 す 10進数の数値も示してある。
[0211] 図 19左の表の 5ビットの固定小数点量子化値が表す 10進数の数値の範囲は、 0乃 至 31であるのに対して、図 10右の表の 5ビットの準浮動小数点量子化値(に対応す る 9ビットの固定小数点量子化値)が表す 10進数の数値の範囲は、 0乃至 448であり 、従って、同一の 5ビットでも、準浮動小数点量子化値の方が、固定小数点量子化値 よりも広いダイナミックレンジの数値を表すことができる。なお、例えば、 9ビットの固定 小数点量子化値が表す 10進数の範囲は、 0乃至 511である力 、 5ビットの準浮動 小数点量子化値によれば、 9ビットの固定小数点量子化値と同程度に広いダイナミツ クレンジの数値を表すことができる。
[0212] また、図 19右の表の 5ビットの準浮動小数点量子化値の量子化幅は、その一部の ビットである上位 3ビットによって異なっている。
[0213] 即ち、 10進数の数値で考えれば、 5ビットの準浮動小数点量子化値の上位 3ビット 力 SOOOである場合と 001である場合には、残りの下位 2ビットが 1だけ増加するごとに 、 5ビットの準浮動小数点量子化値が表す 10進数の数値は 1ずつ増加する。従って 、量子化幅は 1になっている。
[0214] また、 5ビットの準浮動小数点量子化値の上位 3ビットが 010である場合には、残り の下位 2ビットが 1だけ増加するごとに、 5ビットの準浮動小数点量子化値が表す 10 進数の数値は 2ずつ増加する。従って、量子化幅は 2になっている。
[0215] さらに、 5ビットの準浮動小数点量子化値の上位 3ビットが 011である場合には、残り の下位 2ビットが 1だけ増加するごとに、 5ビットの準浮動小数点量子化値が表す 10 進数の数値は 4ずつ増加する。従って、量子化幅は 4になっている。 [0216] 以下、同様に、 5ビットの準浮動小数点量子化値の上位 3ビットが 100, 101, 110, 111である場合には、それぞれ、量子化幅は、 8, 16, 32, 64になっている。
[0217] ここで、図 19右の表の 5ビットの準浮動小数点量子化値の上位 3ビットを準指数部 e と呼ぶとともに、残りの下位 2ビットを準仮数部 fと呼ぶこととすると、準指数部 eが 000 である場合を除けば、 5ビットの準浮動小数点量子化値が表す 10進数の数値は、 (1+ f/22) X 2e+1となる。従って、準浮動小数点量子化値は、仮数部を (l+f/22)とし、指数部 を e+1とする基数力 ¾の浮動小数点 (数)であるということができる。例えば、 5ビットの 準浮動小数点量子化値 10001は、準指数部 eである上位 3ビットが 100 (10進数で 4 )であり、準仮数部 fCある下位 2ビットが 01 (10進数で 1)であるから、 10進数の数値 で表すと、(1+1/22) X 24+1=40となる。
[0218] なお、準指数部 eが 000である場合、 5ビットの準浮動小数点量子化値が表す 10進 数の数値は、 f/2 X 2e+1となる。この場合、準浮動小数点量子化値は、仮数部を f/2とし 、指数部を e+1とする基数力 ¾の浮動小数点 (数)であるということができる。
[0219] 上述のように、準浮動小数点量子化値の量子化幅は、その準浮動小数点量子化 値が表す数値が大になるほど大になる(小になるほど小になる)。本実施の形態では 、 5ビットの準浮動小数点量子化値の最小の量子化幅力 例えば、 9ビットの固定小 数点量子化値でもある高精度量子化値の量子化幅以下 (高精度量子化値の量子化 幅と同一か、それよりも小さい値)になっており、従って、 5ビットの準浮動小数点量子 化値によれば、 9ビットの高精度量子化値と同様に、非線形関数 φ (χ)の演算結果( 図 16左側)として、 0付近の数値を精度良く表すことができる。
[0220] 即ち、 5ビットの準浮動小数点量子化値によれば、 5ビットの固定小数点量子化値( 通常量子化値)よりも広い、 9ビットの固定小数点量子化値 (高精度量子化値)と同程 度のダイナミックレンジの数値を表すことができ、かつ、 9ビットの固定小数点量子化 値 (高精度量子化値)と同様に (あるいは、それ以上に)、 0付近の数値を精度良く表 すことができる。
[0221] 次に、図 20を参照して、図 18の変換回路 231についてさらに説明する。
[0222] 図 20は、変換回路 231に入力される(与えられる) 5ビットの準浮動小数点量子化 値と、変換回路 231が出力する 9ビットの固定小数点量子化値との関係を示している [0223] 変換回路 231は、上述したように、 LUT221から供給される 5ビットの準浮動小数点 量子化値を、高精度量子化値でもある 9ビットの固定小数点量子化値に変換する、 数値の表現形式の変換を行う。
[0224] 即ち、変換回路 231は、図 20の左から 1番目の欄に示す 5ビットの準浮動小数点量 子化値を、図 20の左力 2番目の欄に示す 9ビットの固定小数点量子化値に変換し て出力する。
[0225] 具体的には、変換回路 231は、 5ビットの準浮動小数点量子化値の準指数部(上位 3ビット) eが 000である場合には、準仮数部(下位 2ビット )¾、そのまま下位 2ビットと し、かつ、残りの上位 7ビットを 0とする 9ビットの固定小数点量子化値を出力する。
[0226] また、変換回路 231は、 5ビットの準浮動小数点量子化値の準指数部 eが 001であ る場合には、下位 3ビット目(最下位ビットから数えて 3ビット目)を 1とするとともに、そ の直後の下位側の 2ビットを準仮数部 fとし、かつ、残りの上位 6ビットを 0とする 9ビット の固定小数点量子化値を出力する。
[0227] さらに、変換回路 231は、 5ビットの準浮動小数点量子化値の準指数部 eが 010で ある場合には、下位 4ビット目を 1とするとともに、その直後の下位側の 2ビットを準仮 数部 fとし、かつ、残りの 6ビットを 0とする 9ビットの固定小数点量子化値を出力する。
[0228] 以下、同様に、変換回路 231は、準指数部力 ^で表され、準仮数部が fC表される 5 ビットの準浮動小数点量子化値に対して、下位 e+1ビット目を 1とするとともに、その直 後の下位側の 2ビットを準仮数部 fとし、かつ、残りの 6ビットを 0とする 9ビットの固定小 数点量子化値を出力する。
[0229] なお、図 20では、 5ビットの準浮動小数点量子化値と、 9ビットの固定小数点量子化 値とともに、その固定小数点量子化値が表す 10進数の数値も、図 20の左から 3番目 (一番右)の欄に示してある。
[0230] また、図 18の変換回路 232も、上述した図 18の変換回路 231と同一の表示形式の 変換 (準浮動小数点量子化値から固定小数点量子化値への変換)を行う。
[0231] 次に、図 21を参照して、図 18の変換回路 231が行う表現形式の変換の処理につ いて説明する。 [0232] 変換回路 231は、 5ビットの準浮動小数点量子化値が入力されると、その準浮動小 数点量子化値の上位 3ビットである準指数部 eに基づき、 9ビットのビット列に対して、 準浮動小数点量子化値の下位 2ビットである準仮数部 f ^挿入する位置 (準仮数部 f に置換するビット)を決定し、その位置に、準仮数部 挿入した 9ビットのビット列を、 9ビットの固定小数点量子化値として出力する。
[0233] 即ち、変換回路 231は、図 21に示すように、準指数部 eとしての 3ビットで表される 値 000, 001, 010, 011, 100, 101, 110, 111に対して、 2ビッ卜 xy力 S未定の 9ビッ 卜のビッ卜列 OOOOOOOxy, 000000 lxy, 00000 lxyO, OOOOlxyOO, OOOlxyOOO , OOlxyOOOO, OlxyOOOOO, lxyOOOOOOを対応付けて記'隐している。
[0234] そして、準浮動小数点量子化値の下位 2ビットである準仮数部 fの左から 1番目のビ ットと 2番目のビットを、それぞれ、 Xと yと表すこととすると、変換回路 231は、 5ビットの 準浮動小数点量子化値の上位 3ビットである準指数部 eに対応付けられている 9ビット のビット列を選択し、その 9ビットのビット列の未定の 2ビット xyに対して、準仮数部 fの 左から 1番目のビット Xと 2番目のビット yをセットすることにより、 9ビットのビット列を得 て、その 9ビットのビット列を、 9ビットの固定小数点量子化値として出力する。
[0235] 従って、変換回路 231に対して、例えば、 5ビットの準浮動小数点量子化値 10001 が入力された場合、その上位 3ビットである準指数部 eは 100であるから、変換回路 2 31は、 100に対応付けられて!/、る 9ビットのビット列 OOOlxyOOOを選択する。
[0236] そして、 5ビットの準浮動小数点量子化値 10001の下位 2ビットである準仮数部 fは 01であるから、変換回路 231は、選択した 9ビットのビット列 OOOlxyOOOの未定の 2 ビット xyに対して、準仮数部 fCある 01の左から 1番目のビット 0と 2番目のビット 1をセ ットすること〖こより、 9ビットのビット列 000101000を得て、 9ビットの固定小数点量子 化値として出力する。
[0237] なお、 5ビットの準浮動小数点量子化値の最小の量子化幅と、 9ビットの固定小数 点量子化値の量子化幅とが同一であれば、図 21で説明したように、変換回路 231に おいて、浮動小数点量子化値の準仮数部 f (であるビット列)をそのまま使用して、そ の準浮動小数点量子化値を固定小数点量子化値に変換することができるので、変 換回路 231は比較的簡単に構成することができ、従って、その回路規模もそれほど 大きくはならない。
[0238] 次に、図 22を参照して、図 18の変換回路 233についてさらに説明する。
[0239] 図 22は、変換回路 233に入力される(与えられる) 9ビットの固定小数点量子化値と
、変換回路 233が出力する 5ビットの準浮動小数点量子化値との関係を示している。
[0240] 変換回路 233は、上述したように、演算回路 1126 (図 18)から供給される 9ビットの 高精度量子化値でもある固定小数点量子化値を、 5ビットの準浮動小数点量子化値 に変換する、数値の表現形式の変換を行う。
[0241] 即ち、変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値を、図 2
2右の表に示す 5ビットの準浮動小数点量子化値に変換して出力する。
[0242] ここで、図 22左の表には、 9ビットの固定小数点量子化値を、その固定小数点量子 化値が表す 10進数の数値とともに示してある。
[0243] また、図 22右の表は、図 20と同一であり、従って、 5ビットの準浮動小数点量子化 値と、 9ビットの固定小数点量子化値との対応関係を示して 、る。
[0244] 変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値の入力に対し て、その固定小数点量子化値が表す 10進数に近い 10進数、即ち、例えば、図 22左 の表に示す 9ビットの固定小数点量子化値が表す 10進数以下の最大の 10進数を表 す図 22右の表の固定小数点量子化値に対応する 5ビットの準浮動小数点量子化値 を出力する。
[0245] 具体的には、変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値 の入力に対して、その 9ビットの固定小数点量子化値の上位 6ビットが 0である場合に は、図 22右の表において、その 9ビットの固定小数点量子化値に対応する 5ビットの 準浮動小数点量子化値を出力する。
[0246] また、変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値の入力 に対して、その 9ビットの固定小数点量子化値の上位 5ビットが 0であり、上位 6ビット 目(最上位ビットから 6ビット目)が 1である場合には、図 22右の表において、その 9ビ ットの固定小数点量子化値の下位 1ビット (最下位ビット)を 0に切り捨てた固定小数 点量子化値に対応する 5ビットの準浮動小数点量子化値を出力する。
[0247] さらに、変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値の入 力に対して、その 9ビットの固定小数点量子化値の上位 4ビットが 0であり、上位 5ビッ ト目が 1である場合には、図 22右の表において、その 9ビットの固定小数点量子化値 の下位 2ビットを 0に切り捨てた固定小数点量子化値に対応する 5ビットの準浮動小 数点量子化値を出力する。
[0248] また、変換回路 233は、図 22左の表に示す 9ビットの固定小数点量子化値の入力 に対して、その 9ビットの固定小数点量子化値の上位 3ビットが 0であり、上位 4ビット 目が 1である場合には、図 22右の表において、その 9ビットの固定小数点量子化値 の下位 3ビットを 0に切り捨てた固定小数点量子化値に対応する 5ビットの準浮動小 数点量子化値を出力する。
[0249] 変換回路 233は、上位 2ビットが 0で、上位 3ビット目が 1の固定小数点量子化値や 、上位 1ビットが 0で、上位 2ビット目が 1の固定小数点量子化値の入力に対しても、上 述の場合と同様の 5ビットの準浮動小数点量子化値を出力する。
[0250] そして、変換回路 233は、上位 1ビット (最上位ビット)が 1の固定小数点量子化値の 入力に対して、図 22右の表において、その 9ビットの固定小数点量子化値の下位 6 ビットを 0に切り捨てた固定小数点量子化値に対応する 5ビットの準浮動小数点量子 化値を出力する。
[0251] 次に、図 23を参照して、図 18の変換回路 233が行う表現形式の変換の処理につ いて説明する。
[0252] 変換回路 233は、 9ビットの固定小数点量子化値が入力されると、その 9ビットの固 定小数点量子化値の、最も上位ビット側にある 1の位置を検出し、その位置に基づき 、 3ビットの準指数部 eと、 2ビットの準仮数部 fとを求めて、その 3ビットの準指数部 eと、 2ビットの準仮数部 fとを、最上位ビット側から順次並べた 5ビットのビット列を、 5ビット の準浮動小数点量子化値として出力する。
[0253] 即ち、 9ビットの固定小数点量子化値を INと表し、さらに、 9ビットの固定小数点量子 化値 INの最下位ビットから数えて a+1ビット目を、 IN[a]と表す。但し、ここでは、 a=0,l, - • · ,8である。さらに、 9ビットの固定小数点量子化値 INの最下位ビットから数えて a+1ビ ット目力も b+1ビット目までのビット列を、 IN[a:b]と表す。但し、ここでは、 b=0,l, · · · ,8で あり、また、 a〉bであるとする。 [0254] 変換回路 233は、図 23に示すように、 9ビットの固定小数点量子化値 INのうちのビ ッ HN[8] (最上位ビット)力 1になっている場合、指数部 eを 111とするとともに、 9ビッ トの固定小数点量子化値 INのうちの IN[7:6]の 2ビットを仮数部 fとする。
[0255] また、変換回路 233は、 9ビットの固定小数点量子化値 INのうちのビット IN[8]が 0で
、ビット IN[7]力 1になっている場合、指数部 eを 110とするとともに、 9ビットの固定小数 点量子化値 INのうちの IN[6:5]の 2ビットを仮数部 fとする。
[0256] さらに、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 2ビット IN[8:7] 力 SOで、ビット IN[6]カ^になっている場合、指数部 eを 101とするとともに、 9ビットの固 定小数点量子化値 INのうちの IN[5 :4]の 2ビットを仮数部 fとする。
[0257] また、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 3ビット IN[8:6]が
0で、ビット IN[5]が 1になっている場合、指数部 eを 100とするとともに、 9ビットの固定 小数点量子化値 INのうちの IN[4:3]の 2ビットを仮数部 fとする。
[0258] さらに、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 4ビット IN[8:5] 力^で、ビット IN[4]カ^になっている場合、指数部 eを 011とするとともに、 9ビットの固 定小数点量子化値 INのうちの IN[3 :2]の 2ビットを仮数部 fとする。
[0259] また、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 5ビット IN[8:4]が 0 で、ビット IN[3]が 1になっている場合、指数部 eを 010とするととも〖こ、 9ビットの固定小 数点量子化値 INのうちの IN[2:1]の 2ビットを仮数部 fとする。
[0260] さらに、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 6ビット IN[8:3] 力^で、ビット IN[2]が 1になっている場合、指数部 eを 001とするとともに、 9ビットの固 定小数点量子化値 INのうちの IN[1 :0]の 2ビットを仮数部 fとする。
[0261] また、変換回路 233は、 9ビットの固定小数点量子化値 INのうちの 7ビット IN[8:2]が 0 になっている場合、指数部 eを 000とするとともに、 9ビットの固定小数点量子化値 IN のうちの IN[1:0]の 2ビットを仮数部 fとする。
[0262] そして、変換回路 233は、準指数部 eを上位 3ビットとするとともに、準仮数部 下位
2ビットとする 5ビットのビット列を、 5ビットの準浮動小数点量子化値として出力する。
[0263] 従って、変換回路 233に対して、例えば、 9ビットの固定小数点量子化値 0000110
00が入力された場合、その 9ビットの固定小数点量子化値 INについては、その 4ビッ ト IN[8:5]が 0で、ビット IN[4]が 1になっているので、変換回路 233は、指数部 eを 011と するとともに、 9ビットの固定小数点量子化値 INのうちの IN[3:2]の 2ビット 10を仮数部 f とする。そして、変換回路 233は、準指数部 eである 011を上位 3ビットとするとともに、 準仮数部 fCある 10を下位 2ビットとする 5ビットのビット列 01110を、 5ビットの準浮動 小数点量子化値として出力する。
[0264] なお、 5ビットの準浮動小数点量子化値の最小の量子化幅と、 9ビットの固定小数 点量子化値の量子化幅とが同一であれば、図 23で説明したように、変換回路 233に おいて、固定小数点量子化値の一部のビット列をそのまま準仮数部 fに使用して、そ の固定小数点量子化値を準浮動小数点量子化値に変換することができるので、変 換回路 233は比較的簡単に構成することができ、従って、その回路規模もそれほど 大きくはならない。
[0265] 次に、図 24を参照して、図 18の LUT228についてさらに説明する。
[0266] LUT221には、図 24右の表に示す 5ビットの準浮動小数点量子化値が供給される ここで、図 24右の表には、 5ビットの準浮動小数点量子化値としてのビット列とともに、 その準浮動小数点量子化値に対応する固定小数点量子化値としての 9ビットと、そ の 9ビットが表す 10進数の数値も示してある。
[0267] LUT221は、 5ビットの準浮動小数点量子化値に対して、その準浮動小数点量子 化値が表す数値 yを入力として式 (7)における逆関数 φ— 1 (∑ φ (|ν|))の演算を行った 結果得られる数値 φ _1(y)を表す 5ビットの固定小数点量子化値を出力する。
[0268] 即ち、図 24左の表は、 LUT228が出力する 5ビットの固定小数点量子化値を示して いる。なお、図 24左の表では、 5ビットの固定小数点量子化値としてのビット列ととも に、そのビット列が表す 10進数の数値も示してある。
[0269] 図 19で説明したように、 5ビットの固定小数点量子化値が表す 10進数の数値の範 囲は、 0乃至 31であるのに対して、 5ビットの準浮動小数点量子化値(に対応する 9ビ ットの固定小数点量子化値)が表す 10進数の数値の範囲は、 0乃至 448である。ま た、 9ビットの固定小数点量子化値が表す 10進数の範囲は、 0乃至 511である。従つ て、 5ビットの準浮動小数点量子化値は、 5ビットの固定小数点量子化値よりも広い、 9ビットの固定小数点量子化値と同程度のダイナミックレンジの数値を表すことができ る。
[0270] さらに、本実施の形態では、上述したように、 5ビットの準浮動小数点量子化値の最 小の量子化幅が、例えば、 9ビットの固定小数点量子化値でもある高精度量子化値 の量子化幅以下になっており、従って、 5ビットの準浮動小数点量子化値によれば、 9ビットの高精度量子化値と同様に、引数 yが数値 0付近である場合に急峻に変化す る逆関数 Φ— )の引数 yとして、 0付近の数値を精度良く表すことができる。
[0271] 即ち、 5ビットの準浮動小数点量子化値によれば、 5ビットの固定小数点量子化値( 通常量子化値)よりも広い、 9ビットの固定小数点量子化値 (高精度量子化値)と同程 度のダイナミックレンジの数値を表すことができ、かつ、 9ビットの固定小数点量子化 値 (高精度量子化値)と同様に (あるいは、それ以上に)、 0付近の数値を精度良く表 すことができる。
[0272] 以上のように、 LUT221は、ある程度の大きな数値以上の引数 xに対して 0付近の値 となる非線形関数 Φ (X)の演算結果として、 0付近の数値を精度良く表す 5ビットの準 浮動小数点量子化値を出力する。
[0273] さらに、 LUT228は、逆関数 φ— ∑ φ (|ν.|))の引数となる積算値∑ φ (|ν|)として入力 される、 0付近の数値を精度良く表す 5ビットの浮動小数点量子化値に対して、逆関 数 φ— ∑ φ (|ν |))の演算結果を、 5ビットの通常量子化値でもある固定小数点量子化 値で出力する。
[0274] 従って、 5ビットの準浮動小数点量子化値によれば、ある程度の大きな数値以上の 引数 Xに対する非線形関数 φ Gの演算結果である 0付近の数値を精度良く表すこと ができ、かつ、逆関数 Φ— ∑ Φ (|ν|))の引数となる積算値∑ Φ (|ν が、 0付近の数値 であっても、その数値を精度良く表すことができるので、積算値∑ φ (|ν|)が数値 0付 近の値である場合であっても、その積算値∑ φ (|ν|)が僅かに異なるごとに応じて異な る、精度の良い逆関数 Φ— ∑ φ (|ν|))の演算結果が得られることになる。そして、その 結果、 LDPC符号の復号を精度良く行うことができる。
[0275] さらに、 LUT221および LUT228については、その入力と出力のいずれも 5ビットと なるので、必要な容量は、 25 Χ 5ビットとなる。従って、 LUT221に必要とされる、回路 規模に比例する容量は、対応する図 14の LUT1121の容量 (25 X 9ビット)の 5Z9で 済む。また、 LUT228〖こ必要とされる、回路規模に比例する容量は、対応する図 14 の LUT1128の容量(29 X 5ビット)の 1/24で済む。
[0276] 従って、 LUT221および LUT228を小型に構成することができ、その結果、チェック ノード計算器 181 (図 18)、ひいては、図 17の復号装置の大規模ィ匕を抑制することが できる。
[0277] 次に、図 25のフローチャートを参照して、図 18のチェックノード計算器 181の処理 について説明する。
[0278] チェックノード計算器 181では、検査行列 Hの各列に対応するバリアブルノードから の 6ビットのメッセージ D101 (バリアブルノードメッセージ V )力 枝用メモリ 100 (図 17) から 1つずつ読み込まれ、その下位 5ビットである絶対値 D122(|v|)が LUT221に、そ の最上位ビットである符号ビット D121が EXOR回路 129と FIFOメモリ 133にそれぞれ 供給される。また、チ ックノード計算器 181には、制御部 105 (図 17)から制御信号 D106が供給され、その制御信号 D106は、セレクタ 1124とセレクタ 131に供給される
[0279] LUT221は、ステップ S21において、そこに供給される 5ビットの絶対値 D122(|v |)を 入力として、その 5ビットの絶対値 D122(|v |)に一致する 5ビットの通常量子化値でもあ る固定小数点量子化値 (図 19左の表)に対応付けられている、非線形関数 φ (|ν |)の 演算結果を表す 9ビットの準浮動小数点量子化値 F1123を読み出し、変換回路 231 と FIFOメモリ 1127に出力する。
[0280] 即ち、 LUT221では、ステップ S21において、等価的に、固定小数点量子化値で表 される絶対値 D122(|v|)を入力として、式 (7)における非線形関数 φ (|v|)を演算する処 理と、その演算結果を表す固定小数点量子化値を準浮動小数点量子化値に変換す る、表現形式の変換とが行われる。
[0281] 変換回路 231は、ステップ S22において、 LUT221からの非線形関数 φ (|v|)の演 算結果を表す 5ビットの準浮動小数点量子化値 F1123を、図 20で説明したように、 9 ビットの高精度量子化値でもある固定小数点量子化値に変換する、表示形式の変換 を行い、その結果得られる 9ビットの固定小数点量子化値 D1123を、演算器 1122に 出力する。
[0282] その後、ステップ S23において、演算器 1122は、 9ビットの固定小数点量子化値が 表す非線形関数の演算結果 D1123 ( φ (|v |))とレジスタ 1123に格納されて 、る 13ビ ットの値 D1124とを加算することにより、演算結果 D1123を積算し、その結果得られる 1 3ビットの積算値をレジスタ 1123に再格納する。なお、検査行列 Hの 1行に亘る全て の枝力ものメッセージ D101の絶対値 D122(|v|)に対する演算結果が積算された場合、 レジスタ 1123はリセットされる。
[0283] ここで、演算器 1122およびレジスタ 1123では、変換回路 231から供給される 9ビッ トの固定小数点量子化値が表す演算結果 01123 ( φ (|ν|))が、最大で、 FIFOメモリ 11 27における最大の遅延回数分、即ち、検査行列 Hの行の最大の重み分の回数だけ 積算される。いま、図 9の検査行列 Hの行の最大の重みは 9であり、従って、演算器 1 122およびレジスタ 1123では、 9ビットの固定小数点量子化値が、最大で、 9回積算 される(9ビットの固定小数点量子化値の 9個分の積算が行われる)。このため、演算 器 1122の出力以降においては、 9ビットの固定小数点量子化値を 9回積算した値を 表すことができるように、接続線のビット数は、 LUT221が出力する 9ビットの固定小数 点量子化値 D1123よりも 4ビット(9 (回)を表すことができる最小のビット数)だけ多い 1 3ビットになっている。
[0284] 検査行列 Hの 1行に亘るメッセージ D101 (バリアブルノードメッセージ v.)が枝用メモリ 100 (図 17から) 1つずつ読み込まれ、レジスタ 1123に 1行分の演算結果 D1123が積 算された積算値が格納された場合、制御部 105から供給される制御信号 D106は、 0 力 1に変化する。例えば、検査行列 Hの行の重み (row weight)が「9」である場合、 制御信号 D106は、 1から 8クロック目までは、「0」となり、 9クロック目では「1」となる。
[0285] 制御信号 D106が「1」の場合、セレクタ 1124は、ステップ S24において、レジスタ 11 23に格納されている値、即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D1 01 (バリアブルノードメッセージ V)から求められた φ (|v|)が積算された 13ビットの積算 値 D1124 (i= lから i=dまでの∑ φ (|ν |))を選択し、 13ビットの値 D1125として、レジス タ 1125〖こ出力して格納させる。レジスタ 1125は、格納している値 D1125を、 13ビット の値 D1126として、セレクタ 1124と演算器 1126に供給する。制御信号 D106が「0」の 場合、セレクタ 1124は、レジスタ 1125から供給された値 D1126を選択し、レジスタ 11 25に出力して再格納させる。即ち、検査行列 Hの 1行に亘る全ての枝からのメッセ一 ジ D101 (バリアブルノードメッセージ V )から求められた φ (|v |)が積算されるまで、レジ スタ 1125は、前回積算された φ (|ν |)を、セレクタ 1124と演算器 1126に供給する。
[0286] 一方、 FIFOメモリ 1127は、レジスタ 1125から新たな値 D1126 (i= lから i=dまでの ∑ φ (|ν|))が出力されるまでの間、 LUT221が出力した非線形関数の演算結果 D112 3 ( φ (|ν|))を表す 5ビットの準浮動小数点量子化値を遅延し、レジスタ 1125から新た な値 D1126 (i= lから i=dまでの∑ φ (|ν |))が出力されると、遅延後の 5ビットの準浮 動小数点量子化値 F1127を、変換回路 232に供給する。
[0287] 変換回路 232は、変換回路 231と同様に、 FIF01127からの、非線形関数 φ (|ν|) の演算結果を表す 5ビットの準浮動小数点量子化値 F1127を、 9ビットの高精度量子 化値でもある固定小数点量子化値に変換する、表示形式の変換を行い、その結果 得られる 9ビットの固定小数点量子化値 D1127を、演算器 1126に供給する。
[0288] 演算器 1126は、ステップ S25において、レジスタ 1125から供給された 13ビットの 値 D1126から、 FIFOメモリ 1127から出力されて変換回路 232で表現形式か変換され た 9ビットの値 D1127を減算し(レジスタ 1125から供給された 13ビットの値 D1126に、 9 ビットの値 D1127に- 1を乗算して得られる値を積算し)、その減算結果を表す 9ビット の高精度量子化値でもある固定小数点量子化値 D1128を、変換回路 233に供給す る。
[0289] 即ち、演算器 1126は、検査行列 Hの 1行に亘る全ての枝からのメッセージ D101 (バ リアブルノードメッセージ V )力も求められた φ (|v |)の積算値から、チェックノードメッセ ージ uを求めたい枝からのメッセージ D101 (バリアブルノードメッセージ V )力も求めら れた φ (|ν |)を減算して、その減算値 (i= lから i=d — 1までの∑ φ (|ν |))を表す 9ビッ トの固定小数点量子化値 D1128を、変換回路 233に供給する。
[0290] なお、レジスタ 1125から供給される 13ビットの値 D1126から、 FIFOメモリ 1127力 供給される 9ビットの値 D1127を減算した減算結果としての量子化値が、 9ビットの固 定小数点量子化値 D1128で表すことができる最大値を越える場合には、演算器 112 6は、減算結果を、 9ビットの固定小数点量子化値で表すことができる最大値にクリツ ビングして出力する。
[0291] 変換回路 233は、ステップ S26において、演算器 1126からの 9ビットの固定小数点 量子化値 D1128を、図 22で説明したように、 5ビットの準浮動小数点量子化値に変換 する、表示形式の変換を行い、その結果得られる 5ビットの準浮動小数点量子化値 F 1128を、 LUT228に供給する。
[0292] LUT228は、ステップ S27にお!/、て、変換回路 233から供給される、式(7)の積算 値∑ φ (|ν|)を表す 5ビットの準浮動小数点量子化値 F1128を入力として、その準浮動 小数点量子化値 F1128に対応付けられている、逆関数 φ— ∑ φ (|ν |))の演算結果を 表す 5ビットの通常量子化値でもある固定小数点量子化値 D1129 ( _1(∑ (| |)》を 読み出して出力する。
[0293] 即ち、 LUT228では、ステップ S27において、等価的に、準浮動小数点量子化値で 表される式 (7)の積算値∑ φ (|ν;|)を入力として、式 (7)における逆関数 φ—
Figure imgf000051_0001
演算する処理と、その演算結果を表す浮動小数点量子化値を固定小数点量子化値 に変換する、表現形式の変換とが行われる。
[0294] 以上の処理と並行して、 EXOR回路 129、レジスタ 130、セレクタ 131、レジスタ 132 、 FIFOメモリ 133、 EXOR回路 134では、図 11のチェックノード計算器 101と同様の 処理が行われ、これにより、 EXOR回路 134は、検査行列 Hの 1行に亘る全ての枝か らのメッセージ D101 (バリアブルノードメッセージ V)の符号ビット D121 (sign(lvj))の乗 算値を、チェックノードメッセージ uを求めたい枝からのメッセージ D101の符号ビット D 121 (Sign(|V |))で除算して、その除算値 (i= lから i=d — 1までの nsign(|V |))を除算 値 D135として出力する。
[0295] そして、チェックノード計算器 181では、 LUT228から出力された 5ビットの固定小数 点量子化値 D1129を下位 5ビットとするとともに、 EXOR回路 134から出力された 1ビッ トの除算値 D135を最上位ビット (符号ビット)とする合計 6ビットの通常量子化値でもあ る固定小数点量子化値で表されるメッセージ D102 (チェックノードメッセージ u)が出 力される。
[0296] 以上のように、チェックノード計算器 181では、図 14のチェックノード計算器 171と 同様に、非線形関数 φ Gの演算後からその逆関数 φ _1ωの演算までの処理では、 高精度量子化値でもある 9ビットの固定小数点量子化値、または、その 9ビットの固定 小数点量子化値と同程度の精度で 0付近の数値を表し、かつ、同程度のダイナミック レンジを有する 5ビットの準浮動小数点量子化値を使用し、他の処理では、通常量子 化値でもある固定小数点量子化値を使用するので、 LDPC符号の復号を、復号装置 の大規模ィ匕を抑えつつ(図 17の枝用メモリ 100と 102、受信用メモリ 104の容量を増 加させずに)精度良く行うことができる。
[0297] さらに、チェックノード計算器 181では、 LUT221において、 5ビットの固定小数点量 子化値を入力として、非線形関数 φ (χ)の演算の結果を、 5ビットの準浮動小数点量 子化値で出力し、かつ、 LUT228において、 5ビットの準浮動小数点量子化値を入力 として、逆関数 Φ— )の演算の結果を、 5ビットの固定小数点量子化値で出力するの で、かかる点からも、 LDPC符号の復号を、復号装置の大規模化を抑えつつ (容量の 小さい LUT221および 228を用いて)精度良く行うことができる。
[0298] なお、チェックノード計算器 181においては、図 14のチェックノード計算器 171と比 較して、変換回路 231乃至 233が新たに必要となる。但し、準浮動小数点量子化値 の量子化幅の最小値が、高精度量子化値でもある固定小数点量子化値の量子化幅 と同程度であれば、変換回路 231乃至 233は、上述したように簡単に構成することが でき、変換回路 231乃至 233を新たに設けることによる回路規模の増分は、それほど 大きくはない。
[0299] 一方、上述したように、 LUT221に必要とされる、回路規模に比例する容量は、対 応する図 14の LUT1121の 5Z9で済み、 LUT228に必要とされる、回路規模に比例 する容量は、対応する図 14の LUT1128の 1/24で済むため、 LUT221および LUT2 28を採用することによる回路規模の削減量は、極めて大きい。
[0300] 従って、 LUT221および LUT228を採用した場合には、変換回路 231乃至 233を 新たに設けることによる回路規模の増分を加味しても、チェックノード計算器 181の回 路規模を削減することができる。
[0301] 次に、図 26は、本発明を適用した、 LDPC符号を復号する復号装置の第 2実施の 形態の構成例を示して ヽる。
[0302] 図 26の復号装置は、 LDPC符号の復号を、復号装置の大規模化を抑えつつ精度 良く行い、さらに、図 17の復号装置よりも、復号装置に必要となるメモリの記憶容量を 低減することができるようになって ヽる。
[0303] なお、図 26の復号装置では、例えば、上述の図 17の復号装置と同様に、前述の 図 9に示した検査行列 Hで表される LDPC符号 (符号ィ匕率 2/3、符号長 108)の復号が 行われる。
[0304] 図 26において、復号装置は、復号途中結果格納用メモリ 410、スィッチ 411、準チ エックノード計算器 412、枝用メモリ 413、準ノ リアブルノード計算器 415、受信用メモ リ 416、および制御部 417から構成され、図 17の復号装置と同様のチェックノード演 算とバリアブルノード演算とを等価的に繰り返し行うことにより、 LDPC符号を復号する
[0305] ここで、図 26の復号装置の各部について説明する前に、上述の図 18と、図 27乃至 図 29を用いて、図 26の準チェックノード計算器 412および準ノリアブルノード計算器 415と、図 17のチェックノード計算器 181およびバリアブルノード計算器 103との関 係について説明する。
[0306] 図 18は、上述したように、チェックノード演算を行う図 17のチェックノード計算器 18 1の構成例を示している。
[0307] 図 27は、ノ リアブルノード演算を行う図 17のノ リアブルノード計算器 103の構成例 を示している。なお、図 17のノリアブルノード計算器 103は、図 10のバリアブルノー ド計算器 103と同一であり、従って、図 27に示した図 17のバリアブルノード計算器 10 3は、図 12に示した図 10のバリアブルノード計算器 103と同一構成となっている。
[0308] 但し、図 27では、図 12の演算器 156を、 2つの演算器 156と 156に分けて図示し
1 2
てある。即ち、図 12の演算器 156は、前述したように、レジスタ 154から供給された値 D152から、 FIFOメモリ 155から供給された値 D153を減算し、さらに、その減算値に、 受信用メモリ 104から供給された受信データ D104を加算して、その結果得られる 6ビ ットの値をメッセージ D105 (バリアブルノードメッセージ V )として出力するから、演算器 156力 S行う処理は、レジスタ 154から供給された値 D152を対象に、 FIFOメモリ 155力 ら供給された値 D153を減算する減算処理と、受信用メモリ 104から供給された受信 データ D104を加算する加算処理とに分けることができる。 [0309] そこで、図 27では、図 12の演算器 156を、加算処理を行う演算器 156と、減算処
1 理を行う演算器 156とに分けて図示してある。
2
[0310] 一方、図 28は、図 26の準チェックノード計算器 412の構成例を示しており、図 29は 、図 26の準ノ リアブルノード計算器 415の構成例を示している。
[0311] 図 26の復号装置では、準チェックノード計算器 412がチェックノード演算そのもの を行うとともに、準ノ リアブルノード計算器 415力 Sバリアブルノード演算そのものを行 k
うのではなく、準チェックノード計算器 412がチェックノード演算とバリアブルノード演 算の一部を行い、準ノ リアブルノード計算器 415がノ リアブルノード演算の他の一部 を行う。
[0312] 即ち、図 28の準チェックノード計算器 412は、ブロック A'とブロック B'から構成され ている。ブロック A,は、図 18のチェックノード計算器 181のチェックノード演算を行う ブロック Aに対応している。また、ブロック B'は、図 27のバリアブルノード計算器 103 の一部である、検査行列 Hの各列の全ての枝に対応するチェックノードメッセージ の 積算値から、ノ リアブルノードメッセージ Vを求めた 、枝に対応するチェックノードメッ セージ uを減算するブロック Bに対応して 、る。
[0313] 一方、図 29の準バリアブルノード計算器 415は、ブロック C'から構成されている。ブ ロック C'は、図 27のバリアブルノード計算器 103の他の一部である、検査行列 Hの各 列の枝に対応するチェックノードメッセージ uを積算し、その積算値に受信データ uを 加算するブロック Cに対応して 、る。
[0314] つまり、図 17のチェックノード計算器 181は、図 18に示すように、チェックノード演 算そのものを行うブロック Aで構成される。また、図 17のバリアブルノード計算器 103 は、図 27に示すように、検査行列 Hの各列の全ての枝に対応するチェックノードメッ セージ uの積算値から、ノ リアブルノードメッセージ Vを求めた!/、枝に対応するチエツ クノードメッセージ uを減算する、ノ リアブルノード演算の一部を行うブロック Bと、検査 行列 Hの各列の枝に対応するチェックノードメッセージ uを積算し、その積算値に受 信データ uを加算する、バリアブルノード演算の他の一部を行うブロック Cとに分ける ことができる。
[0315] 図 28の準チェックノード計算器 412は、図 18のブロック Aに対応するブロック A'と、 図 27のブロック Bに対応するブロック B'から構成され、ブロック において、バリアブ ルノード演算の一部を行うとともに、ブロック Aにおいて、チェックノード演算そのもの を行う。ここで、準チェックノード計算器 412で行われる、ノ リアブルノード演算の一部 とチェックノード演算を、以下、適宜、準チェックノード演算という。
[0316] 一方、図 29の準バリアブルノード計算器 415は、図 27のブロック Cに対応するブロ ック C,で構成され、ブロック C,において、ノ リアブルノード演算の他の一部を行う。こ こで、準ノ リアブルノード計算器 415で行われる、ノ リアブルノード演算の他の一部を 、以下、適宜、準ノ リアブルノード演算という。
[0317] 図 26の復号装置では、準チェックノード計算器 412が、復号途中結果格納用メモリ 410の記憶内容等を用いて、準チェックノード演算 (バリアブルノード演算の一部とチ エックノード演算)を行い、その結果得られるチェックノードメッセージ uを、枝用メモリ 413に供給して記憶させる。さらに、準ノ リアブルノード計算器 415が、枝用メモリ 41 3に記憶されたチェックノードメッセージ u等を用いて、準バリアブルノード演算 (バリア ブルノード演算の他の一部)を行い、その結果得られる復号途中結果 Vを、復号途中 結果格納用メモリ 410に供給して記憶させる。
[0318] 従って、図 26の復号装置では、準チェックノード計算器 412による準チェックノード 演算と、準ノ リアブルノード計算器 415による準ノ リアブルノード演算とが交互に行わ れることにより、結局、チェックノード演算とバリアブルノード演算とが交互に行われ、 これにより、 LDPC符号の復号が行われる。
[0319] なお、図 27のノ リアブルノード計算器 103では、ブロック Cにおいて、検査行列 Hの 各列の枝に対応するチェックノードメッセージ uを積算し、その積算値に受信データ u j 0 を加算する加算処理を行い、ブロック Bにおいて、その加算処理の結果得られる値( 検査行列 Hの各列の全ての枝に対応するチェックノードメッセージ uの積算値と、受 信データ uとの加算値)からバリアブルノードメッセージ Vを、求めたい枝からのチエツ クノードメッセージ uを減算する減算処理を行うために、ノ リアブルノードメッセージ V を求めたい枝からのチェックノードメッセージ uを、検査行列 Hの各列の枝に対応する チェックノードメッセージ uの積算が終了するまで遅延する FIFOメモリ 155が必要とな る。 [0320] 一方、図 28の準チェックノード計算器 412のブロック B'では、対応するブロック B ( 図 27)と同様に、検査行列 Hの各列の全ての枝に対応するチェックノードメッセージ u の積算値から、ノ リアブルノードメッセージ Vを求めた!/、枝からのチェックノードメッセ ージ uを減算する減算処理が行われる力 図 26の復号装置では、チェックノードメッ セージ uが枝用メモリ 413に記憶されており、その枝用メモリ 413から、準チェックノー ド計算器 412に対して、ノ リアブルノードメッセージ Vを求めたい枝からのチェックノー ドメッセージ u (メッセージ D411)が供給されるようになっている。
[0321] 従って、図 26の復号装置では、ノ リアブルノードメッセージ Vを求めたい枝からのチ エックノードメッセージ uを、検査行列 Hの各列の枝に対応するチェックノードメッセ一 ジ uの積算が終了するまで遅延する FIFOメモリ 155 (図 27)が必要ない。よって、図 2 6の復号装置は、 FIFOメモリ 155の分だけ、図 17の復号装置よりも小型に構成するこ とがでさる。
[0322] 次に、図 26の準チェックノード計算器 412 (図 28)で行われる準チェックノード演算 と、準ノ リアブルノード計算器 415 (図 29)で行われる準ノ リアブルノード演算につい て、式を用いて説明する。
[0323] 準チヱックノード計算器 412は、次の式 (8)の演算 (バリアブルノード演算の一部)と 、上述した式 (7)の演算 (チヱックノード演算)とを、準チヱックノード演算として行い、 その準チェックノード演算の結果であるチェックノードメッセージ uを、枝用メモリ 413 に供給して格納 (記憶)させる。また、準バリアブルノード計算器 415は、上述した式( 5)の演算 (バリアブルノード演算の他の一部)を、準バリアブルノード演算として行!ヽ 、その準バリアブルノード演算の結果である復号途中結果 Vを、復号途中結果格納用 メモリ 410に供給して格納させる。
[0324] [数 8]
V j— V "~ Ucjv
•••(8)
[0325] なお、式(8)の u は、ノ リアブルノード演算によって、検査行列 Hの i列のバリアブル
dv
ノードメッセージ Vを求めようとする枝からのチヱックノード演算(準チヱックノード演算) の結果を表している。即ち、 u は、ノ リアブルノード演算によってバリアブルノードメッ セージ v;を求めたい枝に対応するチェックノードメッセージ ^ (枝からのチェックノードメ ッセージ U )である。
[0326] ここで、上述した式(5)の演算の結果得られる復号途中結果 Vは、受信データ uと
0i 検査行列 Hの i列の各行の 1に対応するすべての枝からのチェックノード演算の結果 得られたチェックノードメッセージ uとを加算したものであるので、式 (8)にしたがい、 そのような復号途中結果 Vから、検査行列 Hの i列の、各行の 1に対応する枝からのチ エックノード演算によって求められたチェックノードメッセージ uのうち、ノ リアブルノー ドメッセージ Vを求めようとする枝からのチェックノードメッセージ u を減算することによ
i dv り、各枝のバリアブルノードメッセージ Vを求めることができる。
[0327] 従って、ノ リアブルノードメッセージ Vを求める式(1)のバリアブルノード演算は、式(
5)の演算と、式 (8)の演算とに分けることができる。
[0328] 一方、チェックノードメッセージ uを求めるチェックノード演算は、式(7)で表される。
[0329] 従って、式(1)のバリアブルノード演算と、式(7)のチェックノード演算との処理は、 式(5)の演算と、式 (8)および式(7)の演算との処理に等価である。
[0330] そこで、図 26の復号装置では、準チェックノード計算器 412において、式(8)およ び式 (7)の演算 (準チヱックノード演算)を行うとともに、準ノ リアブルノード計算器 41
5において、式(5)の演算(準バリアブルノード演算)を行い、 LDPC符号の復号が行 われる。
[0331] なお、式(5)の準バリアブルノード演算によって求められる復号途中結果 Vは、式(1 )のバリアブルノード演算の結果得られる各枝のバリアブルノードメッセージ Vに対し て、そのバリアブルノードメッセージ Vに対応する枝からのチェックノードメッセージ uを 加算したものであるから、検査行列 Hの 1列(1つのバリアブルノード)に対して、 1つだ け求められる。従って、符号長分の受信データ uに対しては、符号長分 (検査行列 H の列数)の復号途中結果 Vが求められる。
[0332] 図 26の復号装置では、準チェックノード計算器 412が、準バリアブルノード計算器 415による準ノ リアブルノード演算の結果である検査行列 Hの各列に対応する復号 途中結果 Vを用いて、準チヱックノード演算を行い、その準チヱックノード演算の結果 得られるチェックノードメッセージ (各チェックノードが各枝に出力するチェックノードメ ッセージ) Ujを、枝用メモリ 413に格納する。
[0333] 従って、枝用メモリ 413に必要な記憶容量は、チェックノード演算の結果を格納する 図 17の枝用メモリ 102と同様に、検査行列 Hの 1の数 (全枝数)とチェックノードメッセ ージ uの量子化ビット数 (本実施の形態では、固定小数点量子化値でもある通常量 子化値のビット数)とを乗算した値となる。
[0334] 一方、準ノリアブルノード計算器 415は、準チェックノード計算器 412による準チェ ックノード演算の結果である検査行列 Hの i列の、各行の" に対応するチェックノー ドメッセージ uと受信データ uを用いて、準バリアブルノード演算を行い、その準バリ
j 0i
アプルノード演算の結果得られる i列に対応する復号途中結果 Vを、復号途中結果格 納用メモリ 410に格納する。
[0335] 従って、復号途中結果格納用メモリ 410に必要な記憶容量は、検査行列 Hの" 1"の 数より少ない検査行列 Hの列数、即ち、 LDPC符号の符号長と、復号途中結果 Vの量 子化ビット数 (本実施の形態では、固定小数点量子化値でもある通常量子化値のビ ット数)とを乗算した値となる。
[0336] 以上から、検査行列 Hにおける 1が疎らな LDPC符号を復号する図 26の復号装置 では、図 17の枝用メモリ 100に比べて、復号途中結果格納用メモリ 410の記憶容量 を削減することができ、これにより、図 26の復号装置の装置規模を小さくすることがで きる。
[0337] さらに、図 26の復号装置において、準バリアブルノード計算器 415が行う式(5)の 準バリアブルノード演算は、チヱックノード演算とバリアブルノード演算とを交互に繰り 返すことにより、 LDPC符号の繰り返し復号を行うにあたって、その LDPC符号の最終 的な復号結果を求める演算であり、従って、図 26の復号装置には、図 17の復号装 置のように、 LDPC符号の最終的な復号結果を求める式(5)の演算を行う不図示のブ ロックを設ける必要がない。従って、そのようなブロックが不要な分だけ、図 17の復号 装置に比べて、図 26の復号装置の装置規模を小さくすることができる。
[0338] 次に、図 26の復号装置の各部について詳細に説明する。
[0339] 復号途中結果格納用メモリ 410には、準バリアブルノード計算器 415から、検査行 列 Hの列ごとの、式(5)の準バリアブルノード演算の結果得られる復号途中結果 D415 (式 (5)の v)が供給され、復号途中結果格納用メモリ 410は、準バリアブルノード計算 器 415から供給される復号途中結果 D415を、順次記憶する。復号途中結果格納用メ モリ 410に記憶された、検査行列 Hの列ごとの復号途中結果 D415は、そこ力も順次 読み出され、スィッチ 411に供給される。
[0340] スィッチ 411には、復号途中結果格納用メモリ 410から復号途中結果 D415が供給 される他、受信用メモリ 416から、受信データ D417 (u )が供給される。スィッチ 411は
Oi
、制御部 417から供給される制御信号 D421にしたがって、復号途中結果格納用メモ リ 410から供給される復号途中結果 D415、または受信用メモリ 416から供給される受 信データ D417のうちのいずれか一方を選択し、復号途中結果 D411として、準チエツ クノード計算器 412に供給する。
[0341] 即ち、受信用メモリ 416に、受信データ D417が記憶された直後(受信データ D417が 記憶された後、その受信データ D417を用いた最初の準バリアブルノード演算が行わ れる前)は、その受信データ D417に対する復調途中結果 D415が、復号途中結果格 納用メモリ 410に記憶されていないため、その復調途中結果 D415を用いた準チエツ クノード演算を行うことができない。そこで、受信用メモリ 416に、受信データ D417が 記憶された直後においては、制御部 417は、受信データ D417の選択を指示する制 御信号 D421を、スィッチ 411に供給する。これにより、スィッチ 411では、受信用メモ リ 416から供給される受信データ D417が選択され、復号途中結果 D411として、準チ エックノード計算器 412に供給される。従って、この場合、準チェックノード計算器 41 2では、受信データ D417を、式 (8)の復号途中結果 Vとして用いて、準チェックノード 演算が行われる。なお、準チェックノード演算には、枝用メモリ 413に記憶されたチェ ックノードメッセージ uが使用される力 枝用メモリ 413のチェックノードメッセージ uは 、新たな受信データ D417が、受信用メモリ 416に記憶されたときに、 0に初期化される
[0342] 一方、受信用メモリ 416に、受信データ D417が記憶され、その受信データ D417を 用いた最初の準バリアブルノード演算が行われた後(、その受信データ D417に対す る最終的な復号結果が出力されるまで)は、その受信データ D417に対する復調途中 結果 D415が、復号途中結果格納用メモリ 410に記憶されているので、制御部 417は 、復号途中結果 D415の選択を指示する制御信号 D421を、スィッチ 411に供給する。 これにより、スィッチ 411では、復号途中結果格納用メモリ 410から供給される復号途 中結果 D415が選択され、復号途中結果 D411として、準チェックノード計算器 412に 供給される。従って、この場合、準チ ックノード計算器 412では、復号途中結果 D41 5を、式 (8)の復号途中結果 Vとして、準チェックノード演算が行われる。
[0343] 準チヱックノード計算器 412には、スィッチ 411から、式 (8)の復号途中結果 vとして の復号途中結果 D411が供給される他、枝用メモリ 413から、準チェックノード計算器 412による前回の準チェックノード演算の結果得られたチェックノードメッセージ u力 メッセージ D413として供給される。また、準チェックノード計算器 412には、制御部 41 7から制御信号 D420が供給される。
[0344] 準チヱックノード計算器 412は、スィッチ 411からの復号途中結果 D411 (式(8)の V) と、メッセージ D413(前回のチェックノードメッセージ u)を用いて、準チェックノード演算 を行い、即ち、式(8)の演算を行い、その後、さらに、式(7)の演算を行い、これにより 、式(7)のチェックノードメッセージ uを、検査行列 Hの枝 (値が 1になっている要素)ご とに求める。そして、準チェックノード計算器 412は、式 (8)の準チェックノード演算の 結果得られる、各枝のチェックノードメッセージ uを、メッセージ D412として、枝用メモリ 413に供給する。
[0345] 枝用メモリ 413は、準チェックノード計算器 412から供給される各枝のメッセージ D4 12を、順次記憶する。枝用メモリ 413に記憶された各枝のメッセージ D412(u)は、次の 準チェックノード演算と、次の準ノ リアブルノード演算のために、そこ力も順次読み出 され、メッセージ D413として、準チェックノード計算器 412と、準ノ リアブルノード演算 器 415に供給される。
[0346] 準ノ リアブルノード計算器 415には、枝用メモリ 413から、各枝のメッセージ D413( チェックノードメッセージ u)が供給される。また、準ノ リアブルノード計算器 415には、 受信用メモリ 416から LDPC符号の受信データ D417 (式(5)の u )が供給される。さら
0i
に、準バリアブルノード計算器 415には、制御部 417から制御信号 D422が供給され る。
[0347] 準ノ リアブルノード計算器 415は、枝用メモリ 413から、各枝のメッセージ D413(u)と 、受信用メモリ 416からの受信データ D417(u )とを用いて、式(5)の準バリアブルノー
0i
ド演算を、検査行列 Hの列ごとに行い、これにより、復号途中結果 Vを、検査行列 Hの 列ごとに求める。そして、準ノリアブルノード計算器 415は、式(5)の準ノリアブルノ ード演算の結果得られる復号途中結果 Vを、復号途中結果 D415として、復号途中結 果格納用メモリ 410に供給する。
[0348] ここで、上述したように、復号途中結果格納用メモリ 410では、準バリアブルノード計 算器 415から供給される復号途中結果 D415力 順次記憶され、さらに、その記憶さ れた復号途中結果 D415は、そこ力も順次読み出され、スィッチ 411に供給される。
[0349] 但し、準ノリアブルノード計算器 415において、最後の準ノリアブルノード演算が行 われた場合、即ち、例えば、受信用メモリ 416に記憶された受信データ D417につい て、あら力じめ決められた回数だけ、準チェックノード演算と準ノリアブルノード演算と が繰り返し行われた場合、復号途中結果格納用メモリ 410は、最後に行われた準バ リアブルノード演算の結果としての復号途中結果 D415を、受信用メモリ 416に記憶さ れた受信データ D417 (LDPC符号)の最終的な復号結果として出力する。
[0350] 受信用メモリ 416は、通信路を通して受信した受信信号 D416から計算された LDPC 符号の各ビットの 0らしさの値である、符号長分の受信 LLR (対数尤度比)を、受信デ ータ D417として記憶し、スィッチ 411と準ノリアブルノード計算器 415に供給する。
[0351] 制御部 417は、制御信号 D420を準チ ックノード計算器 412に、制御信号 D421を スィッチ 411に、制御信号 D422を準ノリアブルノード計算器 415に、それぞれ供給す ることにより、それぞれを制御する。
[0352] 以上のように構成される図 26の復号装置では、復号途中結果格納用メモリ 410、 準チェックノード計算器 412、枝用メモリ 413、準ノリアブルノード計算器 415の順で 、データが一巡することで、 1回の復号 (繰り返し復号の 1回分の処理 (チェックノード 演算とバリアブルノード演算))が行われる。図 26の復号装置では、所定の回数だけ 繰り返して復号が行われた後、準ノリアブルノード計算器 415による準ノリアブルノ ード演算の結果である復号途中結果 D415が、最終的な復号結果として出力される。
[0353] 次に、図 26の準チェックノード計算器 412と準ノリアブルノード計算器 415につい て、さらに詳述する。 [0354] まず、図 28は、図 26の準チェックノード計算器 412の構成例を示している。
[0355] 準チェックノード計算器 412には、スィッチ 411 (図 26)から、式 (8)の復号途中結 果 Vとしての復号途中結果 D411が供給されるとともに、枝用メモリ 413 (図 26)から、準 チェックノード計算器 412による前回の準チェックノード演算の結果得られたチェック ノードメッセージ u (直前に行われた準ノ リアブルノード演算に用いられたチェックノー ドメッセージ u)のうちの、いま式(8)によってバリアブルノードメッセージ Vを求めようと している枝からのチェックノードメッセージ u 力 メッセージ D413として供給される。さ
dv
らに、準チ ックノード計算器 412には、制御部 417 (図 26)から制御信号 D420が供 給される。
[0356] ここで、図 26の復号装置では、準チェックノード演算と準バリアブルノード演算とが 繰り返し行われることにより、等価的に、図 17の復号装置と同様に、チェックノード演 算とバリアブルノード演算とが繰り返し行われる。
[0357] そして、図 17の復号装置では、チェックノード演算によって得られるメッセージ uと、 ノ リアブルノード演算によって得られるメッセージ Vとが、いずれも、符号ビットを含め て 6ビットの通常量子化値でもある固定小数点量子化値で表されることとしたが、図 2 6の復号装置でも、メッセージ uとメッセージ Vとは、いずれも、符号ビットを含めて 6ビ ットの通常量子化値でもある固定小数点量子化値で表されることとする。また、図 26 の復号装置において、受信用メモリ 416に記憶される受信データ D417も、図 17の復 号装置と同様に、符号ビットを含めて 6ビットの通常量子化値でもある固定小数点量 子化値で表されて 、ることとする。
[0358] この場合、枝用メモリ 413 (図 26)から準チェックノード計算器 412に供給されるメッ セージ D413(チェックノードメッセージ u )は、 6ビットの通常量子化値でもある固定小
dv
数点量子化値で表される。また、スィッチ 411 (図 26)から準チェックノード計算器 41 2に供給される復号途中結果 D411(v)は、後述するように、 9ビットの通常量子化値で もある固定小数点量子化値で表される。
[0359] 枝用メモリ 413 (図 26)から準チェックノード計算器 412に供給された 6ビットの通常 量子化値でもある固定小数点量子化値によるメッセージ D413 (前回の準チェックノー ド演算の結果得られたチェックノードメッセージ uのうちの、いま式(8)によってバリア ブルノードメッセージ Vを求めようとしている枝からのチェックノードメッセージ u )と、ス
i dv イッチ 411 (図 26)から準チェックノード計算器 412に供給された 9ビットの通常量子 化値でもある固定小数点量子化値による復号途中結果 D411(v)とは、いずれも、プロ ック B,の演算器 431に供給される。
[0360] また、制御部 417 (図 26)から準チ ックノード計算器 412に供給された制御信号 D
420は、セレクタ 435とセレクタ 442に供給される。
[0361] 演算器 431は、式 (8)の演算、即ち、そこに供給される 9ビットの復号途中結果 D41 l (v)から、同じくそこに供給される 6ビットの復号途中結果 D413 (u )を減算し、これに
dv
より、ノ リアブルノードメッセージ Vを求め、そのバリアブルノードメッセージ Vを表す 6 ビットの通常量子化値でもある固定小数点量子化値 D431 (V )を出力する。
[0362] なお、演算器 431は、前述した図 12のバリアブルノード計算器 103を構成する演算 器 156と同様に、式 (8)の演算結果が、 6ビットの通常量子化値でもある固定小数点 量子化値によって表される数値範囲外である場合には、その演算結果をクリッピング して出力する。
[0363] 演算器 431が出力した 6ビットの固定小数点量子化値 D431(v)は、ブロック A'に供 給される。ブロック A'では、演算器 431からの 6ビットの固定小数点量子化値 D431( ノリアブルノードメッセージ V)のうち、最上位ビットの正負を示す符号ビット D432 (sign (V ) )が EXOR回路 440および FIFOメモリ 444に供給され、下位 5ビットの絶対値 D433 (|ν |)力 UT432に供給される。
[0364] 上述したように、ブロック A'は、図 18に示したチェックノード計算器 181のブロック A に対応しており、従って、ブロック Aと同様の処理を行う。
[0365] 即ち、ブロック A,において、 LUT432、演算器 433、レジスタ 434、セレクタ 435、レ ジスタ 436、演算器 437、 FIFOメモリ 438、 LUT439, EXOR回路 440、レジスタ 441 、セレクタ 442、レジスタ 443、 FIFOメモジ444、 EXOR回路 445、変換回路 501乃至 503は、図 18のブロック Aの LUT221、演算器 1122、レジスタ 1123、セレクタ 1124 、レジスタ 1125、演算器 1126、 FIFOメモリ 1127、 LUT228, EXOR回路 129、レジ スタ 130、セレクタ 131、レジスタ 132、 FIFOメモリ 133、 EXOR回路 134、変換回路 2 31乃至 233とそれぞれ同様に構成されている。 [0366] そして、ブロック A,において、 LUT432は、演算器 431からの 5ビットの絶対値 D433 (|v |)に一致する 5ビットの通常量子化値でもある固定小数点量子化値を入力として、 それに対応付けられている、非線形関数 φ (|v |)の演算結果を表す 5ビットの準浮動 小数点量子化値 F434を読み出し、変換回路 501と FIFOメモリ 438に出力する。
[0367] 変換回路 501は、図 18の変換回路 231と同様に、 LUT432からの 5ビットの準浮動 小数点量子化値 F434を、 9ビットの高精度量子化値でもある固定小数点量子化値 D4 34に変換し、演算器 433に出力する。
[0368] 演算器 433は、変換回路 501からの、非線形関数 φ (|ν |)の演算結果を表す 9ビット の固定小数点量子化値 D434とレジスタ 434に格納されている 13ビットの値 D435とを 加算することにより、非線形関数 φ (|ν |)の演算結果を表す 9ビットの固定小数点量子 化値 D434を積算し、その結果得られる 13ビットの高精度量子化値でもある固定小数 点量子化値で表される積算値 D435をレジスタ 434に再格納する。なお、検査行列 Η の 1行に亘る全ての枝からのメッセージ D431(バリアブルノードメッセージ V)の絶対値 D433(|v |)に対する演算結果が積算された場合、レジスタ 434はリセットされる。
[0369] ここで、演算器 433が出力する積算値 D435が 13ビットであり、 LUT432から変換回 路 501を介して演算器 433に入力されて積算の対象となる演算結果 D434 ( φ (|ν |)) 力 ビットであるのは、図 18において、演算器 1122の出力力 演算器 1122に入力さ れる 9ビットの演算結果 0434 ( φ (|ν.|))よりも 4ビットだけ多い 13ビットになっているのと 同様の理由による。
[0370] 検査行列 Ηの 1行に亘るメッセージ D431(バリアブルノードメッセージ V)が 1つずつ読 み込まれ、レジスタ 434に 1行分の演算結果 D434が積算された積算値が格納された 場合、制御部 417 (図 26)から供給される制御信号 D420は、 0から 1に変化する。例 えば、検査行列 Hの行の重み (row weight)が「9」である場合、制御信号 D420は、 8個 目の演算結果 D434が積算されるまでは、「0」となり、 9個目の演算結果 D434が積算 されると「1」となる。
[0371] 制御信号 D420が「1」の場合、セレクタ 435は、レジスタ 434に格納されている値、 即ち、検査行列 Hの 1行に亘る全ての枝からのメッセージ D431 (バリアブルノードメッ セージ V )から求められた φ (|v |)が積算された 13ビットの固定小数点量子化値 D435 (i = 1から i=dまでの∑ φ (|ν|))を選択し、 13ビットの固定小数点量子化値 D436として 、レジスタ 436に出力して格納させる。レジスタ 436は、格納している固定小数点量 子化値 D436を、 13ビットの固定小数点量子化値 D437として、セレクタ 435と演算器 4 37に供給する。制御信号 D420が「0」の場合、セレクタ 435は、レジスタ 436から供給 された固定小数点量子化値 D437を選択し、レジスタ 436に出力して再格納させる。 即ち、検査行列 Ηの 1行に亘る全ての枝からのメッセージ D431 (バリアブルノードメッ セージ V )から求められた φ (|ν |)が積算されるまで、レジスタ 436は、前回積算された φ (|ν|)を、セレクタ 435と演算器 437に供給する。
[0372] 一方、 FIFOメモリ 438は、レジスタ 436から新たな固定小数点量子化値 D437 (i= 1 力も i=dまでの∑ φ (|ν|))が出力されるまでの間、 LUT432が出力した非線形関数 φ (|ν|)の演算結果を表す 5ビットの準浮動小数点量子化値 F434を遅延し、 5ビットの 準浮動小数点量子化値 F438として、変換回路 502に供給する。
[0373] 変換回路 502は、 FIF0438からの 5ビットの準浮動小数点量子化値 F438を、 9ビッ トの高精度量子化値でもある固定小数点量子化値 D438に変換し、演算器 437に供 給する。
[0374] 演算器 437は、レジスタ 436から供給された 13ビットの固定小数点量子化値 D437 から、変換回路 502から供給された 9ビットの固定小数点量子化値 D438を減算し、そ の減算結果として得られる 9ビットの固定小数点量子化値 D439を、 LUT439に供給 する。
即ち、演算器 437は、検査行列 Ηの 1行に亘る全ての枝からのメッセージ D431 (バリア ブルノードメッセージ V )から求められた非線形関数 φ (|ν |)の演算結果の積算値から、 チェックノードメッセージ uを求めた!/、枝からのメッセージ D431 (バリアブルノードメッセ ージ V )から求められた非線形関数 φ (|ν |)の演算結果を減算して、その減算値 (i= l から i=d — 1までの∑ φ (|ν|))を表す 9ビットの固定小数点量子化値 D439を、変換回 路 503に供給する。
[0375] なお、レジスタ 436から供給される 13ビットの固定小数点量子化値 D437から、変換 回路 502から供給される 9ビットの固定小数点量子化 D438を減算した減算結果が、 9 ビットの高精度量子化値でもある固定小数点量子化値で表すことができる最大値を 越える場合には、演算器 437は、減算結果を、 9ビットの高精度量子化値でもある固 定小数点量子化値で表すことができる最大値にクリッピングして出力する。
[0376] 変換回路 503は、演算器 437からの、減算値 (i= lから i=d— 1までの∑ φ (|ν|))を 表す 9ビットの固定小数点量子化値 D439を、 5ビットの準浮動小数点量子化値 F439 に変換し、 LUT439に供給する。
[0377] LUT439は、変換回路 503からの、減算値(i= lから i=d— 1までの∑ φ (|ν|))を表 す 5ビットの準浮動小数点量子化値 F439を入力として、それに対応付けられている、 逆関数 φ— 1 (∑ φ (|ν |))の演算結果を表す 5ビットの通常量子化値でもある固定小数 点量子化値を読み出して出力する。
[0378] 以上の処理と並行して、 EXOR回路 440は、レジスタ 441に格納されている 1ビット の値 D442と符号ビット D432との排他的論理和を演算することにより、符号ビットどうし の乗算を行い、 1ビットの乗算結果 D441をレジスタ 441に再格納する。なお、検査行 列の 1行に亘る全ての 1に対応する復号途中結果 D411から求められたバリアブルノ ードメッセージ v(D431)の符号ビット D432が乗算された場合、レジスタ 441はリセットさ れる。
[0379] 検査行列の 1行に亘る全ての 1に対応する復号途中結果 D411から求められたバリ アブルノードメッセージ v(D431)の符号ビット D432が乗算された乗算結果 D441 (i= 1 力も dまでの nsign(v))がレジスタ 441に格納された場合、制御部 417から供給され る制御信号 D420は、「0」から「1」に変化する。
[0380] 制御信号 D420が「1」の場合、セレクタ 442は、レジスタ 441に格納されている値、 即ち、検査行列の 1行に亘る全ての 1に対応する復号途中結果 D411から求められた 符号ビット D432が乗算された値 D442 (i= 1から i=dまでの risign(v))を選択し、 1ビ ットの値 D443としてレジスタ 443に出力して格納させる。レジスタ 443は、格納してい る値 D443を、 1ビットの値 D444としてセレクタ 442と EXOR回路 445に供給する。制御 信号 D420が「0」の場合、セレクタ 442は、レジスタ 443から供給された値 D444を選択 し、レジスタ 443に出力して再格納させる。即ち、検査行列の 1行に亘る全ての 1に対 応する復号途中結果 D411 (復号途中結果 V)から求められたバリアブルノードメッセ一 ジ v(D431)の符号ビット D432が乗算されるまで、レジスタ 443は、前回格納した値を、 セレクタ 442と EXOR回路 445〖こ供給する。
[0381] 一方、 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は、検査行列の 1行に亘る全ての 1に対応する復号途 中結果 D411から求められたノ リアブルノードメッセージ v(D431)の符号ビット D432 (sig n(v))の乗算値を、チェックノードメッセージ uを求めようとする枝からのバリアブルノー ドメッセージ Vi(D431)の符号ビット D432 (sign(v))で除算して、その除算値 (i= 1から i =d— 1までの nsign(v))を除算値 D446として出力する。
[0382] そして、準チェックノード計算器 412では、 LUT439から出力された 5ビットの通常量 子化値 D440を下位 5ビットとするとともに、 EXOR回路 445から出力された 1ビットの除 算値 D446を最上位ビット (符号ビット)とする合計 6ビットの通常量子化値で表されるメ ッセージ D412 (チェックノードメッセージ u)が出力される。
[0383] 以上のように、準チヱックノード計算器 412では、式(7)と式 (8)の演算が行われ、 チェックノード演算の結果である、 6ビットの通常量子化値によるチェックノードメッセ ージ uが求められる。このチェックノードメッセージ uは、準チェックノード計算器 412 から枝用メモリ 413 (図 26)に供給されて記憶される。
[0384] なお、図 9の検査行列の行の重みの最大は 9であるため、準チェックノード計算器 4 12は、 9個の復号途中結果 D411から求められる 9個の演算結果 ΙΜ34 ( φ (|ν|))を遅 延させる FIFOメモリ 438と、 9個の符号ビット D432を遅延させる FIFOメモリ 444を有し ている。行の重みが 9未満の行のチェックノードメッセージ uを計算するときには、 FIF 0メモリ 438と FIFOメモリ 444における遅延量が、その行の重みの値に減らされる。
[0385] 次に、図 29は、図 26の準ノ リアブルノード計算器 415の構成例を示している。
[0386] 準ノ リアブルノード計算器 415は、ブロック C,で構成される。ブロック C,は、上述し たように、図 27に示したバリアブルノード計算器 103のブロック Cに対応しており、従 つて、ブロック Cと同様の処理を行う。 [0387] 即ち、ブロック C,において、演算器 471、レジスタ 472、セレクタ 473、レジスタ 474 、演算器 475は、図 27のブロック Cの演算器 151、レジスタ 152、セレクタ 153、レジ スタ 154、演算器 156とそれぞれ同様に構成されている。
1
[0388] 準ノ リアブルノード計算器 415には、枝用メモリ 413 (図 26)から、チェックノード演 算の結果であるメッセージ D413(チェックノードメッセージ u)が供給され、そのメッセ一 ジ D413は、演算器 471に供給される。また、準ノ リアブルノード計算器 415には、受 信用メモリ 416 (図 26)から受信データ D417(u )が供給され、その受信データ D417は
0i
、演算器 475に供給される。さらに、準ノ リアブルノード計算器 415には、制御部 417 (図 26)から制御信号 D422が供給され、その制御信号 D422は、セレクタ 473に供給 される。
[0389] ここで、準バリアブルノード計算器 415に対して、枝用メモリ 413 (図 26)から供給さ れるメッセージ D413(チェックノードメッセージ u)と、受信用メモリ 416 (図 26)から供給 される受信データ D417(u )とは、上述したように、いずれも、 6ビットの通常量子化値 でもある固定小数点量子化値で表されて 、る。
[0390] 演算器 471は、メッセージ D413とレジスタ 472に格納されている 9ビットの値 D471と を加算することにより、メッセージ D413uを積算し、その結果得られる 9ビットの積算値 を、レジスタ 472に再格納する。なお、検査行列の 1列に亘る全ての 1に対応するメッ セージ D413(チェックノードメッセージ u)が積算された場合、レジスタ 472はリセットさ れる。
[0391] ここで、演算器 471が出力する積算値が 9ビットであり、演算器 433に入力されて積 算されるメッセージ D413(u)が 6ビットであるのは、図 12において、演算器 151の出力 力 演算器 151に入力される 6ビットのメッセージ D103よりも 3ビットだけ多い 9ビットに なって 、るのと同様の理由による。
[0392] レジスタ 472に 1列分のメッセージ D413が積算された値が格納された場合、制御部 417 (図 26)から供給される制御信号 D422は、「0」から「1」に変化する。例えば、列 の重みが「5」である場合、制御信号 D422は、 4番目のメッセージ D413が積算されるま では「0」となり、 5番目のメッセージ D413が積算されると「1」となる。
[0393] 制御信号 D422が「1」の場合、セレクタ 473は、レジスタ 472に格納されている値、 即ち、検査行列 Hの 1列に亘る全ての枝からのメッセージ D413(チェックノードメッセ ージ u)が積算された 9ビットの積算値 D471 (j = lから dまでの∑u)を選択し、レジスタ j V j
474に出力して格納させる。レジスタ 474は、格納している積算値 D471を、 9ビットの 値 D472として、セレクタ 471と演算器 475に供給する。制御信号 D422が「0」の場合、 セレクタ 473は、レジスタ 474から供給された 9ビットの値 D472を選択し、レジスタ 474 に出力し再格納させる。即ち、検査行列の 1列に亘る全ての枝力ものメッセージ D413 (チェックノードメッセージ u)が積算されるまで、レジスタ 474は、前回の積算値 D472を 、セレクタ 473と演算器 475に供給する。
[0394] 演算器 475は、 9ビットの積算値 D472と、受信用メモリ 416 (図 26)力も供給された 6 ビットの受信データ D417とを加算して、その結果得られる 9ビットの値を復号途中結 果 D415 (復号途中結果 V)として出力する。
[0395] 以上のように、準ノリアブルノード計算器 415では、通常量子化値でもある固定小 数点量子化値を使用したまま、式 (5)の演算が行われ、 9ビットの復号途中結果 Vが 求められる。この復号途中結果 Vは、準バリアブルノード計算器 415から復号途中結 果格納用メモリ 410 (図 26)に供給されて記憶される。
[0396] なお、復号途中結果格納用メモリ 410には、 9ビットの固定小数点量子化値 (通常 量子化値)で表された復号途中結果 Vが記憶され、この 9ビットの復号途中結果 Vが、 上述したように、スィッチ 411 (図 26)を介して、準チェックノード計算器 412に供給さ れる。
[0397] 図 26の復号装置でも、図 17の復号装置と同様に、準チェックノード計算器 412に おいて、非線形関数 φ (X)の演算後からその逆関数 φ— ^χ)の演算までの処理では、 高精度量子化値でもある 9ビットの固定小数点量子化値、または、その 9ビットの固定 小数点量子化値と同程度の精度で 0付近の数値を表し、かつ、同程度のダイナミック レンジを有する 5ビットの準浮動小数点量子化値を使用し、他の処理では、通常量子 化値でもある固定小数点量子化値を使用するので、 LDPC符号の復号を、復号装置 の大規模ィ匕 (メッセージ等を記憶する復号途中結果格納用メモリ 410や枝用メモリ 41 3の大容量化)を抑えつつ精度良く行うことができる。
[0398] さらに、準チェックノード計算器 412 (図 28)では、 LUT432において、固定小数点 量子化値を入力として、非線形関数 φ (χ)の演算の結果を、 5ビットの準浮動小数点 量子化値で出力し、かつ、 LUT439において、 5ビットの準浮動小数点量子化値を入 力として、逆関数 Φ— ^χ)の演算の結果を、固定小数点量子化値で出力するので、か 力る点からも、 LDPC符号の復号を、復号装置の大規模ィ匕 (LUT432や 439の大容量 ィ匕)を抑えつつ精度良く行うことができる。
[0399] さらにまた、図 26の復号装置では、準チェックノード計算器 412において、チェック ノード演算と、ノリアブルノード演算の一部とを行い、準ノリアブルノード計算器 415 において、バリアブルノード演算の他の一部を行うので、図 17の復号装置よりも、装 置の規模を小さくすることができる。
[0400] 即ち、図 26の復号装置において、枝用メモリ 413は、図 17の枝用メモリ 102に対応 し、復号途中結果格納用メモリ 410は、図 17の枝用メモリ 100に対応し、受信用メモ リ 416は、図 17の受信用メモリ 104に対応する。
[0401] そして、図 26の枝用メモリ 413と、対応する図 17の枝用メモリ 102とは、いずれも、 6 ビットのチェックノードメッセージ uを、全枝数分だけ記憶する必要があるので、全枝 数の 6ビット倍の記憶容量を必要とする。また、図 26の受信用メモリ 416と、対応する 図 17の受信用メモリ 104も、いずれも、 6ビットの受信データ uを、符号長分だけ記憶 する必要があるので、符号長の 6ビット倍の記憶容量を必要とする。
[0402] さらに、図 17の枝用メモリ 100は、図 17の枝用メモリ 102と同様に、 6ビットのノリア ブルノードメッセージ Vを、全枝数分だけ記憶する必要があるので、全枝数の 6ビット 倍の記憶容量を必要とする。
[0403] これに対して、図 17の枝用メモリ 100に対応する図 26の復号途中結果格納用メモ リ 410は、準バリアブルノード計算器 415が出力する復号途中結果 v(D415)を、符号 長分だけ記憶する必要がある。復号途中結果 Vは、図 29で説明したように、 9ビット( の通常量子化値)であるから、復号途中結果格納用メモリ 410は、符号長の 9ビット倍 の記憶容量を必要とする。
[0404] 従って、全枝数が、符号長の 3/2(=9ビット /6ビット)倍より少なければば、復号途中 結果格納用メモリ 410の記憶容量は、対応する図 17の枝用メモリ 100の記憶容量よ りも大となる。 [0405] し力しながら、 LDPC符号の検査行列 Hは疎らではある力 全枝数 (検査行列 Hにお いて 1になっている要素の総数)は、一般に、符号長 (検査行列 Hの列数)の 3/2倍よ りも大であり、例えば、図 9の検査行列 Hでも、全枝数 (323個)は、符号長 (108)の約 3( 323/108)倍になっている。
[0406] 従って、復号途中結果格納用メモリ 410の記憶容量は、対応する図 17の枝用メモ リ 100よりも少な 、記憶容量とすることができる。
[0407] その結果、図 26の復号装置は、復号途中結果格納用メモリ 410の記憶容量を、対 応する図 17の枝用メモリ 100の記憶容量よりも少なくすることができる分だけ、図 17 の復号装置よりも、装置の規模を小さくすることができる。
[0408] また、図 26の復号装置は、上述したように、(準バリアブルノード計算器 415とは別 に)式(5)を演算するブロックを設ける必要がなく、図 27 (図 12)の FIFOメモリ 155を 設ける必要もないので、図 17の復号装置よりも、さらに小型に構成することができる。
[0409] 次に、図 30は、各種の復号装置についての BER/FERのシミュレーション結果を示 している。
[0410] なお、図 30において、横軸は、 1ビットあたりの信号電力対雑音電力比 E /Nを表し b 0
、縦軸は、 BER(Bit Error Rate)または FER(Frame Error Rate)を表している。また、図 3 0では、 BERは実線で、 FERは点線で、それぞれ示してある。
[0411] 図 30において▽印は、図 13の復号装置において LDPC符号の復号を行った場合 、つまり、 LUT1121 (図 14)において、 5ビットの通常量子化値でもある固定小数点 量子化値を入力として、 9ビットの高精度量子化値でもある固定小数点量子化値を出 力し、かつ、 LUT1128において、 9ビットの高精度量子化値でもある固定小数点量 子化値を入力として、 5ビットの通常量子化値でもある固定小数点量子化値を出力す ることにより、 LDPC符号の復号を行った場合の BERと FERを表している。
[0412] また、図 30において〇印は、図 17の復号装置において、 LDPC符号の復号を行つ た場合、つまり、 LUT221 (図 18)において、 5ビットの通常量子化値でもある固定小 数点量子化値を入力として、 5ビットの準浮動小数点量子化値を出力し、かつ、 LUT 228において、 5ビットの準浮動小数点量子化値を入力として、 5ビットの通常量子化 値でもある固定小数点量子化値を出力することにより、 LDPC符号の復号を行った場 合の BERと FERを表して!/、る。
[0413] 図 30から、図 17の復号装置は、図 13の復号装置とほぼ同等の性能を有することが 分かる。
[0414] 上述したように、図 17の復号装置を構成する LUT221と LUT228 (図 18)は、図 13 の復号装置を構成する、対応する LUT1121と LUT1128 (図 14)よりも大幅に小型化 することができ、従って、図 17の復号装置は、図 13の復号装置とほぼ同等の性能を 有しながら、図 13の復号装置よりも小型に構成することができる。
[0415] 次に、図 31は、図 26の準チェックノード計算器 412の他の構成例を示している。
[0416] なお、図中、図 28における場合と対応する部分については、同一の符号を付して あり、以下では、その説明は、適宜省略する。即ち、図 31の準チヱックノード計算器 4 12は、図 28の準チェックノード計算器 412と基本的に同様に構成されている。
[0417] 但し、図 28のチェックノード計算器 412では、 LUT432力 5ビットの固定小数点量 子化値を入力として、非線形関数 φ (Ιν.Ι)の演算結果を表す 5ビットの準浮動小数点 量子化値を出力するとともに、 LUT439が、 5ビットの準浮動小数点量子化値を入力 として、逆関数 Φ— 1 (∑ Φ (Iv.D)の演算結果を表す 5ビットの固定小数点量子化値を出 力するのに対して、図 31のチェックノード計算器 412では、 LUT432力 5ビットの固 定小数点量子化値を入力として、非線形関数 φ (Ιν.Ι)の演算結果を表す 6ビットの準 浮動小数点量子化値を出力するとともに、 LUT439が、 6ビットの準浮動小数点量子 化値を入力として、逆関数 Φ— ∑ φ (|ν |))の演算結果を表す 5ビットの固定小数点量 子化値を出力するようになって!/、る。
[0418] 即ち、図 31のチェックノード計算器 412では、例えば、準仮数部 3ビットで、準指 数部 eも 3ビットの、合計で 6ビットの準浮動小数点量子化値が用いられて 、る。
[0419] なお、図 31では、準浮動小数点量子化値が 6ビットであることに対応して、変換回 路 501および 502は、 6ビットの準浮動小数点量子化値を 9ビットの固定小数点量子 化値に変換し、変換回路 503は、 9ビットの固定小数点量子化値を 6ビットの準浮動 小数点量子化値に変換するようになって 、る。
[0420] 図 31の準チェックノード計算器 412では、準浮動小数点量子化値が 5ビットではな ぐ 6ビットになっていることを除けば、図 28の準チェックノード計算器 412と同様にし て、準チェックノード演算が行われる。
[0421] 図 31の準チェックノード計算器 412によれば、 3ビットの準仮数部 fと 3ビットの準指 数部 eからなる 6ビットの準浮動小数点量子化値が採用されて 、るので、 2ビットの準 仮数部 fと 3ビットの準指数部 eからなる 5ビットの準浮動小数点量子化値を採用する 図 28のチェックノード演算器 412に比較して、 LUT432および 439の容量は多少増 加するものの、より精度の高い準チェックノード演算を行うことができる。
[0422] 次に、準チェックノード計算器 412では、準チェックノード演算の一部の演算である 演算器 437で行われる演算のために、 FIFOメモリ 438がデータを遅延する。即ち、図 28や図 31の準チェックノード計算器 412では、 FIFOメモリ 438力 LUT432力 S出力 する非線形関数 Φ (|v |)の演算結果を遅延し、変換回路 502を介して演算器 437に供 給することにより、演算器 437が、その遅延後の非線形関数 φ (|ν の演算結果を用 いて演算を行う。
[0423] ところで、図 28では、 LUT432力 5ビットの固定小数点量子化値の入力に対して、 非線形関数 Φ (Ιν.Ι)の演算結果としての 5ビットの準浮動小数点量子化値を出力する 1S 図 31では、 LUT432力 5ビットの固定小数点量子化値の入力に対して、非線形 関数 Φ (|ν|)の演算結果としての 6ビットの準浮動小数点量子化値を出力する。従って 、 FIFOメモリ 438としては、 5ビットの準浮動小数点量子化値を遅延する図 28の場合 よりも、 6ビットの準浮動小数点量子化値を遅延する図 31の場合の方が、容量の大き V、FIFOメモリが必要となる。
[0424] そこで、準チェックノード計算器 412は(図 18のチェックノード計算器 181も同様)、 LUT432に入力される固定小数点量子化値と、 LUT432から出力される準浮動小数 点量子化値とのうちの、ビット数が少ない方を、 FIFOメモリ 438で遅延するように構成 することができる。
[0425] 即ち、図 32は、 LUT432に入力される固定小数点量子化値が 5ビットで、 LUT432 力も出力される準浮動小数点量子化値が 6ビットである場合の、ビット数が少ない、 L UT432に入力される固定小数点量子化値を、 FIFOメモリ 438で遅延するように構成 した図 26の準チェックノード計算器 412の構成例を示している。
[0426] なお、図中、図 31における場合と対応する部分については、同一の符号を付して あり、以下では、その説明は、適宜省略する。
[0427] 図 32の準チェックノード計算器 412では、 FIFOメモリ 438において、 LUT432力ら 出力される 6ビットの準浮動小数点量子化値ではなぐ LUT432に入力される 5ビット の固定小数点量子化値が遅延されるようになって!/、る。
[0428] さらに、図 32の準チェックノード計算器 412では、 FIFOメモリ 438において、 LUT4 32から出力される 6ビットの準浮動小数点量子化値ではなぐ LUT432に入力される 5ビットの固定小数点量子化値を遅延することに伴い、 FIFOメモリ 438で遅延された 後の 5ビットの固定小数点量子化値を入力として、非線形関数 φ (|v |)の演算結果を 表す 6ビットの準浮動小数点量子化値を出力する、 LUT432と同様に構成される LUT 504が、 FIFOメモリ 438と変換回路 502との間に、新たに設けられている。
[0429] 以上のように構成される図 32の準チェックノード計算器 412では、 FIFOメモリ 438 において、 LUT432から出力される 6ビットの準浮動小数点量子化値ではなぐ LUT4 32に入力される 5ビットの固定小数点量子化値が遅延されて出力される。その後、 L UT504力 FIFOメモリ 438が出力する、遅延後の 5ビットの固定小数点量子化値を 入力として、非線形関数 φ (|ν |)の演算結果を表す 6ビットの準浮動小数点量子化値 を出力する。
[0430] そして、変換回路 502は、 LUT504が出力する 6ビットの準浮動小数点量子化値を 、 9ビットの固定小数点量子化値に変換し、演算器 437に供給する。これにより、演算 器 437では、変換回路 502から供給される、遅延後の非線形関数 φ (|ν |)の演算結果 を用いて演算が行われる。
[0431] なお、図 32の準チェックノード計算器 412において行われるその他の処理は、図 3 1の場合と同様である。
[0432] 以上のように、 LUT432に入力される固定小数点量子化値と、 LUT432から出力さ れる準浮動小数点量子化値とのうちの、ビット数が少ない方を、 FIFOメモリ 438で遅 延するように、準チェックノード計算器 412を構成することにより、即ち、例えば、 LUT 432に入力される固定小数点量子化値が 5ビットで、 LUT432から出力される準浮動 小数点量子化値が 6ビットである場合には、図 32に示したように、ビット数が少な 、、 LUT432に入力される固定小数点量子化値を、 FIFOメモリ 438で遅延するように、準 チェックノード計算器 412を構成することにより、 FIFOメモリ 438として、容量の小さい FIFOメモリを採用することができる。
[0433] ここで、図 32に示したように、 LUT432に入力される固定小数点量子化値を、 FIFO メモリ 438で遅延するように、準チェックノード計算器 412を構成する場合には、 FIFO メモリ 438と変換回路 502との間に、 LUT504を新たに設ける必要がある。このため、 LUT432に入力される固定小数点量子化値と、 LUT432から出力される準浮動小数 点量子化値とのビット数が同一である場合には、準チェックノード計算器 412は、図 2 8に示したように、 LUT432から出力される準浮動小数点量子化値を、 FIFOメモリ 43 8で遅延するように構成する方が、 LUT504を設けずにすむ分だけ回路規模を小さく することができる。
[0434] また、 LUT432に入力される固定小数点量子化値を、 FIFOメモリ 438で遅延するよ うに、準チェックノード計算器 412を構成する場合には、 FIFOメモリ 438と変換回路 5 02との間に、 LUT504を新たに設ける必要があるので、 LUT432に入力される固定 小数点量子化値と、 LUT432から出力される準浮動小数点量子化値とのうちのいず れを、 FIFOメモリ 438で遅延するかは、 LUT432に入力される固定小数点量子化値 と、 LUT432から出力される準浮動小数点量子化値とのビット数の大小関係の他、 L UT504の規模を考慮して決めるのが望まし 、。
[0435] 即ち、 LUT432に入力される固定小数点量子化値力 LUT432から出力される準 浮動小数点量子化値のビット数以上のビット数である場合には、準チェックノード計 算器 412は、図 28に示したように、 LUT432から出力される準浮動小数点量子化値 を、 FIFOメモリ 438で遅延するように構成することにより、回路規模を小さくすることが できる。
[0436] また、 LUT432に入力される固定小数点量子化値力 LUT432から出力される準浮 動小数点量子化値のビット数未満のビット数である場合には、 LUT432に入力される 、ビット数が小の固定小数点量子化値を FIFOメモリ 438で遅延するときの FIFOメモリ 438の規模およびそのとき必要となる LUT504の規模を合わせた規模と、 LUT432力 ら出力される、ビット数が大の準浮動小数点量子化値を FIFOメモリ 438で遅延すると きの FIFOメモリ 438の規模とを比較し、規模力 S小さくなる方の構成を採用するのが望 ましい。
[0437] なお、本実施の形態では、各ノードの演算を一つずつ順次行うフルシリアルデコー ド (foil serial decoding)のアーキテクチャを有する復号装置を採用した力 復号装置の アーキテクチャは、特に限定されるものではない。即ち、本発明は、フルシリアルデコ ードのアーキテクチャを有する復号装置の他、例えば、全ノードの演算を同時に行う フルパラレルデコード (foil parallel decoding)のアーキテクチャを有する復号装置や、 一つでも全てでもない、ある数のノードの演算を同時に行う一部パラレルデコード (par tly parallel decoding)のアーキテクチャを有する復号装置にも適用可能である。
[0438] フルパラレルデコードのアーキテクチャを有する復号装置や、一部パラレルデコー ドのアーキテクチャを有する復号装置は、チヱックノード演算を行うチヱックノード計算 器 (準チ ックノード計算器)を複数有することから、非線形関数 φ (X)やその逆関数 Φ _1(Υ)の演算を行う(演算結果を出力する) LUTの容量の削減の効果は、さらに大に なる。
[0439] また、検査行列 Ηは、図 9に示したものに限定されるものではない。
[0440] さらに、固定小数点量子化値である通常量子化値や高精度量子化値、準浮動小 数点量子化値のビット数 (量子化ビット数)も、上述した値に限定されるものではな 、
[0441] さらに、図 17の枝用メモリ 100および 102、受信用メモリ 104や、図 26の復号途中 結果格納用メモリ 410、枝用メモリ 413、受信用メモリ 416としては、例えば、 RAM(R ead Only Memory)を使用することができる。ここで、これらの枝用メモリ 100等として使 用する RAMの 1ワードあたりのビット数(ビット幅)や、 RAMが記憶することができるヮー ド数は、特に限定されるものではない。また、 RAMのビット幅やワード数によっては、 複数の RAMに対して、同様の制御信号 (例えば、チップセレクト信号やアドレス信号) を与えることにより、その複数の RAMを論理的に 1つの RAMとみなして、枝用メモリ 10 0等として使用することができる。即ち、例えば、物理的に 1つの RAMのビット幅力 受 信データ u等の量子化ビット数に足りない場合には、複数の RAMを論理的に 1つの R AMとみなして、受信データ u等を記憶させることができる。
Oi
[0442] また、本実施の形態では、非線形関数 φ 00、またはその逆関数 φ— ^χ)の演算を、 L UT1121 (図 18)や LUT432 (図 28)、または LUT1128 (図 18)や LUT439 (図 28)と いった LUTによって行うようにした力 非線形関数 φ (X)やその逆関数 φ _1(χ)の演算は 、例えば、 CPU(Central Processing Unit)や論理回路によって行うことが可能である。
[0443] さらに、図 18のチェックノード計算器 181では、 FIF01127において、 LUT221力 S 出力する 5ビットの準浮動小数点量子化値を遅延するようにしたが、 FIFO 1127では 、 LUT221が出力する 5ビットの準浮動小数点量子化値ではなぐその 5ビットの準浮 動小数点量子化値の表示形式を変換回路 231で変換して得られる 9ビットの固定小 数点量子化値を遅延するようにすることが可能である。この場合、図 18において、 FI FO 1127の後段に設けられて 、る変換回路 232は、不要となる。
[0444] 但し、 FIF01127において、 5ビットの準浮動小数点量子化値を遅延する場合には 、 9ビットの固定小数点量子化値を遅延する場合に比較して、 FIFO 1127の容量を小 さくすることができる。図 28の FIF0438についても同様である。
[0445] なお、上述した LDPC符号を復号する復号装置は、例えば、(ディジタル)衛星放送 を受信するチューナなどに適用することができる。

Claims

請求の範囲
[1] LDPC(Low Density Parity Check)符号の復号装置であって、
前記 LDPC符号の復号のためのチェックノードのチェックノード演算であって、非線 形関数の演算および前記非線形関数の逆関数の演算を含む前記チェックノード演 算を行う第 1の演算手段と、
前記 LDPC符号の復号のためのノ リアブルノードのノ リアブルノード演算を行う第 2 の演算手段と
を備え、
前記第 1の演算手段は、
固定の量子化幅で数値を表現するビット列である第 1の量子化値を入力として、 前記非線形関数の演算の結果を、一部のビット列に応じて決まる量子化幅で数値を 表現するビット列である第 2の量子化値で出力する関数演算手段と、
前記第 2の量子化値を入力として、前記非線形関数の逆関数の演算の結果を、 前記第 1の量子化値で出力する逆関数演算手段と
を有する
復号装置。
[2] 前記第 1の演算手段は、前記チェックノード演算と、前記バリアブルノード演算の一 部とを行い、
前記第 2の演算手段は、前記バリアブルノード演算の他の一部を行う
請求項 1に記載の復号装置。
[3] 前記第 2の量子化値の量子化幅の最小値は、前記第 1の量子化値の量子化幅以 下である 請求項 1に記載の復号装置。
[4] 前記第 2の量子化値の量子化幅の最小値は、前記第 1の量子化値の量子化に一 致する
請求項 3に記載の復号装置。
[5] 前記チ ックノード演算は、前記非線形関数の演算後、前記非線形関数の逆関数 の演算前に行われる積算をさらに含み、
前記第 1の演算手段は、前記積算が行われる前に、前記第 2の量子化値を、前記 第 1の量子化値に変換する
請求項 1に記載の復号装置。
[6] 前記第 1の演算手段は、前記関数演算手段が出力する前記第 2の量子化値を、前 記第 1の量子化値に変換する変換手段をさらに有する
請求項 1に記載の復号装置。
[7] 前記チ ックノード演算は、前記非線形関数の演算の結果を遅延した、遅延後の 前記非線形関数の演算の結果を用いて行われる演算をさらに含み、
前記第 1の演算手段は、遅延後の前記非線形関数の演算の結果を用いて行われ る演算の前に、遅延後の前記非線形関数の演算の結果を表す前記第 2の量子化値 を、前記第 1の量子化値に変換する変換手段をさらに有する
請求項 1に記載の復号装置。
[8] 前記第 1の演算手段は、前記遅延後の前記非線形関数の演算の結果を用いて行 われる演算の後に、前記第 1の量子化値を、前記第 2の量子化値に変換し、前記逆 関数演算手段に供給する他の変換手段をさらに有する
請求項 7に記載の復号装置。
[9] 前記関数演算手段は、前記第 1の量子化値を入力として、前記非線形関数の演算 の結果を、前記第 2の量子化値で出力する LUT(Look Up Table)であり、
前記逆関数演算手段は、前記第 2の量子化値を入力として、前記非線形関数の逆 関数の演算の結果を、前記第 1の量子化値で出力する LUTである
請求項 1に記載の復号装置。
[10] 前記第 1の演算手段は、
前記チェックノード演算のためにデータを遅延する遅延手段をさらに有し、 前記関数演算手段に入力される前記第 1の量子化値、または前記関数演算手段 から出力される前記第 2の量子化値のうちの一方を、前記遅延手段が遅延するように 構成される 請求項 1に記載の復号装置。
[11] 前記第 1の演算手段は、前記遅延手段が前記関数演算手段に入力される前記第 1 の量子化値を遅延するように構成される場合、前記遅延手段が前記第 1の量子化値 を遅延した、遅延後の前記第 1の量子化値を入力として、前記非線形関数の演算の 結果を、前記第 2の量子化値で出力する他の関数演算手段をさらに有する 請求項 10に記載の復号装置。
[12] LDPC(Low Density Parity Check)符号の復号のためのチェックノードのチェックノー ド演算であって、非線形関数の演算および前記非線形関数の逆関数の演算を含む 前記チェックノード演算を行う第 1の演算手段と、
前記 LDPC符号の復号のためのノ リアブルノードのノ リアブルノード演算を行う第 2 の演算手段と
を備える復号装置の復号方法であって、
前記第 1の演算手段において、
固定の量子化幅で数値を表現するビット列である第 1の量子化値を入力として、 前記非線形関数の演算の結果を、一部のビット列に応じて決まる量子化幅で数値を 表現するビット列である第 2の量子化値で出力する関数演算ステップと、
前記第 2の量子化値を入力として、前記非線形関数の逆関数の演算の結果を、 前記第 1の量子化値で出力する逆関数演算ステップと
を含む
復号方法。
PCT/JP2006/317735 2005-09-13 2006-09-07 復号装置および復号方法 WO2007032251A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP06797611A EP1947772A4 (en) 2005-09-13 2006-09-07 DECODER AND DECODING METHOD
KR1020087008741A KR101312799B1 (ko) 2005-09-13 2006-09-07 복호 장치 및 복호 방법
CN2006800423353A CN101310446B (zh) 2005-09-13 2006-09-07 解码器和解码方法
US12/066,641 US8166363B2 (en) 2005-09-13 2006-09-07 Decoding device and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005264730A JP4293172B2 (ja) 2005-09-13 2005-09-13 復号装置および復号方法
JP2005-264730 2005-09-13

Publications (1)

Publication Number Publication Date
WO2007032251A1 true WO2007032251A1 (ja) 2007-03-22

Family

ID=37864847

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/317735 WO2007032251A1 (ja) 2005-09-13 2006-09-07 復号装置および復号方法

Country Status (6)

Country Link
US (1) US8166363B2 (ja)
EP (1) EP1947772A4 (ja)
JP (1) JP4293172B2 (ja)
KR (1) KR101312799B1 (ja)
CN (1) CN101310446B (ja)
WO (1) WO2007032251A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429486B2 (en) 2007-12-13 2013-04-23 Nec Corporation Decoding device, data storage device, data communication system, and decoding method
JP4572937B2 (ja) * 2008-01-23 2010-11-04 ソニー株式会社 復号装置および方法、プログラム、並びに記録媒体
US8611151B1 (en) * 2008-11-06 2013-12-17 Marvell International Ltd. Flash memory read performance
KR101593702B1 (ko) 2009-03-22 2016-02-15 엘지전자 주식회사 무선 통신 시스템에서 참조 신호 전송 방법 및 장치
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
US9015550B2 (en) * 2012-10-05 2015-04-21 Lsi Corporation Low density parity check layer decoder for codes with overlapped circulants
US8743493B1 (en) * 2013-01-16 2014-06-03 Lsi Corporation Fixed-point processing using quantization levels based on floating-point processing
US9048867B2 (en) * 2013-05-21 2015-06-02 Lsi Corporation Shift register-based layered low density parity check decoder
CN104518801A (zh) 2013-09-29 2015-04-15 Lsi公司 非二进制的分层低密度奇偶校验解码器
US20150207523A1 (en) * 2014-01-21 2015-07-23 Samsung Electronics Co., Ltd. Low-power dual quantization-domain decoding for ldpc codes
KR20150137430A (ko) * 2014-05-29 2015-12-09 삼성전자주식회사 통신 시스템에서 비-이진 ldpc 부호를 복호화하는 방법 및 장치
KR102504550B1 (ko) * 2015-12-28 2023-02-28 삼성전자주식회사 저밀도 패리티 검사 코드를 지원하는 통신 시스템에서 신호를 수신하는 장치 및 방법
EP3682546A4 (en) * 2017-09-11 2020-09-23 ZTE Corporation METHOD AND DEVICE FOR PROCESSING LDPC-ENCODED DATA
US10574274B2 (en) * 2017-09-29 2020-02-25 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US11159175B2 (en) * 2019-06-21 2021-10-26 Intel Corporation Non-uniform iteration-dependent min-sum scaling factors for improved performance of spatially-coupled LDPC codes

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03116271A (ja) * 1989-09-29 1991-05-17 Toshiba Corp 2次元画像の高速フーリエ変換解析方法
JPH07200259A (ja) * 1993-12-28 1995-08-04 Hitachi Ltd 演算処理方法および演算処理装置
JPH0946234A (ja) * 1995-07-27 1997-02-14 Victor Co Of Japan Ltd 音響信号符号化方法、音響信号復号化方法、音響信号符号化装置、音響信号復号化装置
JP2000293494A (ja) * 1999-04-09 2000-10-20 Fuji Xerox Co Ltd 並列計算装置および並列計算方法
JP2004343170A (ja) * 2003-05-13 2004-12-02 Sony Corp 復号方法および復号装置、並びにプログラム
JP2005223440A (ja) 2004-02-03 2005-08-18 Sony Corp 復号装置及び方法、並びに情報処理装置及び方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0756386B1 (en) * 1995-07-27 2003-09-17 Victor Company Of Japan, Limited Method and apparatus for coding a digital, acoustic signal
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
JP2004088470A (ja) * 2002-08-27 2004-03-18 Sony Corp 復号装置及び復号方法
JP4225163B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
US7441178B2 (en) * 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
JP4595650B2 (ja) * 2005-04-25 2010-12-08 ソニー株式会社 復号装置および復号方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03116271A (ja) * 1989-09-29 1991-05-17 Toshiba Corp 2次元画像の高速フーリエ変換解析方法
JPH07200259A (ja) * 1993-12-28 1995-08-04 Hitachi Ltd 演算処理方法および演算処理装置
JPH0946234A (ja) * 1995-07-27 1997-02-14 Victor Co Of Japan Ltd 音響信号符号化方法、音響信号復号化方法、音響信号符号化装置、音響信号復号化装置
JP2000293494A (ja) * 1999-04-09 2000-10-20 Fuji Xerox Co Ltd 並列計算装置および並列計算方法
JP2004343170A (ja) * 2003-05-13 2004-12-02 Sony Corp 復号方法および復号装置、並びにプログラム
JP2005223440A (ja) 2004-02-03 2005-08-18 Sony Corp 復号装置及び方法、並びに情報処理装置及び方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
See also references of EP1947772A4 *
TONG ET AL.: "On Finite Precision Implementation of Low Density Parity Check Codes Decoder", PROC OF 2001 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS 2001), 6-9 MAY 2001, SYDNEY, NSW, AUSTRALIA, vol. 4, 6 May 2001 (2001-05-06), pages 202 - 205, XP010541828
YUPING ZHANG ET AL.: "Efficient high-speed quasi-cyclic LDPC Decoder Architecture", PROC. THIRTY- EIGHTH ASILOMAR CONFERENCE ON SIGNALS, SYSTEMS AND COMPUTERS, PACIFIC GROVE, CA, USA, vol. 1, 7 November 2004 (2004-11-07), pages 540 - 544, XP010780360, DOI: doi:10.1109/ACSSC.2004.1399191
ZHIGANG CAO ET AL.: "An FPGA implementation of a Structured Irregular LDPC Decoder", PROC. IEEE INTERNATIONAL SYMPOSIUM ON MICROWAVE, ANTENNA, PROPAGATION AND EMC TECHNOLOGIES FOR WIRELESS COMMUNICATIONS 2005, BEIJING, CHINA, vol. 2, 8 August 2005 (2005-08-08), pages 1050 - 1053, XP010909613, DOI: doi:10.1109/MAPE.2005.1618100

Also Published As

Publication number Publication date
EP1947772A1 (en) 2008-07-23
JP4293172B2 (ja) 2009-07-08
US8166363B2 (en) 2012-04-24
KR20080045750A (ko) 2008-05-23
CN101310446B (zh) 2012-06-13
KR101312799B1 (ko) 2013-09-27
EP1947772A4 (en) 2013-01-02
US20090304111A1 (en) 2009-12-10
JP2007081601A (ja) 2007-03-29
CN101310446A (zh) 2008-11-19

Similar Documents

Publication Publication Date Title
JP4595650B2 (ja) 復号装置および復号方法
JP4293172B2 (ja) 復号装置および復号方法
KR101090001B1 (ko) 복호 장치 및 복호 방법, 및 기록 매체
KR101158919B1 (ko) 복호 방법 및 복호 장치, 및 기록 매체
US7587659B2 (en) Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
JP4622654B2 (ja) 復号装置および復号方法
KR101283087B1 (ko) 복호장치, 제어 방법, 및 기록 매체
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
US20030023917A1 (en) Node processors for use in parity check decoders
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
US10103751B2 (en) Non-concatenated FEC codes for ultra-high speed optical transport networks
US8281210B1 (en) Optimized correction factor for low-power min-sum low density parity check decoder (LDPC)
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP2007081602A (ja) 復号装置および復号方法
JP4284600B2 (ja) 復号装置
JP2008301152A (ja) 復号装置および方法、並びにプログラム
JP4822071B2 (ja) 復号装置および復号方法
JP2010028408A (ja) 情報処理装置、情報処理方法、およびプログラム
JP4821724B2 (ja) 復号装置および復号方法
JP4288582B2 (ja) 復号装置および復号方法、並びにプログラム
KR20180010535A (ko) Ldpc 복호화기의 슬라이스 절감 장치 및 그 방법

Legal Events

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

Ref document number: 200680042335.3

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: 2006797611

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 1020087008741

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 12066641

Country of ref document: US

ENP Entry into the national phase

Ref document number: PI0615710

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20080222