wlanHTDataRecover

Восстановите биты с HT-поля-данных

Описание

пример

dataBits = wlanHTDataRecover(rxDataSig,chEst,noiseVarEst,cfgHT) восстанавливает dataBits, вектор-столбец битов, от rxDataSig, полученное HT-поле-данных высокопроизводительно смешанной передачи (HT-mixed). Функция восстанавливает dataBits при помощи chEst, оценка канала для занятых поднесущих, noiseVarEst, оценка шумового отклонения и cfgHT, объект настройки, который содержит параметры передачи HT.

Для получения дополнительной информации о HT-поле-данных, смотрите HT-поле-данных. Для получения дополнительной информации о формате HT-mixed, см. Формат HT-Mixed.

dataBits = wlanHTDataRecover(rxDataSig,chEst,noiseVarEst,cfgHT,Name,Value) задает опции алгоритма при помощи одного или нескольких аргументов пары "имя-значение". Например, 'LDPCDecodingMethod','layered-bp' задает многоуровневый алгоритм декодирования имеющей малую плотность проверки четности (LDPC) распространения веры.

[dataBits,eqSym] = wlanHTDataRecover(___) возвращает eqSym, компенсируемые символы OFDM, которые включают поднесущие данных HT-поля-данных, с помощью любой комбинации входных аргументов от предыдущих синтаксисов.

пример

[dataBits,eqSym,cpe] = wlanHTDataRecover(___) возвращает cpe, общая ошибка фазы между полученными и ожидаемыми символами OFDM.

Примеры

свернуть все

Восстановите биты с HT-поля-данных формы волны HT-mixed, переданной через канал аддитивного белого Гауссова шума (AWGN).

Сконфигурируйте передачу HT-mixed и сгенерируйте соответствующее HT-поле-данных.

cfgHT = wlanHTConfig('PSDULength',1024);
psduLength = 8*cfgHT.PSDULength;
bits = randi([0 1],psduLength,1);
txDataSig = wlanHTData(bits,cfgHT);

Передайте сигнал через канал AWGN с отношением сигнал-шум (SNR) 10 дБ.

snr = 10;
noiseVarEst = 10^(-snr/10);
rxDataSig = awgn(txDataSig,snr);

Задайте оценку канала. Поскольку сигнал не проходит через исчезающий канал, вектор из единиц является совершенной оценкой. Для полосы пропускания канала 20 МГц поле HT-SIG содержит 52 поднесущих данных и 4 пилотных поднесущие.

chEst = ones(56,1);

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

dataBits = wlanHTDataRecover(rxDataSig,chEst,noiseVarEst,cfgHT);
isequal(dataBits,bits)
ans = logical
   1

Восстановите HT-поле-данных и вычислите общую ошибку фазы сигнала HT-mixed, восстановленного с канала AWGN при помощи обеспечивающей нуль эквализации в приемнике.

Сконфигурируйте передачу HT-mixed с полосой пропускания канала 40 МГц и длиной PSDU 1 024 байтов, затем сгенерируйте соответствующее HT-поле-данных.

psduLength = 1024;
cfgHT = wlanHTConfig('ChannelBandwidth','CBW40','PSDULength',psduLength);
bits = randi([0 1],8*psduLength,1);
txDataSig = wlanHTData(bits,cfgHT);

Передайте сигнал через канал AWGN с ОСШ 7 дБ.

snr = 7;
noiseVarEst = 10^(-snr/10);
rxDataSig = awgn(txDataSig,7);

Задайте оценку канала.

chEst = ones(114,1);

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

[dataBits,eqSym,cpe] = wlanHTDataRecover(rxDataSig,chEst,noiseVarEst,cfgHT,'EqualizationMethod','ZF');
isequal(bits,dataBits)
ans = logical
   1

Вычислите и отобразите максимальную общую ошибку фазы.

max(abs(cpe))
ans = 0.4709

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

свернуть все

Полученное HT-поле-данных в виде массива с комплексным знаком размера N S-by-NR.

  • N S является количеством выборок временного интервала.

  • N R является количеством, получают антенны.

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

Оценка канала в виде массива с комплексным знаком размера ST N NSTS NR.

  • ST N является количеством занятых поднесущих.

  • N STS является количеством пространственно-временных потоков.

  • N R является количеством, получают антенны.

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

Шумовая оценка отклонения в виде неотрицательного скаляра.

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

Параметры передачи HT в виде wlanHTConfig объект.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'PilotPhaseTracking','None' отключает отслеживание экспериментального этапа.

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

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

Метод эквализации в виде одного из этих значений.

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

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

Когда полученный сигнал имеет, несколько получают антенны, функциональное разнообразие приемника использования во время эквализации. Когда количество переданных пространственно-временных потоков один, и вы задаете этот аргумент как 'ZF', функция выполняет объединение максимального отношения.

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

Отслеживание экспериментального этапа в виде разделенной запятой пары, состоящей из 'PilotPhaseTracking' и одно из этих значений.

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

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

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

LDPC декодирование алгоритма в виде разделенной запятой пары, состоящей из 'LDPCDecodingMethod' и одно из этих значений.

Примечание

Когда вы задаете этот вход как 'norm-min-sum' или 'offset-min-sum', функция устанавливает входные значения отношения логарифмической правдоподобности (LLR), которые больше 1e10 или меньше, чем -1e10 к 1e10 и -1e10, соответственно. Функция затем использует эти значения при выполнении LDPC декодирование алгоритма.

Зависимости

Чтобы включить этот аргумент, установите ChannelCoding свойство cfgHT введите к 'LDPC'.

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

Масштабный коэффициент за нормированную сумму min LDPC, декодирующий в виде разделенной запятой пары, состоящей из 'MinSumScalingFactor' и скаляр в интервале (0, 1].

Зависимости

Чтобы включить этот аргумент, задайте 'LDPCDecodingMethod' аргумент пары "имя-значение" как 'norm-min-sum'.

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

Возместите за сумму min смещения LDPC, декодирующий в виде разделенной запятой пары, состоящей из 'MinSumOffset' и неотрицательный скаляр.

Зависимости

Чтобы включить этот аргумент, задайте 'LDPCDecodingMethod' аргумент пары "имя-значение" как 'offset-min-sum'.

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

Максимальное количество LDPC декодирование итераций в виде разделенной запятой пары, состоящей из 'MaximumLDPCIterationCount' и положительное целое число.

Зависимости

Чтобы включить этот аргумент, установите ChannelCoding свойство cfgHT введите к 'LDPC'.

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

Включите раннее завершение LDPC, декодирующего в виде разделенной запятой пары, состоящей из 'EarlyTermination' и 1 TRUE) или 0 ложь).

  • Когда вы устанавливаете это значение к 0 ложь), декодирование LDPC завершает количество итераций, заданных в 'MaximumLDPCIterationCount' аргумент пары "имя-значение" независимо от состояния проверки четности.

  • Когда вы устанавливаете это значение к 1 TRUE), декодирование LDPC завершает работу, когда всем проверкам четности удовлетворяют.

Зависимости

Чтобы включить этот аргумент, установите ChannelCoding свойство cfgHT введите к 'LDPC'.

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

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

свернуть все

Биты восстановились с HT-поля-данных, возвращенного как вектор-столбец с бинарным знаком длины 8×LPSDU, где L PSDU является длиной PSDU в байтах.

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

Компенсируемые символы OFDM, включающие HT-поле-данных, возвращенное как массив с комплексным знаком размера SD N NSym NSS.

  • SD N является количеством поднесущих данных

  • N Sym является количеством символов OFDM в HT-поле-данных

  • N SS является количеством пространственных потоков.

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

Общая ошибка фазы между полученными и ожидаемыми символами OFDM, в радианах, возвратилась как вектор-столбец с действительным знаком. Продолжительностью этого выхода является N Sym, количество символов OFDM в HT-поле-данных.

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

Больше о

свернуть все

HT-поле-данных

HT-поле-данных следует за последним учебным полем HT-long (HT-LTF) пакета HT-mixed.

HT-поле-данных является переносами одна или несколько систем координат от слоя среднего управления доступом (MAC) и состоит из четырех подполей.

  • Сервис — Содержит 16 нулей, чтобы инициализировать скремблер данных

  • PSDU — Поле переменной длины, содержащее Модуль эксплуатационных данных PLCP (PSDU)

  • Хвост — Содержит шесть нулей для каждого потока кодирования, требуемого отключать сверточный код

  • Заполните Биты — поле Переменной длины, требуемое гарантировать, что HT-поле-данных состоит из целого числа символов

Формат HT-Mixed

Передачи HT-mixed содержат заголовок PLCP, таким образом, что устройства, действующие в HT и режимах non-HT, могут декодировать их.

Алгоритмы

свернуть все

Эта функция поддерживает эти четыре LDPC декодирование алгоритмов.

Декодирование распространения веры

Функция реализует алгоритм BP на основе алгоритма декодирования, представленного в [2]. Для переданной LDPC-закодированной кодовой комбинации c=(c0,c1,,cn1), вход к декодеру LDPC является LLR, данным

L(ci)=log(Pr(ci=0|channel output for ci)Pr(ci=0|канал выход для ci)).

В каждой итерации функция обновляет ключевые компоненты алгоритма на основе этих уравнений:

L(rji)=2atanh(iVj\{i}tanh(12L(qij))),

L(qij)=L(ci)+j'Ci\{j}L(rji), инициализированный как L(qij)=L(ci) перед первой итерацией, и

L(Qi)=L(ci)+jCiL(rji).

В конце каждой итерации, L(Qi) обновленная оценка значения LLR для переданного бита, ci. Значение L(Qi) мягкое решение выход для ci. Если L(Qi) отрицательно, трудное решение выход для ci 1. В противном случае выход 0.

Индексируйте наборы Ci\{j} и Vj\{i} основаны на PCM, таким образом что наборы Ci и Vj соответствуйте всем ненулевым элементам в столбце i и строка j PCM, соответственно.

Этот рисунок демонстрирует, как вычислить эти наборы индекса для PCM H для случая i = 5 и j = 3.

Чтобы избежать бесконечных чисел в уравнениях алгоритма, atanh (1) и atanh (–1) установлены в 19,07 и –19.07, соответственно. Из-за конечной точности, MATLAB® возвращается 1 для tanh (19.07) и –1 для tanh (–19.07).

Когда вы задаете 'EarlyTermination' аргумент пары "имя-значение" как 0 ложь), декодирование завершает работу после количества итераций, заданных 'MaximumLDPCIterationCount' аргумент пары "имя-значение". Когда вы задаете 'EarlyTermination' аргумент пары "имя-значение" как 1 TRUE), декодирование завершает работу, когда всем проверкам четности удовлетворяют (HcT=0) или после того, как количество итераций задано 'MaximumLDPCIterationCount' аргумент пары "имя-значение".

Многоуровневое декодирование распространения веры

Функция реализует многоуровневый алгоритм BP на основе алгоритма декодирования, представленного в Разделе II.A [3]. Цикл декодирования выполняет итерации по подмножествам строк (слои) PCM.

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

(1) L(qmj)=L(qj)Rmj

(2) Ψ(x)=log(|tanh(x/2)|)

(3) Amj=nN(m)\{j}Ψ(L(qmn))

(4) smj=nN(m)\{j}sgn(L(qmn))

(5) Rmj=smjΨ(Amj)

(6) L(qj)=L(qmj)+Rmj

Для каждого слоя уравнение (6) декодирования работает над объединенным входом, полученным из текущих входных параметров LLR, L(qmj), и предыдущие обновления слоя, Rmj.

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

Нормированное декодирование суммы Min

Функция реализует нормированный алгоритм декодирования суммы min следующим многоуровневый алгоритм BP уравнением (3), замененным

Amj=minnN(m)\{j}(α|L(qmn)|),

где α является масштабным коэффициентом, заданным 'MinSumScalingFactor' аргумент пары "имя-значение". Это уравнение является адаптацией уравнения (4), представленного в [4].

Возместите декодирование суммы Min

Функция реализует алгоритм декодирования суммы min смещения следующим многоуровневый алгоритм BP уравнением (3), замененным

Amj=max(minnN(m)\{j}(|L(qmn)|β), 0),

где β является смещением, заданным 'MinSumOffset' аргумент пары "имя-значение". Это уравнение является адаптацией уравнения (5), представленного в [4].

Ссылки

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

[2] Gallager, Роберт Г. Имеющие малую плотность коды с проверкой четности. Кембридж, MA: нажатие MIT, 1963.

[3] Hocevar, D.E. "Уменьшаемая Архитектура Декодера Сложности через Многоуровневое Декодирование Кодов LDPC". В Семинаре IEEE по Системам Обработки сигналов, 2004. ГЛОТКИ 2004., 107-12. Остин, Техас, США: IEEE, 2004. https://doi.org/10.1109/SIPS.2004.1363033.

[4] Джингу Чен, Р.М. Таннер, К. Джонс и Ян Ли. "Улучшенные Алгоритмы Декодирования Суммы Min для Неправильных Кодов LDPC". В Продолжениях. Международный Симпозиум по Теории информации, 2005. ISIT 2005., 449-53, 2005. https://doi.org/10.1109/ISIT.2005.1523374.

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

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

Смотрите также

|

Введенный в R2015b