The present invention contains subject matter related to Japanese Patent Application JP 2008-012946 filed in the Japan Patent Office on Jan. 23, 2008, the entire contents of which being incorporated herein by reference.
1. Field of the Invention
The present invention relates to a device and a method for decoding, a program, and a recording medium, and particularly to a device and a method for decoding, a program, and a recording medium that make it possible to simplify operation involved in decoding.
2. Description of the Related Art
With recent remarkable progress of studies in, for example, a field of communication such as mobile communication and the like and a field of broadcasting such as terrestrial broadcasting, satellite digital broadcasting and the like, studies of coding theory have also been actively underway with an objective of improving efficiency of error correction coding and decoding.
A Shannon limit given by so-called Shannon (C. E. Shannon)'s channel coding theorem is known as a theoretical limit of code performance. Studies of coding theory are made with an objective of developing a code exhibiting performance close to the Shannon limit. Recently, low density parity check codes (hereinafter referred to as LDPC codes) as a coding method known from a long time ago have been attracting attention.
The LDPC code was first proposed by R. G. Gallager in “R. G. Gallager, ‘Low-Density Parity-Check Codes,’ IRE Transactions on Information Theory, 1962.” Thereafter the LDPC code drew renewed attention in “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, ‘Analysis of low density codes and improved designs using irregular graphs,’ in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998,” and the like.
It is becoming known from recent studies that the LDPC code offers performance close to the Shannon limit as code length is increased.
In a case of decoding data coded by an LDPC code system, an amount of calculation involved in the decoding tends to increase because the decoding includes operation using a predetermined function and the like. However, reducing the amount of calculation enables even devices having low processing power to perform decoding, be reduced in cost, and shorten a processing time. There is thus a desire to reduce the amount of calculation at a time of the decoding.
The present invention has been made in view of such a situation. It is desirable to reduce an amount of calculation involved in decoding coded data.
According to an embodiment of the present invention, there is provided a decoding device for estimating an information word before being coded. In the decoding device, a processing range is limited to a range narrower than values that can be assumed by a value used as input to the decoding device, and decoding including a process of performing an operation referring to a look-up table associating a value within the limited range with an operation result when the value is substituted into a predetermined function is performed.
The decoding can be decoding based on an LDPC coding system.
The look-up table can be referred to when a message from a check node to a variable node is calculated.
When a message from a variable node to a check node is calculated, an operation of limiting a range of the message to be output can be performed.
According to an embodiment of the present invention, there is provided a decoding method of a decoding device for estimating an information word before being coded. The decoding method includes the steps of: limiting a processing range to a range narrower than values that can be assumed by a value used as input to the decoding device; and performing decoding including a process of performing an operation referring to a look-up table associating a value within the limited range with an operation result when the value is substituted into a predetermined function.
According to an embodiment of the present invention, there is provided a computer readable program for controlling decoding of a decoding device, the decoding device estimating an information word before being coded. In the program, a processing range is limited to a range narrower than values that can be assumed by a value used as input to the decoding device, and the decoding including a process of performing an operation referring to a look-up table associating a value within the limited range with an operation result when the value is substituted into a predetermined function is performed.
According to an embodiment of the present invention, there is provided a recording medium on which the program is recorded.
In a decoding device and method, a program, and a recording medium according to an embodiment of the present invention, a table associating a value limited to a range narrower than values that can be assumed by a value used as input to the decoding device with an operation result when the limited value is substituted into a predetermined function is referred to perform decoding.
According to an embodiment of the present invention, it is possible to reduce an amount of calculation involved in decoding.
Preferred embodiments of the present invention will hereinafter be described with reference to the drawings.
The LDPC code decoding section 13 on a reception side receives a signal including noise from the channel 12, estimates the information word by performing decoding based on the rule of the encoding performed on the transmission side (LDPC coding performed by the LDPC coding section 11 in this case), and then outputs the information word to a processing section in a subsequent stage not shown in
In such a communication system, especially a communication system using turbo codes, LDPC codes or the like, iterative decoding using soft decision information is performed.
LDPC codes are not limited to communication systems as shown in
At a time of recording, the LDPC coding section 21 LDPC-encodes an information word, and then records the LDPC-encoded information word on a recording medium. At a time of reproduction, the LDPC code decoding section 23 reads a signal including noise from the recording medium, estimates the information word by performing decoding based on the rule of the encoding performed at the time of the recording (LDPC coding performed by the LDPC coding section 21 in this case), and then outputs the information word to a processing section in a subsequent stage not shown in
Description of the LDPC code will be added in the following. The LDPC code is a low density parity check code, and is a coding system presented by Robert G. Gallager in 1962. The LDPC code is a linear code characterized by a small number (low density) of non-zero elements in the parity check matrix of the LDPC code as compared with the total number of elements. It is known that the LDPC code exhibits an excellent bit error characteristic by iterative decoding, by being configured such that a short cycle is not included in the bipartite graph of the parity check matrix.
Generally, for a channel where noise and losses occur, an error correcting code is used to correctly estimate an information word on a reception side.
Letting H be a parity check matrix of M rows and N columns, an arbitrary codeword vector c of an LDPC code with a code length N satisfies
Hc=0 (1)
Equation (1) represents M parity check equations.
While the LDPC code is not particularly limited to a binary code, the following description will be limited to a binary code. However, this does not signify that the present invention to be described below is limited to binary codes.
The following Equation (2) is an example of the parity check matrix of an LDPC code.
Each row of the parity check matrix represents a parity check equation, and each column of the parity check matrix corresponds to a code bit. It is known that the LDPC code can be decoded by a message-passing algorithm on the basis of the parity check matrix or the bipartite graph.
The bipartite graph corresponding to the parity check matrix of M rows and N columns includes M nodes corresponding to a check, N nodes corresponding to a variable, and edges connecting nodes to each other. An edge corresponds to the position of a non-zero element in the parity check matrix. Only when an element of an mth row and an nth column is not zero, an mth check node and an nth variable node are connected to each other by an edge, where m is an integer of zero or more and less than M, and n is an integer of zero or more and less than N.
The decoding of an LDPC code by the message-passing algorithm is performed by propagating a message between nodes connected to each other by edges, and is performed by repeating a procedure as represented in a flowchart of
In step S11, a message from a variable node to a check node is initialized. Specifically, a message Qm,n propagated from a variable node to a check node is initialized to a received value Pn as an input to the decoding device. In the following, Pn is treated as a logarithm likelihood ratio.
Incidentally, in the following, description of the “received value” will be made. However, the description does not signify that the present invention is applied to only received values. In other words, the description does not signify that the present invention is applied only when a value received via a channel 12 as shown in
In step S12, a message from a check node to a variable node is calculated. This process updates a message Rm,n propagated from a check node to a variable node by performing an operation based on the following Equation (3).
In Equation (3), N(m) is a set of numbers of variable nodes connected to an mth check node, and αm,n=sign (Qm,n) and βm,n=|Qm,n| are respectively the sign and the absolute value of Qm,n. The function f is given by the following Equation (4).
In step S13, as a process at a variable node, a message from the variable node to a check node is calculated, and the syndrome of an estimated value of a codeword obtained by the hard decision of a decoding result is calculated. This calculation is performed by obtaining a posteriori logarithm likelihood ratio Qn by the following Equation (5).
In Equation (5), M(n) is a set of numbers of check nodes connected to an nth variable node. When iteration is further necessary, the message Qm,n propagated from the variable node to the check node is updated according to the following Equation (6).
The decoding by the message-passing algorithm repeats the process of step S12 and step S13 until an ending condition is satisfied. A codeword is finally estimated by the hard decision of Qn. In step S14, whether the iterative process is to be ended is determined. It is determined that the iteration is to be ended when a first condition or a second condition holds as follows.
First condition: Letting z be the estimated value of the codeword obtained by the hard decision of Qn, the iteration is ended when the syndrome Hz is zero.
Second condition: The iteration is ended at a point in time when a preset number of iterations is reached.
When either the first condition or the second condition holds in step S14, the process proceeds to step S15, where a decoding result is output to the processing section not shown in the figures. When the LDPC code is a systematic code, the estimated value of the information word can be obtained by removing a part corresponding to the parity of the estimated codeword and extracting a part corresponding to the information word. When neither of the first condition and the second condition holds, the process returns to step S12 to repeat the process from step S12 on down.
Description will be made of a configuration of a decoding device that performs such a process.
The LDPC code decoding device 50 shown in
The memory 51 is supplied with a received value as an input to the decoding device, and temporarily stores the received value. The received value stored in the memory 51 is supplied to the variable node processing operation unit 52. The variable node processing operation unit 52 is a part that performs the process of step S13 in the flowchart of
The check node processing operation unit 54 is a part that performs the process of step S12 in the flowchart of
A quantized received value Pn is input to the LDPC code decoding device 50 shown in
In this case, suppose that the input Pn to the LDPC code decoding device 50 is the value Pn of a digital signal resulting from conversion by an A/D (Analog/Digital) converter, for example, and is quantized with a quantization step q and a number 2M1 of quantization levels. That is, suppose that the value y of a received value after the quantization is associated with a value x before the quantization by the following Equation (7).
y=LIMIT1(q(└x/q┘+0.5)) (7)
Here, LIMIT1 is a function for performing an operation that limits the output to a range indicated by the following Equation (8).
However, an integral value, rather than the value y itself, is easier to handle for a numerical representation within the LDPC code decoding device 50. For example, when the internal representation is y′=y/q−0.5, y′ assumes an integral value between −M1 and M1−1. Thus, such a representation can also be made so that processing can be performed using an integral value.
The check node processing operation unit 54 in
The check node processing operation unit 54 shown in
In
In this case, when a value input to the operation sections 101-1 to 101-6 (when the operation sections 101-1 to 101-6 do not need to be individually distinguished from each other, the operation sections 101-1 to 101-6 will hereinafter be described as an operation section 101, and a similar description will be applied to other parts) is unknown, the operation based on the function f needs to be performed each time there is an input. However, when the input value can be assumed to some degree, a table associating the input value with a result of operation when the value is substituted into the function f can be prepared in advance, and the operation result can be output by referring to the prepared table.
That is, the operation of the function f can be implemented by referring to a look-up table (LUT) when the input is quantized to assume a finite number of values.
In addition, for the operation of the function f−1, a comparison operation comparing an input with fixed values f(0.5 q), f(1.5 q), f(2.5 q) and the like is performed, for example, and a configuration can be made such that zero is output when the input is f(0.5 q) or more, and that kq is output when, with an integer k>0, the input is f(q(k+0.5)) or more and less than f(q(k−0.5)).
The variable node processing operation unit 52 shown in
The operation sections 123-1 to 123-3 each perform the operation shown by Equation (8). Specifically, in this case, LIMIT1 performs the operation of Equation (8) on a result of the operation of Equation (6) so that a value referred to in F_LUT falls within a range between an upper limit and a lower limit determined by a constant M1.
In general, when a difference between adjacent levels (quantization step) of numerical values after quantization is made finer and the number of quantization levels is increased, degradation in bit error rate (BER) due to the quantization is suppressed, and an excellent decoding characteristic is obtained. However, when the quantization step is made finer, the operation becomes complicated, and the device is increased in scale. On the other hand, when the quantization step is made larger and the number of quantization levels is decreased, the operation is simplified but the degradation due to the quantization is increased.
In the check node operation of the LDPC decoding, nonlinear conversion is performed by the function f and the function f−1. Therefore, as the allowed range of an input value is wider, the check node processing operation unit 54 performs operation with higher accuracy, and a better decoding characteristic is obtained. On the other hand, as the allowed range of an input value is narrowed, the check node processing operation unit 54 performs operation with lower accuracy, and degradation due to quantization is increased.
Usually, the quantization step and the number of quantization levels are set such that the operation is not too complex within an allowable range of degradation due to quantization. For example, the quantization step and the number of quantization levels that can be represented by a minimum number of bits capable of achieving a bit error rate (BER) required at a specific signal to noise power ratio are selected.
A result of simulation when a concrete LDPC code is used is shown in the following. The LDPC code is a quasi-cyclic code with a code length of 2448 and an information bit length of 2312, and a matrix of 136 rows and 2448 columns as expressed by the following Equation (9) is used as a parity check matrix H.
H=[H0H1H2. . . H135] (9)
Here, each Hj (0≦j<136) represent a small matrix of 136 rows and 18 columns. H0 is represented by the following Equation (10). Incidentally, dots (.) in Equation (10) denote zero.
In addition, an element of an sth row and a tth column (0≦s<136, 0≦t<18) of Hj (0<j<136) is equal to an element of an (s+j) mod 136 row and a tth column, and the following Equation (11) is satisfied.
(Hj)s,t=(H0)(s+j)mod136,t (11)
The column weight of the parity check matrix H is 3, and the row weight of the parity check matrix H is 54. An LDPC code represented by such a parity check matrix H is a regular LDPC code.
The graph of
The graph of
Table 1 shows F_LUT inputs and outputs (for example, values respectively input to and output from the operation sections 101-1 to 101-6 in
When M1=12, a message Qm,n from a variable node to a check node assumes 24 possible numerical values from −11.5 to 11.5, and the absolute value βm,n of the message Qm,n assumes 12 possible numerical values from 0.5 to 11.5. Because the number of F_LUT output bits which number is determined by the output dynamic range of the look-up table LUT shown in Table 1 is 15, the size of F_LUT is a capacity of 12×15=180 bits.
For example, when a received value and a message are both represented by 5 bits, conversion by the above-described function f associates each value of 4 bits of the absolute value part of a message with 24=16 possible function values.
As another example, when a received value and a message are both represented by 6 bits, conversion by the above-described function f associates each value of 5 bits of the absolute value part of a message with 25=32 possible function values.
The capacity of a look-up table LUT with an input of a bits and an output of b bits is a size of 2a×b. The look-up table LUT may become more complex as the number 2a of quantization levels of the input is increased, and as the bit accuracy b of the output is increased. Accordingly, the input to the check node processing operation unit 54 of the LDPC code decoding device 50 is limited to a range narrower than values that can be assumed by the decoding device input (received value), so that the operation of the check node processing operation unit 54 is simplified.
The operation of LIMIT2 performed in the operation section 201 has an integer M2 as M2<M1, and limits the output of the operation to a range of −q(M2−0.5) to q(M2−0.5). That is, the operation of the following Equation (12) is performed.
Because the number of values that can be assumed by the input of the function f is decreased from M1 to M2, and because the dynamic range of a function output is reduced, a circuit necessary for the operation of the function f, for example, a LUT (look-up table) can be of a simple configuration. In addition, because the number of bits after conversion by the function f is decreased, the operations of the sum total, the subtraction, and the function f−1 in the check node processing operation unit 54 can be simplified.
It will next be shown using simulation results that the limitation of M2<M1 does not degrade BER performance when an appropriate M2 is selected. As in the above-described case, an LDPC code used in decoding simulation is a quasi-cyclic code with a code length of 2448 and an information bit length of 2312, and a matrix of 136 rows and 2448 columns as expressed by Equation (9) is used as a parity check matrix H.
It can be read from the graph of
Table 2 shows F_LUT inputs and outputs when M2=7.
When M2=7, a message Qm,n from a variable node to a check node assumes 14 possible numerical values from −6.5 to 6.5, and the absolute value βm,n of the message Qm,n assumes seven possible numerical values from 0.5 to 6.5. Because the number of F_LUT output bits which number is determined by the output dynamic range of the look-up table LUT shown in Table 2 is eight, the size of F_LUT is a capacity of 7×8=56 bits. This represents a reduction of about 69% as compared with the capacity of F_LUT in the above-described case of M1=12.
In addition, the number of bits of input for the sum total, the subtraction, and the function f−1 in the check node processing operation unit 54 is smaller than in the case of M1=M2=12, so that the operations can be simplified.
The graph of
In operation at a check node in a process of ordinary LDPC decoding, the operation of the following Equation (13) in Equation (3) is performed.
The operation expressed by this Equation (13) provides a value smaller than a minimum value of βm,n′=|Qm,n′|. That is, even when the absolute values (magnitude of reliability) of messages Qm,n from variable nodes to the check node are all large values, the absolute value (magnitude of reliability) of a message Rm,n from the check node to a variable node which message is obtained by Equation (3) is smaller than the absolute values of the messages Qm,n.
If the absolute values βm,n′=|Qm,n′| are all 6.5, because the column weight of the parity check matrix H is 54, the absolute value of the message Rm,n is a value shown in the following Equation (14), which value represents a very low reliability as compared with βm,n′=|Qm,n|=6.5.
f
−1(53×f(6.5))=2.5318 (14)
On the other hand, in the LUT defined in Table 2, the value of the function f corresponding to βm,n′=|Qm,n′|=6.5 is set at zero. Therefore F_INV when the absolute values βm,n′=|Qm,n′| are all 6.5 outputs six. Hence, the effect of suppressing a decrease in reliability even when reliability from a variable node to a check node is a large value improves BER characteristics as compared with the case of M2=16.
By thus limiting the input to the check node processing operation unit 54 to a range narrower than values that can be assumed by a received value as input to the LDPC code decoding device 50 (limiting a processing range), it is possible to simplify the operation of the function f and the operations of the sum total, the subtraction, and the function f−1 in the check node processing operation unit 54 with almost no degradation in decoding performance.
The series of processes described above including, for example, the process of converting an input value to an output value referring to a LUT can be carried out not only by hardware but also by software. When the series of processes is to be carried out by software, a program constituting the software is installed from a program recording medium onto a computer incorporated in dedicated hardware, or a general-purpose personal computer, for example, that can perform various functions by installing various programs thereon.
In the computer, a CPU (Central Processing Unit) 501, a ROM (Read Only Memory) 502, and a RAM (Random Access Memory) 503 are interconnected by a bus 504.
The bus 504 is further connected with an input-output interface 505. The input-output interface 505 is connected with an inputting section 506 formed by a keyboard, a mouse, a microphone and the like, an outputting section 507 formed by a display, a speaker and the like, a storing section 508 formed by a hard disk, a nonvolatile memory and the like, a communicating section 509 formed by a network interface and the like, and a drive 510 for driving removable media 511 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory or the like.
In the computer configured as described above, the CPU 501, for example, loads a program stored in the storing section 508 into the RAM 503 via the input-output interface 505 and the bus 504, and then executes the program, whereby the series of processes described above is performed.
The program executed by the computer (CPU 501) is, for example, provided in a state of being recorded on the removable media 511, which are packaged media formed by a magnetic disk (including flexible disks), an optical disk (CD-ROM (Compact Disk-Read Only Memory), DVD (Digital Versatile Disk) and the like), a magneto-optical disk, a semiconductor memory or the like, or provided via a wire or wireless transmission medium such as a local area network, the Internet, digital satellite broadcasting or the like.
Then, by mounting the removable media 511 in the drive 510, the program can be installed into the storing section 508 via the input-output interface 505. The program can also be received by the communicating section 509 via the wire or wireless transmission medium and then installed into the storing section 508. In addition, the program can be installed into the ROM 502 or the storing section 508 in advance.
Incidentally, the program executed by the computer may perform processing in time series in the order described in the present specification, or may perform processing in parallel or in necessary timing such, for example, as when a call is made.
In addition, in the present specification, a system refers to an apparatus as a whole formed by a plurality of devices.
It should be understood by those skilled in the art that various modifications, combinations, sub-combinations and alterations may occur depending on design requirements and other factors insofar as they are within the scope of the appended claims or the equivalents thereof.
Number | Date | Country | Kind |
---|---|---|---|
2008-012946 | Jan 2008 | JP | national |