exponenta event banner

wlanNonHTDataBitRecover

Восстановление PSDU из поля данных, не относящихся к HT

Описание

пример

psdu = wlanNonHTDataBitRecover(sym,noiseVarEst,cfg) приходит в себя psdu, вектор столбца битов блока служебных данных физического уровня (PSDU), от symдемодулированные и выровненные символы мультиплексирования с ортогональным частотным разделением каналов (OFDM), содержащие поле данных не-HT для сигнала, не имеющего высокой пропускной способности (не-HT). Функция восстанавливает PSDU с помощью оценки дисперсии шума noiseVarEst и параметры передачи без HT cfg.

psdu = wlanNonHTDataBitRecover(sym,noiseVarEst,csi,cfg) улучшает обратное отображение поднесущих OFDM за счет использования информации о состоянии канала csi.

пример

[psdu,scramInit] = wlanNonHTDataBitRecover(___,'OFDMSymbolOffset',symOffset) восстанавливает исходное состояние скремблера scramInit для любой комбинации входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

Конфигурирование и генерация сигнала в области времени, отличной от HT.

cfg = wlanNonHTConfig('MCS',4);
bits = randi([0 1],8*cfg.PSDULength,1,'int8');
waveform = wlanWaveformGenerator(bits,cfg);

Передача сигнала по каналу аддитивного белого гауссова шума (AWGN) с отношением сигнал/шум (SNR) 30.

snr = 30;
rxWaveform = awgn(waveform,snr);

Извлеките поле не-HT Data из принятого сигнала.

field = 'NonHT-Data';
ind = wlanFieldIndices(cfg,field);
rx = rxWaveform(ind(1):ind(2),:);

Восстановление сигнала частотной области посредством OFDM-демодуляции сигнала данных временной области.

sym = wlanNonHTOFDMDemodulate(rx,field,cfg);

Извлеките поднесущие данных из демодулированного сигнала.

info = wlanNonHTOFDMInfo(field,cfg);
sym = sym(info.DataIndices,:,:);

Восстановите блок PSDU и убедитесь, что он соответствует переданному блоку PSDU.

noiseVarEst = 10^(-snr/10);
psdu = wlanNonHTDataBitRecover(sym,noiseVarEst,cfg);
isequal(bits,psdu)
ans = logical
   1

Конфигурирование и генерация сигнала данных без HT с полосой пропускания канала 160 МГц и динамической полосой пропускания.

bandwidth = 'CBW160';
cfg = wlanNonHTConfig('ChannelBandwidth',bandwidth,'PSDULength',1, ...
    'SignalChannelBandwidth',true,'BandwidthOperation','Dynamic');
bits = randi([0 1],8*cfg.PSDULength,1,'int8');
[range,~] = scramblerRange(cfg);
scramInit = randi(range);
y = wlanNonHTData(bits,cfg,scramInit);

Передача сигнала через канал AWGN с SNR 50.

snr = 50;
noiseVarEst = 10^(-snr/10);
rx = awgn(y,snr);

Восстановление сигнала в частотной области посредством OFDM-демодуляции сигнала данных без HT, задающего смещение выборки символа OFDM.

field = 'NonHT-Data';
symOffset = 0.5;
sym = wlanNonHTOFDMDemodulate(rx,field,bandwidth,'OFDMSymbolOffset',symOffset);

Извлеките поднесущие данных.

info = wlanNonHTOFDMInfo(field,bandwidth);
sym = sym(info.DataIndices,:);

Восстановите первый подканал PSDU с частотой 20 МГц, улучшив преобразование поднесущих OFDM путем указания информации о состоянии канала. Убедитесь, что принятые и переданные PSDU совпадают.

csi = ones(48,1);
[psdu,scramInit] = wlanNonHTDataBitRecover(sym(1:48,:),noiseVarEst,csi,cfg);
isequal(bits,psdu)
ans = logical
   1

Восстановление и отображение сигнализации полосы пропускания путем интерпретации состояния скремблера.

[bandwidth,dyn] = wlanInterpretScramblerState(scramInit)
bandwidth = 
'CBW160'
dyn = logical
   1

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

свернуть все

Демодулированные и выровненные OFDM символы, содержащие поле данных без HT, указанное как матрица комплексных значений размера 48-by-Nsym, где Nsym - количество OFDM символов.

Типы данных: double
Поддержка комплексного номера: Да

Оценка дисперсии шума, заданная как неотрицательный скаляр.

Типы данных: double

Параметры передачи без HT, указанные как wlanNonHTConfig объект.

Информация о состоянии канала, заданная как вектор столбца с действительным значением длины 48.

Типы данных: double

Смещение выборки символа OFDM, как доля длины циклического префикса, заданная как скаляр в интервале [0, 1].

Указанное значение указывает начальное местоположение демодуляции OFDM относительно начала циклического префикса.

Пример: 0.45

Типы данных: double

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

свернуть все

Восстановленные биты PSDU, возвращаемые как вектор столбца с двоичным значением длиной 8 × L, где L - длина PSDU в байтах. Чтобы задать L, установите PSDULength имущества cfg вход.

Типы данных: int8

Начальное состояние скремблера, возвращаемое как целое число в интервале [1, 127], или соответствующий вектор столбца с двоичным значением длины 7.

Раздел 17.3.5.5 [1] определяет процесс скремблирования и дескремблирования, применяемый к передаваемым данным. Поля заголовка и данных, которые следуют за полем инициализации скремблера (включая биты заполнения данных), скремблируются посредством XORing каждого бита с длиной 127 периодической последовательности, генерируемой многочленом S (x) = x7 + x4 + 1. Октеты PSDU помещаются в битовый поток, и в каждом октете бит 0 (LSB) является первым, а бит 7 (MSB) является последним. На этом рисунке показана генерация последовательности и операция XOR.

Преобразование из целого числа в биты использует левую ориентацию MSB. Для инициализации скремблера с десятичной запятой 1, биты отображаются на показанные элементы.

ЭлементX7X6X5X4X3X2X1
Битовое значение0000001

Чтобы создать битовый поток, эквивалентный десятичному, используйте de2bi функция. Например, для десятичного знака 1:

de2bi(1,7,'left-msb')
ans =

     0     0     0     0     0     0     1

Пример: [1; 0; 1; 1; 1; 0; 1] передает состояние инициализации скремблера 93 как вектор столбца с двоичным значением.

Типы данных: double

Ссылки

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2020b