interpretEHTSIGUserBits
Interpret EHT-SIG user field bits and update EHT MU transmission parameters
Since R2023b
Syntax
Description
updates extremely high-throughput (EHT) transmission parameters cfgUpdated
= interpretEHTSIGUserBits(cfg
,bits
,failCRC
)cfg
by interpreting recovered EHT-SIG user field bits. The function sets the properties of
cfg
that are encoded in the EHT-SIG user field and returns
updated transmission parameters cfgUpdated
. If you use this syntax
and the function cannot interpret the recovered EHT-SIG user field bits, the function
does not return an output and issues an error message.
[
returns the result of EHT-SIG user field interpretation. If you use this syntax and the
function cannot interpret the recovered EHT-SIG user field bits, the function returns
the cfgUpdated
,failInterpretation
] = interpretEHTSIGUserBits(cfg
,bits
,failCRC
)failInterpretation
output as 1
and
cfgUpdated
as the cfg
without updating any
property values.
Examples
Recover EHT-Data Field from EHT SU Transmission
Generate EHT SU Waveform
Create a single-user EHT configuration object with a channel bandwidth of 320 MHz.
chanBW = "CBW320";
cfgEHTSU = wlanEHTMUConfig(chanBW);
Create an EHT recovery object with the same channel bandwidth.
cfg = wlanEHTRecoveryConfig(ChannelBandwidth=chanBW);
Create a sequence of data bits. Use the bits to generate a time-domain waveform for the specified configuration. Pass the waveform through an AWGN channel with a signal-to-noise ratio of 10 dB. Return the PPDU field indices.
bits = randi([0 1],8*psduLength(cfgEHTSU),1); tx = wlanWaveformGenerator(bits,cfgEHTSU); rx = awgn(tx,10); ind = wlanFieldIndices(cfg);
Recover L-SIG Bits
Demodulate the L-LTF and estimate the channel. Using the demodulated symbols, estimate the noise power.
lltf = rx(ind.LLTF(1):ind.LLTF(2),:);
lltfDemod = wlanEHTDemodulate(lltf,"L-LTF",cfg);
lltfChanEst = wlanLLTFChannelEstimate(lltfDemod,chanBW);
nVar = wlanLLTFNoiseEstimate(lltfDemod);
Decode the L-SIG field and obtain the OFDM information. The recovery configuration object requires this information to obtain the L-SIG length.
lsig = rx(ind.LSIG(1):ind.LSIG(2)); lsigDemod = wlanEHTDemodulate(lsig,"L-SIG",cfg); info = wlanEHTOFDMInfo("L-SIG",cfg); lsigDemodData = lsigDemod(info.DataIndices,:);
Estimate the channel at the L-SIG field and equalize the L-SIG symbols.
preEHTChanEst = wlanPreEHTChannelEstimate(lsigDemod,lltfChanEst,chanBW);
lsigEq = wlanEHTEqualize(lsigDemodData,preEHTChanEst(info.DataIndices,:),nVar,cfg,"L-SIG");
Recover the L-SIG bits and set the L-SIG length of the recovery object.
[lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigEq,0); cfg.LSIGLength = lsigInfo.Length;
Update Recovery Configuration Object with U-SIG Bits
Demodulate the U-SIG field.
usig = rx(ind.USIG(1):ind.USIG(2),:);
usigDemod = wlanEHTDemodulate(usig,"U-SIG",cfg);
Get the OFDM information that corresponds to the U-SIG field. Use this information to isolate the data subcarriers.
preEHTInfo = wlanEHTOFDMInfo("U-SIG",cfg);
usigDataSym = usigDemod(preEHTInfo.DataIndices,:);
Equalize the U-SIG data symbols.
x = wlanEHTEqualize(usigDataSym,preEHTChanEst(preEHTInfo.DataIndices,:),nVar,cfg,"U-SIG");
Recover the U-SIG bits, ensuring that the bits pass the cyclic redundancy check (CRC).
[usigBits,failCRC] = wlanUSIGBitRecover(x,nVar); disp(failCRC)
0 0 0 0
Update the recovery configuration object with the U-SIG bits. Display the updated object. A property value of -1
or unknown
indicates an unknown or undefined property, which you can update after decoding the EHT-SIG common and user fields of the EHT SU packet.
[cfg,failInterpretation] = interpretUSIGBits(cfg,usigBits,failCRC) % This syntax does not cause an error if interpretation fails
cfg = wlanEHTRecoveryConfig with properties: ChannelBandwidth: 'CBW320' LSIGLength: 39 CompressionMode: 1 EHTSIGMCS: 0 NumEHTSIGSymbolsSignaled: 2 LDPCExtraSymbol: -1 PreFECPaddingFactor: -1 PEDisambiguity: -1 GuardInterval: -1 EHTLTFType: -1 NumEHTLTFSymbols: -1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: -1 TXOPDuration: -1 NumNonOFDMAUsers: -1 NumUsersPerContentChannel: -1 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 PuncturedChannelFieldValue: 0 STAID: -1 MCS: -1 ChannelCoding: unknown Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1 Channelization: 1 Read-only properties: PPDUType: su EHTDUPMode: 0
failInterpretation = logical
0
Update Recovery Configuration Object with EHT-SIG Common Field Bits
Update the field indices with the new information from the U-SIG bits.
ind = wlanFieldIndices(cfg);
Demodulate the EHT-SIG field. Get the corresponding OFDM information.
ehtSig = rx(ind.EHTSIG(1):ind.EHTSIG(2),:); ehtsigDemod = wlanEHTDemodulate(ehtSig,"EHT-SIG",cfg); preEHTInfo = wlanEHTOFDMInfo("EHT-SIG",cfg);
Equalize the EHT-SIG data symbols.
x = wlanEHTEqualize(ehtsigDemod(preEHTInfo.DataIndices,:),preEHTChanEst(preEHTInfo.DataIndices,:), ... nVar,cfg,"EHT-SIG");
Recover and interpret the EHT-SIG common field bits.
[ehtsigCommonBits,failCRC,cfg] = wlanEHTSIGCommonBitRecover(x,nVar,cfg); % This syntax causes an error if interpretation fails
Update Recovery Configuration Object with EHT-SIG User Field Bits
Recover and interpret the EHT-SIG user field bits. Display the updated recovery configuration object.
[ehtsigUserBits,failCRC] = wlanEHTSIGUserBitRecover(x,nVar,cfg);
cfg = interpretEHTSIGUserBits(cfg,ehtsigUserBits,failCRC); % This syntax causes an error if interpretation fails
cfg = cfg{1};
disp(cfg)
wlanEHTRecoveryConfig with properties: ChannelBandwidth: 'CBW320' LSIGLength: 39 CompressionMode: 1 EHTSIGMCS: 0 NumEHTSIGSymbolsSignaled: 2 LDPCExtraSymbol: 1 PreFECPaddingFactor: 3 PEDisambiguity: 0 GuardInterval: 3.2000 EHTLTFType: 4 NumEHTLTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: -1 NumNonOFDMAUsers: 1 NumUsersPerContentChannel: 1 RUTotalSpaceTimeStreams: 1 RUSize: 3984 RUIndex: 1 PuncturedChannelFieldValue: 0 STAID: 0 MCS: 0 ChannelCoding: ldpc Beamforming: 0 NumSpaceTimeStreams: 1 SpaceTimeStreamStartingIndex: 1 Channelization: 1 Read-only properties: PPDUType: su EHTDUPMode: 0
Recover EHT-Data Field
Update the field indices with the new information from the EHT-SIG bits.
ind = wlanFieldIndices(cfg);
Demodulate the EHT-Data field and recover the bits. Verify that the recovered bits match the transmitted bits.
ehtData = rx(ind.EHTData(1):ind.EHTData(2),:); ehtdataDemod = wlanEHTDemodulate(ehtData,"EHT-Data",cfg); infoData = wlanEHTOFDMInfo("EHT-Data",cfg); rxDataSym = ehtdataDemod(infoData.DataIndices,:,:); dataBits = wlanEHTDataBitRecover(rxDataSym,nVar,cfg); isequal(bits,dataBits)
ans = logical
1
Input Arguments
cfg
— EHT transmission parameters before interpretation of EHT-SIG user field bits
wlanEHTRecoveryConfig
object
EHT transmission parameters before interpretation of the EHT-SIG user field
bits, specified as a wlanEHTRecoveryConfig
object.
bits
— Recovered EHT-SIG user field bits
binary-valued matrix
Recovered EHT-SIG user field bits, specified as a binary-valued matrix. The size of the matrix is 22-by-NumUsers, where NumUsers is the total number of users in the transmission.
Data Types: double
| int8
failCRC
— CRC result for EHT-SIG field
logical-valued row vector
Cyclic redundancy check (CRC) result for the EHT-SIG field, specified as a
logical-valued row vector. The length of the row vector is
NumUsers. A value of 1
in the
kth position indicates that the kth user
bits failed the CRC.
Data Types: logical
Output Arguments
cfgUpdated
— Updated EHT transmission parameters
cell array of wlanEHTRecoveryConfig
objects
Updated EHT transmission parameters, returned as a cell array of wlanEHTRecoveryConfig
objects. There is one object for each user. The
function updates the properties of these objects in accordance with the recovered
EHT-SIG user field bits.
The function updates different properties of the recovery object depending on the PPDU type. If the PPDU type is MU-MIMO, the function updates these properties:
Otherwise, the function updates these properties:
failInterpretation
— Result of EHT-SIG user field interpretation
0
| 1
Result of EHT-SIG user field interpretation, returned as a logical
0
or 1
. A value of 1
indicates that the function cannot interpret the recovered EHT-SIG user field
bits. A value of 0
indicates that the function has successfully
interpreted the EHT-SIG user field bits.
Data Types: logical
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2023bR2024b: Generate C/C++ code for 802.11be blind recovery
When you use the interpretEHTSIGUserBits
function for 802.11be™ blind recovery, you can now generate C and C++ code using MATLAB®
Coder™.
R2024a: OFDMA support
You can now blindly recover the transmission parameters of OFDMA configurations.
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)