wlanVHTDataRecover

Восстановите данные VHT

Синтаксис

recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg)
recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg,userNumber)
recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg,userNumber,numSTS)
recBits = wlanVHTDataRecover(___,cfgRec)
[recBits,crcBits] = wlanVHTDataRecover(___)
[recBits,crcBits,eqSym] = wlanVHTDataRecover(___)
[recBits,crcBits,eqSym,cpe] = wlanVHTDataRecover(___)

Описание

пример

recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg) возвращает восстановленные биты полезной нагрузки в Поле данных VHT [] 1для однопользовательской передачи. Входные параметры включают полученный сигнал поля данных VHT, оценку канала, шумовую оценку отклонения, и объект настройки формата, cfg.

пример

recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg,userNumber) возвращает восстановленные биты полезной нагрузки, в многопользовательской передаче, для пользователя, заданного userNumber.

recBits = wlanVHTDataRecover(rxSig,chEst,noiseVarEst,cfg,userNumber,numSTS) также задает количество пространственно-временных потоков, numSTS, для многопользовательской передачи.

пример

recBits = wlanVHTDataRecover(___,cfgRec) возвращает восстановленные биты с помощью параметров алгоритма, заданных в cfgRec.

[recBits,crcBits] = wlanVHTDataRecover(___) также возвращает биты контрольной суммы VHT-SIG-B, crcBits, с помощью аргументов от предыдущих синтаксисов.

[recBits,crcBits,eqSym] = wlanVHTDataRecover(___) также возвращает компенсируемые символы, eqSym.

[recBits,crcBits,eqSym,cpe] = wlanVHTDataRecover(___) также возвращает общую ошибку фазы, cpe.

Примеры

свернуть все

Восстановите биты в VHT-поле-данных с помощью оценки канала на поле VHT-LTF по 2 x 2 квазистатических исчезающих канала.

Создайте объект настройки VHT с пропускной способностью канала на 160 МГц и двумя каналами передачи.

cbw = 'CBW160';
vht = wlanVHTConfig('ChannelBandwidth',cbw,'NumTransmitAntennas',2,'NumSpaceTimeStreams',2,'APEPLength',512);

Сгенерируйте сигналы VHT-поля-данных и VHT-LTF.

txDataBits = randi([0 1],8*vht.PSDULength,1);
txVHTLTF  = wlanVHTLTF(vht); 
txVHTData = wlanVHTData(txDataBits,vht);

Передайте переданную форму волны через 2 x 2 квазистатических исчезающих канала с AWGN.

snr = 10;
H = 1/sqrt(2)*complex(randn(2,2),randn(2,2));
rxVHTLTF  = awgn(txVHTLTF*H,snr);
rxVHTData = awgn(txVHTData*H,snr);

Вычислите полученную степень сигнала и используйте ее, чтобы оценить шумовое отклонение.

powerDB = 10*log10(var(rxVHTData));
noiseVarEst = mean(10.^(0.1*(powerDB-snr)));

Выполните оценку канала на основе поля VHT-LTF.

demodVHTLTF = wlanVHTLTFDemodulate(rxVHTLTF,vht,1);
chanEst = wlanVHTLTFChannelEstimate(demodVHTLTF,vht);

Восстановите биты полезной нагрузки в VHT-поле-данных и сравните с исходными битами полезной нагрузки.

rxDataBits = wlanVHTDataRecover(rxVHTData,chanEst,noiseVarEst,vht);
numErr = biterr(txDataBits,rxDataBits)
numErr = 0

Восстановите сигнал VHT-поля-данных через канал SISO AWGN с помощью коррекции ZF.

Сконфигурируйте объект формата VHT, сгенерируйте случайные биты полезной нагрузки и сгенерируйте VHT-поле-данных.

cfgVHT = wlanVHTConfig('APEPLength',512); 
txBits = randi([0 1], 8*cfgVHT.PSDULength,1); 
txVHTData = wlanVHTData(txBits,cfgVHT);

Передайте переданные данные VHT через канал AWGN.

awgnChan = comm.AWGNChannel('NoiseMethod','Variance','Variance',0.1);
rxVHTData = awgnChan(txVHTData);

Сконфигурируйте восстановление, возражают и восстанавливают биты полезной нагрузки с помощью совершенной оценки канала из всех единиц. Сравните восстановленные биты с переданными битами.

cfgRec = wlanRecoveryConfig('EqualizationMethod','ZF');
recBits = wlanVHTDataRecover(rxVHTData,ones(242,1),0.1,cfgVHT,cfgRec);
numErrs = biterr(txBits,recBits)
numErrs = 0

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

Создайте объект настройки VHT, имеющий пропускную способность канала на 160 МГц, двух пользователей и четыре антенны передачи. Присвойте один пространственно-временной поток первому пользователю и три пространственно-временных потока второму пользователю.

cbw = 'CBW160';
numSTS = [1 3];
vht = wlanVHTConfig('ChannelBandwidth',cbw,'NumUsers',2, ...
    'NumTransmitAntennas',4,'NumSpaceTimeStreams',numSTS);

Поскольку существует два пользователя, длина PSDU является 1 2 вектором - строкой.

psduLen = vht.PSDULength
psduLen = 1×2

        1050        3156

Сгенерируйте многопользовательские входные данные. Эти данные должны быть в форме 1 на N массивом ячеек, где N является количеством пользователей.

txDataBits{1} = randi([0 1],8*vht.PSDULength(1),1);
txDataBits{2} = randi([0 1],8*vht.PSDULength(2),1);

Сгенерируйте сигналы VHT-поля-данных и VHT-LTF.

txVHTLTF  = wlanVHTLTF(vht); 
txVHTData = wlanVHTData(txDataBits,vht);

Передайте поле данных для первого пользователя через 4x1 канал, потому что это состоит из одного пространственно-временного потока. Передайте данные второго пользователя через 4x3 канал, потому что это состоит из трех пространственно-временных потоков. Примените белый Гауссов шум к каждому пользовательскому сигналу.

snr = 15;
H1 = 1/sqrt(2)*complex(randn(4,1),randn(4,1));
H2 = 1/sqrt(2)*complex(randn(4,3),randn(4,3));

rxVHTData1 = awgn(txVHTData*H1,snr,'measured');
rxVHTData2 = awgn(txVHTData*H2,snr,'measured');

Повторите процесс для полей VHT-LTF.

rxVHTLTF1  = awgn(txVHTLTF*H1,snr,'measured');
rxVHTLTF2  = awgn(txVHTLTF*H2,snr,'measured');

Вычислите полученную степень сигнала для обоих пользователей и используйте ее, чтобы оценить шумовое отклонение.

powerDB1 = 10*log10(var(rxVHTData1));
noiseVarEst1 = mean(10.^(0.1*(powerDB1-snr)));

powerDB2 = 10*log10(var(rxVHTData2));
noiseVarEst2 = mean(10.^(0.1*(powerDB2-snr)));

Оцените характеристики канала с помощью полей VHT-LTF.

demodVHTLTF1 = wlanVHTLTFDemodulate(rxVHTLTF1,cbw,numSTS);
chanEst1 = wlanVHTLTFChannelEstimate(demodVHTLTF1,cbw,numSTS);

demodVHTLTF2 = wlanVHTLTFDemodulate(rxVHTLTF2,cbw,numSTS);
chanEst2 = wlanVHTLTFChannelEstimate(demodVHTLTF2,cbw,numSTS);

Восстановите биты VHT-поля-данных для первого пользователя и сравните с исходными битами полезной нагрузки.

rxDataBits1 = wlanVHTDataRecover(rxVHTData1,chanEst1,noiseVarEst1,vht,1);
[~,ber1] = biterr(txDataBits{1},rxDataBits1)
ber1 = 0.4983

Определите количество битовых ошибок для второго пользователя.

rxDataBits2 = wlanVHTDataRecover(rxVHTData2,chanEst2,noiseVarEst2,vht,2);
[~,ber2] = biterr(txDataBits{2},rxDataBits2)
ber2 = 0.0972

Частоты ошибок по битам довольно высоки, потому что нет никакого предварительного кодирования, чтобы смягчить интерференцию между потоками. Это особенно очевидно для пользователя 1 получатель, потому что он получает энергию от этих трех потоков, предназначенных для пользователя 2. Пример предназначается, чтобы показать рабочий процесс, и правильные синтаксисы для LTF демодулируют, оценка канала и функции восстановления данных.

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

свернуть все

Полученный сигнал VHT-поля-данных во временном интервале, заданном как NS-by-NR матрица. NR является количеством, получают антенны. NS должен быть больше, чем или равным количеству выборок временного интервала во входе VHT-поля-данных.

Примечание

wlanVHTDataRecover обрабатывает одно поле данных PPDU на запись. Если NS больше, чем длина поля, дополнительные выборки в конце rxSig не обрабатываются. Чтобы обработать конкатенированный поток полей данных PPDU, множественные вызовы wlanVHTDataRecover требуются. Если rxSig короче, чем длина VHT-поля-данных, ошибка происходит.

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

Оценка канала для данных и экспериментальных поднесущих, заданных как матрица или массив размера NST-by-NSTS-by-NR. NST является количеством занятых поднесущих. NSTS является количеством пространственно-временных потоков. Для многопользовательских передач NSTS является общим количеством пространственно-временных потоков для всех пользователей. NR является количеством, получают антенны. NST и NSTS должны совпадать с параметрами объекта настройки cfg для пропускной способности канала и количества пространственно-временных потоков.

ST N увеличивается с пропускной способностью канала.

ChannelBandwidthКоличество занятых поднесущих (ST N)Количество поднесущих данных (SD N)Количество экспериментальных поднесущих (SP N)
'CBW20'56524
'CBW40'1141086
'CBW80'2422348
'CBW160'48446816

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

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

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

Настройка VHT PPDU, заданная как объект wlanVHTConfig. Функция wlanVHTDataRecover использует следующие свойства объектов wlanVHTConfig:

Пропускная способность канала, заданная как 'CBW20', 'CBW40', 'CBW80' или 'CBW160'. Если передача имеет многого пользователя, та же пропускная способность канала применяется ко всем пользователям. Значение по умолчанию 'CBW80' устанавливает пропускную способность канала на 80 МГц.

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

Количество пользователей, заданных как 1, 2, 3, или 4. (Пользователи N)

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

Количество пространственно-временных потоков в передаче, заданной как скаляр или вектор.

  • Для отдельного пользователя количество пространственно-временных потоков является скалярным целым числом от 1 до 8.

  • Для многого пользователя количество пространственно-временных потоков является 1 NUsers вектором целых чисел от 1 до 4, где длина вектора, NUsers, является целым числом от 1 до 4.

Пример: [1 3 2] является количеством пространственно-временных потоков для каждого пользователя.

Примечание

Сумма пространственно-временных потоковых элементов вектора не должна превышать восемь.

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

Включите пространственно-временное блочное кодирование (STBC) поля данных PPDU, заданного как логическое. STBC передает несколько копий потока данных через присвоенные антенны.

  • Когда установлено в false, никакой STBC не применяется к полю данных, и количество пространственно-временных потоков равно количеству пространственных потоков.

  • Когда установлено в true, STBC применяется к полю данных, и количество пространственно-временных потоков удваивает количество пространственных потоков.

Смотрите IEEE® 802.11ac™-2013, Раздел 22.3.10.9.4 для дальнейшего описания.

Примечание

STBC важен для однопользовательских передач только.

Типы данных: логический

Циклическая длина префикса для поля данных в пакете, заданном как 'Long' или 'Short'.

  • Долгая защитная длина интервала составляет 800 нс.

  • Короткая защитная длина интервала составляет 400 нс.

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

Модуляция и схема кодирования, используемая в передаче текущего пакета, заданного как скаляр или вектор.

  • Для отдельного пользователя значение MCS является скалярным целым числом от 0 до 9.

  • Для многого пользователя MCS является 1 NUsers вектором целых чисел или скаляра со значениями от 0 до 9, где длина вектора, NUsers, является целым числом от 1 до 4.

MCSМодуляцияКодирование уровня
0BPSK1/2
1QPSK1/2
2QPSK3/4
316QAM1/2
416QAM3/4
564QAM2/3
664QAM3/4
764QAM5/6
8256QAM3/4
9256QAM5/6

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

Тип прямого кодирования с коррекцией ошибок для поля данных, заданного как 'BCC' (значение по умолчанию) или 'LDPC'. 'BCC' указывает на бинарное сверточное кодирование, и 'LDPC' указывает на низкое кодирование проверки четности плотности. Обеспечение вектора символов или вектора символов отдельной ячейки задает тип кодирования канала для отдельного пользователя или всех пользователей в многопользовательской передаче. Путем обеспечения массиву ячеек различные типы кодирования канала могут быть заданы на пользователя для многопользовательской передачи.

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

Количество байтов в дополнении A-MPDU pre-EOF, заданном как скалярное целое число или вектор целых чисел.

  • Для отдельного пользователя APEPLength является неотрицательным целым числом в интервале [0, 220 – 1].

  • Для многопользовательского APEPLength является 1 NUsers вектором неотрицательных целых чисел, где NUsers является целым числом в [1, 4]. Записи в APEPLength являются целыми числами в интервале [0, 220 – 1].

  • Для пустого пакета данных (NDP), APEPLength = 0.

APEPLength используется внутренне, чтобы определить количество символов OFDM в поле данных. Для получения дополнительной информации смотрите 802.11ac Станд. IEEE 2013, Таблица 22-1.

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

Параметры алгоритма, содержащие свойства, используемые во время восстановления данных, заданного как объект wlanRecoveryConfig. Конфигурируемые свойства включают смещение выборки символа OFDM, метод коррекции и тип отслеживания экспериментального этапа. Если вы не задаете объект cfgRec, значения свойства объекта по умолчанию, как описано в wlanRecoveryConfig Свойствах используются в восстановлении данных.

Примечание

Используйте cfgRec.EqualizationMethod = 'ZF', когда любому из следующих условий ответят:

  • cfg.NumSpaceTimeStreams=1

  • cfg.NumSpaceTimeStreams=2 и cfg.STBC=true

Смещение выборки символа OFDM, представленное как часть длины циклического префикса (CP), заданной как скалярное значение от 0 до 1. Это значение указывает на местоположение запуска для демодуляции OFDM относительно начала циклического префикса. OFDMSymbolOffset = 0 представляет запуск циклического префикса, и OFDMSymbolOffset = 1 представляет конец циклического префикса.

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

Метод коррекции, заданный как 'MMSE' или 'ZF'.

  • 'MMSE' указывает, что получатель использует минимальный эквалайзер среднеквадратичной погрешности.

  • 'ZF' указывает, что получатель использует обеспечивающий нуль эквалайзер.

Пример: 'ZF'

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

Отслеживание экспериментального этапа, заданное как 'PreEQ' или 'None'.

  • 'PreEQ' — Включает отслеживание экспериментального этапа, которое выполняется перед любой операцией коррекции.

  • 'none' Отслеживание экспериментального этапа не происходит.

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

Максимальное количество декодирования итераций в LDPC, заданном как положительное скалярное целое число. Этот параметр применим, когда кодирование канала установлено в LDPC для пользователя интереса.

Для получения информации об опциях кодирования канала смотрите 802.11™ предмет интереса настройки формата.

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

Включите раннее завершение декодирования LDPC, заданного как логическое. Этот параметр применим, когда кодирование канала установлено в LDPC для пользователя интереса.

  • Когда установлено в false, декодирование LDPC завершает количество итераций, заданных MaximumLDPCIterationCount, независимо от состояния проверки четности.

  • Когда установлено в true, декодирование LDPC останавливается, когда все проверки четности удовлетворены.

Для получения информации об опциях кодирования канала смотрите 802,11 предмета интереса настройки формата.

Количество пользователя в многопользовательской передаче, заданной как целое число, имеющее значение от 1 до Пользователей N. Пользователи N являются общим количеством пользователей.

Количество пространственно-временных потоков в многопользовательской передаче, заданной как вектор. Количество пространственно-временных потоков является 1 NUsers вектором целых чисел от 1 до 4, где Пользователи N являются целым числом от 1 до 4.

Пример: [1 3 2] является количеством пространственно-временных потоков для каждого пользователя.

Примечание

Сумма пространственно-временных потоковых элементов вектора не должна превышать восемь.

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

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

свернуть все

Восстановленные биты полезной нагрузки в VHT-поле-данных, возвращенном как вектор-столбец длины 8 × cfgVHT.PSDULength. См. wlanVHTConfig Свойства для деталей PSDULength. Вывод для отдельного пользователя, как определено userNumber.

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

Биты контрольной суммы для поля VHT-SIG-B, возвращенного как вектор столбца двоичных данных длины 8.

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

Компенсируемые символы, возвращенные как SD N NSYM NSS матрицей или массивом. SD N является количеством поднесущих данных. N SYM является количеством символов OFDM в VHT-поле-данных. N SS является количеством пространственных потоков, присвоенных пользователю. Когда STBC является false, N SS = N STS. Когда STBC является true, N SS = N STS/2.

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

Общая ошибка фазы в радианах, возвращенных как вектор-столбец, имеющий длину N SYM. N SYM является количеством символов OFDM в поле данных VHT.

Ограничения

Ограничения обработки wlanVHTDataRecover, ограничения и рекомендации:

  • Если только формат VHT, PPDUs обрабатываются, то isa(cfgVHT, 'wlanVHTConfig') должен быть true.

  • Для однопользовательских сценариев cfgVHT.NumUsers должен равняться 1.

  • Когда STBC включен, количество пространственно-временных потоков должно быть ровным.

  • cfgRec.EqualizationMethod = 'ZF' рекомендуется когда cfgVHT.STBC = true и cfgVHT.NumSpaceTimeStreams = 2

  • cfgRec.EqualizationMethod = 'ZF' рекомендуется когда cfgVHT.NumSpaceTimeStreams = 1

Больше о

свернуть все

Поле данных VHT

Очень высокие данные о пропускной способности (данные VHT) поле используются, чтобы передать один или несколько кадров от слоя MAC. Это следует за полем VHT-SIG-B в пакетной структуре для формата VHT PPDUs.

Поле данных VHT задано в 802.11ac Станд. IEEE 2013, Раздел 22.3.10. Это состоит из четырех подполей.

  • Поле Service — Содержит семибитное состояние инициализации скремблера, один бит, зарезервированный для будущих факторов и восемь битов для поля VHT-SIG-B CRC.

  • PSDU — Поле переменной длины, содержащее модуль эксплуатационных данных PLCP. В 802,11, PSDU может состоять из агрегата нескольких модулей эксплуатационных данных MAC.

  • Клавиатура PHY — Переменное количество битов передало передатчику, чтобы создать полный символ OFDM.

  • Хвост — Биты раньше отключали сверточный код. Биты хвоста не нужны, когда LDPC используется.

Ссылки

[1] Станд. IEEE 802.11ac™-2013 Стандарт IEEE для Информационных технологий — Телекоммуникаций и обмена информацией между системами — Локальными сетями и городскими компьютерными сетями — Конкретными требованиями — Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации — Поправка 4: Улучшения для Очень Высокой Пропускной способности для Операции в Полосах ниже 6 ГГц.

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

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

Введенный в R2015b


[1]  802.11ac Станд. IEEE 2 013 Адаптированных и переизданные с разрешением от IEEE. Авторское право IEEE 2013. Все права защищены.