This disclosure provides methods, devices and systems for obtaining and providing channel feedback. In some implementations, a beamformee provides channel feedback to a beamformer that enables the beamformer to construct and independently precode two or more different sets of spatial streams for transmission to the beamformee. The independent precoding of the different sets of spatial streams ensures that the decodings of the different sets of spatial streams may be decoupled from one another at the beamformee. To provide the channel feedback, the beamformee partitions a channel estimate into two or more sub-estimates prior to performing a channel decomposition. In some implementations, the beamformee determines null-space-based projections of the sub-estimates before performing the channel decomposition. The determination of the null-space-based projections enables the beamformee to perform independent decompositions of the multiple channel sub-estimates to determine multiple respective feedback matrices, which are then assembled to provide the channel feedback to the beamformer. The channel feedback is then reconstructed and disassembled by the beamformer to perform the independent precoding of the different sets of spatial streams.

PRIORITY INFORMATION

This patent application claims priority under 35 U.S.C. 119(a) to Indian provisional patent application serial no. 201941007678 entitled “Null-Space-Projection-Based Channel Decomposition for Beamforming” and filed on 27 Feb. 2019, the content of which is hereby incorporated by reference herein for all purposes.

TECHNICAL FIELD

This disclosure relates generally to beamforming techniques for wireless communication, and more particularly, to techniques for obtaining and providing channel feedback.

DESCRIPTION OF THE RELATED TECHNOLOGY

APs and STAs that include multiple antennas may support beamforming. Beamforming refers to the focusing of the energy of a transmission in the direction of a target receiver. Beamforming may be used both in a single-user context, for example, to improve a signal-to-noise ratio (SNR), as well as in a multi-user (MU) context, for example, to enable MU multiple-input multiple-output (MIMO) (MU-MIMO) transmissions. To perform beamforming, a transmitting device, referred to as the beamformer, transmits a signal from each of multiple antennas. The beamformer configures the amplitudes and phase shifts between the signals transmitted from the different antennas such that the signals add constructively along particular directions towards the intended receivers, which are referred to as beamformees. The manner in which the beamformer configures the amplitudes and phase shifts depends on channel state information (CSI) associated with the wireless channels over which the beamformer intends to communicate with the beamformee.

SUMMARY

One innovative aspect of the subject matter described in this disclosure can be implemented in a method for wireless communication by a first wireless communication device. The method includes receiving, from a second wireless communication device, a sounding signal, and generating a channel estimate matrix H based on the sounding signal. The method also includes partitioning the channel estimate matrix H into a first channel estimate matrix H1and a second channel estimate matrix H2, determining a first projection matrix P1based on the second channel estimate matrix H2, and determining a second projection matrix P2based on the first channel estimate matrix H1. The method additionally includes determining a first effective channel estimate matrix HEff1based on the first channel estimate matrix H1and the first projection matrix P1, and determining a second effective channel estimate matrix HEff2based on the second channel estimate matrix H2and the second projection matrix P2. The method further includes determining a combined feedback matrix Z based on the first effective channel estimate matrix HEff1and the second effective channel estimate matrix HEff2, and outputting channel feedback information based on the combined feedback matrix Z for transmission to the second wireless communication device.

Another innovative aspect of the subject matter described in this disclosure can be implemented in a first wireless communication device. The first wireless communication device includes at least one processor and at least one memory communicatively coupled with the at least one processor and storing processor-readable code that, when executed by the at least one processor, causes the first wireless communication device to perform operations. The operations include receiving, from a second wireless communication device, a sounding signal, and generating a channel estimate matrix H based on the sounding signal. The operations also include partitioning the channel estimate matrix H into a first channel estimate matrix H1and a second channel estimate matrix H2, determining a first projection matrix P1based on the second channel estimate matrix H2, and determining a second projection matrix P2based on the first channel estimate matrix H1. The operations additionally include determining a first effective channel estimate matrix HEff1based on the first channel estimate matrix H1and the first projection matrix P1, and determining a second effective channel estimate matrix HEff2based on the second channel estimate matrix H2and the second projection matrix P2. The operations further include determining a combined feedback matrix Z based on the first effective channel estimate matrix HEff1and the second effective channel estimate matrix HEff2, and outputting channel feedback information based on the combined feedback matrix Z for transmission to the second wireless communication device.

In some implementations of the method and the first wireless communication device above, the determination of the first projection matrix P1comprises determining the first projection matrix P1from the null space of the second channel estimate matrix H2, and the determination of the second projection matrix P2comprises determining the second projection matrix P2from the null space of the first channel estimate matrix H1.

In some implementations, the determination of the combined feedback matrix Z based on the first effective channel estimate matrix HEff1and the second effective channel estimate matrix HEff2comprises determining a first intermediate matrix V1based on the first effective channel estimate matrix HEff1, and determining a second intermediate matrix V2based on the second effective channel estimate matrix HEff2. The determination of the combined feedback matrix Z is based on the first intermediate matrix V1and the second intermediate matrix V2. In some implementations, the determination of the first intermediate matrix V1based on the first effective channel estimate matrix HEff1comprises performing a first factorization operation on the first effective channel estimate matrix HEff1, and the determination of the second intermediate matrix V2based on the second effective channel estimate matrix HEff2comprises performing a second factorization operation on the second effective channel estimate matrix HEff2. In some such implementations, the performance of the first factorization operation on the first effective channel estimate matrix HEff1comprises performing a first singular value decomposition (SVD) operation on the first effective channel estimate matrix HEff1, and the performance of the second factorization operation on the second effective channel estimate matrix HEff2comprises performing a second SVD operation on the second effective channel estimate matrix HEff2. In some implementations, the determination of the combined feedback matrix Z comprises determining a first feedback matrix Z1based on the first intermediate matrix V1and the first projection matrix P1, determining a second feedback matrix Z2based on the second intermediate matrix V2and the second projection matrix P2, and determining the combined feedback matrix Z based on the first feedback matrix Z1and the second feedback matrix Z2. In some implementations, the combined feedback matrix Z is an orthonormal block-diagonal matrix, and the determination of the orthonormal block-diagonal steering matrix Z comprises stacking the first feedback matrix Z1and the second feedback matrix Z2such that the first and the second precoding matrices do not share any rows or columns in the combined feedback matrix Z.

In some implementations, the first wireless communication device comprises or is coupled with NRxantennas configured to receive packets, the second wireless communication device comprises or is coupled with NTxantennas configured to transmit packets, the channel estimate matrix H comprises an NRx×NTxmatrix, the first channel estimate matrix H1consists of NSS1rows and NTxcolumns of the channel estimate matrix H, the second channel estimate matrix H2consists of NSS2rows and NTxcolumns of the channel estimate matrix H, wherein the NSS1rows are different than the NSS2rows. In some such implementations, the channel feedback information includes at least one of an indication of NSS1or an indication of NSS2.

In some implementations, the method and operations also include receiving at least one beamformed transmission based on the channel feedback information, where the at least one beamformed transmission comprises at least one packet received via a number NSSof spatial streams. In some such implementations, the method and operations additionally include partitioning the spatial streams into a first set of NSS1spatial streams and a second set of NSS2spatial streams, wherein NSS1+NSS2=NSS. In some such implementations, the method and operations further include generating a channel estimate matrix HBbased on the beamformed transmission, partitioning the channel estimate matrix into a first channel estimate matrix HB1and a second channel estimate matrix HB2, decoding the first set of NSS1spatial streams based on the first channel estimate matrix HB1and the first feedback matrix Z1, and decoding the second set of NSS2, spatial streams based on the second channel estimate matrix HB2and the second feedback matrix Z2. In some such implementations, the decoding of the first set of NSS1spatial streams based on the first channel estimate matrix HB1and the first feedback matrix Z1comprises performing a first maximum likelihood (ML) equalization operation on the first set of NSS1spatial streams based on the first channel estimate matrix HB1and the first feedback matrix Z1to generate a first sequence of complex numbers, determining a first set of logarithm likelihood ratio (LLR) values based on the first sequence of complex numbers on a per bit position, per subcarrier, per spatial stream basis, and decoding information bits for the first set of NSS1spatial streams based on the first set of LLR values. Similarly, the decoding of the second set of NSS2spatial streams based on the second channel estimate matrix HB2and the second feedback matrix Z2comprises performing a second ML equalization operation on the second set of NSS2spatial streams based on the second channel estimate matrix HB2and the second feedback matrix Z2to generate a second sequence of complex numbers, determining a second set of LLR values based on the second sequence of complex numbers on a per bit position, per subcarrier, per spatial stream basis, and decoding information bits for the second set of NSS2, spatial streams based on the second set of LLR values.

Another innovative aspect of the subject matter described in this disclosure can be implemented in method for wireless communication by a first wireless communication device. The method includes outputting, for transmission to a second wireless communication device, a sounding signal. The method also includes receiving channel feedback information from the second wireless device based on the sounding signal, and determining a first precoding matrix Z1and a second precoding matrix Z2based on the channel feedback information. The method additionally includes generating at least one physical layer convergence protocol (PLCP) protocol data unit (PPDU) including data for the second wireless communication device, and partitioning the at least one PPDU into a first set of NSS1spatial streams and a second set of NSS2, spatial streams. The method further includes applying the first precoding matrix Z1to the first set of NSS1spatial streams to generate a first set of precoded streams, and applying the second precoding matrix Z2to the second set of NSS2spatial streams to generate a second set of precoded streams. The method further includes outputting the first and the second sets of precoded streams for transmission to the second wireless communication device.

Another innovative aspect of the subject matter described in this disclosure can be implemented in a first wireless communication device. The first wireless communication device includes at least one processor and at least one memory communicatively coupled with the at least one processor and storing processor-readable code that, when executed by the at least one processor, causes the first wireless communication device to perform operations. The operations include outputting, for transmission to a second wireless communication device, a sounding signal. The operations also include receiving channel feedback information from the second wireless device based on the sounding signal, and determining a first precoding matrix Z1and a second precoding matrix Z2based on the channel feedback information. The operations additionally include generating at least one physical layer convergence protocol (PLCP) protocol data unit (PPDU) including data for the second wireless communication device, and partitioning the at least one PPDU into a first set of NSS1spatial streams and a second set of NSS2spatial streams. The operations further include applying the first precoding matrix Z1to the first set of NSS1spatial streams to generate a first set of precoded streams, and applying the second precoding matrix Z2to the second set of NSS2spatial streams to generate a second set of precoded streams. The operations further include outputting the first and the second sets of precoded streams for transmission to the second wireless communication device.

In some implementations of the method and the first wireless communication device above, the determinations of the first precoding matrix Z1and the second precoding matrix Z2comprise generating a steering matrix Z based on the channel feedback information, where the determinations of the first precoding matrix Z1and the second precoding matrix Z2are based on the elements of the steering matrix. In some implementations of the method and the first wireless communication device, the channel feedback information includes at least one of an indication of NSS1or an indication of NSS2.

DETAILED DESCRIPTION

Various implementations relate generally to beamforming techniques for wireless communication, and more particularly, to techniques for obtaining and providing channel feedback. In some implementations, a beamformee provides channel feedback to a beamformer that enables the beamformer to construct and independently precode two or more different sets of spatial streams for transmission to the beamformee. The independent precoding of the different sets of spatial streams ensures that the decodings of the different sets of spatial streams may be decoupled from one another at the beamformee. To provide the channel feedback, the beamformee partitions a channel estimate into two or more sub-estimates prior to performing a channel decomposition. In some implementations, the beamformee determines null-space-based projections of the sub-estimates before performing the channel decomposition. The determination of the null-space-based projections enables the beamformee to perform independent decompositions of the multiple channel sub-estimates to determine multiple respective feedback matrices, which are then assembled to provide the channel feedback to the beamformer. The channel feedback is then reconstructed and disassembled by the beamformer to perform the independent precoding of the different sets of spatial streams.

Particular implementations of the subject matter described in this disclosure can be implemented to realize one or more of the following potential advantages. In some implementations, the described techniques can be used to increase the throughput for a given range, or to enable a greater range for a given throughput, by increasing the number NSSof spatial streams that may be used for beamforming.

FIG. 1shows a block diagram of an example wireless communication network100. According to some aspects, the wireless communication network100can be an example of a wireless local area network (WLAN) such as a Wi-Fi network (and will hereinafter be referred to as WLAN100). For example, the WLAN100can be a network implementing at least one of the IEEE 802.11 family of standards (such as that defined by the IEEE 802.11-2016 specification or amendments thereof including, but not limited to, 802.11ah, 802.11ad, 802.11ay, 802.11ax, 802.11az, 802.11ba and 802.11be). The WLAN100may include numerous wireless communication devices such as an access point (AP)102and multiple stations (STAs)104. While only one AP102is shown, the WLAN network100also can include multiple APs102.

A single AP102and an associated set of STAs104may be referred to as a basic service set (BSS), which is managed by the respective AP102.FIG. 1additionally shows an example coverage area106of the AP102, which may represent a basic service area (BSA) of the WLAN100. The BSS may be identified to users by a service set identifier (SSID), as well as to other devices by a basic service set identifier (BSSID), which may be a media access control (MAC) address of the AP102. The AP102periodically broadcasts beacon frames (“beacons”) including the BSSID to enable any STAs104within wireless range of the AP102to “associate” or re-associate with the AP102to establish a respective communication link108(hereinafter also referred to as a “Wi-Fi link”), or to maintain a communication link108, with the AP102. For example, the beacons can include an identification of a primary channel used by the respective AP102as well as a timing synchronization function for establishing or maintaining timing synchronization with the AP102. The AP102may provide access to external networks to various STAs104in the WLAN via respective communication links108.

To establish a communication link108with an AP102, each of the STAs104is configured to perform passive or active scanning operations (“scans”) on frequency channels in one or more frequency bands (for example, the 2.4 GHz, 5 GHz, 6 GHz or 60 GHz bands). To perform passive scanning, a STA104listens for beacons, which are transmitted by respective APs102at a periodic time interval referred to as the target beacon transmission time (TBTT) (measured in time units (TUs) where one TU may be equal to 1024 microseconds (s)). To perform active scanning, a STA104generates and sequentially transmits probe requests on each channel to be scanned and listens for probe responses from APs102. Each STA104may be configured to identify or select an AP102with which to associate based on the scanning information obtained through the passive or active scans, and to perform authentication and association operations to establish a communication link108with the selected AP102. The AP102assigns an association identifier (AID) to the STA104at the culmination of the association operations, which the AP102uses to track the STA104.

As a result of the increasing ubiquity of wireless networks, a STA104may have the opportunity to select one of many BSSs within range of the STA or to select among multiple APs102that together form an extended service set (ESS) including multiple connected BSSs. An extended network station associated with the WLAN100may be connected to a wired or wireless distribution system that may allow multiple APs102to be connected in such an ESS. As such, a STA104can be covered by more than one AP102and can associate with different APs102at different times for different transmissions. Additionally, after association with an AP102, a STA104also may be configured to periodically scan its surroundings to find a more suitable AP102with which to associate. For example, a STA104that is moving relative to its associated AP102may perform a “roaming” scan to find another AP102having more desirable network characteristics such as a greater received signal strength indicator (RSSI) or a reduced traffic load.

In some cases, STAs104may form networks without APs102or other equipment other than the STAs104themselves. One example of such a network is an ad hoc network (or wireless ad hoc network). Ad hoc networks may alternatively be referred to as mesh networks or peer-to-peer (P2P) networks. In some cases, ad hoc networks may be implemented within a larger wireless network such as the WLAN100. In such implementations, while the STAs104may be capable of communicating with each other through the AP102using communication links108, STAs104also can communicate directly with each other via direct wireless links110. Additionally, two STAs104may communicate via a direct communication link110regardless of whether both STAs104are associated with and served by the same AP102. In such an ad hoc system, one or more of the STAs104may assume the role filled by the AP102in a BSS. Such a STA104may be referred to as a group owner (GO) and may coordinate transmissions within the ad hoc network. Examples of direct wireless links110include Wi-Fi Direct connections, connections established by using a Wi-Fi Tunneled Direct Link Setup (TDLS) link, and other P2P group connections.

The APs102and STAs104may function and communicate (via the respective communication links108) according to the IEEE 802.11 family of standards (such as that defined by the IEEE 802.11-2016 specification or amendments thereof including, but not limited to, 802.11ah, 802.11ad, 802.11ay, 802.11ax, 802.11az, 802.11ba and 802.11be). These standards define the WLAN radio and baseband protocols for the PHY and medium access control (MAC) layers. The APs102and STAs104transmit and receive wireless communications (hereinafter also referred to as “Wi-Fi communications”) to and from one another in the form of physical layer convergence protocol (PLCP) protocol data units (PPDUs). The APs102and STAs104in the WLAN100may transmit PPDUs over an unlicensed spectrum, which may be a portion of spectrum that includes frequency bands traditionally used by Wi-Fi technology, such as the 2.4 GHz band, the 5 GHz band, the 60 GHz band, the 3.6 GHz band, and the 900 MHz band. Some implementations of the APs102and STAs104described herein also may communicate in other frequency bands, such as the 6 GHz band, which may support both licensed and unlicensed communications. The APs102and STAs104also can be configured to communicate over other frequency bands such as shared licensed frequency bands, where multiple operators may have a license to operate in the same or overlapping frequency band or bands.

Each of the frequency bands may include multiple sub-bands or frequency channels. For example, PPDUs conforming to the IEEE 802.11n, 802.11ac and 802.11ax standard amendments may be transmitted over the 2.4 and 5 GHz bands, each of which is divided into multiple 20 MHz channels. As such, these PPDUs are transmitted over a physical channel having a minimum bandwidth of 20 MHz. But larger channels can be formed through channel bonding. For example, PPDUs may be transmitted over physical channels having bandwidths of 40 MHz, 80 MHz, 160 or 320 MHz by bonding together multiple 20 MHz channels.

Each PPDU is a composite structure that includes a PHY preamble and a PLCP service data unit (PSDU). The information provided in the preamble may be used by a receiving device to decode the subsequent data in the PSDU. A legacy portion of the preamble may include a legacy short training field (STF) (L-STF), a legacy long training field (LTF) (L-LTF), and a legacy signaling field (L-SIG). The legacy preamble may be used for packet detection, automatic gain control and channel estimation, among other uses. The legacy preamble also may be used to maintain compatibility with legacy devices. In instances in which PPDUs are transmitted over a bonded channel, the L-STF, L-LTF, and L-SIG fields may be duplicated and transmitted in each of the multiple component channels. For example, in IEEE 802.11n, 802.11ac or 802.11ax implementations, the L-STF, L-LTF, and L-SIG fields may be duplicated and transmitted in each of the component 20 MHz channels. The format of, coding of, and information provided in the non-legacy portion of the preamble is based on the particular IEEE 802.11 protocol.

FIG. 2Ashows an example PHY preamble200usable for communications between an AP102and each of a number of STAs104. The preamble200includes a legacy portion202and a non-legacy portion204. The legacy portion202includes L-STF206, L-LTF208, and L-SIG210. The non-legacy preamble portion204is formatted as a very high throughput (VHT) preamble in accordance with the IEEE 802.11ac amendment to the IEEE 802.11 standard. The non-legacy preamble portion204includes a first VHT signaling field (VHT-SIG-A)212, a VHT short training field (VHT-STF)214, one or more VHT long training fields (VHT-LTFs)216and a second VHT signaling field (VHT-SIG-B)218encoded separately from the VHT-SIG-A field212. Like the L-STF206, L-LTF208, and L-SIG210, the information in the VHT-SIG-A field212may be duplicated and transmitted in each of the component 20 MHz channels in instances involving the use of a bonded channel.

The VHT-STF214is used to improve automatic gain control estimation in a MIMO transmission. The VHT-LTFs216are used for MIMO channel estimation and pilot subcarrier tracking. The preamble200includes one VHT-LTF216for each spatial stream indicated by the selected MCS. The VHT-SIG-A field212may indicate to 802.11ac-compatible APs102and STAs104that the PPDU is a VHT PPDU. The VHT-SIG-A field212includes signaling information and other information usable by STAs104to decode the VHT-SIG-B field218. The VHT-SIG-A field212may indicate a bandwidth (BW) of the packet, the presence of space-time block coding (STBC), the number NSTSof space-time streams per user, a Group ID indicating the group and user position assigned to a STA, a partial association identifier that may combine the AID and the BSSID, a short guard interval (GI) indication, a single-user/multi-user (SU/MU) coding indicating whether convolutional or LDPC coding is used, a modulation and coding scheme (MCS), an indication of whether a beamforming matrix has been applied to the transmission, a cyclic redundancy check (CRC) and a tail. The VHT-SIG-B field218is used for MU transmissions and contains the actual data rate and A-MPDU length value for each of the multiple STAs104, as well as signaling information usable by the STAs104to decode data received in the payload portion of the PPDU, including, for example, an MCS and beamforming information.

FIG. 2Bshows another example PHY preamble220usable for communications between an AP102and each of a number of stations104. The preamble220may be used for MU-OFDMA or MU-MIMO transmissions. The preamble220includes a legacy portion222and a non-legacy portion224. The legacy portion222includes L-STF226, L-LTF228, and L-SIG230. The non-legacy preamble portion204is formatted as a high efficiency (HE) frame in accordance with the IEEE 802.11ax amendment to the IEEE 802.11 standard. The non-legacy preamble portion224includes a repeated legacy signaling field (RL-SIG)232, a first HE signaling field (HE-SIG-A)234, a second HE signaling field (HE-SIG-B)236encoded separately from the HE-SIG-A field234, an HE short training field (HE-STF)238and HE long training fields (HE-LTFs)240. Like the L-STF226, L-LTF228, and L-SIG230, the information in the RL-SIG field232and the HE-SIG-A field234may be duplicated and transmitted in each of the component 20 MHz channels in instances involving the use of a bonded channel.

The RL-SIG field232may indicate to an HE-compatible STA104that the PPDU is an HE PPDU. An AP102may use the HE-SIG-A field234to indicate to multiple identified STAs104that the AP has scheduled UL or DL resources. The HE-SIG-A field234may be decoded by each HE-compatible STA104served by the AP102. The HE-SIG-A field234includes information usable by the identified STAs104to decode associated HE-SIG-B fields236. For example, the HE-SIG-A field234may indicate the frame format, including locations and lengths of HE-SIG-B fields236, available channel bandwidths, modulation and coding schemes (MCS), among other possibilities. The HE-SIG-A field234also may include HE WLAN signaling information usable by STAs104other than the number of identified STAs104.

The HE-SIG-B fields236carry STA-specific scheduling information such as, for example, per-user MCS values and per-user RU allocation information. In the context of DL MU-OFDMA, such information enables the respective STAs104to identify and decode corresponding RUs in the associated data field. Each HE-SIG-B field236includes a common field and at least one STA-specific (“user-specific”) field. The common field can indicate RU distributions to multiple STAs104, indicate the RU assignments in the frequency domain, indicate which RUs are allocated for MU-MIMO transmissions and which RUs correspond to MU-OFDMA transmissions, the number of users in allocations, among other possibilities. The common field may be encoded with common bits, cyclic redundancy check (CRC) bits, and tail bits. The user-specific fields are assigned to particular STAs104and used to schedule specific RUs and to indicate the scheduling to other WLAN devices. Each user-specific field may include multiple user block fields (which may be followed by padding). Each user block field may include two user fields that contain information for two STAs to decode their respective RU payloads.

APs and STAs that include multiple antennas may support various diversity schemes. For example, spatial diversity may be used by one or both of a transmitting device or a receiving device to increase the robustness of a transmission. For example, to implement a transmit diversity scheme, a transmitting device may transmit the same data redundantly over two or more antennas. APs and STAs that include multiple antennas may also support space-time block coding (STBC). With STBC, a transmitting device also transmits multiple copies of a data stream across a number of antennas to exploit the various received versions of the data to increase the likelihood of decoding the correct data. More specifically, the data stream to be transmitted is encoded in blocks, which are distributed among the spaced antennas and across time. Generally, STBC can be used when the number NTxof transmit antennas exceeds the number NSSof spatial streams (described below). The NSSspatial streams may be mapped to a number NSTSof space-time streams, which are then mapped to NTxtransmit chains.

APs and STAs that include multiple antennas may also support spatial multiplexing, which may be used to increase the spectral efficiency and the resultant throughput of a transmission. To implement spatial multiplexing, the transmitting device divides the data stream into a number NSSof separate, independent spatial streams. The spatial streams are then separately encoded and transmitted in parallel via the multiple NTxtransmit antennas. If the transmitting device includes NTxtransmit antennas and the receiving device includes NRxreceive antennas, the maximum number NSSof spatial streams that the transmitting device can simultaneously transmit to the receiving device is limited by the lesser of NTxand NRx. In some implementations, the AP102and STAs104may be able to implement both transmit diversity as well as spatial multiplexing. For example, in instances in which the number NSSof spatial streams is less than the number NTxof transmit antennas, the spatial streams may be multiplied by a spatial expansion matrix to achieve transmit diversity.

APs and STAs that include multiple antennas may also support beamforming. Beamforming refers to the focusing of the energy of a transmission in the direction of a target receiver. Beamforming may be used both in a single-user context, for example, to improve a signal-to-noise ratio (SNR), as well as in a multi-user (MU) context, for example, to enable MU multiple-input multiple-output (MIMO) (MU-MIMO) transmissions. To perform beamforming, a transmitting device, referred to as the beamformer, transmits a signal from each of multiple antennas. The beamformer configures the amplitudes and phase shifts between the signals transmitted from the different antennas such that the signals add constructively along particular directions towards the intended receivers, which are referred to as beamformees. The manner in which the beamformer configures the amplitudes and phase shifts depends on channel state information (CSI) associated with the wireless channels over which the beamformer intends to communicate with the beamformee.

To obtain the CSI necessary for beamforming, the beamformer may perform a channel sounding procedure with the beamformee. For example, the beamformer may transmit one or more sounding signals (for example, a null data packet (NDP)) to the beamformee. The beamformee may then perform measurements for each of the NTx×NRxsub-channels corresponding to all of the transmit antenna and receive antenna pairs based on the sounding signal. The beamformee generates a feedback matrix based on the channel measurements and, typically, compresses the feedback matrix before transmitting the feedback to the beamformer. The beamformer may then generate a precoding (or “steering”) matrix for the beamformee based on the feedback and use the steering matrix to precode the data streams to configure the amplitudes and phase shifts for subsequent transmissions to the beamformee.

As described above, a transmitting device may support the use of diversity schemes. When performing beamforming, the transmitting beamforming array gain is logarithmically proportional to the ratio of NTxto NSS. As such, it is generally desirable, within other constraints, to increase the number NTxof transmit antennas when performing beamforming to increase the gain. It is also possible to more accurately direct transmissions by increasing the number of transmit antennas. This is especially advantageous in MU transmission contexts in which it is particularly important to reduce inter-user interference.

As described above, APs102and STAs104can support multi-user (MU) communications; that is, concurrent transmissions from one device to each of multiple devices (for example, multiple simultaneous downlink (DL) communications from an AP102to corresponding STAs104), or concurrent transmissions from multiple devices to a single device (for example, multiple simultaneous uplink (UL) transmissions from corresponding STAs104to an AP102). To support the MU transmissions, the APs102and STAs104may utilize multi-user multiple-input, multiple-output (MU-MIMO) and multi-user orthogonal frequency division multiple access (MU-OFDMA) techniques.

In MU-OFDMA schemes, the available frequency spectrum of the wireless channel may be divided into multiple resource units (RUs) each including a number of different frequency subcarriers (“tones”). Different RUs may be allocated or assigned by an AP102to different STAs104at particular times. The sizes and distributions of the RUs may be referred to as an RU allocation. In some implementations, RUs may be allocated in 2 MHz intervals, and as such, the smallest RU may include 26 tones consisting of 24 data tones and 2 pilot tones. Consequently, in a 20 MHz channel, up to 9 RUs (such as 2 MHz, 26-tone RUs) may be allocated (because some tones are reserved for other purposes). Similarly, in a 160 MHz channel, up to 74 RUs may be allocated. Larger 52 tone, 106 tone, 242 tone, 484 tone and 996 tone RUs may also be allocated. Adjacent RUs may be separated by a null subcarrier (such as a DC subcarrier), for example, to reduce interference between adjacent RUs, to reduce receiver DC offset, and to avoid transmit center frequency leakage.

For UL MU transmissions, an AP102can transmit a trigger frame to initiate and synchronize an UL MU-OFDMA or UL MU-MIMO transmission from multiple STAs104to the AP102. Such trigger frames may thus enable multiple STAs104to send UL traffic to the AP102concurrently in time. A trigger frame may address one or more STAs104through respective association identifiers (AIDs), and may assign each AID (and thus each STA104) one or more RUs that can be used to send UL traffic to the AP102. The AP also may designate one or more random access (RA) RUs that unscheduled STAs104may contend for.

FIG. 3shows a block diagram of an example wireless communication device300. In some implementations, the wireless communication device300can be an example of a device for use in a STA such as one of the STAs104described above with reference toFIG. 1. In some implementations, the wireless communication device300can be an example of a device for use in an AP such as the AP102described above with reference toFIG. 1. The wireless communication device300is capable of outputting and receiving wireless communications (for example, in the form of wireless packets). For example, the wireless communication device can be configured to output and receive packets in the form of physical layer convergence protocol (PLCP) protocol data units (PPDUs) and Media Access Control (MAC) protocol data units (MPDUs) conforming to an IEEE 802.11 standard, such as that defined by the IEEE 802.11-2016 specification or amendments thereof including, but not limited to, 802.11ah, 802.11ad, 802.11ay, 802.11ax, 802.11az, 802.11ba and 802.11be.

The wireless communication device300can be or can include a chip, system on chip (SoC) or chipset that includes one or more modems302, for example, a Wi-Fi (IEEE 802.11 compliant) modem. In some implementations, the one or more modems302(collectively “the modem302”) additionally include a WWAN modem (for example, a 3GPP 4G LTE or 5G compliant modem). In some implementations, the wireless communication device300also includes one or more radios304(collectively “the radio304”). In some implementations, the wireless communication device306further includes one or more processors, processing blocks or processing elements306(collectively “the processor306”) and one or more memory blocks or elements308(collectively “the memory308”).

The modem302can include an intelligent hardware block or device such as, for example, an application-specific integrated circuit (ASIC) among other possibilities. The modem302is generally configured to implement a PHY layer. For example, the modem302is configured to modulate packets and to provide the modulated packets to the radio304for transmission over the wireless medium. The modem302is similarly configured to obtain modulated packets received by the radio304and to demodulate the packets to provide demodulated packets. In addition to a modulator and a demodulator, the modem302may further include digital signal processing (DSP) circuitry, automatic gain control (AGC), a coder, a decoder, a multiplexer and a demultiplexer. For example, while in a transmission mode, data obtained from the processor306is provided to a coder, which encodes the data to provide encoded bits. The encoded bits are then mapped to points in a modulation constellation (using a selected MCS) to provide modulated symbols. The modulated symbols may then be mapped to a number NSSof spatial streams or a number NSTSof space-time streams. The modulated symbols in the respective spatial or space-time streams may then be multiplexed, transformed via an inverse fast Fourier transform (IFFT) block, and subsequently provided to the DSP circuitry for Tx windowing and filtering. The digital signals may then be provided to a digital-to-analog converter (DAC). The resultant analog signals may then be provided to a frequency upconverter, and ultimately, the radio304. In implementations involving beamforming, the modulated symbols in the respective spatial streams are precoded via a steering matrix prior to their provision to the IFFT block.

While in a reception mode, digital signals received from the radio304are provided to the DSP circuitry, which is configured to acquire a received signal, for example, by detecting the presence of the signal and estimating the initial timing and frequency offsets. The DSP circuitry is further configured to digitally condition the digital signals, for example, using channel (narrowband) filtering, analog impairment conditioning (such as correcting for I/Q imbalance), and applying digital gain to ultimately obtain a narrowband signal. The output of the DSP circuitry may then be fed to the AGC, which is configured to use information extracted from the digital signals, for example, in one or more received training fields, to determine an appropriate gain. The output of the DSP circuitry also is coupled with the demodulator, which is configured to extract modulated symbols from the signal and, for example, compute the logarithm likelihood ratios (LLRs) for each bit position of each subcarrier in each spatial stream. The demodulator is coupled with the decoder, which may be configured to process the LLRs to provide decoded bits. The decoded bits from all of the spatial streams are then fed to the demultiplexer for demultiplexing. The demultiplexed bits may then be descrambled and provided to the MAC layer (the processor306) for processing, evaluation or interpretation.

The radio304generally includes at least one radio frequency (RF) transmitter (or “transmitter chain”) and at least one RF receiver (or “receiver chain”), which may be combined into one or more transceivers. For example, the RF transmitters and receivers may include various DSP circuitry including at least one power amplifier (PA) and at least one low-noise amplifier (LNA), respectively. The RF transmitters and receivers are in turn coupled to one or more antennas. For example, in some implementations, the wireless communication device300can include or be coupled with multiple transmit antennas (each with a corresponding transmit chain) and multiple receive antennas (each with a corresponding receive chain). The symbols output from the modem302are provided to the radio304, which then transmits the symbols via the coupled antennas. Similarly, symbols received via the antennas are obtained by the radio304, which then provides the symbols to the modem302.

The processor306can include an intelligent hardware block or device such as, for example, a processing core, a processing block, a central processing unit (CPU), a microcontroller, an application-specific integrated circuit (ASIC), or a programmable logic device (PLD) such as a field programmable gate array (FPGA), among other possibilities. The processor306processes information received through the radio304and the modem302, and processes information to be output through the modem302and the radio304for transmission through the wireless medium. For example, the processor306may implement a control plane and MAC layer configured to perform various operations related to the generation and transmission of MPDUs, frames or packets. The MAC layer is configured to perform or facilitate the coding and decoding of frames, spatial multiplexing, space-time block coding (STBC), beamforming, and OFDMA resource allocation, among other operations or techniques. In some implementations, the processor306may generally control the modem302to cause the modem to perform various operations described above.

The memory304can include random access memory (RAM) and read-only memory (ROM). The memory304also can store processor- or computer-executable software (SW) code containing instructions that, when executed by the processor306, cause the processor to perform various operations described herein for wireless communication, including the generation, transmission, reception and interpretation of MPDUs, frames or packets.

FIG. 4Ashows a block diagram of an example AP402. For example, the AP402can be an example implementation of the AP102described with reference toFIG. 1. The AP402includes a wireless communication device (WCD)410. For example, the wireless communication device410may be an example implementation of the wireless communication device300described with reference toFIG. 3. The AP402also includes multiple antennas420coupled with the wireless communication device410to transmit and receive wireless communications. In some implementations, the AP402additionally includes an application processor430coupled with the wireless communication device410, and a memory440coupled with the application processor430. The AP402further includes at least one external network interface450that enables the AP402to communicate with a core network or backhaul network to gain access to external networks including the Internet. For example, the external network interface350may include one or both of a wired (for example, Ethernet) network interface and a wireless network interface (such as a WWAN interface). Ones of the aforementioned components can communicate with other ones of the components directly or indirectly, over at least one bus.

FIG. 4Bshows a block diagram of an example STA404. For example, the STA404can be an example implementation of the STA104described with reference toFIG. 1. The STA404includes a wireless communication device415. For example, the wireless communication device415may be an example implementation of the wireless communication device300described with reference toFIG. 3. The STA404also includes one or more antennas425coupled with the wireless communication device415to transmit and receive wireless communications. The STA404additionally includes an application processor435coupled with the wireless communication device415, and a memory445coupled with the application processor435. In some implementations, the STA404further includes a user interface (UI)455(such as a touchscreen or keypad) and a display465, which may be integrated with the UI455to form a touchscreen display. In some implementations, the STA404may further include one or more sensors475such as, for example, one or more inertial sensors, accelerometers, temperature sensors, pressure sensors, or altitude sensors. Ones of the aforementioned components can communicate with other ones of the components directly or indirectly, over at least one bus.

As described above, to increase the throughput for a given range, or to enable a greater range for a given throughput, it may be desirable to increase the number NSSof spatial streams used when performing beamforming to transmit data to another wireless communication device. However, some wireless communication devices may not be capable of transmitting as many spatial streams as they have antennas. For example, suppose that a first wireless communication device has NTx=8 antennas available for transmission, and that a second wireless communication device has NRx=8 antennas available for reception. In such an example, it is theoretically possible for the first wireless communication device to transmit NSS=NTx=NRx=8 spatial streams to the second wireless communication device, and for the second wireless communication device to decompose and process all of the spatial streams. However, in actual implementation, the second wireless communication device may possess hardware, firmware or software capable of only processing a limited number NSSof spatial streams, for example, NSS=4 spatial streams, although it has NRx=8 antennas and can determine an NTx×NRx(8×8) channel estimate. For example, the second wireless communication device may be able to perform a channel decomposition of only the limited number NSS=4 of spatial streams. As such, the second wireless communication device may indicate to the first wireless communication device, for example, during an association operation, that it only supports the limited number NSSof spatial streams. Consequently, the first wireless communication device will not use more than this limited number NSSof spatial streams when transmitting to the second wireless communication device. In the preceding example, this restriction represents an underutilization of four of the available dimensions of the NTx×NRx(8×8) MIMO channel.

Various implementations relate generally to beamforming techniques, and more particularly, to techniques for obtaining and providing channel feedback. In some implementations, a beamformee provides channel feedback to a beamformer that enables the beamformer to construct and independently precode two or more different sets of spatial streams for transmission to the beamformee. The independent precoding of the different sets of spatial streams ensures that the decodings of the different sets of spatial streams may be decoupled from one another at the beamformee. To provide the channel feedback, the beamformee partitions a channel estimate into two or more sub-estimates prior to performing a channel decomposition. In some implementations, the beamformee determines null-space-based projections of the sub-estimates before performing the channel decomposition. The determination of the null-space-based projections enables the beamformee to perform independent decompositions of the multiple channel sub-estimates to determine multiple respective feedback matrices, which are then assembled to provide the channel feedback to the beamformer. The channel feedback is then reconstructed and disassembled by the beamformer to perform the independent precoding of the different sets of spatial streams.

Particular implementations of the subject matter described in this disclosure can be implemented to realize one or more of the following potential advantages. In some implementations, the described techniques can be used to increase the throughput for a given range, or to enable a greater range for a given throughput, by increasing the number NSSof spatial streams that may be used for beamforming.

FIG. 5shows a flowchart illustrating an example process500for a first wireless communication device to provide channel feedback information to a second wireless communication device according to some implementations. For example, the first wireless communication device may be configured as a beamformee and the second wireless communication device may be configured as a beamformer. In some implementations, the process500may be performed by a first wireless communication device such as the wireless communication device300described above with reference toFIG. 3. In some such implementations, the process500may be performed by a first wireless communication device operating within an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4A, respectively. In some other such implementations, the process may be performed by a first wireless communication device operating within a STA, such as one of the STAs104and404described above with reference toFIGS. 1 and 4B, respectively. For example, in some scenarios, the first wireless communication device may be operating as, or within, a first AP and the second wireless communication device may be operating as, or within, a different second AP. For example, the first AP may serve as a backhaul to, or a repeater for, the second AP. In some other scenarios, the first wireless communication device may be operating as, or within, a STA and the second wireless communication device may be operating as, or within, an associated AP.

The process500begins in block502with receiving a sounding signal from the second wireless communication device. In some implementations, the sounding signal is transmitted as a null data packet (NDP). The second wireless communication device may transmit the sounding signal using NTxantennas and the first wireless communication device may receive the sounding signal in block502using NRxantennas. The sounding signal generally includes multiple long training fields (LTFs) where the number of LTFs is based on NTx. In block504, the process500proceeds with generating a channel estimate H based on the sounding signal, and more specifically, based on the LTFs. Because the sounding signal was transmitted via NTxantennas and received via NRxantennas, the first wireless communication device generates an NRx×NTxchannel estimate matrix H, as shown below in equation (1) where, for didactic purposes, NTx=8 and NRx=8. While the example is described for didactic purposes, it is contemplated that the techniques disclosed herein can be applied in implementations and scenarios in which any number of transmit antennas and any number of receive antennas are employed.

In block506, the process500proceeds with partitioning the channel estimate matrix H into a first channel estimate matrix H1and a second channel estimate matrix H2. In some implementations, the first wireless communication device will receive only NSSspatial streams when receiving a subsequent beamformed transmission from the second wireless communication device. In such instances, the first wireless communication device may, in block506, partition only the first NSSrows of the channel estimate matrix H into the first channel estimate matrix H1and the second channel estimate matrix H2. For example, the first wireless communication device may partition the channel estimate matrix into a first set of NSS1rows and a second set of NSS2, rows, where the first set of NSS1rows defines the first channel estimate matrix H1, where the second set of NSS2rows defines the second channel estimate matrix H2, and where NSS1+NSS2, =NSS, as shown in equations (2) and (3) below.

In equations (2) and (3) shown above, NSS1=4 and NSS2=4. However, while NSS1=NSS2in this example, it is contemplated that the techniques disclosed herein can be applied in implementations and scenarios in which NSS1≠NSS2. In some implementations, the optimal values of NSS1and NSS2, for a given total number of spatial streams NSSare determined a priori. For example, the first wireless communication device may determine the optimal values of NSS1and NSS2for each number NSSof spatial streams it supports and communicate the optimal values to the second wireless communication device during an association operation. As another example, the second wireless communication device may determine the values of NSS1and NSS2for each number of spatial streams it supports and communicate the values to the first wireless communication device during an association operation. As another example, both the first and the second wireless communication devices may determine values for NSS1and NSS2, exchange the values with one another, and negotiate to determine a final set of values for NSS1and NSS2. In some implementations, the values for NSS1and NSS2may be stored in a lookup table (LUT) in a memory of the first wireless communication device. The first wireless communication device may query the LUT based on the number NSSof spatial streams to be subsequently used by the second wireless device in transmitting a beamformed communication to the first wireless communication device. The second wireless device may include the same LUT as the first wireless communication device.

In blocks508and510, the process500proceeds with determining a first projection matrix P1based on the second channel estimate matrix H2, and determining a second projection matrix P2based on the first channel estimate matrix H1, respectively. The first and the second projection matrices P1and P2are used to decouple the first and the second channel estimates H1and H2. In some implementations, the first wireless communication device determines the first projection matrix P1from the null space of the second channel estimate matrix H2in block508as shown in equation (4) below. Similarly, in such implementations, the first wireless communication device may determine the second projection matrix P2from the null space of the first channel estimate matrix H1in block510as shown in equation (5) below. Continuing the example above, the resulting projection matrix P1consists of NTx=8 rows and NTx−NSS2=4 columns. Similarly, the resulting projection matrix P2consists of NTx=8 rows and NTx−NSS1=4 columns.

In blocks512and514, the process500proceeds with determining a first effective channel estimate matrix HEff1based on the first channel estimate matrix H1and the first projection matrix P1, and determining a second effective channel estimate matrix HEff2based on the second channel estimate matrix H2and the second projection matrix P2, respectively. In some implementations, the first wireless communication device determines the first effective channel estimate matrix HEff1by multiplying the first channel estimate matrix H1and the first projection matrix P1in block512as shown in equation (6) below, and determines the second effective channel estimate matrix HEff2by multiplying the second channel estimate matrix H2and the second projection matrix P2as shown in equation (7) below. Continuing the example above, the first effective channel estimate HEff1consists of NSS1=4 rows and NTx−NSS2=4 columns, and the second effective channel estimate HEff2consists of NSS2=4 rows and NTx−NSS1=4 columns.

In block516, the process500proceeds with determining a combined feedback matrix Z based on the first effective channel estimate HEff1and the second effective channel estimate HEff2(for example, as described with reference to the process600ofFIG. 6).

In block518, the process500proceeds with outputting channel feedback information based on the combined feedback matrix Z for transmission to the second wireless communication device. For example, the first wireless communication device can output the channel feedback information for transmission to the second wireless communication device via a radio and one or more coupled antennas. In some implementations, the first wireless communication device is configured to, in block518, first compress the combined feedback matrix Z to generate compressed feedback before outputting the compressed feedback as channel feedback information. For example, to compress the combined feedback matrix Z in block518, the first wireless communication device may be configured to perform a Givens rotation operation on the elements of the combined feedback matrix Z to generate quantized angles representative of the combined feedback matrix Z. The channel feedback information may include the quantized angles. In some implementations, the channel feedback information is output in block518in a feedback packet that includes a High Efficiency (HE) Compressed Beamforming/Channel quality indication (CQI) frame, which includes a compressed beamforming (CBF) report field that includes the quantized angles. In some implementations, the HE Compressed Beamforming/CQI frame further comprises an average signal-to-noise ratio (SNR) for each spatial stream.

In some implementations, the channel feedback information additionally includes at least one of an indication of NSS1or an indication of NSS2, for example, so that the second wireless communication device is aware of how the first wireless communication device partitioned the channel estimate to obtain the compressed feedback. In some implementations, the indication of NSS1or NSS2may be included within a MIMO control field of the feedback packet. For example, the MIMO control field may be generated to include one of a number of possible bit sequences indicating the values of NSS1and NSS2. In some implementations implementing very high throughput (VHT) communications as defined by the IEEE 802.11-2016 specification, the first wireless communication device may select one of four 2-bit sequences to include in the MIMO control field based on whether, and how, the channel estimate matrix H was partitioned. Table (1) below shows an example in which the values of NSS1and NSS2, are defined for various values of NSS. For example, the first wireless communication device may generate the MIMO control field to include the bit sequence “00” to indicate that it did not partition the channel estimate. The first wireless communication device may generate the MIMO control field to include the bit sequences “01,” “10” or “11” in instances in which it did partition the channel estimate H to indicate the values of NSS1and NSS2, relative to the total number NSSof spatial streams. For example, if the bit sequence “01” is identified, and 6 spatial streams are used, then the second wireless communication device will know that NSS1=4 and NSS2=2.

As another example, in some implementations implementing high efficiency (HE) communications as defined by the IEEE 802.11ax amendment, the first wireless communication device may select one of multiple 4-bit sequences to include in the MIMO control field based on whether, and how, the channel estimate matrix H was partitioned. Table (2) below shows an example in which the values of NSS1and NSS2are defined for various 4-bit sequences. For example, the first wireless communication device may generate the MIMO control field to include the bit sequence “0111” to indicate that NSS1=2 and NSS2, =4. As another example, the first wireless communication device may generate the MIMO control field to include the bit sequence “1111” to indicate NSS1=4 and NSS2=4.

While not described as being a part of the process500, in some implementations, prior to receiving the sounding signal, the first wireless communication device transmits an indication to the second wireless communication device indicating that the first wireless communication device includes capabilities to support the operations of the process500. For example, the first wireless communication device may signal its support of the process500during an association operation in which the first wireless communication device associates with the second wireless device.

FIG. 6shows a flowchart illustrating an example process600for determining a combined feedback matrix according to some implementations. For example, the process600may be implemented by the first wireless communication device described with reference toFIG. 5to determine the combined feedback matrix Z in block516of the process500. In some implementations, after the performance of blocks512and514of the process500, the process600begins in blocks602and604with performing a first factorization operation on the first effective channel estimate matrix HEff1to determine a first intermediate matrix V1, and performing a second factorization operation on the second effective channel estimate matrix HEff2to determine a second intermediate matrix V2, respectively.

In some such implementations, the factorization operations performed in blocks602and604are singular value decomposition (SVD) operations. For example, the first wireless communication device may be configured to perform a first SVD operation on the first effective channel estimate matrix HEff1in block602to generate the first intermediate matrix V1(a unitary matrix), and to perform a second SVD operation on the second effective channel estimate matrix HEff2in block604to generate the second intermediate matrix V2(a unitary matrix), as shown in equations (8) and (9) below, respectively. Continuing the example above, the first feedback matrix V1consists of NTx−NSS2=4 rows and NSS1=4 columns, and the second feedback matrix V2consists of NTx−NSS1=4 rows and NSS2=4 columns.

In block606the process600proceeds with determining a first feedback matrix Z1based on the first projection matrix P1and the first intermediate matrix V1, for example, by multiplying the first projection matrix P1and the first intermediate matrix V1, as shown in equation (10) below (where the resulting first feedback matrix Z1includes NTxrows and NSS1columns). Similarly, in block608the process600proceeds with determining a second feedback matrix Z2based on the second projection matrix P2and the second intermediate matrix V2, for example, by multiplying the second projection matrix P2and the second intermediate matrix V2as shown in equation (11) below (where the resulting second precoding matrix Z2includes NTxrows and NSS2, columns).

The first wireless communication device may then generate the combined feedback matrix Z in block610based on the first feedback matrix Z1and the second feedback matrix Z2. It may be desirable for the combined feedback matrix Z to be an orthonormal block-diagonal matrix so that the first feedback matrix Z1and the second feedback matrix Z2may be decoupled and reconstructed by the second wireless communication device. To generate an orthonormal block-diagonal feedback matrix Z, the first wireless communication device may be configured to stack the first feedback matrix Z1and the second feedback matrix Z2to generate a tall orthonormal matrix such that the first and the second feedback matrices do not share any rows or columns in the resultant combined feedback matrix Z, as shown below in equation (12) (where the resulting steering matrix Z includes 2NT, rows and NSScolumns).

FIG. 7shows a flowchart illustrating an example process700for a first wireless communication device to decode a beamformed transmission received from a second wireless communication device according to some implementations. For example, the first wireless communication device may be configured as a beamformee and the second wireless communication device may be configured as a beamformer. In some implementations, the process700may be performed by a first wireless communication device such as the wireless communication device300described above with reference toFIG. 3. In some such implementations, the process700may be performed by a first wireless communication device operating within an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4A, respectively. In some other such implementations, the process may be performed by a first wireless communication device operating within a STA, such as one of the STAs104and404described above with reference toFIGS. 1 and 4B, respectively. For example, in some scenarios, the first wireless communication device may be operating as, or within, a first AP and the second wireless communication device may be operating as, or within, a different second AP. For example, the first AP may serve as a backhaul to, or a repeater for, the second AP. In some other scenarios, the first wireless communication device may be operating as, or within, a STA and the second wireless communication device may be operating as, or within, an associated AP.

In some implementations, the process700begins after the end of the process500described with reference toFIG. 5. For example, after the channel feedback information is transmitted to the second wireless communication device, the first wireless communication device may prepare to receive a beamformed transmission from the second wireless communication device. As such, in the example described below, the process700begins in block702with receiving a beamformed transmission from the second wireless communication device. The beamformed transmission includes at least one packet received via NSSspatial streams. In block704, the process700proceeds with generating a channel estimate HBbased on the beamformed transmission received in block702. In block706, the process700proceeds with partitioning the channel estimate matrix HBinto a first channel estimate matrix HB1and a second channel estimate matrix HB2. For example, the first wireless communication device may partition the channel estimate matrix into a first set of NSS1rows and a second set of NSS2rows, where the first set of NSS1rows defines the first channel estimate matrix HB1, where the second set of NSS2rows defines the second channel estimate matrix HB2, and where NSS1+NSS2=NSS.

In block708, the process700proceeds with partitioning the spatial streams into a first set of NSS1spatial streams and a second set of NSS2spatial streams, wherein NSS1+NSS2=NSS. The design of the combined feedback matrix Z, and its provision to the second wireless communication device, enables the second wireless communication device to precode the first and the second sets of spatial streams such that the decoding of the first set of NSS1spatial streams may be decoupled from the decoding of the second set of NSS2spatial streams. In blocks710and712, the process700proceeds with decoding the first set of NSS1spatial streams based on the first channel estimate matrix HB1and the first feedback matrix Z1, and decoding the second set of NSS2spatial streams based on the second channel estimate matrix HB2and the second feedback matrix Z2, respectively. In some implementations, the first wireless communication device may then spatially demultiplex (combine) the decoded bits from all NSSspatial streams, descramble the combined bits, and provide the descrambled bits to the MAC layer for further processing.

FIG. 8shows a flowchart illustrating an example process800for decoding sets of spatial streams according to some implementations. For example, the process800may be implemented by the first wireless communication device described with reference toFIG. 7to decode the first and the second sets of spatial streams in blocks710and712of the process700. In some implementations, after the spatial streams are partitioned into the first and second sets of spatial streams, the process800begins to blocks802and804. For example, in block802, the first wireless communication device performs a first ML equalization operation on the first set of NSS1spatial streams based on the first channel estimate matrix HB1(obtained in block706of the process700) and the first feedback matrix Z1(obtained in block606of the process600) to generate a first sequence of complex numbers. Similarly, in block804, the first wireless communication device performs a second ML equalization operation on the second set of NSS2, spatial streams based on the second channel estimate matrix HB2(obtained in block706of the process700) and the second feedback matrix Z2(obtained in block608of the process600) to generate a second sequence of complex numbers.

The ability to perform two independent ML equalization operations is based at least in part on the fact that the first projection matrix P1is obtained from the null space of the second channel estimate matrix H2in block508of the process500, and the second projection matrix P2is obtained from the null space of the first channel estimate matrix H1in block510of the process500. For example, equation (13) below shows the received vector y as a function of the channel estimates HB1and HB2, the feedback matrices Z1and Z2, the transmit vector xnoutput from the second wireless communication device, and a noise vector nn.

Because HB1P2is assumed to be 0 (because the first channel estimate matrix HB1obtained in block706of the process700is assumed to be approximately the same as the first channel estimate matrix H1obtained in block506of the process500, and because the second projection matrix P2is obtained from the null space of the first channel estimate matrix H1obtained in block506), and because HB2P1is assumed to be 0 (because the second channel estimate matrix HB2obtained in block706of the process700is assumed to be approximately the same as the second channel estimate matrix H2obtained in block506of the process500, and because the first projection matrix P1is obtained from the null space of the second channel estimate matrix H2obtained in block506), the received component vectors can be expressed as equations (14) and (15) below, where x1represents the transmit sub-vector for the first set of NSS1spatial streams and x2represents the transmit sub-vector for the second set of NSS2spatial streams.

As such, a first ML equalization operation may be performed in block802on the first set of NSS1spatial streams based on the first channel estimate matrix HB1and the first feedback matrix Z1to generate the first sequence of complex numbers, and a second separate ML equalization operation may be performed in block804on the second set of NSS2spatial streams based on the second channel estimate matrix HB2and the second feedback matrix Z2to generate a second sequence of complex numbers.

After performing the first ML equalization operation in block802, the process800may proceed in block806with determining a first set of logarithm likelihood ratio (LLR) values based on the first sequence of complex numbers, for example, on a per bit position, per subcarrier, per stream basis. Similarly, after performing the second ML equalization operation in block804, the process800may proceed in block808with determining a second set of LLR values based on the second sequence of complex numbers on a per bit position, per subcarrier, per stream basis. In blocks810and812, the process800then proceeds with decoding information bits for the first set of NSS1spatial streams based on the first set of LLR values, and decoding information bits for the second set of NSS2spatial streams based on the second set of LLR values, respectively.

FIG. 9shows a flowchart illustrating an example process900for a first wireless communication device to generate a beamformed transmission for a second wireless communication device according to some implementations. For example, the first wireless communication device may be configured as a beamformer and the second wireless communication device may be configured as a beamformee. In some implementations, the process900may be performed by a first wireless communication device such as the wireless communication device300described above with reference toFIG. 3. In some such implementations, the process900may be performed by a first wireless communication device operating within an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4A, respectively. For example, in some scenarios, the first wireless communication device may be operating as, or within, a first AP and the second wireless communication device may be operating as, or within, a different second AP. For example, the second AP may serve as a backhaul to, or a repeater for, the first AP. In some other scenarios, the first wireless communication device may be operating as, or within, an AP and the second wireless communication device may be operating as, or within, a STA.

In some implementations, the process900begins in block902with outputting, for transmission to the second wireless communication device, a sounding signal. For example, the first wireless communication device can output the sounding signal for transmission to the second wireless communication device via NTxcoupled antennas. In some implementations, the sounding signal is generated and transmitted as an NDP. The sounding signal generally includes multiple LTFs where the number of LTFs is based on NTx.

After the sounding signal is transmitted in block902, the first wireless communication device waits for channel feedback from the second wireless communication device. In block904, the first wireless communication device receives the channel feedback information based on the sounding signal. In some implementations, the channel feedback information includes compressed feedback in the form of, for example, quantized angles obtained through a Givens rotation operation. In some implementations, the channel feedback information is received in block904in a feedback packet that includes an HE Compressed Beamforming/CQI frame, which includes a CBF report field that includes the quantized angles. In some implementations, the HE Compressed Beamforming/CQI frame further comprises an average SNR for each spatial stream In some implementations, the channel feedback information additionally includes at least one of an indication of NSS1or an indication of NSS2, for example, so that the first wireless communication device is aware of how the second wireless communication device partitioned the channel estimate to obtain the compressed feedback. In some such implementations, the indication of NSS1or NSS2may be included within a MIMO control field of the feedback packet. For example, the MIMO control field can include one of multiple possible bit sequences selected by the second wireless communication device as described above with reference to Tables (1) and (2).

In blocks906and908, the process900proceeds with determining a first precoding matrix Z1for a first set of NSS1spatial streams and a second precoding matrix Z2for a second set of NSS2spatial streams, respectively, based on the channel feedback information. For example, blocks906and908may include decompressing the compressed feedback received in block904to generate a steering matrix Z, and partitioning the steering matrix Z to determine the first and the second precoding matrices Z1and Z2, respectively. In some implementations, the steering matrix is a row-stacked matrix as shown in equation (16) below.

In block910, the process900proceeds with generating at least one PPDU including data for the second wireless communication device. For example, the first wireless communication device may generate an A-MPDU that includes the data, and encapsulate the A-MPDU in a PPDU for transmission to the second wireless communication device. In block912, the process900proceeds with partitioning the at least one PPDU into NSSspatial streams, and more specifically, into a first set of NSS1spatial streams and a second set of NSS2spatial streams. The design of the steering matrix Z enables the first wireless communication device to precode the first and the second sets of spatial streams separately such that the decoding of the first set of NSS1spatial streams may be decoupled from the decoding of the second set of NSS2spatial streams at the second wireless communication device. In blocks914and916, the process900proceeds with applying the first precoding matrix Z1to the first set of NSS1spatial streams to precode the associated symbols to generate a first set of precoded streams, and applying the second precoding matrix Z2to the second set of NSS2spatial streams to precode the associated symbols to generate a second set of precoded streams, respectively.

In block918, the first wireless communication device outputs the first and the second sets of precoded streams for transmission to the second wireless communication device. To output the first and the second sets of precoded streams, the first wireless communication device may be configured to first multiplex the first and the second sets of precoded streams to generate a multiplexed stream, transform the modulated symbols in the multiplexed stream via an IFFT, and apply various digital signal processing, digital-to-analog conversion, and frequency upconversion. The first wireless communication device may then provide the resultant analog signals to a radio, which may then amplify, otherwise process, and output the analog signals for transmission to the second wireless communication device via, for example, NTxcoupled antennas.

While not described as being a part of the process900, in some implementations, prior to generating and transmitting the sounding signal, the first wireless communication device receives an indication from the second wireless communication device indicating that the second wireless communication device includes capabilities to support the operations of one or more of the processes500,600,700,800and900described with reference toFIGS. 5-9, respectively. For example, the second wireless communication device may signal its support during an association operation in which the second wireless communication device associates with the first wireless device.

FIG. 10shows a block diagram of an example wireless communication device1000for use in wireless communication according to some implementations. In some implementations, the wireless communication device1000is configured to provide channel feedback information to a second wireless communication device. For example, the wireless communication device1000may be configured as a beamformee and the second wireless communication device may be configured as a beamformer. In some implementations, the wireless communication device1000is configured to perform the processes500or600described above with reference toFIGS. 5 and 6, respectively. In some implementations, the wireless communication device1000is further configured to perform the processes700or800described above with reference toFIGS. 7 and 8, respectively. In some implementations, the wireless communication device1000can be an example implementation of the wireless communication device300described above with reference toFIG. 3. In some implementations, the wireless communication device1000can be configured to operate within an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4A, respectively. In some other such implementations, the wireless communication device1000can be configured to operate within a STA, such as one of the STAs104and404described above with reference toFIGS. 1 and 4B, respectively. For example, in some scenarios, the wireless communication device1000may be operating as, or within, a first AP and the second wireless communication device may be operating as, or within, a different second AP. For example, the first AP may serve as a backhaul to, or a repeater for, the second AP. In some other scenarios, the wireless communication device1000may be operating as, or within, a STA and the second wireless communication device may be operating as, or within, an associated AP. For example, the wireless communication device1000can be a chip, SoC, chipset, package or device that includes at least one processor and at least one modem (for example, a Wi-Fi (IEEE 802.11) modem or a cellular modem). In other instances, the wireless communication device1000can be a STA or an AP that includes such a chip, SoC, chipset, package or device, as well as at least one transmitter, at least one receiver, and at least one antenna.

The wireless communication device1000includes a communication module1002, a channel estimation module1004, a decomposition module1006, and a feedback module1008. Portions of one or more of the modules1002,1004,1006and1008may be implemented at least in part in hardware or firmware. For example, the communication and channel estimation modules1002and1004, respectively, may be implemented at least in part by one or more modems (such as the modem302). In some implementations, at least some of the modules1002,1004,1006and1008are implemented at least in part as software stored in a memory (such as the memory308). For example, portions of one or more of the modules902,904,906and908can be implemented as non-transitory instructions (or “code”) executable by at least one processor (such as the processor306) to perform the functions or operations of the respective modules. For example, the code may enable the processor306to implement a MAC layer that, in turn, implements portions of, or controls, one or more of the modules1002,1004,1006or1008.

The communication module1002includes a reception sub-module configured to receive wireless packets obtained by multiple coupled antennas and a radio over a wireless medium. For example, the communication module1002is configured to receive sounding signals, such as NDPs, from a second wireless communication device. The communication module1002is further configured to receive SU or MU beamformed transmissions from the second wireless communication device. The communication module1002also includes a transmission sub-module configured to output wireless packets for transmission by a coupled radio and multiple antennas over the wireless medium. For example, the communication module1002is configured to output wireless packets that include channel feedback information for transmission to the second wireless communication device. In some implementations, the channel feedback information is output in a feedback packet that includes an HE Compressed Beamforming/CQI frame, which includes a CBF report field that includes the channel feedback information.

The channel estimation module1004is configured to generate a channel estimate matrix H based on a packet received by the communication module1002. For example, the packet may be a sounding signal or a beamformed transmission. The channel estimation module is further configured to partition the channel estimate matrix H into a first channel estimate matrix H1and a second channel estimate matrix H2. In some implementations, the communication module1002will receive only NSSspatial streams when receiving a beamformed transmission from the second wireless communication device. In such instances, the channel estimation module1004may partition only the first NSSrows of the channel estimate matrix H into the first channel estimate matrix H1and the second channel estimate matrix H2. For example, the channel estimation module1004may partition the channel estimate matrix into a first set of NSS1rows and a second set of NSS2rows, where the first set of NSS1rows defines the first channel estimate matrix H1, where the second set of NSS2rows defines the second channel estimate matrix H2, and where NSS1+NSS2=NSS.

As described above, in some implementations, the optimal values of NSS1and NSS2for a given total number of spatial streams NSSare determined a priori. For example, the channel estimation module1004may determine the optimal values of NSS1and NSS2for each number NSSof spatial streams the wireless communication device1000supports and provide the optimal values for transmission to the second wireless communication device during an association operation. As another example, the second wireless communication device may determine the values of NSS1and NSS2for each number of spatial streams it supports and communicate the values to the wireless communication device1000during an association operation. As another example, both the channel estimation module1004and the second wireless communication devices may determine values for NSS1and NSS2, exchange the values with one another, and negotiate to determine a final set of values for NSS1and NSS2. In some implementations, the values for NSS1and NSS2may be stored in a LUT in a memory of the wireless communication device1000. The channel estimation module1004may query the LUT based on the number NSSof spatial streams to be subsequently used by the second wireless device in transmitting beamformed communications to the wireless communication device1000. The second wireless device may include the same LUT as the wireless communication device1000.

The channel estimation module1004is additionally configured to determine a first projection matrix P1based on the second channel estimate matrix H2, and to determine a second projection matrix P2based on the first channel estimate matrix H1. As described above, the first and the second projection matrices P1and P2are used to decouple the first and the second channel estimates H1and H2. In some implementations, the channel estimation module1004determines the first projection matrix P1from the null space of the second channel estimate matrix H2. Similarly, in such implementations, the channel estimation module1004may determine the second projection matrix P2from the null space of the first channel estimate matrix H1.

The channel estimation module1004is further configured to determine a first effective channel estimate matrix HEff1based on the first channel estimate matrix H1and the first projection matrix P1. Similarly, the channel estimation module1004is configured to determine a second effective channel estimate matrix HEff2based on the second channel estimate matrix H2and the second projection matrix P2. In some implementations, the channel estimation module1004determines the first effective channel estimate matrix HEff1by multiplying the first channel estimate matrix H1and the first projection matrix P1, and determines the second effective channel estimate matrix HEff2by multiplying the second channel estimate matrix H2and the second projection matrix P2.

The decomposition module1006is configured to perform decomposition operations on the first and the second channel estimate matrices HEff1and HEff2. For example, the decomposition module1006is configured to determine a first intermediate matrix V1based on the first effective channel estimate matrix HEff1, and to determine a second intermediate matrix V2based on the second effective channel estimate matrix HEff2. In some implementations, to determine the first intermediate matrix V1, the decomposition module1006is configured to perform a factorization operation on the first effective channel estimate matrix HEff1. Similarly, to determine the second intermediate matrix V2, the decomposition module1006is configured to perform a factorization operation on the second effective channel estimate matrix HEff2. In some such implementations, the decomposition module1006is configured to perform factorization operations in the form of SVD operations. For example, the decomposition module1006may be configured to perform a first SVD operation on the first effective channel estimate matrix HEff1to generate the first intermediate matrix V1(a unitary matrix), and to perform a second SVD operation on the second effective channel estimate matrix HEff2to generate the second intermediate matrix V2(a unitary matrix).

The feedback module1008is configured to generate feedback information based on the first and the second channel estimate matrices HEff1and HEff2. For example, the feedback module1008may be configured to generate the feedback information based on the factorization operations performed by the decomposition module1006. In some implementations, the feedback module1008is configured to generate a combined feedback matrix Z based on the first intermediate matrix V1and the second intermediate matrix V2. In some implementations, to determine the combined feedback matrix Z, the feedback module1008is configured to determine a first feedback matrix Z1based on the first projection matrix P1and the first intermediate matrix V1, for example, by multiplying the first projection matrix P1and the first intermediate matrix V1. Similarly, the feedback module1008may be configured to determine a second feedback matrix Z2based on the second projection matrix P2and the second intermediate matrix V2, for example, by multiplying the second projection matrix P2and the second intermediate matrix V2.

The feedback module1008may then generate the combined feedback matrix Z based on the first feedback matrix Z1and the second feedback matrix Z2. As described above, it may be desirable for the combined feedback matrix Z to be an orthonormal block-diagonal matrix so that the first feedback matrix Z1and the second feedback matrix Z2may be decoupled and reconstructed by the second wireless communication device. To generate an orthonormal block-diagonal feedback matrix Z, the feedback module1008may be configured to stack the first feedback matrix Z1and the second feedback matrix Z2to generate a tall orthonormal matrix such that the first and the second feedback matrices do not share any rows or columns in the resultant combined feedback matrix Z.

The feedback module1008is further configured to provide the channel feedback information to the communication module1002for subsequent transmission to the second wireless communication device. In some implementations, the feedback module1008is configured to first compress the combined feedback matrix Z to generate compressed feedback before outputting the compressed feedback as the channel feedback information. For example, to compress the combined feedback matrix Z, the feedback module1008may be configured to perform a Givens rotation operation on the elements of the combined feedback matrix Z to generate quantized angles representative of the combined feedback matrix Z. The channel feedback information may include the quantized angles.

In some implementations, the channel feedback information additionally includes at least one of an indication of NSS1or an indication of NSS2, for example, so that the second wireless communication device is aware of how the channel estimation module1004partitioned the channel estimate to obtain the compressed feedback. In some implementations, the indication of NSS1or NSS2may be included within a MIMO control field of the feedback packet output by the communication module1002. For example, the MIMO control field may be generated to include one of a number of possible bit sequences indicating the values of NSS1and NSS2. In some implementations implementing VHT communications as defined by the IEEE 802.11-2016 specification, the feedback module908may select one of four 2-bit sequences to include in the MIMO control field based on whether, and how, the channel estimate matrix H was partitioned. Table (1) above shows an example in which the values of NSS1and NSS2, are defined for various values of NSS. As another example, in some implementations implementing HE communications as defined by the IEEE 802.11ax amendment, the feedback module908may select one of multiple 4-bit sequences to include in the MIMO control field based on whether, and how, the channel estimate matrix H was partitioned. Table (2) above shows an example in which the values of NSS1and NSS2, are defined for various 4-bit sequences.

FIG. 11shows a block diagram of an example wireless communication device1100for use in wireless communication according to some implementations. In some implementations, the wireless communication device1100is configured to decode a beamformed transmission received from a second wireless communication device. For example, the wireless communication device1100may be configured as a beamformee and the second wireless communication device may be configured as a beamformer. In some implementations, the wireless communication device1100is configured to perform the processes700or800described above with reference toFIGS. 7 and 8. In some implementations, the wireless communication device1100is further configured to perform the processes500or600described above with reference toFIGS. 5 and 6, respectively. In some implementations, the wireless communication device1100can be an example implementation of the wireless communication device300described above with reference toFIG. 3. In some implementations, the wireless communication device1100can be configured to operate within an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4A, respectively. In some other such implementations, the wireless communication device1100can be configured to operate within a STA, such as one of the STAs104and404described above with reference toFIGS. 1 and 4B, respectively. For example, in some scenarios, the wireless communication device1100may be operating as, or within, a first AP and the second wireless communication device may be operating as, or within, a different second AP. For example, the first AP may serve as a backhaul to, or a repeater for, the second AP. In some other scenarios, the wireless communication device1100may be operating as, or within, a STA and the second wireless communication device may be operating as, or within, an associated AP. For example, the wireless communication device1100can be a chip, SoC, chipset, package or device that includes at least one processor and at least one modem (for example, a Wi-Fi (IEEE 802.11) modem or a cellular modem). In other instances, the wireless communication device1100can be a STA or an AP that includes such a chip, SoC, chipset, package or device, as well as at least one transmitter, at least one receiver, and at least one antenna.

The wireless communication device1100includes a communication module1102, a channel estimation module1104, a spatial stream processing module1106, and a decoding module1108. Portions of one or more of the modules1102,1104,1106and1108may be implemented at least in part in hardware or firmware. For example, the communication, channel estimation and spatial stream processing modules1102,1104and1106, respectively, may be implemented at least in part by one or more modems (such as the modem302). In some implementations, at least some of the modules1102,1104,1106and1108are implemented at least in part as software stored in a memory (such as the memory308). For example, portions of one or more of the modules1102,1104,1106and1108can be implemented as non-transitory instructions (or “code”) executable by at least one processor (such as the processor306) to perform the functions or operations of the respective module. The wireless communication device1100may also include the modules described above with reference to the wireless communication device1000. Likewise, the wireless communication device1000may also include the modules described below with reference to the wireless communication device1100.

The communication module1102includes a reception sub-module configured to receive wireless packets obtained by multiple coupled antennas and a radio over a wireless medium. For example, the communication module1102may be configured to receive SU and MU beamformed transmissions from a second wireless communication device. The channel estimation module1104is configured to generate a channel estimate matrix H based on a transmission received by the communication module1102. The channel estimation module1104is further configured to partition the channel estimate matrix H into a first channel estimate matrix H1and a second channel estimate matrix H2. For example, the channel estimation module1104may partition the channel estimate matrix into a first set of NSS1rows and a second set of NSS2rows, where the first set of NSS1rows defines the first channel estimate matrix H1, where the second set of NSS2rows defines the second channel estimate matrix H2, and where NSS1+NSS2=NSS.

The spatial stream processing module1106is configured to partition the spatial streams into a first set of NSS1spatial streams and a second set of NSS2spatial streams. The design of the steering matrix used to precode the spatial streams enables the subsequent decoding of the first set of NSS1spatial streams to be decoupled from the decoding of the second set of NSS2spatial streams. The decoding module1108is configured to decode the partitioned spatial streams. For example, the decoding module1108may perform a first ML equalization operation on the first set of NSS1spatial streams based on the first channel estimate matrix H1(obtained by the channel estimation module1104) and the first feedback matrix Z1(obtained by the feedback module1008) to generate a first sequence of complex numbers. Similarly, the decoding module1108may perform a second ML equalization operation on the second set of NSS2spatial streams based on the second channel estimate matrix H2(obtained by the channel estimation module1104) and the second feedback matrix Z2(obtained by the feedback module1008) to generate a second sequence of complex numbers.

The decoding module1108may further be configured to determine a first set of LLR values based on the first sequence of complex numbers, for example, on a per bit position, per subcarrier, per stream basis. Similarly, the decoding module1108may be further configured to determine a second set of LLR values based on the second sequence of complex numbers on a per bit position, per subcarrier, per stream basis. The decoding module1108may then decode information bits for the first set of NSS1spatial streams based on the first set of LLR values, and decode information bits for the second set of NSS2spatial streams based on the second set of LLR values. In some implementations, the decoding module1108is further configured to spatially demultiplex (combine) the decoded information bits from all NSSspatial streams, descramble the combined bits, and provide the descrambled bits to a MAC layer for further processing, evaluation or interpretation.

FIG. 12shows a block diagram of an example wireless communication device1200for use in wireless communication according to some implementations. In some implementations, the wireless communication device1200is configured to generate a beamformed transmission for a second wireless communication device. For example, the wireless communication device1200may be configured as a beamformer and the second wireless communication device may be configured as a beamformee. In some implementations, the wireless communication device1200is configured to perform the process900described above with reference toFIG. 9. In some implementations, the wireless communication device1200can be an example implementation of the wireless communication device300described above with reference toFIG. 3. In some such implementations, the wireless communication device1200can be a device for use in an AP, such as one of the APs102and402described above with reference toFIGS. 1 and 4, respectively. For example, the wireless communication device1200can be a chip, SoC, chipset, package or device that includes at least one processor and at least one modem (for example, a Wi-Fi (IEEE 802.11) modem or a cellular modem). In other instances, the wireless communication device1200can be an AP that includes such a chip, SoC, chipset, package or device, as well as at least one transmitter, at least one receiver, and at least one antenna.

The wireless communication device1200includes a communication module1202, a spatial processing module1204, a precoding module1206and a packet generation module1208. Portions of one or more of the modules1202,1204and1206may be implemented at least in part in hardware or firmware. For example, portions of one or more of the modules1202,1204and1206may be implemented at least in part by one or more modems (such as the modem302). In some implementations, at least some of the modules1202,1204,1206and1208are implemented at least in part as software stored in a memory (such as the memory308). For example, portions of one or more of the modules1202,1204,1206and1208can be implemented as non-transitory instructions (or “code”) executable by at least one processor (such as the processor306) to perform the functions or operations of the respective module.

The communication module1202includes a transmission sub-module configured to output wireless packets for transmission by a coupled radio and multiple antennas over the wireless medium. For example, the communication module1102can output sounding signals for transmission to the second wireless communication device via NTxcoupled antennas. In some implementations, each sounding signal is generated and transmitted as an NDP. Each sounding signal generally includes multiple LTFs where the number of LTFs is based on NTx.

The communication module1202is further configured to output precoded streams received from the precoding module1206for transmission to the second wireless communication device. For example, the communication module1202is configured to output both a first and a second set of precoded streams for transmission to the second wireless communication device. To output the first and the second sets of precoded streams, the communication module1202may be configured to first multiplex the first and the second sets of precoded streams to generate a multiplexed stream, transform the modulated symbols in the multiplexed stream via an IFFT, and apply various digital signal processing, digital-to-analog conversion, and frequency upconversion. The communication module1202may then provide the resultant analog signals to a radio, which may then amplify, otherwise process, and output the analog signals for transmission to the second wireless communication device via, for example, NTxcoupled antennas.

The communication module1202also includes a reception sub-module configured to receive wireless packets obtained by multiple coupled antennas and a radio over a wireless medium. For example, the communication module1202may be configured to receive channel feedback information based on a transmitted sounding signal. In some implementations, the channel feedback information includes compressed feedback in the form of, for example, quantized angles obtained through a Givens rotation operation. In some implementations, the channel feedback information is received in a feedback packet that includes an HE Compressed Beamforming/CQI frame, which includes a CBF report field that includes the quantized angles. In some implementations, the HE Compressed Beamforming/CQI frame further comprises an average SNR for each spatial stream In some implementations, the channel feedback information additionally includes at least one of an indication of the number NSS1of spatial streams to be used to generate the first set of precoded streams or an indication of the number NSS2of spatial streams to be used to generate the second set of precoded streams, for example, so that the spatial processing module1204is aware of how the second wireless communication device partitioned the channel estimate to obtain the compressed feedback. In some such implementations, the indication of NSS1or NSS2may be included within a MIMO control field of the feedback packet. For example, the MIMO control field can include one of multiple possible bit sequences selected by the second wireless communication device as described above with reference to Tables (1) and (2).

The packet generation module1208is configured generate PPDUs including data to be transmitted to other wireless communication devices including the second wireless communication device. For example, the packet generation module1208may generate an A-MPDU that includes data for the second wireless communication device, and encapsulate the A-MPDU in a PPDU for transmission to the second wireless communication device. The spatial processing module1204is configured to partition PPDUs generated by the packet generation module into a number NSSof spatial streams. For example, the spatial processing module1204may partition the PPDU for the second wireless communication device into a first set of NSS1spatial streams and a second set of NSS2, spatial streams.

The precoding module1206is configured to determine a first precoding matrix Z1for the first set of NSS1spatial streams and a second precoding matrix Z2for the second set of NSS2, spatial streams based on the channel feedback information. For example, the precoding module1206may be configured to decompress the compressed feedback received by the communication module1202to generate a steering matrix Z. The precoding module1206may then partition the steering matrix Z to determine first and second precoding matrices Z1and Z2, respectively. The design of the steering matrix Z enables the first wireless communication device to precode the first and the second sets of spatial streams separately such that the decoding of the first set of NSS1spatial streams may be decoupled from the decoding of the second set of NSS2spatial streams at the second wireless communication device. The precoding module1206applies the first precoding matrix Z1to the first set of NSS1spatial streams to precode the associated symbols to generate a first set of precoded streams. Similarly, the precoding module1206applies the second precoding matrix Z2to the second set of NSS2, spatial streams to precode the associated symbols to generate a second set of precoded streams.

As used herein, a phrase referring to “at least one of” or “one or more of” a list of items refers to any combination of those items, including single members. For example, “at least one of: a, b, or c” is intended to cover the possibilities of: a only, b only, c only, a combination of a and b, a combination of a and c, a combination of b and c, and a combination of a and b and c.

As described above, in some aspects implementations of the subject matter described in this specification can be implemented as software. For example, various functions of components disclosed herein or various blocks or steps of a method, operation, process or algorithm disclosed herein can be implemented as one or more modules of one or more computer programs. Such computer programs can include non-transitory processor- or computer-executable instructions encoded on one or more tangible processor- or computer-readable storage media for execution by, or to control the operation of, data processing apparatus including the components of the devices described herein. By way of example, and not limitation, such storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store program code in the form of instructions or data structures. Combinations of the above should also be included within the scope of storage media.