wlanVHTDataRecover

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

Описание

пример

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-поля-данных через канал AWGN SISO с помощью эквализации 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 объект.

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

Примечание

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

  • cfg.NumSpaceTimeStreams=1

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

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

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

Метод эквализации, заданный как одно из этих значений:

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

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

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

Отслеживание экспериментального этапа, заданное как одно из этих значений:

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

  • 'None' — Отключите отслеживание экспериментального этапа.

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

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

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

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

Включите раннее завершение декодирования LDPC, заданного как логическое значение 1 TRUE) или 0 ложь). Это свойство применяется, когда кодирование канала установлено в 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 задано в IEEE® Std 802.11ac™-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. Все права защищены.