exponenta event banner

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

В этом примере показана обработка передачи и приема для многопользовательской передачи по нисходящей линии связи IEEE ® 802.11ax™ по внутреннему каналу замирания TGax. Моделируются три режима передачи: OFDMA, MU-MIMO и комбинация OFDMA и MU-MIMO.

Введение

В этом примере моделируется сценарий передачи точки доступа (AP) на четыре станции (STA) одновременно с использованием пакетов многопользовательского формата с высокой эффективностью (HE), как указано в IEEE P802.11ax™/D4.1 [1].

Многопользовательский формат HE может быть сконфигурирован для передачи OFDMA, передачи MU-MIMO или их комбинации. Эта гибкость позволяет пакету HE-MU передавать одному пользователю по всей полосе, нескольким пользователям по разным частям полосы (OFDMA) или нескольким пользователям по одной и той же части полосы (MU-MIMO).

Для многопользовательского сценария нисходящей линии связи сравниваются три режима передачи:

  1. OFDMA - каждому из четырех пользователей назначается отдельный блок ресурсов (RU) и формируется луч передачи.

  2. MU-MIMO - все четыре пользователя совместно используют полный диапазон.

  3. Смешанные MU-MIMO и OFDMA - два пользователя совместно используют один RU в конфигурации MU-MIMO, а остальным двум пользователям назначается по одному RU каждому.

Для получения подробного обзора форматов 802.11ax см. пример параметризации 802.11ax для генерации и моделирования Waveform.

Для каждого режима передачи AP передает пакет из 10 пакетов, и каждый STA демодулирует и декодирует данные, предназначенные для него. Развивающийся канал MIMO TGax внутри помещения с AWGN моделируется между AP и каждым STA. Необработанная пропускная способность AP предоставляется в качестве метрики для сравнения режимов передачи и вычисляется путем подсчета количества пакетов, успешно переданных во все STA. Моделирование повторяется для различных потерь в тракте. В этом примере все передачи формируются лучом. Следовательно, перед имитацией передачи данных канал между АР и каждой станцией звучит при идеальных условиях для получения информации о состоянии канала.

Конфигурация передачи

Один wlanHEMUConfig используется для конфигурирования передачи пакета HE-MU. Для определения трех различных передач AP задаются три объекта конфигурации передачи:

  1. cfgMUMIMO - конфигурация MU-MIMO, состоящая из одного 242-тонального RU с 4 пользователями. Каждый пользователь имеет один пространственно-временной поток.

  2. cfgOFDMA является конфигурацией OFDMA, которая состоит из четырех 52-тональных RU, каждый из которых имеет одного пользователя. Каждый пользователь имеет два пространственно-временных потока.

  3. cfgMixed является смешанной конфигурацией OFDMA и MU-MIMO, которая состоит из одного 106-тонального RU, совместно используемого двумя пользователями, и двух 52-тональных RU, каждый с одним пользователем. Каждый из пользователей MU-MIMO имеет один пространственно-временной поток, и каждый из пользователей OFDMA имеет два пространственно-временных потока.

Полоса пропускания канала 20 МГц используется для всех передач. Другие параметры передачи, такие как APEPLength и MCS, одинаковы для всех пользователей во всех конфигурациях.

Сначала определяется конфигурация MU-MIMO. Индекс распределения 195 определяет один 242-тональный RU с четырьмя пользователями в MU-MIMO. Описание выбора индекса распределения см. в примере параметризации 802.11ax для генерации и моделирования формы волны.

% MU-MIMO configuration - 4 users on one 242-tone RU
cfgMUMIMO = wlanHEMUConfig(195);

График распределения показывает, что всем четырем пользователям присвоен один RU.

showAllocation(cfgMUMIMO);

Параметры передачи для каждого пользователя сконфигурированы.

numTx = 6; % Number of transmit antennas
guardInterval = 0.8; % Guard interval in Microseconds

% Configure common parameters for all users
cfgMUMIMO.NumTransmitAntennas = numTx;
cfgMUMIMO.GuardInterval = guardInterval;

% Configure per user parameters
% STA #1
cfgMUMIMO.User{1}.NumSpaceTimeStreams = 1;
cfgMUMIMO.User{1}.MCS = 4;
cfgMUMIMO.User{1}.APEPLength = 1000;
% STA #2
cfgMUMIMO.User{2}.NumSpaceTimeStreams = 1;
cfgMUMIMO.User{2}.MCS = 4;
cfgMUMIMO.User{2}.APEPLength = 1000;
% STA #3
cfgMUMIMO.User{3}.NumSpaceTimeStreams = 1;
cfgMUMIMO.User{3}.MCS = 4;
cfgMUMIMO.User{3}.APEPLength = 1000;
% STA #4
cfgMUMIMO.User{4}.NumSpaceTimeStreams = 1;
cfgMUMIMO.User{4}.MCS = 4;
cfgMUMIMO.User{4}.APEPLength = 1000;

Далее определяется конфигурация OFDMA. Индекс распределения 112 определяет четыре 52-тональных RU, каждый из которых обслуживает одного пользователя.

% OFDMA configuration - 4 users, each on a 52-tone RU
cfgOFDMA = wlanHEMUConfig(112);

На графике распределения показаны четыре RU, каждая с одним пользователем. При сравнении этого графика распределения с графиком MU-MIMO полного диапазона очевидно, что общее количество используемых поднесущих (4x52 = 208 поднесущих) меньше, чем распределение MU-MIMO (242 поднесущих). Меньшее количество поднесущих обеспечивает защиту между каждым пользователем OFDMA.

showAllocation(cfgOFDMA);

Параметры передачи для каждого пользователя сконфигурированы.

% Configure common parameters for all users
cfgOFDMA.NumTransmitAntennas = numTx;
cfgOFDMA.GuardInterval = guardInterval;

% Configure per user parameters
% STA #1 (RU #1)
cfgOFDMA.User{1}.NumSpaceTimeStreams = 2;
cfgOFDMA.User{1}.MCS = 4;
cfgOFDMA.User{1}.APEPLength = 1000;
% STA #2 (RU #2)
cfgOFDMA.User{2}.NumSpaceTimeStreams = 2;
cfgOFDMA.User{2}.MCS = 4;
cfgOFDMA.User{2}.APEPLength = 1000;
% STA #3 (RU #3)
cfgOFDMA.User{3}.NumSpaceTimeStreams = 2;
cfgOFDMA.User{3}.MCS = 4;
cfgOFDMA.User{3}.APEPLength = 1000;
% STA #4 (RU #4)
cfgOFDMA.User{4}.NumSpaceTimeStreams = 2;
cfgOFDMA.User{4}.MCS = 4;
cfgOFDMA.User{4}.APEPLength = 1000;

Наконец, определяется смешанная конфигурация MU-MIMO и OFDMA. Индекс распределения 25 определяет 106-тональный RU с двумя пользователями и два 52-тональных RU, каждый с одним пользователем.

% Mixed OFDMA and MU-MIMO configuration
cfgMixed = wlanHEMUConfig(25);

График распределения показывает три RU, один с 2 пользователями (MU-MIMO), а другие с одним пользователем (OFDMA).

showAllocation(cfgMixed);

Параметры передачи для каждого пользователя сконфигурированы.

% Configure common parameters for all users
cfgMixed.NumTransmitAntennas = numTx;
cfgMixed.GuardInterval = guardInterval;

% Configure per user parameters
% RU #1 has two users (MU-MIMO) and a total of 2 STS (1 per user)
% STA #1 (RU #1)
cfgMixed.User{1}.NumSpaceTimeStreams = 1;
cfgMixed.User{1}.MCS = 4;
cfgMixed.User{1}.APEPLength = 1000;
% STA #2 (RU #1)
cfgMixed.User{2}.NumSpaceTimeStreams = 1;
cfgMixed.User{2}.MCS = 4;
cfgMixed.User{2}.APEPLength = 1000;

% The remaining two users are OFDMA
% STA #3 (RU #2)
cfgMixed.User{3}.NumSpaceTimeStreams = 2;
cfgMixed.User{3}.MCS = 4;
cfgMixed.User{3}.APEPLength = 1000;
% STA #4 (RU #3)
cfgMixed.User{4}.NumSpaceTimeStreams = 2;
cfgMixed.User{4}.MCS = 4;
cfgMixed.User{4}.APEPLength = 1000;

Конфигурация модели канала

В этом примере используется модель канала TGax в помещении. Для моделирования линии связи между точкой доступа и каждым пользователем используется отдельный канал. Объект канала TGax, tgaxBase создается со свойствами, релевантными для всех пользователей. В этом примере профиль задержки (Model-D) и количество приемных антенн являются общими для всех пользователей. Модель-D считается нелинейной, когда расстояние между передатчиком и приемником больше или равно 10 метрам. Это описано далее в wlanTGaxChannel. Фиксированное начальное число используется для канала, чтобы обеспечить повторяемость.

% Create channel configuration common for all users
tgaxBase = wlanTGaxChannel;
tgaxBase.DelayProfile = 'Model-D';     % Delay profile
tgaxBase.NumTransmitAntennas = numTx;  % Number of transmit antennas
tgaxBase.NumReceiveAntennas = 2;       % Each user has two receive antennas
tgaxBase.TransmitReceiveDistance = 10; % Non-line of sight distance
tgaxBase.ChannelBandwidth = cfgMUMIMO.ChannelBandwidth;
tgaxBase.SampleRate = wlanSampleRate(cfgMUMIMO);
% Set a fixed seed for the channel
tgaxBase.RandomStream = 'mt19937ar with seed';
tgaxBase.Seed = 5;

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

% A cell array stores the channel objects, one per user
numUsers = numel(cfgMixed.User); % Number of users simulated in this example
tgax = cell(1,numUsers);

% Generate per-user channels
for userIdx = 1:numUsers
    tgax{userIdx} = clone(tgaxBase);
    tgax{userIdx}.UserIndex = userIdx; % Set unique user index
end

Обратная связь по формированию луча

Формирование луча передачи для OFDMA и MU-MIMO основано на знании состояния канала между передатчиком и приемником в формирователе луча. Обратная связь состояния канала на поднесущую обеспечивается каждым STA посредством канального зондирования. Точка доступа передает нулевой пакет данных (NDP), и каждый STA использует этот пакет для определения состояния канала. Затем состояние канала подается обратно в AP. Тот же процесс используется для 802.11ac™ в примерах 802.11ac Transmit Beamforming и 802.11ac Multi-User MIMO Precoding, но вместо пакета VHT используется пакет NDP одного пользователя HE. В этом примере обратная связь считается совершенной; отсутствует шум для канального зондирования, и обратная связь не сжимается. heUserBeamformingFeedback вспомогательная функция обнаруживает NDP и использует оценку канала для определения информации о состоянии канала. Затем для вычисления обратной связи формирования луча используется разложение по сингулярным значениям (SVD).

% Create an NDP with the correct number of space-time streams to generate
% enough LTF symbols
cfgNDP = wlanHESUConfig('APEPLength',0,'GuardInterval',0.8); % No data in an NDP
cfgNDP.ChannelBandwidth = tgaxBase.ChannelBandwidth;
cfgNDP.NumTransmitAntennas = cfgMUMIMO.NumTransmitAntennas;
cfgNDP.NumSpaceTimeStreams = cfgMUMIMO.NumTransmitAntennas;

% Generate NDP packet - with an empty PSDU as no data
txNDP = wlanWaveformGenerator([],cfgNDP);

% For each user STA, pass the NDP packet through the channel and calculate
% the feedback channel state matrix by SVD.
staFeedback = cell(1,numUsers);
for userIdx = 1:numel(tgax)
    % Received waveform at user STA with 50 sample padding. No noise.
    rx = tgax{userIdx}([txNDP; zeros(50,size(txNDP,2))]);

    % Get the full-band beamforming feedback for a user
    staFeedback{userIdx} = heUserBeamformingFeedback(rx,cfgNDP);
end

Параметры моделирования

В этом примере моделируются различные потери в тракте. Одни и те же потери в тракте и уровень шума применяются ко всем пользователям. Для каждой имитируемой потери тракта через канал пропускается 10 пакетов. Пакеты разделяются 20 микросекундами.

cfgSim = struct;
cfgSim.NumPackets = 10;       % Number of packets to simulate for each path loss
cfgSim.Pathloss = (96:3:105); % Path losses to simulate in dB
cfgSim.TransmitPower = 30;    % AP transmit power in dBm
cfgSim.NoiseFloor = -89.9;    % STA noise floor in dBm
cfgSim.IdleTime = 20;         % Idle time between packets in us

Моделирование с OFDMA

Сценарий сначала моделируется с помощью конфигурации OFDMA и формирования луча передачи.

Матрица управления для каждого RU вычисляется с использованием обратной связи от STA. heMUCalculateSteeringMatrix вспомогательная функция вычисляет матрицу формирования луча для RU с учетом обратной связи CSI.

% For each RU, calculate the steering matrix to apply
for ruIdx = 1:numel(cfgOFDMA.RU)
    % Calculate the steering matrix to apply to the RU given the feedback
    steeringMatrix = heMUCalculateSteeringMatrix(staFeedback,cfgOFDMA,cfgNDP,ruIdx);

    % Apply the steering matrix to each RU
    cfgOFDMA.RU{ruIdx}.SpatialMapping = 'Custom';
    cfgOFDMA.RU{ruIdx}.SpatialMappingMatrix = steeringMatrix;
end

heMUSimulateScenario функция помощника выполняет моделирование. Преамбула pre-HE стандарта 802.11ax обратно совместима с 802.11ac, поэтому в этом примере компоненты внешней синхронизации для сигнала VHT используются для синхронизации сигнала HE в каждом STA. Для каждого моделируемого пакета и потери тракта выполняются следующие шаги обработки:

  1. PSDU создается и кодируется для создания сигнала одного пакета.

  2. Сигнал пропускается через модель развивающегося канала TGax, и AWGN добавляется к принятому сигналу. Состояние канала поддерживается между пакетами.

  3. Пакет обнаружен.

  4. Грубый сдвиг несущей частоты оценивается и корректируется.

  5. Устанавливается точная синхронизация по времени.

  6. Оценивают и корректируют точный сдвиг несущей частоты.

  7. HE-LTF извлекается из синхронизированного принятого сигнала. HE-LTF демодулируется OFDM и выполняется оценка канала.

  8. Поле HE Data извлекается из синхронизированного принятого сигнала и демодулируется OFDM.

  9. Осуществляют общее отслеживание фазы пилот-сигнала для отслеживания любого остаточного сдвига несущей частоты.

  10. Скорректированные по фазе символы OFDM выравниваются с оценкой канала.

  11. Оценка шума выполняется с использованием пилот-сигналов демодулированного поля данных и оценки однопоточного канала на пилотных поднесущих.

  12. Выровненные символы демодулируются и декодируются для восстановления PSDU.

  13. Восстановленный PSDU сравнивается с переданным PSDU, чтобы определить, был ли пакет успешно восстановлен.

Моделирование выполняется для конфигурации OFDMA.

disp('Simulating OFDMA...');
throughputOFDMA = heMUSimulateScenario(cfgOFDMA,tgax,cfgSim);
Simulating OFDMA...
 Pathloss 96.0 dB, AP throughput 66.1 Mbps
 Pathloss 99.0 dB, AP throughput 66.1 Mbps
 Pathloss 102.0 dB, AP throughput 49.6 Mbps
 Pathloss 105.0 dB, AP throughput 16.5 Mbps

Моделирование с помощью MU-MIMO

Теперь сценарий моделируется с помощью конфигурации MU-MIMO. heMUCalculateSteeringMatrix вспомогательная функция вычисляет матрицу формирования луча для RU, учитывая обратную связь CSI для всех пользователей в распределении MU-MIMO. Для вычисления матрицы рулевого управления в вспомогательной функции используется нуль-форсировочное решение.

% Calculate the steering matrix to apply to the RU given the feedback
ruIdx = 1; % Index of the one and only RU
steeringMatrix = heMUCalculateSteeringMatrix(staFeedback,cfgMUMIMO,cfgNDP,ruIdx);

% Apply the steering matrix to the RU
cfgMUMIMO.RU{1}.SpatialMapping = 'Custom';
cfgMUMIMO.RU{1}.SpatialMappingMatrix = steeringMatrix;

Запустите моделирование для конфигурации MU-MIMO.

disp('Simulating MU-MIMO...');
throughputMUMIMO = heMUSimulateScenario(cfgMUMIMO,tgax,cfgSim);
Simulating MU-MIMO...
 Pathloss 96.0 dB, AP throughput 110.5 Mbps
 Pathloss 99.0 dB, AP throughput 110.5 Mbps
 Pathloss 102.0 dB, AP throughput 71.8 Mbps
 Pathloss 105.0 dB, AP throughput 0.0 Mbps

Моделирование с комбинированными MU-MIMO и OFDMA

Наконец, сценарий моделируется с использованием комбинированной конфигурации MU-MIMO и OFDMA.

Матрица управления для каждого RU вычисляется с использованием обратной связи от STA, включая MU-MIMO RU. heMUCalculateSteeringMatrix вспомогательная функция вычисляет матрицу формирования луча для RU с учетом обратной связи CSI.

% For each RU calculate the steering matrix to apply
for ruIdx = 1:numel(cfgMixed.RU)
    % Calculate the steering matrix to apply to the RU given the feedback
    steeringMatrix = heMUCalculateSteeringMatrix(staFeedback,cfgMixed,cfgNDP,ruIdx);

    % Apply the steering matrix to each RU
    cfgMixed.RU{ruIdx}.SpatialMapping = 'Custom';
    cfgMixed.RU{ruIdx}.SpatialMappingMatrix = steeringMatrix;
end

Выполните моделирование для комбинированной конфигурации MU-MIMO и OFDMA.

disp('Simulating Mixed MU-MIMO and OFDMA...');
throughputMixed = heMUSimulateScenario(cfgMixed,tgax,cfgSim);
Simulating Mixed MU-MIMO and OFDMA...
 Pathloss 96.0 dB, AP throughput 66.1 Mbps
 Pathloss 99.0 dB, AP throughput 66.1 Mbps
 Pathloss 102.0 dB, AP throughput 66.1 Mbps
 Pathloss 105.0 dB, AP throughput 47.9 Mbps

Результаты графика

Отображается необработанная пропускная способность AP для каждого режима передачи. Результаты показывают, что для реализации этого канала при высоком SNR (низком уровне трафика) пропускная способность, обеспечиваемая конфигурацией MU-MIMO, превышает конфигурацию OFDMA. Длительность пакета конфигурации MU-MIMO приблизительно вдвое меньше, чем в конфигурации OFDMA, которая обеспечивает увеличение пропускной способности. Когда SNR уменьшается, шум доминирует и формирование луча передачи с OFDMA становится более эффективным. Рабочие характеристики комбинированной конфигурации MU-MIMO и OFDMA соответствуют тенденции, сходной с конфигурацией OFDMA, поскольку длительность пакета одинакова. Производительность отличается из-за различных размеров RU и количества пространственно-временных потоков.

% Sum throughput for all STAs and plot for all configurations
figure;
plot(cfgSim.Pathloss,sum(throughputOFDMA,2),'-x');
hold on;
plot(cfgSim.Pathloss,sum(throughputMUMIMO,2),'-o');
plot(cfgSim.Pathloss,sum(throughputMixed,2),'-s');
grid on;
xlabel('Pathloss (dB)');
ylabel('Throughput (Mbps)');
legend('OFDMA','MU-MIMO','MU-MIMO & OFDMA');
title('Raw AP Throughput');

Приложение

В этом примере используются эти вспомогательные функции.

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

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