A multiple-input multiple-output (MIMO) wireless communication system can utilize multiple antennas at both a transmitter and a receiver to transmit and receive data and to improve the range and performance of the system. Data packets can be independently and simultaneously transmitted in parallel using separate MIMO channel subcarriers on different transmission antennas. At each receiver antenna, the independent data packets can be combined and the receiver can recover the separate data signals with a decoder. Data transmitted and received using a MIMO system can be modulated using orthogonal frequency division multiplexing (OFDM) or other modulation schemes. Examples of MIMO-OFDM systems include wireless local area networking using the IEEE 802.11n standard, wireless metropolitan area networking using the IEEE 802.16e/j/m standards, mobile phone communications using the 3GPP LTE standard, and other systems.
In a MIMO system, the transmitter can utilize channel state information of a channel subcarrier to perform transmit beamforming. Transmit beamforming is a technique that can increase the directivity of transmitted data packets and the signal-to-noise ratio gain at the receiver. Channel state information can be maintained by the transmitter using explicit beamforming, where the transmitter sends a sounding packet to the receiver, and in response the receiver feeds back steering matrix information to the transmitter.
However, problems can arise when the receiver feeds back steering matrix information to the transmitter. One such problem is that the receiver may not have full information regarding how the sounding packet was generated, such as particular settings or matrices used by the transmitter in generating the sounding packet. This lack of information can result in situations where the receiver feeds back incorrect steering matrix information that can cause a power imbalance between transmitters in the MIMO system, resulting in a reduction of the transmitter's transmit power.
This Summary is provided to introduce subject matter that is further described below in the Detailed Description and Drawings. Accordingly, the Summary should not be considered to describe essential features nor used to limit the scope of the claimed subject matter.
In one or more embodiments, a method implemented in a communications terminal comprises constructing an estimated channel matrix based on a codebook. The method calculates a modified estimated channel matrix based on both the estimated channel matrix and a protection matrix, and selects a channel submatrix from the modified estimated channel matrix. The method calculates a selection matrix from the channel submatrix, and feeds back the selection matrix to be used in generating a steering matrix.
In one or more embodiments, a communications terminal comprises a channel matrix estimation unit to construct an estimated channel matrix based on a codebook and a modified channel matrix estimation unit to calculate a modified estimated channel matrix based on both the estimated channel matrix and a protection matrix. The system also comprises a channel submatrix selection unit to select a channel submatrix from the modified estimated channel matrix, a selection matrix calculator to calculate a selection matrix from the channel submatrix, and a feedback unit to feed back the selection matrix to be used in generating a steering matrix.
In one or more embodiments, one or more computer readable media have stored thereon multiple instructions that, when executed by one or more processors of a communications terminal, cause the one or more processors to construct an estimated channel matrix based on a codebook. The one or more processors calculate a modified estimated channel matrix based on both the estimated channel matrix and a protection matrix, and select a channel submatrix from the modified estimated channel matrix. The one or more processors calculate a selection matrix from the channel submatrix, and feed back the selection matrix to be used in generating a steering matrix.
In one or more embodiments, a communications terminal comprises means for constructing an estimated channel matrix based on a codebook, and means for calculating a modified estimated channel matrix based on both the estimated channel matrix and a protection matrix. The receiver also comprises means for selecting a channel submatrix from the modified estimated channel matrix, means for calculating a selection matrix from the channel submatrix, and means for feeding back the selection matrix to a transmitter to be used in generating a steering matrix.
The same numbers are used throughout the drawings to reference like features.
Protected codebook selection at receiver for transmit beamforming is discussed herein. Generally, during a sounding procedure a sounding packet using a spatial mapping matrix is sent from a transmitter to a receiver. The receiver generates an estimated channel matrix, then calculates a modified estimated channel matrix by multiplying the estimated channel matrix and a modification matrix. The modified estimated channel matrix is then used to select a codebook which is used to calculate a selection matrix. The codebook selection is protected as it is based on the modified estimated channel matrix rather than just the estimated channel matrix. The selection matrix is then fed back to the transmitter, which uses the selection matrix to assign a steering matrix. These techniques for protected codebook selection at the receiver are discussed in more detail below.
Some of the discussions regarding the protected codebook selection at a receiver for transmit beamforming herein refer to communication systems that use one of the IEEE Standard 802.11x communication standards. It is to be appreciated that these communication standards are only an example, and that other types of wireless communications systems and communication standards can be employed. For example, the protected codebook selection at receiver for transmit beamforming can be used with wireless metropolitan area networking or other systems using the IEEE 802.16 standards, mobile phone communications or other systems using the 3GPP LTE standard, and other systems.
The controller 112 can be any desired type of controller, and both the controller 112 and the steering matrix calculation unit 128 can be implemented as one or more standard multi-purpose, programmable processors, such as microprocessors, as application specific integrated circuits (ASICs), etc., or can be implemented using any other desired types of hardware, software and/or firmware. Likewise, the space-time mapping block 124 or beamforming network, and the matrix equalizer 125 can be implemented using known or standard hardware and/or software elements. If desired, various of the transmitter components, such as the controller 120, the modulator unit 122, the demodulator unit 126, the steering matrix calculation unit 128, the space-time mapping block 124 and the matrix equalizer 125 can be implemented in the same or in different hardware devices, such as in the same or different processors. Additionally, each of these components of the transmitter 112 can be disposed in a housing 129 (shown in dotted relief in
During operation, information signals Tx1-Txn which are to be transmitted from the transmitter 112 to the receiver 116 are provided to the symbol encoder and modulator unit 122 for encoding and modulation. Any desired number of signals Tx1-Txn can be provided to the modulator unit 122, with this number generally being limited by the modulation scheme used by and the bandwidth associated with the MIMO communication system 110. Additionally, the signals Tx1-Txn can be any type of signals, including analog or digital signals, and can represent any desired type of data or information. Additionally, if desired, a known test or control signal Cx1 (which can be stored in the memory 121) can be provided to the symbol encoder and modulator unit 122 for use in determining channel state information (CSI) related information describing the characteristics of the channel(s) between the transmitter 112 and the receiver 116. The same control signal or a different control signal can be used to determine the CSI for each frequency and/or spatial channel used in the MIMO communication system 110. The control signal Cx1 is also referred to as a sounding packet.
The symbol encoder and modulator unit 122 can interleave digital representations of the various signals Tx1-Txn and Cx1 and can perform any other type(s) of error-correction encoding on the signals Tx1-Txn and Cx1 to produce one or more streams of symbols to be modulated and sent from the transmitter 112 to the receiver 116. While the symbols can be modulated using any desired or suitable quadrature amplitude modulation (QAM) technique, such as using 64 QAM, these symbols can be modulated in any other known or desired manner including, for example, using any other desired phase and/or frequency modulation techniques. In any event, the modulated symbol streams are provided by the symbol encoder and modulator unit 122 to the space-time mapping block 124 for processing before being transmitted via the antennas 114A-114N. While not specifically shown in
The signals transmitted by the transmitter 112 are detected by the receiver antennas 118A-118M and can be processed by a matrix equalizer 135 within the receiver 116 to enhance the reception capabilities of the antennas 118A-118M. As will be understood, the processing applied at the receiver 116 (as well as at the transmitter 112) can be based on, for example, the CSI developed by the receiver 116 in response to the transmission of the test or control signal Cx1 (the sounding packet). In any event, a symbol demodulator and decoder unit 136, under control of a controller 140, can decode and demodulate the received symbol strings as processed by the matrix equalizer 135. In this process, these signals can be downconverted to baseband. Generally, the matrix equalizer 135 and the demodulator and decoder unit 136 operate to remove effects of the channel based on the CSI as well as to perform demodulation on the received symbols to produce a digital bit stream. In some cases, if desired, the symbol demodulator and decoder unit 136 perform error correction decoding and deinterleaving on the bit stream to produce the received signals Rx1-Rxn corresponding to the originally transmitted signals Tx1-Txn.
The receiver 116 can also include a memory 141 and a symbol encoder and modulator unit 146 which can receive one or more signals TR1-TRm which can be encoded and modulated using any desired encoding and modulation techniques. The encoded and modulated symbol stream can then be upconverted and processed by a space-time mapping block 134 to perform beamsteering based on a steering matrix developed by a steering matrix calculation unit 148, prior to being transmitted via antennas 118A-118N to, for example, the transmitter 112, thereby implementing the reverse link. As shown in
The matrix equalizer 125 and the demodulator/decoder unit 126 within the transmitter 112 operate similarly to the matrix equalizer 135 and the demodulator/decoder unit 136 of the receiver 116 to demodulate and decode the signals transmitted by the receiver 116 to produce the recovered signals RR1-RRm. Here again, the matrix equalizer 125 can process the received signals in any known manner to enhance the separation and therefore the reception of the various signals transmitted by the antennas 118A-118M. Of course, the CSI for the various OFDM channel(s) can be used by the steering matrix calculation units 128 and 148 as well as by the controllers 120 and 140 to perform beamforming and to determine a steering matrix used by the spacetime mapping blocks 124, 134. As noted above, the CSI, beamforming and other programs and data such as the steering matrix used by the units 128 and 148 and by the controllers 120 and 140 can be stored in the memories 121 and 141.
As is generally known, beamforming or beamsteering typically includes applying appropriate phases and gains to the various signals as sent through the multiple transmitter antennas 114A-114N, in a manner which causes the signals sent from the different transmitter antennas 114A-114N to constructively interact (add in phase) in certain predetermined directions and to deconstructively interact (cancel) in other directions. Thus, beamsteering typically produces a beam pattern having high gain regions (referred to as high gain lobes) in various predetermined directions and low gain regions (typically referred to as nulls) in other directions. The use of beamforming techniques in a MIMO system enables a signal to be sent with high gain (as compared to an omni-directional antenna) in certain directions, and to be sent with low gain (as compared to an omni-directional antenna) in other directions. Thus, in the MIMO system 110 of
To implement beamforming in the transmitter 112, the steering matrix calculation unit 128 determines or calculates a set of matrix coefficients (referred to herein as a steering matrix) which are used by the space-time mapping block or beamforming network 124 to condition the signals being transmitted by the antennas 114A-114N. If desired, the steering matrix for any particular frequency channel of the MIMO system 110 can be determined by the steering matrix calculation unit 128 based on a feedback matrix received from the receiver 116 as discussed in more detail below.
When performing beamforming, it is oftentimes desirable to develop the steering matrix using various known computational techniques based on the existence of all of the receiver and transmitter antennas. Such a steering matrix generally creates a transmit beam pattern having a high gain lobe directed to some combination of the receiver antennas as determined from, for example, the CSI. However, as the size of the number of receiver and transmitter antennas increases, the feedback and number of calculations that are performed to develop the optimal steering matrix increases significantly (e.g., exponentially).
To increase efficiency and to reduce the computational load associated with determining the steering matrix, the system of
Here, it should be noted that the matrix equalizer (of the receiver 116 for example) acts on the estimate of the channel CSI to determine matrix coefficients that help equalize the transmitted signals. A matrix equalizer is a common component of MIMO communication systems, and is used by a receiver to recover the transmitted signals. Thus, the computational mechanisms used to perform matrix equalization are typically included within the receiver hardware components of a MIMO communication system. However, because both matrix equalization and beamforming are essentially matrix operations, in one or more embodiments some of the computing structure provided to implement matrix equalization can be used to implement or perform beamforming or beamsteering operations, thereby enabling both of these operations to be performed using common hardware/software or other computational mechanisms. For example, the matrix equalizer often uses a QR decomposition algorithm to determine the equalizer coefficients, and this QR decomposition algorithm can be reused to perform beamforming computations. Alternatively, particular computing structure can be employed to implement matrix equalization in hardware and/or software, and separate computing structure can be employed to implement or perform beamforming or beamsteering operations in hardware and/or software.
Accordingly, in one or more embodiments the computational structure of a matrix equalizer within a MIMO communication system is used to perform at least some aspects of the transmit beamforming or beamsteering operations. In this case, the transmit beamforming operations using matrix equalizer structure can be performed in either a receiver or a transmitter of the transmitter/receiver pair in which transmit beamforming is to be used in sending signals from the transmitter to the receiver of the transmitter/receiver pair. In one or more embodiments, the steering matrix calculation unit 148 uses some of the computational structure of the associated matrix equalizer 135 to compute a beamforming matrix and/or to select beamforming vectors from a codebook. The processing using the matrix equalizer 135 is performed in the receiver 116 to develop the beamforming measure or to develop the steering matrix itself, and the beamforming measure or the steering matrix itself is fed back to the transmitter 112.
Additionally, the steering matrix calculation unit 148 can, for example, use the structure of the matrix equalizer 135 to develop appropriate intermediate information needed for determining the transmit steering matrix such as QR decomposition information, codebook selection information, etc. The steering matrix calculation unit 148 can then send this intermediate information to the transmitter 112 for use by the steering matrix calculation unit 128 in forming the transmit steering matrix. On the other hand, if desired, the steering matrix calculation unit 148 can actually form the transmit steering matrix from the intermediate information developed using the matrix equalizer 135 and send this steering matrix to the transmitter 112.
While
Although a single transmitter 212 and a single receiver 216 are illustrated in
As discussed in more detail below, a steering matrix can be generated from entries in a codebook. For example, if the codebook is a matrix, the steering matrix can be generated by selecting a subset of one or more columns in the codebook matrix.
Process 300 can be used in a MIMO-OFDM system, where process 300 can be applied in each subcarrier, or in other suitable systems. Transmit beamforming can use channel state information to steer a transmitted data packet, which can result in increased signal directivity and received SNR gain. A transmitted data packet on a channel subcarrier k can be characterized by the equation yk=HkQsteer,ksk+nk, where yk is the received vector, Hk is the channel state information of a channel subcarrier, Qsteer,k is a spatial steering matrix, sk is a transmitted vector, and nk is an additive noise vector. Process 300 can select a codebook that results in the assignment of the steering matrix Qsteer,k, which can be used to steer subsequently transmitted data packets. Selecting a codebook can be beneficial in various situations, such as when the number of data streams NSS is less than the number of transmit antennas NTX. A codebook Ωi can, for purposes of codebook selection, be denoted as a codebook matrix [Ωi], which can be a unitary matrix of size NTX×NTX. Each element of the codebook matrix [Ωi] can contain the same power, which can reduce power fluctuation over different transmit RF chains and antennas during data packet transmission. The steering matrix for a codebook Ωi can be calculated as a submatrix (e.g., a subset of column vectors) of the codebook matrix [Ωi]. The final steering matrix Qsteer,k can be the selected submatrix among all different codebooks. When there is one codebook, the codebook selection is straightforward.
In act 302, an estimated channel matrix Ĥk is constructed using channel sounding. Channel information from the channel sounding can be used in act 302 to construct the estimated channel matrix Ĥk. The estimated channel matrix Ĥk is an estimate of the multiplication of the true channel state information Hk from the transmitter to the receiver of a channel subcarrier k, and the predetermined sounding spatial mapping matrix Qsounding,k. The sounding spatial mapping matrix Qsounding,k can be set to one of the codebook matrices [Ωi] for all subcarriers k, without loss of generality. The estimated channel matrix Ĥk for a channel subcarrier k can be expressed by the equation Ĥk=(Hk[Ωi])est.
The receiver may get information on the actual channel matrix multiplied with the codebook matrix so that the receiver will perform the codebook selection without a need to re-multiply the matrices. Specifically, the receiver does not need to know what codebook matrix [Ωi] is applied at the transmitter. This is due to the feeding back of the selected codebook submatrix or indices of the selected column vectors in the codebook in this case, which allows the receiver to directly select the columns in the matrix Ĥk and feed back the selection matrix or column indices. The channel sounding spatial mapping matrix Qsounding,k is a matrix of size NTX×NTX, and can be a unitary matrix with identical row norms, or can be another size or type of matrix. The device which sends the steered packets is the beamformer (transmitter) while the recipient device is the beamformee (receiver).
If there is one codebook, the estimated channel matrix Ĥk
In act 304, a modified estimated channel matrix Ĥ1k is calculated by multiplying a matrix Q1k, also referred to as a modification matrix or a protection matrix, and the estimated channel matrix Ĥk. The protection matrix Q1k is predetermined and pre-stored at the receiver, and is of size NTX×NTX. As the channel sounding spatial mapping matrix Qsounding,k is generated at the transmitter, the channel sounding spatial mapping matrix Qsounding,k is not known by the receiver. Accordingly, situations can arise where the channel sounding spatial mapping matrix Qsounding,k is an identity matrix, which can result in a steering matrix being calculated at the receiver that causes one or more antennas at the transmitter to be shut down. The use of the protection matrix Q1k protects against this situation occurring.
The protection matrix Q1k is typically designed so that the receiver does not generate a steering matrix Qsteer,k that shuts down particular antennas at the transmitter if the channel sounding spatial mapping matrix Qsounding,k is the identity matrix, while at the same time results in a steering matrix Qsteer,k having acceptable power fluctuations for the antennas at the transmitter if the channel sounding spatial mapping matrix Qsounding,k is other than the identity matrix. Accordingly, the protection matrix Q1k can be a variety of different matrices other than the identity matrix.
In one or more embodiments, the protection matrix Q1k is designed with simplicity in mind in order to facilitate the matrix multiplication Q1kĤk. For example, the protection matrix Q1k can be a matrix having elements that are selected from the values +1 and −1 for real elements, and +j and −j for imaginary elements. By way of a specific example, a protection matrix Q1k can be a discrete Fourier transform (DFT) matrix of
In one or more embodiments, the following protection matrices Q1k can be used for different number of transmit antennas NTX. It is to be appreciated, however, that these are only example protection matrices, and that alternatively other protection matrices can be used. When NTX=2, the following protection matrices can be used:
When NTX=3, the following protection matrices can be used:
When NTX=4, the following protection matrices can be used:
In the preceding examples, Nb=2 and Nb=4 refers to the quantization precision on the real/imaginary part of each of the elements of the selection matrix Vk that is fed back from the receiver to the transmitter. This quantization precision is for non-compressed feedback, such as in the IEEE 802.11n standard. As a specific example, if NTX=3, then the first and third columns of the matrix Ĥ1kQ1 are selected, and if the feedback is non-compressed feedback with Nb=2, then the selection matrix Vk that is fed back from the receiver to the transmitter is the first and third columns of the matrix Q1Nb=2.
In act 306, a submatrix Ĥ1sel,k is formed from the modified estimated channel matrix Ĥ1k. A number NSS of columns can be selected from the modified estimated channel matrix Ĥ1k to form the submatrix Ĥ1sel,k, where NSS is the number of data streams. If there are multiple codebooks, then the number NSS columns can be selected from the modified estimated channel matrix Ĥ1k for each of the codebooks. The selection of the NSS columns can be based on one or a combination of known antenna selection algorithms. These algorithms can include a Shannon Capacity maximization algorithm, a maximum of weakest post processing signal-to-noise ratio algorithm, an incremental selection algorithm, a decremental selection algorithm, a correlation of estimated channel matrix columns algorithm, and other suitable algorithms. For example, the incremental selection algorithm can be used, which first selects the column in the modified estimated channel matrix Ĥ1k with the largest norm. In further iterations of the incremental selection algorithm, the projection of each of the remaining columns to the null space of the space spanned by the previous selected columns is calculated. Iteration of the incremental selection algorithm can continue until the NSS-th column is selected.
In act 308, a selection matrix Vk is calculated based on the submatrix Ĥ1sel,k. The selection matrix Vk can be composed of NSS columns of a NTX×NTX identity matrix. In particular, if the i-th column of the modified estimated channel matrix Ĥ1k is selected to be the j-th column in the submatrix Ĥ1sel,k for a given codebook, then the element in the i-th row and j-th column of the selection matrix Vk can be set to be 1. If there are multiple codebooks, then the selection matrix Vk for each codebook can be formed as a permutation of NSS columns in an identity matrix. In the case of one codebook, the selection matrix is equal to Vk, which is composed of 0s and 1s. In the case of multiple codebooks, the selection matrix Vk for each codebook of multiple codebooks can be expressed as Vk=[Ωn-1]H[Ωn]{tilde over (V)}k, where {tilde over (V)}k is the selection matrix composed of 0s and 1s. The selection matrix is calculated at the receiver, and is described in more detail below.
The process 300 then determines whether all codebooks have been processed in act 310. If not all codebooks have been processed, then the process 300 returns to act 302 to construct a modified estimated channel matrix Ĥ1k for the next codebook, as described above (e.g., Ĥk[Ω1]H[Ωn]≈(Hk[Ωn])est). The process 300 continues through acts 304, 306, and 308 for the next codebook, as described above, to form a submatrix Ĥ1sel,k and calculate a selection matrix Vk, and continues until all codebooks are processed. When it is determined that all codebooks have been processed in act 310, then the process 300 continues to act 312.
In act 312, a codebook is selected based on a certain criterion C. For example, the codebook can be selected by the largest Shannon channel capacity of Ĥ1sel,k for each codebook. If there is one codebook, the one codebook is the selected codebook. If there are multiple codebooks, the selected codebook can be denoted as the codebook n0, where
The selection matrix Vk is then determined by the selection matrix corresponding to the n0-th codebook.
In act 314, the selection matrix Vk is fed back from the receiver to the transmitter. If there is only one codebook applied in the codebook selection process, Vk is only composed of 0 and 1 elements, as described above with reference to act 308. The feedback overhead can therefore be greatly reduced in this case. For example, the selection matrix Vk can be fed back in the form of a matrix with a small number of bits representing each of its 0 and 1 elements. In another example, the selection matrix Vk can be fed back as the indices of the selected columns, e.g., if the first and third columns are selected in the estimated channel matrix Ĥ1k in act 306, indices “1” and “3” can be fed back, and the transmitter can reconstruct the selection matrix Vk using these indices. In the latter example, the transmitter has prior knowledge of how to interpret the feedback as column indices.
In act 316, at the transmitter the steering matrix Qsteer,k is assigned based on the selection matrix Vk for the codebook selected in act 312. The steering matrix Qsteer,k can be calculated by the equation Qsteer,k=Qsounding,kVk, where the channel sounding matrix Qsounding,k was constructed in act 302 and the selection matrix Vk was calculated in act 308 and assigned in 312, and fed back in act 314. As described above, in the case where one codebook is applied (NCB=1), the selection matrix Vk is composed of is in certain matrix positions to appropriately select elements of the channel sounding matrix Qsounding,k, and 0s in the remaining positions. In this case, the steering matrix Qsteer,k may simply be calculated by picking the selected columns in the single codebook matrix Qsounding,k=[Ω1]. The calculated steering matrix Qsteer,k based on the selected codebook can then be used to steer a transmitted data packet in act 318. The steered transmitted data packet can use Qsteer,k as characterized in the equation yk=HkQsteer,ksk+nk to more precisely direct the data packet. Specifically, the process 300 can calculate a steering matrix Qsteer,k that obtains good diversity and spatial multiplexing gains. The steering matrix Qsteer,k can have identical row norms, such that there is no transmit power fluctuation. Because there may be no transmit power fluctuation, no calculation is required for power backoff.
Process 300 is discussed above with reference to a modified estimated channel matrix Ĥ1k being generated by multiplying the protection matrix Q1k and the estimated channel matrix Ĥk. The modified estimated channel matrix Ĥ1k is then used as a basis for calculating the selection matrix Vk. Equivalently, this process can be viewed as the estimated channel matrix Ĥk being used as a basis for calculating an intermediate selection matrix V1k in the same manner as discussed above for calculating the selection matrix Vk except with Ĥk being used rather than Ĥ1k. The selection matrix Vk is then generated by multiplying the protection matrix Q1k and the intermediate selection matrix V1k.
In some wireless systems (e.g., in wireless systems supporting the IEEE 802.11n standard), the selection matrix Vk is encoded following a particular protocol. In such systems, the protection matrix Q1k can be designed to facilitate encoding of the selection matrix Vk. The intermediate selection matrix V1k can be viewed as a selection matrix, with the multiplication of the protection matrix Q1k and the intermediate selection matrix V1k resulting in the intermediate selection matrix V1k selecting from columns of the protection matrix Q1k. Accordingly, in such systems, the protection matrix Q1k can be designed as an encoded matrix, with the elements of the protection matrix Q1k being the encoded values that are to be returned to the transmitter in accordance with the particular protocol used by the wireless system. These encoded values are predetermined and stored in protection matrix Q1k so that they do not need to be calculated during operation of the system. Alternatively, these values can be calculated on-the-fly by the system during process 300, such as an additional encoding act being performed prior to the feedback in act 314.
In an example of the process 300, the number of transmit antennas NTX=3, the number of receive antennas NRx=3, the number of data streams NSS=2, and the number of codebooks NCB=1. The channel sounding matrix Qsounding,k is assigned to the codebook matrix [Ω1] in this example, and is equal to
The first and third columns of the channel sounding matrix Qsounding,k can be selected using one of the algorithms discussed above with reference to act 306, such as the incremental selection algorithm. Because the first and third columns of the channel sounding matrix Qsounding,k are selected, the selection matrix Vk for the one codebook in this example is equal to
in act 308. In this example, there is only one codebook, and the process 300 continues from act 310 to act 312. In act 312, because there is only one codebook, the one codebook is set as the selected codebook. The steering matrix Qsteer,k is then assigned based on the selection matrix Vk in act 316, as in the equation Qsteer,k=Qsounding,kVk. In this example,
The first and third columns of Qsounding,k are selected by the selection matrix Vk, and the resulting steering matrix Qsteer,k contains the first and third columns of Qsounding,k. Subsequently transmitted data packets can then be steered using the calculated steering matrix Qsteer,k in act 318.
In act 402, if the first codebook is being processed, then the process 400 continues to act 404; otherwise, the process 400 continues to act 406. Act 406 is performed when a second or later codebook is processed. In this case, channel sounding is not needed and the estimated channel matrix Ĥk for the current codebook can be reconstructed by the matrix multiplication Ĥk
In act 404, for the purpose of channel estimation for the first codebook, the channel sounding matrix Qsounding,k can be set to one of the codebook matrices at the transmitter, for example, [Ω1], for all channel subcarriers k, without loss of generality. The estimated channel matrix Ĥk can be calculated at the receiver in act 408, as given by Ĥk=(Hk[Ωi])est. The estimated channel matrix Ĥk will be stored at the receiver, and acts 304, 306, 308, 310, and 312 in
The post-MEQ SNR values calculated by the codebook selection 502 can be multiplied with SNR0, the average SNR at each receiver antenna, and can be used by the MCS selection 504 to reflect the true post-MEQ SNR and to select a MCS. The MCS selection 504 derives the selected MCS by using certain criteria, e.g., by comparing the post-MEQ SNR with predetermined thresholds. The selected MCS also implies the value of NSS (appropriate number of spatial streams). This NSS value is communicated to the Qsteer selection 506. The Qsteer selection 506 can use the NSS value to reshape the corresponding Qsteer,k from the Qsteer,k
In act 602, post-MEQ signal-to-noise ratio (SNR) values can be calculated for each data stream. The calculation can depend on the selection algorithm used and the number of data streams, as detailed below. The post-MEQ SNR values for each data stream can be stored, and the values used to compare with predetermined thresholds to select an appropriate MCS in act 604. In particular, the stored post-MEQ SNR values corresponding to the different NSS data streams are compared, and the appropriate MCS is selected. In Act 606, the NSS value corresponding to the selected MCS is generated. This NSS value can be used to reshape the corresponding steering matrix Qsteer,k steer,k from Qsteer,k
In act 704, the norm of each column in the estimated channel matrix Ĥ1k can be calculated and the column with the largest norm can be selected, as the first step of codebook selection. The calculated norm of a selected column can be proportional to the post-MEQ SNR value when there is one spatial stream (NSS=1), as given by SNRN
In act 708, it is determined whether the post-MEQ SNR value derived in act 706 for the current codebook selection step is directly used in selecting the MCS. If the post-MEQ SNR value is directly used, then the process continues to act 712, where the post-MEQ SNR value is stored for the current number of spatial streams under consideration, for use by MCS selection in act 604 of
Referring now to
Referring now to
The block 800 is illustrated in the context of processing a high throughput, long training field (HT-LTF). In systems compliant with the IEEE 802.11n Standard, HT-LTFs are periodically generated and transmitted by a transmitter. Each HT-LTF includes a plurality of training symbols. At the transmitter, each training symbol is multiplied by a corresponding column of a preamble steering matrix P, wherein a number of rows of the matrix P corresponds to the number of spatial streams, and a number of columns of the matrix P corresponds to the number of HT-LTFs. Matrix P is configured to improve the orthogonality of the training symbols as they are transmitted from the antennas of the transmitter.
A receiver knows what training symbols were transmitted in the HT-LTFs and also knows the matrix P. After receiving all of the HT-LTFs, the receiver generates a modified estimated channel matrix Ĥ1k based on the known training symbols, the matrix P, and the received training symbols. The matrix Ĥ1k can then be used to adjust matrix equalizer coefficients. The block 800 can be used by a receiver to process HT-LTFs for updating equalizer coefficients. Also, as will be described with reference to
The block 800 includes a QR decomposition processor 804, which is coupled to a Q memory and an R memory (not shown). Generally speaking, QR decomposition is a method in which a matrix is decomposed into a Q matrix multiplied by an R matrix, wherein the Q matrix is a unitary (orthonormal) 1 matrix (i.e., QHQ=I) (wherein the Hermitian operator H stands for transpose conjugate) and R is an upper triangular matrix. The QR decomposition processor 804 iteratively decomposes an input matrix. For example, the QR decomposition processor 804 can implement a Householder reflections algorithm, a Givens rotations algorithm, etc., to iteratively decompose an input matrix into Q and R matrices. In one or more embodiments, the QR decomposition processor 804 implements an algorithm that will be described with reference to
In
Next, a matrix Q4 is determined such that Q4R3 the vector including elements 820 and 822 is rotated by an angle θ1 that causes the element 822 to go to zero. The multiplication result Q4Q3Q2Q1 can be stored in the Q memory such that Q3Q2Q1 is overwritten, and the resultant matrix (R4) is stored in the R memory such that R3 is overwritten. Optionally, the angle θ1 can be stored in the Q memory, rather than the matrix Q4Q3Q2Q1. Optionally, the R4 matrix can overwrite the R3 matrix in temporary storage. Similarly, a matrix Q5 is determined such that Q5R4 the vector including elements 820 and 824 is rotated by an angle θ2 that causes the element 824 to go to zero. The multiplication result Q5Q4Q3Q2Q1 can be stored in the Q memory such that Q4Q3Q2Q1 is overwritten, and the resultant matrix (R5) is stored in the R memory such that R3 is overwritten. Optionally, the angle θ2 can be stored in the Q memory, rather than the matrix Q5Q4Q3Q2Q1. Optionally, the R5 matrix can overwrite the R4 matrix in temporary storage.
In subsequent iterations, element 826 is rotated by an angle φ4 and element 828 is rotated by angle φ5. Then, the vector including elements 826 and 828 is rotated by an angle θ3 that causes the element 828 to go to zero. Finally, the element 830 rotated by an angle φ6. After rotating element 830 by the angle φ6, the Q memory can be updated and thus contains the Hermitian of the Q matrix (i.e., QH) corresponding to the QR decomposition and/or the angles φ1-φ6 and θ1-θ3. Also, the resultant matrix can be stored in the R memory and the R memory will thus contain the R matrix corresponding to the QR decomposition. Processing the first HT-LTF can omit the rotations φ4-φ6 and θ3; and processing the second HT-LTF can omit the rotation φ6.
Referring again to
The QR decomposition processor 804 is coupled to a P matrix processing block 808 that generates a plurality of substream signal-to-noise (SNR) values (WSNR(1), WSNR(2),WSNR(3)), corresponding to the substream SNRs of the 1st, 2nd, and 3rd spatial streams respectively, based on the R matrix and the P matrix. Each of the substream SNR values can correspond to one of the spatial streams (in this example, there are three spatial streams transmitted in the 3×3 MIMO channel). The substream SNR values can be utilized for soft decoding at block 136 and 126 of
After the HT-LTFs have been processed, the block 800 can also be utilized to apply matrix equalization to data symbols.
In the example of
During a time period 1174, the QR decomposition processor 1050 receives HT-LTF signals corresponding to the twelve tones received by the third antenna. During the time period 1174, the CORDIC calculation blocks 1070 can calculate the rotation angles φ3 for the first twelve tones based on the received data corresponding to the third antenna.
During a time period 1176, the CORDIC calculation blocks 1066 and the CORDIC calculation blocks 1068 can calculate the rotation angles θ1 for the first twelve tones. During a time period 1178, the CORDIC calculation blocks 1066 and the CORDIC calculation blocks 1068 can calculate the rotation angles θ2 for the first twelve tones. Also during the time period 1178, the CORDIC calculation blocks 370 can calculate the rotation angles φ4 for the first twelve tones.
During a time period 1180, the QR decomposition processor 1050 receives HT-LTF signals corresponding to the next twelve tones received by first and second antennas. During the time period 1180, the CORDIC calculation blocks 1066 can calculate the rotation angles φi for the next twelve tones. Also, during the time period 1180, the CORDIC calculation blocks 1068 can calculate the rotation angles φ2 for the next twelve tones. Further during the time period 1180, the CORDIC calculation blocks 1070 can calculate the rotation angles φ5 for the first twelve tones.
During a time period 1182, the QR decomposition processor 1050 receives HT-LTF signals corresponding to the next twelve tones received by the third antenna. During the time period 1182, the CORDIC calculation blocks 1066 and the CORDIC calculation blocks 1068 can calculate the rotation angles θ3 for the first twelve tones. Also during the time period 1182, the CORDIC calculation blocks 1070 can calculate the rotation angles φ3 for the next twelve tones.
During a time period 1184, the CORDIC calculation blocks 1066 and the CORDIC calculation blocks 1068 can calculate the rotation angles θ1 for the next twelve tones. Also during the time period 1184, the CORDIC calculation blocks 1070 can calculate the rotation angles φ6 for the first twelve tones.
If a 40 MHz mode is to be supported and if the QR decomposition processor 1050 includes thirteen physical or virtual CORDIC blocks 1054, the scheduling of
As will be described below, a matrix equalizer block 135 can be modified in a relatively minor fashion to implement the transmit beamforming calculations, as compared to including a separate dedicated block to implement the transmit beamforming calculations. Additionally, utilizing the matrix equalizer block 135 to perform transmit beamforming calculations can help achieve relatively high-speed steering calculation so that beamsteering feedback can be implemented soon after determining the CSI information. This can help improve performance because there can be less delay between when the CSI information is determined and when beamsteering based on the CSI is applied, as compared to other beamsteering calculation implementations, and thus there can be less time for the CSI information to become outdated. For instance, in one embodiment, a beamformee receives a sounding packet and processes the sounding packet during the time period 1202. CSI can be determined based on the sounding packet. Then, during the time period 1208, beamsteering codebook selection can be performed based on the CSI. Next, during the time period 1204, an indication of the selected codeword(s) in the codebook can be transmitted to the beamformer in the immediately subsequent packet.
The block 1350 can include a multiplexer 1362 coupled to an input of the QR decomposition processor 1354. The multiplexer 1362 can be utilized to provide data from a CSI buffer 1366 as input to the QR decomposition processor 1354 during a beamsteering calculation period of the block 1350, such as in the gap between the time periods 1202 and 1204 discussed with reference to
The block 1350 also can include select logic 1374 that can select columns in a steering matrix codebook and/or generate a matrix V such as described above. The select logic 1374 can be coupled to the QR decomposition processor 1354, the Q memory and the R memory. The select logic 1374 also can be coupled to the CSI buffer 1366. The select logic 1374 can select columns in a steering matrix codebook and/or generate the matrix V based on the output of the QR decomposition processor 1354 and/or data in the R memory. Additionally, the select logic 1374 can modify data in the Q memory and the R memory during the codebook selection processing. Further, the select logic 1374 can modify data in the CSI buffer 1366 or control whether particular data in the CSI buffer 1366 is provided to the QR decomposition processor 1354.
In one embodiment, modified channel estimate data (i.e., Ĥ1k where k is the tone index) for groups of four tones is associated, and only every 4th tone is operated on by the block 1350. In other words, codebook selection data is generated based on modified channel estimate data for every 4th tone. For example, codebook selection data can be generated based on modified channel estimate data for a first tone, and this codebook selection data can be used for the first, second, third, and fourth tones. This permits beamsteering calculations to be completed by the block 1350 within the period in which the matrix equalization block would otherwise be idle (e.g., such as between the two time periods 1202 and 1204 of
In the example of
As discussed above, in one embodiment, modified channel estimate data for only every 4th tone is provided to the block 1480. For example, modified channel estimate data being fed to the block 1480 can be Ĥ11, Ĥ15, Ĥ19, Ĥ113, . . . .
Each column of a matrix Ĥ1 provided to the block 1480 can be processed by a separate CORDIC engine 1484. Thus, the columns of a matrix Ĥ1 can be processed in parallel by the block 1480. This is unlike the processing of HT-LTFs, where each CORDIC engine 1054 operates on HT-LTF data corresponding to a different tone.
The scheduling of the QR decomposition processor 1480 can be essentially the same as the schedule illustrated in
After the rotation angle θ2 has been calculated, the R memory will include the norms of each of the columns of Ĥ1k. For example, if Ĥ1k is a 3×3 matrix, the R memory will include values r11
Referring again to
If there a more columns to select, the method can proceed similarly.
Qj
for the jth column in the kth tone.
At a block 1522, the column of Ĥ1k corresponding to the maximum of the values r11
At the block 1534, the CSI buffer 1366 can be updated so that the selected column will not be processed by the QR calculation block 1480 in any subsequent steps. For example, the selected column can be set to zero. Alternatively, an indication that the column has been selected can be stored in a storage element. The storage element can be examined at subsequent QR calculation steps to determine which columns should not be further processed. The matrix Ĥ1k without the selected column will be referred to as {circumflex over (Ĥ)}1k. If {circumflex over (Ĥ)}1k is a 3×3 matrix, then:
At a block 1538, the Q memory 1488 and the R memory 1492 can be reorganized so that the rotations corresponding to the selected column are used in subsequent selection steps. With respect to the Q memory 1488, for instance, if the Givens rotations corresponding to the selected column are Qs1
The Q memory 1488 can include the Givens rotations as set at the block 1538 of
The scheduling of the QR decomposition processor 1480 can be essentially the same as the schedule illustrated in
After the rotation angle θ3 has been calculated, the R memory will include values r11, r12, and r22 for the two columns of {circumflex over (Ĥ)}1k, where the values r22 are the projections of the first and second columns onto the null space of the first selected column. Referring again to
Qj
for the jth column in the kth tone, in the second step.
At a block 1552, the column of {circumflex over (Ĥ)}1k corresponding to the maximum of the values r22
At the block 1564, the CSI buffer 1366 can be updated so that the selected column will not be processed by the QR decomposition processor 1480 in any subsequent steps. For example, the selected column can be set to zero. Alternatively, an indication that the column has been selected can be stored in a storage element. The storage element can be examined at subsequent QR calculation steps to determine which columns should not be further processed.
At a block 1568, the Q memory 1488 and the R memory 1492 can be reorganized so that the rotations corresponding to the selected column are used in subsequent selection steps. With respect to the Q memory 1488, for instance, if the Givens rotations corresponding to the second selected column are Qs2
As discussed above, the matrix equalizer block also can be utilized to perform calculations other than codebook selection. Referring to
The P matrix processing block 1358 can be utilized for calculation of the post-MEQ SNR information after the codebook selection process described above is completed. Then, the R memory 1492 will include values r11(k), r12(k), and r22(k) for each tone k. Additionally, the P matrix processing block 1358 is provided the identity matrix I rather than the P matrix. An SNR for a first stream in a two-stream transmission can then be determined as:
where wk,SNR
An SNR for one-stream transmission can be determined as:
The P matrix processing block, such as the block 808 of
Many variations to the above described codebook methods and apparatus are contemplated. For example, if Nss=1, then additional processing availability can be utilized for implementing codebook selection from an extended codebook. For example, if there are six codewords q1-q6 in the codebook, then modified channel estimation information corresponding to, say, the codewords q1-q4 (i.e., H1.q1, H1.q2, H1.q3, H1.q4) of one tone can be provided to the QR decomposition processor 1480 in the first step. Without making a column selection, modified channel estimation information corresponding to codewords q5 and q6 (i.e., H1.q5 and H1.q6) of the tone can be provided to the QR decomposition processor 1480 in the second step. After the second step, the selection step can be applied. For example, the codeword corresponding to the largest norm over H1.q1-H1.q6 of one tone can be selected.
The protected codebook selection at receiver for transmit beamforming techniques described above can be utilized in various MIMO devices. For example, the protected codebook selection at receiver for transmit beamforming techniques described above can be utilized in base stations, access points, wireless routers, hard disk drives, digital versatile (or video) disc drives, high definition televisions, a communication system of a vehicle, a control system of a vehicle, a set top box, a cellular phone, a media player, a Voice over Internet Protocol phone, and so forth.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
This application claims priority to U.S. Provisional Application Ser. No. 60/980,273, filed on Oct. 16, 2007, the disclosure of which is incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
4449190 | Flanagan et al. | May 1984 | A |
5134633 | Werner | Jul 1992 | A |
5245704 | Weber et al. | Sep 1993 | A |
5623474 | Oshio et al. | Apr 1997 | A |
5650860 | Uz | Jul 1997 | A |
5778029 | Kaufman | Jul 1998 | A |
5930299 | Vannatta et al. | Jul 1999 | A |
6031628 | Jacob et al. | Feb 2000 | A |
6255906 | Eidson et al. | Jul 2001 | B1 |
6266517 | Fitzpatrick et al. | Jul 2001 | B1 |
6275685 | Wessel et al. | Aug 2001 | B1 |
6639944 | De Haan et al. | Oct 2003 | B1 |
6667659 | Stengel et al. | Dec 2003 | B2 |
6731406 | Ganapathy et al. | May 2004 | B1 |
6912249 | Haartsen | Jun 2005 | B2 |
6950469 | Karczewicz et al. | Sep 2005 | B2 |
6983026 | Pinckley et al. | Jan 2006 | B2 |
7023941 | Rey et al. | Apr 2006 | B1 |
7173992 | Frigon | Feb 2007 | B2 |
7218786 | Lin | May 2007 | B2 |
7262722 | Jahanghir et al. | Aug 2007 | B1 |
7362818 | Smith et al. | Apr 2008 | B1 |
7418057 | Shako et al. | Aug 2008 | B2 |
7447274 | Shako et al. | Nov 2008 | B2 |
7450641 | Sun et al. | Nov 2008 | B2 |
7466762 | Shako et al. | Dec 2008 | B2 |
7532590 | Ok et al. | May 2009 | B2 |
7599431 | Anderson et al. | Oct 2009 | B1 |
7675886 | Agrawal et al. | Mar 2010 | B2 |
7684627 | Ranganathan | Mar 2010 | B2 |
7702020 | Gallant et al. | Apr 2010 | B2 |
7706475 | Koikare et al. | Apr 2010 | B1 |
7782973 | Kim et al. | Aug 2010 | B2 |
7822147 | Huang et al. | Oct 2010 | B2 |
7969964 | Kim et al. | Jun 2011 | B2 |
7991063 | Khan et al. | Aug 2011 | B2 |
8014737 | Pratt et al. | Sep 2011 | B2 |
8059588 | Sood | Nov 2011 | B2 |
8059630 | Prateek | Nov 2011 | B2 |
8160150 | Moore | Apr 2012 | B2 |
8311031 | Kim et al. | Nov 2012 | B2 |
8345714 | Ryu et al. | Jan 2013 | B2 |
8498342 | Sha et al. | Jul 2013 | B1 |
8520771 | Brunn et al. | Aug 2013 | B1 |
8542571 | Kim et al. | Sep 2013 | B2 |
8542725 | Qian et al. | Sep 2013 | B1 |
8565325 | Banerjea | Oct 2013 | B1 |
8576830 | Swarts et al. | Nov 2013 | B2 |
8614994 | Swarts et al. | Dec 2013 | B2 |
8681730 | Swarts et al. | Mar 2014 | B2 |
8681893 | Brunn et al. | Mar 2014 | B1 |
8761261 | Wang | Jun 2014 | B1 |
8817771 | Zhao et al. | Aug 2014 | B1 |
20020067773 | Jackson et al. | Jun 2002 | A1 |
20020072346 | Kato et al. | Jun 2002 | A1 |
20030108135 | Frigon | Jun 2003 | A1 |
20030164736 | Stengel et al. | Sep 2003 | A1 |
20030179831 | Gupta et al. | Sep 2003 | A1 |
20040090909 | Khlat | May 2004 | A1 |
20040232984 | Meade et al. | Nov 2004 | A1 |
20050018519 | Nii | Jan 2005 | A1 |
20050213661 | Xiang et al. | Sep 2005 | A1 |
20050231292 | Akahori et al. | Oct 2005 | A1 |
20050243946 | Chung et al. | Nov 2005 | A1 |
20060126962 | Sun | Jun 2006 | A1 |
20060174236 | Stein et al. | Aug 2006 | A1 |
20060227895 | Booth et al. | Oct 2006 | A1 |
20070025448 | Cha et al. | Feb 2007 | A1 |
20070086528 | Mauchly et al. | Apr 2007 | A1 |
20070118791 | Hepler et al. | May 2007 | A1 |
20070135065 | Leffel et al. | Jun 2007 | A1 |
20070241812 | Yang et al. | Oct 2007 | A1 |
20080031376 | Ban | Feb 2008 | A1 |
20080040411 | Stojancic et al. | Feb 2008 | A1 |
20080043702 | Moon et al. | Feb 2008 | A1 |
20080049709 | Pan et al. | Feb 2008 | A1 |
20080074289 | Sauder et al. | Mar 2008 | A1 |
20080089282 | Malladi et al. | Apr 2008 | A1 |
20080094280 | Fenton | Apr 2008 | A1 |
20080123515 | Boehlke et al. | May 2008 | A1 |
20080219373 | Zhang et al. | Sep 2008 | A1 |
20080247467 | Rusanovskyy et al. | Oct 2008 | A1 |
20080270344 | Yurick et al. | Oct 2008 | A1 |
20090003472 | Dent | Jan 2009 | A1 |
20090086820 | Hong et al. | Apr 2009 | A1 |
20090097533 | Lakkis | Apr 2009 | A1 |
20090103622 | Tripathi et al. | Apr 2009 | A1 |
20090181622 | Hardacker | Jul 2009 | A1 |
20090213946 | Dick et al. | Aug 2009 | A1 |
20090257526 | Wang et al. | Oct 2009 | A1 |
20090310704 | Jethanandani et al. | Dec 2009 | A1 |
20100035554 | Ba et al. | Feb 2010 | A1 |
20100061306 | Ryu et al. | Mar 2010 | A1 |
20100135257 | Higuchi et al. | Jun 2010 | A1 |
20100239034 | Lee et al. | Sep 2010 | A1 |
20110007717 | Swarts et al. | Jan 2011 | A1 |
20110007718 | Swarts et al. | Jan 2011 | A1 |
20110013730 | Mansson et al. | Jan 2011 | A1 |
20130021976 | Yang et al. | Jan 2013 | A1 |
20130142060 | Challa et al. | Jun 2013 | A1 |
Entry |
---|
Mujtaba, Syed A., “TGn Sync Proposal Technical Specification”, IEEE 802.11-04 / Wireless LANs, (May 2005),1-131. |
“Non-Final Office Action”, U.S. Appl. No. 12/269,744, Feb. 16, 2012, 14 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/511,606, Jan. 4, 2012, 6 pages. |
U.S. Appl. No. 12/098,222, filed Apr. 4, 2008, Zhang, Hongyuan et al. |
“Non-Final Office Action”, U.S. Appl. No. 12/269,744, (Aug. 18, 2011), 10 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/397,057, (Nov. 9, 2011), 7 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/510,716, (Nov. 8, 2011), 8 pages. |
“Restriction Requirement”, U.S. Appl. No. 12/269,744, (Jun. 22, 2011), 6 pages. |
“Final Office Action”, U.S. Appl. No. 12/510,716, Jun. 28, 2012, 10 pages. |
“Final Office Action”, U.S. Appl. No. 12/397,057, Apr. 27, 2012, 11 pages. |
“Final Office Action”, U.S. Appl. No. 12/269,744, Sep. 19, 2012, 13 pages. |
“Final Office Action”, U.S. Appl. No. 12/511,606, Sep. 13, 2012, 8 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/397,057, Aug. 1, 2012, 10 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/574,879, Jun. 4, 2012, 11 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/511,629, Apr. 13, 2012, 6 pages. |
“Final Office Action”, U.S. Appl. No. 12/574,879, Nov. 20, 2012, 13 pages. |
“Final Office Action”, U.S. Appl. No. 12/511,629, Dec. 7, 2012, 7 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/767,922, Nov. 2, 2012, 12 pages. |
“Final Office Action”, U.S. Appl. No. 12/397,057, Feb. 1, 2013, 13 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/574,879, Apr. 23, 2013, 13 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/269,744, Apr. 10, 2013, 11 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/767,922, Apr. 16, 2013, 5 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/511,629, Mar. 28, 2013, 7 pages. |
“Non-Final Office Action”, U.S. Appl. No. 13/182,004, May 21, 2013, 9 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/397,057, May 15, 2013, 7 pages. |
“Supplemental Notice of Allowance”, U.S. Appl. No. 12/269,744, May 20, 2013, 8 pages. |
“Supplemental Notice of Allowance”, U.S. Appl. No. 12/269,744, Jul. 1, 2013, 8 pages. |
“Non-Final Office Action”, U.S. Appl. No. 14/058,879, Jan. 31, 2014, 12 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/510,716, Feb. 6, 2014, 6 pages. |
“Non-Final Office Action”, U.S. Appl. No. 13/966,753, Dec. 24, 2013, 8 pages. |
“Final Office Action”, U.S. Appl. No. 12/574,879, Oct. 1, 2013, 9 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/510,716, Oct. 23, 2013, 12 pages. |
“Non-Final Office Action”, U.S. Appl. No. 13/182,004, Oct. 22, 2013, 14 pages. |
“Non-Final Office Action”, U.S. Appl. No. 12/511,606, Aug. 22, 2013, 8 pages. |
“Notice of Allowance”, U.S. Appl. No. 12/574,879, Oct. 31, 2013, 7 pages. |
“Supplemental Notice of Allowance”, U.S. Appl. No. 12/397,057, Aug. 26, 2013, 2 pages. |
“Supplemental Notice of Allowance”, U.S. Appl. No. 12/269,744, Aug. 23, 2013, 7 pages. |
“Non-Final Office Action”, U.S. Appl. No. 13/951,203, Apr. 2, 2014, 4 pages. |
“Notice of Allowance”, U.S. Appl. No. 13/182,004, Apr. 9, 2014, 7 pages. |
“Final Office Action”, U.S. Appl. No. 14/058,879, Jul. 15, 2014, 13 pages. |
“Notice of Allowance”, U.S. Appl. No. 13/951,203, Jul. 31, 2014, 6 pages. |
“Notice of Allowance”, U.S. Appl. No. 13/966,753, Jul. 30, 2014, 10 pages. |
“Notice of Allowance”, U.S. Appl. No. 13/964,376, Sep. 11, 2014, 11 pages. |
Number | Date | Country | |
---|---|---|---|
60980273 | Oct 2007 | US |