Abstract:
A method comprising wirelessly transmitting and receiving a data signal in an orthogonal frequency division multiplexing (OFDM) system. The method further comprises, in the frequency domain, at least partially removing overlap between a first received subcarrier frequency data and a second received subcarrier frequency data.

Description:
CROSS-REFERENCE WITH RELATED APPLICATIONS  
       [0001]     This application claims priority to U.S. Provisional Application No. 60/574,396, entitled, “ICI Cancellation Algorithm,” filed May 25, 2004, and hereby incorporated herein by reference. 
     
    
     BACKGROUND  
       [0002]     Orthogonal frequency division multiplexing (OFDM) is a modulation technique used in wireless systems to simultaneously transmit substantially large amounts of digital data over a wireless channel and to reduce data interference induced by the channel. In OFDM systems, a data signal is partitioned into multiple, smaller sub-signals, each of which is transmitted from a transmitter to a receiver over a different frequency. As in other wireless systems, data signals are broadcast in all directions. The signals may reflect off of objects in the environment, such as buildings and automobiles, and reach the receiver via multiple propagation paths.  
         [0003]     Wireless communication systems that use OFDM may be categorized into any of a variety of classifications. One such classification is the linear, time-invariant (LTI) system. In LTI systems, channel conditions (e.g., the strength of each propagation path) do not substantially vary with time, such as when a transmitter and receiver are fixed in place. Because channel conditions do not vary to a considerable degree, the receiver may use information pertaining to the channel conditions to easily extract desirable data from a received signal (i.e., data that was originally transmitted by the transmitter) and to discard extraneous, undesirable data and/or effects imposed upon the signal by the channel.  
         [0004]     However, in linear, time-variant (LTV) systems, such as wireless communication systems with substantially high Doppler conditions (e.g., where the distance between transmitter and receiver varies at speeds around 200-300 km per hour), channel conditions, such as the strength of each propagation path, may vary considerably with time. For example, at time t=0 min., a transmitter and receiver in an LTV system may be spaced 0.5 km. apart. Just minutes later, at time t=3 min., the same transmitter and receiver may be spaced 4.5 km apart. Channel conditions that were present at time t=0 min. may not be the same as those present at time t=3 min., since channel conditions may have changed due to, for example, the presence of mountainous terrain or high-rise buildings. Furthermore, signals en route to the receiver are subject to rapid variations in signal energy. These variations generally are caused by multiple signal reflections that are not in phase with each other. Because these rapid variations often occur faster than the rate at which the receiver can properly receive data, the receiver may not be able to accurately keep track of these variations, resulting in interference between data on different frequency sub-carrier signals (intercarrier interference, or “ICI”).  
         [0005]     Because of these undesirable effects, it is difficult for a receiver in such a system to accurately extract desirable data from a received signal and to discard extraneous effects (e.g., ICI) imposed upon the signal prior to reception.  
       SUMMARY  
       [0006]     The problems noted above are solved in large part by an intercarrier interference cancellation algorithm and an apparatus for performing the same. One illustrative embodiment may be a method comprising wirelessly transmitting and receiving a data signal in an orthogonal frequency division multiplexing (OFDM) system. The method further comprises, in the frequency domain, at least partially removing overlap between a first received subcarrier frequency data and a second received subcarrier frequency data.  
         [0007]     Another illustrative embodiment may be an orthogonal frequency division multiplexing (OFDM) communication system comprising a receiver adapted to, in the frequency domain, determine an unbiased, linear, minimum-squared error estimate of a transmitted data signal.  
         [0008]     Yet another illustrative embodiment may be a receiver comprising a first logic adapted to decode a received data signal. The receiver further comprises a second logic coupled to the first logic and adapted to at least partially remove the overlap between received data on neighboring subcarrier frequencies in the frequency domain, wherein the receiver is in an orthogonal frequency division multiplexing (OFDM) system.  
         [0009]     Yet another illustrative embodiment may be a logic comprising a plurality of dot product modules adapted to determine the dot product of a received data vector, a channel condition vector and a noise variance vector. The logic further comprises a divider module adapted to use the dot product to determine, in the frequency domain, a minimum-squared error estimate of a transmitted data signal. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]     For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:  
         [0011]      FIG. 1  shows a wireless communication system using orthogonal frequency division multiplexing (OFDM);  
         [0012]      FIG. 2   a  shows a communication constellation used to encode binary data prior to transmission;  
         [0013]      FIG. 2   b  shows a series of binary numbers to be encoded;  
         [0014]      FIG. 2   c  shows a table comparing data points in the constellation of  FIG. 2   a , complex numbers pertaining to the data points, and binary number pairs from the series of  FIG. 2   b;    
         [0015]      FIG. 3   a  shows a wireless OFDM communication system having multiple transmission paths in the wireless channel;  
         [0016]      FIG. 3   b  shows a graph indicating an increase in the magnitude of b0(t);  
         [0017]      FIG. 3   c  shows a graph indicating an increase in a signal pertaining to b0(t);  
         [0018]      FIG. 3   d  shows a graph indicating an increase in the magnitude of b1(t);  
         [0019]      FIG. 3   e  shows a graph indicating an increase in a signal pertaining to b1(t);  
         [0020]      FIG. 4  shows a block diagram of a receiver in an OFDM system, in accordance with a preferred embodiment of the invention;  
         [0021]      FIG. 5  shows a matrix B of b(t) values describing channel conditions, in accordance with embodiments of the invention;  
         [0022]      FIG. 6  shows a matrix M pertaining to the matrix B, in accordance with embodiments of the invention;  
         [0023]      FIG. 7  shows an equation relating transmission data, channel information, channel noise, and received data, in accordance with embodiments of the invention;  
         [0024]      FIG. 8  shows a matrix comprising noise estimates for the channel, in accordance with embodiments of the invention; and  
         [0025]      FIG. 9  shows a block diagram of an intercarrier interference cancellation logic, in accordance with embodiments of the invention. 
     
    
     NOTATION AND NOMENCLATURE  
       [0026]     Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.  
       DETAILED DESCRIPTION  
       [0027]     The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.  
         [0028]     Described herein is an algorithm for reducing or eliminating the effects of intercarrier interference (ICI) on signals transmitted in an OFDM system. As shown in  FIG. 1 , the algorithm is presented in context of a wireless OFDM system  10  comprising a transmitter  20 , a receiver  40 , and a wireless channel  30  situated therebetween. To facilitate ease of understanding, OFDM modulation is first explained in context of the transmitter  20 , followed by a description of ICI in context of the wireless channel  30 . Finally, the ICI cancellation algorithm is described in context of the receiver  40 .  
         [0029]     As previously mentioned, OFDM involves dividing a data signal into multiple sub-signals and transmitting these sub-signals in parallel, each sub-signal carried on a different frequency. Prior to transmission, the transmitter  20  converts digital data (e.g., a series of binary numbers, such as from a video stream) into a series of complex numbers by mapping the binary numbers to a communication constellation (e.g., quadrature phaseshift key (QPSK), quadrature amplitude modulation (16-QAM)), described in further detail below. After the series of binary numbers is converted into a series of complex numbers using the communication constellation, the complex numbers are grouped into a parallel configuration (i.e., vectors) and are subsequently converted into voltage signals, as described below. The signals then are transmitted in parallel by transmitting the signals in vector format, one vector after another. A cyclic prefix may be prepended to at least some of the vector transmissions to separate the vectors from each other.  
         [0030]     As mentioned above, binary numbers are mapped into complex numbers using communication constellations.  FIG. 2   a  shows one such communication constellation  200 . The communication constellation  200  comprises a real number axis  202 , an imaginary number axis  204 , and four data points  206   a - d . The data points  206   a - d  may be assigned any suitable coordinate position values that may be determined at any time and by any entity, such as during manufacture. In the constellation  200 , which is known as a QPSK constellation, data point  206   a  is assigned a coordinate position (0, 1), data point  206   b  is assigned a coordinate position (1, 1), data point  206   c  is assigned a coordinate position (0, 0), and data point  206   d  is assigned a coordinate position (1, 0). Each of the data points  206   a - d  may correspond to a pair of binary numbers in a series of binary numbers (i.e., data) to be transmitted.  FIG. 2   b  shows one such series of binary numbers  210 . Although  FIG. 2   b  only shows the series  210  as comprising 8 bits, any number of bits may be used. As shown, the binary numbers in series  210  may be partitioned into pairs  212   a - d . Specifically, pair  212   a  may comprise bits 0 and 1, pair  212   b  may comprise bits 1 and 1, pair  212   c  may comprise bits 0 and 0, and pair  212   d  may comprise bits 1 and 0.  
         [0031]     The binary numbers in each of the pairs  212   a - d  corresponds to a coordinate associated with one of the four data points  206   a - d . In particular, because data point  206   a  and pair  212   a  are both associated with binary numbers 0 and 1, data point  206   a  and pair  212   a  are associated with each other. The same concept applies for data point  206   b  and pair  212   b , data point  206   c  and pair  212   c , and data point  206   d  and pair  212   d . As shown in  FIG. 2   a , besides being associated with a pair of binary coordinate numbers, each of the data points  206   a - d  also is associated with a complex number that is indicative of the data point&#39;s position relative to the real and imaginary axes  202 ,  204 . Thus, data point  206   a  is associated with the complex number (−1+j), data point  206   b  is associated with the complex number (1+j), data point  206   c  is associated with the complex number (−1−j), and data point  206   d  is associated with the complex number (1−j). Accordingly, as shown in table  250  of  FIG. 2   c , because each of the pairs  212   a - d  of  FIG. 2   b  is associated with one of the data points  206   a - d  of  FIG. 2   a , and because each of the data points  206   a - d  is associated with a complex number, each of the pairs  212   a - d  is also associated with a complex number. Thus, each pair of binary numbers in the series  210  is analyzed to determine with which data point  206   a - d  that pair is most closely associated, and each pair of binary numbers is converted into a complex number accordingly.  
         [0032]     As previously mentioned, after the binary numbers are mapped into complex numbers using any suitable communication constellation, the complex numbers are converted into time-domain voltage signals by the transmitter. Specifically, the complex numbers are converted into voltage signals by first performing an inverse discrete Fourier transform (IDFT) operation as follows: 
 
 z=F   H   Z   (1) 
 
 where Z is the vector containing complex numbers to be transmitted, F H  denotes a known IDFT matrix generally used for determining inverse discrete Fourier transforms, and z is the resulting vector of such an operation on vector Z. By performing an IDFT operation on vector Z using the IDFT matrix F H , the vector Z is converted from a time-domain sequence into a frequency-domain sequence. Each of the values of vector Z is mapped to a particular frequency in the time-domain sequence that is to be transmitted. The vector z is then processed by a pulse-shaping filter (e.g., a digital-to-analog converter), which converts the elements of z to voltage signals. 
 
         [0033]     The transmitter  20  transmits the voltage signals serially (i.e., the data are grouped into a sequence of vectors, and each vector of the sequence is consecutively transmitted). As previously mentioned, each vector z is prepended with a cyclic prefix that separates that vector from a previous vector. Thus, for a vector z such as: 
 
z=[z 1 , . . . Z n−k+1 , . . . Z n ]  (2) 
 
 the last k values are replicated and prepended to the vector z as a cyclic prefix: 
 
z=[z n−k+1 , z n−k+2 , . . . z n , z 1 , z 2 , . . . Z n ]  (3) 
 
 and then the vector z is transmitted to the receiver  40  over wireless channel  30  using multiple frequencies. In at least some embodiments, each value of the vector Z is assigned a frequency different from those of the other values of vector Z. 
 
         [0034]     Once signal z(t) is transmitted (i.e., data of vector z is transmitted in time domain), the signal may follow any number of paths before reaching the receiver  40 . For example, as shown in  FIG. 3   a , a signal z(t) that is broadcast from the transmitter  20  may follow multiple paths to the receiver  40 . As mentioned before, although only three paths are shown, the signal z(t) may follow any number of paths. The signal z(t), once broadcast, may follow path  302  to the receiver  40 . As shown, path  302  is the most direct path to the receiver  40 . The signal z(t) also may follow path  304  to the receiver  40 , where path  304  is the second most direct path to the receiver  40 . Other paths also may be present, such as path  306 , the third most direct path to the receiver  40 . The path  302  may be such that the strength of the signal following path  302  increases with time. Conversely, the path  304  may be such that the strength of the signal following path  304  decreases with time. Such effects of the wireless channel  30  on the signals following paths  302 ,  304  are denoted by the function b(t).  
         [0035]     Specifically, for path  302 , the effect b 0 (t) of the channel  30  on the signal z(t) may be written as: 
 
z(t−′I 0 )b 0 (t−′I 0 )  ( 4 ) 
 
 where ′I 0  represents time delay in a time-variant channel. Similarly, for path  304 , the effect b 1 (t) of the channel  30  on the signal z(t) may be written as: 
 
z(t−′I 0 )b 0 (t−′I 0 )  ( 5 ) 
 
         [0036]     As shown in the example of  FIG. 3   b , b 0 (t) may increase with time, so the strength (i.e., magnitude) of the signal following path  302  also increases with time, since the two are multiplied together as in (4). This increase in magnitude of b 0 (t) affects the signal of (4) as shown in  FIG. 3   c . Similarly, as shown in  FIG. 3   d , b 1 (t) may decrease with time, so the strength/magnitude of the signal following path  304  also decreases with time, since the two are multiplied together as in (5). This decrease in the magnitude of b 1 (t) affects the signal of (5) as shown in  FIG. 3   e.    
         [0037]     The receiver  40  receives and combines (4) and (5) (i.e., combines signals passing through some or all transmission paths) to produce a signal y(t). The receiver  40 , shown in  FIG. 4 , comprises an antenna  400 , an analog-to-digital (A/D) converter  402 , a window placement module  404 , a discrete Fourier transform module (DFT)  406 , an ICI cancellation logic  408 , a noise estimation logic  410  and a processor  407 . The antenna  400  receives the signal y(t) and transfers the signal y(t) to the A/D converter  402 . The AND converter  402  converts the analog y(t) signal into a vector y[n]. In turn, the window placement module  404  removes the cyclic prefix that was prepended to the signal in the transmitter  20  and passes the remaining portions of y[n] to the DFT  406 . The DFT  406  converts the time-domain signal to a frequency-domain signal by performing a discrete Fourier transform on y[n] and outputs a vector y[k], which subsequently is transferred to the processor  407 , whereupon relevant, desirable data is extracted from the vector y[k]. Entries in the vector y[k] may have the form: 
 
MZ+w  (6) 
 
 where w is noise from the channel  30 , Z is the data, and M is a matrix that represents the channel conditions and is described in further detail below. The matrix M may be represented as: 
 
 M=FBF   H   (7) 
 
 where F is any suitable, predetermined, discrete Fourier transform (DFT) matrix, F H  is any suitable, predetermined, inverse DFT (IDFT) matrix, and B is a matrix indicative of the channel conditions of the various paths that signals may travel along in the wireless channel  30 . Vector y[k] then may be transferred to the ICI cancellation logic  408  whereby the effect of ICI is substantially reduced, as described further below.  FIG. 5  shows an illustrative matrix B in greater detail. 
 
         [0038]     The matrix B, as shown in  FIG. 5 , comprises data pertaining to channel conditions along various transmission paths. The values b 0 [1] . . . b 0 [N] are representative of the channel conditions along the most direct transmission path between the transmitter  20  and the receiver  40 . In some embodiments, the most direct transmission path may, for example, be devoid of any obstacles (e.g., buildings). All other values in the matrix B, such as those denoted b 1 [1] . . . b 1 [N], b 2 [1] . . . b 2 [N], and so forth, are representative of the channel conditions along other transmission paths between the transmitter  20  and the receiver  40 . In some embodiments, b 0  may be the most direct path between the transmitter  20  and the receiver  40 , b, may be the second most direct path, b 2  may be the third most direct path, and so forth. The matrix B generally is a circularly wrapped matrix. Specifically, as shown in the figure, most or all values of {b 1 , b 2  . . . b 5 } are shifted circularly to the right by one column between each row. Accordingly, based on both this definition of matrix B and (7), matrix M may be written as shown in  FIG. 6 . In this example, the matrix M comprises  3  rows and  3  columns, although the matrix M may be of any suitable size. Similar to matrix B, the “diagonal” values M k−1k−1 , M kk , and M k+1k+1  are associated with the most direct transmission path between transmitter  20  and receiver  40 . All other values of the matrix M represent other transmission paths in the communication channel  30 .  
         [0039]     Each value (i.e., entry) k of the vector y of (6) is computed as follows:  
               Y   k     =         ∑   a     ⁢       M   ka     ⁢     Z   a         +     W   k               (   8   )             
 
         [0040]     As shown in (8), each value of the vector y is computed using multiple values of the matrix M and multiple values of the vector Z. Thus, each value of the vector y contains information pertaining not only to the relevant subcarrier frequency upon which the data traveled, but information pertaining to neighboring frequencies as well. Such an incorporation of data path information from neighboring sub-carrier frequencies introduces intercarrier interference (ICI) into calculations of each value of the vector y, and as previously explained, ICI is undesirable because it distorts the quality of received data. A model for ICI is shown in  FIG. 7 .  
         [0041]     More specifically,  FIG. 7  shows an expanded version of (8) in vector form. Vector  700  may be the y vector, matrix  702  may be the matrix M shown in  FIG. 6 , vector  704  may be the Z vector, and vector  706  may be a W (i.e., noise) vector. As in (8), the multiplication of matrix M with vector Z for each value in the vector y includes not only the multiplication of relevant values of M and Z, but those of neighboring frequencies, as well. For example, y k  may be calculated as: 
 
 y   k =( M   kk−1 ) Z   k−1 +( M   kk ) Z   k +( M   kk +1) Z   k+1   +W   k   (9) 
 
         [0042]     In (9), the terms y k  and (M kk )Z k  are relevant to determining the value of Z k . The remaining terms may be undesirable because they are either ICI from neighboring frequencies (i.e., (M kk −1)Z k −1, (M kk +1)Z k +1) or noise (i.e., W k ). Eliminating the presence of these undesirable terms may substantially improve the accuracy of transmission data estimations.  
         [0043]     The effects of ICI may be reduced or even eliminated by determining an unbiased, linear, minimum mean-squared error estimate of the transmitted data z k . In this way, the signal corruption introduced by neighboring data carriers z k−1  and z k+1  while calculating y k  in (8) and (9), and the corruption introduced by the additive noise W k , may be reduced or even eliminated. Although the scope of disclosure encompasses any technique that may be used to eliminate ICI, the ICI preferably is reduced or even eliminated by the ICI cancellation logic  408  which calculates the equalization equation:  
                 z   ^     k     =               (     m   2   *     )     T     ⁡     [           m   1     ⁡     (     m   1   *     )       T     +         m   3     ⁡     (     m   3   *     )       T     +   ∑     ]         -   1       ⁢     (     y   3     )             (     m   2   *     )     T     ⁢       (           m   1     ⁡     (     m   1   *     )       T     +         m   3     ⁡     (     m   3   *     )       T     +   ∑     )       -   1       ⁢     (     m   2     )                 (   10   )             
 
 where, in at least some embodiments, m 1 , m 2 , and m 3  denote the first, second and third A columns of matrix M, respectively, {circumflex over (z)} k  is an estimate of the k th  term of the vector z (i.e., the data prior to ICI corruption), and y 3  is given by:  
               y   3     =     [           y     k   -   1                 y   k               y     k   +   1             ]             (   11   )             
 
         [0044]     The expression “τ” in (10) is given by the matrix Σ shown in  FIG. 8 , where the entries of Σ are estimates of noise variance for W k−1 , W k , and W k+1 . The remaining portions of the matrix Σ preferably are vacant. Performing the algorithm above (i.e., in (10)) effectively removes the presence of neighboring terms from calculations used to obtain desired data from received signals (e.g., for (9), (M kk−1 )Z k−1  and (M kk+1 )Z k+1 ), thus substantially reducing the effects of ICI and enabling the receiver  40  to extract desirable data (e.g., Z k ) from the received data (i.e., y[k]) with considerable accuracy. However, Σ is incorporated into (10) because, in some cases, eliminating or reducing the effect of ICI as described above may boost the effect of the additive noise W k . The matrix Σ reduces this effect. More specifically, the entries of matrix Σ are real numbers generated by the noise estimation logic  410  in the receiver  40 . In particular, the estimation logic  410  measures the error between at least some values of Y k  and corresponding estimates of the received data R k  prior to the addition of noise W k : 
 
 E   k   =Y   k   −R   k   (12) 
 
 and thus the squared error is: 
 
 E   2   k =( Y   k   −R   k ) 2   (13) 
 
 which is averaged to generate the entries for the matrix Σ. The value of R k  is an estimate of data received from the channel absent the effect of noise W k . R k  is the product of an estimate of Z k  and the channel estimate M kk . The receiver estimates Z k  using hard slicer division. The channel estimate M kk  may be produced by the same algorithm that is used to calculate the M matrix (e.g., (7)). The receiver multiplies these two estimates to determine R k . 
 
         [0045]     A receiver  40  may use any suitable circuit logic, executable code, or combination thereof to implement (10). In at least some embodiments, the receiver  40  may implement (10) using the ICI cancellation logic  408  such as that shown in  FIG. 9 . Specifically, the logic  408  of  FIG. 9  comprises, among other things, a normalization module  900  comprising an adjoint module  918  and a determinant module  920 . The logic  408  may further comprise a 3×3 dot product module  902 , a 2×2 dot product module  904 , a 2×2 dot product module  906 , a division module  908 , addition modules  910 ,  912 ,  922 ,  926 , and  930 , and multiplication modules  914 ,  916 ,  924 ,  928  and  932 . The normalization module  900  has as inputs the values of the y 3  vector in (11), as well as vectors m 1 , m 2  and M 3 , all of which preferably are received from the DFT  406 . The normalization module  900  also receives diagonal values of the noise variance matrix Σ in  FIG. 8 . These input values A are processed by the dot product modules  902 ,  904  and  906  to produce {circumflex over (z)} k  and other associated terms at the division module  908 .  
         [0046]     More specifically, the adjoint module  918  receives as input vectors m 1 , m 2  and m 3  as well as the diagonal values of the noise variance matrix Σ and outputs adjoint matrices msa1, msa2 and msa3 to the dot product module  902 . The determinant module  920  receives as inputs the three values of the noise variance matrix and outputs two determinant signals to the addition modules  910 ,  912  and the multiplication modules  914 ,  916  as described further below.  
         [0047]     The terms z k−1 , z k  and z k+1  that are output from the division module  908  are all calculated in a similar manner. For example, the value z k−1  may be defined as:  
                       z   ^       k   -   1       =           (     m   1   *     )     T     ⁢       (           m   2     ⁡     (     m   2   *     )       T     +         m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢   y           (     m   1   *     )     T     ⁢       (           m   2     ⁡     (     m   2   *     )       T     +         m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢     m   1                     =       G   ⁡     (       m   1     ,     m   2     ,     m   3     ,   y     )         G   ⁡     (       m   1     ,     m   2     ,     m   3     ,     m   1       )                       (   14   )             
 
         [0048]     The term (m 2 (m 2 *) T +m 3 (m 3 *) T +Σ) −1  may be rewritten using the Matrix Inversion Lemma as:  
                 (           m   2     ⁡     (     m   2   *     )       T     +         m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       =         (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       -           (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢         m   2     ⁡     (     m   2   *     )       T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1           1   +         (     m   2   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢     m   2                     (   15   )             
 
         [0049]     The entire numerator of (14) can then be rewritten using (15) as:  
               G   ⁡     (       m   1     ,     m   2     ,     m   3     ,   y     )       =       {         (     m   1   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢   y     }     -         {         (     m   1   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢     m   2       }     ⁢     {         (     m   2   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢   y     }         1   +     {         (     m   2   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢     m   2       }                   (   16   )             
 
         [0050]     Simplifying the first term (m 1 *) T (m 3 (m 3 *) T +Σ) −1 y, the Matrix Inversion Lemma may be used to write equation (16) as:  
                   (     m   1   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢   y     =           (     m   1   *     )     T     [       ∑     -   1       ⁢     -         ∑     -   1       ⁢           m   3     ⁡     (     m   3   *     )       T     ⁢     ∑     -   1             1   +         (     m   3   *     )     T     ⁢       ∑     -   1       ⁢     m   3                 ]     ⁢   y             (   17   )             
 
 Because  
         ∑     -   1       ⁢     =         ∑   adj         σ   1   2     ⁢     σ   2   2     ⁢     σ   3   2         =       ∑   adj       det   ⁡     (   Σ   )                 
 
 the denominator of (17) may be written as det(Σ)+m 3   H Σ adj m 3  after multiplying through by det(Σ). Thus, (17) may be written as:  
                   (     m   1   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   Σ     )       -   1       ⁢   y     =           (       det   ⁡     (   Σ   )       +         (     m   3   *     )     T     ⁢       ∑   adj     ⁢     m   3           )     ⁢       (     m   1   *     )     T     ⁢       ∑   adj     ⁢   y       -       (         (     m   1   *     )     T     ⁢       ∑   adj     ⁢     m   3         )     ⁢       (     m   3   *     )     T     ⁢       ∑   adj     ⁢   y             (       det   ⁡     (   Σ   )       +         (     m   3   *     )     T     ⁢       ∑   adj     ⁢     m   3           )     ⁢     det   ⁡     (   Σ   )                   (   18   )             
 
         [0051]     Without division, (18) becomes: 
 
( m   1 *) T ( m   3   m   3 *) T +Σ) −1   y ( det (Σ)( m   3 *) T Σ adj   m   3 ) det (Σ)=( det (Σ)+ m   3   H Σ adj   m   3 ) m   1   H Σ adj   y− ( m   1   H Σ adj   m   3 ) m   3   H Σ adj   y   (19) 
 
         [0052]     Defining the term Q1(m 3 ) as the term and further defining the term R1(m 3 ) as the term, the function Q employs Q1(m3)det(Σ) (det(Σ)+m 3   H Σ adj m 3 ) only addition and the function R employs only multiplication. Accordingly, (19) may be rewritten as:  
                         (     m   1   *     )     T     ⁢       (           m   3     ⁡     (     m   3   *     )       T     +   ∑     )       -   1       ⁢   y     =         Q   ⁢           ⁢   1   ⁢     (     m   3     )     ⁢       (     m   1   *     )     T     ⁢       ∑   adj     ⁢   y       -       (         (     m   1   *     )     T     ⁢       ∑   adj     ⁢     m   3         )     ⁢       (     m   3   *     )     T     ⁢       ∑   adj     ⁢   y           R   ⁢           ⁢   1   ⁢     (     m   3     )                     =       F   ⁡     (       m   1     ,     m   3     ,   y     )         R   ⁢           ⁢   1   ⁢     (     m   3     )                       (   20   )             
 
         [0053]     Other F functions used to compute G(m 1 ,m 2 ,m 3 ,y) may be defined as follows: 
 
 F ( m   1   ,m   3   ,m   2 )= Q 1( m   3 )( m   1 *) T Σ adj   m   2 −(( m   1 *) T Σ adj   m   3 )(( m   3 *) T Σ adj   m   2 )  (21) 
 
 F ( m   2   ,m   3   ,y )= Q 1( m   3 )( m   2 *) T Σ adj   y −(( m   2 *) T Σ adj   m   3 )(( m   3 *) T Σ adj   y )  (22) 
 
 F ( m   2   ,m   3   ,m   2 )= Q 1( m   3 )( m   2 *) T Σ adj   m   2 −(( m   2 *) T Σ adj   m   3 )(( m   3 *) T Σ adj   m   2 )  (23) 
 
         [0054]     The F functions (21)-(23) are 2× 2  dot products determined by dot product module  904  whose input terms are the results of 3× 3  dot products determined by dot product module  902 . (21)-(23) may be used to determine outputs of the dot product module  906  (called “G functions”), as shown at the outputs of dot product module  906  in  FIG. 9 .  
         [0055]     The G function in (16) may now be written as:  
               G   ⁡     (       m   1     ,     m   2     ,     m   3     ,   y     )       =         F   ⁡     (       m   1     ,     m   3     ,   y     )         R1   ⁡     (     m   3     )         -         F   ⁡     (       m   1     ,     m   3     ,     m   2       )       ⁢     F   ⁡     (       m   2     ,     m   3     ,   y     )             (     1   +       F   ⁡     (       m   2     ,     m   3     ,     m   2       )         R1   ⁡     (     m   3     )           )     ⁢       R1   ⁡     (     m   3     )       2                   (   24   )             
 
 which may be rewritten as: 
 
 G ( m   1   ,m   2   ,m   3   ,y ) R 2( m   1 )= F ( m   1   ,m   3   ,y )[ R   1 ( m   3 )+ F ( m   2   ,m   3   ,m   2 )]− F ( m   1   ,m   2   ,m   2 ) F ( m   2   ,m   3   ,y )  ( 25 ) 
 
 where the scale factor R2(m 1 ) may be defined as: 
 
 R 2( m   1 )= Q 2( m   1 ) R   1 ( m   3 )= Q 2( m   1 )[ Q 1( m   3 )  det (Σ)]  (26) 
 
         [0056]     By ignoring the scale factor for G, (25) may be rewritten as: 
 
 G ( m   1   ,m   2   ,m   3   ,y )= F ( m   1   ,m   3   ,y ) Q 2( m   1 )− F ( m   1   ,m   3   ,m   2 ) F ( m   2   ,m   3   ,y )  (27) 
 
 where Q2(m 1 )=[R1(m 3 )+F(m 2 ,m 3 ,m 2 )]. The G function represents the outputs of dot product module  906 , which are 2×2 dot products of the F functions output by the dot product module  904 . 
 
         [0057]     To determine the outputs of the division module  908 , pairs of the G functions output by the dot product module  906  are divided using dividers  934 - 938 . Scale factors may be determined using at least some of the G function outputs of the dot product module  906  as well as outputs of the determinant module  920  that have been mathematically manipulated by addition blocks  910 ,  912 ,  922 ,  926 ,  930  and multiplication blocks  914 ,  916 ,  924 ,  928 ,  932 . These G function outputs and determinant module  920  outputs are divided using dividers  940 ,  942 ,  944  to determine the scale factors, as described below. Accordingly, the output of divider block  934  may be determined as:  
                 z   ^       k   -   1       =       G   ⁡     (       m   1     ,     m   2     ,     m   3     ,   y     )         G   ⁡     (       m   1     ,     m   2     ,     m   3     ,     m   1       )                 (   28   )             
 
         [0058]     Similarly, the outputs of divider blocks  936 ,  938  may be determined as:  
                 z   ^     k     =       G   ⁡     (       m   2     ,     m   1     ,     m   3     ,   y     )         G   ⁡     (       m   2     ,     m   1     ,     m   3     ,     m   2       )                 (   29   )                   z   ^       k   +   1       =       G   ⁡     (       m   3     ,     m   1     ,     m   2     ,   y     )         G   ⁡     (       m   3     ,     m   1     ,     m   2     ,     m   3       )                 (   30   )             
 
 and the scale factors output by the divider modules  940 ,  942 ,  944  may be determined as:  
               scale   1     =       G   ⁡     (       m   1     ,     m   2     ,     m   3     ,     m   1       )         R2   ⁡     (     m   1     )                 (   31   )                 scale   2     =       G   ⁡     (       m   2     ,     m   1     ,     m   3     ,     m   2       )         R2   ⁡     (     m   2     )                 (   32   )                 scale   3     =       G   ⁡     (       m   3     ,     m   1     ,     m   2     ,     m   3       )         R2   ⁡     (     m   3     )                 (   33   )             
 
         [0059]     The above derivations are illustrative of some of the functions produced by the dot product modules  902 ,  904 ,  906  and the division module  908 . In at least some embodiments, there may be twelve 3×3 dot products that are produced by the dot product module  902 : 
 
m 1   H Σ adj m 1   (34a) 
 
m 1   H Σ adj m 2   (34b) 
 
m 1   H Σ adj m 3   (34c) 
 
m 2   H Σ adj m 1   (34d) 
 
m 2   H Σ adj m 2   (34e) 
 
m 2   H Σ adj m 3   (34f) 
 
m 3   H Σ adj m 1   (34g) 
 
m 3   H Σ adj m 2   (34h) 
 
m 3   H Σ adj m 3   (34i) 
 
m 1   H Σ adj y  (34j) 
 
m 2   H Σ adj y  (34k) 
 
m 3   H Σ adj y  (34l) 
 
         [0060]     The dot product module  904  receives (34a)-(34l) as inputs and performs 2×2 dot product operations on (34a)-(34l) to output the ten 2× 2  dot product F functions below: 
 
 F ( m   1   ,m   2   ,y )= q 2 *m   1   H Σ adj   y−m   1   H Σadj m   2   *m   2   H Σ adj   y   (35a) 
 
 F ( m   1   ,m   2   ,m   1 )= q 2 *m   1   H Σ adj   m   1   −m   1   H Σadj m   2   *m   2   H Σ adj   m   1   (35b) 
 
 F ( m   2   ,m   1   ,y )= q 1 *m   2   H Σ adj   y−m   2   H Σadj m   1   *m   1   H Σ adj   y   (35c) 
 
 F ( m   2   ,m   1   ,m   2 )= q 1 *m   2   H Σ adj   m   2   −m   2   H Σadj m   1   *m   1   H Σ adj   m   2   (35d) 
 
 F ( m   3   ,m   1   ,m   3 )= q 2 *m   3   H Σ adj   m   3   −m   3   H Σadj m   2   *m   2   H Σ adj   m   3   (35e) 
 
 F ( m   1   ,m   2   ,m   3 )= q 2 *m   1   H Σ adj   m   3   −m   1   H Σadj m   2   *m   2   H Σ adj   m   3   (35f) 
 
 F ( m   3   ,m   2   ,y )= q 2 *m   3   H Σ adj   y−m   3   H Σadj m   2   *m   2   H Σ adj   y   (35g) 
 
 F ( m   2   ,m   1   ,m   3 )= q 1 *m   2   H Σ adj   m   3   −m   2   H Σadj m   1   *m   1   H Σ adj   m   3   (35h) 
 
 F ( m   2   ,m   1   ,y )= q 1 *m   3   H Σ adj   y−m   3   H Σadj m   1   *m   1   H Σ adj   y   (35i) 
 
 F ( m   3   ,m   1   ,m   3 )= q 1 *m   3   H Σ adj   m   3   −m   3   H Σadj m   1   *m   1   H Σ adj   m   3   (35j) 
 
         [0061]     Using the F functions (35a)-(35j) above, the dot product module  906  may produce six G functions as shown below: 
 
 G ( m 1 ,m 2 ,m 3 ,m 1)= F ( m 1 ,m 2 ,m 1)[ r 2 +F ( m 3 ,m 2 ,m 3)]− F ( m 1 ,m 2 ,m 3)* F ( m 3 ,m 2 ,m 1)  (36a) 
 
 G ( m 2 ,m 1 ,m 2 ,y )= F ( m 2 ,m 1 ,y )[ r 1 +F ( m 3 ,m 1 ,m 3)]− F ( m 2 ,m 1 ,m 3)* F ( m 3 ,m 1 ,y )  (36b) 
 
 G ( m 2 ,m 1 ,m 3 ,m 2)= F ( m 2 ,m 1 ,m 2)[ r 1 +F ( m 3 ,m 1 ,m 3)]− F ( m 2 ,m 1 ,m 3)* F ( m 3 ,m 1 ,m 2)  (36c) 
 
 G ( m 1 ,m 2 ,m 3 ,y )= F ( m 1 ,m 3 ,y )[ r 2 +F ( m 3 ,m 2 ,m 3)]− F ( m 1 ,m 2 ,y )* F ( m 3 ,m 2 ,y )  (36d) 
 
 G ( m 3 ,m 1 ,m 2 ,y )= F ( m 3 ,m 2 ,m 3)[ r 2 +F ( m 1 ,m 2 ,m 1)]− F ( m 3 ,m 2 ,m 1)* F ( m 1 ,m 1 ,y )  (36e) 
 
 G ( m 3 ,m 1 ,m 2 ,m 3)= F ( m 3 ,m 2 ,m 3)[ r 2 +F ( m 1 ,m 2 ,m 1)]− F ( m 3 ,m 2 ,m 1)* F ( m 1 ,m 3 ,m 3)  (36j) 
 
         [0062]     The division module  934  may determine an output {circumflex over (z)} k−1  by dividing ( 36   a ) by (36b). Similarly, the division module  936  may determine an output {circumflex over (z)} k  by dividing ( 36   c ) by (36d), and the division module  938  may determine an output {circumflex over (z)} k+1  by dividing ( 34   e ) by (36f). The output {circumflex over (z)} k  is the desired output as calculated in (10). Thus, the ICI cancellation logic  408  has at least partially cancelled ICI by determining an unbiased, linear, minimum-squared error estimate of the received data signal.  
         [0063]     The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.