Abstract:
A trellis code of a special class is encoded by employing a binary convolutional code with a small constraint length, followed by a convolutional processor and a signal mapper. The trellis code is decoded by the trellis of the binary convolutional code.

Description:
BACKGROUND OF THE INVENTION 
     In a digital communication system, the transmission of information will be corrupted by channel noise or other channel defects and hence transmission errors are likely to occur. In a digital communication system which requires high reliability, channel coding is usually needed to lower the probability of transmission errors. In a channel coding design, each unit or bit of digitized information will be mapped into a corresponding codeword (or code path). The set of all codewords is called a code. The distance property among codewords of a code can be used to correct transmission errors. In this way, the transmission reliability can be increased. The mapping between the set of information units or bits and the set of codewords is called &#34;coding&#34; or &#34;encoding&#34;. If the symbols in each codeword are binary symbols, the channel coding is a binary coding. Sometimes, the mapping is also referred to as a &#34;code&#34;. The procedure of recovering the information from the received symbols which are possibly error-corrupted is called &#34;decoding&#34;. 
     The binary trellis code is a frequently used channel coding technique. For a rate k/n binary trellis code, for each time unit, k information bits are fed into-the encoder which generates n code bits as output. The n code bits depend not only on the k information bits currently used as input to the encoder but also depend on information bits which were used as input to the encoder for some earlier time units. A binary trellis code is hence a kind of code with a memory. The codewords of a binary trellis code can be represented by paths in a trellis. The most important class of binary trellis codes is the binary convolutional code. A binary convolutional code is a linear time-invariant binary trellis code. Binary convolutional codes were introduced several decades ago and are still very popular. 
     In the 1982 paper entitled &#34;Channel coding with multilevel/phase signals,&#34; published in IEEE Trans. Inform. Theory., vol. 28, no. 1, pp. 55-67, G. Ungerboeck proposed a new idea of channel coding, in which the design of trellis codes and modulation are integrated, called trellis coded modulation (TCM). Consider the signal space 106 , which consists of 2 m  signal points {z 1 , z 2 , . . . , z 2m  }. Every signal point z in Ω corresponds to a unique binary m-tuple s=(s 1 ,s 2 , . . . , s m ) for z ε{z 1 , z 2 , . . . , z 2m  } and s 1 , s 2 , . . . , s m  ε{0,1}. The encoding of Ungerboeck&#39;s TCM having an information rate of r information bits per signal point of Ω is shown in FIG. 1. During the t-th time unit, the encoder of a binary convolutional code C converts the r-bit information u(t)=(u 1  (t), u 2  (t), . . . , u r  (t)) into an m-bit output s(t)=(s 1  (t),s 2  (t), . . . , s m  (t)), which is then mapped into a signal point ω(s 1  (t),s 2  (t), . . . , s m  (t))=ω(s(t)) of the signal space Ω through a signal mapper S. 
     Binary trellis codes and trellis coded modulation (TCM) can be combined as a class of codes called trellis codes. The performances of a trellis code are primarily evaluated by three parameters: coding rate, decoding complexity and probability of decoding errors. Designing a trellis code with high coding rate, low decoding complexity and low probability of decoding errors is always a goal in the area of digital communications. To achieve low probability of decoding errors for a trellis coding system, a large free distance is desired, where the free distance of a trellis code is the smallest one of all the possible distances, each of which is measured between a pair of distinct code paths of the trellis code. 
     In 1995, Lin and Wang in their U.S. patent application with application Ser. No. 08/398,797 filed on Mar. 6, 1995, now U.S. Pat. No. 5,570,391, proposed a class of trellis codes for which the encoding can be implemented by introducing a multilevel delay processor Q between the encoder of the binary convolutional code C and the signal mapper S. The encoding is shown in FIG. 2. During the t-th time unit, the encoder of a rate r/m binary convolutional code C converts the r-bit information u(t) into an m-bit output v(t)=(v 1  (t), v 2  (t), . . . , v m  (t)), which is fed into a multilevel delay processor Q. The output of the multilevel delay processor is s(t)=(s 1  (t), s 2  (t), . . . , s m  (t)), where s p  (t)=v p  (t-Σ i=p   m  λ i ), 1≦p≦m, with λ 1 , λ 2 , . . . , λ m  being nonnegative constants. Through the signal mapper S, a signal point ω(s(t)) in the signal space Ω is obtained as the final output symbol. The decoding of the class of trellis codes which can apply the encoding method illustrated in FIG. 2 can be implemented by using the trellis of C. 
     In this invention, the inventors design a new class of trellis codes for which the encoding can be implemented by modifying the above mentioned method by replacing the multilevel delay processor by a convolutional processor. In this way, a trellis code with a large free distance can be designed even though the constraint length of the binary convolutional code C is small. The inventors also propose a decoding method for the new class of trellis code which uses the trellis of convolutional code C. 
     SUMMARY OF THE INVENTION 
     This invention is a decoding method for the trellis code T for which the encoding can be implemented by first using the encoder E of a rate r/m binary convolutional code C to encode an information sequence u={. . . , u(t-1), u(t), . . . } into a sequence v={. . . , v(t-1), v(t), . . . } that is sequentially converted into a sequence s={. . . , s(t-1), s(t), . . . , } and a sequence ω={. . . ,ω(s(t-1)), ω(s(t)), . . . } through a convolutional processor P and a signal mapper S, respectively illustrated in FIG. 3, where u(t) is the r-bit information to be encoded during the t-th time unit of encoding, and v(t), s(t) and ω(s(t)) are the associated output symbols of E, P and S respectively. Note that v(t) and s(t) are binary m-tuples and ω(s(t)) can be either a binary m-tuple or a signal point of a signal constellation. The convolutional processor P is in fact an encoder having a rate m/m binary convolutional code, which can be characterized by a transfer function matrix as is described in the 1983 book, Error Control Coding : Fundamentals and Applications authored by Shu Lin and Daniel J. Costello, Jr. The transfer function matrix G for the convolutional processor is an m×m matrix for which the entry at the intersection of the p-th row and the q-th column is g.sup.(p,q) (X), i.e., 
     
         G= g.sup.(p,q) (X)!, p,qε{1,2, . . . , m},         (1) 
    
     where g.sup.(p,q) (X) represents the generator sequence (impulse response) for the case in which only the p-th input line of the convolutional processor is used as input and the q-th output line of the convolutional processor is used as output. The parameter g.sup.(p,q) (X) is written in polynomial form by ##EQU1## where α i .sup.(p,q) ε{0,1} and λ is a positive constant. 
     Referring to FIG. 4, assume that 
     
         Λ=max{iλ:α.sub.i.sup.(p,q) =1,1≦p≦m,1≦q≦m}. 
    
     The decoding method is implemented by two processors P( 2 ) and P.sup.(1). Let the received symbol be denoted by y(t), which is the possibly noise-corrupted form of the symbol ω(s(t)). The processor P( 2 ) takes the received sequence y={. . . , y(t-1), y(t),y(t+1), . . . , } as input. Based on {. . . , y(t), . . . , y(t+Λ-1), y(t+Λ)} and the transfer function matrix G and {. . . , v(t-λ-1), v(t-λ)}, the processor P( 2 ) determines M v (t), where M v (t) is the branch metric needed by the decoding trellis code T, for each of the 2 m  possible values of v(t). Then, the set T M  (t)={M v (t) : v(t)ε{0,1} m  } is fed into the processor P.sup.(1). 
     The processor P.sup.(1) takes the metric sequence {. . . , T M  (t-1), T M  (t)} as input and applies the Viterbi algorithm to the trellis of C to recover the transmitted symbols u(t-λ+1) and v(t-λ+1) by setting the truncation length of decoding for C to be λ. 
     The trellis code T can be generalized in such a way that g.sup.(p,q) (X) of the transfer function matrix is modified to be ##EQU2## where n p  is a nonnegative constant. Then, in the decoding, the parameter Λ is modified to be 
     
         Λ=max{n.sub.p +iλ:α.sub.i.sup.(p,q) =1,1≦p≦m,1≦q≦m}. 
    
     Note that if g.sup.(p,q) (X)=0 for p≠q and g.sup.(p,p) (X)=X r .sbsp.p.sup.λ+n.sbsp.p for 1≦p≦m, then trellis code T becomes a trellis code described in the U.S. Pat. No. 5,570,391, where r p  is a nonnegative constant. Hence, this invention is restricted to the case that g.sup.(p,q) (X) is nonzero for some pair of (p,q) with p≠q. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates the encoding method for the Ungerboeck&#39;s TCM; 
     FIG. 2 illustrates the encoding method for the trellis code proposed by Lin and Wang in March 1995; 
     FIG. 3 illustrates an encoding method of the trellis code T suitable for the proposed decoding method; 
     FIG. 4 illustrates the decoding method for the trellis code T; 
     FIG. 5 shows an 8PSK signal constellation; 
     FIG. 6 illustrates the encoder E of the linear binary convolutional code C used in the first embodiment; 
     FIG. 7 illustrates the state transition diagram of the linear binary convolutional code C used in the first embodiment; 
     FIG. 8 illustrates the relation between v(t) and s(t) for the first embodiment; and 
     FIG. 9 illustrates the simulation results for the first embodiment. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The preferred embodiment shows that it is possible to design a trellis code with a large free distance, which can be encoded by using the multilevel encoding method illustrated in FIG. 3. This embodiment demonstrates the powerful capabilities of the proposed decoding method. 
     The signal space Ω which consists of 2 m  signal points z 1 , z 2 , . . . , z 2m  can be partitioned into an m-level structure such that each signal point z corresponds to a unique binary m-tuple s=(s 1 ,s 2 , . . . , s m ) for zε{z 1 ,z 2 , . . . , z 2m  } and s 1 ,s 2 , . . . , s m  ε{0,1}. Let the mapping relation between z and s be ω(s)=z. The level distance Δ p  of the signal space Ω is defined as follows: ##EQU3## If Ω is a signal constellation then Δ(z,z&#39;) stands for the squared Euclidean distance between z and z&#39;, i.e., D 2  (z,z&#39;); and if Ω is a collection of binary m-tuples then Δ(z, z&#39;) stands for the Hamming distance between the binary representations of z and z&#39;, i.e., d(z, z&#39;). It can be said that the distance structure of the signal space is {Δ 1 ,Δ 2 , . . . , Δ m  }. For example, the 8PSK signal constellation can be partitioned into a three-level structure as shown in FIG. 5, for which the distance structure is described by 
     
         Δ.sub.1 =D.sub.1.sup.2 =0.586, Δ.sub.2 =D.sub.2.sup.2 =2, Δ.sub.3 =D.sub.3.sup.2 =4. 
    
     Moreover, for example, the collection of binary two-tuples Ω={0,1} 2  ={z 0  =(0,0), z 1  =(1,0), z 2  =(0,1), z 3  =(1,1)} can be partitioned as ##EQU4## 
     The distance structure for Ω is described by ##EQU5## 
     Consider the proposed trellis code T with the signal space Ω. Suppose that for each i there is at most one a i .sup.(p,q) =1 for all 1≦p≦m and 1≦q≦m. In the decoding, the bit metric can be calculated from the received sequence y={. . . , y(t), . . . , y(t+Λ-1), y(t+Λ)} by ##EQU6## where y(t) is the possibly noise-corrupted form of the transmitted symbol ω(s(t)). Note that the minimum value in the equation (4) is determined under the m constraints on the parameters, s 1 , . . . , s m , i.e., s k  =Σ h=1   m  Σ j=0  a j .sup.(h,k) v h  (t+ i-j!λ) for k=1,2, . . . , m. In general, not all of these m constraints can be set, since there may exist s k  which is determined by v h  (t+ i-j!λ) that is not yet recovered. For each k, if the constraint on Sk can not be set, we may remove the constraint on s k  in equation (4). However, in many cases, we may design schemes such that all the parameters s k , 1≦k&lt;q can be determined by the previously recovered results. Then, the branch metric M v (t) which is needed to decode trellis code T using the trellis of C can be easily calculated by summing the bit metrics of M v .sbsb.1.sub.(t), . . . , M v .sbsb.m.sub.(t). 
     With a proper design of the transfer function matrix, the free distance of T can be very large while the constraint length of C remains small. In the following, a design of the transfer function matrix for the trellis code T with an m-level form is given. 
     Let l 1  =ζ 1  =0 and let l 2 , l 3 , . . . , l m ,ζ 2 ,ζ 3 , . . . , be nonnegative constants. Let r p  =Σ i=p+1   m  (l i  +ζ i ) for p=1,2, . . . , m-1 and r m  =0. Set ##EQU7## 
     During the t-th time unit of encoding, the output of the convolutional processor is s(t)=(s 1  (t), s 2  (t), . . . , s m  (t)), where ##EQU8## 
     Consider the following example. Let m=3 and v=(. . . , (000), (000), (000), . . . ) and v&#39;=(. . . , (000), v&#39;(t)=(100), v&#39;(t+1)=(110), v&#39;(t+2)=(111), (000), . . . ). Let g.sup.(1,1) (X)=X 4 λ, g( 2 ,1)(X)=X 3 λ, g.sup.(2,2) (X)=X.sup.λ, g.sup.(3,3) (X) =1 and g.sup.(p,q) (X)=0 otherwise. Setting λ=3, the sequences v and v&#39; are converted into sequences s and s&#39;, which are respectively given by ##EQU9## 
     Then, using the 8PSK signal constellation, ##EQU10## for i=10,11,12,13,14. Thus, Δ(ω,ω&#39;)=D 2  (ω,ω&#39;)=0.586×5+2×2+4×1=10.93. 
     The free distance of T, denoted by Δ free , is the smallest one of all the possible distances, each of which is measured between any pair of two distinct symbol sequences ω and ω&#39; of T, i.e., ##EQU11## Note that if the signal space is a signal constellation then Δ free  =D free   2  is the squared free distance of T which is the smallest one of all the possible squared distances, each of which is measured between any pair of distinct symbol sequences of T. If the signal space is a collection of binary m-tuples then Δ free  =d free  is the free distance of T which is the smallest one of all the possible Hamming distances each of which is measured between binary representations of any pair of distinct symbol sequences of T. 
     For 2≦p≦m, let l p  &gt;.left brkt-bot.Δ p  /Δ p-1  .right brkt-bot.. Moreover, let ζ p  ≧ζ p-1  +l p  if l p  &gt;0 and ζ p  =0 if l p  =0. If the convolutional code C is not catastrophic, by taking λ to be a large enough number, it can be shown that the free distance of the trellis code T is ##EQU12## 
     Consider the following embodiment which is an 8PSK TCM using a 4-state binary convolutional code C. The encoder and the state diagram of code C are given in FIG. 6 and FIG. 7 respectively. The transfer function matrix of the convolutional processor is G with g.sup.(1,1) (X)=X 4 λ, g.sup.(2,1) (X)=X 3 λ, g.sup.(2,2) (X)=X.sup.λ, g.sup.(3,3) (X)=1 and g.sup.(p,q) (X)=0 otherwise. It can be checked that the path with the smallest free distance from the all zero path is the nonzero self-loop around the state S 00  as shown in FIG. 7. The squared free distance of the TCM is then Δ free  =D free   2  =0.586+2+2+4=7.17. The decoding for this TCM needs to use the trellis for the binary convolutional code C. The relation between s(t) and v(t) is shown in FIG. 8. At the (t+4λ)-th time unit of decoding, y(t+4λ), y(t+4λ-1), and y(t+4λ-2), . . . are already received. We assume that v(t-i) has already been correctly recovered for i≧λ. The decoding consists of the following steps. 
     Step 1 : We calculate the metric M v .sbsb.3.sub.(t) for each v 3  (t)ε{0,1} by min{Δ(y(t),ω(s)):s 1  =v 1  (t-4λ)+v 2  (t-3λ),s 2  =v 2  (t-λ), s 3  =v 3  (t)}. 
     Step 2 : We calculate the metric M v .sbsb.2.sub.(t) for each v 2  (t)ε{0,1} by min{Δ(y(t+λ),ω(s)) : s 1  =v 1  (t-3λ)+v 2  (t-2λ),s 2  =v 2  (t),s 3  ε{0,1}}+min{Δ(z(t+3λ),ω(s)) : s 1  =v 1  (t-λ)+v 2  (t),s 2  ε{0,1},s 3  ε{0,1}} 
     Step 3 : We calculate the metric M v .sbsb.1.sub.(t) for each v 1  (t)ε{0,1} by min{Δ(z(t+4λ),ω(s)) : s 1  =v 1  (t)+v 2  (t+λ),s 2  ε{0,1},s 3  ε{0,1}}, 
     where v 2  (t+λ) is estimated to be equal to s 2  which minimizes α(z(t+2λ),ω(s)) with s 1  =v 1  (t-2λ)+v 2  (t-λ). 
     Step 4: By summing M v .sbsb.1.sub.(t), M v .sbsb.2.sub.(t) and M v .sbsb.3.sub.(t), we have the branch metric M v (t). Then, we use the 4-state decoding trellis of the convolutional code C with a decoding truncation length of λ to recover v(t-λ+1). The decoding procedure is then back to step 1. 
     Simulation results for the embodiment using the above decoding method are given in FIG. 9, where λ=30. We see that a coding gain of about 3.5 dB over the uncoded QPSK is achieved at bit error rate of 10 -6 . 
     Finally, the binary convolutional code C used in encoding and decoding T can be replaced by the more general binary trellis code, or the encoder of the trellis code C can be replaced by encoders of a plurality of trellis codes which together convert u(t) into v(t), and which is then processed by the convolutional processor P and the signal mapper S; the Viterbi algorithm for C used in the processor P.sup.(1) being replaced by a plurality of Viterbi algorithms for the plurality of trellis codes. 
     As an alternative to summing bit metrics M v .sbsb.1.sub.(t), . . . , M v .sbsb.m.sbsb.(t) to calculate M v (t) in the situation where symbol v(t) is a binary m-tuple which can be expressed by v(t) =(v 1  (t), . . . , v m  (t)), the branch metric M v (t) may also be calculated by summing metrics M x .sbsb.1.sub.(t), . . . , M x .sbsb.L.sub.(t), 1&lt;L&lt;m, where M x .sbsb.j.sub.(t), 1≦j≦L, is calculated based on y(t+iλ), and i is determined by a corresponding transfer function matrix. 
     In addition, it will be appreciated that the information symbol u(f) can be replaced by l information symbols, i.e., u(t), u(t+1/l)), . . . , u(t+(l-1)/l); the output branch symbol of C, v(t) can be replaced by l output branch symbols of C, i.e., v(t), v(t+(1/l)), . . . , v(t+(l-1)/λ; the output symbol of P, s(t) can be replaced by l&#39; output branch symbols of P, i.e., s(t), s(t+1/l&#39;), . . . , u(t+(l&#39;-1)/l&#39;)); and the output symbol of S, ω(s(t+(l&#39;-1)/l&#39;)) can be replaced by l&#39; output branch symbols of P, i.e., ω(s(t)), ω(s(t+1/l&#39;)), . . . , (s(t+(l&#39;-1)/l&#39;)), where l and l&#39; are positive integers.