В этом примере показана обработка передачи и приема для многопользовательской передачи по нисходящей линии связи 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).
Для многопользовательского сценария нисходящей линии связи сравниваются три режима передачи:
OFDMA - каждому из четырех пользователей назначается отдельный блок ресурсов (RU) и формируется луч передачи.
MU-MIMO - все четыре пользователя совместно используют полный диапазон.
Смешанные 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 задаются три объекта конфигурации передачи:
cfgMUMIMO - конфигурация MU-MIMO, состоящая из одного 242-тонального RU с 4 пользователями. Каждый пользователь имеет один пространственно-временной поток.
cfgOFDMA является конфигурацией OFDMA, которая состоит из четырех 52-тональных RU, каждый из которых имеет одного пользователя. Каждый пользователь имеет два пространственно-временных потока.
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 и формирования луча передачи.
Матрица управления для каждого 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. Для каждого моделируемого пакета и потери тракта выполняются следующие шаги обработки:
PSDU создается и кодируется для создания сигнала одного пакета.
Сигнал пропускается через модель развивающегося канала TGax, и AWGN добавляется к принятому сигналу. Состояние канала поддерживается между пакетами.
Пакет обнаружен.
Грубый сдвиг несущей частоты оценивается и корректируется.
Устанавливается точная синхронизация по времени.
Оценивают и корректируют точный сдвиг несущей частоты.
HE-LTF извлекается из синхронизированного принятого сигнала. HE-LTF демодулируется OFDM и выполняется оценка канала.
Поле HE Data извлекается из синхронизированного принятого сигнала и демодулируется OFDM.
Осуществляют общее отслеживание фазы пилот-сигнала для отслеживания любого остаточного сдвига несущей частоты.
Скорректированные по фазе символы OFDM выравниваются с оценкой канала.
Оценка шума выполняется с использованием пилот-сигналов демодулированного поля данных и оценки однопоточного канала на пилотных поднесущих.
Выровненные символы демодулируются и декодируются для восстановления PSDU.
Восстановленный 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. 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.
Матрица управления для каждого 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');

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