exponenta event banner

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, которые используют конфигурацию PHY с ортогональным мультиплексированием с частотным разделением каналов (OFDM).

пример

[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).');

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

len = 32;
Ga = wlanGolaySequence(len);

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

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

Установите SNR 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-by-Nblks. Значение 448 является количеством символов в блоке заголовка DMG, а Nblks - количеством блоков заголовка DMG.

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

  • Управляющий PHY - этот вход содержит поле DMG Header временной области в векторе столбца длиной Nb, где Nb - количество сжатых символов.

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

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

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

Конфигурация передачи DMG, указанная как wlanDMGConfig объект.

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

Зависимости

Чтобы включить этот вход, укажите конфигурацию OFDM PHY в cfgDMG вход.

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

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

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

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

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

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

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

Зависимости

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

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

Смещение для декодирования 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, возвращенные как 1, 0или вектор столбца с двоичным значением.

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

  • Если вы указываете контрольную конфигурацию PHY в cfgDMG вход, этот выход содержит 40 элементов.

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

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

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

Подробнее

свернуть все

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

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

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

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

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

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

  • Длина - указывает длину поля данных

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

  • Training Length - указывает наличие обучающего поля для формирования луча и, при его наличии, длину поля.

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

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

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

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

  • Структура коллектора PHY DMG SC приведена в разделе 21.6.3.1.

Алгоритмы

свернуть все

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

.
Представлен в R2017b