wlanNonHTDataBitRecover

Восстановление PSDU из поля, отличного от данные

Описание

пример

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

psdu = wlanNonHTDataBitRecover(sym,noiseVarEst,csi,cfg) улучшает demappinng поднесущих 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) с отношением сигнал/шум (ОСШ) 30.

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

Извлеките поле, отличное от Данные, из принятой формы волны.

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

Сконфигурируйте и сгенерируйте сигнал, не являющийся Данные, с пропускной способностью канала 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 с ОСШ 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,:);

Восстановите первый подканал 20 МГц PSDU, улучшая демпфирование поднесущих 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 Data, заданные как комплексная матрица размера 48- N sym, где N sym - количество символов 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 каждым битом с периодической последовательностью length-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++ с помощью Coder™ MATLAB ®

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