exponenta event banner

коммуникация. SphereDecoder

Декодирование входных данных с помощью сферического декодера

Описание

Sphere Decoder Система object™ декодирует символы, посланные по NT антеннам, используя алгоритм декодирования сферы.

Для декодирования входных символов с помощью сферического декодера:

  1. Определите и настройте объект-декодер сферы. См. раздел Строительство.

  2. Звонить step для декодирования входных символов в соответствии со свойствами comm.SphereDecoder. Поведение step относится к каждому объекту на панели инструментов.

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

H = comm.SphereDecoder создает объект System, H. Этот объект использует алгоритм сферического декодирования для нахождения решения максимального правдоподобия для набора принятых символов по каналу MIMO с NT передающими антеннами и NR приемными антеннами.

H = comm.SphereDecoder(Name,Value) создает объект-декодер сферы, H, с указанным именем свойства, равным указанному значению. Имя должно отображаться в отдельных кавычках ("). Можно указать несколько аргументов пары имя-значение в любом порядке, как Name1,Value1,...,NameN,ValueN.

H = comm.SphereDecoder(CONSTELLATION,BITTABLE) создает объект-декодер сферы, H, со свойством Constellation, равным CONSTELLATION, и BitTable свойство имеет значение BITTABLE.

Свойства

Constellation

Совокупность сигналов на передающую антенну

Укажите созвездие как сложный вектор столбца, содержащий точки созвездия, которым сопоставлены переданные биты. Значением по умолчанию является совокупность QPSK со средней мощностью 1. Длина вектора должна быть степенью два. Объект предполагает, что каждая передающая антенна использует одну и ту же совокупность.

BitTable

Битовое отображение, используемое для каждой точки созвездия.

Укажите битовое сопоставление для символов, Constellation свойство определяет как числовую матрицу. Значение по умолчанию: [0 0; 0 1; 1 0; 1 1], который соответствует значению по умолчанию Constellation значение свойства.

Размер матрицы должен быть [ConstellationLength bitsPerSymbol]. ConstellationLength представляет длину Constellation собственность. bitsPerSymbol представляет количество битов, которое кодирует каждый символ.

InitialRadius

Начальный радиус поиска алгоритма декодирования.

Укажите начальный радиус поиска для алгоритма декодирования как Infinity | ZF Solution. Значение по умолчанию: Infinity.

При установке для этого свойства значения Infinity, объект устанавливает начальный радиус поиска равным Inf.

При установке для этого свойства значения ZF Solution, объект задает начальный радиус поиска для решения с нулевым усилием. Этот расчет использует псевдоинверсию входного канала при декодировании. Большие совокупности и/или количество антенн могут выиграть от первоначального уменьшения радиуса поиска. В большинстве случаев, однако, дополнительное вычисление ZF Solution не даст преимущества.

DecisionType

Укажите метод принятия решения о декодировании как Soft | Hard. Значение по умолчанию: Soft.

При установке для этого свойства значения Softдекодер выводит логарифмические отношения правдоподобия (LLR) или мягкие биты.

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

Методы

шагДекодировать принятые символы с использованием алгоритма декодирования сферы
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

Модулировать набор битов с помощью 16-QAM созвездия. Передача сигнала в виде двух параллельных потоков по каналу MIMO. Декодирование с использованием сферического декодера с совершенными знаниями канала.

Укажите порядок модуляции, количество переданных битов, отношение Eb/No и отображение символа.

bps = 4; % Bits per symbol
M = 2^bps; % Modulation order
nBits = 1e3*bps;
ebno = 10;
symMap = [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7];

Создание и отображение отображения символов модулятора 16-QAM с помощью qammod и пользовательскую карту символов.

sym = qammod(symMap(1:M)',M,symMap,'UnitAveragePower',true,'PlotConstellation',true);

Figure contains an axes. The axes with title 16-QAM, Custom Mapping, UnitAveragePower=true contains 19 objects of type line, text.

Преобразуйте десятичное значение карты символов в двоичные биты, используя левый бит в качестве старшего бита (msb). Mоколо-bps матрица bitTable используется сферическим декодером.

bitTable = de2bi(symMap,bps,'left-msb');

Создание объекта системы каналов 2x2 MIMO с помощью PathGainsOutputPort установить в значение true для использования усиления тракта в качестве оценки канала. Чтобы обеспечить повторяемость результатов, задайте для объекта использование глобального потока случайных чисел.

mimo = comm.MIMOChannel( ...
    'PathGainsOutputPort',true, ...
    'RandomStream','Global stream');

Создайте объект системы каналов AWGN.

awgnChan = comm.AWGNChannel('EbNo',ebno,'BitsPerSymbol',bps);

Создайте объект Sphere Decoder System, который обрабатывает биты с помощью декодирования с жестким решением. Настройте с помощью пользовательской битовой таблицы и карты символов.

sphDec = comm.SphereDecoder('Constellation',sym, ...
    'BitTable',bitTable,'DecisionType','Hard');

Создание системного объекта с частотой ошибок.

berRate = comm.ErrorRate;

Задайте начальное число генератора глобальных случайных чисел.

rng(37)

Создание случайного потока данных.

data = randi([0 1],nBits,1);

Модулируйте данные и преобразуйте их в два потока для использования с каналом 2x2 MIMO.

modData = qammod(data,M,symMap,'InputType','bit','UnitAveragePower',true);
modData = reshape(modData,[],2);

Передача модулированных данных через канал замирания MIMO и добавление AWGN.

[fadedSig,pathGains] = mimo(modData);
rxSig = awgnChan(fadedSig);

Декодировать принятый сигнал с помощью pathGains в качестве совершенной оценки канала.

decodedData = sphDec(rxSig,squeeze(pathGains));

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

dataOut = double(decodedData(:));
errorStats = berRate(data,dataOut);
errorStats(1:2)
ans = 2×1

    0.0380
  152.0000

Алгоритм

Этот объект реализует детектор MIMO с плавным выходом max-log апостериорной вероятности (APP) посредством сферического декодера Шнорра-Юхнера (SESD) с мягким выходом, реализованного как обход дерева поиска одного дерева (STS). Алгоритм предполагает наличие одинаковой совокупности и битовой таблицы на всех передающих антеннах. В качестве входных данных, вектора принятого символа и матрицы оцененного канала алгоритм выводит логарифмические отношения правдоподобия (LLR) передаваемых битов.

Алгоритм предполагает модель системы MIMO с NT передающими антеннами и NR приемными антеннами, где NT символов одновременно посылаются, выраженные как:

y = Hs + n.

где y - принятые символы, H - матрица канала MIMO, s - переданный вектор символов и n - тепловой шум.

Детектор MIMO ищет решение с максимальным правдоподобием (ML), s ^ ML, так что:

s^ML=argmins∈o‖y−Hs‖2

где O - комплекснозначная совокупность, из которой выбраны NT элементов s.

Мягкое обнаружение также вычисляет логарифмическое отношение правдоподобия (LLR) для каждого бита, которое служит мерой надежности оценки для каждого бита. LLR вычисляется с использованием аппроксимации max-log:

L (xj, b) =mins∈xj,b (0) y−Hs‖2︸λML−mins∈xj,b (1) y−Hs‖2︸λj,bML¯

где

  • L (xj, b) - оценка LLR для каждого бита.

  • xj, b - каждый посланный бит, bth бит j-го символа.

  • xj, b (0) и xj, b (1) - это непересекающиеся наборы векторных символов, которые имеют бит bth в метке j-го скалярного символа, равный 0 и 1 соответственно. Два λ символа обозначают расстояние, вычисленное как норма в квадрате., а именно:

    • λ ML - расстояние s ^ ML.

    • λ j, bML ven - расстояние до контргипотезы, которая обозначает двоичное дополнение бита bth в двоичной метке j-й записи s ^ ML, а именно минимум набора символов xj, b (xj, bML wet), который содержит все возможные векторы, для которых бит bth j-й записи переворачивается по сравнению с той же записью s ^ ML.

      На основе того, является ли xj, b (xj, bML)0 или 1оценка LLR для бита xj, b вычисляется следующим образом:

      L (xj, b) = {λ ML λ j, bML vet, xj, bML = 0λ j, bML pw λ ML, xj, bML = 1

      Конструкция декодера стремится эффективно находить s ^ ML, λ ML и λ j, bML.

      Этот поиск может быть преобразован в поиск дерева посредством алгоритмов декодирования сферы. С этой целью канальная матрица разлагается на H = QR посредством QR разложения. Умножая слева значение y на значение QH, можно переформулировать проблему следующим образом:

      λ ML = arg mins∈o‖y¯−Rs‖2λj,bML¯=s∈xj,b (xj, bML) argmin y¯−Rs‖2

      Используя этот переформулированный оператор задачи, треугольная структура R может быть использована для размещения древовидной структуры таким образом, что каждый из листовых узлов соответствует возможному вектору s, и частичные расстояния до узлов в дереве могут быть вычислены кумулятивно, добавляя к частичному расстоянию родительского узла.

      В алгоритме STS одновременно осуществляется поиск метрик λ ML и λ j, bML. Цель состоит в том, чтобы иметь список, содержащий метрику λ ML, вместе с соответствующей битовой последовательностью xML и метриками xj, b (xj, bML) всех контргипотез. Поиск поддерева, исходящего из данного узла, выполняется только в том случае, если результат может привести к обновлению либо λ ML, либо λ j, bML wet.

      Алгоритм STS можно суммировать следующим образом:

      1. Если при достижении листового узла обнаруживается новая гипотеза ML (d (x) < λ ML), то все λ j, bML fet, для которых xj, b = xj, bML wet устанавливаются в λ ML, что теперь превращается в ценную контргипотезу. Затем λ ML устанавливается на текущее расстояние d (x).

      2. Если d (x) ≥λML, должны быть проверены только контргипотезы. Для всех j и b, для которых (d (x) < λ ML) и xj, b = xj, bML set, декодер обновляет λ j, bML set, чтобы быть d (x).

      3. Подчиненное дерево отсекается, если частичное расстояние узла больше, чем текущее λ j, bML, которое может быть затронуто при прохождении поддерева.

      4. STS завершается после того, как все узлы дерева были посещены один раз или обрезаны.

      Ограничения

      • Выходные значения LLR не масштабируются дисперсией шума. Для кодированных линий связи, использующих итеративное кодирование (LDPC или turbo) или MIMO OFDM с декодированием Витерби, выходные значения LLR должны масштабироваться с помощью информации о состоянии канала для достижения лучшей производительности.

      Избранная библиография

      [1] Штудер, К., А. Бург и Х. Бёльцкей. «Программно-выходное сферическое декодирование: алгоритмы и реализация VLSI». IEEE Журнал выбранных областей в коммуникации. Том 26, № 2, февраль 2008 г., стр. 290-300.

      [2] Чо, Ю.С., et.al. «Беспроводная связь MIMO-OFDM с MATLAB», IEEE Press, 2011.

      [3] Хохвальд, Б. М., С. тен Бринк. «Достижение близкой пропускной способности на канале с множеством антенн», IEEE Transactions on Communications, Vol. 51, No. 3, Mar 2003, pp. 389-399.

      [4] Агрелл, Э., Т. Эрикссон, А. Варди, К. Зегер. «Поиск ближайшей точки в решетках», IEEE Transactions on Information Theory, Vol. 48, No. 8, Aug 2002, pp. 2201-2214.

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

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