# Patent

## Title
Demapper for a multiple-input, multiple-output symbol receiver

## Abstract

A method, implementable on a multiple-input, multiple-output symbol receiver, includes selecting a hypothesis for a second symbol value U2 from among the set of fixed constellation points, calculating a hypothesis for a first symbol value U1 from the resultant selected U2 value, and generating a first half of counter-hypotheses from interim results of calculating the hypotheses values.

## Background
FIELD OF THE INVENTION
The present invention relates to communication systems generally and to multiple-input, multiple-output communication systems in particular.
BACKGROUND OF THE INVENTION
In most transmission systems, in order to transmit at a high bit rate, symbols representing multiple bits are transmitted. The symbols are defined in the complex plane and are defined by a given constellation. The more bits that each symbol represents, the more points in the constellation. The complex symbols are transmitted with two frequency-domain signals, one representing the Real part and one representing the Imaginary part, known as the “in-phase” and “quadrature” signals.
FIG. 1, to which reference is now made, shows an exemplary 64-point constellation, for the QAM (quadrature amplitude modulation) method. Each point, which represents a symbol value, is a complex number having a Real and Imaginary parts. Thus, the point labeled 40 has a complex value of (5,3). It also has a complex bit pattern associated therewith, of 101 111, where 101 is the bit pattern associated with the Real part and 111 is the bit pattern associated with the Imaginary part of the symbol. Thus, there are 6 bits associated with each symbol.
FIG. 2, to which reference is now made, illustrates the transmission from one transmitting antenna, labeled 10, to another, receiving, antenna, labeled 12. Between the two there is a “channel” H, which is the path in the air between transmitting antenna 10 and receiving antenna 12, which may be obstructed, such as by trees, hills, buildings, etc. Transmitting antenna 10 transmits a symbol, here labeled u, and receiving antenna 12 receives a signal, here labeled y, which is a corrupted version of symbol u, by the channel H and by noise n, as follows:

Y=hu+n  Equation 1

where the h defines how the channel affects transmission and n is random noise.
Equation 1 defines how the channel affects the transmission of a symbol. Point 5 in FIG. 1 shows a received symbol y. Note that point 5, while close to two points 7 and 9 of the constellation, doesn't sit on either of them. Thus, it is the job of the receiver to determine which symbol point 7 or 9 (or any other symbol) was originally transmitted.
A system where transmission of two or more symbols at the same time from two or more transmitter antennas to two or more receiver antennas takes place is known as a MIMO (multiple-input, multiple-output) communication system. The transmitted symbols are not related to each other and the paths, though similar, are not exactly the same. This is shown in FIG. 3, to which reference is now made, for the case of two transmitter antennas and two receiver antennas. Symbols u1 and u2 are transmitted from transmitting antennas 10a and 10b, respectively, and signals y1 and y2 are received at receiving antennas 12a and 12b, respectively. Both receiving antennas 12a and 12b receive versions of the transmitted symbols u1 and u2, which are transformed by the channel, where the channel for the MIMO case is a matrix H. and are affected by noise n1 and n2, respectively.
FIG. 4, to which reference is now made, shows exemplary received signals y1 and y2 in their constellations. Signal y1 is in the lower right quadrant while signal y2 is in the upper right quadrant. The goal is to decode signals y1 and y2 in order to determine transmitted symbols u1 and u2, which normally represent a coded version of original data bits including redundancy. The decoding process can be divided in two steps where, initially, the received signals y1 and y2 are converted to “soft” bit information such as Log Likelihood Ratios for each coded bit. Afterwards, the data bits are extracted from the soft bit information by a Maximum Likelihood Sequence Estimator, such as a soft-input Viterbi Decoder.
SUMMARY OF THE PRESENT INVENTION
There is provided, in accordance with a preferred embodiment of the present invention, a demapper for a multiple-input, multiple-output symbol receiver. The demapper includes a hypothesis determiner and a first half counter-hypothesis determiner. The hypothesis determiner determines hypotheses values for each of a multiplicity of received symbols. The first half counter-hypotheses determiner reuses interim results of the hypothesis determiner to generate a first half of the counter-hypotheses.
Further, in accordance with a preferred embodiment of the present invention, the demapper includes a the second half counter-hypotheses determiner which receives a portion of the interim results and provides them to a table lookup to generate a second half of the set of the counter-hypotheses.
Moreover, in accordance with a preferred embodiment of the present invention, the hypothesis determiner includes a QR decomposer, a normalizer, a candidate hypothesis generator, a normalized error calculator and a hypothesis generator. The QR decomposer generates at least an R matrix from an input channel estimate matrix H. The normalizer normalizes input signals and elements of the R matrix. The candidate hypothesis generator operates on the output of the normalizer to generate a plurality of constrained candidate hypothesis values for one of the received symbols and resultant unconstrained hypothesis values for a second one of the received symbols. The normalized error calculator operates with minimal multiplications and generates an error magnitude for each of the plurality of constrained candidate hypotheses and their resultant unconstrained hypothesis values. The hypothesis generator reviews the error magnitudes and selects the constrained hypothesis and resultant unconstrained hypothesis corresponding to the smallest error magnitude.
Further, in accordance with a preferred embodiment of the present invention, the first half counter-hypotheses determiner includes a multiplicity of counter-hypothesis generators, one per bit of the selected hypothesis, each to review a set of the error magnitude associated with candidate counter-hypotheses and to select the counter-hypothesis corresponding to the smallest error magnitude in the set of error magnitudes.
Still further, in accordance with a preferred embodiment of the present invention, the normalized error calculator includes a d2 error magnitude calculator, a d1 error magnitude calculator and a total error magnitude calculator. The d2 error magnitude calculator evaluates the error Ē2(k)= X2− r2U2(k) and its corresponding L1 norm. The d1 error magnitude calculator evaluates Ũ1(k)= X1− R12U2(k), to find the closest constellation point U1(k) to an unconstrained solution Ũ1(k) and determines the error Ē1(k) therebetween and its corresponding L1 norm. The total error magnitude calculator determines the total error magnitude from the output of d2 error magnitude calculator and d1 error magnitude calculator.
Additionally, in accordance with a preferred embodiment of the present invention, the d1 error magnitude calculator and the d2 error magnitude calculator include L1 norm calculators.
Furthermore, in accordance with a preferred embodiment of the present invention, the demapper has a fixed throughput defined by a fixed number of cycles to generate the output.
Moreover, in accordance with a preferred embodiment of the present invention, the normalized error calculator includes a multiplicity of processing branches, wherein the number of processing branches scales with a complexity of the constellation type related to the symbols.
Still further, in accordance with a preferred embodiment of the present invention, the demapper provides the hypotheses and counter-hypotheses values to an LLR determiner. The LLR determiner utilizes the interim results of the hypothesis and first half counter-hypotheses determiner and interim results of the second half counter-hypothesis determiner to generate a log-likelihood ratio Lb.
There is also provided, in accordance with a preferred embodiment of the present invention, a method, implementable on a multiple-input, multiple-output symbol receiver. The method includes selecting a hypothesis for a second symbol value U2 from among the set of fixed constellation points, calculating a hypothesis for a first symbol value U1 from the resultant selected U2 value and generating a first half of counter-hypotheses from interim results of calculating the hypotheses values.
Further, in accordance with a preferred embodiment of the present invention, the method includes providing a portion of the interim results to a table lookup to generate a second half of the set of the counter-hypotheses.
Moreover, in accordance with a preferred embodiment of the present invention, the method also includes, prior to the calculating, normalizing the following equations by r1 thereby to enable the remaining operations to operate with minimal multiplications:

E2=X2−r2U2 

E1=X1−r1U1−R12U2 

where the R elements are from a right triangular matrix R generated by QR decomposition from an input channel estimate matrix H, U1 and U2 are the transmitted symbols to be demapped and X1 and X2 are the received signals.
Further, in accordance with a preferred embodiment of the present invention, the calculating includes calculating errors and determining the size of the errors is performed with an L1 norm without significantly affecting the quality of the demapping.
Additionally, in accordance with a preferred embodiment of the present invention, the method also includes determining a log-likelihood ratio Lb from the interim results of calculating the hypotheses values and from interim results of the table lookup operation.



BRIEF DESCRIPTION OF THE DRAWINGS AND APPENDICES
The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
FIG. 1 is a schematic illustration of an exemplary 64-point constellation, for the QAM (quadrature amplitude modulation) method;
FIG. 2 is a schematic illustration of the transmission from one transmitting antenna to a receiving antenna;
FIG. 3 is a schematic illustration of the transmission from two transmitting antennas to two receiving antennas;
FIG. 4 is a schematic illustration of a constellation with two received symbols;
FIG. 5 is a block diagram illustration of a MIMO (multiple-input, multiple-output) system, constructed and operative in accordance with a preferred embodiment of the present invention;
FIG. 6 is a block diagram illustration of the elements of the MIMO processor of FIG. 5, constructed and operative in accordance with a preferred embodiment of the present invention;
FIGS. 7 and 8 are illustrations of the calculations performed by a demapper of FIG. 6;
FIGS. 9 and 10 are block diagram illustrations of an exemplary hardware implementation of the demapper of FIG. 6; and



Appendix A provides tables useful for a table lookup element of FIG. 10 for multiple types of constellations.
It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.
DETAILED DESCRIPTION OF THE PRESENT INVENTION
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.
Applicant has realized that the processing for a MIMO (multiple-input, multiple-output) demapper may be significantly reduced.
Reference is now made to FIG. 5, which illustrates the main elements of a MIMO system. On the transmission side, an access point (AP) may provide its data to be transmitted through multiple transmitting antennas 10, where FIG. 5 shows 2 antennas 10. These are received by N receiving antennas 12, where, in FIG. 5, three receiving antennas 12 are shown. The output of receiving antennas 12 may be processed, such as by a radio frequency (RF) unit 20 to receive the transmission and to convert it from an analog to a digital signal (ADC), a time domain (TD) processor 22 to process the digital, time domain signal and a fast Fourier transform (FFT) unit 24 to convert the time domain signal to a frequency based signal, which is the incoming signal y. Units 20-24 may be standard units. The incoming y signal may be a vector of length N, where N is the number of receiving antennas 12.
The incoming signal y may be provided to a MIMO processor which, in accordance with a preferred embodiment of the present invention, may be a list based, MIMO processor 30, and to a channel estimator 32. Channel estimator 32 may be a standard channel estimator which may provide the matrix H for the current channel, where H is of size N×M, where M is the number of transmission antennas 10.
The output of MIMO processor 30 may be provided to a deinterleaver 34 which provides its output to a Viterbi decoder 36 for a final determination of the transmitted data bits.
The output of MIMO processor 30 may be a vector Lb which may provide “soft” information corresponding to the values of the symbols u represented by the incoming signal y. Like y, Lb may be a vector, but Lb may be a vector of length M*J, where J is the number of bits in a symbol. In other words, u represents the M transmitted symbols, each of which has J bits.
In accordance with a preferred embodiment of the present invention, MIMO processor 30 may provide “soft decisions” for each bit, thus providing unit 34 and Viterbi decoder 36 with some indication of the quality of the demapping.
MIMO processor 30 may calculate a log-likelihood ratio Lb for each bit position b in symbol vector u. Using a “Log Max approximation”, a standard approximation, the ratio Lb may be defined as:




  
    
      
        
          L
          b
        
        =
        
          
            1
            
              σ
              2
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                
                  
                    u
                    ^
                  
                  
                    [
                    b
                    ]
                  
                
              
              -
              1
            
            )
          
          ⁢
          
            (
            
              
                
                  
                  
                    y
                    -
                    
                      H
                      ⁢
                      
                        
                          c
                          ^
                        
                        b
                      
                    
                  
                  
                
                2
              
              -
              
                
                  
                  
                    y
                    -
                    
                      H
                      ⁢
                      
                        u
                        ^
                      
                    
                  
                  
                
                2
              
            
            )
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        2
      
    
  




where σ may be the standard deviation of the noise, û may be a hypothesis for the values of u, ĉb may be a corresponding counter hypothesis for the bit position b, defined in more detail herein below and, û[b] may be the bit value {0 or 1} at bit position b of the bit pattern associated with û.
Equation 2 may be further simplified by performing a standard decomposition, defined by:

H=QR  Equation 3

Where Q is the unitary matrix, which, when multiplied by its conjugate-transpose Q* creates the identity matrix I (mathematically: Q×Q*=I), and R is an upper-triangular matrix.
The resultant simplified version of equation 2 is:




  
    
      
        
          L
          b
        
        =
        
          
            1
            
              σ
              2
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                
                  
                    u
                    ^
                  
                  
                    [
                    b
                    ]
                  
                
              
              -
              1
            
            )
          
          ⁢
          
            (
            
              
                
                  
                  
                    x
                    -
                    
                      R
                      ⁢
                      
                        
                          c
                          ^
                        
                        b
                      
                    
                  
                  
                
                2
              
              -
              
                
                  
                  
                    x
                    -
                    
                      R
                      ⁢
                      
                        u
                        ^
                      
                    
                  
                  
                
                2
              
            
            )
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
      
    
  




where x is a form of y defined by Q*×y.
It will be appreciated that equation 4 is simpler than equation 2 because H is a complex matrix generally having no zero elements whereas R is an upper triangular matrix of complex elements.
Hypothesis û may be defined by:

û=arg ∥x−Ru∥2  Equation 5

where argmin is the argument which minimizes the “L2 norm”, a standard norm defined by the double lines, and  is the space of the constellation (i.e. it covers all possible symbol values within the constellation).
The counter hypothesis at bit position b, ĉb, may be defined as:

ĉb=arg [b](û)∥x−Rc∥2  Equation 6

Where [b](û) is the subset of the constellation space  whose elements have associated bit patterns with a bit value at position b opposite to the corresponding bit value at that bit position associated with the hypothesis û. To determine the log-likelihood ratio Lb, therefore, one has to evaluate equations 5, 6 and 4, in that order. There are 64 possible symbols in the QAM constellation example and two symbols which have been transmitted. This is a significant number of possibilities! Moreover, each equation requires a significant amount of matrix calculations, which requires a significant amount of multiplications. Thus, this calculation is difficult to perform for the large constellations such as the one used here as an example.
Applicant has invented a relatively efficient way to evaluate equations 6 and 5 in a manner which minimizes the amount of multiplications and other necessary operations. Reference is now made to FIG. 6, which illustrates the elements of MIMO processor 30. Processor 30 may comprise a QR decomposer 42, a normalizer 44, a complex list-based lattice (CLL) demapper 46 and log-likelihood ratio (LLR) determiner 48. Together, the elements solve equations 4, 5 and 6.
Initially, processor 30 may handle the error term:

e=(E1E2)T=x−Ru 

Since R is an upper triangular matrix, its elements are:




  R
  =
  
    (
    
      
        
          
            r
            1
          
        
        
          
            R
            12
          
        
      
      
        
          0
        
        
          
            r
            2
          
        
      
    
    )
  




where r1 and r2 are real variables and R12 is a complex variable. The error term may be rewritten as two error terms, as follows:

E2=X2−r2U2  Equation 7

E1=X1−r1U1−R12U2  Equation 8

Normalizing equations 7 and 8 by r1 reduces the implementation costs of equation 8, which must be computed many times. Thus, QR decomposer 42 may evaluate equation 3 and may produce matrices Q and R and normalizer 44 may normalize the non-symbol terms of equations 7 and 8, to generate:

Ē2= X2 r2U2  Equation 7a

Ē1= X1−U1− R12U2  Equation 8a

Equation 8a may be rewritten as two equations an equation for an unconstrained solution Ũ1 and an equation for the error in constraining Ũ1 to a valid constellation point U1. Thus:

Ũ1(k)= X1− R12U2(k)  Equation 9

Ē1(k)=Ũ1(k)−U1(k)  Equation 10

Equations 7a, 9 and 10 need to be evaluated for all possible combinations of U1 and U2. This is normally a difficult operation given that, in a constellation of ||symbols, there are ||2 combinations of U1 and U2.
If you fix the value of U2 to be one of the values in the constellation, equation 9 will generate an associated unconstrained solution Ũ1 from which U1 may be derived as the constellation point nearest to the unconstrained solution Ũ1.
Reference is now made to FIG. 7, which illustrates this. Column 50 lists the || possible constellation points, denoted by k (64 points in the QAM constellation example). Column 52 lists the symbol value of U2(k) for each point k. Rather than giving values, the table lists these as (Ri,Ii). These are the possible values of U2. Using equation 9, column 54 lists the resultant values of Ũ1(k) for each value of U2(k). For clarity, the table lists only three resultant values, for k=1, 37 and 64.
It will be appreciated that U1(k) may be set to the symbol value closest to the generated value of approximation Ũ1(k).
Equation 10 provides the error term for each of the 64 values of U1(k) and equation 7a provides the error term for E2, for each of the 64 values of U2(k).
A error magnitude d(k) may be generated for each value of k from equations 10 and 8a, as follows:

d2(k)=|Re(Ē2(k))|+|Im(Ē2(k))|  Equation 11a 

d1(k)=|Re(Ē1(k))|+|Im(Ē1(k))|  Equation 11b

d(k)=d2(k)+d1(k)  Equation 11c

Where Re( ) takes the real part and Im( ) takes the imaginary part of a complex number. It will be appreciated that equations 11a and 11b determine the error magnitude using an L1 norm, which is a simpler calculation as it uses only standard absolute values and does not have any multiplication in it.
The table of FIG. 7 lists d(k), in column 56, for each of the 64 values of the table. In accordance with a preferred embodiment of the present invention, demapper 46 may search column 56 to find the row with the smallest error magnitude d. For example, in FIG. 7, row 37 is circled to indicate that d(37) has the smallest value. Thus, in this example, the 37th constellation pair (U1(37),U2(37)) provides us with the hypothesis, i.e. û. Mathematically, the search in column 56 may be written as:

kML=arg mink{d(k)}  Equation 12

i.e. the constellation point of the solution is the one which has the smallest error magnitude d. It should be noted that, aside from the use of the L1 norm instead of the L2 norm, equation 12 leads to estimates which are essentially ML (maximum likelihood) estimates for the transmitted symbols u because of the log-max approximation in equation 2. It will be appreciated that the estimates of equation 12 are only negligibly different from the true ML estimates. The resultant hypothesis is written mathematically as:

û=(Û1,Û2)T=(U1(kML),U2(kML))T  Equation 13

It will be appreciated that, with a minimal amount of multiplications and only 64 combinations, demapper 46 may produce the hypothesis û (i.e. Equation 5). What remains is to determine the counter-hypotheses ĉb.
Applicant has realized that, since the U2 value was selected from among the possible values of the constellation, the U2 value is a “constrained” solution, constrained to be a proper constellation point. Thus, its counter-hypotheses ĉb may be directly determined from the error magnitude calculations of equation 11c. This is not true for the U1 values, which are calculated from the U2 constellation points and do not, in general, cover all the constellation points.
It will be appreciated that, since the U2 value is a proper constellation point, accordingly, half of the counter-hypothesis determinations (i.e. those related to U2) do not require additional calculations and they are thus determined nearly for ‘free’, as follows:
For each bit b in the selected Û2 (for example, there are 6 bits in a 64 QAM constellation point), demapper 46 may determine which of the constellation points have the opposite value (i.e. they have a 1 value where the bit in Û2 has a 0 value or a 0 value where the bit in Û2 has a 1 value). Thus, if U2(37) (kML=37) is (101,000), then, for bit 1, demapper 46 may search for all constellation points whose first bit has a value of 0. There are 32 of these points. FIG. 8 denotes those constellation points with the desired counter-hypothesis bit value with a check and those with the undesired bit value with a dash.
In effect, demapper 46 may mask the constellation points that have the undesired bit value and then may search through the remaining unmasked error magnitude d(k) values in column 56 for the constellation point with the smallest error magnitude. This may produce counter-hypothesis ĉb for bit b. In FIG. 7, d(24) is shown to have the smallest error magnitude and thus, constellation pair 24, U2(24) and the corresponding U1(24), is the counter-hypothesis for bit 1 of hypothesis U2(37), where bit 1 of hypothesis U2(37) is bit 7 of the overall hypothesis vector. Note that, in the example of FIG. 7, d(1) is listed as the smallest error magnitude for bit 8, and d(64) is listed as the smallest error magnitude for bit 12.
Mathematically, the process described hereinabove is defined as:

lML(β)=arg minlεδβ{d(l)}

δβ={l:U2(l)[β]≠Û2[β]}, β=1, . . . ,6

ĉβ+6=(U1(lML(β)),U2(lML(β)))T  Equation 14

where l is one constellation point, lML(β) is the selected constellation point (i.e. the point with the smallest error magnitude) and δβ is the mask.
What remains is to determine the counter-hypotheses ĉb for bits associated with hypothesis Û1. Recall that Ũ1 is an unconstrained solution (i.e it is a calculated value rather than a fixed, integer constellation value). Thus, it isn't clear what the counter-hypothesis is, as the values of the bits are not exactly 0 or 1. Thus, a search must be made for the counter-hypothesis for each bit.
Applicant has realized that, for the 64 point QAM constellation, there are only four possibilities for each counter-hypothesis for U1. This is because U1 has six bits, only one of which must be changed for the counter-hypothesis. If the changed bit corresponds to the real part of the symbol, the imaginary part is kept unchanged. Likewise, if the changed bit corresponds to the imaginary part of the symbol, the real part is kept unchanged. This leaves two bits, both from either the real part or the imaginary part that can be varied. Consequently, there are only four candidate constellation points. Thus, as shown in FIG. 8 to which reference is now briefly made, if Û1 is (010,101), if the bit of interest is bit 3, which has a 0 value, only the constellation points (001,101), (011,101), (111,101) and (101,101) have bit 3 with a 1 value, while keeping bits 4, 5 and 6 unchanged. If the bit of interest is bit 2, then the constellation points of interest are (000,101), (001,101), (101,101) and (100,101).
Note that in the example of FIG. 8, the four constellation points are all in the same row. That is because bits 1-3 are associated with the Real axis. The points would be in the same column if the bits of interest were associated with the Imaginary axis. In accordance with the present invention, constellation points are searched along one axis; otherwise, the total error magnitude would necessarily increase and not reach a global minimum.
Thus, for each of the four possible counter-hypothesis constellation points, the error magnitude may be determined and the smallest value selected. This process is repeated for each of 64 unconstrained solutions Ũ1(m). Each corresponding constrained value U1(m) is converted to a candidate value U1(m,β), where the latter is a proper counter-hypothesis candidate as described above, for each bit position β in Û1. For each candidate value U1(m,β), a corresponding partial error magnitude d1(m,β) is computed according to equations 10 and 11b. This partial error magnitude is used to compute the total error magnitude d(m,β)=d2+d1(m,β). The resulting set d(m,β) of 64 error magnitudes may be searched to determine the smallest value. The pair {U2(m),U1(m,β)} corresponding to the smallest d(m,β) is selected as the essentially ML estimate of cβ for bit β.
Note that this process is repeated for each bit position β in Û1. The arithmetic cost of each operation is essentially a small number of additions (no multiplications are involved due to the pre-normalization in equation 8a) per constellation point (64 possibilities) and per bit position (6 possibilities).
Applicant has realized that the determination of U1(m,β) per constellation point m and per bit position β is a function of the value of Û1 and the position of the hypothesis candidate U1(m) relative to the corresponding unconstrained solution Ũ1(m) (i.e. is the real/imaginary part of Ũ1(m) to the left/below or right/above of the closest constellation point U1(m)?) and may be implemented as a table lookup (TLU) function. For 64 point QAM, the lookup table has 2×8×2×3=96 entries. Appendix A provides exemplary lookup tables for various QAM constellations. The table lists the bit position β, the value of hypothesis bit β (Û1[β]), the sign of the error term Ē1(m), the hypothesis candidate U1(m), and the resultant counter hypothesis candidate U1(m,β).
Given the output of the table lookup function, the counter-hypothesis may be calculated, as follows:

Re(U1(m,β))=TLU(Û1[β],Re(U1(m)),sign(Re(Ē1(m))),β)  Equation 15A

Im(U1(m,β))=TLU(Û1[β],Im(U1(m)),sign(Im(Ē1(m))),β)  Equation 15B

Ē1(m,β)=Ũ1(m)−U1(m,β)  Equation 16

d1(m,β)=|Re({tilde over (E)}1(m,β))|+|Im({tilde over (E)}1(m,β))|  Equation 17

d(m,β)=d2(m)+d1(m,β)  Equation 18

mML(β)=arg minm{d(m,β)}  Equation 19

ĉβ=(U1(mML(β),β),U2(mML(β)))T  Equation 20

where, β is the bit number of interest (i.e. 1-6), and m is the constellation point index of interest. Note that the values of Û1, U1(m), Ē1(m) and d2(m) known from the previous calculations.
Reference is now made to FIGS. 9 and 10, which illustrate an exemplary hardware implementation for demapper 46. Demapper 46 may comprise a hypothesis and top-half counter-hypothesis determiner (HCHD) 60 and a bottom-half counter-hypothesis determiner (BCHD) 62.
HCHD 60 may comprise a d2 error magnitude calculator 64 and a d1 error magnitude calculator 66. D2 error magnitude calculator 64 may comprise a multiplicity of elements 68 which may receive the normalized values of r2 and of received symbol X2 and may evaluate equation 7a (Ē2= X2− r2U2) for each constellation point U2. Equation 7a is a complex equation but may be evaluated as two real equations as follows:

ReĒ2=Re X2− r2ReU2  Equation 7a(1)

ImĒ2=Im X2− r2ImU2  Equation 7a(2)

Thus, elements 68 may separately evaluate equations 7a(1) and 7a(2).
Moreover, since quantities Re U2 and Im U2 are essentially 3-bit operands (i.e. 3 bit values), elements 68 may be efficiently implemented with a few adders rather than as multipliers. Calculator 64 may also comprise a multiplicity of simple absolute value adders 70 which may determine the error magnitude d2 (from equation 11a) for each constellation point U2.
D1 calculator 66 may determine the error magnitude d1 and may comprise complex multipliers 72 to evaluate equation 9 (Ũ1(k)= X1− R12U2(k)) and to thus determine the unconstrained solution Ũ1(k). d1 calculator 66 may also comprise a multiplicity of nearest constellation point determiners 74 which may find the closest constellation point to each unconstrained solution Ũ1(k), thereby to determine the U1 hypothesis. d1 calculator 66 may comprise a multiplicity of subtractors 76 to subtract the U1 values from the unconstrained solution Ũ1(k), thereby evaluating equation 10. Their output may be provided to a multiplicity of simple absolute value adders 78 to determine the partial error magnitude d1 for each constellation point k, thereby evaluating equation 11b.
The output of both calculators 64 and 66 may be provided to simple real adders 80 to determine the total error magnitude d(k) for each constellation point (i.e. evaluating equation 11c).
HCHD 60 may additionally comprise a hypothesis generator 67, comprising a minimum evaluator 90 to determine, from error magnitudes d(k), a hypothesis candidate {U2(k),U1(k)}, an associated selector 91, and a set of minimum evaluators 92 for the top counter hypotheses, each of which reviews a different subset of the error magnitudes d(k), each with their associated selector 93. Hypothesis minimum evaluator 90 may evaluate equation 12, over the entire set of error magnitudes, thereby to generate the hypothesis value of U1 for its corresponding U2.
The selected hypothesis values have associated bit patterns, and each counter hypothesis minimum evaluator 92 may be associated with a particular bit b. Each evaluator 92 may select the error magnitude d(l) with the minimum value having the required counter hypothesis value for its associated bit b. This is used to select the counter-hypothesis values for U2—an evaluation of equation 14. Applicant has realized that by working with error magnitude subsets, no further operations are required to compute the counter-hypotheses for U2, besides finding the minimum among error magnitudes in each subset.
It will be appreciated that, except for the multipliers 68 and 72, the remaining elements of HCHD 60 are simple elements.
BCHD 62 may comprise table lookup elements 100, one per bit of the counter-hypothesis, a few simple subtractors 104 and a multiplicity of absolute value adders 106. Each table lookup element 100 may take its hypothesis values for U1 and difference values E1 from HCHD 60 and may generate the value for U1(m,β) and the selected constellation point m, according to equation 15. Each subtractor 104 may evaluate equation 16, subtracting the selected constellation point U1(m,β) value from the previously determined unconstrained solution Ũ1(m) value.
Each absolute value adder 106 may evaluate equation 17 by determining the error magnitude d1(m,β) for the selected constellation point m and bit position β of U1, where the error magnitude is calculated using absolute values (i.e. the L1 norm). Each adder 108 may determine the full error magnitude, adding the error magnitude d1 from its adder 106 to the d2 error magnitude for the corresponding U2 previously determined by HCHD 60 (i.e. may evaluate equation 18).
BCHD 62 may additionally comprise a counter-hypothesis generator 110 comprising, for each bit, a minimum evaluator 112 with an associated selector 114. Each minimum evaluator 112 may evaluate equation 19 by reviewing the error magnitudes d generated by adders 108 and by selecting the smallest error magnitude d. Each minimum evaluator 112 may then indicate to its selector 114 which counter-hypothesis to select.
It will be appreciated that the elements utilized by BCHD 62, like those of HCHD 60, are relatively simple elements. Each operation may be performed within one cycle of relatively short duration due to the simplicity of operations, and thus, the operations of HCHD 60 and BCHD 62 may be implemented in a pipelined manner. Because of this, and of the simple operations, very high throughput may be possible. Moreover, it will be appreciated that the throughput is fixed; no steps require determining if the calculation is finished. As a result, data may move through demapper 46 very smoothly, which may simplify the design of the controller needed to operate demapper 46.
Furthermore, it will be appreciated that the present invention is relatively insensitive to the errors often caused by using the L1 norm rather than the L2 norm, and as a result, benefits from substantial savings in implementation costs.
It will be appreciated that the 64-point QAM constellation used as example does not limit the applicability of the methods of the present invention to other constellations. Moreover, the present invention does not require 64 parallel computation paths. It is possible to implement 8, 4 and 2 computation paths for 64, 16 and 4 QAM constellations, respectively, and to reuse those paths 8, 4, and 2 times for each complete demapping operation. This way, the amount of operating logic and its operating frequency scales according to the constellation, which helps save battery power consumption.
Moreover, it will be appreciated that the number of processing branches scales with the constellation complexity. In FIGS. 9 and 10, there are 64 incoming branches for a 64 QAM constellation. A constellation of a different size will have different number of branches. Furthermore, the power consumption also scales according to constellation complexity which provides a significant efficiency.
Referring back to FIG. 6, demapper 47 may provide its output, the hypotheses and counter-hypotheses, to LLR determiner 48 which may, in turn, determine the log-likelihood ratio Lb according to equation 4, repeated hereinbelow.




  
    
      
        
          L
          b
        
        =
        
          
            1
            
              σ
              2
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                
                  
                    u
                    ^
                  
                  
                    [
                    b
                    ]
                  
                
              
              -
              1
            
            )
          
          ⁢
          
            (
            
              
                
                  
                  
                    x
                    -
                    
                      R
                      ⁢
                      
                        
                          c
                          ^
                        
                        b
                      
                    
                  
                  
                
                2
              
              -
              
                
                  
                  
                    x
                    -
                    
                      R
                      ⁢
                      
                        u
                        ^
                      
                    
                  
                  
                
                2
              
            
            )
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
      
    
  




where x is the non-normalized received symbol vector and R is the non-normalized upper triangular matrix.
In accordance with an alternative embodiment of the present invention, the log-likelihood ratio Lb may be evaluated more simply, using L1 norms without significantly affecting performance, as follows:




  
    
      
        
          L
          b
        
        =
        
          
            
              
                r
                1
                2
              
              
                σ
                2
              
            
            ⁢
            
              (
              
                
                  2
                  ⁢
                  
                    
                      u
                      ^
                    
                    
                      [
                      b
                      ]
                    
                  
                
                -
                1
              
              )
            
            ⁢
            
              
              
            
            ⁢
            
              x
              _
            
          
          -
          
            
              R
              _
            
            ⁢
            
              
                c
                ^
              
              b
            
            ⁢
            
              
                
                2
              
              -
              
            
            ⁢
            
              x
              _
            
          
          -
          
            
              R
              _
            
            ⁢
            
              u
              ^
            
            ⁢
            
              
                
                2
              
              
            
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
        ⁢
        a
      
    
  




where x is the normalized received symbol vector and R is the normalized upper triangular matrix, normalized by r1. More importantly, equation 4a may be evaluated using the error magnitudes previously calculated by demapper 46. Specifically (for bits b=β=1 . . . 6),

d(mML(β),β)=| x− Rĉβ|  Equation 21

d(kML)=| x− Rû|  Equation 22

And equation 4a becomes simplified and is evaluated based on previously computed values. Specifically, for bits b=β=1 . . . 6:




  
    
      
        
          L
          b
        
        =
        
          
            
              r
              1
              2
            
            
              σ
              2
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                
                  
                    u
                    ^
                  
                  
                    [
                    b
                    ]
                  
                
              
              -
              1
            
            )
          
          ⁢
          
            
            
              
                d
                
                  (
                  
                    
                      m
                      ML
                      
                        (
                        β
                        )
                      
                    
                    ,
                    β
                  
                  )
                
              
              -
              
                d
                
                  (
                  
                    k
                    ML
                  
                  )
                
              
            
            
          
          ⁢
          
            (
            
              
                d
                
                  (
                  
                    
                      m
                      ML
                      
                        (
                        β
                        )
                      
                    
                    ,
                    β
                  
                  )
                
              
              +
              
                d
                
                  (
                  
                    k
                    
                      ML
                      )
                    
                  
                
              
            
            )
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
        ⁢
        b
      
    
  




And for bits b=β+6=7 . . . 12,




  
    
      
        
          L
          b
        
        =
        
          
            
              r
              1
              2
            
            
              σ
              2
            
          
          ⁢
          
            (
            
              
                2
                ⁢
                
                  
                    u
                    ^
                  
                  
                    [
                    b
                    ]
                  
                
              
              -
              1
            
            )
          
          ⁢
          
            
            
              
                d
                
                  (
                  
                    l
                    ML
                    
                      (
                      β
                      )
                    
                  
                  )
                
              
              -
              
                d
                
                  (
                  
                    k
                    ML
                  
                  )
                
              
            
            
          
          ⁢
          
            (
            
              
                d
                
                  (
                  
                    l
                    ML
                    
                      (
                      β
                      )
                    
                  
                  )
                
              
              +
              
                d
                
                  (
                  
                    k
                    
                      ML
                      )
                    
                  
                
              
            
            )
          
        
      
    
    
      
        Equation
        ⁢
        
          
        
        ⁢
        4
        ⁢
        c
      
    
  




It will be appreciated that LLR determiner 48, like demapper 36, is relatively insensitive to the use of the L1 norm. This insensitivity reduces the calculations to simple subtractions rather than multiplications which very significantly reduces the complexity of list-based MIMO processor 30.
Unless specifically stated otherwise, as apparent from the preceding discussions, it is appreciated that, throughout the specification, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer, computing system, or similar electronic computing device that manipulates and/or transforms data represented as physical, such as electronic, quantities within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices.
Embodiments of the present invention may include apparatus for performing the operations herein. This apparatus may be specially constructed for the desired purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk, including floppy disks, optical disks, magnetic-optical disks, read-only memories (ROMs), compact disc read-only memories (CD-ROMs), random access memories (RAMs), electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, Flash memory, or any other type of media suitable for storing electronic instructions and capable of being coupled to a computer system bus.
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those of ordinary skill in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.
APPENDIX A
Lookup Tables
The table is the same for the real and the imaginary components. The bit position is within the component.
bit pos: Zero based bit position within the real or imaginary component;
hyp bit: hypothesis bit value at the bit position;
error sign: sign of the error Ē1;
c/hyp in: real or imaginary input counter-hypothesis value U1(m); and
c/hyp out: real or imaginary resultant counter-hypothesis value U1(m,β)












//====================================================


// Table of Counter-Hypotheses for 16-QAM Constellation.


//====================================================











//bit
hyp
error
c/hyp
c/hyp


//pos
bit
sign
in
out


// 0
0
−1
−3
−1


// 0
0
−1
−1
−1


// 0
0
−1
+1
+1


// 0
0
−1
+3
+1


// 0
0
+1
−3
−1


// 0
0
+1
−1
−1


// 0
0
+1
+1
+1


// 0
0
+1
+3
+1


// 0
1
−1
−3
−3


// 0
1
−1
−1
−3


// 0
1
−1
+1
+3


// 0
1
−1
+3
+3


// 0
1
+1
−3
−3


// 0
1
+1
−1
−3


// 0
1
+1
+1
+3


// 0
1
+1
+3
+3


// 1
0
−1
−3
+1


// 1
0
−1
−1
+1


// 1
0
−1
+1
+1


// 1
0
−1
+3
+3


// 1
0
+1
−3
+1


// 1
0
+1
−1
+1


// 1
0
+1
+1
+1


// 1
0
+1
+3
+3


// 1
1
−1
−3
−3


// 1
1
−1
−1
−1


// 1
1
−1
+1
−1


// 1
1
−1
+3
−1


// 1
1
+1
−3
−3


// 1
1
+1
−1
−1


// 1
1
+1
+1
−1


// 1
1
+1
+3
−1





















//=====================================================


// Table of Counter-Hypotheses for BPSK/QPSK Constellation.


//=====================================================











//bit
hyp
error
c/hyp
c/hyp


//pos
bit
sign
in
out


// 0
0
−1
−1
+1


// 0
0
−1
+1
+1


// 0
0
+1
−1
+1


// 0
0
+1
+1
+1


// 0
1
−1
−1
−1


// 0
1
−1
+1
−1


// 0
1
+1
−1
−1


// 0
1
+1
+1
−1





















//=====================================================


// Table of Counter-Hypotheses for 64-QAM Constellation.


//=====================================================











//bit
hyp
error
c/hyp
c/hyp


//pos
bit
sign
in
out


// 0
0
−1
−7
−5


// 0
0
−1
−5
−5


// 0
0
−1
−3
−3


// 0
0
−1
−1
−3


// 0
0
−1
+1
+3


// 0
0
−1
+3
+3


// 0
0
−1
+5
+5


// 0
0
−1
+7
+5


// 0
0
+1
−7
−5


// 0
0
+1
−5
−5


// 0
0
+1
−3
−3


// 0
0
+1
−1
−3


// 0
0
+1
+1
+3


// 0
0
+1
+3
+3


// 0
0
+1
+5
+5


// 0
0
+1
+7
+5


// 0
1
−1
−7
−7


// 0
1
−1
−5
−7


// 0
1
−1
−3
−1


// 0
1
−1
−1
−1


// 0
1
−1
+1
+1


// 0
1
−1
+3
+1


// 0
1
−1
+5
+7


// 0
1
−1
+7
+7


// 0
1
+1
−7
−7


// 0
1
+1
−5
−7


// 0
1
+1
−3
−1


// 0
1
+1
−1
−1


// 0
1
+1
+1
+1


// 0
1
+1
+3
+1


// 0
1
+1
+5
+7


// 0
1
+1
+7
+7


// 1
0
−1
−7
−3


// 1
0
−1
−5
−3


// 1
0
−1
−3
−3


// 1
0
−1
−1
−1


// 1
0
−1
+1
+1


// 1
0
−1
+3
+3


// 1
0
−1
+5
+3


// 1
0
−1
+7
+3


// 1
0
+1
−7
−3


// 1
0
+1
−5
−3


// 1
0
+1
−3
−3


// 1
0
+1
−1
−1


// 1
0
+1
+1
+1


// 1
0
+1
+3
+3


// 1
0
+1
+5
+3


// 1
0
+1
+7
+3


// 1
1
−1
−7
−7


// 1
1
−1
−5
−5


// 1
1
−1
−3
−5


// 1
1
−1
−1
−5


// 1
1
−1
+1
+5


// 1
1
−1
+3
+5


// 1
1
−1
+5
+5


// 1
1
−1
+7
+7


// 1
1
+1
−7
−7


// 1
1
+1
−5
−5


// 1
1
+1
−3
−5


// 1
1
+1
−1
−5


// 1
1
+1
+1
+5


// 1
1
+1
+3
+5


// 1
1
+1
+5
+5


// 1
1
+1
+7
+7


// 2
0
−1
−7
+1


// 2
0
−1
−5
+1


// 2
0
−1
−3
+1


// 2
0
−1
−1
+1


// 2
0
−1
+1
+1


// 2
0
−1
+3
+3


// 2
0
−1
+5
+5


// 2
0
−1
+7
+7


// 2
0
+1
−7
+1


// 2
0
+1
−5
+1


// 2
0
+1
−3
+1


// 2
0
+1
−1
+1


// 2
0
+1
+1
+1


// 2
0
+1
+3
+3


// 2
0
+1
+5
+5


// 2
0
+1
+7
+7


// 2
1
−1
−7
−7


// 2
1
−1
−5
−5


// 2
1
−1
−3
−3


// 2
1
−1
−1
−1


// 2
1
−1
+1
−1


// 2
1
−1
+3
−1


// 2
1
−1
+5
−1


// 2
1
−1
+7
−1


// 2
1
+1
−7
−7


// 2
1
+1
−5
−5


// 2
1
+1
−3
−3


// 2
1
+1
−1
−1


// 2
1
+1
+1
−1


// 2
1
+1
+3
−1


// 2
1
+1
+5
−1


// 2
1
+1
+7
−1





















//=====================================================


// Table of Counter-Hypotheses for 256-QAM Constellation.


//=====================================================











//bit
hyp
error
c/hyp
c/hyp


//pos
bit
sign
in
out


// 0
0
−1
−15
−13


// 0
0
−1
−13
−13


// 0
0
−1
−11
−11


// 0
0
−1
−9
−11


// 0
0
−1
−7
−5


// 0
0
−1
−5
−5


// 0
0
−1
−3
−3


// 0
0
−1
−1
−3


// 0
0
−1
+1
+3


// 0
0
−1
+3
+3


// 0
0
−1
+5
+5


// 0
0
−1
+7
+5


// 0
0
−1
+9
+11


// 0
0
−1
+11
+11


// 0
0
−1
+13
+13


// 0
0
−1
+15
+13


// 0
0
+1
−15
−13


// 0
0
+1
−13
−13


// 0
0
+1
−11
−11


// 0
0
+1
−9
−11


// 0
0
+1
−7
−5


// 0
0
+1
−5
−5


// 0
0
+1
−3
−3


// 0
0
+1
−1
−3


// 0
0
+1
+1
+3


// 0
0
+1
+3
+3


// 0
0
+1
+5
+5


// 0
0
+1
+7
+5


// 0
0
+1
+9
+11


// 0
0
+1
+11
+11


// 0
0
+1
+13
+13


// 0
0
+1
+15
+13


// 0
1
−1
−15
−15


// 0
1
−1
−13
−15


// 0
1
−1
−11
−9


// 0
1
−1
−9
−9


// 0
1
−1
−7
−7


// 0
1
−1
−5
−7


// 0
1
−1
−3
−1


// 0
1
−1
−1
−1


// 0
1
−1
+1
+1


// 0
1
−1
+3
+1


// 0
1
−1
+5
+7


// 0
1
−1
+7
+7


// 0
1
−1
+9
+9


// 0
1
−1
+11
+9


// 0
1
−1
+13
+15


// 0
1
−1
+15
+15


// 0
1
+1
−15
−15


// 0
1
+1
−13
−15


// 0
1
+1
−11
−9


// 0
1
+1
−9
−9


// 0
1
+1
−7
−7


// 0
1
+1
−5
−7


// 0
1
+1
−3
−1


// 0
1
+1
−1
−1


// 0
1
+1
+1
+1


// 0
1
+1
+3
+1


// 0
1
+1
+5
+7


// 0
1
+1
+7
+7


// 0
1
+1
+9
+9


// 0
1
+1
+11
+9


// 0
1
+1
+13
+15


// 0
1
+1
+15
+15


// 1
0
−1
−15
−11


// 1
0
−1
−13
−11


// 1
0
−1
−11
−11


// 1
0
−1
−9
−9


// 1
0
−1
−7
−7


// 1
0
−1
−5
−5


// 1
0
−1
−3
−5


// 1
0
−1
−1
−5


// 1
0
−1
+1
+5


// 1
0
−1
+3
+5


// 1
0
−1
+5
+5


// 1
0
−1
+7
+7


// 1
0
−1
+9
+9


// 1
0
−1
+11
+11


// 1
0
−1
+13
+11


// 1
0
−1
+15
+11


// 1
0
+1
−15
−11


// 1
0
+1
−13
−11


// 1
0
+1
−11
−11


// 1
0
+1
−9
−9


// 1
0
+1
−7
−7


// 1
0
+1
−5
−5


// 1
0
+1
−3
−5


// 1
0
+1
−1
−5


// 1
0
+1
+1
+5


// 1
0
+1
+3
+5


// 1
0
+1
+5
+5


// 1
0
+1
+7
+7


// 1
0
+1
+9
+9


// 1
0
+1
+11
+11


// 1
0
+1
+13
+11


// 1
0
+1
+15
+11


// 1
1
−1
−15
−15


// 1
1
−1
−13
−13


// 1
1
−1
−11
−13


// 1
1
−1
−9
−13


// 1
1
−1
−7
−3


// 1
1
−1
−5
−3


// 1
1
−1
−3
−3


// 1
1
−1
−1
−1


// 1
1
−1
+1
+1


// 1
1
−1
+3
+3


// 1
1
−1
+5
+3


// 1
1
−1
+7
+3


// 1
1
−1
+9
+13


// 1
1
−1
+11
+13


// 1
1
−1
+13
+13


// 1
1
−1
+15
+15


// 1
1
+1
−15
−15


// 1
1
+1
−13
−13


// 1
1
+1
−11
−13


// 1
1
+1
−9
−13


// 1
1
+1
−7
−3


// 1
1
+1
−5
−3


// 1
1
+1
−3
−3


// 1
1
+1
−1
−1


// 1
1
+1
+1
+1


// 1
1
+1
+3
+3


// 1
1
+1
+5
+3


// 1
1
+1
+7
+3


// 1
1
+1
+9
+13


// 1
1
+1
+11
+13


// 1
1
+1
+13
+13


// 1
1
+1
+15
+15


// 2
0
−1
−15
−7


// 2
0
−1
−13
−7


// 2
0
−1
−11
−7


// 2
0
−1
−9
−7


// 2
0
−1
−7
−7


// 2
0
−1
−5
−5


// 2
0
−1
−3
−3


// 2
0
−1
−1
−1


// 2
0
−1
+1
+1


// 2
0
−1
+3
+3


// 2
0
−1
+5
+5


// 2
0
−1
+7
+7


// 2
0
−1
+9
+7


// 2
0
−1
+11
+7


// 2
0
−1
+13
+7


// 2
0
−1
+15
+7


// 2
0
+1
−15
−7


// 2
0
+1
−13
−7


// 2
0
+1
−11
−7


// 2
0
+1
−9
−7


// 2
0
+1
−7
−7


// 2
0
+1
−5
−5


// 2
0
+1
−3
−3


// 2
0
+1
−1
−1


// 2
0
+1
+1
+1


// 2
0
+1
+3
+3


// 2
0
+1
+5
+5


// 2
0
+1
+7
+7


// 2
0
+1
+9
+7


// 2
0
+1
+11
+7


// 2
0
+1
+13
+7


// 2
0
+1
+15
+7


// 2
1
−1
−15
−15


// 2
1
−1
−13
−13


// 2
1
−1
−11
−11


// 2
1
−1
−9
−9


// 2
1
−1
−7
−9


// 2
1
−1
−5
−9


// 2
1
−1
−3
−9


// 2
1
−1
−1
−9


// 2
1
−1
+1
+9


// 2
1
−1
+3
+9


// 2
1
−1
+5
+9


// 2
1
−1
+7
+9


// 2
1
−1
+9
+9


// 2
1
−1
+11
+11


// 2
1
−1
+13
+13


// 2
1
−1
+15
+15


// 2
1
+1
−15
−15


// 2
1
+1
−13
−13


// 2
1
+1
−11
−11


// 2
1
+1
−9
−9


// 2
1
+1
−7
−9


// 2
1
+1
−5
−9


// 2
1
+1
−3
−9


// 2
1
+1
−1
−9


// 2
1
+1
+1
+9


// 2
1
+1
+3
+9


// 2
1
+1
+5
+9


// 2
1
+1
+7
+9


// 2
1
+1
+9
+9


// 2
1
+1
+11
+11


// 2
1
+1
+13
+13


// 2
1
+1
+15
+15


// 3
0
−1
−15
+1


// 3
0
−1
−13
+1


// 3
0
−1
−11
+1


// 3
0
−1
−9
+1


// 3
0
−1
−7
+1


// 3
0
−1
−5
+1


// 3
0
−1
−3
+1


// 3
0
−1
−1
+1


// 3
0
−1
+1
+1


// 3
0
−1
+3
+3


// 3
0
−1
+5
+5


// 3
0
−1
+7
+7


// 3
0
−1
+9
+9


// 3
0
−1
+11
+11


// 3
0
−1
+13
+13


// 3
0
−1
+15
+15


// 3
0
+1
−15
+1


// 3
0
+1
−13
+1


// 3
0
+1
−11
+1


// 3
0
+1
−9
+1


// 3
0
+1
−7
+1


// 3
0
+1
−5
+1


// 3
0
+1
−3
+1


// 3
0
+1
−1
+1


// 3
0
+1
+1
+1


// 3
0
+1
+3
+3


// 3
0
+1
+5
+5


// 3
0
+1
+7
+7


// 3
0
+1
+9
+9


// 3
0
+1
+11
+11


// 3
0
+1
+13
+13


// 3
0
+1
+15
+15


// 3
1
−1
−15
−15


// 3
1
−1
−13
−13


// 3
1
−1
−11
−11


// 3
1
−1
−9
−9


// 3
1
−1
−7
−7


// 3
1
−1
−5
−5


// 3
1
−1
−3
−3


// 3
1
−1
−1
−1


// 3
1
−1
+1
−1


// 3
1
−1
+3
−1


// 3
1
−1
+5
−1


// 3
1
−1
+7
−1


// 3
1
−1
+9
−1


// 3
1
−1
+11
−1


// 3
1
−1
+13
−1


// 3
1
−1
+15
−1


// 3
1
+1
−15
−15


// 3
1
+1
−13
−13


// 3
1
+1
−11
−11


// 3
1
+1
−9
−9


// 3
1
+1
−7
−7


// 3
1
+1
−5
−5


// 3
1
+1
−3
−3


// 3
1
+1
−1
−1


// 3
1
+1
+1
−1


// 3
1
+1
+3
−1


// 3
1
+1
+5
−1


// 3
1
+1
+7
−1


// 3
1
+1
+9
−1


// 3
1
+1
+11
−1


// 3
1
+1
+13
−1


// 3
1
+1
+15
−1

## Claims

1. A demapper for a multiple-input, multiple-output symbol receiver, the demapper comprising:
a hypothesis determiner to determine hypotheses values for each of a multiplicity of received symbols; and
a first half counter-hypotheses determiner to reuse interim results of said hypothesis determiner to generate a first half of counter-hypotheses;
wherein said hypothesis determiner comprises:
a QR decomposer to generate at least an R matrix from an input channel estimate matrix H;
wherein the R matrix is an right triangular matrix that has a upper left element r1, an upper right element R12 and a lower right element r2;
a normalizer to normalize input signals and elements of said R matrix;
a candidate hypothesis generator operating on the output of said normalizer to generate a plurality of constrained candidate hypothesis values for one of said received symbols and resultant unconstrained hypothesis values for a second one of said received symbols;
a normalized error calculator to operate with minimal multiplications and to generate an error magnitude for each of said plurality of constrained candidate hypotheses and their resultant unconstrained hypothesis values; and
a hypothesis generator to review said error magnitudes and to select a constrained hypothesis and resultant unconstrained hypothesis corresponding to a smallest error magnitude.

2. The demapper according to claim 1 further comprising a second half counter-hypotheses determiner to receive a portion of said interim results and to provide them to a table lookup to generate a second half of said counter-hypotheses.

3. The demapper according to claim 1 wherein said first half counter-hypotheses determiner comprises:
a multiplicity of counter-hypothesis generators, one per bit of said selected hypothesis, each to review a set of said error magnitude associated with candidate counter-hypotheses and to select counter-hypothesis corresponding to the smallest error magnitude in said set of error magnitudes.

4. The demapper according to claim 1 wherein said normalized error calculator comprises:
a d2 error magnitude calculator to evaluate an error Ē2(k)= X2− r2U2(k) and its corresponding L1 norm wherein r2 is a normalized r2 element of matrix R, X2 is a normalized input signal and U2(k) is a constellation point;
a d1 error magnitude calculator to evaluate Ũ1(k)= X1− R12U2(k), wherein R12 is a normalized R12 element of matrix R, {tilde over (X)}1 is a normalized input signal, to find a closest constellation point U1(k) to an unconstrained solution Ũ1(k) and to determine an error Ē1(k) therebetween and its corresponding L1 norm; and
a total error magnitude calculator to determine a total error magnitude from the output of d2 error magnitude calculator and d1 error magnitude calculator.

5. The demapper according to claim 4 wherein said d1 error magnitude calculator and said d2 error magnitude calculator comprise L1 norm calculators.

6. The demapper according to claim 1 wherein said normalized error calculator comprises a multiplicity of processing branches, wherein a number of processing branches scales with a complexity of the constellation type related to said symbols.

7. The demapper according to claim 1 that is arranged to provide interim results of the first half counter-hypotheses determiner, of the second half counter-hypotheses determiner and of the hypotheses determiner to a log-likelihood ratio (LLR) determiner, wherein said LLR determiner utilizes said interim results to generate a log-likelihood ratio Lb.

8. A method, implementable on a multiple-input, multiple-output symbol receiver, the method comprising:
receiving or calculating a set of fixed constellation points;
selecting a hypothesis for a second symbol value U2 from among the set of fixed constellation points;
calculating a hypothesis for a first symbol value U1 from resultant selected U2 value; and
generating a first half of counter-hypotheses from interim results of calculating said hypotheses values;
wherein the method comprising, prior to said calculating:
normalizing the following equations by an upper left element r1 of matrix R thereby to enable the remaining operations to operate with minimal multiplications:


E2=X2−r2U2 



E1=X1−r1U1−R12U2 


wherein R is a right triangular matrix that also comprises an upper right element R12 and a lower right element r2; where R is generated by QR decomposition from an input channel estimate matrix H, U1 and U2 are transmitted symbols to be demapped and X1 and X2 are the received signals and E1 and E2 are errors.

9. The method according to claim 8 comprising providing a portion of said interim results to a table lookup to generate a second half of said counter-hypotheses.

10. The method according to claim 8 wherein said calculating comprises calculating errors and determining a size of said errors.

11. The method according to claim 8 comprising:
determining a log-likelihood ratio Lb from said interim results of calculating said hypotheses values and from interim results of said table lookup operation.