wlanHTDataRecover

Восстановление бит из поля HT-Data

Описание

пример

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

Для получения дополнительной информации о поле HT-Data смотрите поле HT-Data. Для получения дополнительной информации о HT-смешанном формате смотрите HT-Смешанный формат.

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

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

пример

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

Примеры

свернуть все

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

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

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

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

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

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

chEst = ones(56,1);

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

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

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

Сконфигурируйте смешанную с HT передачу с пропускной способностью канала 40 МГц и длиной PSDU 1024 байта, затем сгенерируйте соответствующее поле HT-Data.

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-Data и подтвердите, что восстановленные биты совпадают с переданными битами.

[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- N R.

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

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

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

Оценка канала, заданная как комплексный массив размера N ST-by N STS-by- N R.

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

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

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

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

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

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

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

Аргументы в виде пар имя-значение

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

Пример: 'PilotPhaseTracking','None' отключает отслеживание фазы управления.

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

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

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

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

  • 'ZF' - Приемник использует уравнитель с нулями.

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

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

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

  • 'None' - Отключить отслеживание фазы управления.

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

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

  • 'bp' - Используйте алгоритм декодирования распространения убеждений (BP). Для получения дополнительной информации см. «Декодирование распространения убеждений».

  • 'layered-bp' - Используйте многоуровневый алгоритм декодирования BP, подходящий для квазициклических матриц проверки четности (PCM). Для получения дополнительной информации см. «Декодирование Многоуровневого Распространения Убеждений».

  • 'norm-min-sum' - Используйте многоуровневый алгоритм декодирования BP с нормализованной аппроксимацией min-sum. для получения дополнительной информации см. «Нормированное декодирование Min-Sum».

  • 'offset-min-sum' - Используйте многоуровневый алгоритм декодирования BP с смещением min-sum. Для получения дополнительной информации смотрите Offset Min-Sum Decoding.

Примечание

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

Зависимости

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

Зависимости

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

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

Включите раннее прекращение декодирования LDPC, заданное как разделенная разделенными запятой парами, состоящая из 'EarlyTermination' и 1 (true) или 0 (false).

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

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

Зависимости

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

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

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

свернуть все

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

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

Выравниваемые символы OFDM, содержащие поле HT-данных, возвращенные как комплексный массив размера N SD-by N Sym-by N SS.

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

  • N Sym - количество символов OFDM в поле HT-Data

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

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

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

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

Подробнее о

свернуть все

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

Поле HT-Data следует за последним полем HT-LTF пакета, смешанного с HT.

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

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

  • PSDU - поле переменной длины, содержащее модуль служебных данных PLCP (PSDU)

  • Tail - содержит шесть нулей для каждого потока кодирования, необходимого для завершения сверточного кода

  • Биты дополнения - поле переменной длины, необходимое для того, чтобы поле HT-Data состояло из целого числа символов

Смешанный формат HT

Смешанные с HT передачи содержат заголовок PLCP, так что устройства, работающие в режимах HT и не-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 для танха (19.07) и -1 для танха (-19.07).

Когда вы задаете 'EarlyTermination' аргумент пары "имя-значение" как 0 (false), декодирование прекращается после количества итераций, заданных '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-Sum

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

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

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

Декодирование смещения Min-Sum

Функция реализует алгоритм декодирования offset min-sum путем следования многоуровневому алгоритму BP с уравнением (3), замененным на

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

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

Ссылки

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

[2] Gallager, Robert G. Коды проверки четности с низкой плотностью. Cambridge, MA: MIT Press, 1963.

[3] Hocevar, D.E. «A Reduced Complexity Decoder Архитектуры with Layered Decoding of LDPC Codes». Семинар IEEE по системам обработки сигналов, 2004 год. SIPS 2004., 107-12. Остин, Техас, США: IEEE, 2004. https://doi.org/10.1109/SIPS.2004.1363033.

[4] Jinghu Chen, R.M. Tanner, C. Jones и Yan Li. «Улучшенные алгоритмы декодирования Min-Sum для нерегулярных кодов LDPC». В производстве. Международный симпозиум по теории информации, 2005 год. ISIT 2005., 449-53, 2005. https://doi.org/10.1109/ISIT.2005.1523374.

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

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

.

См. также

|

Введенный в R2015b