[0001] This application is an application filed under 35 U.S.C. § 111(a) claiming benefit pursuant to 35 U.S.C. § 119(e)(1) of the filing date of the Provisional Application 60/275,674 filed on Mar. 15, 2001 pursuant to 35 U.S.C. § 111(b).
[0002] The present invention relates generally to the field of error detection and correction for digital communications and more particularly to the area of turbo-coding and cyclic redundancy checking (CRC).
[0003] A known algorithm used for the correction of errors when data is transmitted in a noisy environment is known as turbo-decoding. In turbo-decoding, data bits to be transmitted are divided into block, and for each block, special bits are added and transmitted along with the data bits. The special bits that are added to each block enable the recovery of the original data, which is most beneficial in situations where the transmission is prone to noise that can corrupt the data when transmitted. The basic concepts involved in turbo-decoding are described, for example in Berrou, C., Glavieux, A. and Thitimajshima, P.,
[0004] The basic operation of a conventional turbo-decoder is discussed at length in the references mentioned above. Each of the conventional methods related to turbo-decoding discussed in the references mentioned above is based on several iterations performed on each block of data. As each iteration is conducted, gradually more and more errors are corrected until no further errors remain. In some real-time systems, the time dedicated to perform the iterations is limited and, thus, the decoding operation is stopped after several iterations, whether the data is error-free or not. This is one reason that it is important that the quality of the decoded data improve from one iteration to the next.
[0005] In addition to turbo-decoding, many practical systems use additional independent means to minimize the errors in the transmitted data. For example, in 3GPP standards for wireless communication, cyclic redundancy check (CRC) blocks are added to the transmitted data. The length of the CRC blocks may or may not coincide with the length of the turbo-decoder block. Each CRC block is attached at the end of a respective transport block. Subsequently, several such CRC blocks can be concatenated to form a code block.
[0006] Conventional methods of turbo-decoding only deal with cases where the coded frame contains a single CRC code block (where “block” means the original data and the CRC generated for the original data). For example, a device disclosed in U.S. Pat. No. 5,761,248, the disclosure of which is incorporated herein by reference for all it teaches, discloses a method for determining an adaptive abort criteria. Further, a device disclosed in U.S. Pat. No. 6,182,261, the disclosure of which is also incorporated herein by reference for all it teaches, stops the iteration process if the CRC check passes. Neither of the devices disclosed in these two patents addresses the situation where there is a plurality of CRC code words in the same coded data frame. Furthermore, the two patents mentioned do not describe how to handle, or even recognize, the situation where some of the CRC code words pass the CRC check and some of the CRC code words fail the CRC check.
[0007]
[0008] MUX (
[0009]
[0010] In particular, a Systematic Bit and a First Parity Bit enter Decoder
[0011] As shown in
[0012] The output from De-Interleaver (
[0013] An entirely turbo-decoded block of data must be written into the Interleaver (
[0014] Phase 1: through Decoder
[0015] Phase 2: through Decoder
[0016] Also, the length of a CRC block does not necessarily coincide with the length of the Turbo Decoder block.
[0017]
[0018] In view of the issues raised above in regard to inefficient and/or ineffective decoding, an object of the present invention is to provide a system and method of error correcting relative to data transmission in which time requirements and power consumption in the decode process are reduced.
[0019] To achieve the above-mentioned object of the present invention, a system in accordance with one embodiment of the present invention includes most of the functional structures required to carry out a conventional turbo-decode process, a process that is fully described in the references incorporated hereinabove. In addition to the functional structures traditionally required, however, a system in accordance with the present embodiment includes several novel functional structures for reducing both the time required to carry out the turbo-decode process as well as the power consumed by the system in the process.
[0020] For example, the present embodiment includes a turbo-coding system including a turbo-encoder for encoding data to be transmitted and a turbo-decoder for receiving the transmitted data as turbo code blocks and decoding the data. The turbo-decoder also verifies that the reliability of the received data is above a certain degree of reliability. The turbo-decoder in this embodiment includes a CRC checking unit that determines whether each code block either passes or fails a CRC checking algorithm. If the code block passes the CRC checking algorithm, the results of the CRC checking algorithm are fed back to the iterative turbo-decoding process. As a result of the information fed back from the CRC checking algorithm, the turbo decoding process is able to increase the speed by which errors are corrected and, thus, both time and energy are conserved.
[0021] In accordance with the present embodiment, when a code block passes a respective CRC check, an address calculator and a range check unit are activated. Also, until the CRC check unit determines that a particular CRC block passes the CRC check algorithm, an extrinsic saturation unit is controlled to be OFF. While in the OFF condition, the extrinsic saturation unit acts as a conduit for interleaved data leaving the interleaver unit, i.e., so-called ‘soft’ data, and the second decoder.
[0022] However, as soon as the CRC check unit determines a ‘pass’ result for a particular code block, the range check unit, which has been activated by the CRC check unit, turns ON the extrinsic saturation unit for all data corresponding to the code block that resulted in the passed CRC. The extrinsic saturation unit, thus, ‘saturates’ the extrinsic data for each of the bits of data that made up the passed CRC code block. In other words, the data into the turbo-decoder's second decoder is set at the data's corresponding maximal soft value.
[0023] The second decoder operates as usual on the saturated data and after decoding the data, passes the decoded data along to the De-Interleaver where the original order of the data is retrieved. Experience has shown that the saturated data, resulting from the code block that passes the CRC, will improve the performance of the of the Turbo decoder in such a way that bits that do not correspond to the passing CRC will get better soft symbols, and as a result, the turbo decode process is halted sooner than it would have been had the CRC check result not been injected into the intermediate processing of the overall turbo-decode process.
[0024] The invention as well as embodiments and advantages thereof are described below in greater detail, by way of example, with reference to the drawings in which:
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034] In particular, upon determining a ‘passed’ CRC check, Extrinsic Saturation block (
[0035] From the time the first turbo-decode iteration begins, and until a first CRC check results in a “pass” condition, the extrinsic saturation block (
[0036] When the CRC check unit (
[0037] In accordance with the present embodiment, half an iteration is consumed by the time the CRC makes its determination. In other words, half an iteration is wasted because after the first phase, as the data is output from Interleaver (
[0038] When symbols are read from Interleaver (
[0039] A description in accordance with the present embodiment in regard to the Address Calculator (
[0040] A task of the Address Calculator (
[0041] A task of the Range Check unit (
[0042] Referring to
[0043] As mentioned above, a task of the Range Check unit (
[0044] Thus, the Range Check unit (
[0045] In accordance with the present embodiment, the read address for each symbol read from Interleaver (
[0046] Thus, a real-time system results in which the turbo-decoding process is improved, by using the CRC result in the iterative turbo-decoding process, and power consumption is conserved since the iterative process is halted and a hard decision is forced for at least some of the decoded data as soon as the CRC determines a ‘pass’.
[0047]
[0048] However, for applications in which the latency required to update the data and rerun the turbo decoder process can be tolerated, an improvement over the conventional turbo-decoder process shown in
[0049] One of the advantages of the present invention over conventional turbo-code methods is that additional information, e.g., CRC data, is used throughout the turbo-decoding process. Using the additional information results in a smaller number of iterations, statistically, and, hence, lowers the overall power consumption of the encoding/decoding circuits.
[0050] The above description of the preferred embodiments has been given by way of example. From the disclosure given, those skilled in the art will not only understand the present invention and its attendant advantages, but will also find apparent various changes and modifications to the structures and methods disclosed. It is sought, therefore, to cover all such changes and modifications as fall within the spirit and scope of the invention, as defined by the appended claims, and equivalents thereof.