Этот пример показывает передачу, и получите обработку для IEEE® 802.11ax™ многопользовательская нисходящая передача по внутреннему исчезающему каналу TGax. Моделируются три режима передачи: OFDMA, MU-MIMO и комбинация OFDMA и MU-MIMO.
Этот пример моделирует сценарий передачи точки доступа (AP) к четырем станциям (STAs) одновременно с помощью высокой эффективности (HE) многопользовательские (MU) пакеты формата, как задано в IEEE P802.11ax™/D3.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, которая состоит из четырех РУССКИХ с 52 тонами, каждого с одним пользователем. У каждого пользователя есть два пространственно-временных потока.
cfgMixed
является смешанным OFDMA и настройкой MU-MIMO, которая состоит из одного RU с 106 тонами, совместно использованного двумя пользователями, и двумя РУССКИМИ с 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 присвоен всем четырем пользователям.
hePlotAllocation(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 тонами, каждый служащий отдельному пользователю.
% OFDMA configuration - 4 users, each on a 52-tone RU
cfgOFDMA = wlanHEMUConfig(112);
График выделения показывает РУССКИЕ четыре, каждый с отдельным пользователем. Когда сравнение этого выделения строит к полному графику полосы MU-MIMO, очевидно, что общее количество используемых поднесущих (4x52 = 208 поднесущих) является меньше, чем выделение MU-MIMO (242 поднесущие). Меньше количества поднесущих позволяет защиту между каждым пользователем OFDMA.
hePlotAllocation(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 тонами с двумя пользователями, и двумя РУССКИМИ с 52 тонами, каждым с одним пользователем.
% Mixed OFDMA and MU-MIMO configuration
cfgMixed = wlanHEMUConfig(25);
График выделения показывает РУССКИЕ три, один с 2 пользователями (MU-MIMO) и другие с одним пользователем каждый (OFDMA).
hePlotAllocation(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 packet 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 52.5 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 44.6 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™/D3.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации - Поправка 6: Улучшения для Высокой эффективности WLAN.