interpretHESIGBUserBits
Interpret HE-SIG-B user field bits and update HE transmission parameters
Since R2020b
Syntax
Description
updates high-efficiency multi-user (HE MU) transmission parameters user
= interpretHESIGBUserBits(cfg
,bits
,failCRC
)cfg
by interpreting recovered HE-SIG-B user field bits. The function populates the properties of
cfg
that are relevant to the HE-SIG-B user field and returns updated
HE MU transmission parameters user
, a cell array of
wlanHERecoveryConfig
objects. If you use this syntax and the function
cannot interpret the recovered HE-SIG-B user field bits, the function does not return an
output and issues an error message.
[
returns the result of HE-SIG-B user field interpretation. If you use this syntax and the
function cannot interpret the recovered HE-SIG-B user field bits for the
kth user, the function returns the kth element of
the user
,failInterpretation
] = interpretHESIGBUserBits(cfg
,bits
,failCRC
)failInterpretation
output as 1
and does not
return the kth element of the user
output.
Examples
Update HE MU Recovery Configuration Object
Update a WLAN HE recovery configuration object by interpreting recovered HE-SIG-A and HE-SIG-B information bits.
Generate HE MU Waveform
Create a WLAN HE MU configuration object, setting the allocation index to 0
.
cfgHEMU = wlanHEMUConfig(0);
Generate a WLAN waveform and PPDU field indices for the specified configuration.
waveform = wlanWaveformGenerator(1,cfgHEMU); ind = wlanFieldIndices(cfgHEMU);
Recover L-SIG Bits
Create a WLAN recovery configuration object, specifying an HE MU packet format and the length of the L-SIG field.
cfg = wlanHERecoveryConfig('PacketFormat','HE-MU','ChannelBandwidth','CBW20');
Decode the L-SIG field and obtain the orthogonal frequency-division multiplexing (OFDM) information. The recovery configuration object requires this information to obtain the L-SIG length.
lsig = waveform(ind.LSIG(1):ind.LSIG(2)); lsigDemod = wlanHEDemodulate(lsig,'L-SIG',cfg.ChannelBandwidth); info = wlanHEOFDMInfo('L-SIG',cfg.ChannelBandwidth); lsigDemod = lsigDemod(info.DataIndices,:);
Recover the L-SIG bits and related information, making sure that the bits pass the parity check, and update the recovery configuration object with the L-SIG length. For this example we assume a noiseless channel. For more realistic results you can pass the waveform through an 802.11ax™ channel model by using the wlanTGaxChannel
System object™ and work with the received waveform.
csi = ones(52,1); [lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigDemod,0,csi); cfg.LSIGLength = lsigInfo.Length;
Update Recovery Configuration Object with HE-SIG-A Bits
Decode the HE-SIG-A field and recover the HE-SIG-A bits, ensuring that the bits pass the cyclic redundancy check (CRC).
siga = waveform(ind.HESIGA(1):ind.HESIGA(2));
sigaDemod = wlanHEDemodulate(siga,'HE-SIG-A',cfg.ChannelBandwidth);
sigaDemod = sigaDemod(info.DataIndices,:);
[sigaBits,failCRC] = wlanHESIGABitRecover(sigaDemod,0,csi);
disp(failCRC)
0
Update the recovery configuration object with the recovered HE-SIG-A bits. Display the updated object. A property value of -1
or 'Unknown'
indicates an unknown or undefined property, which can be updated after decoding the HE-SIG-B common and user fields of the HE MU packet.
[cfg,failInterpretation] = interpretHESIGABits(cfg,sigaBits)
cfg = wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: -1 NumUsersPerContentChannel: -1 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 STAID: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1
failInterpretation = logical
0
Update Recovery Configuration Object with HE-SIG-B Common Field Bits
Decode the HE-SIG-B common field, ensuring that all content channels pass the CRC.
len = getSIGBLength(cfg);
sigbCommon = waveform(double(ind.HESIGA(2))+(1:len.NumSIGBCommonFieldSamples),:);
sigbCommonDemod = wlanHEDemodulate(sigbCommon,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbCommonDemod = sigbCommonDemod(info.DataIndices);
[sigbCommonBits,status,~] = wlanHESIGBCommonBitRecover(sigbCommonDemod,0,csi,cfg);
disp(status)
Success
Update the recovery configuration object with the recovered HE-SIG-B common field bits and display the updated object. A field returned as -1
or 'Unknown'
indicates an unknown or undefined property value, which can be updated after decoding the HE-SIG-B user field of the HE MU packet.
[cfg,failInterpretation] = interpretHESIGBCommonBits(cfg,sigbCommonBits,status)
cfg = wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: 0 NumUsersPerContentChannel: 9 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 STAID: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1
failInterpretation = logical
0
Update Recovery Configuration Object with HE-SIG-B User Field Bits
Decode the HE-SIG-B user field, ensuring that all users pass the CRC.
sigbUser = waveform(ind.HESIGB(1):ind.HESIGB(2));
sigbUserDemod = wlanHEDemodulate(sigbUser,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbUserDemod = sigbUserDemod(info.DataIndices,:);
[sigbUserBits,failCRC,~] = wlanHESIGBUserBitRecover(sigbUserDemod,0,csi,cfg);
disp(failCRC)
0 0 0 0 0 0 0 0 0
Update the recovery configuration object with the recovered HE-SIG-B user field bits.
[user,failInterpretation] = interpretHESIGBUserBits(cfg,sigbUserBits,failCRC);
Display the results of interpretation and the third element of the user
output.
disp(failInterpretation)
0 0 0 0 0 0 0 0 0
disp(user{3})
wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: 0 NumUsersPerContentChannel: 9 RUTotalSpaceTimeStreams: 1 RUSize: 26 RUIndex: 3 STAID: 0 MCS: 0 DCM: 0 ChannelCoding: 'LDPC' Beamforming: 0 NumSpaceTimeStreams: 1 SpaceTimeStreamStartingIndex: 1
Input Arguments
cfg
— HE MU transmission parameters before interpretation of HE-SIG-B user bits
wlanHERecoveryConfig
object
HE MU transmission parameters before interpretation of HE-SIG-A bits, specified as a
wlanHERecoveryConfig
object.
bits
— Recovered HE-SIG-B user field bits
binary-valued matrix
Recovered HE-SIG-B user field bits, specified as a binary-valued matrix of size 21-by-Nusers, where Nusers is the number of users in the transmission.
Data Types: double
| int8
failCRC
— CRC result for each user
logical-valued row vector
CRC result for each user, specified as a logical-valued row vector of length
Nusers, where
Nusers is the number of users in the
transmission. Each element of this argument represents the result of the CRC for the
corresponding user. A value of 1
in the kth entry
indicates that the Kth user's bits failed the CRC. A value of
0
in the kth entry indicates that the
kth user's bits passed the CRC.
Data Types: logical
Output Arguments
user
— Updated HE MU transmission parameters
cell array of wlanHERecoveryConfig
objects
Updated HE MU transmission parameters, returned as a cell array of wlanHERecoveryConfig
objects. The function updates the properties of each object in accordance with the
recovered HE-SIG-B user field bits. For information on the contents of the HE-SIG-B
field, see [1].
Data Types: cell
failInterpretation
— Result of HE-SIG-B user field interpretation
logical-valued row vector
Result of HE-SIG-B user field interpretation, returned as a logical-valued row
vector of length Nusers, where
Nusers is the number of users in the
transmission. A value of 1
in the kth entry
indicates that the function cannot interpret the recovered HE-SIG-B user field bits for
user k. A value of 0
in the kth
entry indicates that the function can successfully interpret the HE-SIG-B user field
bits for user k.
Data Types: logical
References
[1] IEEE® Std 802.11ax™-2021 (Amendment to IEEE Std 802.11™-2020). “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 1: Enhancements for High Efficiency WLAN.” IEEE Standard for Information Technology — Telecommunications and Information Exchange between Systems. Local and Metropolitan Area Networks — Specific Requirements.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2020b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)