wlanDMGHeaderBitRecover

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

Описание

пример

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

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

пример

[headerBits,failHCS] = wlanDMGHeaderBitRecover(rxHeader,noiseVarEst,csi,cfgDMG) улучшает демпфирование поднесущих 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 с помощью wlanFieldIndices функция.

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

Поверните принятый сигнал на 90 степени.

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

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

len = 32;
Ga = wlanGolaySequence(len);

Сжать сигнал с коэффициентом, равным длине последовательности голей.

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

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

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

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

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

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

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

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

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

Строение передачи DMG, заданная как wlanDMGConfig объект.

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

Зависимости

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

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

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

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

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

Алгоритм декодирования 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.

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Подробнее о

свернуть все

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

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

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

Эти поля являются общими для трех режимов PHY.

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

  • MCS - задает MCS для поля DMG Data (отсутствует в PHY управления)

  • Length - Задает длину поля данных

  • Тип пакета - Определяет, предназначено ли поле обучения формирования луча для приемника или передатчика

  • Длина обучения - задает наличие поля обучения формирования луча и, при наличии, длину поля

  • HCS - предоставляет контрольную сумму на CRC для заголовка.

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

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

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

  • Структура заголовка DMG SC 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 для танха (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.11ad-2012 (Поправка к IEEE Std 802.11™-2012 с поправками IEEE Std 802.11ae™-2012 и IEEE Std 802.11a™-2012). "Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического слоя (PHY). Поправка 4: Улучшения для очень высокой пропускной способности в полосах ниже 6 ГГц ". Стандарт 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 ®

.
Введенный в R2017b
Для просмотра документации необходимо авторизоваться на сайте