Abstract:
A method includes the steps of i) listing out all possibilities for a first symbol of a two stream signal; ii) determining a second symbol of the two stream signal for each of the first symbol listed out, iii) evaluating a metric for each of the first symbol and second symbol pair, iv) listing out all possibilities for second symbol, v) determining a first symbol for each choice of the second symbol listed out, vi) evaluating a metric for each of the second symbol and first symbol pair, vii) determining an exact maximum log likelihood ratio for all bits using the metrics, and viii) decoding codeword(s) in the two stream signal using the determined exact maximum log likelihood ratio for all bits.

Description:
[0001]    This application claims the benefit of U.S. Provisional Application No. 60/826,119, entitled “Novel two Stream Receivers For MIMO systems and their Extensions”, filed on Sep. 19, 2006, the contents of which is incorporated by reference herein. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    The present invention relates generally to mobile communications, and, more particularly, to two-stream receivers for multiple-input multiple-output MIMO systems and their extensions. 
         [0003]    In order to meet the ambitious spectral efficiency targets set for Evolved-UMTS Terrestrial Radio Access (EUTRA), low-latency and low complexity receivers are necessary. Such receivers are particularly needed at the user equipment (UE) where the complexity constraints are much more stringent. The most important scenario in the multiple antenna downlink system involves UEs with two antennas, where the base-station or the Node-B transmits two encoded streams to a scheduled UE. 
         [0004]    A known brute force maximum likelihood ML reception method  10  for two streams, depicted in  FIG. 1 , involves listing all possible pairs for symbols  1  and  2   11 , evaluating the metric for each pair  12 , using the metrics to determine the exact max-log LLRs (maximum log likelihood ratios) for all the bits  13  and decoding the codeword(s) using the computing LLRs  14 . Although the brute force ML method provides optimal demodulation it is highly complex. 
         [0005]    The main competing demodulators to the invention are the Deterministic Sequential Monte-Carlo (D-SMC) based receiver (another promising low-complexity receiver), shown in  FIG. 2 , and the successive interference cancellation SIC receiver, shown in  FIG. 3 . 
         [0006]    Complexity reduction is achieved with the D-SMC method by computing the soft output for each coded bit over only a reduced set of hypotheses. The price paid for this complexity reduction is that the D-SMC suffers from a problem, usually referred to as the “missing candidate problem”, in that the hypotheses (or candidates) necessary for computing the soft outputs for some of the bits may not be present in the reduced set. This missing candidate problem can cause significant degradation in the performance particularly if the reduced set is relatively small compared to the set of all hypotheses. Heuristic techniques to alleviate this problem in the D-SMC have also been proposed but such techniques require a lot of system or scenario specific fine tuning and may not work well under across all conditions. 
         [0007]    Referring again to  FIG. 2 , the D-SMC method  20  involves listing out a subset of possible pairs of symbols  1  and  2  for the two streams received  21 , evaluating the metric for each pair  22 , using the metrics to determine the approximate max-log LLRs for all bits  23  and decoding the codeword(s) using the computed LLRs  24 . Although the D-SMC reception method has tunable complexity, it also has sub-optimal demodulation due to “missing” candidate problem. 
         [0008]    In contrast to the D-SMC reception method, the SIC receiver is a sequential receiver where one stream is first decoded and subtracted from the received signal before decoding the second stream. The soft output for the first stream is obtained after assuming the second stream to be a Gaussian interferer which can lead to performance degradation. 
         [0009]    Referring again to the  FIG. 3 , the successive interference cancellation reception method  30  involves suppressing the contribution of symbol- 2  via filtering  31 , evaluating the metric for all possibilities of symbol- 1   32 , using the metrics to determine the max-log LLRs for all bits associated with symbol- 1   33 , decoding the codeword- 1  using the computed LLRs  34 , re-encoding the codeword which is then modulated and subtracted from the received signal  35 , listing out all possibilities for symbol- 2  and computing the metrics  36 , using the metrics to determine the max-log LLRs for all bits associated with symbol- 2   37 , and then decoding codeword- 2   38 . 
         [0010]    Accordingly, there is a need for two-stream receivers that are eminently suitable for receivers with low-latency and low complexity necessary to meet the ambitious spectral efficiency targets set for Evolved-UMTS Terrestrial Radio Access (EUTRA). 
       SUMMARY OF THE INVENTION 
       [0011]    In accordance with the invention, a method includes the steps of i) listing out all possibilities for a first symbol of a two stream signal; ii) determining a second symbol of the two stream signal for each of the first symbol listed out, iii) evaluating a metric for each of the first symbol and second symbol pair, iv) listing out all possibilities for second symbol, v) determining a first symbol for each choice of the second symbol listed out, vi) evaluating a metric for each of the second symbol and first symbol pair, vii) determining the exact maximum log likelihood ratio for all bits using the metrics, and viii) decoding codeword(s) in the two stream signal using the determined exact maximum log likelihood ratio for all bits. 
         [0012]    In another aspect of the invention, a method includes the steps of i)-viii) to decode the two codewords associated with the two streams ix) conducting a CRC check on the two decoded codewords x) In case the CRC of only one codeword is true, re-encoding, modulating and subtracting that codeword from the received signal to obtain a single stream signal, xi) listing out all possibilities for the remaining symbol in the single stream signal, xii) evaluating a metric for each possibility of the remaining symbol, xiii) determining the maximum log likelihood ratio for all bits using the metrics, and xiv) decoding the remaining codeword in the single stream signal using the determined maximum log likelihood ratio for all bits. 
         [0013]    In a preferred extension wherein the steps for two signal stream reception are extended to four signal streams received by splitting the four signal stream demodulation into two smaller two-stream signal demodulations. The two smaller two-stream signal demodulations can be solved sequentially as in successive group decoding or in parallel as in parallel group decoding. The parallel group decoding involves a split of the incoming four-streams (labeled { 1 , 2 , 3 , 4 }) into one of the three unordered partitions of { 1 , 2 , 3 , 4 } which are {( 1 , 2 ),( 3 , 4 )}, {( 1 , 3 ),( 2 , 4 )}, {( 1 , 4 ),( 2 , 3 )}. The split can be done on a per-tone basis (in an OFDM system with multiple tones) based on the instantaneous channel realizations, taking into account if the four streams are jointly encoded as in the single codeword (SCW) case or if they are independently encoded as in the multiple codeword (MCW) case. The sequential group decoding includes six ways to do the split which correspond to the six ordered partitions of { 1 , 2 , 3 , 4 } which are {( 1 , 2 ),( 3 , 4 )}, {( 3 , 4 ),( 1 , 2 )}, {( 1 , 3 ),( 2 , 4 )}, {( 2 , 4 ),( 1 , 3 )}, {( 1 , 4 ),( 2 , 3 )}, {( 2 , 3 ),( 1 , 4 )}, and needs the streams to be independently encoded with the split being common or fixed across all tones to allow post-decoding feedback. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0014]    These and other advantages of the invention will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings. 
           [0015]      FIG. 1  is a flow diagram of a brute force maximum likelihood two stream wireless reception, in accordance with the prior art. 
           [0016]      FIG. 2  is a flow diagram of Deterministic Sequential Monte-Carlo (D-SMC) two stream reception, in accordance with the prior art. 
           [0017]      FIG. 3  is a flow diagram of successive interference cancellation (SIC) two stream wireless reception, in accordance with the prior art. 
           [0018]      FIG. 4  is a flow diagram of max-log two-stream wireless reception, in accordance with the invention. 
           [0019]      FIG. 5  is a flow diagram of an enhanced max-log receiver for two stream wireless reception, in accordance with the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0020]    In the context of the invention, the joint demodulation of two streams is considered, each stream comprising of symbols from a constellation of size M. The exact max-log outputs for all 2 log(M) bits per symbol interval is obtained with O(M) complexity by evaluating the metrics of 2M hypotheses, instead of the conventional method of O(M 2 ) complexity which evaluates the metrics of all M 2  hypotheses. From this basis, the inventive max-log two-stream receiver is presented, which is flow diagramed in  FIG. 4 . 
         [0021]    In another aspect of the invention, there is presented a two-stream enhanced max-log receiver where the max-log receiver is first used to decode the two codewords. In case only one codeword is decoded correctly, the correctly decoded codeword is re-encoded, modulated and subtracted from the received signal. Using the signal so obtained, the remaining codeword (which was erroneously decoded in the first attempt) is again decoded. The inventive enhanced max-log receiver is flow charted in  FIG. 5 . 
         [0022]    Also, described are methods to extend the inventive two-stream receivers to multiple streams, with particular emphasis on the four stream case which is another important scenario. 
         [0023]    Referring again to  FIG. 4 , the inventive max-log reception method  40  includes listing out all possibilities for symbol-i  41 , for each choice of symbol-I efficiently finding the best choice of symbol- 2  and evaluating the metric for that pair  42 , listing out all possibilities for symbol- 2   43 , for each choice of symbol- 2  efficiently finding the best choice for symbol- 1  and evaluating the metric for that pair  44 , using the metrics to determine the exact max-log LLRs for all bits  45 , and decoding the received codewords using the computed LLRs  46 . This inventive max-log reception method provides optimal demodulation with low implementation complexity. 
         [0024]    We now describe the inventive two stream max-log demodulator. Consider the model 
         [0000]    
       
         
           
             
               
                 
                   y 
                   = 
                   
                     
                       H 
                        
                       
                         [ 
                         
                           
                             
                               
                                 x 
                                 1 
                               
                             
                           
                           
                             
                               
                                 x 
                                 2 
                               
                             
                           
                         
                         ] 
                       
                     
                     + 
                     v 
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0000]    where, H is the N×2 channel matrix (N≧2), v is the additive noise having i.i.d. zero-mean unit variance Gaussian elements. x 1  and x 2  are symbols from a common M-QAM constellation. Let H=[h 1 ,h 2 ] and H=∥h 2 ∥ 2  UL be the modified QR decomposition of H with U being a scaled semi-unitary matrix and L being lower triangular with positive diagonal elements. In particular, we obtain U=[u 1 ,u 2 ] with 
         [0000]    
       
         
           
             
               u 
               1 
             
             = 
             
               
                 
                   
                     
                       
                         h 
                         1 
                       
                        
                       
                         
                            
                           
                             h 
                             2 
                           
                            
                         
                         2 
                       
                     
                     - 
                     
                       h 
                       2 
                     
                   
                   &lt; 
                   
                     h 
                     1 
                   
                 
                 , 
                 
                   
                     h 
                     2 
                   
                   &gt; 
                 
               
               
                 
                   
                      
                     
                       h 
                       2 
                     
                      
                   
                   2 
                 
                  
                 
                   
                     
                       
                         
                            
                           
                             h 
                             1 
                           
                            
                         
                         2 
                       
                        
                       
                         
                            
                           
                             h 
                             2 
                           
                            
                         
                         2 
                       
                     
                     - 
                     
                       
                          
                         
                           
                             &lt; 
                             
                               h 
                               1 
                             
                           
                           , 
                           
                             
                               h 
                               2 
                             
                             &gt; 
                           
                         
                          
                       
                       2 
                     
                   
                 
               
             
           
         
       
       
         
           
             
               u 
               2 
             
             = 
             
               
                 h 
                 2 
               
               
                 
                    
                   
                     h 
                     2 
                   
                    
                 
                 2 
               
             
           
         
       
     
         [0000]    where &lt;h 1 ,h 2 &gt;=h 2 *h 1  is the (complex) inner product of the two vectors and 
         [0000]    
       
         
           
             L 
             = 
             
               [ 
               
                 
                   
                     
                       L 
                       11 
                     
                   
                   
                     0 
                   
                 
                 
                   
                     
                       L 
                       21 
                     
                   
                   
                     1 
                   
                 
               
               ] 
             
           
         
       
       
         
           
             
               L 
               11 
             
             = 
             
               
                 
                   
                     
                       
                          
                         
                           h 
                           1 
                         
                          
                       
                       2 
                     
                      
                     
                       
                          
                         
                           h 
                           2 
                         
                          
                       
                       2 
                     
                   
                   - 
                   
                     
                        
                       
                         
                           &lt; 
                           
                             h 
                             1 
                           
                         
                         , 
                         
                           
                             h 
                             2 
                           
                           &gt; 
                         
                       
                        
                     
                     2 
                   
                 
               
               
                 
                    
                   
                     h 
                     2 
                   
                    
                 
                 2 
               
             
           
         
       
       
         
           
             
               L 
               21 
             
             = 
             
               
                 
                   &lt; 
                   
                     h 
                     1 
                   
                 
                 , 
                 
                   
                     h 
                     2 
                   
                   &gt; 
                 
               
               
                 
                    
                   
                     h 
                     2 
                   
                    
                 
                 2 
               
             
           
         
       
     
         [0000]    Then we obtain 
         [0000]    
       
         
           
             
               
                 
                   
                     [ 
                     
                       
                         
                           
                             z 
                             1 
                           
                         
                       
                       
                         
                           
                             z 
                             2 
                           
                         
                       
                     
                     ] 
                   
                   = 
                   
                     
                       
                         U 
                         * 
                       
                        
                       y 
                     
                     = 
                     
                       
                         
                           [ 
                           
                             
                               
                                 
                                   L 
                                   11 
                                 
                               
                               
                                 0 
                               
                             
                             
                               
                                 
                                   L 
                                   21 
                                 
                               
                               
                                 1 
                               
                             
                           
                           ] 
                         
                          
                         
                           [ 
                           
                             
                               
                                 
                                   x 
                                   1 
                                 
                               
                             
                             
                               
                                 
                                   x 
                                   2 
                                 
                               
                             
                           
                           ] 
                         
                       
                       + 
                       
                         v 
                         ~ 
                       
                     
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
         [0000]    and note that transformed noise vector {tilde over (v)} remains white. Let {x i,j } j=1   M  denote the M-QAM symbols and let x i   R ,x i   I  denote the real and imaginary parts of x i ,1≦i≦2, respectively. For each x 1,j  we define the metric 
         [0000]        Q ( x   1,j )=| z   1   −L   11   x   1,j | 2 +min x     2     |z   2   −L   21   x   1,j   −x   2 | 2   (2b) 
         [0025]    Defining q 1j =z 2 −L 21 x 1,j  we can express Q(x 1,j ) as 
         [0000]        Q ( x   1,j )=| z   1   −L   11   x   1,j | 2 +min x     2       R     |q   1j   R   −x   2   R | 2 +min x     2       I     |q   1j   I   −x   2   I | 2    
         [0026]    Since both x 2   R ,x 2   1  belong to a common √{square root over (M)}-PAM constellation, the two minimizations for computing Q(x 1,j ) can be done in parallel using simple slicing (rounding) operations with O(1) complexity each. All {Q(x 1,j )} j=1   M  are efficiently determined using the described method. Also, using the fact that L 11  is positive along with the symmetry of the M-QAM constellation, we have that {L 11 x 1,j   R } j=1   √{square root over (M)} ={L 11 x 1,j   I } j=1   √{square root over (M)}. Then since    
         [0000]      | z   1   −L   11   x   1,j | 2   =|z   1   R   −L   11   x   1,j   R | 2   +|z   1   I   −L   11   x   1,j   I | 2    
         [0000]    we have that only 3√{square root over (M)} (real) multiplications are required to evaluate all {|z 1 −L 11 x 1,j | 2 } j=1   M  instead of 2M complex ones. 
         [0027]    Then we obtain another modified QR decomposition H=∥h 1 ∥ 2  VR, with V being a scaled semi-unitary matrix and R being upper triangular with positive diagonal elements. In particular, we obtain V=[v 1 ,v 2 ] with 
         [0000]    
       
         
           
             
               v 
               2 
             
             = 
             
               
                 
                   
                     
                       
                         h 
                         2 
                       
                        
                       
                         
                            
                           
                             h 
                             1 
                           
                            
                         
                         2 
                       
                     
                     - 
                     
                       h 
                       1 
                     
                   
                   &lt; 
                   
                     h 
                     2 
                   
                 
                 , 
                 
                   
                     h 
                     1 
                   
                   &gt; 
                 
               
               
                 
                   
                      
                     
                       h 
                       1 
                     
                      
                   
                   2 
                 
                  
                 
                   
                     
                       
                         
                            
                           
                             h 
                             1 
                           
                            
                         
                         2 
                       
                        
                       
                         
                            
                           
                             h 
                             2 
                           
                            
                         
                         2 
                       
                     
                     - 
                     
                       
                          
                         
                           
                             &lt; 
                             
                               h 
                               1 
                             
                           
                           , 
                           
                             
                               h 
                               2 
                             
                             &gt; 
                           
                         
                          
                       
                       2 
                     
                   
                 
               
             
           
         
       
       
         
           
             
               v 
               1 
             
             = 
             
               
                 h 
                 1 
               
               
                 
                    
                   
                     h 
                     1 
                   
                    
                 
                 2 
               
             
           
         
       
     
         [0000]    where &lt;h 2 ,h 1 &gt;=h 1 *h 2  is the complex conjugate of &lt;h 1 ,h 2 &gt; and 
         [0000]    
       
         
           
             R 
             = 
             
               [ 
               
                 
                   
                     1 
                   
                   
                     
                       R 
                       12 
                     
                   
                 
                 
                   
                     0 
                   
                   
                     
                       R 
                       22 
                     
                   
                 
               
               ] 
             
           
         
       
       
         
           
             
               R 
               22 
             
             = 
             
               
                 
                   
                     
                       
                          
                         
                           h 
                           1 
                         
                          
                       
                       2 
                     
                      
                     
                       
                          
                         
                           h 
                           2 
                         
                          
                       
                       2 
                     
                   
                   - 
                   
                     
                        
                       
                         
                           &lt; 
                           
                             h 
                             1 
                           
                         
                         , 
                         
                           
                             h 
                             2 
                           
                           &gt; 
                         
                       
                        
                     
                     2 
                   
                 
               
               
                 
                    
                   
                     h 
                     1 
                   
                    
                 
                 2 
               
             
           
         
       
       
         
           
             
               R 
               12 
             
             = 
             
               
                 
                   &lt; 
                   
                     h 
                     2 
                   
                 
                 , 
                 
                   
                     h 
                     1 
                   
                   &gt; 
                 
               
               
                 
                    
                   
                     h 
                     1 
                   
                    
                 
                 2 
               
             
           
         
       
     
         [0028]    Using V we determine w=V*y which can be expressed as 
         [0000]    
       
         
           
             
               [ 
               
                 
                   
                     
                       w 
                       1 
                     
                   
                 
                 
                   
                     
                       w 
                       2 
                     
                   
                 
               
               ] 
             
             = 
             
               
                 
                   V 
                   * 
                 
                  
                 y 
               
               = 
               
                 
                   
                     [ 
                     
                       
                         
                           1 
                         
                         
                           
                             R 
                             12 
                           
                         
                       
                       
                         
                           0 
                         
                         
                           
                             R 
                             22 
                           
                         
                       
                     
                     ] 
                   
                    
                   
                     [ 
                     
                       
                         
                           
                             x 
                             1 
                           
                         
                       
                       
                         
                           
                             x 
                             2 
                           
                         
                       
                     
                     ] 
                   
                 
                 + 
                 
                   v 
                   ^ 
                 
               
             
           
         
       
     
         [0029]    Next, for each x 2,j  we define the metric 
         [0000]        Q ( x   2,j )=| w   2   −R   22   x   2,j | 2 +min x     1     |w   1   −R   12   x   2,j   −x   1 | 2   (2c) 
         [0030]    Defining q 2j =w 1 −R 12 x 2,j , we can express Q(x 2,j ) as 
         [0000]        Q ( x   2,j )=| w   2   −R   22   x   2,j | 2 +min x     1       R     |q   2j   R   −x   1   R | 2 +min x     1       I     |q   2j   I   −x   1   I | 2    
         [0031]    Again since both x 1   R ,x 1   I  belong to a √{square root over (M)}-PAM constellation, the two minimizations for computing Q(x 2,j ) can also be done as before in parallel using simple slicing operations. All {Q(x 2,j )} j=1   M  are efficiently determined using the described method. 
         [0032]    The 2M metrics {Q(x 1,j ),Q(x 2,j )} j=1   M  can also be efficiently determined even for other regular constellations. To illustrate, we consider the example of PSK constellation. Let x 1  and x 2  be symbols from a common unit average energy M-PSK constellation: exp(jσ M ),σ M ε{0,2π/M, . . . , 2π(M−1)/M}. 
         [0033]    Then to efficiently determine {Q(x 1,j )}we re-write equation (2b) as 
         [0000]        Q ( x   1,j )=| z   1   −L   11   x   1,j | 2 +min x     2     |q   1,j   −x   2 | 2   (3b) 
         [0000]    and obtain q 1,j  in its polar form as q 1,j =r 1,j  exp(jα i,j ) such that r 1,j &gt;0,α 1,j ε[0,2π). Let β 1,j =Mα 1,j /(2π)−½. Then the minimizing x 2  in (3b) can now be determined (with O(1) complexity) in closed form and is given by exp(2π(└β 1,j ┘+1)/M), where └ ┘ denotes the floor operator. Similarly we can efficiently determine minimizing x 1  in (2c) with O(1) complexity. In a similar manner the minimizing x 1  in (2c) (and the minimizing x 2  in (2b)) can be determined efficiently for other regular constellations by exploiting their decision regions. 
         [0034]    Now each size M constellation corresponds to log(M) bits so we need to determine the max-log soft output for 2 log(M) bits. The 2M metrics {Q(x 1,j ),Q(x 2,j )} j=1   M  which we efficiently determined are exactly those needed to determine the max-log output for each bit. To see this, suppose bits numbered 1 to log(M) correspond to symbol x 1 . Then letting λ i  denote the max-log output of the i th  bit b i  and assuming equal a-priori probabilities, we have that 
         [0000]      λ i   =∥h   2 ∥ 2 (min j:b     i     =0   Q ( x   1,j )−min j:b     i     =1   Q ( x   1,j )) . . . 1 ≦i≦ log( M ) 
         [0000]      and 
         [0000]      λ i   =∥h   1 ∥ 2 (min j:b     i     =0   Q ( x   2,j )−min j:b     i     =1   Q ( x   2,j )) . . . log( M )+1 ≦i ≦2 log( M ). 
         [0035]    Thus we have shown that the complexity of our method to determine the max-log output for each of the 2 log(M) bits is O(M) instead of the O(M 2 ) complexity of the usual method. Note that the described method extends in a straightforward manner to the case when the two symbols belong to different constellations. 
         [0036]    Further reduction in complexity can be achieved by avoiding the redundant computation in the two modified QR decompositions H=∥h 2∥   2 UL,H=∥h 1 ∥ 2  VR. Also considerable reduction in processing delay can be achieved by implementing the computation of {Q(x 1,j )} j=1   M ,{λ i } i=1   log(M)  and {Q(x 2,j )} j=1   M , {∥ i } i=log(M)+1   2 log(M)  in parallel. 
         [0037]    The inventive max-log two-stream receiver includes the two-stream demodulator described above along with the outer code (FEC) decoder(s). 
         [0038]    Referring again to  FIG. 5 , the inventive enhanced max-log receiver  50  method for two stream reception includes using the max-log receiver to decode the two codewords and conducting a cyclic redundancy check (CRC) on the two decoded codewords  51 , checking if CRC is true for both codewords or if CRC is false for both  52 , terminating the decoding process in case the step in  52  is true  53 , in case the step in  52  is false checking if CRC for codeword-I is true  54 , in case the step in  54  is true re-encoding the codeword-i and then modulating and subtracting it from the received signal  55 , listing out all possibilities for symbol- 2  and computing the metrics  56 , using the metrics to determine the max-log LLRs for all bits associated with symbol- 2   57 , and decoding the codeword- 2  using the computed LLRs  58 , in case the step in  54  is false re-encoding the codeword- 2  and then modulating and subtracting it from the received signal  59 , listing out all possibilities for symbol- 1  and computing the metrics  60 , using the metrics to determine the max-log LLRs for all bits associated with symbol-i  61 , and decoding the codeword-i using the computed LLRs  62 . This inventive enhanced max-log receiver method has a higher complexity and latency (delay), a higher memory requirement due to buffering, but improved performance compared to the max-log receiver. 
         [0039]    Next, we describe our enhanced max-log receiver. Our enhanced max-log receiver works as follows. We use the previously described max-log receiver to decode the two codewords and conduct a cyclic redundancy check (CRC) on the two decoded codewords. In case CRC is true for both or false for both we stop the decoding process. If CRC is true for codeword- 1  (and false for codeword- 2 ), for each symbol interval, we compute {circumflex over (z)} 2 =z 2 −L 21 {circumflex over (x)} I , where {{circumflex over (x)} 1 } correspond to the re-encoded and modulated codeword-i and the soft-outputs for the second stream (codeword) are obtained as 
         [0000]        Q ( x   2,j )=| {circumflex over (z)}   2   −x   2,j | 2 ,1 ≦j≦M    
         [0000]      λ i   =∥h   2 ∥ 2 (min j:b     i     =0   Q ( x   2,j )−min j:b     i     =1   Q ( x   2,j )) . . . log( M )+1 ≦i ≦2 log( M ) 
         [0040]    The obtained LLRs are used to decode the second codeword. 
         [0041]    In case CRC is true for codeword- 2  (and false for codeword-i), for each symbol interval, we compute ŵ 1 =w 1 −R 12 {circumflex over (x)} 2  and the soft-outputs for the first stream (codeword) are obtained as 
         [0000]        Q ( x   1,j )=| ŵ   1   −x   1,j | 2 ,1 ≦j≦M    
         [0000]      λ i   =∥h   1 ∥ 2 (min j:b     i     =0   Q ( x   1,j )−min j:b     i     =1   Q ( x   1,j )) . . . 1 ≦i ≦log( M ) 
         [0042]    The obtained LLRs are used to decode the first codeword. 
         [0043]    In order to extend our max-log two-stream receiver to decode larger number of streams, we use the group decoding concept. Although the resulting receivers no longer yield the exact max-log output for each coded bit, nevertheless they provide good performance at low complexity. To illustrate we consider the case of four stream transmission over MIMO-OFDM. Over each of the N tones we have a flat fading MIMO model given by 
         [0000]    
       
         
           
             
               
                 y 
                 n 
               
               = 
               
                 
                   
                     H 
                     n 
                   
                    
                   
                     [ 
                     
                       
                         
                           
                             x 
                             
                               1 
                               , 
                               n 
                             
                           
                         
                       
                       
                         
                           
                             x 
                             
                               2 
                               , 
                               n 
                             
                           
                         
                       
                       
                         
                           
                             x 
                             
                               3 
                               , 
                               n 
                             
                           
                         
                       
                       
                         
                           
                             x 
                             
                               4 
                               , 
                               n 
                             
                           
                         
                       
                     
                     ] 
                   
                 
                 + 
                 
                   v 
                   n 
                 
               
             
             , 
             
               
 
             
              
             
               1 
               ≤ 
               n 
               ≤ 
               N 
             
           
         
       
     
         [0044]    We can leverage our two-stream demodulators by splitting the four-stream demodulation problem into two smaller two-stream demodulation problems which are then solved by our two-stream demodulators. Moreover the two smaller problems can be solved sequentially (as in successive group decoding) or in parallel (as in parallel group decoding). 
         [0045]    In the parallel case we have three ways to do the split corresponding to the three unordered partitions of { 1 , 2 , 3 , 4 } which are {( 1 , 2 ),( 3 , 4 )}, {( 1 , 3 ),( 2 , 4 )}, {( 1 , 4 ),( 2 , 3 )}. This split can be done on a per-tone basis based on the instantaneous channel realizations taking into account if the four streams are jointly encoded as in the single codeword (SCW) case or if they are independently encoded as in the multiple codeword (MCW) case. Note that in the SCW case only the max-log demodulator can be used in the smaller two-stream problems. To further elaborate, suppose {( 1 , 2 ),( 3 , 4 )} is the chosen split on some tone. Then in parallel group decoding, we obtain the LLRs for streams  1  and  2  by using the two-stream demodulator after suppressing the streams  3  and  4  using MMSE filtering and whitening the suppressed interference plus noise. Similarly, we obtain the LLRs for streams  3  and  4  by using the two-stream demodulator after suppressing the streams  1  and  2  using MMSE filtering and whitening the suppressed interference plus noise. 
         [0046]    In the sequential case we have six ways to do the split which correspond to the six ordered partitions of { 1 , 2 , 3 , 4 } which are {( 1 , 2 ),( 3 , 4 )}, {( 3 , 4 ),( 1 , 2 )}, {( 1 , 3 ),( 2 , 4 )}, {( 2 , 4 ),( 1 , 3 )}, {( 1 , 4 ),( 2 , 3 )}, {( 2 , 3 ),( 1 , 4 )}. However in this case we need the streams to be independently encoded and the split should be common or fixed across all tones to allow post-decoding feedback. We can use either one of our two 2-stream receivers to decode the two codewords in each one of the two smaller two stream problems. To further elaborate, suppose {( 1 , 2 ),( 3 , 4 )} is the chosen split across all tones. Then in successive group decoding, we decode streams  1  and  2  by using the two-stream receivers after suppressing the streams  3  and  4  using MMSE filtering and whitening the suppressed interference plus noise. Then, we subtract the re-constructed streams  1  and  2  from the received signal and decode streams  3  and  4  by using the two-stream receivers after assuming perfect cancellation of streams  1  and  2 . 
         [0047]    Next, if limited feedback is available, the receiver can pick one out of three unordered partitions per-tone or six ordered partitions (which are fixed across all tones) and inform the transmitter. The transmitter can then employ one codeword within each group and successive group decoding (using the max-log demodulator in each group) can be used at the receiver. 
         [0048]    In summary, we considered the two-stream MIMO decoding problem and designed two receivers. The first one is a highly efficient implementation of the maximum likelihood demodulator (MLD) yielding the exact max-log LLR outputs. The second receiver is an enhanced max-log receiver which provides further performance improvements at the expense of higher complexity. Extensions of the inventive two-stream receivers to the general case with multiple streams were also obtained. 
         [0049]    The present invention has been shown and described in what are considered to be the most practical and preferred embodiments. It is anticipated, however, that departures may be made therefrom and that obvious modifications will be implemented by those skilled in the art. It will be appreciated that those skilled in the art will be able to devise numerous arrangements and variations which, although not explicitly shown or described herein, embody the principles of the invention and are within their spirit and scope.