FIELD OF THE INVENTION 
       [0001]    This invention is generally concerned with methods, apparatus and processor control code for decoding a signal received over a MIMO (multiple input-multiple output) channel. 
       BACKGROUND OF THE INVENTION 
       [0002]    There is a continuing desire for increased data rate transmission. The current generation of WLAN (wireless local area network) standards such as Hiperlan/2 (in Europe) and IEEE802.11a (in the USA) provide data rates of up to 54 Mbit/s. Increased data rates, for example for multimedia services, may be achieved by simply increasing the data transmission bandwidth, but this is inefficient and expensive. MIMO systems have the capability to increase throughput without increasing bandwidth, the throughput potentially scaling linearly with the number of transmit/receive antennas, for example a four transmit, four receive antenna system potentially providing four times the capacity of a single transmit-receive antenna system. However receivers for MIMO communications systems are complex because a single receive antenna receives signals from all the transmit antennas, causing decoding difficulties. 
         [0003]      FIG. 1  shows a typical MIMO data communications system  100 . A data source  102  provides data (comprising information bits or symbols) to a channel encoder  104 . The channel encoder typically comprises a convolutional coder such as a recursive systematic convolutional (RSC) encoder, or a stronger so-called turbo encoder (which includes an interleaver). More bits are output than are input, and typically the rate is one half or one third. The channel encoder  104  is followed by a channel interleaver  106  and, in the illustrated example, a space-time encoder  108 . The space-time encoder  108  encodes an incoming symbol or symbols as a plurality of code symbols for simultaneous transmission from each of a plurality of transmit antennas  110 . 
         [0004]    Space-time encoding may be described in terms of an encoding machine, described by a coding matrix, which operates on the data to provide spatial and temporal transmit diversity; this may be followed by a modulator to provide coded symbols for transmission. Space-frequency encoding may additionally (or alternatively) be employed. Thus, broadly speaking, incoming symbols are distributed into a grid having space and time and/or frequency coordinates, for increased diversity. Where space-frequency coding is employed the separate frequency channels may be modulated onto OFDM (orthogonal frequency division multiplexed) carriers, a cyclic prefix generally being added to each transmitted symbol to mitigate the effects of channel dispersion. 
         [0005]    The encoded transmitted signals propagate through MIMO channel  112  to receive antennas  114 , which provide a plurality of inputs to a space-time (and/or frequency) decoder  116 . This has the task of removing the effect of the encoder  108 . The output of the decoder  116  comprises a plurality of signal streams, one for each transmit antenna, each carrying so-called soft or likelihood data on the probability of a transmitted symbol having a particular value. This data is provided to a channel de-interleaver  118  which reverses the effect of channel interleaver  106 , and then to a channel decoder  120 , such as a Viterbi decoder, which decodes the convolutional code. Typically channel decoder  120  is a SISO (soft-in soft-out) decoder, that is receiving symbol (or bit) likelihood data and providing similar likelihood data as an output rather than, say, data on which a hard decision has been made. The output of channel decoder  120  is provided to a data sink  122 , for further processing of the data in any desired manner. 
         [0006]    In some communications systems so-called turbo or iterative decoding is employed in which a soft output from channel decoder  120  is provided to a channel interleaver  124 , corresponding to channel interleaver  106 , which in turn provides soft (likelihood) data to decoder  116  for iterative space-time (and/or frequency) and channel decoding. (It will be appreciated that in such an arrangement channel decoder  120  provides complete transmitted symbols to decoder  116 , that is for example including error check bits.) 
         [0007]    It will be appreciated that in the above described communication system both the channel coding and the space-time coding provide time diversity and thus this diversity is subject to the law of diminishing returns in terms of the additional signal to noise ratio gain which can be achieved. Thus when considering the benefits provided by any particular space-time/frequency decoder these are best considered in the context of a system which includes channel encoding. 
         [0008]    One of the hardest tasks in the communications system  100  is the decoding of the space-time (or frequency) block code (STBC), performed by decoder  116 , as this involves trying to separate the transmitted symbols that are interfering with one another at the receiver. The optimal STBC decoder is the a posteriori probability (APP) decoder, which performs an exhaustive search of all possible transmitted symbols. Such a decoder considers every transmitted symbol constellation point for all the transmit antennas and calculates all possible received signals, comparing these to the actually received signal and selecting that (those) with the closest Euclidian distance as the most likely solution(s). However the number of combinations to consider is immense even for a small number of antennas, a modulation scheme such as 16 QAM (quadrature amplitude modulation), and a channel with a relatively short time dispersion, and the complexity of the approach grows exponentially with the data rate. Sub-optimal approaches are therefore of technical and commercial interest. 
         [0009]    Common choices for space-time block decoding are linear estimators such as zero-forcing and minimum mean-squared error (MMSE) estimators, decision feedback approaches (block decision feedback equalizer, vertical BLAST (Bell labs LAyered Space Time) decoder) and state-space methods with limited searches such as a sphere decoder. Other background prior art relating to multi-user systems can be found in IEEE Communication Letters, Vol 5, No 9, September 2001 ‘Near-Optimal Multiuser Detection in Synchronous CDMA Using Probabilistic Data Association’ J Luo, KR Pattipati, P K Willett and F Hasegawa; and IEEE Journal on Selected Areas in Communications, Vol 18, No 11, November 2000 ‘Iterative Receivers for Multiuser Space-Time Coding Systems’ Ben Lu and Xiaodong Wang. 
         [0010]    Optimal decoding using an APP decoder is very complex but the other techniques mentioned above perform poorly. In particular suboptimal decoders tend to provide inaccurate soft output information, which can degrade performance significantly in a channel coded system. There is therefore a need for decoding techniques which provide improved performance without the complexity of the APP approach. 
       SUMMARY OF THE INVENTION 
       [0011]    According to a first aspect of the invention there is therefore provided a method of decoding a signal encoded as a string of symbols over space and time and/or frequency, transmitted over a MIMO (multiple-input multiple-output) channel, and received at a plurality of receive antennas, each transmitted symbol having one of a plurality of values, said decoding comprising determining a probability distribution for each symbol of the transmitted string of symbols; the method comprising: determining an initial estimate of said transmitted string of symbols from said received signal using an estimate of a response of said MIMO channel; and determining from said initial estimate a probability distribution for each symbol of the transmitted string of symbols, the probability distribution representing the likelihood of a symbol of the string having each of its possible values when other symbols of the transmitted string are treated as noise. 
         [0012]    Broadly speaking in embodiments the approach is to determine an initial estimate of the transmitted symbols in order to locate the correct region of state space, and then to migrate or walk this initial estimate closer to the maximum likelihood solution (as some bits/symbols of the initial estimate are likely to be incorrect), by looking at each symbol in the string in turn and, in effect, applying a probabilistic filter. The initial estimate can conveniently be determined by the zero-forcing method, that is by effectively taking the received signal and multiplying it by the inverse of the MIMO channel estimate. This provides an initial, in effect linear, estimate but does not take into account probabilistic effects arising from constraint of the transmitted signal by selection of constellation points (symbol values). 
         [0013]    This initial estimate can then be used to determine an improved estimate for each symbol in turn by considering all the other symbols (except for the one under consideration) as interference and modelling these as noise, for example Gaussian noise. More particularly this noise may be characterized by mean and (auto-)covariance values. This enables the calculation of the probability that a particular symbol in the string had, when transmitted, a particular symbol value, given the initial (zero-forcing) estimate. This in turn allows the computation of a probability distribution for each symbol of the string, the probability distribution describing the likelihood of a symbol assuming one of the permitted symbol values. Preferably the noise is recharacterized after each determining of a probability distribution for a symbol. Furthermore the method may be iterated to redetermine the probability distributions for symbols of the string after a first iteration from the initial estimate. The probability distribution of a symbol may also be employed to determine a probability distribution for a bit making up the symbol. 
         [0014]    The method is general in that the string of symbols may be distributed in space and/or time and/or frequency, and so may be employed in space-time, space-frequency and/or space-time/frequency decoders. Broadly speaking, in embodiments the procedure iterates to determine (a probability for) each symbol in a sequence in turn under a constraint of consistency with neighbouring symbols (within the Gaussian noise modelling terms of the procedure). Thus it will be appreciated that the procedure may be used for single or multiple carrier systems. 
         [0015]    As previously alluded to, symbols except that under consideration are considered as Gaussian noise but, in reality, these symbols are constrained by their own constellations so this Gaussian noise assumption is not completely accurate. The noise is also coloured. One result of this appears to be that the procedure can predict a transmitted symbol with greater certainty than is in fact justified—in effect the procedure is overly optimistic. However providing a bit or symbol probability distribution with a probability spike at a particular value to a channel decoder can trap the decoder into a local maximum/minimum from which the channel decoder can find it difficult to escape. Paradoxically this can be a particular problem with high signal-to-noise ratios and with large numbers of antennas this effect is expected to be lessened. Nonetheless the method preferably includes tempering a probability distribution (for bit or symbol values) associated with a symbol to restrict the maximum certainty or increase the uncertainty in the value of the symbol predicted by the distribution. In effect, highly peaked distributions are flattened or spread to reduce the certainty of a prediction. Not all of the probability distributions need to be modified in this way, only those with, say, a spiked distribution of bit/symbol likelihood values. The tempering may comprise, for example, adjusting one or more probability distributions of one or more bits of a symbol. 
         [0016]    Thus the invention further provides a method of decoding a signal encoded as a string of symbols over space and time and/or frequency, transmitted over a MIMO (multiple-input multiple-output) channel, and received at a plurality of receive antennas, each transmitted symbol having one of a plurality of values, said decoding comprising determining a probability distribution for each symbol of the transmitted string of symbols; the method comprising: determining a probability distribution for each symbol of the transmitted string of symbols, the probability distribution representing the likelihood of a symbol of the string having each of its possible values; and tempering a said symbol probability distribution or a probability distribution derived therefrom to increase the uncertainty in the value of a symbol associated with the distribution. 
         [0017]    It will be appreciated that the above described methods may be employed, for example, in a turbo decoder, with iterative block code decoding and channel decoding. 
         [0018]    The invention further provides decoders configured to implement the above-described methods, and receivers including such decoders. 
         [0019]    Thus the invention further provides a decoder for decoding a signal encoded as a string of symbols over space and time and/or frequency, transmitted over a MIMO (multiple-input multiple-output) channel, and received at a plurality of receive antennas, each transmitted symbol having one of a plurality of values, said decoding comprising determining a probability distribution for each symbol of the transmitted string of symbols, said decoder comprising: means for determining an initial estimate of said transmitted string of symbols from said received signal using an estimate of a response may be distributed between a plurality of coupled components in communication with one another. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0020]    These and other aspects of the invention will now be further described, by way of example only, with reference to the accompanying figures in which: 
           [0021]      FIG. 1  shows an example of a MIMO space-time coded communications system; 
           [0022]      FIG. 2  shows a flow diagram of an embodiment of a decoding procedure according to an aspect of the present invention; 
           [0023]      FIG. 3  shows a receiver incorporating a decoder configured to operate in accordance with an embodiment of the present invention; 
           [0024]      FIG. 4  shows an example of probability distribution function tempering; 
           [0025]      FIG. 5  shows bit error rate against received signal to noise ratio, comparing an embodiment of a decoder according to the present invention with known decoding procedures; and 
           [0026]      FIG. 6  shows bit error rate against received signal to noise ratio for embodiments of the invention with and without probability distribution function tempering. 
       
    
    
     DETAILED DESCRIPTION 
       [0027]    A system model for a STBC communication system with M transmitting and N receiving antennas can be written as r=Hx+v, where r is the received signal (size N×1), H is the channel (impulse response) matrix (size N×M), x is the transmitted signal (size M×1) and v is the noise (size N×1). We assume that each element of x belongs to a constellation S, consisting of Q symbols. 
         [0028]    The first step is to calculate the so-called zero-forcing (ZF) estimate: 
         [0000]        {circumflex over (x)}   ZF =( H   H   H ) −1   H   H   r=x +( H   H   H ) −1   H   H   v   (Equation 1) 
         [0029]    Assuming that the noise v is white, E{vv H }=N 0 I, the coloured noise in {circumflex over (x)} ZF  can be written as 
         [0000]        {tilde over (v)} =( H   H   H ) −1   H   H   v    
         [0000]        R   {tilde over (v)}{tilde over (v)}   =E{{tilde over (v)}{tilde over (v)}   H   }=N   0 ( H   H   H ) −1   (Equation 2) 
         [0030]    We can now further enhance the estimate of x by considering one symbol at a time: 
         [0000]    
       
         
           
             
               
                 x 
                 ^ 
               
               ZF 
             
             = 
             
               
                 
                   
                     x 
                     m 
                   
                    
                   
                     e 
                     m 
                   
                 
                 + 
                 
                   
                     ∑ 
                     
                       k 
                       ≠ 
                       m 
                     
                   
                    
                   
                     
                       x 
                       k 
                     
                      
                     
                       e 
                       k 
                     
                   
                 
                 + 
                 
                   v 
                   ~ 
                 
               
               = 
               
                 
                   
                     x 
                     m 
                   
                    
                   
                     e 
                     m 
                   
                 
                 + 
                 
                   w 
                   m 
                 
               
             
           
         
       
     
         [0000]    where x m  is the m:th symbol in x, m labelling the transmit antennas and where e m  is the m:th unit vector (all zeros with a one in the m:th position). 
         [0031]    By considering all symbols except the m:th as interference, we can model w m  as Gaussian noise with mean 
         [0000]    
       
         
           
             
               
                 
                   
                     μ 
                     m 
                   
                   = 
                   
                     
                       E 
                        
                       
                         { 
                         
                           w 
                           m 
                         
                         } 
                       
                     
                     = 
                     
                       
                         ∑ 
                         
                           k 
                           ≠ 
                           m 
                         
                       
                        
                       
                         E 
                          
                         
                           { 
                           
                             x 
                             k 
                           
                           } 
                         
                          
                         
                           e 
                           k 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Equation 
                      
                     
                         
                     
                      
                     3 
                   
                   ) 
                 
               
             
           
         
       
     
         [0000]    and auto-covariance 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       
                         
                           R 
                           m 
                         
                         = 
                           
                          
                         
                           E 
                            
                           
                             { 
                             
                               
                                 ( 
                                 
                                   
                                     w 
                                     m 
                                   
                                   - 
                                   
                                     μ 
                                     m 
                                   
                                 
                                 ) 
                               
                                
                               
                                 
                                   ( 
                                   
                                     
                                       w 
                                       m 
                                     
                                     - 
                                     
                                       μ 
                                       m 
                                     
                                   
                                   ) 
                                 
                                 H 
                               
                             
                             } 
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                          
                         
                           
                             
                               ∑ 
                               
                                 k 
                                 ≠ 
                                 m 
                               
                             
                              
                             
                               E 
                                
                               
                                 { 
                                 
                                    
                                   
                                     
                                       x 
                                       k 
                                     
                                     - 
                                     
                                       E 
                                        
                                       
                                         { 
                                         
                                            
                                           
                                             x 
                                             k 
                                           
                                            
                                         
                                         } 
                                       
                                     
                                   
                                    
                                 
                                 } 
                               
                                
                               
                                 e 
                                 k 
                               
                                
                               
                                 e 
                                 k 
                                 H 
                               
                             
                           
                           + 
                           
                             R 
                             
                               
                                 v 
                                 ~ 
                               
                                
                               
                                   
                               
                                
                               
                                 v 
                                 ~ 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Equation 
                      
                     
                         
                     
                      
                     4 
                   
                   ) 
                 
               
             
           
         
       
     
         [0000]    where E{|x k −E{|x k |}| 2 } is the variance Var{x k } of x k . We wish to compute Pr(x m =s|{circumflex over (x)} ZF , μ m , R m ), that is the probability that x m  assumes a certain symbol value s, given the zero-forcing estimate (and based upon the modelled noise from the interfering symbols). Since w m  is assumed to be Gaussian, we can write Pr(x m =s|{circumflex over (x)} ZF , μ m , R m ) using Bayes&#39; rule as: 
         [0000]        cPr ( {circumflex over (x)}   ZF   |x   m   =s,μ   m   ,R   m )= c exp(−( {circumflex over (x)}   ZF   −se   m −μ m ) H   R   m   −1 ( {circumflex over (x)}   ZF   −se   m −μ m ))  (Equation 5) 
         [0000]    where c is a scaling factor that disappears in the normalisation process. Hence we can compute the probability distribution function (PDF) for symbol m. When moving on to symbol m+1, the mean and auto-covariance of the equivalent noise w m+1  are re-computed using the new PDF of symbol m (from Equations 3 and 4). When the last symbol M is reached, the algorithm preferably goes back to the first one and repeats, for example for a predetermined number of iterations or until a convergence criterion is met. 
         [0032]    At the start of the algorithm the probabilities are set to some initial value, for example, uniformly distributed or according to some a priori information, but as the decoding proceeds, these probabilities are updated. After a number of iterations, the output is given as the probabilities in Pr(x m =s|{circumflex over (x)} ZF , μ m , R m ). 
         [0033]    Additionally or alternatively, if the probabilities of the individual bits making up a symbol are required, they can be computed as: 
         [0000]    
       
         
           
             
               
                 
                   
                     Pr 
                      
                     
                       ( 
                       
                         
                           b 
                           q 
                         
                         = 
                         1 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       ∑ 
                       
                         
                           s 
                           | 
                           
                             
                               bit 
                               q 
                             
                              
                             
                               ( 
                               s 
                               ) 
                             
                           
                         
                         = 
                         1 
                       
                     
                      
                     
                       Pr 
                        
                       
                         ( 
                         
                           
                             
                               x 
                               m 
                             
                             = 
                             
                               s 
                               | 
                               
                                 
                                   x 
                                   ^ 
                                 
                                 ZF 
                               
                             
                           
                           , 
                           
                             μ 
                             m 
                           
                           , 
                           
                             R 
                             m 
                           
                         
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Equation 
                      
                     
                         
                     
                      
                     6 
                   
                   ) 
                 
               
             
           
         
       
     
         [0034]    The procedure can be summarised as follows: 
         [0000]    1. Compute the ZF estimate 
         [0000]        {circumflex over (x)}   ZF =( H   H   H ) −1   H   H   r=x +( H   H   H ) −1   H   H   v    
         [0000]    from r and H.
 
A MIMO channel estimate H can be obtained in a conventional manner using a training sequence. For example a training sequence can be transmitted from each transmit antenna in turn (to avoid interference problems), each time listening on all the receive antennas to characterise the channels from that transmit antenna to the receive antennas.
 
         [0035]    This need not constitute a significant overhead and data rates are high in between training and, for example, with slowly changing indoor channels training may only be performed every, say, 0.1 seconds. Alternatively orthogonal sequences may be transmitted simultaneously from all the transmit antennas, although this increases the complexity of the training as interference problems can than arise. 
         [0000]    2. Initialise symbol probabilities Pr(x m =s) using a priori information, for example from a channel decoder, or set them all equal if no such information is available.
 
3. Compute the expected values:
 
         [0000]    
       
         
           
             
               E 
                
               
                 { 
                 
                   x 
                   m 
                 
                 } 
               
             
             = 
             
               
                 ∑ 
                 
                   s 
                   ∈ 
                   S 
                 
               
                
               
                 sPr 
                  
                 
                   ( 
                   
                     
                       x 
                       m 
                     
                     = 
                     s 
                   
                   ) 
                 
               
             
           
         
       
     
         [0000]    and variances: 
         [0000]    
       
         
           
             
               Var 
                
               
                 { 
                 
                   x 
                   m 
                 
                 } 
               
             
             = 
             
               
                 ∑ 
                 
                   s 
                   ∈ 
                   S 
                 
               
                
               
                 
                   
                      
                     
                       s 
                       - 
                       
                         E 
                          
                         
                           { 
                           
                             x 
                             m 
                           
                           } 
                         
                       
                     
                      
                   
                   2 
                 
                  
                 
                   
                     Pr 
                      
                     
                       ( 
                       
                         
                           x 
                           m 
                         
                         = 
                         s 
                       
                       ) 
                     
                   
                   . 
                 
               
             
           
         
       
     
         [0036]    The expected values and variances are elements of μ m  and R m , respectively. 
         [0000]    4. For symbol m=1, compute values of noise mean: 
         [0000]    
       
         
           
             
               μ 
               m 
             
             = 
             
               
                 E 
                  
                 
                   { 
                   
                     w 
                     m 
                   
                   } 
                 
               
               = 
               
                 
                   ∑ 
                   
                     k 
                     ≠ 
                     m 
                   
                 
                  
                 
                   E 
                    
                   
                     { 
                     
                       x 
                       k 
                     
                     } 
                   
                    
                   
                     e 
                     k 
                   
                 
               
             
           
         
       
     
         [0000]    and auto-covariance: 
         [0000]    
       
         
           
             
               
                 
                   
                     R 
                     m 
                   
                   = 
                     
                    
                   
                     E 
                      
                     
                       { 
                       
                         
                           ( 
                           
                             
                               w 
                               m 
                             
                             - 
                             
                               μ 
                               m 
                             
                           
                           ) 
                         
                          
                         
                           
                             ( 
                             
                               
                                 w 
                                 m 
                               
                               - 
                               
                                 μ 
                                 m 
                               
                             
                             ) 
                           
                           H 
                         
                       
                       } 
                     
                   
                 
               
             
             
               
                 
                   = 
                     
                    
                   
                     
                       
                         ∑ 
                         
                           k 
                           ≠ 
                           m 
                         
                       
                        
                       
                         E 
                          
                         
                           { 
                           
                             
                                
                               
                                 
                                   x 
                                   k 
                                 
                                 - 
                                 
                                   E 
                                    
                                   
                                     { 
                                     
                                        
                                       
                                         x 
                                         k 
                                       
                                        
                                     
                                     } 
                                   
                                 
                               
                                
                             
                             2 
                           
                           } 
                         
                          
                         
                           e 
                           k 
                         
                          
                         
                           e 
                           k 
                           H 
                         
                       
                     
                     + 
                     
                       R 
                       
                         
                           v 
                           ~ 
                         
                          
                         
                             
                         
                          
                         
                           v 
                           ~ 
                         
                       
                     
                   
                 
               
             
           
         
       
     
         [0037]    A value for R {tilde over (v)}{tilde over (v)}  is obtained using R {tilde over (v)}{tilde over (v)} =N 0 (H H H) −1  value for N 0  may be estimated, optionally in conjunction with the channel estimate, in any convenient manner. 
         [0000]    5. Compute the probabilities (for each symbol s of constellation S): 
         [0000]        Pr ( x   m   =s|   ZF ,μ m   ,R   m )= c exp(−( {circumflex over (x)}   ZF   −se   m −μ m ) H   R   m   −1 ( {circumflex over (x)}   ZF   −se   m −μ m )) 
         [0000]    where c is a scaling factor to make the sum of the values 1, (that is, to make them probabilities).
 
6. Update the expected values
 
         [0000]    
       
         
           
             
               E 
                
               
                 { 
                 
                   x 
                   m 
                 
                 } 
               
             
             = 
             
               
                 ∑ 
                 
                   s 
                   ∈ 
                   S 
                 
               
                
               
                 sPr 
                  
                 
                   ( 
                   
                     
                       x 
                       m 
                     
                     = 
                     s 
                   
                   ) 
                 
               
             
           
         
       
     
         [0000]    and variances 
         [0000]    
       
         
           
             
               Var 
                
               
                 { 
                 
                   x 
                   m 
                 
                 } 
               
             
             = 
             
               
                 ∑ 
                 
                   s 
                   ∈ 
                   S 
                 
               
                
               
                 
                   
                      
                     
                       s 
                       - 
                       
                         E 
                          
                         
                           { 
                           
                             x 
                             m 
                           
                           } 
                         
                       
                     
                      
                   
                   2 
                 
                  
                 
                   Pr 
                    
                   
                     ( 
                     
                       
                         x 
                         m 
                       
                       = 
                       s 
                     
                     ) 
                   
                 
               
             
           
         
       
     
         [0000]    using the new probabilities.
 
7. Move onto the next symbols, i.e. m←m+1, and repeat steps 4-6.
 
         [0038]    When the last symbol has been processed, i.e., m=M, the process can start over again with m=1 and steps 4-6 can be repeated again. 
         [0039]      FIG. 2  shows a flow diagram of the above procedure. Thus at step s 200  an initial estimate of a transmitted string of symbols is determined, for example by calculating a zero-forcing estimate of the transmitted signal, and at step s 202  the (transmitted) symbol probabilities are initialised, for example by setting these equiprobable. Then mean (expectation) and variance values are computed for each symbol of the processed string and the symbol counter m is initialised to point to the first symbol to be processed. 
         [0040]    Then, at step s 206 , the procedure computes noise mean and auto-covariance values for symbol m and the probability of the transmitted symbol m having value s (for each possible s) given the zero forcing estimate and computered noise and the symbol expectation values and variances are then updated to take account of the new probabilities. Step s 206  is repeated (s 208 ) until m=M where M is the number of transmit antennas or, more generally, the number of symbols in the processed string, and preferably processing of the entire string of symbols is iterated (s 210 ) for improved convergence of the calculated probabilities towards optimal values. Then optionally, at step s 212 , the bit/symbol probability distributions are tempered, as described further below, and the resulting bit/symbol probability values provide a (soft) output from the decoder (s 214 ). 
         [0041]      FIG. 3  shows a receiver  300  incorporating a decoder configured to implement the above described method. 
         [0042]    Receiver  300  comprises one or more receive antennas  302   a, b  (of which two are shown in the illustrated embodiment) each coupled to a respective rf front end  304   a, b , for example similar to the rf front end of  FIG. 2   a , and thence to a respective analogue-to-digital converter  306   a,b  and to a digital signal processor (DSP)  308 . DSP  308  will typically include one or more processors  308   a  (for example, for a parallel implementation of filter  414 ) and some working memory  308   b . The DSP  308  has a data output  310  and an address, data and control bus  312  to couple the DSP to permanent program memory  314  such as flash RAM or ROM. Permanent program memory  314  stores code and optionally data structures or data structure definitions for DSP  308 . 
         [0043]    As illustrated program memory  314  includes STBC decoder code  314   a  comprising zero forcing estimate code, noise modelling code, symbol probability code, bit probability code, and PDF tempering code to, when running on DSP  308 , implement corresponding functions as described above. Program memory  314  also includes MIMO channel estimation code  314   b  to provide a MIMO channel estimate H, de-interleaver code  314   c , interleaver code  314   d , and channel decoder code  314   e . Examples of suitable code  314   e  are well known to those skilled in the art. Optionally the code in permanent program memory  314  may be provided on a carrier such as an optical or electrical signal carrier or, as illustrated in  FIG. 3 , a floppy disk  316 . 
         [0044]    The data output  310  from DSP  308  is provided to further data processing elements of receiver  300  (not shown in  FIG. 3 ) as desired. These may a baseband data processor for implementing higher level protocols. 
         [0045]    The receiver front-end will generally be implemented in hardware whilst the receiver processing will usually be implemented at least partially in software, although one or more ASICs and/or FPGAs may also be employed. The skilled person will recognise that all the functions of the receiver could be performed in hardware and that the exact point at which the signal is digitised in a software radio will generally depend upon a cost/complexity/power consumption trade-off. 
         [0046]    Embodiments of the above MIMO decoder can offer near maximum likelihood performance at significantly reduced complexity. 
         [0047]    A decoder based upon this technique may be used within a turbo decoding framework, in which case it is operated in a soft-in soft-out (SISO) configuration. In such a configuration the decoder receives soft channel observations (continuous in value) and incorporates prior probabilities into the detection process (see, for example, step (2) in the summary of the operating procedure above). Furthermore the decoder also outputs a set of posterior probability values (soft out). 
         [0048]    In practice the quality of the soft output from the proposed MIMO decoder can on occasions be poor. More specifically, the decoder sometimes (with high signal-to-noise ratio) produces over-confident results, allocating nearly all probability to a single proposition. This information is passed over to the channel decoder and, when incorrect, may destabilise the channel decoder, for example trapping the decoder in a incorrect solution. In some cases a single MIMO decoder error (over one bit) may cause an error after the decoder that, under other circumstances, would have been well within error correcting capabilities of the channel code. 
         [0049]    This problem can be mitigated or overcome by modifying the MIMO decoder output. There are many possible ways of doing this and here we describe one example of a simple device that provides a solution to this problem, flattening or skewing sharply peaked probability distributions so that the most likely value is less strongly favoured over the other(s). We will term this a tempering device (TD). 
         [0050]    In this example, if the probability of a particular bit exceeds a threshold value, say 0.9, it is reduced to that value, otherwise it is kept as it is. Thus, to take an example, if Pr(b k =1)=0.99, and consequently Pr(b k =0)=0.01, the modified probabilities would be Pr(b k =1)=0.9 and Pr(b k =0)=0.1. This example is illustrated in  FIG. 4  in which bars  400   a,b  show the probabilities of a 0 and 1 respectively prior to tempering, and bars  402   a,b  show the probabilities after tempering. Thus the tempering operation skews the probability distribution of the bits as shown in the figure. The skilled person will appreciate that this MIMO decoder modification improves the performance of the decoder only when it is used in conjunction with a channel decoder (or other device for which an overly confident assignment of probability to an incorrect value could cause problems). 
         [0051]    An equivalent way of looking at the tempering procedure is in terms of limiting values of the logarithm of the ratio of posterior probabilities L APP . The tempering procedure expressed in such form is summarised below: 
         [0000]    
       
         
           
             
               If 
                
               
                   
               
                
               SNR 
             
             &gt; 
             
               SNR 
               limit 
             
           
         
       
       
         
           
             
               If 
                
               
                   
               
                
               
                 LLR 
                 bi 
               
             
             = 
             
               
                 abs 
                  
                 
                   ( 
                   
                     log 
                      
                     
                       ( 
                       
                         
                           Pr 
                            
                           
                             ( 
                             
                               
                                 b 
                                 i 
                               
                               = 
                               0 
                             
                             ) 
                           
                         
                         
                           Pr 
                           ( 
                           
                             
                               b 
                               i 
                             
                             = 
                             1 
                           
                         
                       
                       ) 
                     
                   
                   ) 
                 
               
               &gt; 
               
                 LLR 
                 limit 
               
             
           
         
       
       
         
           
             
               Do 
                
               
                 : 
               
                
               
                 LLR 
                 bi 
               
             
             = 
             
               
                 sign 
                  
                 
                   ( 
                   
                     LLR 
                     bi 
                   
                   ) 
                 
               
               * 
               
                 LLR 
                 limit 
               
             
           
         
       
     
         [0000]    where:
 
the log likelihood ratio of bit values 0 and 1 is defined by
 
         [0000]    
       
         
           
             
               log 
                
               
                 ( 
                 
                   
                     Pr 
                      
                     
                       ( 
                       
                         
                           b 
                           i 
                         
                         = 
                         0 
                       
                       ) 
                     
                   
                   
                     Pr 
                      
                     
                       ( 
                       
                         
                           b 
                           i 
                         
                         = 
                         1 
                       
                       ) 
                     
                   
                 
                 ) 
               
             
             ; 
           
         
       
     
         [0000]    SNR limit  is a predefined SNR (signal-to-noise ratio) above which the algorithm is applied; and
 
LLR limit  is a predefined L APP  ratio.
 
         [0052]    The skilled person will appreciate that other probability distribution function tempering procedures are also possible. For example a procedure based upon simulated annealing may be employed in which a probability distribution function or one or more bit or symbol probabilities are randomly modified in accordance with a temperature which determines the degree of modification, the temperature being gradually reduced over time (turbo decoding iterations) with the aim of allowing the system to escape from local maxima/mimima and, in the end, more accurately decode the received signal. 
         [0053]      FIG. 5  shows a graph of bit error rate against received signal to noise ratio (in dB) and presents results of a simulation of a system with four transmit antennas, four receive antennas and 16 QAM modulation. Curves for three decoders are compared, an optimal APP decoder (curve  500 ), a linear MMSE estimator (curve  502 ), and an embodiment of the above described decoder (curve  504 ) employing five iterations through each set of four received symbols. It can be seen that the above described decoder performs significantly better than the MMSE estimator (although less well than the APP decoder) but with a complexity which is comparable with the MMSE estimator and which is orders of magnitude less than that of the APP decoder. Thus it can be appreciated that embodiments of the decoder described herein offer a good performance/complexity trade-off. 
         [0054]      FIG. 6  shows a graph of bit error rate against signal-to-noise ratio (in dB) per receive antenna, showing an improvement in performance when applying tempering in a system which also employs channel coding. The results relate to a system with four transmit and four receive antennas, using 16-QAM modulation (with Gray mapping), and a rate ½ [5,7] RSC code. Curve  600  illustrates performance of the MIMO decoder without tempering and curve  602  illustrates the improved performance when tempering is applied, at a bit error rate of 10 −4  this amounting to almost 4 dB. 
         [0055]    Embodiments of the invention have mainly been described with reference to space-time encoding/decoding but similar techniques may also be employed in the frequency domain, for example by serial-to-parallel converting and then performing a fast Fourier transform prior to MIMO decoding, applying an inverse Fourier transform and parallel-to-serial conversion after MIMO decoding. 
         [0056]    The skilled person will appreciate that the above described techniques may be employed in any MIMO communications system, for example in base stations, access points, and/or mobile terminals. The techniques have applications in wireless LANs, potentially in fourth generation mobile phone networks, and also in many other types of communication system. Broadly speaking embodiments of the invention facilitate cheaper receivers with only a small loss of performance, or equivalently increased data rates without correspondingly increased complexity and cost. Embodiments of the invention may also potentially find application in other non-radio MIMO-like systems, for example a disk drive with multiple read heads and multiple data recording layers in effect acting as multiple transmitters. 
         [0057]    No doubt many other effective alternatives will occur to the skilled person. It will be understood that the invention is not limited to the described embodiments and encompasses modifications apparent to those skilled in the art lying within the spirit and scope of the claims appended hereto.
This invention is generally concerned with methods, apparatus and processor control code for decoding a signal received over a MIMO (multiple input-multiple output) channel. A method of decoding a signal encoded as a string of symbols over space and time and/or frequency, transmitted over a MIMO (multiple-input multiple-output) channel, and received at a plurality of receive antennas, each transmitted symbol having one of a plurality of values, said decoding comprising determining a probability distribution for each symbol of the transmitted string of symbols; the method comprising: determining an initial estimate of said transmitted string of symbols from said received signal using an estimate of a response of said MIMO channel; and determining from said initial estimate a probability distribution for each symbol of the transmitted string of symbols, the probability distribution representing the likelihood of a symbol of the string having each of its possible values when other symbols of the transmitted string are treated as noise.