This application claims the benefit of Taiwan application Serial No. 105134927, filed Oct. 28, 2016, the subject matter of which is incorporated herein by reference.
The invention relates in general to a decoding method for a convolutional code decoding device in a communication system and an associated determination module, and more particularly to decoding method capable of adjusting the number of times of iteration of a convolutional code decoding process according to a symbol rate of convolutional code data received, and an associated determination module.
When a wireless signal is transmitted in a wireless channel of a wireless communication system, the wireless signal may encounter frequency and time selective fading while passing the wireless channel and become attenuated, which eventually leads to signal distortion. To alleviate the effects of the wireless channel, a transmitter in the wireless communication system may first perform processes including encoding, modulation and interleaving on data to be transmitted, and transmit the data wirelessly. As such, when a receiver in the wireless communication system receives the wireless signal, the receiver may perform processes including channel estimation, demodulation and error correction (ECC) decoding to restore the impaired reception signal.
A prototypic receiver includes a channel estimator and an error correction decoder. The channel estimator estimates a channel response to recover distortion of the phase and amplitude of the reception signal. The error correction decoder corrects bits with decision errors in the reception signal according to an error correction code. Common error correction codes include the convolutional code, low density parity check code (LDPC) and turbo code. As the turbo code is proven to approximate the Shannon limit of the transmission theory, the turbo code has been extensively applied in satellite communication, digital image transmission, and Third Generation Partnership Project (3GPP) Long-Term Evolution (LTE).
Multiple times of iteration calculation is needed in the decoding process of the turbo code to achieve outstanding accuracy. However, the numerous times of iterative operation significantly delays the speed of decoding. Therefore, there is a need for a solution that simultaneously attends to the decoding speed and the decoding accuracy.
The invention is directed to a decoding method capable of adjusting the number of times of iteration of a convolutional code decoding process according to a symbol rate of convolutional code data received, and an associated determination module.
The present invention discloses a decoding method for a convolutional code decoding device in a communication system. The decoding method includes receiving convolutional code data, determining the number of times of iteration according to a symbol rate of the convolutional code data, and performing an iterative decoding process for the number of times of iteration to decode the convolutional code data.
The present invention further discloses a determination module for a convolutional code decoding device in a communication system. The determination module includes: an arithmetic circuit, calculating a difference between a symbol rate of convolutional code data that the convolutional code decoding device receives and a symbol rate threshold as a difference signal; a determination circuit, generating a selection signal according to the difference signal; and a selection circuit, outputting one of a first length and a second length according to the selection signal as a sliding window length of an iterative decoding process that the convolutional code decoding device performs.
The above and other aspects of the invention will become better understood with regard to the following detailed description of the preferred but non-limiting embodiments. The following description is made with reference to the accompanying drawings.
More specifically, when the decoder in the communication system receives a codeword that is convolutional coded data coded by turbo coding, the decoding device 10 is applied to decode the codeword to generate output information OUT of a plurality of data bits U1 to Un of the convolutional code data (i.e., sequentially inputting the data bits U1 to Un as the data bit ui to the decoding device 10), and to accordingly determine the data bits U1 to Un. After the above iterative decoding process is performed, if the SISO decoding modules SISO1 and SISO2 adopt a maximum a posteriori probability (MAP) algorithm, the SISO decoding modules SISO1 and SISO2 need to individually calculate a forward state metric, a backward metric state and a branch metric state for different phases of receiving the convolutional code data, so as to further determine the MAP of each of the data bits U1 to Un. For example, when the decoding device 10 receives the convolutional code data, the SISO decoding modules SISO1 and SISO2 calculate the forward state metric, the backward state metric and the branch metric of phases L0 to Lj of the process of receiving the convolutional code data. In one embodiment, if the SISO decoding modules SISO1 and SISO2 are to calculate the forward state metric, the backward state metric and the branch metric of the phase Lk (0≤k≤j), the SISO decoding modules SISO1 and SISO2 calculate the forward state metric according to the convolutional code data that is received in the phases L0 to Lk, calculate the backward state metric according to the convolutional code data that is received in the phases Lj to Lk, and calculate the branch metric according to the convolutional code data that is received in the phase Lk+1 to Lk.
However, before the SISO decoding modules SISO1 and SISO2 calculate the backward state metric of the phases Lj to L0, the forward state metric and the branch metric of the phases L0 to Lj need to be first obtained. Thus, before the backward state metric of the phases Lj to L0 can be calculated and hence the MAP can be determined, the SISO decoding modules SISO1 and SISO2 need to finish receiving the convolutional code data at the phase Lj and calculate the forward state metric and the branch metric of the phases L0 to Lj. In this case, not only the SISO decoding modules SISO1 and SISO2 need to use a large amount of memory to store the forward state metric and the branch metric of the phases L0 to Lj, but the decoding device 10 also needs an excessively long decoding time.
To reduce the memory capacity needed and to increase the decoding speed, the SISO decoding modules SISO1 and SISO2 may adopt a sliding window architecture to reduce the data size needed for calculating the forward state metric, the backward state metric and the branch metric of each of the phases. For example, when the decoding device 10 receives convolutional code data, the SISO decoding modules SISO1 and SISO2 may divide the convolutional code data according to the size of the sliding window to obtain the phases L0 to Lj, and start calculating the forward state metric, the backward state metric and the branch metric needed as the phase L2 begins. More specifically, at the phase Lk (2≤k≤j), the SISO decoding modules SISO1 and SISO2 calculate the forward metric of the phase Lk−1 according to the convolutional code data that is received in the phases Lk−2 to Lk−1, and calculate the branch metric of the phase Lk−1 according to the convolutional code data that is received in the phases Lk to Lk−1. After the forward metric and the branch metric of the phase Lk−1 are obtained in the phase Lk+1, the SISO decoding modules SISO1 and SISO2 may calculate the backward state metric of the phase Lk−2 according to the forward state metric and the branch metric of the phase Lk−1. Next, the SISO decoding modules SISO1 and SISO2 may accordingly decode the convolutional code data that is received in the phases Lk−2 to Lk−1 after the backward state metric of the phase Lk−2 is obtained.
Further, to achieve the object of real-time decoding, the time that the decoding device 10 requires for performing the iterative decoding needs to be shorter than the time that the communication system requires for receiving the convolutional code data. Thus, the number of times of the iterative decoding performed by the decoding device 10 may be represented as an equation below:
number of times of iteration:
In the above equation, floor(x) is a function that obtains a maximum integer smaller than or equal to x (e.g., when x=3.14., floor(x)=3), clockcycle is a clock cycle of hardware in the communication system, FEC is the number of the decoding device 10 in the communication system, SR is a symbol rate of an output signal of a frontend circuit (e.g., the symbol rate of the convolutional code data received by the decoding device), tre_len is the length of the convolutional code data (e.g., the trellis length), DS is the number of unit data size in the convolutional code data (e.g., the number of the unit in tuples of convolutional code data), turbo_clk is the clock cycle of the decoding device 10, siso_num is the number of hardware in the SISO decoding modules SISO1 and SISO2 that processes the convolutional code data in parallel, SDW is the length of the sliding window. It should be noted that, in equation (1), C1 and C2 are parameters determined according to hardware characteristics of the communications system, wherein C2 is associated with the processing speeds of the SISO decoding modules SISO1 and SISO2. That is to say, the parameters C1 and C2 change along with hardware characteristics of different communication systems. In one embodiment, the parameters C1 and C2 are 2.2 and 10, respectively.
In brief, the denominator in the value of the function floor( ) is the time that the communication system requires for receiving the convolutional code data, and the numerator in the value of the function floor( ) is the time that the decoding device 10 requires to complete one round of iterative decoding. Thus, the value obtained though the equation (1) represents the number of times of iteration of the convolutional code decoding process that the decoding device 10 is capable of completing during the time in which the communication system receives the convolutional code data. That is to say, if the decoding device 10 adopts equation (1) to calculate the number of times of iteration that the decoding device 10 performs during the decoding process, the object of real-time decoding can be achieved.
In an embodiment of the present invention, the number of times of iteration that the decoding device 10 performs during the decoding process changes with the symbol rate SR of the convolutional code data to enhance the performance (e.g., the throughput) of the decoding device 10. When the symbol rate SR of the convolutional code data increases, the decoding device 10 increases the number of times of iteration performed within the convolutional code decoding process to maintain the decoding accuracy of the decoding device 10. In contrast, when the symbol rate SR of the convolutional coded data drops, the decoding device 10 reduces the number of times of iteration performed within the convolutional code decoding process. Because of the lower symbol rate SR of the convolutional code data, the decoding accuracy of the decoding device 10 still achieves the requirement of the communication system although the number of times of iteration is decreased. In other words, the number of times of iteration that the decoding device 10 performs within the convolutional code decoding process and the symbol rate SR of the convolutional code data are directly proportional. Thus, while achieving real-time decoding, the decoding device 10 is capable of enhancing the decoding performance.
In one embodiment, the decoding device 10 achieves the object of changing the number of times of iteration within the convolutional code decoding process according to the symbol rate SR of the convolutional code data through adjusting the length SDW of the sliding window. When the symbol rate SR of the convolutional code is increased, the length SDW of the sliding window is reduced to increase the number of times of iteration performed within the convolutional code decoding process to maintain the decoding accuracy of the decoding device 10. On the other hand, when the symbol rate SR of the convolutional code data is reduced, the length SDW of the sliding window is increased to reduce the number of times of iteration performed within the convolutional code decoding process. At this point, due to the lower symbol rate SR of the convolutional code data, the decoding accuracy of the decoding device 10 stills satisfies the requirement of the communication system although the number of times of iteration is reduced. That is to say, according to an embodiment of the present invention, the length SDW of the sliding window is adjusted according to the symbol rate SR of the convolutional code data received to determine the number of times of iteration performed within the convolutional code decoding process. By adjusting the length SDW of the sliding window (e.g., determining the number of times of iteration performed within the convolutional code decoding process) according to the symbol rate SR of the convolutional code data, the decoding device 10 is capable of simultaneously achieving real-time decoding and enhanced performance.
In one embodiment, when the number of times of iteration obtained according to the symbol rate SR and equation (1) is greater than 16, the decoding device 10 sets the length of the sliding window to SDW1, otherwise the decoding device 10 sets the length of the sliding window to SDW2. In this embodiment, the length SDW1 is greater than the length SDW2. That is to say, when the number of times of iteration is greater than 16, the decoding device 10 increases the length of the sliding window to reduce the number of times of iteration; conversely, the decoding device 10 increases the length of the sliding window to increase the number of times of iteration.
In another embodiment, when the symbol rate SR is smaller than a threshold SR_TH, the decoding device 10 sets the length of the sliding window to SDW1, otherwise the decoding device 10 sets the length of the sliding window to SDW2. In other words, the decoding device 10 determines whether the length of the sliding window is to be set to SDW1 to SDW2 according to the relationship between the values of the symbol rate SR and the symbol rate threshold SR_TH.
When the symbol rate of the convolutional code data is increased, the decoding device 10 reduces the length SDW of the sliding window to increase the number of times of iteration of the convolutional code decoding process.
The process of the above decoding device 10 determining the number of times of iteration of an iterative decoding process according to the symbol rate SR of the convolutional code data received may be concluded into a decoding method 50. As shown in
In step 500, the decoding method 50 begins.
In step 502, convolutional code data is received.
In step 504, the number of times of iteration is determined according to a symbol rate of the convolutional code data.
In step 506, the iterative decoding process is performed for the number of times of iteration to decode the convolutional code data.
In step 508, the decoding method 50 ends.
According to the decoding method 50, the convolutional code decoding device first receives convolutional code data, and determines the number of times of iteration of the iterative decoding process for decoding the convolutional code data according to a symbol rate of the convolutional code data. In one embodiment, the convolutional code decoding device adjusts the length of a sliding window of the iterative decoding process according to the symbol rate of the convolutional code data to further determine the number of times of iteration of the iterative decoding process. The length of the sliding window is a unit length used for dividing the convolutional code data. Through the decoding method 50, the convolutional code decoding device may reduce the length of the sliding window when the symbol rate of the convolutional code data is increased to increase the number of times of iteration of the iterative decoding process to maintain the decoding accuracy of the convolutional code decoding device. On the other hand, when the symbol rate of the convolutional code data is reduced, the convolutional code decoding device increases the length of the sliding window to reduce the number of times of iteration of the iterative decoding process. With the reduced symbol rate of the convolutional code data, the decoding accuracy of the decoding device 10 still achieves the system requirements although the number of times of iteration of the convolutional code decoding process is reduced.
In the above embodiments, the decoding device adjusts the number of times of iteration according to the symbol rate of the convolutional code data received, thereby simultaneously achieving real-time decoding and enhanced performance.
While the invention has been described by way of example and in terms of the preferred embodiments, it is to be understood that the invention is not limited thereto. On the contrary, it is intended to cover various modifications and similar arrangements and procedures, and the scope of the appended claims therefore should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements and procedures.
Number | Date | Country | Kind |
---|---|---|---|
105134927 | Oct 2016 | TW | national |