exponenta event banner

Моделирование неправильного обнаружения состояния обратной связи 802.11ax для NDP обратной связи на основе триггера восходящей линии связи

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

Введение

NDP обратной связи 802.11ax [1] HE TB является вариантом блока данных протокола физического уровня 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. В каждой точке отношения сигнал/шум (SNR) STA передает множество пакетов без нарушений, кроме многолучевого замирания и шума. STA демодулирует пакет и восстанавливает состояние обратной связи. Точка доступа определяет вероятность неправильного определения состояния обратной связи путем сравнения состояния восстановленной и переданной обратной связи.

Каждый STA передает сигнал, выполняя эти этапы обработки.

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

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

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

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

  5. Объединение сигналов всех STA.

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

Приемник (АР) выполняет эти этапы обработки принятого сигнала.

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

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

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

На этом рисунке показана обработка для каждого канала между STA и AP.

Моделирование передачи по восходящей линии связи

В этом разделе моделируется сценарий сквозного восходящего канала для нескольких STA и точек SNR. Укажите количество STA и диапазон SNR. В этом разделе оценивается вероятность неправильного определения состояния обратной связи для всех 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

Конфигурация формы сигнала NDP обратной связи HE TB

Сконфигурируйте генератор сигналов для каждого 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 non-line-of-sight (NLOS) с профилем задержки Model-D. Модель-D считается NLOS, когда расстояние между передатчиком и приемником больше или равно десяти метрам. Дополнительные сведения см. в разделе wlanTGaxChannel. В этом примере предполагается, что все STA находятся на одинаковом расстоянии от точки доступа.

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. 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

Обработка точек SNR

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

Для параллельной обработки точек SNR можно использовать цикл 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

График вероятности неправильного обнаружения по SNR

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.

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

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

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

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