wlanDMGHeaderBitRecover

Восстановите биты заголовка с поля заголовка DMG

Описание

пример

[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,cfg) восстанавливает биты информации о заголовке и тестирует последовательность проверки заголовка (HCS), учитывая поле заголовка от передачи DMG (OFDM, одно поставщик услуг или управление PHY), шумовая оценка отклонения и объект настройки DMG.

[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,csi,cfg) использует информацию состояния канала, указанную в csi улучшать demapping поднесущих OFDM.

пример

[headerBits,failHCS] = wlanDMGHeaderBitRecover(___,Name,Value) задает опции алгоритма при помощи одного или нескольких аргументов пары "имя-значение". Когда вы не задаете пару "имя-значение", функция использует значение по умолчанию.

Примеры

свернуть все

Восстановите биты информации о заголовке поля заголовка DMG от управления PHY.

Передатчик

Создайте объект настройки DMG со схемой модуляции и кодирования (MCS) для управления PHY.

cfgDMG = wlanDMGConfig('MCS',0);

Создайте входную последовательность битов данных, задав его как вектор-столбец с cfgDMG.PSDULength*8 элементы. Сгенерируйте форму волны передачи DMG.

txBits = randi([0 1],cfgDMG.PSDULength*8,1,'int8'); 
tx = wlanWaveformGenerator(txBits,cfgDMG);

Канал

Передайте сигнал через канал без шума (обнулите шумовое отклонение).

rx = tx;
nVar = 0;

Получатель

Извлеките поле заголовка при помощи wlanFieldIndices функция.

ind = wlanFieldIndices(cfgDMG);
rxHeader = rx(ind.DMGHeader(1):ind.DMGHeader(2));

De-rotate полученный сигнал пи/2 и despread это с распространяющимся фактором 32. Используйте wlanGolaySequence функция, чтобы сгенерировать последовательность Golay.

rxSym = rxHeader.*exp(-1i*pi/2*(0:size(rxHeader,1)-1).');
SF = 32;
Ga = wlanGolaySequence(SF);
rxDespread = reshape(rxSym,SF,length(rxSym)/SF)'*Ga/SF;

Восстановите биты заголовка с поля заголовка DMG.

[rxBits,failHCS] = wlanDMGHeaderBitRecover(rxDespread,nVar,cfgDMG);

Отобразитесь HCS проверяют восстановленные биты заголовка.

disp(failHCS);
   0

Восстановите информационные биты с заголовка DMG в передаче OFDM.

Передатчик

Создайте объект настройки DMG со схемой модуляции и кодирования (MCS) для OFDM PHY.

cfg = wlanDMGConfig('MCS',14);

Создайте входную последовательность битов данных и сгенерируйте форму волны DMG.

txBits = randi([0 1],8*cfg.PSDULength,1,'int8'); 
tx = wlanWaveformGenerator(txBits,cfg);

Канал AWGN

Установите ОСШ 10 дБ, вычислите шумовую степень (шумовое отклонение) и добавьте AWGN в форму волны при помощи awgn функция.

snr = 10;
nVar = 10^(-snr/10);
rx = awgn(tx,snr);

Получатель

Извлеките заголовок DMG.

ind = wlanFieldIndices(cfg);
rxHeader = rx(ind.DMGHeader(1):ind.DMGHeader(2));

Выполните демодуляцию OFDM на полученном заголовке и извлеките поднесущие данных.

sym = wlanDMGOFDMDemodulate(rxHeader);
info = wlanDMGOFDMInfo;
rxSym = sym(info.DataIndices,:);

Восстановите информационные биты с заголовка DMG.

[rxBits,failHCS] = wlanDMGHeaderBitRecover(rxSym,nVar,cfg);

Подтвердите, что восстановленные биты передают HCS.

disp(failHCS)
   0

Восстановите информационные биты с заголовка DMG в передаче одно поставщика услуг (SC).

Передатчик

Создайте объект настройки DMG с MCS для SC настройка PHY.

cfg = wlanDMGConfig('MCS',10);

Создайте входную последовательность битов данных и сгенерируйте форму волны DMG.

txBits = randi([0 1],8*cfg.PSDULength,1,'int8'); 
tx = wlanWaveformGenerator(txBits,cfg);

Канал AWGN

Установите ОСШ 10 дБ, вычислите шумовую степень (шумовое отклонение) и добавьте AWGN в форму волны при помощи awgn функция.

snr = 10;
nVar = 10^(-snr/10);
rx = awgn(tx,snr);

Получатель

Извлеките поле заголовка.

ind = wlanFieldIndices(cfg);
rxHeader = rx(ind.DMGHeader(1):ind.DMGHeader(2));

Измените полученную форму волны в блоки. Установите размер блока данных на 512 и защитную длину интервала к 64. Удалите последний защитный интервал из полученной формы волны данных.

blkSize = 512; 
Ngi = 64; 
rxHeader = reshape(rxHeader,blkSize,[]);
rxSym = rxHeader(Ngi+1:end,:);
disp(size(rxSym))
   448     2

Восстановите биты заголовка с заголовка DMG, задав разделенное на уровни распространение веры декодирование LDPC.

[rxBits,failHCS] = wlanDMGHeaderBitRecover(rxSym,nVar,cfg,'LDPCDecodingMethod','layered-bp');

Подтвердите, что восстановленные биты передают HCS.

disp(failHCS)
   0

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

свернуть все

Полученное поле заголовка DMG сигнализирует в виде действительной или комплексной матрицы. Содержимое и размер rxHeader зависит от физического уровня (PHY):

  • Одно поставщик услуг PHY — rxHeader временной интервал полевой сигнал заголовка DMG в виде 448 NBLKS матрицей действительных или комплексных чисел. Значение 448 является количеством символов в символе заголовка DMG и N, BLKS является количеством блоков заголовка DMG.

  • OFDM PHY — rxHeader сигнал частотного диапазона в виде 336 1 вектор-столбец действительных или комплексных чисел. Значение 336 является количеством поднесущих данных в поле заголовка DMG.

  • Управляйте PHY — rxHeader сигнал временной области, содержащий поле заголовка в виде вектор-столбца B-1 N действительных или комплексных чисел. N B является количеством despread символов.

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

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

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

Настройка DMG PPDU в виде wlanDMGConfig объект.

Информация о состоянии канала в виде 336 1 действительного вектор-столбца. Значение 336 задает количество поднесущих данных в поле данных DMG. csi требуется только для OFDM PHY.

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

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

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

Пример: 'MaximumLDPCIterationCount','12','EarlyTermination','false' задает максимум 12 LDPC декодирование итераций и отключает раннее завершение так, чтобы декодер завершил эти 12 итераций.

LDPC декодирование алгоритма в виде одного из этих значений:

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

свернуть все

Восстановленные биты информации о заголовке, возвращенные как вектор-столбец 64 элементов для OFDM и ФИЗИКИ одно поставщика услуг и вектор-столбец 40 элементов для ФИЗИКИ управления.

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

Чек HCS, возвращенный как логическое. Когда headerBits приводит к сбою проверку HCS, failHCS true.

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

Больше о

свернуть все

Поле заголовка DMG

В формате DMG header field отличается в размере и содержимом для каждого поддерживаемого физического уровня (PHY) схема модуляции. Это поле содержит дополнительную важную информацию для получателя.

Общий размер поля заголовка составляет 40 битов для ФИЗИКИ управления и 64 бита для SC и ФИЗИКИ OFDM.

Самые важные поля, характерные для трех режимов PHY:

  • Инициализация скремблера — Задает начальное состояние для скремблера.

  • MCS — Задает схему модуляции и кодирования, используемую в поле данных. Это не присутствует в управлении PHY.

  • Длина (данные) — Задает длину поля данных.

  • Пакетный тип — Задает, предназначается ли beamforming учебное поле для получателя или передатчика.

  • Учебная длина — Задает, используется ли beamforming учебное поле и если так, его длина.

  • HCS — Обеспечивает контрольную сумму на CRC для заголовка.

IEEE 802.11ad™-2012 задает подробные аспекты полевой структуры заголовка DMG. В частности, специфичные для модуляции аспекты PHY поля заголовка заданы в этих разделах:

  • Структура заголовка управления DMG PHY задана в Разделе 21.4.3.2.

  • Структура заголовка DMG OFDM PHY задана в Разделе 21.5.3.1.

  • SC DMG структура заголовка PHY задан в Разделе 21.6.3.1.

Алгоритмы

свернуть все

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

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

wlanDMGHeaderBitRecover функционируйте реализует алгоритм 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' аргумент пары "имя-значение".

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

wlanDMGHeaderBitRecover функционируйте реализует многоуровневый алгоритм 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

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

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

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

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

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

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

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

Ссылки

[1] STD IEEE 802.11ad-2012 (Поправка к Станд. IEEE 802.11™-2012, как исправлено Станд. IEEE 802.11ae™-2012 и Станд. IEEE 802.11a™-2012). “Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования. Поправка 4: Улучшения для Очень Высокой Операции Пропускной способности в Полосах ниже 6 ГГц”. Стандарт 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] Джингу Чен, R.M. Крем для загара, К. Джонс и Ян Ли. "Улучшенные алгоритмы декодирования суммы Min для неправильных кодов LDPC". В продолжениях. Международный симпозиум по теории информации, 2005. ISIT 2005., 449-53, 2005. https://doi.org/10.1109/ISIT.2005.1523374.

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

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

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

|

Введенный в R2017b