Симуляция несоответствия статуса обратной связи 802.11ax для NDP обратной связи на основе триггера восходящего канала

Этот пример показов, как измерить вероятность неправильного определения информации о состоянии обратной связи при передаче null data packet (NDP) на основе триггера восходящей линии связи (HE) эффективности (TB) от нескольких станций восходящей линии связи (STA).

Введение

NDP обратной связи HE TB 802.11ax [1] является вариантом модуля данных протокола HE TB физического слоя (PPDU). Передача NDP с обратной связью HE TB полностью управляется точкой доступа (AP). Все параметры, необходимые для передачи, предоставляются в триггерной системе координат опроса отчета обратной связи типа NDP (NFRP), отправленного всем STA, участвующим в передаче обратной связи HE TB. После передачи триггерной системы координат NFRP от AP несколько STA могут одновременно передавать NDP обратной связи HE TB, который содержит информацию запроса ресурса (состояние обратной связи), как показано на этой схеме. Для получения дополнительной информации о процедуре отчета о обратной связи NDP, смотрите раздел «Процедура отчета о обратной связи NDP» wlanHETBConfig страница с описанием.

Этот пример измеряет вероятность неправильного определения информации о состоянии обратной связи для NDP обратной связи HE TB путем сравнения состояний переданной и принятой обратной связи. Ошибочное определение регистрируется, когда восстановленный статус обратной связи является неправильным или неопределенным. Пример выполняет это измерение для передачи между четырьмя STA и AP с помощью сквозной симуляции. STA выводит параметры передачи из поля User Info запрашивающей триггерной системы координат NFRP. В каждой точке отношения сигнал/шум (ОСШ) STA передает несколько пакетов без нарушений, кроме многолучевого замирания и шума. STA демодулирует пакет и восстанавливает состояние обратной связи. AP определяет вероятность неправильного определения статуса обратной связи путем сравнения восстановленного и переданного статуса обратной связи.

Каждый STA передает форму волны путем выполнения этих этапов обработки.

  1. Определите, планируется ли STA передать NDP обратной связи HE TB.

  2. Определите индекс набора тональных сигналов RU и номер начального временного потока для всех передающих STA.

  3. Сгенерируйте NDP обратной связи HE TB для STA.

  4. Передайте форму волны для каждого STA через внутренний канал при помощи wlanTGaxChannel Sобъект ystem (TM). Моделируйте различные реализации канала для каждого пользователя и каждого пакета путем случайного изменения свойства UserIndex wlanTGaxChannel. Этот процесс приводит к тем же пространственным свойствам корреляции для всех STA.

  5. Объедините формы сигналов от всех STA.

  6. Добавьте добавку белого Гауссова шума (AWGN) к полученной форме волны. AWGN создает желаемое среднее ОСШ на поднесущую после демодуляции ортогонального частотного разнесения (OFDM) для каждого STA.

Приемник (AP) выполняет эти шаги обработки на принятой форме волны.

  1. Используйте идеальную оценку задержки канала для синхронизации.

  2. Извлеките HE-LTF из синхронизированной формы волны и демодулируйте HE-LTF.

  3. Восстановите информацию о состоянии обратной связи из демодулированных символов HE-LTF [2].

Этот рисунок показывает обработку для каждой ссылки между STA и AP.

Симулируйте передачу по восходящей линии связи

В этом разделе описывается сквозной сценарий восходящей линии связи для нескольких STA и точек ОСШ. Укажите количество STA и область значений ОСШ. В этом разделе оценивается вероятность неправильного определения статуса обратной связи для всех STA. Состояние обратной связи представляет информацию запроса ресурса от STA и определяется в таблице 26-3 [1].

% Set transmission parameters
numSTAs          = 4; % Number of uplink STAs
STAID = [1 19 2 4]; % STA association ID, assigned to each associated STA with an AP
multiplexingFlag = [0 1 0 0]; % Signaled in the trigger frame of type NFRP for each STA
feedbackStatus = [1 0 1 0]; % Resource request information signaled by each STA
startingAID = 0; % Signaled in the trigger frame of type NFRP

% Set simulation parameters
numPackets = 50; % Number of packets to simulate
snrRange = -2:2:6; % SNR points (dB)
chanBW = 'CBW20'; % Channel bandwidth
numTx = 1; % Assume same number of transmit antennas for all STAs
numRx = 4; % Number of receive (AP) antennas

HE TB Обратная связь NDP Сигнал Строения

Сконфигурируйте генератор формы волны для каждого STA. STA выполняет эти шаги.

  • Проверьте, планируется ли передача STA.

  • Вычислите RUToneSetIndex для каждого STA из STAID, startingAID, и chanBW.

  • Вычислите число временных потоков начального пространства для всех STA из STAID, startingAID, и chanBW.

  • Сгенерируйте объект строения для всех STA.

% Return the index of the transmitting STAs. Calculate RUToneSetIndex and starting space time stream for all STAs. 
[txSTAIndex,ruToneSetIndexPerSTA,startingSTSNumPerSTA] = heTBNDPMappingParams(chanBW,numSTAs,multiplexingFlag,startingAID,STAID);
numTxSTAs = numel(txSTAIndex); % STAs scheduled to transmit
cfgSTA = cell(1,numTxSTAs);

% Generate the configuration object and set the feedback status property for all STAs
cfgBase = wlanHETBConfig('ChannelBandwidth',chanBW,'NumTransmitAntennas',numTx,'SpatialMapping','Fourier');
cfgNDP = getNDPFeedbackConfiguration(cfgBase);
if numSTAs~=numel(feedbackStatus)
    error('The number of elements in FeedbackStatus must be equal to the number of STAs');
end

for u=1:numTxSTAs
      cfgNDP.RUToneSetIndex = ruToneSetIndexPerSTA(u);
      cfgNDP.StartingSpaceTimeStream = startingSTSNumPerSTA(u);
      cfgNDP.FeedbackStatus = feedbackStatus(txSTAIndex(u));
      cfgSTA{u} = cfgNDP;
end

Строение канала

Этот пример использует модель закрытого канала TGax без линии видимости (NLOS) с профилем задержки Model-D. Модель-D рассматривается как NLOS, когда расстояние между передатчиком и приемником больше или равно десяти метрам. Для получения дополнительной информации смотрите wlanTGaxChannel. Этот пример принимает, что все STA находятся на одинаковом расстоянии от AP.

delayProfile = 'Model-D'; % TGax channel multipath delay profile
tgaxBase = wlanTGaxChannel;
tgaxBase.DelayProfile = delayProfile;
tgaxBase.SampleRate = wlanSampleRate (cfgSTA {1});
tgaxBase. TransmissionDirection = 'Uplink';
tgaxBase. TransmitReceiveDistance = 10;
tgaxBase.ChannelBandwidth = chanBW;
tgaxBase.NumReceiveAntennas = numRx;
tgaxBase.NormalizeChannelOutputs = false;
tgaxBase.PathGainsOutputPort = true;

Создайте отдельный канал для каждого STA. Каждый канал является клоном tgaxBase, но с другим UserIndex свойство, и сохранено в массиве ячеек tgax. The UserIndex свойство каждого отдельного канала создает уникальный канал для каждого пользователя. Этот пример использует реализацию случайного канала для каждого пакета путем случайного изменения UserIndex свойство каждого переданного пакета.

% A cell array stores the channel objects, one per STA.
tgax = cell(1,numTxSTAs);
for u=1:numTxSTAs
    tgax{u} = clone(tgaxBase);
    tgax{u}.NumTransmitAntennas = numTx;
    tgax{u}.UserIndex = u;
end
chInfo = info(tgaxBase);
chFilterCoefficients = chInfo.ChannelFilterCoefficients; % Channel filter coefficients

Обработка точек ОСШ

В этом разделе проверяется количество пакетов в каждой точке ОСШ и вычисляется вероятность неправильного определения состояния восстановленной обратной связи.

Для параллелизации обработки точек ОСШ можно использовать цикл parfor. Чтобы обеспечить возможность использования параллельных вычислений для повышения скорости, закомментируйте оператора 'for' и раскомментируйте оператора 'parfor' ниже.

% Processing SNR Points
ofdmInfo = wlanHEOFDMInfo('HE-LTF',cfgNDP);
numSNR = numel(snrRange); % Number of SNR points
misdetectionProbability = zeros(numTxSTAs,numSNR);
ind = wlanFieldIndices(cfgNDP); % Same for all STAs

%parfor isnr=1:numSNR % Use 'parfor' to speed up the simulation
for isnr=1:numSNR
    % Set random substream index per iteration to ensure that each
    % iteration uses a repeatable set of random numbers
    stream = RandStream('combRecursive','Seed',0);
    stream.Substream = isnr;
    RandStream.setGlobalStream(stream);
    rxFeedbackStatus = zeros(numPackets,numTxSTAs);
    chDelay = zeros(1,numTxSTAs);
      
    for pktIdx=1:numPackets
        rxWaveform = 0;

        % Generate random channel realization for each packet by varying
        % the UserIndex property of the channel. This assumes all STAs
        % have the same number of transmit antennas.
        chPermutations = randperm(numTxSTAs);
        for u=1:numTxSTAs
            % Generate HE TB feedback NDP waveform for each STA
            txSTA = wlanWaveformGenerator([],cfgSTA{u});
            
            % Pass waveform through a random TGax Channel
            channelIdx = chPermutations(u);
            reset(tgax{channelIdx}); % New channel realization
            [rxSTA,h] = tgax{channelIdx}([txSTA; zeros(50,size(txSTA,2))]);
            
            % Perform perfect channel delay estimate to find the start of
            % the packet
            chDelay(u) = channelDelay(h,chFilterCoefficients);

            % Combine uplink waveform from all STAs into one waveform
            rxWaveform = rxWaveform+rxSTA;   
        end

        % Synchronize later in time by using the maximum channel delay
        % between all channels as the start of the packet
        pktOffset = max(chDelay(u)); % Packet start index
        
        % Pass the waveform through AWGN channel. Account for noise
        % energy in unused subcarriers.
        snrVal = snrRange(isnr)-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);
        rxWaveform = awgn(rxWaveform,snrVal);
        
        % Uplink processing (at the AP)
        rxHELTF = rxWaveform(pktOffset+(ind.HELTF(1):ind.HELTF(2)),:);
        heltfDemod = wlanHEDemodulate(rxHELTF,'HE-LTF',chanBW,cfgNDP.GuardInterval,cfgNDP.HELTFType);

        % Recover feedback status for all STAs
        for u=1:numTxSTAs
            rxFeedbackStatus(pktIdx,u) = wlanHETBNDPFeedbackStatus(heltfDemod,cfgSTA{u});
        end
    end
    % Probability of misdetection per STA
    misdetectionProbability(:,isnr) = 1-sum(rxFeedbackStatus==feedbackStatus(txSTAIndex))/numPackets;
    disp(['SNR ' num2str(snrRange(isnr)) ' completed']);
end
SNR -2 completed
SNR 0 completed
SNR 2 completed
SNR 4 completed
SNR 6 completed

Построение графика вероятности неправильного определения в отношении ОСШ

markers = 'ox*sd^v><ph+';
numMarkers = numel(markers);
for u=1:numTxSTAs
    semilogy(snrRange,misdetectionProbability(u,:),['-' markers(mod(u-1,numMarkers)+1)]); hold on;
end
xlabel('SNR(dB)');
ylabel('Probability of misdetection');
dataStr = arrayfun(@(x)sprintf('STAID %d',x),STAID(txSTAIndex),'UniformOutput',false);
title(sprintf('%s, Channel %s, %d-by-%d',chanBW,delayProfile,numTx,numRx));
legend(dataStr);
grid on;

Figure contains an axes. The axes with title CBW20, Channel Model-D, 1-by-4 contains 4 objects of type line. These objects represent STAID 1, STAID 19, STAID 2, STAID 4.

Количество пакетов, протестированных в каждой точке ОСШ, зависит от numPackets. Для значимых результатов увеличьте значение numPackets. Этот рисунок была создаваем путем выполнения более длительной симуляции с numPackets: 1e4 и snrRange:-2:2:6.

Избранная библиография

  1. IEEE P802.11ax™/D7.0 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной LAN (MAC) и физического Слоя (PHY) - Поправка 1: Усовершенствования для высокой Эффективности WLAN.

  2. Montreuil, L. et al. Проект короткой обратной связи NDP. IEEE 802.11-17/0044r4, май 2017.