exponenta event banner

wlanHTDataRecover

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

Описание

пример

dataBits = wlanHTDataRecover(rxDataSig,chEst,noiseVarEst,cfgHT) приходит в себя dataBits, вектор столбца битов, от rxDataSigпринимаемое поле HT-Data передачи с высокой пропускной способностью (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 с отношением сигнал/шум (SNR) 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 с SNR 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-Data, указанное как массив комплексных значений размера NS-by-NR.

  • NS - количество выборок во временной области.

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

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

Оценка канала, заданная как массив комплексных значений размера NST-by-NSTS-by-NR.

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

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

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

Типы данных: 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' и одно из этих значений.

Примечание

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

Зависимости

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

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

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

Зависимости

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

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

Смещение для декодирования 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 × LPSDU, где LPSDU - длина PSDU в байтах.

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

Выровненные символы OFDM, содержащие поле HT-Data, возвращаемое как массив комплексных значений размера NSD-by-NSym-by-NSS.

  • NSD - количество поднесущих данных

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

  • NSS - количество пространственных потоков.

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

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

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

Подробнее

свернуть все

Поле данных HT

Поле HT-Data следует за последним полем обучения длиной HT (HT-LTF) смешанного пакета HT.

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

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

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

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

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

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

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

Алгоритмы

свернуть все

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

Декодирование распространения убеждений

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

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

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

L (rji) = 2 атан (∏i′∈Vj\{ i} танх (12L (qi′j))),

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

L (Qi) = L (ci) +∑j′∈CiL (rj′i).

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

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

На этом рисунке показано, как вычислить эти наборы индексов для ИКМ Н для случая i = 5 и j = 3.

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

При указании 'EarlyTermination' аргумент пары имя-значение как 0 (false), декодирование завершается после числа итераций, указанного 'MaximumLDPCIterationCount' аргумент пары имя-значение. При указании 'EarlyTermination' аргумент пары имя-значение как 1 (true), декодирование завершается, когда все проверки четности удовлетворены (HcT = 0) или после числа итераций, указанных 'MaximumLDPCIterationCount' аргумент пары имя-значение.

Декодирование распространения многоуровневого убеждения

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

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

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

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

(3) Amj=∑n∈N (m )\{ j} (L (qmn))

(4) smj=∏n∈N (м )\{ j} sgn (L (qmn))

(5) Rmj = smjStart( Amj)

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

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

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

Декодирование нормализованной минимальной суммы

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

Amj=minn∈N (m )\{ j} (α 'L (qmn) |),

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

Декодирование минимальной суммы смещения

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

Amj = max (minn∈N (m )\{ j} (| L ( qmn) | − β), 0),

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

Ссылки

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

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

[3] Hocevar, D.E. «Архитектура декодера с уменьшенной сложностью посредством многоуровневого декодирования кодов LDPC». Семинар IEEE по системам обработки сигналов, 2004 год. SIPS 2004., 107-12. Остин, Техас, США: IEEE, 2004. https://doi.org/10.1109/SIPS.2004.1363033.

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

|

Представлен в R2015b