wlanFieldIndices

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

Описание

пример

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

Примечание

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

пример

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

Примеры

свернуть все

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

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 однопользовательской формы волны WLAN HE (HE-SU).

Создайте объект строения формата HE-SU WLAN с настройками по умолчанию и используйте его для генерации волны 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);

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

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

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

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

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

Создайте объект строения VHT-формата для передачи с несколькими входами/несколькими выходами (MIMO) с помощью 160-MHz полосы пропускания канала. Сгенерируйте соответствующий сигнал 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-MHz полосы пропускания) и количеству передающих антенн.

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);

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

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

Добавьте AWGN к полученному сигналу. Установите отклонение шума для случая, когда приемник имеет 9-dB рисунок шума.

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

Имя поля PDDU, заданное как вектор символов. Допустимое множество значений для этого входа зависит от формата передачи, который вы задаете в 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' являются общими для всех строений под-один-гигагерц (S1G).

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

Для более чем 2-MHz длинной конфигурации преамбулы дополнительные допустимые поля '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 или конкретная размерность поля

не-HT

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

HT

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

Режим пакета нулевых данных (NDP), если PSDULength свойство wlanHTConfig объект 0Пустая матрица

VHT и S1G

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

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

ОН(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-by-2 матрица.
TrainingLength-by-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], можно добавить середину в поле HE-Данные, чтобы улучшить оценки канала для сценариев с высоким Допплером.

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

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

Ссылки

[1] P802.11ax™/D4.1 IEEE. "Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического слоя (PHY). Поправка 1: Улучшения для высокоэффективной WLAN ". Проект стандарта на информационные технологии - телекоммуникации и обмен информацией между системами. Локальные и столичные сети - Особые требования.

[2] IEEE Std 802.11™-2016 (Редакция IEEE Std 802.11-2012). «Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического слоя (PHY)». Стандарт IEEE на информационные технологии - телекоммуникации и обмен информацией между системами. Локальные и столичные сети - Особые требования.

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

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

.
Введенный в R2015b