В этом примере показано, как параметрировать и сгенерировать чрезвычайно высокую пропускную способность (EHT) IEEE® 802.11be™ многопользовательские формы волны.
Физический уровень 802.11be (Wi-Fi 7) [1] является расширением 802.11ax (Wi-Fi 6) [2], фокусируя на внутренней и наружной операции WLAN пропускную способность имеющую 30 Гбит/с [1]. Устройства EHT сосуществуют с устаревшими 802.11-совместимыми устройствами, действующими в 2,4 ГГц, 5 ГГц, и нелицензированными спектрами на 6 ГГц. Стандарт вводит эти ключевые новые возможности в формате [1] EHT.
Полоса пропускания канала на 320 МГц
Несколько Модулей Ресурса (MRUs) на станции (STAs)
4096-QAM
Прокалывание преамбулы Non-OFDMA
IEEE P802.11be/D1.0 [1] задает два формата пакета.
ЭХТ, многопользовательский (ЭХТ МУ), продемонстрированный в этом примере
Основанный на триггере EHT (Тбайт EHT), не продемонстрированный в этом примере
Пакет ЭХТ МУ может быть сконфигурирован для передачи OFDMA, non-OFDMA передача или комбинация двух. С этой гибкостью пакет ЭХТ МУ может передать отдельному пользователю по целой полосе, многому пользователю по различным частям полосы (OFDMA) или многому пользователю по той же части полосы (MU-MIMO). В этом примере показано, как сгенерировать пакет ЭХТ МУ для каждой из этих различных форм волны и демонстрирует некоторые ключевые возможности чернового стандарта [1]. Пример использует случайные биты, чтобы сгенерировать U-SIG и EHT-SIG сигнальные поля.
Пакет Тбайта EHT допускает OFDMA или передачу MU-MIMO в восходящем канале. Точка доступа (AP) управляет передачами Тбайта EHT. Триггерный кадр, переданный ко всему STAs, участвующему в передаче, содержит все параметры, требуемые для передачи. Каждый STA передает пакет Тбайта EHT одновременно, когда инициировано AP. Этот пример не поддерживает генерацию пакетов Тбайта EHT. Для получения информации о передачах Тбайта HE смотрите 802.11ax Пакетная Симуляция Коэффициента ошибок для Восходящего Основанного на триггере примера Формата.
Как в передачах HE, полоса пропускания канала передачи EHT разделена на RU. RU является группой поднесущих, присвоенных одному или нескольким пользователям. RU задан размером (количество поднесущих) и индекс. Индекс RU задает местоположение RU в канале. Например, передача на 80 МГц содержит четыре возможных RU с 242 тонами, один в каждом подканале на 20 МГц. RU# 242-1 (размер 242, индекс 1) является RU, занимающим самую низкую абсолютную частоту в 80 МГц, и RU# 242-4 (размер 242, индекс 4) является RU, занимающим самую высокую абсолютную частоту. Черновой стандарт задает возможные размеры и местоположения RU в разделе 36.3.12.8 из [1].
В EHT размеры RU, тонами, равняются 26, 52, 106, 242, 484, 996, 2x996, или 4x996, где 242, 484, 996, 2x996, и 4x996 соответствуют, соответствуют целым 20 МГц, 40 МГц, 80 МГц, 160 МГц, и полоса пропускания канала на 320 МГц, соответственно. AP EHT может присвоить 26-, 52-, или RU с 106 тонами отдельному пользователю, или 242-, 484-, 996-, 2x996, или 4x996-настроить RU к однопользовательский или многий пользователь в настройке MU-MIMO.
В отличие от этого, в HE, больше чем один RU может быть присвоен STA. RU могут быть агрегированы, чтобы сформировать MRU. RU классифицируются как RU небольшого размера или крупные RU.
RU небольшого размера 26-, 52-, и RU с 106 тонами. RU небольшого размера могут только быть объединены с другими RU небольшого размера, чтобы сформировать MRU небольшого размера. MRUs небольшого размера используются и для восходящей и для нисходящей передачи в формате OFDMA. Эти комбинации MRUs небольшого размера могут быть присвоены одному STA:
52+26-tone MRU
106+26-tone MRU
Крупные RU 242-, 484-, 996-, и 2x996-настраивают RU. Крупные RU могут только быть объединены с другими крупными RU, чтобы сформировать крупный MRU. Крупные MRUs заданы и для восходящей и для нисходящей передачи в non-OFDMA и формате OFDMA. Эти комбинации крупного MRUs могут быть присвоены STA, как задано в разделе 36.3.2.2.3 из [1]:
484+242-tone MUR
996+484-tone MRU
996+484+242-tone MRU (может только быть присвоен non-OFDMA STAs),
2x996+484-tone MRU
3x996-настройте MRU
3x996+484-tone MRU
Индекс и размер MRU являются объединенным индексом и размером RU, формирующих MRU. Например, передача на 20 МГц содержит 106+26-tone RU и RU с 106 тонами. RU# 106+26 (размер 106 и 26, индекс 1 и 5) является MRU занятие самой низкой абсолютной частоты в 20 МГц, и RU# 106 (размер 106, индекс 2) является RU, занимающим самую высокую абсолютную частоту. Черновой стандарт задает возможные размеры и местоположения RU в разделе 36.3.12.8 из [1].
Полная полоса non-OFDMA пакет является пакетом ЭХТ МУ, который содержит передачу отдельного пользователя или многого пользователя в настройке MU-MIMO по полной полосе пропускания канала.
ЭХТ МУ однопользовательский (SU) пакет является полной полосой, non-OFDMA передача отдельному пользователю. Используйте объект ehtMUConfig
настройки ЭХТ МУ сконфигурировать параметры передачи полной полосы пакет ЭХТ МУ для отдельного пользователя. Создайте полную полосу однопользовательская настройка MIMO на 320 МГц и установите параметры передачи пользователя.
cfgSU = ehtMUConfig('CBW320'); numTx = 2; % Number of transmit antennas cfgSU.NumTransmitAntennas = numTx; cfgSU.User{1}.APEPLength = 8000; % A-MPDU length pre-EOF padding, in bytes cfgSU.User{1}.MCS = 12; % Modulation and coding scheme cfgSU.User{1}.NumSpaceTimeStreams = numTx;
Получите необходимую длину PSDU для заданной настройки передачи и создайте случайный PSDU этой длины для передачи.
psdu = randi([0 1],getPSDULength(cfgSU)*8,1,'int8');
Сгенерируйте ЭХТ МУ однопользовательский пакет при помощи функции генератора формы волны ehtWaveformGenerator
. ehtWaveformGenerator
функционируйте использует случайные биты, чтобы сгенерировать U-SIG и EHT-SIG сигнальные поля.
tx = ehtWaveformGenerator(psdu,cfgSU); %#ok<*NASGU> % Create packet
Сконфигурируйте параметры передачи для полной полосы non-OFDMA пакет ЭХТ МУ для многого пользователя при помощи объекта настройки ЭХТ МУ. Используйте numUsers
объект свойства задать количество пользователей в настройке MU-MIMO.
Создайте 20 МГц (MU-MIMO) EHT МУ настройка для двух пользователей и установите параметры, характерные для всех пользователей.
numUsers = 2; numTx = 2; % Set common transmission parameters for all users cfgMUMIMO = ehtMUConfig('CBW20',numUsers); cfgMUMIMO.NumTransmitAntennas = numTx; cfgMUMIMO.GuardInterval = 3.2; cfgMUMIMO.EHTLTFType = 4;
ruInfo
объектная функция предоставляет подробную информацию RU в настройке. В этом случае один RU содержит двух пользователей.
allocInfo = ruInfo(cfgMUMIMO);
disp('Allocation info:')
Allocation info:
disp(allocInfo)
NumUsers: 2 NumRUs: 1 RUIndices: {[1]} RUSizes: {[242]} NumUsersPerRU: 2 NumSpaceTimeStreamsPerRU: 2 PowerBoostFactorPerRU: 1 RUNumbers: 1
Свойства cfgMUMIMO
опишите настройку передачи. cfgMUMIMO.RU
и cfgMUMIMO.User
свойства cfgMUMIMO
массивы ячеек. Каждый элемент массивов ячеек содержит объект, который конфигурирует RU или пользователя. Когда вы создаете cfgMUMIMO
объект, элементы cfgMUMIMO.RU
и cfgMUMIMO.User
создайте желаемое количество RU и пользователей. Каждый элемент cfgMUMIMO.RU
ehtRU
объект, описывающий настройку RU. Точно так же каждый элемент cfgMU.User
ehtUser
объект, описывающий настройку пользователя. Этот рисунок показывает иерархию объектов.
Этот пример создает один RU в non-OFDMA формате для полосы пропускания канала 20 МГц, таким образом, cfgMUMIMO.RU
массив ячеек с одним элементом. Индекс и размер каждого RU сконфигурированы согласно полосе пропускания канала, заданной когда cfgMUMIMO
был создан.
disp('RU configuration:')
RU configuration:
disp(cfgMUMIMO.RU{1})
ehtRU with properties: PowerBoostFactor: 1 SpatialMapping: 'Direct' Read-only properties: Size: 242 Index: 1 UserNumbers: [1 2]
После создания объекта можно сконфигурировать каждый RU, чтобы создать желаемую настройку передачи путем установки свойств соответствующего объекта RU. Например, пространственное отображение и фактор повышения степени могут быть сконфигурированы на RU.
Создайте случайный пространственный массив отображения и сконфигурируйте индекс 1 RU.
ruIndex = 1; ofdmInfo = ehtOFDMInfo('EHT-Data',cfgMUMIMO,ruIndex); numST = ofdmInfo.NumTones; % Number of occupied subcarriers numSTS = allocInfo.NumSpaceTimeStreamsPerRU(ruIndex); cfgMUMIMO.RU{ruIndex}.SpatialMapping = 'Custom'; cfgMUMIMO.RU{ruIndex}.SpatialMappingMatrix = rand(numST,numSTS,numTx);
В этом разделе, numUsers
задает двух пользователей в передаче, таким образом, cfgMUMIMO.User
содержит два элемента. Свойства передачи пользователей могут быть сконфигурированы путем изменения объектов отдельного пользователя, например, модуляция и кодирования схемы (MCS), длина APEP и схема кодирования канала.
Установите свойства передачи пользователя 1.
cfgMUMIMO.User{1}.APEPLength = 500; % A-MPDU length pre-EOF padding in bytes cfgMUMIMO.User{1}.MCS = 12; cfgMUMIMO.User{1}.ChannelCoding = 'LDPC'; cfgMUMIMO.User{1}.NumSpaceTimeStreams = 1;
Установите свойства передачи пользователя 2.
cfgMUMIMO.User{2}.APEPLength = 700; % A-MPDU length pre-EOF padding in bytes cfgMUMIMO.User{2}.MCS = 7; cfgMUMIMO.User{2}.ChannelCoding = 'BCC'; cfgMUMIMO.User{2}.NumSpaceTimeStreams = 1;
RUNumber
только для чтения свойство указывает, какой RU используется, чтобы передать этого пользователя.
disp('First user configuration:')
First user configuration:
disp(cfgMUMIMO.User{1})
ehtUser with properties: APEPLength: 500 MCS: 12 NumSpaceTimeStreams: 1 ChannelCoding: 'LDPC' STAID: 0 NominalPacketPadding: 0 PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 1 Read-only properties: RUNumber: 1
В этом примере non-OFDMA настройка состоит из одного RU и двух пользователей. UserNumbers
свойство объекта RU указывает который пользователи (элементы cfgMUMIMO.User
массив ячеек), передаются на том RU. Точно так же RUNumber
свойство каждого User
объект указывает который RU (элемент cfgMUMIMO.RU
массив ячеек), используется, чтобы передать пользователя. Для получения дополнительной информации смотрите 802.11ax пример Генерации сигналов.
showAllocation
объектная функция визуализирует занятые RU или MRUs и поднесущие для заданной настройки. Цветные блоки иллюстрируют занятые поднесущие в pre-EHT и фрагментах EHT пакета. Белый указывает на незанятые поднесущие. Фрагмент pre-EHT иллюстрирует занятые поднесущие в полях, предшествующих EHT-STF. Фрагмент EHT иллюстрирует занятые поднесущие в EHT-STF, EHT-LTF и EHT-поле-данных и поэтому показывает выделение RU/MRU. Чтобы отобразить информацию о RU или MRU, нажмите на RU или MRU. Номер RU соответствует th RU
элемент cfgMUMIMO.RU
свойство. showAllocation
возразите, что функция также показывает размер каждого RU или MRU и пользователей, присвоенных каждому. Код пользователя соответствует th User
элемент cfgMUMIMO
.
showAllocation(cfgMUMIMO);
Чтобы сгенерировать non-OFDMA форму волны ЭХТ МУ, создайте случайный PSDU для каждого пользователя. Используйте массив ячеек, чтобы сохранить PSDU для каждого пользователя, когда длины PSDU отличаются. getPSDULength
объектная функция возвращает вектор с необходимым PSDU на пользователя для заданной настройки.
psduLength = getPSDULength(cfgMUMIMO); psdu = cell(1,allocInfo.NumUsers); for i = 1:allocInfo.NumUsers psdu{i} = randi([0 1],psduLength(i)*8,1,'int8'); end
Сгенерируйте 20 МГц non-OFDMA (MU-MIMO) пакет с двумя пользователями.
tx = ehtWaveformGenerator(psdu,cfgMUMIMO);
Черновой стандарт позволяет, чтобы проколотые подканалы на 20 МГц в non-OFDMA или 80 МГц OFDMA, 160 МГц, или передаче на 320 МГц позволили унаследованной системе действовать в проколотом подканале. Фрагмент преамбулы проколотого подканала на 20 МГц не передается, и соответствующий RU не выделяется никакому пользователю (никакие переданные данные). Этот метод также описан как связывание канала.
В non-OFDMA формате крупные MRUs получены путем прокалывания любого из 242-, 484-, или RU с 996 тонами в 80 МГц, 160 МГц, или полосы пропускания канала на 320 МГц. Как пример, 996+484+242-tone MRU получен путем прокалывания любого из восьми RU с 242 тонами в канале на 160 МГц, смотрите раздел 36.3.12.11.3 из [1]. Преамбула не передается в проколотом подканале в большом MRU, и соответствующий RU не выделяется никакому пользователю. non-OFDMA формат пакета поддерживает однопользовательский и пакетная передача MU-MIMO в большом MRUs. Поле EHT-USIG пакета ЭХТ МУ несет проколотую индикацию подканала для non-OFDMA передачи.
Используйте объект настройки ЭХТ МУ сконфигурировать non-OFDMA свойства передачи пакетной передачи ЭХТ МУ на большом MRU. Приложение B перечисляет возможные шаблоны прокалывания для 80 МГц, 160 МГц, и полосы пропускания канала на 320 МГц и соответствующее значение PuncturedChannelFieldValue
свойство при создании ehtMUConfig
объект.
Создайте настройку для 160 МГц пакетная передача ЭХТ МУ на большом 996+484+242-tone MRU. Проколите второй подканал на 20 МГц в канале на 160 МГц как показано в Приложении B путем установки PuncturedChannelFieldValue
свойство к 2
.
cfgPunc = ehtMUConfig('CBW160',1,2);
tx = ehtWaveformGenerator([1 0 1 0],cfgPunc);
Просмотрите проколотое выделение RU.
showAllocation(cfgPunc);
Создайте настройку для двух пользователей в настройке MU-MIMO в канале на 320 МГц. Пакетная передача ЭХТ МУ находится на большом 3x996+484-tone MRU, смотрите раздел 36.3.2.2.3 из [1]. Создайте ehtMUConfig
объект, устанавливая PuncturedChannelFieldValue
свойство к 3
проколоть третий подканал на 40 МГц в канале на 320 МГц как показано в Приложении B.
cfg = ehtMUConfig('CBW320',2,3);
cfg.NumTransmitAntennas = 8;
Установите свойства передачи пользователя 1.
cfg.User{1}.NumSpaceTimeStreams = 4; cfg.User{1}.APEPLength = 500000; cfg.User{1}.MCS = 12;
Установите свойства передачи пользователя 2.
cfg.User{2}.NumSpaceTimeStreams = 4; cfg.User{2}.APEPLength = 400000; cfg.User{2}.MCS = 13;
Просмотрите проколотое выделение RU.
showAllocation(cfg);
Создайте случайный PSDU для каждого пользователя. Используйте массив ячеек, чтобы сохранить PSDU для каждого пользователя, когда длины PSDU отличаются. getPSDULength
объектная функция возвращает вектор с необходимым PSDU на пользователя для заданной настройки.
psduLength = getPSDULength(cfg); allocInfo = ruInfo(cfg); % Get allocation information psdu = cell(1,allocInfo.NumUsers); for i=1:allocInfo.NumUsers psdu{i} = randi([0 1],psduLength(i)*8,1); end
Создайте сверхдискретизированную форму волны с помощью ehtWaveformGenerator
функция. Эта функция генерирует сверхдискретизированную форму волны при помощи большего размера обратного быстрого преобразования Фурье (ОБПФ), чем необходимый для номинального основополосного уровня.
osf = 1.5;
tx = ehtWaveformGenerator(psdu,cfg,'OversamplingFactor',osf);
Сгенерируйте спектр и спектрограмму сгенерированного сигнала. Спектрограмма показывает проколотый подканал на 40 МГц в канале на 320 МГц.
spectrumAnalyzer = plotSpectrumAndSpectrogram(tx,cfg,osf,'3x996+484-tone MRU with punctured 40 MHz subchannel in 320 MHz channel');
Индекс выделения задает присвоение RUs/MRUs в передаче OFDMA. Приложение списки индексы выделения для всех присвоений RU/MRU. Для каждого подканала на 20 МГц 9-битный индекс описывает номер и размер RUs/MRUs и количество пользователей, переданных на каждом RU/MRU. Длина индекса выделения должна быть 1, 2, 4, 8, или 16, чтобы задать присвоение для каждого подканала на 20 МГц в 20 МГц, 40 МГц, 80 МГц, 160 МГц, или полосы пропускания канала на 320 МГц, соответственно. Индекс выделения также определяет, какое содержимое образовывают канал использование поля EHT-SIG, чтобы сигнализировать пользователю.
Сконфигурируйте параметры передачи для формата пакета ЭХТ МУ в настройке OFDMA с объектом настройки ЭХТ МУ. Создайте настройку OFDMA для 20 МГц пакет ЭХТ МУ с двумя RU с 52 тонами, один 106+26-tone MRU и один пользователь на RU, как задано индексом 47 выделения.
cfgOFDMA = ehtMUConfig(47);
Визуализируйте выделение RU с showAllocation
объектная функция.
showAllocation(cfgOFDMA)
ruInfo
объектная функция предоставляет подробную информацию RU в настройке. Вы видите три RU с пользователем в каждом RU.
allocInfo = ruInfo(cfgOFDMA);
disp('Allocation info:')
Allocation info:
disp(allocInfo)
NumUsers: 3 NumRUs: 3 RUIndices: {[1 5] [3] [4]} RUSizes: {[106 26] [52] [52]} NumUsersPerRU: [1 1 1] NumSpaceTimeStreamsPerRU: [1 1 1] PowerBoostFactorPerRU: [1 1 1] RUNumbers: [1 2 3]
Установите общие параметры передачи для всех пользователей.
numTx = 3; cfgOFDMA.NumTransmitAntennas = numTx; cfgOFDMA.EHTLTFType = 2; cfgOFDMA.GuardInterval = 1.6
cfgOFDMA = ehtMUConfig with properties: RU: {[1x1 ehtRU] [1x1 ehtRU] [1x1 ehtRU]} User: {[1x1 ehtUser] [1x1 ehtUser] [1x1 ehtUser]} NumTransmitAntennas: 3 GuardInterval: 1.6000 EHTLTFType: 2 EHTSIGMCS: 0 USIGBitsSource: 'mt19937ar with seed' USIGBitsSeed: 74 EHTSIGBitsSource: 'mt19937ar with seed' EHTSIGBitsSeed: 75 Read-only properties: ChannelBandwidth: 'CBW20' AllocationIndex: 47
Сконфигурируйте RU 1 и пользователя 1.
cfgOFDMA.RU{1}.SpatialMapping = 'Direct'; cfgOFDMA.User{1}.APEPLength = 1e3; cfgOFDMA.User{1}.MCS = 12; cfgOFDMA.User{1}.NumSpaceTimeStreams = numTx; cfgOFDMA.User{1}.ChannelCoding = 'LDPC';
Сконфигурируйте RU 2 и пользователя 2.
cfgOFDMA.RU{2}.SpatialMapping = 'Fourier'; cfgOFDMA.User{2}.APEPLength = 500; cfgOFDMA.User{2}.MCS = 5; cfgOFDMA.User{2}.NumSpaceTimeStreams = 2; cfgOFDMA.User{2}.ChannelCoding = 'LDPC';
Сконфигурируйте RU 3 и пользователя 3.
cfgOFDMA.RU{3}.SpatialMapping = 'Fourier'; cfgOFDMA.User{3}.APEPLength = 100; cfgOFDMA.User{3}.MCS = 4; cfgOFDMA.User{3}.NumSpaceTimeStreams = 1; cfgOFDMA.User{3}.ChannelCoding = 'BCC';
Индекс 47 выделения задает три RU и трех пользователей, поэтому cfgOFDMA.RU
и cfgOFDMA.User
оба массивы ячеек с тремя элементами. Этот рисунок показывает иерархию объектов.
Size
и Index
свойства cfgOFDMA.RU{1}
покажите размер и индекс RU, составляющих 106+26-tone MRU.
disp('First RU configuration:')
First RU configuration:
disp(cfgOFDMA.RU{1})
ehtRU with properties: PowerBoostFactor: 1 SpatialMapping: 'Direct' Read-only properties: Size: [106 26] Index: [1 5] UserNumbers: 1
Сконфигурируйте свойства передачи пользователей путем изменения свойств объектов отдельного пользователя. RUNumber
только для чтения свойство указывает, какой RU используется, чтобы передать этого пользователя.
disp('First user configuration:')
First user configuration:
disp(cfgOFDMA.User{1})
ehtUser with properties: APEPLength: 1000 MCS: 12 NumSpaceTimeStreams: 3 ChannelCoding: 'LDPC' STAID: 0 NominalPacketPadding: 0 PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 1 Read-only properties: RUNumber: 1
UserNumbers
свойство RU
объект указывает который пользователи (элементы cfgOFDMA.Use
r массив ячеек), передаются на том RU. Точно так же RUNumber
свойство каждого User
возразите, указывает который RU (элемент cfgMUMIMO.RU
массив ячеек), используется, чтобы передать пользователя. Для получения дополнительной информации смотрите 802.11ax пример Генерации сигналов.
Чтобы сгенерировать форму волны ЭХТ МУ, создайте случайный PSDU для каждого пользователя. Сохраните PSDU для каждого пользователя в массиве ячеек, когда длины PSDU отличаются. getPSDULength
объектная функция возвращает вектор с необходимым PSDU на пользователя, учитывая настройку.
psduLength = getPSDULength(cfgOFDMA); psdu = cell(1,allocInfo.NumUsers); for i=1:allocInfo.NumUsers psdu{i} = randi([0 1],psduLength(i)*8,1); end
Сгенерируйте форму волны.
tx = ehtWaveformGenerator(psdu,cfgOFDMA);
Передача ЭХТ МУ с полосой пропускания канала, больше, чем использование на 20 МГц два канала содержимого, чтобы сигнализировать об общей конфигурационной информации и пользовательской конфигурационной информации. Они удовлетворяют каналы, дублированы по каждому подканалу на 40 МГц в сегменте на 80 МГц. То, когда система OFDMA содержит RU с размером, больше, чем 242, пользователи присвоили RU, может быть сообщено на любом из двух каналов содержимого SIG ЭХТ, как задано в разделе 36.3.12.8 из [1].
Как пример, рассмотрите эту настройку на 160 МГц, которая служит десяти пользователям с тремя RU включая 996-[]-484 MRU:
Большое 996+484-tone MRU (RU № 1) с восемью пользователями (пользователь № 1-8)
RU с 242 тонами (RU № 2) с одним пользователем (пользователь № 9)
RU с 242 тонами (RU № 3) с одним пользователем (пользователь № 10)
Сконфигурируйте передачу OFDMA на 160 МГц с восемью индексами выделения, один для каждого подканала на 20 МГц. Чтобы сконфигурировать сценарий в качестве примера, используйте эти индексы выделения.
[X1 X2 X3 X4 64 64 X5 X6]
X1 to X6
сконфигурируйте 996+484-tone MRU с пользователями № 1-8.
Индекс 64 выделения конфигурирует RU с 242 тонами с одним пользователем.
Выбор X1
к X6
конфигурирует соответствующее количество пользователей через индекс выделения в подканале на 20 МГц и определяет, какой канал содержимого EHT-SIG сигнализирует пользователям на 996+484-tone RU. 996+484-tone RU охватывает шесть подканалов на 20 МГц. Два RU с 242 тонами каждый обозначенный индексом 64 выделения охватывает два подканала на 20 МГц в MRU 996-[]-484. 996+484-tone MRU требует шести индексов выделения, обозначенных X1
к X6
. Эти десять пользователей могут быть сообщены на двух каналах содержимого EHT-SIG в различных комбинациях. Таблица 1 показывает семь из многочисленных возможных комбинаций.
Индекс выделения в области значений 144-151 задает 1-8 пользователей на 996+484-tone MRU. Чтобы не сигнализировать никаким пользователям на довольном канал, используйте индекс 29 или 30 выделения, когда подканал на 20 МГц, соответствующий индексу, перекроется с RU с 996 тонами или с 448 тонами, соответственно. Поэтому комбинации в Таблице 1 требуют восьми индексов выделения как показано в Таблице 2. Кроме индекса 64 выделения, остающимися шестью индексами выделения в каждой строке Таблицы 2 является X1
к X6
. Таблица 2 показывает количество пользователей на каждом довольном канал в двух сегментах на 80 МГц для различных комбинаций индекса выделения RU.
Чтобы сконфигурировать 'Комбинацию C' используют индексы выделения [145 145 145 145 64 64 29 29]
.
Сконфигурируйте параметры передачи для формата пакета ЭХТ МУ для настройки OFDMA с объектом настройки ЭХТ МУ.
cfgLMRU = ehtMUConfig([145 145 145 145 64 64 29 29]); % 1 MRU (996+484) with 8 users and two 242-tone RUs with one user each
cfgLMRU.NumTransmitAntennas = 8;
Установите параметры передачи пользователей.
userSTS = [1 1 1 1 1 1 1 1 8 8]; % Number of space time streams per user allocInfo = ruInfo(cfgLMRU); % Get details of the RU/MRU in the configuration for u=1:allocInfo.NumUsers cfgLMRU.User{u}.NumSpaceTimeStreams = userSTS(u); cfgLMRU.User{u}.MCS = 12; cfgLMRU.User{u}.APEPLength = randi([100 500],1,1); end
Создайте пакет с повторной последовательностью битов как PSDU.
tx = ehtWaveformGenerator([1 0 1 0],cfgLMRU);
Визуализируйте выделение RU.
showAllocation(cfgLMRU)
Создайте настройку для передачи на 160 МГц OFDMA с проколотыми подканалами. Используйте индекс 26 выделения подканала на 20 МГц, чтобы проколоть подканал на 20 МГц. Проколите второй подканал на 20 МГц в более низком сегменте на 80 МГц. Проколите вторые и третьи подканалы на 20 МГц в верхнем сегменте на 80 МГц.
cfgPuncture = ehtMUConfig([64 26 64 64 64 26 26 64]); for u=1:numel(cfgPuncture.User) cfgPuncture.User{u}.APEPLength = 1000; end
Сгенерируйте на сверхдискретизированной форме волны с помощью большего размера ОБПФ, чем необходимый для номинального основополосного уровня.
osf = 1.5;
txPuncture = ehtWaveformGenerator([1 0 1 0],cfgPuncture,'OversamplingFactor',osf);
Просмотрите проколотые подканалы на 20 МГц в сгенерированной форме волны при помощи спектра анализатор.
sa = plotSpectrumAndSpectrogram(txPuncture,cfgPuncture,osf,'160 MHz EHT MU Transmission with Punctured 20 MHz Channels');
Черновой стандарт позволяет, чтобы RU были неприсвоенными (никакие переданные данные) без фрагмента преамбулы соответствующих прокалываемых 20 МГц. Стандарт задает два метода для создания неприсвоенных RU: использование неприсвоенного индекса выделения с 242 тонами или сигнализация о Пользователе с STA-ID 2046.
Неприсвоенный индекс выделения с 242 тонами
Сконфигурируйте передачу на 160 МГц без передачи данных в подканале на 20 МГц без прокалывания преамбулы при помощи индекса 27 выделения.
cfgUnassigned = ehtMUConfig([64 27 64 64]); for u=1:numel(cfgUnassigned.User) cfgUnassigned.User{u}.APEPLength = 1000; end
Визуализируйте выделение RU, которое показывает, что преамбула не проколота.
showAllocation(cfgUnassigned);
Сгенерируйте сверхдискретизированную форму волны и просмотрите спектрограмму. Преамбула отображается во всех подканалах на 20 МГц в начале формы волны.
osf = 1.5; tx = ehtWaveformGenerator([1 0 0 1],cfgUnassigned,'OversamplingFactor',osf); sa = plotSpectrumAndSpectrogram(tx,cfgUnassigned,osf,'160 MHz EHT MU Transmission with Unassigned 20 MHz Channel');
Предупредите о пользователе с STA-ID 2046
Черновой стандарт утверждает, что RU является неприсвоенным (никакие переданные данные), если STA-ID поля EHT-SIG User 2046.
Создайте настройку OFDMA на 20 МГц с четырьмя RU с пользователем в каждом RU с помощью индекса 52 выделения
cfgUnassigned = ehtMUConfig(52);
Визуализируйте выделение RU.
showAllocation(cfgUnassigned)
Установите STAID
свойство третьего пользователя к 2 046 так 52+26-tone MRU является неприсвоенным.
cfgUnassigned.User{3}.STAID = 2046; % No data transmitted to 3rd user on MRU 52+26
Визуализируйте выделение RU, которое показывает, что третий RU является теперь неприсвоенным, но преамбула не проколота.
showAllocation(cfgUnassigned)
Посмотрите детали активных RU в настройке при помощи ruInfo
объектная функция. Это показывает трех пользователей и три RU как один пользователь, и RU является неприсвоенным.
allocInfo = ruInfo(cfgUnassigned);
disp('Allocation info:')
Allocation info:
disp(allocInfo)
NumUsers: 4 NumRUs: 3 RUIndices: {[1] [5] [9]} RUSizes: {[106] [26] [26]} NumUsersPerRU: [1 1 1] NumSpaceTimeStreamsPerRU: [1 1 1] PowerBoostFactorPerRU: [1 1 1] RUNumbers: [1 2 4]
function spectrumAnalyzer = plotSpectrumAndSpectrogram(tx,cfg,osf,titleStr) % Plot the specrum and spectrogram for a given waveform and % configuration fs = wlanSampleRate(cfg.ChannelBandwidth,'OversamplingFactor',osf); % Get baseband sample rate ofdmInfo = ehtOFDMInfo('EHT-Data',cfg,'OversamplingFactor',osf); fftsize = ofdmInfo.FFTLength; % Use the data field fft size rbw = fs/fftsize; % Resolution bandwidth spectrumAnalyzer = dsp.SpectrumAnalyzer('SampleRate',fs,... 'Method','Filter bank','RBWSource','Property','RBW',rbw,... 'AveragingMethod','Exponential','ForgettingFactor',0.25,... 'ReducePlotRate',false,'YLimits',[-100,10],... 'Title',titleStr); spectrumAnalyzer.ViewType = 'Spectrum and Spectrogram'; spectrumAnalyzer.TimeSpanSource = 'Property'; spectrumAnalyzer.TimeSpan = length(tx)/fs; spectrumAnalyzer(tx) end
Таблицу распределения RU для выделений <= 20 МГц показывают ниже с аннотируемыми описаниями.
Выделение RU и пользователь EHT-SIG, предупреждающий для выделений> = 20 МГц, с аннотируемыми описаниями.
Выделение RU и пользователь EHT-SIG, предупреждающий для 242-, 484-, 996-, и 2x996-тональные RU.
Выделение MRU и пользователь EHT-SIG, предупреждающий для выделения> =80 МГц.
Non-OFDMA проколол индикацию канала для PPDU на 80 МГц с аннотируемыми описаниями.
Non-OFDMA проколол индикацию канала для PPDU на 160 МГц с аннотируемыми описаниями.
Non-OFDMA проколол индикацию канала для PPDU на 320 МГц.
802.11be Измерения Передатчика. Измерьте точность модуляции передатчика, спектральную маску и спектральную плоскость отдельного пользователя, 4096 QAM, 802.11be форма волны.
802.11be Пакетная Симуляция Коэффициента ошибок для Меры по Формату пакета ЭХТ МУ Сынлэ-Усэра пакетный коэффициент ошибок формата пакета отдельного пользователя ЭХТ МУ
Черновой Стандарт IEEE P802.11be™/D1.0 для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 8: Улучшения для чрезвычайно высокой пропускной способности (EHT).
Черновой Стандарт IEEE P802.11ax™/D4.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 1: Улучшения для Высокой эффективности WLAN.