wlanFieldIndices

Сгенерируйте индексы поля PPDU

Описание

пример

ind = wlanFieldIndices(cfg) возвращает ind, структура, содержащая запуск и индексы остановки отдельных полей компонента, которые включают основополосную форму волны модуля данных о протоколе процедуры (PPDU) сходимости физического уровня.

Примечание

Для невысокопроизводительного формата (non-HT) эта функция поддерживает генерацию полевых индексов только для модуляции OFDM.

пример

ind = wlanFieldIndices(cfg,field) возвращает запуск и индексы остановки для заданного типа поля в строках матричного ind.

Примеры

свернуть все

Создайте объект настройки WLAN HE-MU-format и используйте его, чтобы сгенерировать HE форма волны МУ с пакетным расширением.

cfg = wlanHEMUConfig(192);
cfg.User{1}.NominalPacketPadding = 16; 
bits = [1;0;0;1];
waveform = wlanWaveformGenerator(bits,cfg);

Возвратите и отобразите индексы поля PPDU.

ind = wlanFieldIndices(cfg);
disp(ind)
      LSTF: [1 160]
      LLTF: [161 320]
      LSIG: [321 400]
     RLSIG: [401 480]
    HESIGA: [481 640]
    HESIGB: [641 800]
     HESTF: [801 880]
     HELTF: [881 1200]
    HEData: [1201 3760]
      HEPE: [3761 3840]

Восстановите информационные биты в поле HE-SIG-A HE WLAN, однопользовательского (HE-SU) форма волны.

Создайте объект настройки WLAN HE-SU-format с настройками по умолчанию и используйте его, чтобы сгенерировать форму волны HE-SU.

cfgHE = wlanHESUConfig;
cbw = cfgHE.ChannelBandwidth;
waveform = wlanWaveformGenerator(1,cfgHE);

Получите индексы поля WLAN, которые содержат поле HE-SIG-A.

ind = wlanFieldIndices(cfgHE);
rxSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);

Выполните демодуляцию ортогонального мультиплексирования деления частоты (OFDM), чтобы извлечь поле HE-SIG-A.

sigaDemod = wlanHEDemodulate(rxSIGA,'HE-SIG-A',cbw);

Возвратите предHE информация о OFDM и извлеките демодулируемые символы "SIG HE".

preHEInfo = wlanHEOFDMInfo('HE-SIG-A',cbw);
siga = sigaDemod(preHEInfo.DataIndices,:);

Восстановите информационный SIG HE "битов" и другая информация, не приняв шума канала. Отобразите результат проверки четности.

noiseVarEst = 0;
[bits,failCRC] = wlanHESIGABitRecover(siga,noiseVarEst);
disp(failCRC);
   0

Извлеките очень высокопроизводительное короткое учебное поле (VHT-STF) из формы волны VHT.

Создайте объект настройки VHT-формата для multiple-input/multiple-output (MIMO) передача с помощью пропускной способности канала на 160 МГц. Сгенерируйте соответствующую форму волны VHT.

cfg = wlanVHTConfig('MCS',8,'ChannelBandwidth','CBW160', ... 
    'NumTransmitAntennas',2,'NumSpaceTimeStreams',2);
txSig = wlanWaveformGenerator([1;0;0;1],cfg);

Определите индексы поля PPDU компонента для формата VHT.

ind = wlanFieldIndices(cfg)
ind = struct with fields:
       LSTF: [1 1280]
       LLTF: [1281 2560]
       LSIG: [2561 3200]
    VHTSIGA: [3201 4480]
     VHTSTF: [4481 5120]
     VHTLTF: [5121 6400]
    VHTSIGB: [6401 7040]
    VHTData: [7041 8320]

Форма волны VHT PPDU состоит из восьми полей, включая семь полей преамбулы и одно поле данных.

Извлеките VHT-STF из переданной формы волны.

stf = txSig(ind.VHTSTF(1):ind.VHTSTF(2),:);

Проверьте, что VHT-STF имеет размерность 640 2, соответствуя количеству выборок (80 для каждого сегмента пропускной способности на 20 МГц) и количеству антенн передачи.

disp(size(stf))
   640     2

Сгенерируйте форму волны VHT. Извлеките и демодулируйте VHT длинное учебное поле (VHT-LTF), чтобы оценить коэффициенты канала. Восстановитесь поле данных при помощи канала оценивают и используют это поле, чтобы определить количество битовых ошибок.

Сконфигурируйте объект настройки VHT-формата с двумя путями.

vht = wlanVHTConfig('NumTransmitAntennas',2,'NumSpaceTimeStreams',2);

Сгенерируйте случайный PSDU и создайте соответствующую форму волны VHT.

txPSDU = randi([0 1],8*vht.PSDULength,1);
txSig = wlanWaveformGenerator(txPSDU,vht);

Передайте сигнал через TGac 2x2 канал MIMO.

tgacChan = wlanTGacChannel('NumTransmitAntennas',2,'NumReceiveAntennas',2, ...
    'LargeScaleFadingEffect','Pathloss and shadowing');
rxSigNoNoise = tgacChan(txSig);

Добавьте AWGN в полученный сигнал. Установите шумовое отклонение для случая, в котором получатель имеет шумовую фигуру на 9 дБ.

nVar = 10^((-228.6+10*log10(290)+10*log10(80e6)+9)/10);
awgnChan = comm.AWGNChannel('NoiseMethod','Variance','Variance',nVar);
rxSig = awgnChan(rxSigNoNoise);

Определите индексы для VHT-LTF и извлеките поле из полученного сигнала.

indVHT = wlanFieldIndices(vht,'VHT-LTF');
rxLTF = rxSig(indVHT(1):indVHT(2),:);

Демодулируйте VHT-LTF и оцените коэффициенты канала.

dLTF = wlanVHTLTFDemodulate(rxLTF,vht);
chEst = wlanVHTLTFChannelEstimate(dLTF,vht);

Извлеките VHT-поле-данных и восстановите информационные биты.

indData = wlanFieldIndices(vht,'VHT-Data');
rxData = rxSig(indData(1):indData(2),:);
rxPSDU = wlanVHTDataRecover(rxData,chEst,nVar,vht);

Определите количество битовых ошибок.

numErrs = biterr(txPSDU,rxPSDU)
numErrs = 0

Входные параметры

свернуть все

Формат передачи в виде одного из этих объектов настройки: wlanHESUConfig, wlanHEMUConfig, wlanHERecoveryConfig, wlanHETBConfig, wlanVHTConfig, wlanHTConfig, wlanNonHTConfig, wlanDMGConfig, или wlanS1GConfig.

Пример: cfg = wlanVHTConfig

Имя поля PPDU в виде вектора символов. Допустимое множество значений для этого входа зависит от формата передачи, который вы задаете в cfg входной параметр.

Формат передачи (cfg)Допустимые значения имени поля (field)
wlanHESUConfig, wlanHEMUConfig, wlanHERecoveryConfig, или wlanHETBConfig

'L-STF', 'L-LTF', 'L-SIG', 'RL-SIG', 'HE-SIG-A', 'HE-SIG-B', 'HE-STF', 'HE-LTF', 'HE-Data', или 'HE-PE'

wlanDMGConfig

'DMG-STF', 'DMG-CE', 'DMG-Header', и 'DMG-Data' характерны для всего физического уровня направленного мультигигабита (DMG) (PHY) настройки.

Когда TrainingLength из wlanDMGConfig положительно, дополнительными допустимыми полями является 'DMG-AGC', 'DMG-AGCSubfields', 'DMG-TRN', 'DMG-TRNCE', и 'DMG-TRNSubfields'.

wlanS1GConfig

'S1G-STF', 'S1G-LTF1', и 'S1G-Data' характерны для всего sub-one-gigahertz (S1G) настройки.

Для 1 МГц или больше, чем короткая настройка преамбулы на 2 МГц, дополнительными допустимыми полями является 'S1G-SIG' и 'S1G-LTF2N'.

Для большего, чем настройка преамбулы 2 МГц длиной дополнительными допустимыми полями является 'S1G-SIG-A', 'S1G-DSTF', 'S1G-DLTF', и 'S1G-SIG-B'.

wlanVHTConfig

'L-STF', 'L-LTF', 'L-SIG', 'VHT-SIG-A', 'VHT-STF', 'VHT-LTF', 'VHT-SIG-B', или 'VHT-Data'

wlanHTConfig

'L-STF', 'L-LTF', 'L-SIG', 'HT-SIG', 'HT-STF', 'HT-LTF', или 'HT-Data'

wlanNonHTConfig

'L-STF', 'L-LTF', 'L-SIG', или 'NonHT-Data'

Типы данных: char | string

Выходные аргументы

свернуть все

Запустите и остановите индексы, возвращенные как матрица структуры. Индексы соответствуют запуску и индексам остановки полей, включенных в основополосную форму волны, заданную cfg входной параметр.

Если вы задаете field введите, функция возвращает ind как N-by-2 матрица uint32 значения, состоя из запуска и индексы остановки поля PPDU. Эта таблица обрисовывает в общих чертах размерность N N-by-2 матрица, которая возвращена на основе определенного формата и настройки.

ФорматНастройкаind или определенная полевая размерность

non-HT

1 2 матрица для каждого поля

HT

1 2 матрица для каждого поля

Режим Null data packet (NDP), если PSDULength свойство wlanHTConfig объектом является 0Пустая матрица

VHT и S1G

1 2 матрица для каждого поля

Режим NDP, если APEPLength свойство wlanVHTConfig или wlanS1GConfig объектом является 0Пустая матрица

HE (1)

1 2 матрица для каждого поля

Режим NDP, если APEPLength свойство wlanHESUConfig или wlanHESUConfig объектом является 0Пустая матрица
Когда midamble добавляется к Полю данных HE, чтобы улучшить оценки канала для сценариев высокого Доплера

R-by-2 матрица, когда вы задаете field введите как 'HE-Data', где R является количеством блоков данных, разделенных midamble периодами

DMG (2)

1 2 матрица для каждого поля

Когда TrainingLength свойство wlanDMGConfig объект положителен1 2 матрица, когда вы задаете field введите как 'DMG-AGC' или 'DMG-TRN'
'DMG-AGCSubfields' TrainingLength- 2 матрицы.
TrainingLength- 2 матрицы, когда вы задаете field введите как 'DMG-TRNSubfields'
(TrainingLength/4) Матрица-by-2, когда вы задаете field введите как 'DMG-TRNCE'
Когда TrainingLength свойство wlanDMGConfig объектом является 0Пустая матрица, когда вы задаете field введите как 'DMG-AGC', 'DMG-TRN', 'DMG-AGCSubfields', 'DMG-TRNSubfields', или 'DMG-TRNCE'.
  1. Как описано в Разделе 27.3.11.16 из [1], можно добавить midamble в Поле данных HE, чтобы улучшить оценки канала для сценариев высокого Доплера.

  2. Для DMG, 'DMG-AGC' поле содержит подполя N TrainingLength, где N TrainingLength является 0–64 подполями. 'DMG-TRN' поле содержит N TrainingLength + (N TrainingLength/4) подполя. Как показано в этом рисунке, индексах для 'DMG-AGC' и 'DMG-TRN' перекройтесь с индексами их соответствующих подполей, 'DMG-AGCSubfields' и 'DMG-TRNSubfields'.

Типы данных: uint32 | struct

Ссылки

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

[2] Станд. IEEE 802.11™-2016 (Версия Станд. IEEE 802.11-2012). “Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования”. Стандарт IEEE для Информационных технологий — Телекоммуникации и обмен информацией между системами. Локальные сети и городские компьютерные сети — Конкретные требования.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2015b