FIELD OF INVENTION 
     The present invention relates generally to wireless communications, and in particular to an improved MIMO joint detection receiver. 
     BACKGROUND 
     Multiple Input, Multiple Output (MIMO) is a communication technology in which multiple transmit antennas are utilized at a transmitter, and also multiple receive antennas are utilized at a receiver. MIMO technology offers increased data throughput and range, without requiring additional bandwidth or transmit power. It achieves this by higher spectral efficiency and link diversity. 
     In one type of MIMO technology, N streams of symbols are transmitted at the same time. Each symbol is received at each receiver antenna. A joint detector receiver is a known technique to recover the transmitted symbols. For N symbols, all from the same constellation Q of size q, the joint detection receiver has q N  possibilities to assess. For q=64 and four transmit and receive antennas, this yields 64 4 , or 16,777,216 possibilities. At high data rates, a full joint detection receiver becomes computationally explosive, and impractical to implement. 
     SUMMARY 
     According to one or more embodiments disclosed and claimed herein, a two-stage approach to MIMO detection improves receiver performance in a computationally tractable manner. A whitening joint detector processes a MIMO symbol stream. The whitening joint detector includes a pre-filter operative to suppress a first subset of the received MIMO streams as colored noise. The whitening joint detector further includes a primary joint detector operative to process a second subset of the MIMO streams and to output a preliminary solution obtained by minimizing a whitening joint detection metric. A secondary detector then operates in the vicinity of the primary joint detector preliminary solution. The secondary detector improves the preliminary solution by comparison to a full joint detection metric. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a functional block diagram of a whitening joint detector comprising a pre-filter and a joint detector using a whitening joint detection metric. 
         FIG. 2  is a functional block diagram of a whitening joint detector comprising parallel pre-filter and joint detector legs, each processing a different subset of MIMO streams. 
         FIG. 3  is a representative depiction of a 4-ASK symbol constellation, and the associated Gray codes. 
         FIG. 4  is a representative depiction of an 8-ASK symbol constellation, and the associated Gray codes. 
     
    
    
     DETAILED DESCRIPTION 
     In an N×N MIMO scenario over a non-dispersive channel, a received signal may be modeled as
 
 r=Hs+n   (1)
 
where r is the received signal, s is the transmitted signal, n is noise, and H summarizes the transmission channel. Here r, s and n are N×1 vectors, and H is a N×N matrix. The components of H are independent and Rayleigh faded. By default, n is white Gaussian noise with covariance R n =σ 2 l. All N signals are from the same constellation Q of size q, and all N signals are transmitted with the same power. The effective constellation for s is of size q N .
 
     A full joint detection receiver for s searches over all q N  candidates ŝ for one that minimizes the squared distance
 
 m   JD ({circumflex over ( s )})=( r−Hŝ ) H ( r−Hŝ )  (2)
 
The solution is denoted {tilde over (s)} JD . The full joint detection receiver is computationally complex, and may be impractical to implement for large constellations and high data rates.
 
       FIG. 1  depicts a whitening joint detection portion of a receiver  10 . In the whitening joint detector  10 , the task is simplified by modifying a joint detection receiver  14  to jointly detect only a set A, containing N A  out of N signals, and treat the remaining set B, containing the other N B =N−N A  signals, as interference. The signals in set B are modeled as colored noise, and suppressed by a whitening pre-filter  12 . 
     Without loss of generality, assume that A occupies the top of s, and B occupies its bottom. Other cases follow similarly. Thus, 
                   s   =     [           s   A               s   B           ]             (   3   )                 H   =     [       H   A     ,     H   B       ]       ,   and           (   4   )               r   =           H   A     ⁢     s   A       +       H   B     ⁢     s   B       +   n     =         H   A     ⁢     s   A       +   u               (   5   )               
where H A  is a N×N A  matrix, H B  is a N×N B  matrix, s A  is a N A ×1 vector, s B  is a N B ×1 vector, and u is a N×1 vector.
 
     We model u as a colored noise. We assume that the transmitted symbols have zero mean. This is the case for most well-known constellations. Then s B  has zero mean, and consequently so does H B s B . In addition, H B s B  has covariance
 
R B =H B H B   H E B   (6)
 
Where E B  is the average symbol energy in s B . Thus, u has zero mean and covariance
 
 R   u   =R   B   +R   n   (7)
 
     With the colored noise model, the whitening joint detector for A searches over all q N     A    candidates ŝ A  for one that minimizes the metric
 
( r−H   A   ŝ   A ) H   R   u   −1 ( r−H   A   ŝ   A )= r   H   R   u   −1   r− 2 Re{ŝ   A   H   A   H   R   u   −1   r}+ŝ   A   H   H   A   H   R   u   −1   H   A ŝ A   (8)
 
We can manipulate equation (8) to identify a pre-filter  12 , the output of which is the input to a joint detector  14 . We define the N×N A  matrix
 
W=R u   −1 H A   (9)
 
as the pre-filter  12 . Its output is the N A ×1 vector
 
z A =W H r  (10)
 
     The first term of equation (8) does not depend on ŝ A , and may be dropped. The two remaining terms are identified as
 
 m   WJD ( ŝ   A )=−2 Re{ŝ   A   z   A   }+ŝ   A   H   H   A   H   R   u   −1   H   A   ŝ   A   (11)
 
which is used as the metric of the whitening joint detector.
 
     The pre-filter  12  collects the energy of the desired signal in A while suppressing the other signals in B as interference. 
     Multiple whitening joint detectors  10  may be deployed in parallel to handle the N streams. For example, with N=4 streams, two whitening joint detectors may each process two streams. Alternatively,  FIG. 2  depicts four whitening joint detectors, each processing a single stream (A, B, C, and D). The total solution with N symbols is denoted {tilde over (s)} WJD . 
     Multiple, parallel whitening joint detectors  10  require less complexity than a full joint detector; however, the whitening joint detector  10  has worse performance. To recover some of the performance loss, a secondary detector  16  is employed. The secondary detector  16  searches for a better solution in the vicinity of the primary detector  14  solution. The secondary detector  16  uses a better metric. Specifically, here each primary detector  14  uses the whitening joint detector metric in equation (11). The secondary detector  16  uses the full joint detector metric in equation (2). The local search set of the secondary detector  16  consists of nearest neighbors, as explained herein. 
     In addition, the local search in the secondary detector  16  is well suited for generating modem bit soft values. We show how this can be made simple by identifying for each bit of each symbol, a designated companion symbol that is used in the soft value generation. 
     Assuming that the primary detector  10  has produced its solution {tilde over (s)} WJD , as depicted in  FIG. 2 , the full joint detection metric is computed:
 
 m   JD ( {tilde over (s)}   WJD )=( r−H{tilde over (s)}   WJD ) H ( r−H{tilde over (s)}   WJD )  (12)
 
This full joint detection metric was not computed in the primary detector(s)  14 , which use the whitening joint detection metric.
 
     The secondary detector  16  attempts to beat the metric in equation (12). That is, if a candidate vector ś is found, whose joint detection metric is smaller than m JD ({tilde over (s)} WJD ) then {tilde over (s)} is a better solution in a joint detection sense, and should replace {tilde over (s)} WJD  output by the primary detector  10 . 
     A nearest neighbor is a symbol at the smallest Euclidean distance from a given symbol. First note that from the perspective of the joint detector, in principle the nearest neighbors should be in the “receive domain.” That is, the effect of the channel H should be considered, and the nearest neighbors of H{tilde over (s)} WJD  used. However, finding nearest neighbors is a highly complex operation. Also, since H changes with time, the operation must be repeated often. As a result, a more manageable nearest neighbor procedure is required. 
     In one embodiment, nearest neighbors are found in the “transmit domain.” That is, the effect of the channel is ignored, and the neighbors of {tilde over (s)} WJD  are considered. Furthermore, the nearest neighbors of the N individual symbols {tilde over (s)} WJD (i) of {tilde over (s)} WJD  may be considered. This greatly simplifies the search for nearest neighbors. The nearest neighbor set of a symbol value s is denoted T(s). 
     Note that by ignoring the effect of channel H, valuable information is lost. A nearest neighbor in the transmit domain is not necessarily a nearest neighbor in the receive domain. Nevertheless, it is a simplifying approximation that yields good results in an average sense. 
       FIG. 3  depicts a map from modem bits to symbols in a four-level amplitude-shift keying (4-ASK) modulation scheme. The map depicted in  FIG. 3  is a Gray map. The two inner symbols each have two nearest neighbors, and the two outer symbols each have one nearest neighbor. 
     A popular map for quadrature amplitude modulation (QAM) is defined per ASK component. That is, for 16-QAM, the 4-bit map is defined as two 2-bit Gray maps on the 4-ASK components. In this scheme, the four inner symbols each have four nearest neighbors. The four corner symbols each have two nearest neighbors. The remaining eight outer symbols each have three nearest neighbors. 
     Similarly, for 64-QAM, the 6-bit map is defined as two 3-bit Gray maps on the 8-ASK components. The 36 inner symbols each have four nearest neighbors. The four corner symbols each have two nearest neighbors. The remaining 24 outer symbols each have three nearest neighbors. 
     In one embodiment, the secondary detector  16  implements a basic search that cycles through all N symbols, one symbol at a time, and considers each one of each symbol&#39;s nearest neighbors. If the best symbol vector has changed, then it cycles through the N symbols again. The search stops if the best symbol vector does not change after a full cycle, indicating no further improvement is achievable. The search may also have an overall limit on the number of cycles performed. 
     More specifically, the initial conditions are  s ={tilde over (s)} WJD , the output of the primary joint detector  14 , and  m =m JD ({tilde over (s)} WJD ), the full joint detection metric using that output (as opposed to the whitening joint detection metric used by the primary joint detector  14 ). Without much loss of generality, we start with the first symbol  s (1), and we test all the symbols in T(  s (1)). That is, the full joint detection metric is computed for a candidate ŝ, which is equal to  s , except that symbol  s (1) is replaced by a nearest neighbor from T(  s (1)). If
 
 m   JD ( ŝ )&lt;   m     (13)
 
then  s =  s  and  m =m JD (ŝ).
 
     The search then proceeds over T(  s (2)), and so on. After searching through T(  s (N)), the cycle is complete. If  s  has changed from the value at the beginning of the cycle, indicating some improvement in the solution, then another cycle is performed. If  s  has not changed, the last cycle&#39;s output is the best solution achievable and the process terminates. The secondary detector  16  may also check against a predetermined limit to the number of cycles performed. 
     The search terminates with a solution  s . If  s ≠{tilde over (s)} WJD , then by construction  m &lt;m JD ({tilde over (s)} WJD ), and the secondary detector  16  has found a better solution in the joint detector metric sense. If  s ={tilde over (s)} WJD  then the secondary detector  16  did not improve on the solution by the primary detector  14 . 
     In one embodiment, the secondary detector  16  implements an advanced search that changes more than one symbol at a time. Sets are defined as
 
 U (   s   ( i ))= T (   s   ( i )) U{  s   ( i )}  (14)
 
The number L&gt;1 of symbols that are changed simultaneously is a design parameter. The initial conditions are the same as in the basic search embodiment:  s ={tilde over (s)} WJD  and  m =m JD ({tilde over (s)} WJD ).
 
     Without much loss of generality, the first L symbols are searched simultaneously, using U(  s (1)), . . . , U(  s (L)). That is, a candidates ŝ is formed by starting with  s , and replacing the first L symbols with symbols from U(  s (1)), . . . , U(  s (L)). Note that including  s (i) in U(  s (i)) means that the cases are considered where fewer than L symbols are actually changed. As with the basic search embodiment,  s =ŝ and  m =m JD (ŝ) if m JD (ŝ)&lt;  m . 
     The search the proceeds over the next L symbols, and so on, until all symbols are exhausted. The last search may be over fewer than L symbols, if N is not a multiple of L. Increasing L makes the search more thorough, and also more complex. The value L=N means all symbols are searched at once. 
     The search procedure may be generalized further by overlapping the successive groups of L symbols. For instance, assuming L is an even number, after the first L symbols are considered, the next L symbols to be considered consist of the second half of the first L symbols and the next L/2 symbols, and so on. The benefit of overlap is that more potential candidates are included in the search. There is a corresponding increase in complexity. 
     Modem bit soft values can be exploited by a subsequent decoder to boost overall performance. However, the generation of soft values can represent additional complexity when added to a primary joint detector  14 . In one embodiment, soft values are generated and output by the secondary detector  16 . 
     Without much loss of generality, consider a constellation with 2 J  symbols. Let b 1  . . . b J  denote the J bits mapping into a symbol s. In order to describe the soft values, it is convenient to define the bit nearest neighbor (BNN). For bit b j , the BNN s j ′ is the closest symbol in the constellation with b j  flipped. If two symbols satisfy the BNN requirement, one is selected such that the BNN is unique. Note no condition is imposed on the remaining J−1 bits, which may or may not change. Note also that the BNN&#39;s can be computed off-line, from the constellation and the bit map. 
     Referring again to the 4-ASK with Gray map of  FIG. 3 , for For s=−3 with b 1 b 2 =00, s 1 ′=+1 and s 2 ′=−1. For s=−1 with b 1 b 2 =01, s 1 ′=+1 and s 2 ′=−3, etc. 
     As another example,  FIG. 4  depicts an 8-ASK with a gray map. In this case, for s=−7 with b 1 b 2 b 3 =000, s 1 ′=+1, s 2 ′=−3, and s 3 ′=−5. For s=−1 with b 1 b 2 b 3 =001, s 1 ′=+1, s 2 ′=−3, and s 3 ′=−7, etc. 
     The solution output by the secondary detector  16  is  s  with full joint detection metric  m . For bit j in symbol  s (i) in  s , a symbol vector  s ′, is constructed, wherein the symbol  s (i) is replaced by the appropriate BNN, and other symbols are unchanged. The full joint detection metric m JD (  s ′) is computed. The soft value for bit j in symbol i is given by
 
λ=| m   JD (   s ′ )−   m   |(15)
 
Overall, the soft value generation is similar to the basic search described earlier, with the nearest neighbor sets replaced with the BNN&#39;s.
 
     Also, as is the case in the ASK example above,  s ′ may already be in the nearest neighbor set, so m JD (  s ′) would have already been computed in the secondary detector  16 . In this case, there is no need to compute it again for the soft value generation. 
     In one embodiment, the nearest neighbor symbol set is defined so as to include not only the nearest neighbors as defined above but also the next nearest neighbors, defined as symbols that differ from a given symbol by the next smallest distance. The definition of next nearest neighbor symbol may be thus expanded as desired or required. 
     In a large constellation, the relaxed nearest neighbor set would still be small in comparison to the constellation. In general, relaxing the nearest neighbor sets enables a wider search in the secondary detector  16 , increasing the chance to identify the true joint detector solution. Of course, this is done at the price of higher complexity. 
     Embodiments of the secondary detector  16  described above use the full joint detector metric and attempt to identify the joint detector solution. In one embodiment, a secondary detector  16  performs its search over a larger number of MIMO streams than the primary detector(s)  14 , and use the corresponding whitening joint detection metric. This helps reduce the complexity of the secondary detector  16 , at the expense of a smaller performance boost. For example, in one embodiment with eight MIMO streams, each primary detector  14  processes  2  streams jointly, and the secondary detector  16  processes four streams jointly. 
     Multi-stage arbitration (MSA) is an attractive demodulation structure suited for MIMO and multi-carrier scenarios. MSA is described in co-pending U.S. patent application Ser. No. 12/568,036, titled “Nonlinear Equalization and MIMO Demodulation Using Multistage Arbitration (MSA),” by G. E. Bottomley and Y.-P. E. Wang, filed Sep. 28, 2009, assigned to the assignee of the present application, the disclosure of which is incorporated herein by reference in its entirety. The general idea in MSA is to sift through a large set of candidates in multiple stages, where each stage rejects some candidates, until a single candidate is left after the final stage. In a multi-stream scenario such as MIMO or multi-code transmission, MSA increases the number of streams processed jointly in consecutive stages. That is, in the first stage, each stream may be processed individually by a single detector. Pairs of streams may then be processed together by a joint detector in the second stage, and so on. This keeps complexity from exploding, while mimicking the behavior of a true joint detector over all streams. 
     In one embodiment, an entire MSA receiver is treated as a primary detector, and a secondary detector  16  as described herein improves on the MSA solution. Improvement is possible since the MSA does not search exhaustively for all possible symbol combinations. The secondary detector  16  is also advantageous for soft value generation for MSA. 
     Serial localization with indecision (SLI) is a multi-stage detector, proposed as a low-complexity alternative to a MSA. SLI receivers are disclosed in co-pending U.S. patent application Ser. No. 12/549,132, titled “Method for Demodulation Using Serial Localization with Indecision (SLI),” by A. Khayrallah, filed Aug. 27, 2009, assigned to the assignee of the present application, the disclosure of which is incorporated herein by reference in its entirety. The use of joint detection with a SLI receiver is disclosed in co-pending U.S. patent application Ser. No. 12/549,157, titled “Method for Joint Demodulation and Interference Suppression Using Serial Localization with Indecision (SLI),” by A. Khayrallah, filed Aug. 27, 2009, also assigned to the assignee of the present application, the disclosure of which is also incorporated herein by reference in its entirety. The indecision feature of SLI derives from the key factor of representing the modulation constellation with overlapping subsets. Indecision is beneficial in a multi-stage structure, because it discourages an irreversible bad decision in an early stage. 
     As explained in the above-referenced patent applications, a SLI block represents a subset of constellation symbols by its centroid, and treats the set of centroids as its own constellation. By detecting a certain centroid, the SLI block is effectively localizing the search, since the next stage will focus on the subset associated with that centroid. 
     In one embodiment, as with the MSA, an entire SLI receiver is treated as a primary detector, and a secondary detector  16  as described herein improves on the SLI solution. Improvement is possible since the SLI does not search exhaustively for all possible symbol combinations. The secondary detector  16  is also advantageous for soft value generation for SLI. 
     A secondary detector  16  according to any embodiment described herein is a suitable second stage to follow a primary detector that either does not conduct an exhaustive search, does not use the full joint detection metric, or both. The secondary detector  16  also provides a convenient mechanism for soft value generation. 
     The present invention may, of course, be carried out in other ways than those specifically set forth herein without departing from essential characteristics of the invention. The present embodiments are to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.
A two-stage approach to MIMO detection improves receiver performance in a computationally tractable manner. A whitening joint detector processes a MIMO symbol stream. The whitening joint detector includes a pre-filter operative to suppress a first subset of the received MIMO streams as colored noise. The whitening joint detector further includes a primary joint detector operative to process a second subset of the MIMO streams and to output a preliminary solution obtained by minimizing a whitening joint detection metric. A secondary detector then operates in the vicinity of the primary joint detector preliminary solution. The secondary detector improves the preliminary solution by comparison to a full joint detection metric.