exponenta event banner

nrLDPCDecode

Декодирование с низкой плотностью контроля четности (LDPC)

Описание

[out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter) возвращает декодированную LDPC выходную матрицу out для матрицы входных данных in, номер базового графа bgnи максимальное количество итераций декодирования maxNumIter. Функция также возвращает фактическое количество итераций actNumIter и окончательные проверки четности по кодовому слову finalParityChecks.

Декодер использует алгоритм передачи сообщений суммарного произведения. Биты данных должны кодироваться LDPC, как определено в TS 38.212 Раздел 5.3.2 [1].

пример

[out,actNumIter,finalParityChecks] = nrLDPCDecode(___,Name,Value) указывает необязательные аргументы пары имя-значение в дополнение к входным аргументам в предыдущем синтаксисе.

Примеры

свернуть все

Создайте передаваемые данные, состоящие из двух сегментов кодовых блоков длиной 2560 и 36 битов-заполнителей на конце.

C = 2;          
K = 2560;       
F = 36;    
txcbs = ones(K-F,C);
fillers = -1*ones(F,C);
txcbs = [txcbs;fillers];                

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

bgn = 2; 
txcodedcbs = nrLDPCEncode(txcbs,bgn);   

Преобразование передаваемых данных в динамические биты. Наполнители в передаваемых данных не имеют мягких битов логарифмического отношения правдоподобия (LLR).

rxcodedcbs = double(1-2*txcodedcbs);    
FillerIndices = find(txcodedcbs(:,1) == -1);
rxcodedcbs(FillerIndices,:) = 0;        

Декодируйте кодированное кодовое слово максимум с 25 итерациями.

[rxcbs,actualniters] = nrLDPCDecode(rxcodedcbs,bgn,25);  

Замена битов заполнителя на ноль в данных передачи и сравнение результатов кодирования и декодирования.

txcbs(end-F+1:end,:) = 0;    
isequal(rxcbs,txcbs)                
ans = logical
   1

actualniters
actualniters = 1×2

     1     1

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

свернуть все

Скорость восстановленных мягких битов для входных сегментов кодовых блоков, заданных как реальная матрица. Количество столбцов в in равно количеству запланированных сегментов кодовых блоков. Количество строк в in равна длине кодового слова, с некоторыми систематическими битами, проколотыми.

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

Номер базового графика, указанный как 1 или 2. Значение выбирает один из двух базовых графиков, определенных в TS 38.212 Раздел 5.3.2 [1].

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

Максимальное число итераций декодирования, указанное как положительный целочисленный скаляр. Декодирование завершается, когда все проверки четности выполнены, или после maxNumIter количество итераций.

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

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

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

Пример: [out,actNumIter,finalParityChecks] = nrLDPCDecode(in,bgn,maxNumIter,'DecisionType','hard')

Формат вывода, заданный как пара, разделенная запятыми, состоящая из 'OutputFormat' и одно из этих значений:

  • 'info' - Количество строк в out равна длине информационных битов.

  • 'whole' - Количество строк в out равна длине кодового слова.

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

Метод решения, используемый для декодирования, указанный как разделенная запятыми пара, состоящая из 'DecisionType' и одно из этих значений:

  • 'hard' - Тип данных out является int8.

  • 'soft' - Выходные данные out содержит логарифмические отношения правдоподобия того же типа данных, что и in.

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

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

Примечание

При указании значения аргумента пары имя-значение как 'Normalized min-sum' или 'Offset min-sum'перед декодированием функция отсчитывает входные значения LLR (логарифмическое отношение правдоподобия) к диапазону [-1e10 1e10].

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

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

Зависимости

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

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

Смещение для декодирования минимальной суммы смещения, указанное как пара, разделенная запятыми, состоящая из 'Offset' и неотрицательный конечный вещественный скаляр.

Зависимости

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

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

Критерии окончания декодирования, определенные как разделенная запятыми пара, состоящая из 'Termination' и одно из этих значений:

  • 'early' - Декодирование завершается, когда все проверки четности выполнены или после maxNumIter количество итераций.

  • 'max' - Декодирование завершается после maxNumIter количество итераций.

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

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

свернуть все

Декодированное кодовое слово LDPC или информационные биты, возвращаемые в виде реальной матрицы. Количество столбцов в out равно количеству запланированных сегментов кодовых блоков. Количество строк в out зависит от аргумента пара имя-значение 'OutputFormat'. Тип данных out зависит от аргумента пара имя-значение 'DecisionType'.

Типы данных: single | double | int8

Фактическое число итераций, возвращаемое в виде вектора строки положительных целых чисел. Длина actNumIter равно количеству столбцов в in. i-й элемент в actNumIter соответствует фактическому количеству итераций, выполненных для i4-я колонна in.

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

Окончательные проверки четности, возвращаемые в виде матрицы. Количество строк в finalParityChecks равен количеству битов проверки четности в кодовом слове LDPC. iтретий столбец в finalParityChecks соответствует окончательным проверкам четности для iТх кодовое слово.

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

Алгоритмы

свернуть все

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

Декодирование распространения убеждений

Реализация алгоритма распространения убеждений основана на алгоритме декодирования, представленном в [2]. Для передаваемого кодового слова LDPC, c, где c = (c0, c1,..., cn − 1), вход в декодер LDPC представляет собой логарифмическое отношение правдоподобия (LLR) значение L (ci) = log (Pr ( ci = 0 |  выход канала для ci) Pr (ci = 1 | выход канала для ci)).

В каждой итерации ключевые компоненты алгоритма обновляются на основе следующих уравнений:

L (rji) = 2 атан (∏i′∈Vj\itanh (12L (qi′j))),

L (qij) = L (ci) +∑j′∈Ci\jL (rj′i), инициализированный как L (qij) = L (ci) перед первой итерацией, и

L (Qi) = L (ci) +∑j′∈CiL (rj′i).

В конце каждой итерации L (Qi) является обновленной оценкой значения LLR для переданного бита ci. Значение L (Qi) является выходным сигналом мягкого решения для ci. Если L (Qi) < 0, выход жесткого решения для ci равен 1. В противном случае выходной сигнал равен 0.

Наборы индексов Ci\j и Vj\i основаны на матрице контроля четности (PCM). Наборы индексов 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).

Когда аргумент пары имя-значение 'Termination' имеет значение 'max'декодирование завершается после maxNumIter количество итераций. Когда 'Termination' имеет значение 'early'декодирование завершается, когда выполняются все проверки четности (HcT = 0) или послеmaxNumIter количество итераций.

Декодирование распространения многоуровневого убеждения

Реализация многоуровневого алгоритма распространения верований основана на алгоритме декодирования, представленном в [3], раздел II.А. Цикл декодирования итерируется по подмножествам строк (уровней) ИКМ. Для каждой строки m в слое и каждого битового индекса j реализация обновляет ключевые компоненты алгоритма на основе этих уравнений:

(1) L (qmj) = L (qj) − Rmj,

(2) Amj=∑n  N (m) n≠jψ (L (qmn)),

(3) smj=∏n  N (m) n≠jsign (L (qmn)),

(4) Rmj = smj (Amj), и

(5) L (qj) = L (qmj) + Rmj.

Для каждого уровня уравнение (5) декодирования работает на объединенном входе, полученном из текущих LLR входов L (qmj), и предыдущий уровень обновляет Rmj.

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

Декодирование нормализованной минимальной суммы

Реализация нормализованного алгоритма декодирования с минимальной суммой следует за многоуровневым алгоритмом распространения веры с уравнением (2), замененным на

Amj =  minn N (m) n≠j (|  L (qmn) |⋅α),

где α находится в диапазоне (0, 1] и является масштабным коэффициентом, указанным ScalingFactor. Это уравнение является адаптацией уравнения (4), представленного в [4].

Декодирование минимальной суммы смещения

Реализация алгоритма декодирования со смещением min-sum следует за многоуровневым алгоритмом распространения веры с уравнением (2), замененным на

Amj =  max (minn  N (m)  n≠j (| L ( qmn) | β), 0),

где β ≥ 0 и является смещением, указанным Offset. Это уравнение является адаптацией уравнения (5), представленного в [4].

Ссылки

[1] 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

[2] Галлагер, Роберт Г. Коды проверки четности с низкой плотностью, Кембридж, Массачусетс, MIT Press, 1963.

[3] Hocevar, D.E. «Архитектура декодера с уменьшенной сложностью посредством многоуровневого декодирования кодов LDPC». Семинар IEEE по системам обработки сигналов, 2004 год. SIPS 2004. дои: 10.1109/SIPS.2004.1363033

[4] Чен, Jinghu, R.M. Крем для загара, К. Джонс и Ян Ли. «Улучшены алгоритмы декодирования с минимальной суммой для нерегулярных LDPC-кодов». В разбирательстве. Международный симпозиум по теории информации, 2005 год. ISIT 2005. дои: 10.1109/ISIT.2005.1523374

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

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