Этот пример показывает передачу, и получите обработку для IEEE® 802.11ax™ многопользовательская нисходящая передача по внутреннему исчезающему каналу TGax. Симулированы три режима передачи: OFDMA, MU-MIMO и комбинация OFDMA и MU-MIMO.
Этот пример симулирует сценарий передачи точки доступа (AP) к четырем станциям (STAs) одновременно с помощью высокой эффективности (HE) многопользовательские (MU) пакеты формата, как задано в IEEE P802.11ax™/D4.1 [1].
HE многопользовательский формат может быть сконфигурирован для передачи OFDMA, передачи MU-MIMO или комбинации двух. Эта гибкость позволяет пакету HE-MU передавать отдельному пользователю по целой полосе, многому пользователю по различным частям полосы (OFDMA) или многому пользователю по той же части полосы (MU-MIMO).
Три режима передачи сравнены для многопользовательского нисходящего сценария:
OFDMA - каждый из этих четырех пользователей присвоен, отдельный модуль ресурса (RU) и передача являются beamformed.
MU-MIMO - все четыре пользователя совместно используют полную полосу.
Смешанный MU-MIMO и OFDMA - Два пользователя совместно используют один RU в настройке MU-MIMO, и остающиеся два пользователя присвоены один RU каждый.
Для подробного обзора 802.11ax форматы, смотрите 802.11ax пример Генерации сигналов.
Для каждого режима передачи AP передает пакет 10 пакетов, и каждый STA демодулирует и декодирует данные, предназначенные для него. Развитие TGax внутренний канал MIMO с AWGN моделируется между AP и каждым STA. Необработанная пропускная способность AP обеспечивается как метрика, чтобы сравнить режимы передачи и вычисляется путем подсчета количества пакетов переданным успешно ко всему STAs. Симуляция повторяется для различных потерь на пути. В этом примере все передачи являются beamformed. Поэтому прежде, чем симулировать передачу данных, канал между AP и каждой станцией звучат под отличными состояниями получить информацию о состоянии канала.
wlanHEMUConfig
объект используется, чтобы сконфигурировать передачу пакета HE-MU. Три объекта настройки передачи заданы, чтобы задать три различных передачи AP:
cfgMUMIMO
настройка MU-MIMO, которая состоит из одного RU с 242 тонами с 4 пользователями. У каждого пользователя есть один пространственно-временной поток.
cfgOFDMA
настройка OFDMA, которая состоит из четырех RU с 52 тонами, каждого с одним пользователем. У каждого пользователя есть два пространственно-временных потока.
cfgMixed
смешанный OFDMA и настройка MU-MIMO, которая состоит из одного RU с 106 тонами, совместно использованного двумя пользователями, и двумя RU с 52 тонами, каждым с одним пользователем. Пользователи MU-MIMO у каждого есть один пространственно-временной поток и пользователи OFDMA, у каждого есть два пространственно-временных потока.
Полоса пропускания канала на 20 МГц используется для всех передач. Другие параметры передачи, такие как APEPLength и MCS являются тем же самым для всех пользователей во всех настройках.
Во-первых, настройка MU-MIMO задана. Индекс выделения 195
задает один RU с 242 тонами, с четырьмя пользователями в 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, очевидно, что общее количество используемых поднесущих (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
задает 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
создается со свойствами, важными для всех пользователей. В этом примере профиль задержки (Модель-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
. 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
beamforming передачи и для OFDMA и для MU-MIMO использует знание состояния канала между передатчиком и приемником в формирователе луча. Обратная связь состояния канала на поднесущую обеспечивается каждым STA звучанием канала. Пустой пакет данных (NDP) передается AP, и каждый STA использует этот пакет, чтобы определить состояние канала. Состояние канала затем возвращено к AP. Тот же процесс используется для 802.11ac™ в Передаче 802.11ac Beamforming и 802.11ac Многопользовательские примеры MIMO Перед кодированием, но отдельный пользователь HE пакет NDP используется вместо пакета VHT. В этом примере обратная связь рассматривается совершенной; нет никакого шума, существующего для звучания канала, и обратная связь является несжатой. heUserBeamformingFeedback
функция помощника обнаруживает NDP и использует оценку канала, чтобы определить информацию о состоянии канала. Сингулярное разложение (SVD) затем используется, чтобы вычислить beamforming обратную связь.
% 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 и передачей beamforming.
Держащаяся матрица для каждого RU вычисляется с помощью обратной связи от STAs. heMUCalculateSteeringMatrix
функция помощника вычисляет beamforming матрицу для 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
функция помощника выполняет симуляцию. Преамбула предHE 802.11ax назад совместима с 802.11ac, поэтому в этом примере, компоненты синхронизации фронтенда для формы волны VHT используются, чтобы синхронизировать форму волны HE в каждом STA. Поскольку каждый пакет и потеря на пути симулировали выполняющие шаги обработки, происходите:
PSDU создается и кодируется, чтобы создать одну пакетную форму волны.
Форма волны передается посредством развития, модель канала TGax и AWGN добавляются к принятой форме волны. Состояние канала обеспечено между пакетами.
Пакет обнаруживается.
Крупное смещение несущей частоты оценивается и корректируется.
Прекрасная временная синхронизация устанавливается.
Прекрасное смещение несущей частоты оценивается и корректируется.
HE-LTF извлечен из синхронизируемой принятой формы волны. HE-LTF является демодулируемым OFDM, и оценка канала выполняется.
Поле данных HE извлечено из синхронизируемой принятой формы волны и демодулируемого 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
функция помощника вычисляет beamforming матрицу для 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 вычисляется с помощью обратной связи от STAs, включая RU MU-MIMO. heMUCalculateSteeringMatrix
функция помощника вычисляет beamforming матрицу для 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 для каждого режима передачи построена. Результаты показывают для этой реализации канала в высоком SNRs (низкий pathloss), пропускная способность, обеспеченная настройкой MU-MIMO, превышает настройку OFDMA. Пакетная длительность настройки MU-MIMO примерно вдвое меньше чем это настройки OFDMA, которая обеспечивает усиление пропускной способности. Когда ОСШ уменьшается, шум доминирует, и передача beamforming с 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) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN.