OFDMA нисходящего канала 802.11ax и многопользовательская MIMO- Симуляции

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

Введение

Этот пример моделирует сценарий точки доступа (AP), передающей на четыре станции (STA) одновременно с использованием высокоэффективных (HE) многопользовательских пакетов (MU) в формате, заданном в P802.11ax™/D4.1 IEEE [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 для генерации сигналов волны и симуляции.

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

Строение передачи

Система координат wlanHEMUConfig объект используется для конфигурирования передачи пакета HE-MU. Три объекта строения передачи заданы, чтобы задать три различные передачи AP:

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

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

  3. cfgMixed представляет собой смешанные OFDMA и MU-MIMO строения которые состоят из одного RU с 106 тонами, совместно используемого двумя пользователями, и двух RU с 52 тонами, каждый с одним пользователем. Каждый из пользователей 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 задает четыре RU с 52 тонами, каждый из которых обслуживает одного пользователя.

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

График выделения показывает RU четыре, каждый с одним пользователем. При сравнении этого графика распределения с графиком MU-MIMO в полной полосе очевидно, что общее количество используемых поднесущих (4х52 = 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 задает RU с 106 тонами с двумя пользователями и с двумя RU с 52 тонами, каждый с одним пользователем.

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

% 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. The 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) передается AP, и каждый STA использует этот пакет для определения состояния канала. Состояние канала затем подается назад на AP. Этот же процесс используется для 802.11ac™ в примерах 802.11ac Transmit Beamforming и 802.11ac Multi-User MIMO Precoding, но вместо пакета VHT используется пакет NDP с одним пользователем HE. В этом примере обратная связь рассматривается идеальной; шум для звукового сигнала канала отсутствует, и обратная связь не сжата. The 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. The heMUCalculateSteeringMatrix Функция helper вычисляет матрицу формирования луча для 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

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

  1. PSDU создается и кодируется, чтобы создать одну форму волны пакета.

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

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

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

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

  6. Хорошее смещение частоты несущей оценивается и корректируется.

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

  8. Поле Данные извлекается из синхронизированной принятой формы волны и демодулируется 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. The heMUCalculateSteeringMatrix Функция helper вычисляет матрицу формирования луча для RU, учитывая обратную связь CSI для всех пользователей в выделении MU-MIMO. Решение нулевой силы используется, чтобы вычислить матрицу управления в функции helper.

% 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. The heMUCalculateSteeringMatrix Функция helper вычисляет матрицу формирования луча для 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 для каждого режима передачи. Результаты показывают для этой реализации канала при высоких ОСШ (низком траектории) пропускную способность, обеспечиваемую строением MU-MIMO, превышает строение OFDMA. Длительность пакета строения MU-MIMO составляет примерно половину длительности пакета OFDMA строения который обеспечивает коэффициент усиления пропускной способности. Когда ОСШ уменьшается, шум доминирует, и формирование луча передачи с 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.