|Publication number||US6484285 B1|
|Application number||US 09/499,600|
|Publication date||Nov 19, 2002|
|Filing date||Feb 7, 2000|
|Priority date||Feb 7, 2000|
|Also published as||CN1422459A, EP1258086A2, WO2001058025A2, WO2001058025A3|
|Publication number||09499600, 499600, US 6484285 B1, US 6484285B1, US-B1-6484285, US6484285 B1, US6484285B1|
|Inventors||Paul W. Dent|
|Original Assignee||Ericsson, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (25), Non-Patent Citations (7), Referenced by (72), Classifications (13), Legal Events (5)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention is directed toward a method for decoding information signals and, more particularly, toward a method for decoding information signals that have been error-correction coded in cyclic blocks and/or have been received through a medium that introduces Inter-Symbol Interference (ISI), such block-cyclic decoders generally referred to as tailbiting decoders.
FIG. 1 illustrates in path form a prior art Stack decoding method, implemented by a prior art Stack decoder, for decoding continuously convolutionally coded signals. The method is described for steady-state operation after the Stack decoder has been operating for a relatively long time in relation to any special start-up operations. At the instant depicted in FIG. 1, the Stack decoder has tested a number of possible sequences represented by paths moving from left to right one symbol, or node, at a time. Every time a path is extended by one symbol, all possible values of the new symbol have to be considered, resulting in a new fork. If the symbols are binary symbols, or bits, that can take on only one of two values, then the forks each have two times corresponding to the next binary symbol being either a “1” or a “0”. At each node just before a new fork is generated, a number of numerical quantities are stored in a memory (not shown) associated with the node. The quantities describe at least the path, or symbol history, by which the Stack decoder reached the node, and a cumulative probability value for that path.
For example, two probability values are depicted in FIG. 1, namely, a value P1 attached to a node 10 of highest probability, and a valve P2 attached to a node 12 of second highest probability. The description of the path can, for example, be a string of symbols representing which of the previous forks were taken to reach the current node plus the probability at the current node. Accordingly, at the node 10 the description may include the symbol string . . . 010101 and the probability value P1, while at the node 12 the description may include the symbol string . . . 00 and the probability value P2. Alternatively, the description can include the symbol corresponding to the last fork taken, plus a pointer to the preceding node at which that fork was taken. The latter is sometimes more memory-efficient as only one symbol need be stored at each node. If it is desired to reproduce the string of symbols along the path, a “trace-back” operation may then be performed.
The prior art Stack algorithm shown in FIG. 1 proceeds by extending the path of highest probability by one symbol and re-evaluating the probabilities for the extended paths. The path is extended by creating two new branches (in the case of binary symbols) from the previous node 10 of highest probability (P1). The two new branches are represented by dashed lines in FIG. 1 and end in two new nodes 14 and 16 for which new probability values xP1 and yP1 are respectively calculated. The sum of the multipliers (x+y) does not equal unity because the particular path chosen to be extended may be incorrect. The result of a trial-extension of an erroneous path may thus provide further evidence that the erroneous path was incorrect, reducing the probability of the path from P1 to (x+y)P1. Multiplying this reduced path probability by the conditional branch probabilities x/(x+y) and y/(x+y), which do sum to unity, the probability for the two extended nodes xP1 and yP1 are obtained. The new probabilities xP1 and yP1 are then compared to the probabilities of other paths, particularly to the previous second highest probability P2, and to each other, to determine the node now having the highest probability which will be the next node extended to become two new nodes, and so forth.
Since multiplying the probability P1 by x and y, respectively, both of which must be less than unity, can only reduce the probability below P1, it often happens in the prior art Stack algorithm that the previously second highest probability P2 becomes the highest. When the node 12 having the probability P2 is extended instead of one of the new nodes 14 (xP1) or 16 (yP1), this is termed “backtracking”, as the relative probabilities provide a hint that the path passing through the node 10 (P1) may not have been the correct path, and that decoding should perhaps be resumed along a previously abandoned path. Noise is one of the factors which may lead a Stack decoder astray along an incorrect path.
It is a disadvantage of the prior art Stack algorithm that, under noisy conditions, much backtracking takes place with a consequent increase in processing. The prior art Stack algorithm suffers from the deficiency that backtracking to any previously abandoned node, however far back (e.g., 10, 50, 100 or even 1,000 bits), could in principle occur, leading to the amount of computation required to determine the best path being unbounded. Consequently there is a need for improved Stack algorithms that do not suffer to the same extent from this deficiency.
In the prior art, the Stack algorithm was envisaged for continuous decoding, such as continuous convolutional decoding. However, as has been mentioned in the prior art, for example in “Error Control Coding” by Lin & Costello, (ISBN 0-13-283796-X), tail bits can be appended to a block of data prior to coding, the extra tail bits being transmitted so that the Stack decoder can end in a definitive end state. The use of tail bits adds additional redundancy and overhead to the transmission, causing the beginning and end bits to exhibit an improved error rate relative to bits in the middle of the transmission. This, however, may be of no utility since a lower error rate on all bits may be preferred, or alternatively, a transmission with lower overhead and therefore narrower bandwidth may also be preferred.
In a prior art decoding algorithm known as the Viterbi algorithm, the probability-indicating values are known as metrics. Because the Viterbi algorithm only compares probabilities for paths of the same length in symbols, indeterminate constants that add to, or multiply, the metrics do not affect the comparison, as they affect all paths alike. The Viterbi decoder can thus use simplified metrics which are the cumulative squared errors between hypothesized symbol coded values and received coded values. These simplified metrics are known as Euclidean distance metrics and are related to the logarithm of the reciprocal of the probability for the symbol sequence.
In the Stack algorithm, however, paths of different lengths must be compared, and the comparison is not then immune to additive terms that depend on the path length. Various methods are known to construct metrics for the Stack and similar algorithms that compare paths of different length. These metrics are generally Viterbi-type Euclidean-distance metrics modified by subtracting a value from the metric of a path every time the path is extended by one symbol. One such metric is known as the Fano metric which subtracts a value from the metric representative of the estimated mean square noise that is expected to be added per symbol extension, even to a correct path.
The present invention is directed toward overcoming one or more of the above-mentioned problems.
In a first embodiment of the present invention, a block of information symbols to be transmitted is generally regarded as a closed circle of information symbols. A coding algorithm is applied to the symbols lying in a segment of the circle to generate groups of coded symbols for each successive position of the segment, as the segment is moved around the circle one information symbol at a time. The groups of coded symbols are regarded as a closed circle of coded symbols corresponding to the closed circle of information symbols. The coded symbols are transmitted over a channel subject to error-inducing noise or other interference. This method of circular encoding is generally known as tailbiting.
A tailbiting, or Stack decoder according to the present invention receives the noisy signal and decodes it to reproduce the information symbol circle originally transmitted. The Stack decoder postulates information symbol sequences starting at any position around the circle, calculates likelihoods for the postulated symbol sequences by combining each sequence with corresponding soft-demodulated symbols, and extends the most probable sequence one symbol at a time until it either ceases to be the most probable sequence of those sequences tested, or until it extends completely around the circle. A sequence which successfully extends around the complete circle, and which remains the most probable sequence of those tested when the circle is complete, is the global optimum decoded sequence of the received signal. This is in contrast to prior art tailbiting Viterbi algorithms in which the most probable sequence among those sequences tested is not necessarily the global optimum.
In a second embodiment of the present invention, a coded or uncoded information symbol, or cyclic, block is modulated to form a transmitted signal block that is received at the decoder via a channel that introduces Inter-Symbol Interference (ISI). If desired, the inclusion of a short cyclic repeat of the transmitted signal by repeating a limited number of last-transmitted symbols of the block prior to the start of the transmitted signal block, or alternatively repeating a limited number of the first-transmitted symbols at the end of the block, or both, can force the ISI pattern to appear cyclic.
An inventive equalizing method for such signals includes postulating transmitted symbol sequences starting at any position within a cyclic block and calculating probabilities for the postulated sequences by combining the postulated symbols with the received signal. The most probable sequence is then extended successively by one symbol around the cyclic block until either it ceases to be the most probable sequence, or until the sequence extends completely around the cyclic block. A sequence which extends completely around the cyclic block while at the end still having the highest probability of all sequences tested is the global optimum equalization of the received signal. In this second embodiment of the invention, a tailbiting Viterbi equalizer may be used.
The inventive tailbiting Stack Algorithm used by the Stack decoder extends postulated sequences until the last symbol appended is the last symbol in the circle not previously postulated and adjacent to the first symbol postulated. There then remains a number L−1 of shifts of the decoding algorithm around the circle before it is once more in its starting position, where L corresponds to the constraint length of the encoder polynomials or the delay spread, in symbol periods, of a multipath channel. These L−1 final shifts are made to complete the likelihood calculation for the sequence and to use the remainder of the received signal samples, or soft-demodulated symbols, in the cycle that have not yet been processed. Once the last symbol in the circle is reached, the probability is updated L times in succession using previous values for the first L−1 symbols to obtain a “final” probability, or likelihood value, for the sequence. If the final probability value is still the highest probability value of all sequences tested, it is the global optimum decoded sequence and no other partial sequences need be extended. If not, the partial sequences having a higher probability are successively extended either until their probabilities fall below the already completed sequence of highest likelihood, or else until one of them becomes a complete circular sequence with a final probability that is greater than all other probabilities. Whenever a circular sequence is completed, all partial sequences having lower probabilities may be expunged to save memory, as they cannot be extended to obtain a higher probability (probabilities only decrease as the sequence is extended). The latter, desirable feature is not obtained in continuous, ie., non-circular, Stack decoders that do not ever reach a “final” probability.
The inventive Stack decoder may used to decode encoded and compressed digital speech data transmitted over a link subject to errors. Decoding may comprise decoding speech bits of lesser perceptual importance, and attempting to decode speech bits of high perceptual importance. When the Stack decoding algorithm for bits of higher perceptual importance fails to decode those bits within a given amount of time or given number of processor cycles, an erasure may be declared and passed to a speech decompressor which then uses previously correctly decoded speech data to construct an artificial fill-in waveform to mask the error event and thereby prevent unpleasant sounds, i.e., noise, interference, etc., from being heard by the listener.
Other aspects, objects and advantages of the present invention can be obtained from a study of the application, the drawings, and the appended claims.
FIG. 1 illustrates a prior art Stack decoding method for decoding continuously convolutionally coded signals;
FIG. 2 illustrates a prior art technique of tailbiting encoding an information bit circuit into a coded information bit circle;
FIG. 3 is a block diagram of a tailbiting Stack decoder according to the present invention;
FIG. 4 is a block diagram illustrating the Stack decoder of FIG. 3 performing a final burst-extension to obtain a pair of terminal probabilities;
FIG. 5 is a flow chart illustrating a method of tailbiting decoding according to the present invention;
FIG. 6 is a flow chart illustrating an alternate method of tailbiting decoding according to the present invention;
FIG. 7 illustrates a transmission format for transmitting a block of data bits to be decoded by the inventive Stack decoder; and
FIG. 8 illustrates the overlapping of relatively delayed echoes of a transmitted signal caused by reflections from objects at different distances from the transmitter or receiver causing InterSymbol Interference.
FIG. 2 illustrates a prior art technique of tailbiting encoding. In tailbiting encoding, the information bits to be encoded are generally considered as an information bit circle 20 (b1,b2,b3,b4,b5, . . . ). A tailbiting encoder 22 receives the information bit circle 20 and generates a corresponding coded information bit circle 24 of encoded bits (p1,p2,p3,p4,p5, . . . ).
The tailbiting encoder 22 operates on a finite number of bits at a time, called “the constraint length”, which in the example of FIG. 2 is equal to four. Thus, four bits at a time, for example b1,b2,b3,b4 as shown, are received by the encoder 22, which generates a number (exemplary 2) of encoded bits, or parity bits, p1,p2. The number of parity bits generated from each group of four information bits determines “the rate” of the encoding. The rate is usually denoted by “r” which has a numerical value equal to the reciprocal of the number of parity bits produced per information bit. In the example shown in FIG. 2, the encoding rate is equal to r=½. The encoder 22 moves around the information bit circle 20 one bit at a time to produce two parity bits from each group of four information bits, the parity bits completing the coded information bit circle 24 of coded bits corresponding to the circle 20 of uncoded information bits. It will be appreciated that the encoder 22 can process groups of four information bits in any order, and does not have to move around the circle 20 smoothly or in any particular direction, clockwise or counterclockwise, as long as every possible selection of four information bits is used once and only once.
Tailbiting encoders of different rates and constraint lengths are possible, as well as punctured tailbiting encoders or coders of variable rates, such as described in U.S. patent application Ser. No. 08/943,885 now U.S. Pat. No. 6,012,160 entitled “Protecting Important Information Bits Using Bits of Lesser Importance” of Dent filed Oct. 3, 1997, which is hereby incorporated by reference herein. The above application also describes Viterbi decoders for use with tailbiting encoders. A Viterbi decoder attempts to determine the information sequence with the highest probability of being the correct information sequence, i.e., the sequence that was actually transmitted.
In non-tailbiting applications, a Viterbi or convolutional encoder is initialized to a starting state using known symbols. The corresponding decoder is likewise initialized to a single starting state, which therefore has an associated probability of 100%. The first data bit is shifted into the encoder to generate the first of the encoded output parity bits which are transmitted to the decoder (receiver). The decoder hypothesizes that the first information bit was either a “1” or a “0”, and generates two new “states” from the single starting state. The new states also include associated probability indicators, commonly called “metrics”, obtained by comparing the received signal with the expected decoder output. With each successive new data bit presented to the decoder, the number of states of the decoder doubles but need never exceed M(L−1) where M is the number of possible symbol values in the symbol alphabet and L is the constraint length of the corresponding encoder. The number of states for binary decoding (M=2) does not therefore need to exceed 2(L−1) as the total number of bits, including one new bit hypothesis, needed to predict the received parity bits is equal to L. Bits older than those currently needed by the decoder to predict the next parity bits do not contribute to the number of states required, but rather pass into a “path history” associated with each state. If continuous convolutional coding is employed, long after the initial start-up, the oldest bits of all of the path histories will tend to agree, and when there is unanimous agreement on any bit, it may be removed as a “final” decision thereby shortening the path histories by one bit. If there is a need to shorten path histories before all states agree in any bit position, bits may be removed as final decisions from the state having the highest probability, and the corresponding bits in other states are deleted. These issues are discussed more fully in Dent U.S. Pat. No. 5,577,053, entitled “Method and Apparatus for Decoder Optimization” which is hereby incorporated by reference herein.
For convolutional encoding of finite blocks of data, however, a method of terminating decoding is required. The path history associated with the state of highest probability may be selected, but the last L−1 bits are still associated with the 2(I−1) states, and thus selecting the state of highest probability will give a poor reliability for these bits. This is particularly true for the most recently hypothesized bit, which has only had a single chance to affect the metrics. To provide reliable decisions for the final bits, one prior art method is to flush out the final data bits by applying L−1 known “tail bits” to the encoder. When corresponding tail bits are applied to the decoder, as these bits are known and have a single possibility rather than two possibilities, the number of remaining states is cut in half (assuming binary bits) after each tail bit has been processed until only a single state remains. The path history of that single remaining state contains the best decoding of the received signal.
The combination of the need to initialize and to terminate the encoder and decoder in known states by the use of known starting and tailing bits leads to a greater number of bits being transmitted than the number of information bits multiplied by the reciprocal of the coding rate r, and moreover leads to the first and last bits having a higher probability of being correct than those in the middle of the block. It may be more desirable to even-out the error probabilities if a method could be found to trade-off error probability between the boundary bits and the center bits of the block. Methods which delete or “puncture out” certain coded bits from the transmission can be used to do this, with the puncturing being more frequent towards the start or end of the block with the aim of obtaining a flat error probability over the block. The total number of coded bits punctured should be made equal to the number of coded bits added by using a tail, thus annulling the overhead of the tail bits. However, both the transmitter and the receiver are more complicated when puncturing patterns are used.
Alternatively, the additional transmitted bits caused by using tail bits might be traded off for more coding, i.e., a lower value of r, if the tail bits did not need to be transmitted. These issues are the reason for considering tailbiting encoders and decoders which treat every bit equally by considering blocks to be a circle of bits having no beginning or end, the beginning joining the end and thereby “biting its own tail”.
The tailbiting encoder 22 in FIG. 2 is initialized by entering the first L data bits b1,b2,b3,b4, which can be any group of four data bits in the information bit circle 20. When the encoder 22 has moved around the circle 20 so that b1 once more enters the encoder, encoding continues until the first L−1 bits b1,b2,b3 have been used again. The final position with b1,b2,b3,b4 does not need to be used as it will generate the same parity bits as the first time, which have already been placed in the coded information bit circle 24 and may already have been transmitted. Thus a tailbiting encoder generates exactly N/r encoded bits from N data bits, as no extra tail bits are added. This is in contrast with the use of tail bits which generates an extra (L−1)/r encoded tail bits. A tailbiting encoder may essentially become an encoder using tail bits if L−1 known tail bits are inserted into the information bit circle 20. This creates a “special” place in the circle marking a starting point and an ending point. The corresponding decoder should then perform the “special” operations of initialization to a single starting state at the beginning, and tapering off to a single ending state, leading to an improved error rate for data bits lying close to the “special” region. To even out the error rate, one might alternatively consider distributing the L−1 known tail bits uniformly throughout the information bit circle 20. The corresponding decoder would then, upon encountering a known bit, be able to eliminate some states and cut in half the number of remaining states, thus improving the error rate for bits lying close to the known bit. There are thus various options that can be considered for optimizing decoder coder performance other than the prior art of transmitting tail bits.
If no known, or tail, bits are used, the most common form of Viterbi decoder for tailbiting codes operates as follows. The decoder is initialized using all possible patterns of L−1 starting bits b1,b2,b3,b4 to generate 2(L−1) starting states. The number of states remains at this number (2L−1) as decoding progresses around the circle. Decoding does not terminate when one complete revolution has been made, however, but is allowed to continue and process previously processed signal samples again. If, for example, three complete cycles are performed and the decoded data bits are selected from a path history corresponding to the middle one of the three cycles, the theory is that the initial starting uncertainty present upon beginning the first cycle and the termination uncertainty remaining at the end of the third cycle are far enough removed so as not to affect the error rate of bits decoded in the middle cycle. This theory seems to be reasonably true when the number of bits in a cyclic block is many times greater than the constraint length of the encoder, i.e., 20. The theory becomes increasingly inaccurate as the cyclic block size is shortened to only a few times the constraint length. It can be shown that the inaccuracy for short block lengths is due to the Viterbi algorithm not having the opportunity to test substantially all of the possible paths before the beginning of the circle is encountered again. The Viterbi algorithm will, in this case, select only the best path tested, which does not always include the optimum decoding of the received signal. There is therefore a need for an improved decoding algorithm for tailbiting codes of block lengths that are not a large multiple factor of the code constraint length. Moreover, the coding polynomials for short tailbiting blocks can advantageously be different from prior art optimum convolutional codes of the same rate and constraint length. Optimum coding polynomials for tailbiting codes that give the maximum hamming distance between coded blocks and the minimum number of nearest neighbors are generally different for tailbiting than for continuous convolutional coding. The use of the optimum tailbiting polynomials may also increase the tendency of the prior art Viterbi decoder algorithm to fail to discover the optimum path.
In U.S. application Ser. No. 09/041,115 now U.S. Pat. No. 6,275,538 of Rajaram Ramesh filed Mar. 11, 1998, it is shown that the optimum Viterbi decoder for use with tailbiting coded signals comprises 2(L−1) Viterbi algorithms of 2(L−1) states. Each algorithm is an algorithm using tail bits, with the tail bits being assumed to be a different one of the 2(L−1) possibilities for each algorithm. In this manner, the best sequence is found that starts and ends in the same tail bits, and the best choice of the tail bits is identified by the algorithm that produces the best metric. The complexity of the optimum Viterbi algorithm for tailbiting codes is, however, the square of a normal Viterbi algorithm for codes using tail bits. There is therefore an unacceptable increase in complexity in using the optimum Viterbi decoder for tailbiting codes.
FIG. 3 illustrates a first implementation of the inventive tailbiting Stack decoder, shown generally at 30. The decoder 30 includes a receiver 32, a probability circuit 34, a comparison circuit 36, a memory 38 and an encoder 40. The receiver 32 receives a signal, represented by a line 42 comprising transmitted encoded data bits and develops received samples r1,r2.
The encoder 40 receives symbol sequences represented by paths moving from left to right. At the outset, from a single starting node 44 on the left, any decoding outcome is possible and one correct decoding must exist. Thus, the starting probability P equals 100%. Extending the first node 44 by one hypothesized symbol to two nodes 46,48 does not yet provide enough input to the encoder 40 to predict a coded bit, so the probabilities after the first extension at nodes 46,48 are just 50% each. The probabilities successively half with each further fork until eight nodes of path probability ⅛th (12.5%) are reached. Upon a further extension, four hypothesized symbols are available able to feed the encoder 40 and predict two coded bits p1 and p2. The probability circuit 34 receives the predicted bits p1,p2 and the corresponding received samples r1,r2, and develops a probability updating value x for the case b4=1 and a value y for the case b4=0. The probability values x and y for each possible path are calculated by the probability circuit 34 and fed to the comparison circuit 36 which analyzes the values and determines which path of symbols has the highest likelihood of corresponding to the received samples r1 and r2, i.e., the originally transmitted symbols. The probability values and the path histories of the various paths attempted are stored in the memory 38, and the path having the highest likelihood, as determined by the comparison circuit 36 is extended one symbol. Calculating values for x and y is preferably accomplished as follows.
There are four possibilities, 00, 01, 10 and 11, for the two coded parity bits p1,p2. The expected values of the received samples r1,r2 are any of the four possibilities These possibilities can be considered as being (a1,a2), (a1,−a2), (−a1,a2) and (−a1 ,−a2), where a1 and a2 are the expected signal strengths, or magnitudes, of received signal samples r1 and r2.
The values for a1 and a2 may be different due to the use of interleaving, namely, placing the transmitted parity bits p1 and p2 wide apart in time so that they experience different signal fading and thereby improving the tolerance of the coded communications system to fading by dispersing errors in time. The relative probabilities of the four possibilities are given by:
where σ1 and σ2 are the rms values of the noise on samples r1 and r2 respectively.
The rms noise values σ1, and σ2 on the two received signal samples r1 and r2 will generally not be equal either, again due to the effect of interleaving. The above expressions can be rewritten in more useful form by realizing that it is only necessary to preserve the correct probability ratios, rather than absolute probability values. A common scaling may be applied to the absolute probability values, preferably one which leaves the highest of the four probabilities still less than or equal to unity. This ensures that cumulative probability metrics can only successively decrease. Scaling results in the following probability metrics:
where z1, and z2 are the signal-to-noise ratios for samples r1 and r2 and s1,s2 are normalized values of r1,r2 with magnitude 1.
While the above metrics have different values than the originals, they bear the same ratio to each other providing that
The normalized values s1 and s2 may be taken as the signs of the received samples r1 and r2, with z1 and z2 equal to the magnitudes of r1 and r2 divided by the rms noise level on the corresponding sample. The receiver 32 may include a de-modulator (not shown) arranged directly to output values s1·z1 2 and s2·z2 2 instead of just Boolean 1's and 0's (corresponding to s1,s2=±1), which values are commonly known as “soft values”. Receiver demodulators that output soft values are, for example, described in Hammar U.S. Pat. No. 5,099,499, which is hereby incorporated by reference herein.
Since s1 and s2 are ±1, in the above metrics either the term in z1 vanishes if the received sign s1 matches the predicted parity bit p1, or the term in z2 vanishes if s2 matches p2. If both match, the relative probability value will be unity.
It should be noted that the above probabilities are relative probabilities. To obtain absolute probabilities, the sum of the four probabilities may be forced to be unity by dividing each by P(00)+P(01)+P(10)+P(11). However, the scaling that naturally results from the above formulae, in which the relative probability value is unity for the case where s1=p1 and s2=p2, is useful in the inventive Stack decoder. The path will not be penalized and thus will not become of lower probability than the second best path as long as all predicted polarities match the received signal polarities. The case where the sign of the received samples match the sign of the predicted samples is referred to herein as “zero syndrome”. Such a path (a zero syndrome path) will thus be extended indefinitely so long as no polarity errors occur, i.e., so long as the hard-decoding syndrome remains zero.
It may be more convenient to operate with cumulative addition of negative log-likelihoods than multiplicative accumulation of probabilities. When the negative logarithms of the above probabilities are taken a simple rule remains:
Add z1 2 to the metric if s1 and p1 are not the same polarity.
Add z2 2 to the metric if s2 and p2 are not the same polarity
Since the metric of the best path (that with the lowest cumulative metric) will still be the best metric so long as s1=p1 and s2=p2, zero syndrome paths will be rapidly extended without backtracking. When a polarity error (a non-zero syndrome) is encountered, the best metric is increased appropriately and the second best path may now have the lowest metric, i.e., becomes the best metric and will thus be extended. By using a metric that can only grow, a path which is successfully extended around the whole circle of information bits, while still at the end having the lowest metric, is assured of being the globally best path. No abandoned partial path, which already has a higher metric than the complete circular path metric, can ever reduce its metric and become the best metric, since at every path extension the metric is either increased or left the same.
A simplified explanation of the metrics is now provided. If ri is received signal values, and Si is the parity bit values (equal to +1 or −1) that are predicted from a given hypothesis of the underlying information bits, and ai is the signal amplitude at the time parity bit (i) was transmitted, then the cumulative path metric is given by:
where (σi is the standard deviation of the noise on received sample (i).
The first and last terms in the above metric are independent of the choice of symbol sequence Si so long as the symbols Si are of the same amplitude, e.g., +/−1 for binary. Therefore only the center term of the above metric is useful in discriminating the most likely sequence from the other lesser likely sequences. To minimize the overall metric, the negative center term should be made to be as large as possible.
The receiver 32 may be arranged to output directly the values
which are called “soft information”. Then the metric desired to be minimized by the choice of symbols Si is
This metric may increase or decrease every time the symbol Si is extended to Si+1. In order to produce a metric which can only increase when the symbol is extended, a value is added to the metric that does not depend on the choice of symbol sequence. The sum of the moduli of the soft information values is added, thus obtaining a new metric:
where si is the sign or phase of the soft information and Si is the sign or phase of the hypothesized bit or symbol. In the case of binary information where the factor (1−siSi) is zero if the signs of si and Si agree, and 2 if they disagree, the algorithm amounts simply to adding the magnitude of the soft information if there is a sign disagreement (a syndrome) or adding nothing if the signs agree (zero syndrome). Use of an only increasing metric ensures that a path that is selected to be extended because it has the minimum metric will continue to be the path with the minimum metric so long as no sign errors (syndromes) occur. Since zero syndromes are encountered for a high pro-portion of the time during decoding, paths are extended rapidly through the zero syndrome regions of the signal. Since the metric can only increase, if a path reaches the end while still having the lowest metric, no other path which already has a higher metric can possibly become lower by extending the path to the end. Only if another, incomplete path has exactly the same metric as a complete path may it be necessary to extend the incomplete path until either its metric exceeds the metric of the complete path, or until it reaches the end, also with an identical metric value. If there are two or more finally extended paths with the same identical metric value, either is equally likely to be the correct decoding of the received signal. Other information, such as a cyclic redundancy check (CRC) may be used to determine which one is correct. If CRC codes are used to provide error detection, one strategy can be to program the inventive Stack decoder to obtain any result which reaches the endpoint first, and perform the CRC check. If the CRC check indicates no errors the result is accepted. If the CRC check indicates errors, the result is rejected and the next best path is extended until a second best final metric is obtained. The CRC is performed on the second best final metric and the process continues until a result is accepted.
It is disclosed in Dent U.S. Pat. No. 5,577,053, incorporated by reference herein, that a decoder, such as a Generalized Viterbi Algorithm, can be used to produce a best decoded result, a second best decoded result and so on, in order of probability, and a CRC check used to find the result with the highest probability that passes the CRC check. The inventive Stack decoder/algorithm disclosed herein is more advantageous than the Generalized Viterbi Algorithm, as the latter (GVA) computes all the candidate results at the same time, while the Stack decoder/algorithm only need compute an additional candidate result if the previously computed result failed the CRC check.
When a path is extended to two new nodes, one of the new nodes may reuse the storage space in the memory 38 originally assigned to store the old node's probability metric and path history. If the traceback method is used to determine path history, however, at least a single bit of the path history and a pointer to a previous node must be retained at each node. If only the path history (i.e., the hypothesized symbol sequence that led to the node) is stored at the node, then old nodes that have been extended may be overwritten, thus making it difficult, if not impossible, to use the traceback method.
In the present invention of the tailbiting Stack decoder 30, when the last bit of a circular information symbol block has been hypothesized, there remain (L−1)/r as yet unused received signal samples, corresponding to the parity bits output from the transmitting encoder when the first L−1 information bits are fed into the transmitting encoder again to complete the circle of encoding. Since all information symbols are available on the path, the last (L−1)/r parity bits may be predicted, where “r” is the rate of the code, i.e., r=½ for one-half rate encoding, and combined with the corresponding received samples to produce a final metric in a final, burstwise-extension to complete the circle.
Thus, the inventive tailbiting Stack decoder/algorithm, when reaching the end of a cyclic block of symbols, performs a final burst-extension of L symbols all at once. The final burst-extension includes hypothesizing one final symbol and using the first hypothesized L−1 symbols again, leading to a pair of terminal metrics for a pair of paths differing in symbol N. If one of these metrics is still the smallest metric, no other path, which already has a greater metric, and therefore a lower probability, can ever attain a lower metric, and therefore a higher probability, by further extension. Thus the optimum decoded result has been identified which is the best, or Maximum Likelihood Decoding, of the received signal.
If, on the other hand, one of the terminal probabilities is not the lowest, other paths will now be extended until either they complete a full cycle to produce a better terminal probability, or until they exceed the best terminal probability. When no path has an associated probability that is lower than the best terminal probability, then decoding has terminated and the Maximum Likelihood Decoding is given by the symbols along the path leading to the best terminal probability (lowest terminal metric).
The process of performing a final burst-extension of L symbols to obtain a pair of terminal probabilities is shown in FIG. 4. A path which has already been extended to encompass hypotheses for bits bN−3,bN−2 and bN−1 is extended by hypothesizing bit bN. Since the extension will complete a circle of N bits, the encoder 40 will now have all the information needed to produce parity bit predictions for the cases
bN−3, bN−2, bN−1, bN
bN−2, bN−1, bN, b1
bN−1, bN, b1, b2
bN, b1, b2, b3
using the same values for b1, b2 and b3 as previously determined when the path began.
The above-identified cases are received by the encoder 40 in a burst to hypothesize the final eight parity bits 44, which are combined with the final eight received signal samples 46 in the probability circuit 34 to produce terminal branch probabilities x and y for the cases bN=1 and bN=0 respectively. These are combined, by the comparison circuit 36 (see FIG. 3) with the penultimate probability P at node bN−1 to produce terminal probabilities xP and yP, or alternatively, if negative log-likelihood accumulation is used, the probability circuit 34 calculates metrics x and y by adding soft values corresponding to non-zero syndromes detected between the final eight parity and received samples, and then the metrics x and y are added by the comparison circuit 36, to the penultimate negative log-likelihood P to obtain the two terminal metrics xP and yP.
If one of the two terminal metrics is determined by the comparison circuit 36 to have the highest of all probabilities (lowest metric), the symbols on the path leading to that probability are selected (for example by the traceback procedure) to be the Maximum Likelihood Decoding of the received signal. Otherwise, other paths are extended from other nodes until they fall below the best terminal probability (accumulate a higher metric) or until they produce a better terminal probability. All stored paths that have a lower probability than any terminal probability may be expunged to save and reutilize space in the memory 38.
A flow chart illustrating the above-described method is shown in FIG. 5. The method begins at step 50 where metrics for 2L−1 starting nodes are initialized. This may consist of initializing a number of nodes corresponding to all possibilities of the first L−1 bits to have, for example, zero log-likelihood metrics. Upon proceeding to step 52 for the first time, the Lth bit is hypothesized to be either a 1 or a 0, generating two branches to two new nodes. With L bits in the path history of these two new nodes, the encoder 40 can be operated for the first time to predict 1/r coded bits. The predicted coded bits are compared in polarity with soft information from the receiver demodulator and the metrics for the two new nodes are produced by adding the modulus of the soft information to the metric of the parent node only when the polarity disagrees. If, for one of the nodes, no polarity disagreements occur, i.e., the path is a zero syndrome path, that node will still have a zero metric and is selected to be extended further, in preference to one of the other starting states. Otherwise, one of the other starting states with an as-yet zero metric will be selected to be extended. It is possible that after the first execution of step 52 that the number of nodes will have increased to 2L by extending all starting states by one symbol. The method proceeds to step 54 where it is determined if all data symbols have been hypothesized along the just-extended path. If it is determined that the last new symbol is not the last symbol of the cyclic block at step 54, the method proceeds back to step 52, where the node with the lowest metric is extended one symbol, parity bits are generated, and metrics are calculated and compared to determine the path with the lowest metric (highest probability). If it is determined that the last new symbol is the last symbol of the cyclic block at step 54, then the method proceeds to step 56. At step 56, since all data symbols are now available along the just-extended path, all remaining coded bits in the circle of coded bits can be computed from the first-hypothesized symbols in the path history, and compared with corresponding soft information samples to produce terminal metrics for the two branches generated at the last node extension. The two terminal metrics are compared with the other metrics to determine if either of them is the lowest metric of all at step 58. If one of the terminal metrics is still the smallest at step 58, then no other metric can ever become lower, as upon extending a path a quantity is never subtracted from a metric. This being the case, the method terminates at step 60 indicating that the path history associated with that particular terminal metric is the best decoded result. If it is determined at step 58 that a metric other than one of the terminal metrics is lower, then the method returns to step 52 to extend the node with the lowest metric until either all metrics become higher than the lowest terminal metric, or another terminal metric is produced that is determined at step 58 to be the lowest of all. Thus, when at least one terminal metric has been produced, the flow chart of FIG. 5 should include an additional test, after step 52, to compare the metrics after a path extension to the lowest terminal metric, and to delete paths having a higher metric than the lowest terminal metric. These steps were omitted from FIG. 5 for simplicity, but are shown in FIG. 6 for completeness.
The flow chart of FIG. 6, begins with steps 50 and 52, similar to FIG. 5. After step 52, the method proceeds to step 62 where it is determined if there are any terminal metrics as yet. If not, then the method proceeds to step 54 and continues as previously described with respect to FIG. 5. If it is determined at step 62 that there is at least one terminal metric, then the smallest terminal metric is compared with the two new branch metrics just produced at step 64. If any branch metric is higher than the lowest terminal metric at step 64, then that branch (path and associated metric) is deleted at step 66 and the method proceeds to step 58 and continues as previously described with respect to FIG. 5. If it is determined at step 64 that neither of the two new node metrics are greater than that the smallest terminal metric, then the method proceeds to step 54 and continues as previously described with respect to FIG. 5.
It is possible that the receiver demodulator may output logarithmically encoded soft values in order to be able to represent received parity bits of widely different signal-to-noise ratios without requiring large wordlengths. Log-encoded soft values may either be converted to non-log-encoded values prior to metric accumulation, or alternatively logarithmic metric accumulation may be used by employing a process to produce the logarithm of the sums of a number of logarithmically encoded values, for example, by the process described in Dent U.S. Pat. No. 5,944,774 which is hereby incorporated by reference herein. The use of logarithmically encoded values also lends itself to any post-demodulator scaling or “digital AGC (Automatic Gain Control)” that may be needed to obtain soft values appropriate for use by the Stack decoder. Scaling logarithmic values is generally achieved by adding or subtracting a constant from them, as described in Dent U.S. Pat. Nos. 5,646,963, 5,615,231 and 5,568,518, all entitled “Fast Automatic Gain Control”, and which are all hereby incorporated by reference herein. However, other scaling may be implemented as will be apparent to those skilled in the art.
A typical application of the inventive decoder is in decoding encoded, compressed digital speech that has been received over a medium subject to errors, such as a cellular radio link. Speech is first digitized using linear PCM (Pulse-Code Modulation) at an exemplar sampling rate of 8 kilosamples/sec, or sometimes 16 kilosamples/sec. The linear PCM speech representation is then subject to a compression algorithm, such as various prior art algorithms known as ADPCM (Adaptive Differential PCM), RELP (Residually Excited Linear Prediction), CELP (Code Excited Linear Prediction), VSELP (Vector Sum Excited Linear Prediction) and AMBE (Advanced Multiband Excitation) that are used in various digital wireless telephone systems, and which have been ordered above according to the amount of compression achieved. AMBE achieves the maximum compression while preserving good speech quality at an output bit rate of 3.6 kilobits/sec.
Whenever speech is compressed by exploiting its high degree of redundancy and reducing the redundancy, the remaining bits carry more information than the original bits and cause greater disruption to speech quality if decoded in error. Depending on the type of compression used, the output bits may not be of equal perceptual significance in regard to the effect errors may have on speech quality. For example, in a known AMBE compressor yielding seventy two output bits per 20 ms, twelve of the bits are of very high perceptual importance and merit a higher degree of coding protection than the remaining sixty. Thus, bits may be divided into highly important, or class-I bits, and less important, or class-II bits. The class-I and class-II bits are coded using different amounts of error correction coding as described in the above-incorporated (Ser. No. 08/943,885) patent application. For example, the twelve most important bits may be encoded using a rate 1/5 code to obtain sixty coded bits, and the remaining sixty bits encoded using a rate 1/3 code to obtain 180 coded bits, totally 240 coded bits altogether The 240 coded bits may then be divided into two sets of 120 bits by means of a puncturing pattern, such as, in the simplest case, dividing the bits into groups of odd and even numbered bits respectively. The bits of one group represent the speech block coded using a first rate 2/5 and rate 2/3 code, and the second group represents the speech block coded using a second rate 2/5 and rate 2/3 code complementary to the first code, such that the two groups combined form an optimum rate 1/5 and rate 1/3 code. Either block may be transmitted alone using a first channel, such as a first time slot in a TDMA (Time Division Multiple Access) frame period, and the second block may or may not be transmitted using a second channel, depending on availability of the second channel. The two blocks may also be relayed via different orbiting satellites or cellular base stations to provide spatial diversity.
The coding of the most important twelve bits by a tailbiting coder is appropriate due to the alternative of using tail bits representing a very significant overhead that could better be used to increase the amount of coding, i.e., to reduce the rate “r” of the code. Such coding also has the feature that the length of the sequence coded, twelve bits, is not very much larger than the typical code constraint length. Special code searches tailored to this type of problem suggest optimum code polynomials that are different than the code polynomials that are optimum for continuous convolutional coding. These optimum polynomials were found, however, during simulation of decoding using a Viterbi algorithm (with wraparound for tailbiting) also to be the most susceptible to lead the Viterbi algorithm astray and thereby miss the maximum likelihood result. The current invention avoids this deficiency of the tailbiting Viterbi algorithm.
A constraint length eight, rate 1/5 punctured rate 2/5 tailbiting code applied to twelve data bits may be decoded by first initializing the inventive Stack decoder to 256 nodes, corresponding to all possibilities of the eight bits in the starting encoder state, and computing initial path metrics using the first five soft-demodulated received signal samples. Alternatively, for a punctured rate 2/5 code, the starting decoder state produces either two or three signal values while the following state produces three or two signal values to yield five coded signal values for every two data bit shifts. Due to being able to start tailbiting decoding anywhere in the circle of information bits, it can be advantageous to pick a starting point that yields three coded signal values rather than two, thereby providing initial metrics based on three soft demodulated received signal values that will differentiate incorrect paths from the correct path efficiently.
The algorithm proceeds by extending the path having the best (lowest) metric indicative of highest probability. Only four extensions are needed to complete the circle of twelve bits, after which a terminal metric may be computed for the best path by performing final burst-extension as previously described. If this final metric is still the best metric, it is the maximum likelihood result. Alternatively, the second best path would be extended, and so forth. If no maximum likelihood result is identified after a given amount of processing, an erasure is declared. When an erasure is declared, the voice decoder takes specific action to avoid outputting unnatural, unpleasant sounds, by known methods generally known as “deburping”, or known more academically as “speech interpolation” or “artificial parameter reconstruction”.
The maximum likelihood result is used to recompute a scrambling mask for the other 180 coded bits corresponding to the rate 1/3 code applied to the 60 bits of lesser importance. The recomputed scrambling mask is used to unscramble the 180 bits (or 90 in the case of a punctured rate 2/3 code). These 90 or 180 bits are then decoded by either a tailbiting Viterbi algorithm or by a second application of the inventive Stack algorithm. If the latter is used and fails to identify the maximum likelihood result after a second amount of processing, an erasure is declared. If, on the other hand, a tailbiting Viterbi algorithm is used, which is more likely to perform adequately due to the larger block size, it is allowed to decode the entire circle of bits with a wraparound or overlap such that the first decoded bits are decoded at least a second time, and decoding stops when either a sufficient number of bits decoded for the second time agree with the bits decoded on the first cycle, or decoding stops after a given overlap and the center circle of decoded bits, omitting the first and last decoded bits, is selected from the state having the best metric as the decoded result. A corresponding decoder metric for the selected bits must be calculated before the first of the circle of bits is decoded from the metric and just after the last of the circle of bits is decoded. This requires saving metrics at at least those two specific points during decoding. The final metric thus computed may be used as an indication of the reliability of the unscrambling mask, and therefore of the decoding of the twelve most important bits. If this reliability is too low, an erasure may be declared. When an erasure is declared for any of the above reasons, it is preferable to cause the speech decompressor to perform artificial reconstruction of a “best guess” for the speech waveform based on historical or surrounding correctly decoded speech blocks, rather than to pass erroneous bits to the speech decompressor. Derivation of artificial fill-in waveforms is described in Dent U.S. Pat. No. 4,532,636, which is hereby incorporated by reference herein.
Thus a new, tailbiting Stack decoder has been described above for processing soft information from a radio signal demodulator to decode a circular block of information bits. The new decoder does not suffer from the deficiency of the prior art Viterbi Algorithm of “missing” the true Maximum Likelihood result, and avoids the complexity of multiple Viterbi decoders. It also avoids the unlimited amount of back-tracking that can occur with prior art, non-tailbiting Stack algorithms, while avoiding the overhead of tail bits that may alternatively be employed to delimit block sizes.
Tailbiting may appear in other contexts in which the inventive Stack decoder/algorithm may be usefully employed. For example, FIG. 7 illustrates a transmission format shown generally at 70 for transmitting a block 72 of data bits b1-bn including a cyclic repeat 74 of the last bits of each transmitted block prior to transmission of the first bits of the block. FIG. 8 illustrates, at 76, the overlapping of relatively delayed echos caused by reflections from objects at different distances from the transmitter or receiver, causing InterSymbol Interference (ISI). Thus each received signal sample depends on a group of adjacent symbols according to the set of equations:
r1 . . . r(n) are received signal samples;
S1 . . . Sn are transmitted symbols; and
C0 . . . C4 are multipath propagation, ISI or “channel” coefficients.
The above equations are cyclic due to the inclusion of the cyclic preamble, suggesting that a cyclic or tailbiting equalizer may be appropriate to determine transmitted symbols S1 . . . Sn from the received symbols r1 . . . r(n) and thereby compensate for the ISI. One type of tailbiting equalizer that can be constructed according to the invention is a tailbiting Viterbi equalizer. The tailbiting Viterbi equalizer is appropriate when the number of symbols of ISI, that is the number L of symbols S1, S2 . . . on which each received sample r1, r2 . . . depends, results in the number of equalizer states 2L being reasonable for practical implementation. Numbers of states of the order of 16-64 are regularly employed in prior art equalizers, and numbers of states up to 256 are regularly employed in convolutional error correction decoders. Therefore, a reasonable number of states is a number less than or equal to 256, but with improvements in digital signal processing technology this number could double every 18 months according to Moore's law. The number L of symbols of ISI in the above example equations is five, which requires a 16-state tailbiting equalizer. In addition, the equalizer needs to know the ISI coefficients C0 . . . C4, commonly referred to as channel estimates. The most difficult case occurs when the channel estimates must be estimated at the same time as the unknown symbols S1 . . . Sn using only the n received values r1 . . . r(n), the problem then being known as “Blind Equalizing”. One type of Blind Equalizer is disclosed in Dent U.S. Pat. Nos. 5,557,645 and 5,619,533, which are hereby incorporated by reference herein. Blind, tailbiting equalizing will not be addressed herein. Instead, it is assumed that either the channel estimates C0 . . . C4 have been estimated by independent means, such as correlating with a pilot code or pilot symbols in the case of CDMA (Code Division Multiple Access) systems, or alternatively by agreeing a-priori between the transmitter and the receiver on some fixed values for some of the symbols S1 . . . Sn, from which the channel coefficients C0 . . . C4 can be estimated.
For example, if at least 2L−1 successive symbols such as S1 . . . S9 are pre-agreed constant symbols, then five equations, e.g., those for r5 . . . r9, are obtained for C0 . . . C4 in which no unknown symbols are involved. Thus, a single initial starting state having a single path history composed of the L symbols S1 . . . S5 and corresponding to a single initial L−1 symbol hypothesis S6 . . . S9 is obtained along with an as yet zero path metric and an initial set of channel estimates C0 . . . C4. Following initialization of the above single starting state, the next unknown symbol, S10 is hypothesized, first to be a Boolean “0”. Channel estimates C0 . . . C4 and symbols S6 . . . S10 are then used in the equation for r10 to predict the value of the signal sample r10 which should be received. The predicted value is subtracted from the actual received value of sample r10 and the square of the difference is added to the initially zero path metric to obtain a new metric which is the metric of a new state corresponding to the L−1 symbols S7 . . . S10, with S10 zero. S6 passes into the path history for that state, which will contain now S1 . . . S6. The procedure is repeated for S10 equal to Boolean “1 ” to obtain a second state corresponding to S7 . . . S10, with S10 one. These two states are in turn bifurcated by hypothesizing S11 and so forth until 2L−1=16 states have been created corresponding to all possibilities of S10 . . . S13. Thereafter, when S14 is hypothesized, it is hypothesized first using a state with S1=“0”, and then with S10=“1”. All other symbols being the same, that giving the best path metric is selected to be new state S11 . . . S14, with the value S10 from the state giving the best metric passing into the path history of that state. This procedure continues in conformity with the prior art Viterbi equalizer until the “tail” is encountered, at which point the inventive procedure for terminating a tailbiting decoder is employed.
The “tail” is encountered when the last bit Sn has just been hypothesized and the received value r(n) has been processed to update the path metrics. It remains to process received samples r1 . . . r4 which were not used to form initial channel estimates because at that time the equations for r1 . . . r4 involved the as yet unknown symbols Sn, S(n−1), S(n−2) and S(n−3). These unknown symbols however correspond at this point to the 16 states, with each state containing a different hypothesis for those symbol values. Since the remaining four equations for r1 . . . r4 depend only on known symbols S1 . . . S4 and the symbols associated with the states, the received samples r1 . . . r4 may be estimated for each state, using that state's values for S(n) . . . S(n−3) and S1 . . . S4 and the four estimated values of r1 . . . r4, subtracted from corresponding received values of r1 . . . r4 to provide a final updating of the metric of each state based on the four remaining received samples r1 . . . r4. The state having the lowest final updated metric then contains the best decoded result. Alternatively, the metrics may be updated by processing one received value at a time, starting with r1 and using the known value of S1 to obtain a number of states contracted by two to 2L−2, then r2 using S2 to obtain 2L−3 states, and so forth until a single final state remains containing the Maximum Likelihood Decoded result.
When the number of symbols of ISI would lead to an excessive number of states for a Viterbi equalizer, it is known to reduce the number of states by allowing some of the symbols in a row of the above equations to have already passed into path history, which is known generally as “per-survivor” processor or using DFE (Direct Feedback Equalizer) taps as known in the art. It is also known that DFE taps should preferably be associated with lower values of the channel coefficients Ci and “Viterbi taps”, or those L−1 symbols hypothesized to all different possible combinations of values in association with the number 2L−1 of states, should be associated with higher values of the Ci. If the first values, e.g., C0 . . . C3, are higher than values C4 . . . C(L−1), this is achieved by processing received samples in time-order of reception, i.e., moving clockwise around the tailbiting circle. Otherwise, if C(L−1) . . . C(L−4) are larger than C(L−5) . . . C0, then the r-values should be processed in reverse time order, i.e., moving counterclockwise around the tailbiting circle. It is also known to employ a prefilter to prefilter the received sample sequence . . . r1 . . . rn . . . to obtain a modified received sample sequence that appears to have been received through a modified channel described by modified channel coefficients. The modified channel coefficients may have any desired property, such as some large and others small, when the prefilter parameters are properly chosen.
It is also possible to initialize the tailbiting Viterbi equalizer to a starting condition comprising initial channel estimates using less than 2L−1 known symbols. Since the initial 2L−1 states each contain a hypothesis for L−1 symbols, it is required only that another L symbols be known and located before, after or among the L−1 symbols to provide a complete block of 2L−1 successive known or hypothesized symbols from which initial channel estimates can be calculated by solving L equations for each state. In this manner every state has a different set of channel estimates, as is disclosed in Gudmundson U.S. Pat. No. 5,164,961, which is hereby incorporated by reference herein. It is possible to reduce the number of known symbols required even further, to L−1, by estimating the channel only after hypothesizing another new data symbol as disclosed in U.S. patent application Ser. No. 09/426,374 to Bottomley, Dent and Lampe filed Oct. 25, 1999, which is hereby incorporated by reference herein.
Initial channel estimates made using the hypothesized symbols in each state as proposed above are not reliable channel estimates, accordingly, the channel estimates cannot sensibly now be used to demodulate the same received samples to confirm that the hypothesized symbols were correct. However, the channel estimates can be used to process new signal samples and update metrics until sample r(n) has been processed with a last symbol hypothesis Sn. At that point, the “tail” is encountered in which symbols S1 . . . S4 are used again to process r1 . . . r4 separate received sample hypotheses for which symbols may exist in the path history of different states if those symbols are not part of the L pre-agreed symbols. Thus, the final act of tailbiting comprises using the first L−1 symbols (separately selected from each state) together with the last hypothesized symbols S(n) . . . S(n−L+2) from the same state to process the first L−1 received samples to produce a final metric for the state. That state having the lowest final metric then contains the maximum likelihood result. whether the received samples r1 . . . r4 are processed as a block or one at a time, with contraction of the number of states by two if the associated “tail” symbol is a known symbol or not if it is an unknown symbol, depends on the way in which known symbols were interspersed with unknown symbols at the start of the block. The minimum number of states to which the tailbiting algorithm will taper upon encountering the tail is 2L−M−1 where m is the maximum number of known symbols that can be found in any consecutive L−1 symbols. When this minimum number of states is reached, the state having the lowest metric contains the desired result.
When the time dispersion, or ISI, extends over more symbols than can be handled by a Viterbi algorithm of reasonable complexity, a tailbiting Stack equalizer may be used instead. The Stack algorithm used by the Stack equalizer expands the number of nodes to be the same as the number of states of a Viterbi algorithm, unless a known starting state is available. Even so, not all nodes would be extended for every symbol processed, so such a Stack algorithm could still be useful. However, since it is common to include known symbols for the purpose of channel estimation, these may also be used to provide a starting state for a tailbiting Stack algorithm.
For example, assume that a block of information symbols, including a sub-block of known symbols, is transmitted over a time-dispersive channel. The information symbol block includes a cyclic repeat of the first-transmitted symbols at the end of transmission, or equivalently a cyclic repeat of the last-transmitted symbols at the beginning. The known symbol sub-block may be the symbols at the beginning and end, or may be located in the middle of the block. The known symbol sub-block preferably contains at least 2L−1 known symbols, where L is the number of symbol periods corresponding to the maximum multipath delay. This results in a number of equations containing only known symbols that is at least sufficient to solve for the L channel estimates C0 . . . C(L−1). The next equation, say the first equation in the above set, contains one unknown symbol (e.g., S1), the next equation contains two unknown symbols, and so-on. Therefore, the first equation may be used to provide an initial starting fork for a Stack algorithm by calculating the squared difference between the RHS and the LHS of the first equation for each possible value of S1 in turn. The resulting metrics are stored against an initial set of nodes corresponding to each possible value of S1. Moreover, the channel estimates can optionally be updated separately for each node on the assumption that the node's hypothesis for S1 is true. S1 is then used as an extra known symbol along with the previous known symbols to re-estimate the channel coefficients C0, C1, C2 . . . etc. An updated set of channel coefficients may optionally be stored against each node. If each node stores a separately updated channel estimate, the algorithm may be called a “Channel Model per Node” algorithm, analogous with the Channel Model per State algorithm disclosed by Gudmundson for the Viterbi equalizer.
The inventive Stack equalizer then proceeds by extending the path from the node having the metric indicative of highest probability (lowest metric value), hypothesizing all possible values of S2 to generate a further fork from the best node to date. Path extension continues until a fork is reached at which the last unknown symbol is hypothesized, for example, symbol S(n−4). Since the remaining symbols S(n−3), S(n−b 2) . . . S(n) are all known, the remaining equations not yet used may now all be used together in a burst-wise extension as previously described to complete the tailbiting circle and thereby obtain a final metric for each value of the last unknown symbol S(n−4). If one of these final metrics is still the best metric (lowest metric) of all stored metrics, possibly with an adequate margin, then the path history associated with the final metric is the desired Maximum-Likelihood Equalizing of the received signal.
When using the inventive Stack equalizer, it can be advantageous to either extend paths backward in time from the known symbol subgroup, or forward in time, depending on whether channel coefficient C(L−1) or C0 is larger. It is known in the prior art, for example in Dent U.S. Pat. No. 5,335,250, which is hereby incorporated by reference herein, that forward or backward demodulation can be advantageous using a Viterbi algorithm. Forward or backward demodulation is useful for the Viterbi algorithm when fading occurs within the signal block being processed, which, however, is not the motivation for choosing forward or backward demodulation for the inventive Stack equalizer. In the Stack equalizer, forward equalization is preferred if channel coefficient C0 is the larger channel coefficient, as this will result in the greatest effect on the metrics at the next fork causing rapid abandonment of false paths. On the other hand, if channel coefficient C(L−1) is larger, time-reversed equalization is preferred for similar reasons.
As described in U.S. patent application Ser. No. 09/378,314 filed Aug. 20, 1999 to Zangi and Hui, it is preferred that either C0 or C(L−1) be the largest of all channel coefficients in order to reduce the complexity of a Viterbi algorithm known as MLSE-PSP (Maximum Likelihood Sequence Estimation-Per Survivor Processing). This can be ensured by pre-filtering the received signal with a properly determined prefilter. However, when tailbiting is not available, the Viterbi algorithm must equalize the signal both forward and backward in time from the known symbol subgroup. This requires the computation and application of a first prefilter for forward demodulation that makes channel coefficient C0 the largest, and the computation of a second prefilter for backward demodulation that makes channel coefficient C(L−1) the largest. In the case of a tailbiting equalizer, however, demodulation can continue in the same direction, either forward or backward, to demodulate all symbols due to the cyclic extension. Thus, only a single prefiltering operation is necessary for the tailbiting Viterbi equalizer and possibly no prefiltering at all for the Stack equalizer. Prefiltering is not excluded, however, as it is well known that prefiltering by, for example, a matched filter, or a noise-whitening filter, or both, can be advantageous in demodulating the received signal.
In the Stack equalizer as opposed to the Viterbi algorithm, metrics are compared for paths of different lengths. Unlike the Stack decoder, the branch metrics are not easily characterized as having a “zero”or “non-zero” syndrome. Thus, to give a valid comparison between paths of different lengths, a Fano type metric can be used. For example, a value can be added to the metrics that is proportional to the number of symbols a path has remaining to complete the circle. The value to be added is equal to the mean square noise level on each received sample, which can be derived during channel estimation. When the channel is initially estimated or subsequently updated using known symbols, the equations containing only known symbols are solved, and the sum of the squares of the residual errors is divided by the number of equations used to obtain an estimate of the noise per received sample value. This value is multiplied by the number symbols remaining and added to the path metric. For example, the noise estimate can be multiplied by the number of symbols in the tailbiting circle and used as the starting metric for the initial node. Thereafter, after every path extension, the noise value is subtracted so that a path metric that grows no faster than the expected noise level per sample is not prematurely abandoned. If channel coefficients are updated and the noise estimate is updated after a path extension, the original noise value times the original number of symbols remaining is subtracted before the new noise value times the new number of symbols remaining is added.
Upon completing a circle, it may be required that the final best metric is lower than the second best metric by some integral number times the noise, for example, 3-6 times, so that the chance that the best metric found could be bettered by another path is at the 3-sigma or 6-sigma level of unlikelihood. In general, the Stack equalizer does not need to be a tailbiting equalizer and can be used to decode continuous transmissions, with appropriate choice of metric, e.g., a Fano metric.
A number of new applications for, and adaptations of, the Stack Algorithm have been described above, including decoding tailbiting convolutional codes and equalizing a signal received through a dispersive medium and suffering from considerable InterSymbol Interference. For the former, a new advantageous metric was proposed, which has the property that the first complete decoding found that has a metric indicative of highest probability (lowest metric value) that all other partial decodings tested, must be the Maximum Likelihood Decoding. Other metrics already known in the prior art may be alternatively used by a person skilled in the art, without departing from the spirit or scope of this invention as described by the following claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4532636||Jun 18, 1982||Jul 30, 1985||The Marconi Company Limited||Radio communications receivers|
|US4797887||Oct 22, 1986||Jan 10, 1989||Kokusai Denshin Denwa Co., Ltd.||Sequential decoding method and apparatus|
|US5099499||Sep 17, 1990||Mar 24, 1992||Telefonaktiebolaget L M Ericsson||Method of generating quality factors for binary digits obtained in the viterbi-analysis of a signal|
|US5164961||Oct 19, 1990||Nov 17, 1992||Telefonaktiebolaget L M Ericsson||Method and apparatus for adapting a viterbi algorithm to a channel having varying transmission properties|
|US5335250||Oct 22, 1992||Aug 2, 1994||Ericsson Ge Mobile Communications Inc.||Method and apparatus for bidirectional demodulation of digitally modulated signals|
|US5349589||Jul 1, 1991||Sep 20, 1994||Ericsson Ge Mobile Communications Inc.||Generalized viterbi algorithm with tail-biting|
|US5557645||Sep 14, 1994||Sep 17, 1996||Ericsson-Ge Mobile Communications Inc.||Channel-independent equalizer device|
|US5568518||Sep 14, 1994||Oct 22, 1996||Ericsson Ge Mobile Communications Inc.||Fast automatic gain control|
|US5577053||Sep 14, 1994||Nov 19, 1996||Ericsson Inc.||Method and apparatus for decoder optimization|
|US5615231||Jul 25, 1996||Mar 25, 1997||Ericsson Inc.||Fast automatic gain control|
|US5619533||Jun 3, 1996||Apr 8, 1997||Ericsson Inc.||Channel-independent equalizer device|
|US5646963||Jul 25, 1996||Jul 8, 1997||Ericsson Inc.||Fast automatic gain control|
|US5721746 *||Apr 19, 1996||Feb 24, 1998||General Electric Company||Optimal soft-output decoder for tail-biting trellis codes|
|US5790606||Feb 24, 1995||Aug 4, 1998||Ericsson Inc.||Joint demodulation using spatial maximum likelihood|
|US5920597 *||Sep 16, 1996||Jul 6, 1999||Ericsson Inc.||Decoding technique for tail biting codes|
|US5944774 *||Sep 26, 1997||Aug 31, 1999||Ericsson Inc.||Methods apparatus and computer program products for accumulating logarithmic values|
|US5974091 *||Oct 30, 1997||Oct 26, 1999||Communication Network Systems||Composite trellis system and method|
|US6012160||Oct 3, 1997||Jan 4, 2000||Ericsson Inc.||Method for protecting important data bits using less important data bits|
|US6088405 *||Jan 15, 1999||Jul 11, 2000||Lockheed Martin Corporation||Optimal decoder for tall-biting convolutional codes|
|US6192501 *||Aug 20, 1998||Feb 20, 2001||General Electric Company||High data rate maximum a posteriori decoder for segmented trellis code words|
|US6275538 *||Mar 11, 1998||Aug 14, 2001||Ericsson Inc.||Technique for finding a starting state for a convolutional feedback encoder|
|EP0611098A2||Feb 2, 1994||Aug 17, 1994||AT&T Corp.||Circular viterbi decoder for tail-biting convolutional codes|
|EP1001543A1||Jun 1, 1999||May 17, 2000||NTT Mobile Communications Network Inc.||Sequential decoder, and receiver using sequential decoder|
|WO1999060739A1||May 20, 1999||Nov 25, 1999||Ericsson Inc.||Partially block-interleaved cdma coding and decoding|
|WO1999063673A1||Jun 1, 1999||Dec 9, 1999||Ntt Mobile Communications Network, Inc.||Sequential decoder, and receiver using sequential decoder|
|1||*||Anderson et al., Tailbiting MAP Decoder, IEEE, pp. 297-302, Feb. 1998.*|
|2||Cox, R., et al., "An Efficient Adaptive Circular Viterbi Algorithm for Decoding Generalized Tailbiting Convolutional Codes," IEEE Transactions on Vehicular Technology, vol. 43, No. 1, Feb., 1994.|
|3||*||Gould et al., Single-Chip Design of Bit-Error-Correcting Stack Decoders, IEEE, pp. 768-775, May 1992.*|
|4||Orten, P., "Sequential Decoding of Tailbitimg Convolutional Codes for Hybrid ARQ on Wireless Channels", Houston, TX, May 16-20, 1999 New York, NY: IEEE, US vol. CONF 49, May 16, 1999, pp. 279-284, XP000899240 (all pages relevant).|
|5||*||Sadowsky, An Efficient List Viterbi Algorithm with Applicati9on to ML Decoding of Turbo Codes, Department of EE Arizona State University, pp. 1-27, 1998.*|
|6||*||Wang et al., An Efficeint Maximum likelihood Decoding Algorithm for Generalized Tail Biting Convolutional Codes including Quasicyclic codes, IEEE, pp. 875-879, 1989.*|
|7||Zimmerman, G., et al., "Application of a Simplified Fano Metric to Adaptive Receivers for Digital Mobile Radio Systems," European Transactions on Telecom. and Related Tech., May/Jun. 1994.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6701483 *||Aug 18, 2000||Mar 2, 2004||Alantro Communications, Inc.||Fast search-based decoding scheme|
|US6763493 *||Sep 21, 2001||Jul 13, 2004||The Directv Group, Inc.||Method and system for performing decoding using a reduced-memory implementation|
|US6766443 *||May 17, 2001||Jul 20, 2004||International Business Machines Corporation||Compression of execution path history to improve branch prediction accuracy|
|US6775801 *||Jul 24, 2002||Aug 10, 2004||Texas Instruments Incorporated||Turbo decoder extrinsic normalization|
|US6823027 *||Mar 5, 2001||Nov 23, 2004||Telefonaktiebolaget Lm Ericsson (Publ)||Method for enhancing soft-value information|
|US6912684 *||Mar 15, 2002||Jun 28, 2005||Mitsubishi Denki Kabushiki Kaisha||Error correction encoding method and apparatus, and error correction decoding method and apparatus|
|US6983008||Feb 6, 2002||Jan 3, 2006||Interdigital Technology Corporation||Base station for use in a CDMA communication system using an antenna array|
|US6985515||Aug 23, 2004||Jan 10, 2006||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US7096410 *||Jan 22, 2004||Aug 22, 2006||Sony Ericsson Mobile Communications Japan, Inc.||Turbo-code decoding using variably set learning interval and sliding window|
|US7120162 *||Aug 3, 2000||Oct 10, 2006||Skyworks Solutions, Inc.||System and method for processing audio and video data in a wireless handset|
|US7298760||Aug 28, 2006||Nov 20, 2007||Skyworks Solutions, Inc.||System and method for processing audio and video data in a wireless handset|
|US7447970||Jun 16, 2004||Nov 4, 2008||Seagate Technology, Inc.||Soft-decision decoding using selective bit flipping|
|US7545846||Dec 13, 2005||Jun 9, 2009||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US7684469||Dec 6, 2006||Mar 23, 2010||Interdigital Technology Corporation||Code division multiple access transmission antenna weighting|
|US7693239||Feb 8, 2006||Apr 6, 2010||Harris Corporation||Apparatus for decoding convolutional codes and associated method|
|US7813413||Dec 22, 2005||Oct 12, 2010||Interdigital Technology Corporation||Antenna array communication using spreading codes|
|US7953139||Jun 8, 2009||May 31, 2011||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US8000411 *||Jan 4, 2008||Aug 16, 2011||Qualcomm Incorporated||Decoding scheme using multiple hypotheses about transmitted messages|
|US8005136 *||Apr 12, 2010||Aug 23, 2011||Intersil Americas Inc.||Dual PDFE system with forward-backward Viterbi|
|US8063839||Oct 15, 2007||Nov 22, 2011||Quantenna Communications, Inc.||Tunable antenna system|
|US8064835||Jan 11, 2007||Nov 22, 2011||Quantenna Communications, Inc.||Antenna assignment system and method|
|US8077813||Feb 22, 2010||Dec 13, 2011||Harris Corporation||Apparatus for decoding convolutional codes and associated method|
|US8090060||May 4, 2007||Jan 3, 2012||Quantenna Communications, Inc.||Demodulation technique for GFSK and DPSK|
|US8091012 *||May 4, 2007||Jan 3, 2012||Quantenna Communications Inc.||System and method for decreasing decoder complexity|
|US8098774 *||Jun 16, 2008||Jan 17, 2012||Marvell International Ltd.||Methods and apparatus for providing a ML decoding pipeline for QPSK MIMO OFDM receivers|
|US8111790||Oct 20, 2008||Feb 7, 2012||Quantenna Communications Inc.||Mitigating interference in a coded communication system|
|US8136023 *||Nov 12, 2010||Mar 13, 2012||Stmicroelectronics (Beijing) R&D Company Ltd.||Decoding method for tail-biting convolutional codes using a search depth viterbi algorithm|
|US8201065 *||Dec 8, 2008||Jun 12, 2012||Marvell International Ltd.||Methods, algorithms, software, circuits, receivers and systems for decoding convolutional code|
|US8265207||Dec 21, 2011||Sep 11, 2012||Marvell International Ltd.||Methods and apparatus for providing a ML decoding pipeline for QPSK MIMO OFDM receivers|
|US8331210 *||Dec 23, 2008||Dec 11, 2012||General Electric Company||System and method for storage of data in circular data tracks on optical discs|
|US8332710 *||Mar 17, 2008||Dec 11, 2012||Qualcomm Incorporated||Packet-asynchronous hybrid-ARQ|
|US8443272 *||May 16, 2012||May 14, 2013||Marvell International Ltd.||Methods, algorithms, software, circuits, receivers and systems for decoding convolutional code|
|US8446998||May 4, 2007||May 21, 2013||Quantenna Communications, Inc.||Multiple antenna receiver system and method|
|US8489972 *||Oct 9, 2009||Jul 16, 2013||Nec Corporation||Decoding method and decoding device|
|US8571140||Sep 6, 2012||Oct 29, 2013||Marvell International Ltd.||Methods and apparatus for providing a maximum likelihood (ML) decoding pipeline for quadrature phase-shift keying (QPSK) multiple-input-multiple-output (MIMO) orthogonal frequency division multiplexing (OFDM) receivers|
|US8817916||Oct 28, 2013||Aug 26, 2014||Marvell International Ltd.||Methods and apparatus for providing a maximum likelihood (ML) decoding pipeline for quadruture phase-shift keying (QPSK) multiple-input-multiple-output (MIMO) orthogonal frequency division multiplexing (OFDM) receivers|
|US9036680||May 27, 2011||May 19, 2015||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US9209837||Apr 26, 2013||Dec 8, 2015||Marvell International Ltd.||Methods, algorithms, software, circuits, receivers and systems for decoding convolutional code|
|US9219522||Oct 11, 2010||Dec 22, 2015||Interdigital Technology Corporation||Code division multiple access transmission antenna weighting|
|US9245529 *||Jun 18, 2010||Jan 26, 2016||Texas Instruments Incorporated||Adaptive encoding of a digital signal with one or more missing values|
|US9270327||May 12, 2015||Feb 23, 2016||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US20020094016 *||Feb 6, 2002||Jul 18, 2002||Interdigital Technology Corporation||Base station for use in a CDMA communication system using an antenna array|
|US20020150180 *||Mar 5, 2001||Oct 17, 2002||Magnus Malmberg||Method for enhancing soft-value information|
|US20020184595 *||Mar 15, 2002||Dec 5, 2002||Yoshikuni Miyata||Error correction encoding method and apparatus, and error correction decoding method and apparatus|
|US20020194465 *||May 17, 2001||Dec 19, 2002||International Business Machines Corporation||Compression of execution path history to improve branch prediction accuracy|
|US20030061563 *||Sep 21, 2001||Mar 27, 2003||Bharath Venkataraman||Method and system for performing decoding using a reduced-memory implementation|
|US20030093742 *||Jul 24, 2002||May 15, 2003||Wolf Tod D.||Turbo decoder extrinsic normalization|
|US20050025224 *||Aug 23, 2004||Feb 3, 2005||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US20050172200 *||Jan 22, 2004||Aug 4, 2005||Taku Nagase||Data receiving method and apparatus|
|US20050283702 *||Jun 16, 2004||Dec 22, 2005||Yingquan Wu||Soft-decision decoding using selective bit flipping|
|US20060093020 *||Dec 13, 2005||May 4, 2006||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US20060098720 *||Dec 22, 2005||May 11, 2006||Interdigital Technology Corporation||Antenna array communication using spreading codes|
|US20060285530 *||Aug 28, 2006||Dec 21, 2006||Katibian Behnam S||System and method for processing audio and video data in a wireless handset|
|US20070091985 *||Dec 6, 2006||Apr 26, 2007||Interdigital Technology Corporation||Code division multiple access transmission antenna weighting|
|US20070178839 *||Jan 11, 2007||Aug 2, 2007||Behrooz Rezvani||Antenna assignment system and method|
|US20070201584 *||Feb 8, 2006||Aug 30, 2007||Harris Corporation||Apparatus for decoding convolutional codes and associated method|
|US20070268980 *||May 4, 2007||Nov 22, 2007||Quantenna Communications, Inc.||Demodulation technique for GFSK and DPSK|
|US20070283230 *||May 4, 2007||Dec 6, 2007||Quantenna Communications, Inc.||System and method for decreasing decoder complexity|
|US20080235552 *||Mar 17, 2008||Sep 25, 2008||Ming-Chang Tsai||Packet-asynchronous hybrid-arq|
|US20090116541 *||Oct 20, 2008||May 7, 2009||Quantenna Communications, Inc.||Mitigating interference in a coded communication system|
|US20090175387 *||Jan 4, 2008||Jul 9, 2009||Qualcomm Incorporated||Decoding scheme using multiple hypotheses about transmitted messages|
|US20090257472 *||Jun 8, 2009||Oct 15, 2009||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US20100020907 *||May 4, 2007||Jan 28, 2010||Quantenna Communications, Inc.||Multiple antenna receiver system and method|
|US20100150282 *||Feb 22, 2010||Jun 17, 2010||Harris Corporation A Delaware Corporation||Apparatus for decoding convolutional codes and associated method|
|US20100157757 *||Dec 23, 2008||Jun 24, 2010||General Electric Company||System and method for storage of data in circular data tracks on optical discs|
|US20100266007 *||Apr 12, 2010||Oct 21, 2010||Techwell, Inc.||Dual pdfe system with forward-backward viterbi|
|US20100324913 *||Jun 18, 2010||Dec 23, 2010||Jacek Piotr Stachurski||Method and System for Block Adaptive Fractional-Bit Per Sample Encoding|
|US20100324914 *||Jun 18, 2010||Dec 23, 2010||Jacek Piotr Stachurski||Adaptive Encoding of a Digital Signal with One or More Missing Values|
|US20110026496 *||Oct 11, 2010||Feb 3, 2011||Interdigital Technology Corporation||Code division multiple access transmission antenna weighting|
|US20110060972 *||Nov 12, 2010||Mar 10, 2011||Stmicroelectronics (Beijing) R&D Company Ltd.||Decoding method for tail-biting convolutional codes using a search depth viterbi algorithm|
|US20110228710 *||May 27, 2011||Sep 22, 2011||Interdigital Technology Corporation||Interference cancellation in a spread spectrum communication system|
|US20110235757 *||Oct 9, 2009||Sep 29, 2011||Nec Corporation||Decoding method and decoding device|
|U.S. Classification||714/791, 375/341|
|International Classification||H03M13/41, H03M13/39, H03M13/35|
|Cooperative Classification||H03M13/39, H03M13/35, H03M13/6516, H03M13/413|
|European Classification||H03M13/41Q, H03M13/65F3, H03M13/35, H03M13/39|
|Feb 29, 2000||AS||Assignment|
Owner name: ERICSSON INC., NORTH CAROLINA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DENT, PAUL W.;REEL/FRAME:010664/0003
Effective date: 20000119
|May 19, 2006||FPAY||Fee payment|
Year of fee payment: 4
|Jun 28, 2010||REMI||Maintenance fee reminder mailed|
|Nov 19, 2010||LAPS||Lapse for failure to pay maintenance fees|
|Jan 11, 2011||FP||Expired due to failure to pay maintenance fee|
Effective date: 20101119