This application relates to the field of telecommunications, and more specifically, to a system of forward error correction capable of reducing errors in received data. Reliable data transmission is an important issue for wireless transmission systems. forward error correction (FEC) schemes are widely used to improve the reliability of wireless systems. In recent years, some close to Shannon limit FEC schemes, such as Turbo codes and low density parity check (LDPC, have been adopted in high data rate systems. Many of these schemes include decoders that utilize the BCJR algorithm, proposed by Bahl, Cocke, Jelinek and Raviv in “Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate,” IEEE Trans. Inform. Theory, Mar. 1974, vol. IT-20, No. 2, pp. 284-287, the disclosure of which is incorporated herein by reference. The BCJR algorithm is a modified Maximum A Posteriori (MAP) algorithm. The objective of the BCJR algorithm is to obtain a good guess of the bit probabilities. These probabilities include systematic information and extrinsic information. The performance of the decoder is close to the Shannon limit.
Although the performance of the BCJR algorithm is near optimal, integrated circuit implementations of the BCJR based algorithm face two main challenges: latency and a large memory requirement.
Upon receiving a data frame fed into the BCJR algorithm based decoder, the decoder works in an iterative way. For each iteration, the decoder at first checks the data frame and extrinsic information generated in the previous iteration from head to tail and then from tail to head to collect decoding information. Based on the collected information, the decoder estimates the most likely possible input data. The estimation is fed back to the other decoder for the next iteration. This means that the BCJR based decoder must process the data from the beginning of the data frame to the end and then back before estimations are made during the iteration processing. After a certain number of iterations, the result of extrinsic information converges, and the process stops. For a data frame of n bits, the forward and backward information getting step takes 2n substeps, and the estimation step needs n substeps. Hence, latency of the BCJR algorithm is high. The BCJR decoder has to keep all of the decoding information until the extrinsic information is generated, and the extrinsic information must be stored for the next iteration. For a data frame of n bits and the turbo code space of S, 2×n×S memory units are needed to keep the information. So the memory requirement is large for the maximum a posteriori (MAP) algorithm.
In exemplary embodiments according to the present invention, a memory-efficient storage method (MESM) with module normalization and embedded storage technology is provided for the BCJR based decoder implementation to reduce memory requirements and speed up the decoder. MESM can be used to design Turbo and low-density parity check (LDPC) decoders.
The accompanying drawings, together with the specification, illustrate exemplary embodiments of the present invention, and, together with the description, serve to explain the principles of the present invention.
In the following detailed description, only certain exemplary embodiments of the present invention are shown and described, by way of illustration. As those skilled in the art would recognize, the invention may be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Like reference numerals designate like elements throughout the specification.
A memory-efficient storage method (MESM) uses a shared memory storage scheme to reduce the memory requirement for the Bahl-Cocke-Jelinek-Raviv (BCJR) algorithm and a two-way metrics update method to update metrics information and produce the extrinsic information to speed up the iterative decoding procedure.
In MESM, a shared storage scheme is used for the metrics information and system information, which is shown as the stacks 102, 104, 106, and 108 in
For convenience, the following table defines some of the main symbols used in this document.
The following example illustrates some of the underlying ideas of the BJCR algorithm. Assume an archaeologist finds a letter written by his ancestors hundreds of years ago. Some words on the letter have become unrecognizable due to the age of the letter, but the archaeologist can guess the unrecognizable words utilizing relationships among the words. He can guess the unrecognizable words more easily and correctly within a paragraph than he can with a single sentence. If there are enough useful words on the letter, the archaeologist can get all of the information that his ancestors wanted to tell.
The BCJR algorithm works in a similar manner by adding redundant bits into the source data with the relationship encoding algorithm. The source data and the redundant bits are transmitted together. The receiver gets a noisy version of the sent data. The BCJR based decoder scans the received data from head to tail to recognize the relationship forward metrics, and scans the data from tail to head to recognize the relationship backward metrics. Then, the decoder utilizes the metrics to determine the optimal decoding path from all possible paths. The optimal path is the best guess for all inputted data. For example, as illustrated in
According to the BCJR based decoder architecture illustrated in
where sεS, s ′εS, and ck is the value of the kth bit in the transmitted codeword. X is the received vector. αk−1 is the k-1th forward metrics. βk is the kth backward metrics. γk(s′, s) is the probability that system state transforms from the s′ state at the k-1th step to the s state at the kth step.
According to an exemplary embodiment, as illustrated in
where sεS, s ′εS, α0 and βlength are known, and probability γk(s′, s) is defined as:
The extrinsic information, LLek, is computed by extrinsic calculation blocks 110a and 110b utilizing αk−1 and βk:
Where sεS and s ′εS.
The procedure of the metrics update according to one exemplary embodiment is shown in
M=2×length×S.
Equations (1)-(4) illustrate three truths. The first is that a metrics update can be performed independently in the forward and backward directions, since a can be computed without the information of β, and vice versa. The second is that αk−1 is used in two cases: one for updating αk and another for calculating LLek. A similar case exists for βk. We also find that αk−1 and βk are useless after LLek is obtained from
In MESM, the same memory can be shared by forward and reverse metrics, α and β, and the BCJR based decoder performs the extrinsic and metrics computations at the same time. The procedure of MESM is as follows.
The initial forward and reverse metric information, α0 and βlength, is stored at the head (M0) and tail (Mlength) of the same memory space. Let kf=0 and kr=length, where length is an odd number. Let
In the forward direction, read (Mkf) and (Mkf+1) as αkf and βkf+1 respectively. Calculate αkf+1 with αkf, LLekf+1 with αkf and βkf+1. In the backward direction, read (Mkr−1) and (Mkr) as the αkr−1 and βkr respectively, calculate βkr−1 with βkr, LLekr with αkr−1 and βkr. Then, store αkf+1 and βkr−1 in (Mkf+1) and (Mkr−1) respectively. γkf+1 and γkr−1 are pushed in the stacks for the forward and backward directions, respectively.
When kf>h, γkf+1 and γkr−1 are popped out of the stacks for the αkf+1, βkr, LLekf+1 and LLekr calculation. LLekf+1 and LLek are outputted as useful extrinsic information, otherwise LLekf+1 and LLekr are discarded.
k
f
=k
f+1 and kr=kr−1. Return to 2 until Kr=1.
M=length×(S+1).
That is only half of the traditional method. All of the extrinsic information is obtained as soon as the metrics calculation is complete. According to
In MESM, if length is odd, the metrics are updated as illustrated in
According to the ideal BCJR algorithm, metrics at each step is a set of numbers between 0 and negative infinity (0 to the bound of the negative numbers in practice). The metric of one state closer to 0 means the state is the correct state on the optimal decoding path with higher probability. If ak(s) is the maximum, ak(s)=0, s is the correct state with the highest probability at the kth step in the forward direction. If βk(s) is the maximum, βk(s)=0, s is the correct state with the highest probability at the kth step in the reverse direction.
According to an exemplary embodiment of the present invention, module normalization can be used for the metrics update. In module normalization, the metrics, for example αk, are replaced by the normalized
with angle
Let αk(s1) and αk(s2) be real numbers with |αk(s1)−αk(s2)|<C. Let A be the angle swept out by counter clockwise motion along the arc from
αk(s1)>αk(s2), if and only if A<π.
This proposition can be interpreted in less mathematical terms when thinking of αk as runners in a race. If all the runners are running in one half the circle at all times (a very competitive race), it is very easy to determine who is the leader. Therefore, if the difference between αk is always less than half of the modular circle, the maximum of αk can be easily found regardless of the absolute position on the circle.
In module normalization, the modular arithmetic can be implemented by 2's-complement adders and subtractors. Let the 2's complement data range used in intelligent normalization be (−C, C). According to (6a) and (7a) in the log MAP algorithm, the normalization is already performed, if the following relationships are satisfied:
max Ak(s)−min Ak(s)<C, and
max Bk(s)−min Bk(s)<C.
The normalization in the BCJR can be simplified with module normalization.
If {αk−1(s′)} and {βk(s)} are obtained with module normalization, the contribution of the maximum of {αk−1(s′)} and the maximum of {βk(s)} will be maintained. The same result will be obtained with (2-3), if 2's complement calculation is used, and the following relationships are satisfied:
|max Pk+−max Pk−|<C;
max Pk+−min Pk+<C; and
max Pk−−min Pk−<C,
where:
max Pk+=maxsεS
max Pk−=maxsεS
Therefore, the procedure of finding the maximum metric is not needed. The process of BCJR at every step is simplified, and metrics update is sped up.
The penalty of the module normalization is the extra bit required to perform modular normalization. The bit width of module normalization can be determined with |max P+−max P−|<C in the BCJR algorithm.
According to the ideal of module normalization, the metrics are moved to new places where αk(0) and βk(0) always equal 0. Thus, {α(0)}={α0(0), α1(0), . . . , αlength(0)} and {β(0)}={β0(0), β0(0), . . . , βlength(0)} need not be stored in the memory. This technique may be referred to as embedded storage. It can reduce the memory requirement.
Since αk(0) and βk(0) are always 0 during the metrics and extrinsic information calculation, the operations using them can be omitted. Thus, embedded storage will not increase the computation load.
If the sliding window method is adopted in the implementation of the BCJR algorithm, MESM can also be used. The implementation block diagram of MESM is shown in
While the present invention has been described in connection with certain exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims, and equivalents thereof.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB09/51299 | 3/27/2009 | WO | 00 | 9/29/2010 |
Number | Date | Country | |
---|---|---|---|
61072185 | Mar 2008 | US |