Transmitter precoding based on quality score

A transmitter generates precoding matrices for communication channels of a transmitter, The transmitter includes a plurality of user-specific channels, with each user specific channel associated with a different set of user equipment (UE) receive antennas. For precoding, the transmitter generates a baseline channel matrix reflecting the characteristics of the communication medium employed to transmit data to the different user equipment (UEs). For each user-specific channel, the transmitter generates a set of null space vectors wherein only a subset of the generated null space vectors generated by the transmitter are used to precode the data. To identify the combination of null space vectors to be used for each channel, the transmitter calculates a quality score for each such combination of null space vectors. The transmitter uses the subset of null vectors that yields the highest score to precode the data.

BACKGROUND

Field of the Disclosure

The present disclosure relates generally to data communication and more particularly relates to data transmitters.

Description of the Related Art

Communication networks typically employ transmitters to communicate information to endpoints of the network. For example, cellular networks employ base stations to communicate data from the network infrastructure to user equipment (e.g., mobile handsets). To facilitate more reliable and efficient communication, the base stations sometimes use multiple-input multiple-output (MIMO) transmitters to take advantage of communication features such as spatial diversity. The multi-user MIMO (MU-MIMO) transmitter includes multiple communication channels, with each channel transmitting data to a corresponding user equipment. To reduce the communication overhead at the user equipment, the MIMO transmitter typically precodes data prior to transmission via a communication channel. In particular, precoding can adjust the data to be transmitted in order to account for interference from data being concurrently communicated via other channels of the MIMO transmitter. However, conventional precoding typically demands generation of multiple null space vectors for each communication channel, and selection of a subset of the null vectors to form a precoding matrix for application to the data to be transmitted. To select the subset of null space vectors, the MIMO transmitter transmits a set of test signals, each test signal based on a different null space vector, and selects the null space vectors corresponding to the best performance. However, the number of null space vectors to be tested is typically large, requiring a corresponding large number of test signals and therefore negatively impacting the processing efficiency and power consumption of the MU-MIMO transmitter.

DETAILED DESCRIPTION

FIGS. 1-4illustrate techniques for generating precoding matrices for communication channels of a transmitter, such as a MU-MIMO transmitter of a cellular communications network or a wireless network router. The transmitter includes a plurality of user-specific channels, with each user specific channel associated with a different set of user equipment (UE) receive antennas. For precoding, the transmitter generates a baseline channel matrix reflecting the characteristics of the communication medium employed to transmit data to the different user equipment. For each user-specific channel, the transmitter generates a set of null space vectors. However, only a subset of the null space vectors generated by the transmitter are used to precode the data. To identify the combination of null space vectors to be used for each channel, the transmitter calculates a quality score for each such combination of null space vectors. The transmitter uses the subset of null vectors that yields the highest score to precode the data. In particular, the transmitter forms a precoding matrix based on the selected null space vectors and applies the precoding matrix to the data symbols to be transmitted, thereby precoding the data.

In at least one embodiment, the transmitter calculates the quality scores for each combination of null space vectors in an a priori manner—that is based on data predefined or stored at the base station, and not based on transmitting dedicated test signals to identify the best preforming null space vectors. For example, in at least one embodiment the quality scores are calculated based on portions of the channel matrix. Thus, as explained further herein, the transmitter generates the precoding matrix based on calculated quality scores, rather than based on dedicated test signals, thereby reducing power consumption and improving processing efficiency at the transmitter.

FIG. 1illustrates a block diagram of a portion of a communications network100including a transmitter102, user equipment (UEs)104,105, and106, and a communication medium110. For purposes of description, it is assumed that the communications network100is a telecommunications network, such as a Long-Term Evolution (LTE) wireless communication network or a WiFi network that complies with an 802.11xx network standard. It is further assumed that the transmitter102is a multi-user multiple-input multiple output (MU MIMO) transmitter incorporated in or co-located with a base station, such as an Evolved Node B (eNodeB) of an LTE network, and that the UEs104-106are each mobile handsets, such as compute-enabled mobile phones. In other embodiments, the transmitter102is incorporated or co-located with a wireless router device. However, it will be appreciated that the techniques described herein can apply to different types of transmitters, different types of networks, and different types of user equipment, as well as different combinations thereof. Moreover, it is assumed that the communication medium110is a communication medium that physically transfers of signals between the transmitter102and the UEs104-106, such as air, but that the techniques described herein can apply to different types of communication media.

As indicated above, the transmitter102is a MU MIMO transmitter generally configured to receive data from another portion (not shown) of the network, the data representing information individually targeted to different ones of the UEs104-106. The transmitter102negotiates with each of the UEs104to106to establish user-specific communication channels (referred to herein as channels) with each UE, and communicates data to each of the UEs104-106over the corresponding channel and via the communication medium110. Thus, in the illustrated example, the transmitter102establishes three communication channels, designated CHANNEL1, CHANNEL2, and CHANNEL3, to communicate data to UE104, UE105, and UE106, respectively. In at least one embodiment, each channel includes, at least in part, corresponding physical equipment to facilitate the communication of data to its corresponding UE. For example, the transmitter102includes a plurality of antennas (not shown atFIG. 1) to send data over the communication medium110, with each channel including multiple ones of the plurality of antennas. For example, in at least one embodiment each channel includes at least two antennas to communicate data, thereby supporting more reliable communication with the UEs104-106.

In at least one embodiment, the transmitter102is configured to communicate data via the channels concurrently. This concurrent transmission of data via different channels can cause cross-channel interference, reducing the reliability of the communicated data. Further, reduction of the cross-channel interference is based on the state of each communication channel. Therefore, it is difficult to reduce such cross-channel interference at the UEs104-106themselves, as each individual UE is not aware of the state of the communication channels corresponding to the other UEs. Accordingly, to reduce cross-channel interference, the transmitter102includes a data precode module115generally configured to precode the received data for transmission. In particular, the data precode module is configured to adjust the data to be transmitted to account for how the data is likely to be affected by cross channel interference, as well as other characteristics of the communication medium110.

To illustrate, the data precode module115is generally configured to determine a baseline channel matrix, designated channel matrix H, for the communication medium110. The channel matrix H reflects characteristics of the communication medium110, including characteristics resulting from cross-channel interference, and in particular the effect of the communication medium110on transmitted signals. The data received at the UEs104-106is given by the following formula:
r=H*s+n
where r is the matrix of received data, H is the channel matrix, s is the vector of data symbols being transmitted over the antennas of the transmitter102, and n represents a vector containing noise samples associated with the communication medium110. The H matrix is an nrby ntmatrix, where ntis the number of transmit antennas at the transmitter102, and nris the total number of receive antennas across the UEs. Thus, in the depicted example ofFIG. 1, if each of the UEs104,105, and106has two receive antennas, then nris six.

In at least one embodiment, the data precode module115determines the channel matrix H by sending one or more test signals to the UEs104-106via each of the communication channels, receiving responsive test information from each of the UEs104-106, and generating the channel matrix H based on the responsive test information using one or more conventional techniques. In at least one other embodiment, the data precode module115estimates the channel matrix H based on stored characteristics of the communication medium. In still another embodiment, the data precode module115generates the channel matrix H based on a combination of stored characteristics and test results from transmission of one or more test signals.

To precode the data for transmission, the data precode module115generates a precoding matrix P. The precoding operation can therefore be expressed by the following formula:
s=Px
where x is the data to be transmitted as provided to the transmitter102. In at least one embodiment, x is a column vector having nlelements, where nlis the number of layers that can be simultaneously transmitted by the transmitter102. The precoding matrix P is a ntby nlmatrix.

In at least one embodiment, the transmitter102generates the matrix P according to a block diagonalization technique, and the matrix P is therefore designated PBD. The transmitter forms matrix PBDsuch that, when the channel matrix H is multiplied by the matrix PBD, the elements of the resulting matrix Heoutside the main diagonal are set to zero, as illustrated by the following example. In this example, the matrix H is as follows:

H=[h11UE⁢⁢1h12UE⁢⁢1h13UE⁢⁢1h14UE⁢⁢1h15UE⁢⁢1h16UE⁢⁢1h17UE⁢⁢1h18UE⁢⁢1h21UE⁢⁢1h22UE⁢⁢1h23UE⁢⁢1h24UE⁢⁢1h25UE⁢⁢1h26UE⁢⁢1h27UE⁢⁢1h28UE⁢⁢1h31UE⁢⁢2h32UE⁢⁢2h33UE⁢⁢2h34UE⁢⁢2h35UE⁢⁢2h36UE⁢⁢2h37UE⁢⁢2h38UE⁢⁢2h41UE⁢⁢2h42UE⁢⁢2h43UE⁢⁢2h44UE⁢⁢2h45UE⁢⁢2h46UE⁢⁢2h47UE⁢⁢2h48UE⁢⁢2h51UE⁢⁢3h52UE⁢⁢3h53UE⁢⁢3h54UE⁢⁢3h55UE⁢⁢3h56UE⁢⁢3h57UE⁢⁢3h58UE⁢⁢3h61UE⁢⁢3h62UE⁢⁢3h63UE⁢⁢3h64UE⁢⁢3h65UE⁢⁢3h66UE⁢⁢3h67UE⁢⁢3h68UE⁢⁢3]
where each element of H is denoted as hijUEk, and models the propagation effect between j-th transmit antenna and i-th receive antenna of the the k-th channel. The matrix PBDis selected by the transmitter102such that the following formula is satisfied:

He=HPBD=[⁢h(e)⁢11UE⁢⁢1h(e)⁢12UE⁢⁢10000h(e)⁢21UE⁢⁢1h(e)⁢22UE⁢⁢1000000h(e)⁢33UE⁢⁢2h(e)⁢34UE⁢⁢20000h(e)⁢43UE⁢⁢2h(e)⁢44UE⁢⁢2000000h(e)⁢55UE⁢⁢3h(e)⁢56UE⁢⁢30000h(e)⁢65UE⁢⁢3h(e)⁢66UE⁢⁢3]=[⁢He,1000He,2000He,3⁢]
where He,idenotes the equivalent single-user channel for the i-th user. To form the matrix PBD, the transmitter102searches for a set of precoding vectors for each UE that forces zeros in the Hematrix in the positions that cause interference. The number of vectors needed for each UE is equal to the number of layers transmitted to the UE by the transmitter102. The transmitter102forms the matrix PBDby concatenating the column vector sets found for each user, as set forth by the following expression:
PBD=[P1P2P3. . . PK]
Where Pirepresents the precoding vector set identified for the i-th UE.

To identify the precoding vector set for each UE, the transmitter102includes a data precode module115that identifies the vector sets based on correspond quality scores. In particular, for each UE the data precode module115chooses vectors from the columns of the null space of a user associated channel complementary matrix, denoted as {tilde over (H)}i. {tilde over (H)}iis obtained by eliminating the rows out of the H matrix that correspond to the selected user receive antennas. {tilde over (V)}idenotes the null-space of {tilde over (H)}imatrix, which consists of nNS,icolumn vectors, as set forth in the following expression:
{tilde over (V)}i=[v1v2v3. . . vnNS,i])
The matrix {tilde over (V)}ican be calculated using any of a variety of conventional null space calculation techniques, including using the elements of the {tilde over (H)}imatrix as the coefficients of a system of linear equations, with each of the equations set equal to zero, then solving the system of linear equations. Under uncorrelated MIMO channel conditions (i.e. the rows within H matrix are linearly independent one to each other), nNS,iis:
nNS,i=nt−nr+nr,i
In the case of asymmetrical MIMO systems, nNS,iis larger than the number of vectors required to precode the data for i-th user.

The data precode module115identifies a set of potential precode vector combinations for each UE, and calculates a quality score for each combination set. The data precode module115then identifies, for each UE, the combination set having the highest quality score as the precoding vector for that UE. That is, the data precode module designates the combination set having highest quality score for the i-th UE as Pi.

In at least one embodiment, the data precode module115identifies the combination sets and calculates the quality score as follows. the number of Pimatrices that can be formed for the i-th UE, in the case that nt>nr, is:
ncombs,i=CnNS,inr,i
The data precode module115forms matrices Pi,j for the i-th UE by selecting the j-th vectors combination from the {tilde over (V)}imatrix (with j≤ncombs,i).

The data precode module115further identifies, for the i-th UE, a matrix {tilde over (H)}i′ from the whole system channel matrix, H. Compared to {tilde over (H)}i,{tilde over (H)}i′ only keeps the rows from the H matrix that correspond to the i-th user's receive antennas (the matrix {tilde over (H)}i′ is therefore complementary to the {tilde over (H)}imatrix with respect to H).

For each Pi,j, the data precode module115derives a corresponding UE-specific inter-UE interference free equivalent channel according to the following equation:
He,ij={tilde over (H)}i′Oi,j
In at least one embodiment, in order to eliminate the need to calculate {tilde over (H)}i′Pi,jfor each j, a the data precode module calculates the following matrix once per each UE:
He,i′={tilde over (H)}i′Vi
The data precode module obtains He,ijby selecting the column vectors out of the He,i′ matrix in the same way Pi,jis obtained from the {tilde over (V)}lmatrix.

For each candidate precoding matrix Pi,j, the data precode module115identifies a quality score. In at least one embodiment, the quality score is calculated according to the following formula:
Mij=det(He,ijHHe,ij)
where He,ijHis the Hermetian form of the matrix He,ijand is generated by the data precode module by transposing and complex conjugating the matrix He,ijH. By calculating the quality score Mijbased on a determinant (det), the data precode module can generate the quality score using relatively few calculations, thereby conserving resources of the transmitter102, such as power.

For the i-th UE, the data precode module115selects the column vector Pijcorresponding to the highest quality score Mij. After selecting a vector for each UE104-106, the data precode module115concatenates the selected vectors to form the matrix PBD. The transmitter102precodes the data symbols to be transmitted by multiplying the data symbols and the matrix PBDas explained above, and then transmits the precoded data symbols to the corresponding UEs104-106. By forming the matrix PBDbased on a quality score, rather than on the transmission of test signals, the transmitter102can precode the data to be transmitted using fewer system resources, thereby conserving power.

FIG. 2illustrates a block diagram of the data precode module115in accordance with at least one embodiment. In at least one embodiment, the data precode module115is a hardware module including logic circuits arranged and connected to perform the operations described further herein. In another embodiment, one or more operations of the data precode module115are performed by software manipulating a processor to execute the operations. In the depicted example, the data precode module115includes a channel estimation module220, a precoding vector candidate identification module222, a precoding vector select module224, a precoding matrix formation module226, and a precoding matrix applicator module230. The channel estimation module220is generally configured to generate the channel matrix H for the transmitter102. In at least one embodiment, the channel estimation module220determines the channel matrix H by sending one or more test signals to the UEs104-106via each of the communication channels, receiving responsive test information from each of the UEs104-106, and generating the channel matrix H based on the responsive test information using one or more conventional techniques. In at least one other embodiment, the channel estimation module220estimates the channel matrix H based on stored characteristics of the communication medium. In still another embodiment, the channel estimation module220generates the channel matrix H based on a combination of stored characteristics and test results from transmission of one or more test signals.

The precoding vector candidate identification module222identifies a set of candidate precoding vectors for each channel of the transmitter102. In at least one embodiments, the precoding vector candidate identification module222identifies matrices Pi,jfor the i-th UE by selecting the j-th vectors combination from the {tilde over (V)}imatrix as described above with respect toFIG. 1. The precoding vector candidate identification module222further identifies, for the i-th UE, a matrix {tilde over (H)}i′ from the whole system channel matrix, H. Compared to {tilde over (H)}i, {tilde over (H)}i′ only keeps the rows from the H matrix that correspond to the i-th user's receive antennas. For each Pi,j, the data precode module115derives a corresponding UE-specific inter-UE interference free equivalent channel as explained above:

The precoding vector select module224identifies, for each candidate precoding matrix Pi,j, a corresponding quality score Mij. In at least one embodiment, the quality score is calculated based on the determinant of the matrix He,ijmultiplied by the Hermetian form of the matrix He,ij, as explained above with respect toFIG. 1. The precoding vector select module224selects, for each channel the candidate precoding matrix having the highest quality score. The precoding matrix formation module226receives the selected candidate precoding matrices from the precoding vector select module224, and concatenates the received matrices to form the precoding matrix PBD. In at least one embodiment, each of the selected matrices forms a corresponding column of the precoding matrix PBD. For example, in one embodiment, the precoding vector select module226forms the matrix PBDsuch that the first column of the matrix is equal to the selected candidate precoding matrix for the first channel of the transmitter102, the second column of the matrix is equal to the selected candidate precoding matrix for the second channel of the transmitter102, and so on until all of the selected candidate precoding matrices have been used.

The precoding matrix applicator230receives the precoding matrix PBDto data symbols received for each channel of the transmitter102. In particular, the precoding matrix applicator203receives data symbols for each of its communication channels, designated Channel 1 data231, Channel 2 data232and Channel 3 data233. The precoding matrix applicator230concatenates the received data symbols into the matrix x, then multiplies the matrix x by the matrix PBDto generate the matrix s, representing the precoded data to be transmitted. The precoding matrix applicator230then separates the matrix s into individual spatial data streams (collectively designated data streams235) to be transmitted via the antennas of the transmitter102.

FIG. 3illustrates a flow diagram of a method300of precoding data based on quality scores for candidate precoding matrices in accordance with at least one embodiment. For purposes of description, the method300is described with respect to an example implementation at the transmitter102ofFIG. 1and the data precode module115ofFIG. 2. At block302the channel estimation module220identifies the H matrix as described above. At block304the precoding vector candidate identification module222identifies a set of candidate precoding vectors for each channel of the transmitter102. In at least one embodiments, the precoding vector candidate identification module222identifies matrices Pi,jfor the i-th UE by selecting the j-th vectors combination from the {tilde over (V)}imatrix and further identifies, for the i-th UE, a matrix {tilde over (H)}i′ from the whole system channel matrix, H. For each Pi,j, the precoding vector candidate identification module222derives a corresponding UE-specific inter-UE interference free equivalent channel as explained above:

At block306, the precoding vector select module224calculates, for each candidate precoding matrix Pi,j, a corresponding quality score Mij. At block308, the precoding vector select module224selects, for each channel the candidate precoding matrix having the highest quality score. At block310, the precoding matrix formation module226receives the selected candidate precoding matrices from the precoding vector select module224, and concatenates the received matrices to form the precoding matrix PBD. At block312, the precoding matrix applicator230receives the precoding matrix data symbols received for each channel of the transmitter102and multiplies the data symbols by the matrix PBDto generate the matrix s, representing the precoded data to be transmitted. At block314, the transmitter102transmits the precoded data symbols to the UEs104-106.

FIG. 4illustrates a flow diagram of an example of a method400for generating a precoding matrix based on quality scores of candidate precoding matrices in accordance with at least one embodiment. For purposes of description, the method400is described with respect to an example implementation at the data precode module115ofFIG. 1. At block402, the data precode module115sets a variable designated “i” to an initial value designating the first channel for the transmitter102. For purposes of this example, the initial value is set to one. As set forth further below, the variables i and j are employed as indexes for generating different candidate precoding matrices. At block404the data precode module115generates the matrix {tilde over (V)}ias explained above. At block406the data precode module115calcluates the matrices {tilde over (H)}i, {tilde over (H)}i′ based on the channel matrix H, as explained above.

At block408, the data precode module115multiplies the matrix {tilde over (V)}iand the matrix {tilde over (H)}i′ to generate the matrix H′e,i. At block410the data precode module115calculates the value ncombs,ias explained above with respect toFIG. 1. At block412, the data precode module115sets the value of the index variable j to an initial value of 1. At block414, the data precode module115obtains the matrix He,ij. In at least one embodiment, He,ijis obtained by selecting the j-th combination of column vectors out of H′e,i, in similar fashion to the way Pi,jis obtained by selecting the j-th combination of column vectors from {tilde over (V)}i. A combination refers to a set of column vector indices. At block416, the data precode module calculates the quality score M for the current values of i and j according to the formula set forth above.

At block418, the data precode module115determines if the value for the variable j is 1. If so, the method flow moves to block420and the data precode module115sets the value for a variable Mmax, used to store the maximum M value for the current channel, to the value of M calculated at block416. The method flow proceeds to block428, described below. Returning to block418, if the value for the variable j is not one, the method flow moves to block422and the data precode module115determines if the value of M calculated at block416is greater than the current value of Mmax. If not, the method flow moves to block428, described below. If the value of M is greater than Mmaxthe method flow moves to block424and the data precode module115sets the value of Mmaxto the current value for M. In addition, at block426, the data precode module115sets the value of a variable jmax, indicating the index of the matrix associated with the highest quality score Mmax, to the current value of the variable j.

The method flow proceeds to block428, and the data precode module115determines if the quality score for the last candidate precoding vector for the current channel (as indicated by the variable i) has been calculated. If not, the method flow moves to block430and the data precode module115adds one to the value of the variable j. The method flow then returns to block414. Returning to block428, if the quality score for the last candidate precoding vector has been calculated, the method flow moves to block432and the data precode module115sets the value of Pito be equal to the value of the matrix Pjmax. That is, the data precode module115sets the value of the matrix Pito be equal to the candidate precoding vector having the highest quality score, as indicated by the variables Mmaxand jmax.

The method flow moves to block434and the data precode module115determines if the value for the variable i corresponds to the last channel, such that all matrices Pihave been identified. If not the method flow moves to block436and the data precode module115adds one to the value of the variable i. The method flow returns to block404. Returning to block434, if the value for the variable i corresponds to the last channel, the method flow moves to block438and the data precode module concatenates the Pi matrices identified at block432, thereby forming the matrix PBDfor precoding.