802.11be генерация сигналов

В этом примере показано, как параметрировать и сгенерировать чрезвычайно высокую пропускную способность (EHT) IEEE® 802.11be™ многопользовательские формы волны.

Введение

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

Полная полоса 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

Пакетная генерация MU-MIMO

Сконфигурируйте параметры передачи для полной полосы 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 соответствует ith RU элемент cfgMUMIMO.RU свойство. showAllocation возразите, что функция также показывает размер каждого RU или MRU и пользователей, присвоенных каждому. Код пользователя соответствует ith User элемент cfgMUMIMO.

showAllocation(cfgMUMIMO);

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 7 objects of type patch, line, text.

Чтобы сгенерировать 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);

Проколотая пакетная генерация с большим MRUs

Черновой стандарт позволяет, чтобы проколотые подканалы на 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);

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 25 objects of type patch, line, text.

Создайте настройку для двух пользователей в настройке 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);

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 43 objects of type patch, line, text.

Создайте случайный 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');

Figure Spectrum Analyzer contains 2 axes objects and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes object 1 with title 3x996+484-tone MRU with punctured 40 MHz subchannel in 320 MHz channel contains 8 objects of type line. These objects represent Channel 1, Channel 2, Channel 3, Channel 4, Channel 5, Channel 6, Channel 7, Channel 8. Axes object 2 with title 3x996+484-tone MRU with punctured 40 MHz subchannel in 320 MHz channel contains an object of type image.

Формат пакета OFDMA

Индекс выделения задает присвоение RUs/MRUs в передаче OFDMA. Приложение списки индексы выделения для всех присвоений RU/MRU. Для каждого подканала на 20 МГц 9-битный индекс описывает номер и размер RUs/MRUs и количество пользователей, переданных на каждом RU/MRU. Длина индекса выделения должна быть 1, 2, 4, 8, или 16, чтобы задать присвоение для каждого подканала на 20 МГц в 20 МГц, 40 МГц, 80 МГц, 160 МГц, или полосы пропускания канала на 320 МГц, соответственно. Индекс выделения также определяет, какое содержимое образовывают канал использование поля EHT-SIG, чтобы сигнализировать пользователю.

Маленькая пакетная генерация MRU

Сконфигурируйте параметры передачи для формата пакета ЭХТ МУ в настройке OFDMA с объектом настройки ЭХТ МУ. Создайте настройку OFDMA для 20 МГц пакет ЭХТ МУ с двумя RU с 52 тонами, один 106+26-tone MRU и один пользователь на RU, как задано индексом 47 выделения.

cfgOFDMA = ehtMUConfig(47);

Визуализируйте выделение RU с showAllocation объектная функция.

showAllocation(cfgOFDMA)

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 10 objects of type patch, line, text.

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.User массив ячеек), передаются на том 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);

Большая пакетная генерация MRU

Передача ЭХТ МУ с полосой пропускания канала, больше, чем использование на 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)

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 29 objects of type patch, line, text.

Прокалывание преамбулы

Создайте настройку для передачи на 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');

Figure Spectrum Analyzer contains 2 axes objects and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes object 1 with title 160 MHz EHT MU Transmission with Punctured 20 MHz Channels contains an object of type line. This object represents Channel 1. Axes object 2 with title 160 MHz EHT MU Transmission with Punctured 20 MHz Channels contains an object of type image.

Неприсвоенные RU

Черновой стандарт позволяет, чтобы 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);

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 15 objects of type patch, line, text.

Сгенерируйте сверхдискретизированную форму волны и просмотрите спектрограмму. Преамбула отображается во всех подканалах на 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');

Figure Spectrum Analyzer contains 2 axes objects and other objects of type uiflowcontainer, uimenu, uitoolbar. Axes object 1 with title 160 MHz EHT MU Transmission with Unassigned 20 MHz Channel contains an object of type line. This object represents Channel 1. Axes object 2 with title 160 MHz EHT MU Transmission with Unassigned 20 MHz Channel contains an object of type image.

Предупредите о пользователе с STA-ID 2046

Черновой стандарт утверждает, что RU является неприсвоенным (никакие переданные данные), если STA-ID поля EHT-SIG User 2046.

Создайте настройку OFDMA на 20 МГц с четырьмя RU с пользователем в каждом RU с помощью индекса 52 выделения

cfgUnassigned = ehtMUConfig(52);

Визуализируйте выделение RU.

showAllocation(cfgUnassigned)

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 13 objects of type patch, line, text.

Установите 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)

Figure RU/MRU Assignment and Occupied Subcarriers contains an axes object. The axes object contains 9 objects of type patch, line, text.

Посмотрите детали активных 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

Приложение A

Таблицу распределения RU для выделений <= 20 МГц показывают ниже с аннотируемыми описаниями.

Выделение RU и пользователь EHT-SIG, предупреждающий для выделений> = 20 МГц, с аннотируемыми описаниями.

Выделение RU и пользователь EHT-SIG, предупреждающий для 242-, 484-, 996-, и 2x996-тональные RU.

Выделение MRU и пользователь EHT-SIG, предупреждающий для выделения> =80 МГц.

Приложение B

Non-OFDMA проколол индикацию канала для PPDU на 80 МГц с аннотируемыми описаниями.

Non-OFDMA проколол индикацию канала для PPDU на 160 МГц с аннотируемыми описаниями.

Non-OFDMA проколол индикацию канала для PPDU на 320 МГц.

Связанные примеры

Ссылки

  1. Черновой Стандарт IEEE P802.11be™/D1.0 для Информационных технологий - Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 8: Улучшения для чрезвычайно высокой пропускной способности (EHT).

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