wlanDMGHeaderBitRecover

Восстановите биты с поля DMG Header

Описание

пример

[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,cfgDMG) восстанавливает headerBits, вектор-столбец битов, от rxHeader, поле DMG Header передачи направленного multi-gigaqbit (DMG). Функция восстанавливает headerBits при помощи шумового отклонения оценивают noiseVarEst и параметры передачи DMG cfgDMG.

Функция также возвращает failHCS, результат последовательности проверки заголовка (HCS) на восстановленных битах.

пример

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

пример

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

Примеры

свернуть все

Восстановите биты с поля DMG Header в передаче управления.

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

cfgDMG = wlanDMGConfig('MCS',0);

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

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

Передайте форму волны через бесшумный канал.

noiseVarEst = 0;

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

ind = wlanFieldIndices(cfgDMG);
rxSym = waveform(ind.DMGHeader(1):ind.DMGHeader(2));

Вращайте полученный сигнал 90 градусами.

rxSymRotated = rxSym.*exp(-1i*(pi/2)*(0:size(rxSym,1) - 1).');

Сгенерируйте последовательность Golay длины 32 при помощи wlanGolaySequence функция.

len = 32;
Ga = wlanGolaySequence(len);

Despread сигнал с фактором равняются golay длине последовательности.

rxHeader = reshape(rxSymRotated,len,length(rxSymRotated)/len)'*Ga/len;

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

[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,cfgDMG);

Отобразите результат проверки HCS.

disp(failHCS);
   0

Восстановите биты с поля DMG Header передачи OFDM.

Сконфигурируйте передачу OFDM путем создания объекта настройки DMG с MCS 14.

cfgDMG = wlanDMGConfig('MCS',14);

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

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

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

snr = 10;                      % SNR, in dB
noiseVarEst = 10^(-snr/10);    % Noise variance
rxSig = awgn(waveform,snr);

Извлеките поле DMG Header из полученного сигнала.

ind = wlanFieldIndices(cfgDMG);
rxSym = rxSig(ind.DMGHeader(1):ind.DMGHeader(2));

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

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

Восстановите биты с поля DMG Header, приняв оценку CSI из всех единиц.

csi = ones(length(info.DataIndices),1);
[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,csi,cfgDMG);

Подтвердите, что восстановленные биты передают 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 Header сигнализирует в виде вектор-столбца или матрицы. Содержимое и размер этого входа зависят от настройки PHY, которую вы задаете в cfgDMG входной параметр.

  • SC PHY — Этот вход содержит сигнал поля DMG Header временного интервала в 448 Nblks матрицей. Значение 448 является количеством символов в блоке DMG Header, и N blks является количеством блоков Заголовка DMG.

  • OFDM PHY — Этот вход содержит демодулируемое Поле данных DMG символы OFDM в вектор-столбце длины 336. Значение 336 является количеством поднесущих данных в поле DMG Header.

  • Управляйте PHY — Этот вход содержит поле DMG Header временного интервала в вектор-столбце длины N b, где N b является количеством despread символов.

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

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

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

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

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

Зависимости

Чтобы включить этот вход, задайте настройку OFDM PHY в cfgDMG входной параметр.

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

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

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

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

свернуть все

Биты восстанавливаются с поля DMG Header, возвращенного как 1, 0, или вектор-столбец с бинарным знаком.

  • Если вы задаете OFDM или SC настройка PHY в cfgDMG введите, этот выход содержит 64 элемента.

  • Если вы задаете управление настройка PHY в cfgDMG введите, этот выход содержит 40 элементов.

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

Результат проверки HCS, возвращенный как 0 или 1. Когда биты, восстановленные с Заголовка DMG, приводят проверку HCS к сбою, функция возвращает этот выходной параметр как 1. В противном случае функция возвращает этот выходной параметр как 0.

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

Больше о

свернуть все

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

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

Общий размер поля DMG Header составляет 40 битов для управления настройки PHY и 64 бита для настройки OFDM PHY и SC.

Эти поля характерны для трех режимов PHY.

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

  • MCS — Задает MCS для Поля данных DMG (не существующий в управлении 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.

Алгоритмы

свернуть все

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

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

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

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

|

Введенный в R2017b