main content

physical layer abstraction for system-凯发k8网页登录

this example demonstrates ieee® 802.11ax™ physical layer abstraction for system-level simulation. a link quality model and link performance model based on the tgax evaluation methodology are presented and validated by comparing with published results.

introduction

modeling the full physical layer processing at each transmitter and receiver when simulating large networks is computationally expensive. physical layer abstraction, or link-to-system mapping is a method to run simulations in a timely manner by accurately predicting the performance of a link in a computationally efficient way.

this example demonstrates physical layer abstraction for the data portion of an 802.11ax [ 1 ] packet based on the tgax evaluation methodology [ 2 ].

there are two parts to the physical layer abstraction model [ 3, 4 ]:

  • the link quality model calculates the post-equalizer signal to interference and noise ratio (sinr) per subcarrier. for a receiver, this is based on the location and transmission characteristics of the transmitter of interest, and interfering transmissions, and the impact of large- and small-scale fading.

  • the link performance model predicts the instantaneous packet error rate (per), and therefore transmission success of an individual packet, given the sinr per subcarrier and coding parameters used for the transmission.

the example is split into two parts:

  • part a demonstrates the link quality model used to obtain the sinr per subcarrier and validates it by comparing the results for a residential scenario as per the box 2 tests in the tgax evaluation methodology. the objective of box 2 tests is to align the distribution of small and large scale fading channels with mimo configurations of tgax contributors.

  • part b demonstrates the link performance model used to estimate the per, and compares the result of using the abstraction against a link-level simulation with a fading tgax channel model as per the box 0 tests in the tgax evaluation methodology. the objective of box 0 tests is to align phy abstractions of tgax contributors.

part a - link quality model

the link quality model implements the box 2 sinr equation from the tgax evaluation methodology. the multiple-input-multiple-output (mimo) sinr per subcarrier (index m) and spatial stream (index j) between the transmitter and receiver of interest is given by

sinrrxtxm,j=srxtxm,jisrxtxm,j iorxtxm,j nm,j.

the sinr takes into account the path-loss and fading channels between all transmitters and the receiver, and precoding applied at the transmitters. the power of the signal of interest is given by

srxtxm,j=prxtxtrxmjhhrxtxmwtxmj2,

where prxtx is the received power of the signal of interest,trx is the linear receiver filter, hrxtxis the channel matrix between the transmitter and receiver of interest, and wtx is the precoding matrix applied at the transmitter.

the power of intra-user interference is given by

isrxtxm,j=prxtxtrxmjhhrxtxmwtxm2-srxtxm,j.

the power of inter-user interference is given by

iorxtxm,j=kiω(k)prxtx[trx(m)]jhhrxtximwtxim2,

where ω(k) is the set of interfering transmitters in the kth basic service set (bss)

the noise power is given by

nm,j=trxmj2n0,

where n0 is the noise power spectral density.

generate a channel matrix per subcarrier

the link quality model requires a channel matrix per subcarrier. calculate the channel matrix from the path gains returned from the fading channel model wlantgaxchannel by using the helperperfectchannelestimate() helper function. efficiently generate path gains by setting the channelfiltering property of wlantgaxchannel to false.

sprev = rng('default'); % seed random number generator and store previous state
% get an he ofdm configuration: 80 mhz channel bandwidth, 3.2 us guard
% interval
ofdminfo = wlanheofdminfo('he-data','cbw80',3.2);
k = ofdminfo.activefrequencyindices;
% configure channel to return path gains for one ofdm symbol
tgax = wlantgaxchannel;
tgax.channelbandwidth = 'cbw80';
tgax.samplerate = 80e6; % mhz
tgax.channelfiltering = false;
tgax.numsamples = ofdminfo.fftlength ofdminfo.cplength;
% generate channel matrix per subcarrier for signal of interest
pathgains = tgax();    % get path gains
chaninfo = info(tgax); % get channel info for filter coefficients
chanfilter = chaninfo.channelfiltercoefficients;
hsoi = helperperfectchannelestimate(pathgains,chanfilter, ...
    ofdminfo.fftlength,ofdminfo.cplength,ofdminfo.activefftindices);
% generate channel matrix per subcarrier for interfering signal
reset(tgax); % get a new channel realization
pathgains = tgax();  
hint = helperperfectchannelestimate(pathgains,chanfilter, ...
    ofdminfo.fftlength,ofdminfo.cplength,ofdminfo.activefftindices);

sinr calculation

calculate and visualize the post-equalizer sinr per subcarrier with the calculatesinr and plotsinr helper functions.

psoi = -20; % signal of interest received power (dbm)
pint = -45; % interfering signal received power (dbm)
n0 = -85;   % noise power (dbm)
w = ones(ofdminfo.numtones,1); % precoding matrix (assume no precoding)
sinr = calculatesinr(hsoi,db2pow(psoi-30),w,db2pow(n0-30),{hint},db2pow(pint-30),{w});
plotsinr(sinr,hsoi,psoi,hint,pint,n0,k);

figure contains 2 axes objects. axes object 1 with title per-subcarrier receive power, xlabel subcarrier, ylabel dbm contains 3 objects of type line. these objects represent signal of interest, interferer, noise floor. axes object 2 with title post-equalizer sinr, xlabel subcarrier, ylabel db contains an object of type line.

tgax evaluation methodology box 2 - verify sinr calibration

this section validates the sinr calculation by comparing the cumulative density function (cdf) of per-subcarrier sinrs with calibration results provided by the tgax working group. we compare the sinr calculation with results published by tgax [ 5 ] for box 2, test 3: "downlink transmission per basic channel access rule" for the residential scenario.

for more information about the scenario, and for the results of long-term sinr calibration see the 802.11ax phy-focused system-level simulation example.

the major simulation parameters are defined as either belonging to physical layer (phy), medium access control layer (mac), scenario, or simulation. in this example the phy and mac parameters are assumed to be the same for all nodes.

sinrcalibration = true; % disable box 2 calibration
if sinrcalibration
phyparams = struct;
phyparams.txpower = 20;      % transmitter power in dbm
phyparams.txgain = 0;        % transmitter antenna gain in dbi
phyparams.rxgain = -2;       % receiver antenna gain in dbi
phyparams.noisefigure = 7;   % receiver noise figure in db
phyparams.numtxantennas = 1; % number of transmitter antennas
phyparams.numsts = 1;        % number of space-time streams
phyparams.numrxantennas = 1; % number of receiver antennas
phyparams.channelbandwidth = 'cbw80'; % bandwidth of system
phyparams.transmitterfrequency = 5e9; % transmitter frequency in hz
macparams = struct;
macparams.numchannels = 3; % number of non-overlapping channels
macparams.ccalevel = -70;  % transmission threshold in clear channel assessment algorithm (dbm)

the scenario parameters define the size and layout of the residential building as per [ 6 ]. note only one receiver (sta) can be active at any given time.

scenarioparams = struct;
scenarioparams.buildinglayout = [10 2 5]; % number of rooms in [x,y,z] directions
scenarioparams.roomsize = [10 10 3];      % size of each room in metres [x,y,z]
scenarioparams.numrxperroom = 1;          % number of receivers per room.

the numdrops and numtxeventsperdrop parameters control the length of the simulation. in this example, these parameters are configured for a short simulation. a 'drop' randomly places transmitters and receivers within the scenario and selects the channel for a bss. a 'transmission' event randomly selects transmitters and receivers for transmissions according to the basic clear channel assessment (cca) rules defined in the evaluation methodology.

simparams = struct;
simparams.test = 3; % downlink transmission per basic channel access rule
simparams.numdrops = 3;
simparams.numtxeventsperdrop = 2;

the function box2simulation runs the simulation by performing these steps:

  1. randomly drop transmitters (aps) and receivers (stas) within the scenario.

  2. calculate the large-scale path loss and generate frequency-selective tgax fading channels for all non-negligible links.

  3. for each transmission event, determine active transmitters and receivers based on cca rules.

  4. calculate and return the sinr per subcarrier and the effective sinr for each active receiver as per box 2, test 3 in the tgax evaluation methodology.

box2results = box2simulation(phyparams,macparams,scenarioparams,simparams);

plot the cdf of the sinr per subcarrier and effective sinr (as defined in box 2, test 3) against submitted calibration results.

tgaxcalibrationcdf(box2results.sinr(:), ...
    ['ss1box2test' num2str(simparams.test) 'a'],'cdf of sinr per subcarrier');
tgaxcalibrationcdf(box2results.sinreff(:), ...
    ['ss1box2test' num2str(simparams.test) 'b'],'cdf of effective sinr per reception');
end
  running drop #1/3 ...
    generating 3518 fading channel realizations ...
    running transmission event #1/2 ...
    running transmission event #2/2 ...
  running drop #2/3 ...
    generating 3366 fading channel realizations ...
    running transmission event #1/2 ...
    running transmission event #2/2 ...
  running drop #3/3 ...
    generating 3750 fading channel realizations ...
    running transmission event #1/2 ...
    running transmission event #2/2 ...

figure contains an axes object. the axes object with title calibration: cdf of sinr per subcarrier, xlabel sinr [db], ylabel cdf contains 11 objects of type line. these objects represent calibrated curves, wlan toolbox.

figure contains an axes object. the axes object with title calibration: cdf of effective sinr per reception, xlabel sinr [db], ylabel cdf contains 12 objects of type line. these objects represent calibrated curves, wlan toolbox.

increase the number of drops for a more accurate comparison.

part b - link performance model

the link performance model predicts the instantaneous per given the sinr per subcarrier calculated in part a and coding parameters used for the transmission.

effective sinr mapping and averaging is used to compress the post-equalizer sinr per subcarrier into a single effective snr. the effective snr is the snr that provides an equivalent per performance with an additive white gaussian noise (awgn) channel as with the fading channel. a pre-computed lookup table, generated with wlan toolbox™, provides the per for an snr under an awgn channel for a given channel coding, modulation scheme, and coding rate. once the per is obtained, a random variable determines whether the packet has been received in error.

the tgax evaluation methodology per estimation procedure is used in this example considering a single interference event.

the effective sinr is calculated using the received bit mutual information rate (rbir) mapping function;

sinreff=αϕ-11nssnscj=1nssm=1nscϕsinr(m,j)β,m,m.

  • ϕ(x,m) is the rbir mapping function, which transforms the sinr of each subcarrier to an “information measure" for the modulation scheme m. the rbir mapping function for bpsk, qpsk, 16qam, 64qam and 256qam is provided in [ 7 ].

  • ϕ-1(x,m) is the inverse rbir mapping function, which transforms an “information measure” back to the snr domain.

  • nss is the number of spatial-streams.

  • nsc is the number of subcarriers.

  • sinr is the post-equalizer sinr of the mth subcarrier and jth spatial-stream.

  • α and β are tuning parameters. the tgax evaluation methodology assumes no tuning therefore in this example we assume these are set to 1.

the per for a reference data length perpl0 is obtained by looking up the appropriate awgn table, lut, given the modulation and coding scheme (mcs), channel coding scheme, and reference data length (pl0)

perpl0=lutsnreff;mcs, coding scheme, pl0,

where the reference data length depends on the channel coding and data length for the transmission pl.

pl0=32 bytes,  bcc and pl<400 bytes1458 bytes,  bcc and pl400 bytes1458 bytes, ldpc.

the final estimated per is then adjusted for the data length:

perpl=1-1-perpl0plpl0.

the described method assumes the sinr is constant for the duration of the packet. the tgax evaluation methodology describes techniques to deal with time-varying interference and estimate the error rate of media access control protocol data units (mpdus) within an aggregate mpdu (a-mpdu).

calculate effective sinr

calculate the effective sinr and the per using the tgaxlinkperformancemodel example helper object.

abstraction = tgaxlinkperformancemodel;

the effectivesinr method calculates the effective sinr given the modulation scheme and post equalizer sinr per subcarrier and spatial stream.

format = 'he_su';
mcs = 6; % mcs 6 is 64-qam
[snreff,rbir_sc,rbir_av] = effectivesinr(abstraction,sinr,format,mcs);

the rbir (information measure) per subcarrier obtained by mapping the sinr per subcarrier, and the average rbir are shown in the first figure subplot. the effective sinr per subcarrier is obtained by inverse mapping the average rbir and is shown in the second subplot.

plotrbir(sinr,snreff,rbir_av,rbir_sc,k);

figure contains 2 axes objects. axes object 1 with title rbir, xlabel subcarrier index, ylabel bits contains 2 objects of type line. these objects represent rbir per subcarrier, average rbir. axes object 2 with title sinr, xlabel subcarrier index, ylabel db contains 2 objects of type line. these objects represent sinr per subcarrier, effective sinr.

estimate packet error rate

given the effective snr, estimate the per by linearly interpolating and extrapolating a pre-computed awgn link-level curve in the logarithmic domain, and adjusting for the data length. the estimateper method returns the final per, per, and the awgn lookup table used, lut .

channelcoding = "ldpc";
datalength = 1458; % bytes
[per,~,~,lut] = estimateper(abstraction,snreff,format,mcs,channelcoding,datalength);
% plot the awgn lookup table and the estimated per
figure;
semilogy(lut(:,1),lut(:,2));
grid on
hold on
plot(snreff,per,'d');
legend('awgn ldpc lookup table','estimated per from effective sinr')
title('packet error rate')
xlabel('snr (db)')
ylabel('per')

figure contains an axes object. the axes object with title packet error rate, xlabel snr (db), ylabel per contains 2 objects of type line. one or more of the lines displays its values using only markers these objects represent awgn ldpc lookup table, estimated per from effective sinr.

tgax evaluation methodology box 0 - verify effective snr vs per performance

to verify the entire physical-layer abstraction method, the per from a link-level simulation is compared with the per estimates using the abstraction. this follows steps 2 and 3 of box 0 testing in the tgax evaluation methodology. an 802.11ax single-user link is modeled with perfect synchronization, channel estimation, and no impairments apart from a fading tgax channel model and awgn. only errors within data portion of a packet are considered.

in this example the snrs to simulate are selected based on the mcs, number of transmit and receive antennas, and channel model for the given phy configuration. the number of space-time streams is assumed to equal the number of transmit antennas. the simulation is configured for a short run; for more meaningful results you should increase the number of packets to simulate.

verifyabstraction = true; % disable box 0 simulation
if verifyabstraction
% simulation parameters
mcs = [4 8]; % vector of mcs to simulate between 0 and 11
numtxrx = [1 1]; % matrix of mimo schemes, each row is [numtx numrx]
chan = "model-d"; % string array of delay profiles to simulate
maxnumerrors = 1e1;  % the maximum number of packet errors at an snr point
maxnumpackets = 1e2; % the maximum number of packets at an snr point
% fixed phy configuration for all simulations
cfghe = wlanhesuconfig;
cfghe.channelbandwidth = 'cbw20'; % channel bandwidth
cfghe.apeplength = 1000;          % payload length in bytes
cfghe.channelcoding = 'ldpc';     % channel coding
% generate a structure array of simulation configurations. each element is
% one snr point to simulate.
simparams = getbox0simparams(chan,numtxrx,mcs,cfghe,maxnumerrors,maxnumpackets);
% simulate each configuration
results = cell(1,numel(simparams));
% parfor isim = 1:numel(simparams) % use 'parfor' to speed up the simulation
for isim = 1:numel(simparams)
    results{isim} = box0simulation(simparams(isim));
end

the suitability of the abstraction is determined by comparing the per calculated by link-level simulation and abstraction. the first figure compares the pers at each snr simulated.

plotpervssnr(simparams,results);

the second figure compares the number of successfully decoded link-level simulation packets with an effective snr against the reference awgn curve. if the abstraction is successful the per should follow the awgn curve.

plotpervseffectivesnr(simparams,results);
end
model-d 1-by-1, mcs 4, snr 11 completed after 14 packets, per:0.78571
model-d 1-by-1, mcs 4, snr 15 completed after 22 packets, per:0.5
model-d 1-by-1, mcs 4, snr 19 completed after 100 packets, per:0.05
model-d 1-by-1, mcs 4, snr 23 completed after 100 packets, per:0.02
model-d 1-by-1, mcs 4, snr 27 completed after 100 packets, per:0
model-d 1-by-1, mcs 8, snr 21.5 completed after 13 packets, per:0.84615
model-d 1-by-1, mcs 8, snr 25.5 completed after 23 packets, per:0.47826
model-d 1-by-1, mcs 8, snr 29.5 completed after 100 packets, per:0.03
model-d 1-by-1, mcs 8, snr 33.5 completed after 100 packets, per:0.02
model-d 1-by-1, mcs 8, snr 37.5 completed after 100 packets, per:0

figure contains an axes object. the axes object with title abstracted vs simulated phy, 1x1, model-d, xlabel snr (db), ylabel per contains 4 objects of type line. these objects represent simulated, mcs 4, abstracted, mcs 4, simulated, mcs 8, abstracted, mcs 8.

figure contains an axes object. the axes object with title simulated link per vs effective snr, 1x1, model-d, xlabel effective snr (db), ylabel per contains 4 objects of type line. one or more of the lines displays its values using only markers these objects represent mcs 4, mcs 8, awgn.

rng(sprev) % restore random state

in this example the tuning parameters α and β are set to 1. these could be tuned to further improve the accuracy of the abstraction if desired. the results when simulating 1000 packet errors or 100000 packets for mcs 0 to 9 for a 1458-byte packet without tuning is shown.

further exploration

to see how the 802.11ax physical layer abstraction described in this example can be used in a system-level simulation, see the example.

selected bibliography

  1. ieee p802.11ax™/d4.1 draft standard for information technology - telecommunications and information exchange between systems - local and metropolitan area networks - specific requirements - part 11: wireless lan medium access control (mac) and physical layer (phy) specifications - amendment 6: enhancements for high efficiency wlan.

  2. ieee 802.11-14/0571r12 - 11ax evaluation methodology.

  3. brueninghaus, karsten, et al. "link performance models for system level simulations of broadband radio access systems." 2005 ieee 16th international symposium on personal, indoor and mobile radio communications. vol. 4. ieee, 2005.

  4. mehlführer, christian, et al. "the vienna lte simulators-enabling reproducibility in wireless communications research." eurasip journal on advances in signal processing 2011.1 (2011): 29.

  5. ieee 802.11-14/0800r30 - box 1 and box 2 calibration results.

  6. ieee 802.11-14/0980r16 - tgax simulation scenarios.

  7. ieee 802.11-14/1450r0 - box 0 calibration results

related topics

    网站地图