interpretHESIGABits
Interpret HE-SIG-A field bits and update HE transmission parameters
Syntax
Description
updates high-efficiency (HE) transmission parameters cfgUpdated
= interpretHESIGABits(cfg
,bits
)cfg
by
interpreting recovered HE-SIG-A field bits. The function populates the properties of
cfg
that are relevant to the HE-SIG-A field and returns updated HE
transmission parameters cfgUpdated
. If you use this syntax and the
function cannot interpret the recovered HE-SIG-A field bits, the function does not return an
output and issues an error message.
[
returns the result of HE-SIG-A field interpretation. If you use this syntax and the function
cannot interpret the recovered HE-SIG-A field bits, the function returns the
cfgUpdated
,failInterpretation
] = interpretHESIGABits(cfg
,bits
)failInterpretation
output as 1
and
cfgUpdated
as the cfg
input without updating any
property values.
Examples
Recover HE-Data Field from HE SU Transmission
Configure an HE SU transmission by creating a configuration object with the specified modulation and coding scheme (MCS). Extract the channel bandwidth.
cfgHESU = wlanHESUConfig('MCS',0);
cbw = cfgHESU.ChannelBandwidth;
Create a sequence of data bits and generate an HE SU waveform.
bits = randi([0 1],8*getPSDULength(cfgHESU),1,'int8');
waveform = wlanWaveformGenerator(bits,cfgHESU);
Create a WLAN recovery configuration object, specifying the known channel bandwidth and packet format.
cfgRX = wlanHERecoveryConfig('ChannelBandwidth',cbw,'PacketFormat','HE-SU');
Recover the HE signaling fields by retrieving the field indices and performing the relevant demodulation operations.
ind = wlanFieldIndices(cfgRX); heLSIGandRLSIG = waveform(ind.LSIG(1):ind.RLSIG(2),:); symLSIG = wlanHEDemodulate(heLSIGandRLSIG,'L-SIG',cbw); info = wlanHEOFDMInfo('L-SIG',cbw);
Merge the L-SIG and RL-SIG fields for diversity and obtain the data subcarriers.
symLSIG = mean(symLSIG,2); lsig = symLSIG(info.DataIndices,:);
Decode the L-SIG field, assuming a noiseless channel, and use the length field to update the recovery object.
noiseVarEst = 0; [~,~,lsigInfo] = wlanLSIGBitRecover(lsig,noiseVarEst); cfgRX.LSIGLength = lsigInfo.Length;
Recover and demodulate the HE-SIG-A field, obtain the data subcarriers, and recover the HE-SIG-A bits.
heSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);
symSIGA = wlanHEDemodulate(heSIGA,'HE-SIG-A',cbw);
siga = symSIGA(info.DataIndices,:);
[sigaBits,failCRC] = wlanHESIGABitRecover(siga,0);
Update the recovery configuration object with the recovered HE-SIG-A bits and obtain the updated field indices.
cfgHE = interpretHESIGABits(cfgRX,sigaBits); ind = wlanFieldIndices(cfgHE);
Retrieve and decode the HE-Data field.
heData = waveform(ind.HEData(1):ind.HEData(2),:); symData = wlanHEDemodulate(heData,'HE-Data', ... cbw,cfgHE.GuardInterval,[cfgHE.RUSize cfgHE.RUIndex]); infoData = wlanHEOFDMInfo('HE-Data',cbw,cfgHE.GuardInterval,[cfgHE.RUSize cfgHE.RUIndex]); rxDataSym = symData(infoData.DataIndices,:,:); dataBits = wlanHEDataBitRecover(rxDataSym,noiseVarEst,cfgHE);
Confirm that the recovered bits match the transmitted bits.
isequal(bits,dataBits)
ans = logical
1
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 transmission parameters before interpretation of HE-SIG-A field bits
wlanHERecoveryConfig
object
HE transmission parameters before interpretation of HE-SIG-A field bits, specified
as a wlanHERecoveryConfig
object.
bits
— Recovered HE-SIG-A field bits
binary-valued column vector
Recovered HE-SIG-A field bits, specified as a binary-valued column vector of length 52.
Data Types: double
| int8
Output Arguments
cfgUpdated
— Updated HE transmission parameters
wlanHERecoveryConfig
object
Updated HE transmission parameters, returned as a wlanHERecoveryConfig
object. The function updates the properties of this object in accordance with the
recovered HE-SIG-A field bits.
For information about the contents of the HE-SIG-A field, see [2].
failInterpretation
— Result of HE-SIG-A field interpretation
0
| 1
Result of HE-SIG-A field interpretation, returned as a logical 0
or 1
. A value of 1
indicates that the function
cannot interpret the recovered HE-SIG-A field bits. A value of 0
indicates that the function successfully interprets the HE-SIG-A field bits.
Data Types: logical
References
[1] IEEE Std 802.11™-2020 (Revision of IEEE Std 802.11-2016). “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.” IEEE Standard for Information Technology — Telecommunications and Information Exchange between Systems — Local and Metropolitan Area Networks — Specific Requirements.
[2] 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 R2019a
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)