Декодер LDPC

Декодируйте бинарный имеющий малую плотность код с проверкой четности, заданный матрицей проверки четности

Библиотека

Блокируйте подбиблиотеку Выявления ошибок и Исправления

Описание

Этот блок реализует алгоритм передачи сообщений для декодирования кодов имеющей малую плотность проверки четности (LDPC), которые являются кодами системы управления линейной погрешности с разреженными матрицами проверки четности и длинами длинного блока, которые могут достигнуть производительности около предела Шеннона.

Блок LDPC Decoder разработан к:

  • Декодируйте типичные бинарные коды LDPC, где никакие шаблоны в матрице проверки четности не приняты.

  • Выполните много итераций, которые вы задаете или запускаете, пока все проверки четности не удовлетворены.

  • Выведите трудные решения или мягкие решения (логарифмические отношения правдоподобия) для декодируемых битов.

(nk), и n количество строк и столбцов, соответственно, в матрице проверки четности.

Этот блок принимает с действительным знаком, n×1 входной сигнал вектор-столбца, типа double. Каждый элемент является логарифмическим отношением правдоподобия для полученного бита (более вероятно, чтобы быть 0, если логарифмическое отношение правдоподобия положительно). Первые элементы k соответствуют информационной части кодовой комбинации.

И вход и вывод являются сигналами дискретного времени. Отношение выходного шага расчета к входному шагу расчета n/k если только информационная часть декодируется, и 1, если целая кодовая комбинация декодируется.

Этот значок показывает все порты, включая дополнительные порты.

Включите выходной порт Iter путем нажатия на Output number of iterations executed. Выходы порта Iter количество итераций, выполняемых Декодером LDPC.

Включите выходной порт ParChk путем нажатия на Output final parity checks. Выходы порта ParChk итоговые проверки четности после декодирования кода входа LDPC.

Декодирование алгоритма

Вход к декодеру LDPC является логарифмическим отношением правдоподобия (LLR), L(ci), который задан следующим уравнением

L(ci)=журнал(PR(ci=0|канал вывод для ci)PR(ci=1|канал вывод для ci))

где ci ith бит переданной кодовой комбинации, c. В алгоритме существует три ключевых переменные: L(rji), L(qij), и L(Qi). L(qij) инициализируется как L(qij)=L(ci). Для каждой итерации, обновления L(rji), L(qij), и L(Qi) использование следующих уравнений

L(rji)=2 atanh (iVj\itanh(12L(qij)))

L(qij)=L(ci)+jCi\jL(rji)

L(Qi)=L(ci)+jCiL(rji)

где индекс устанавливает, Ci\j и Vj\i, выбраны как показано в следующем примере.

Предположим, что у вас есть следующая матрица H проверки четности:

H=(11110000001000111000010010011000100101010001001011)

Для i=5 и j=3, индексные наборы были бы

В конце каждой итерации, L(Qi) обеспечивает обновленную оценку по опыту логарифмического отношения правдоподобия для переданного бита ci.

Мягкое решение вывод для ci L(Qi). Трудное решение вывод для ci 1 если L(Qi)<0, и 0 в противном случае.

Если свойство DoParityCheck установлено в 'no', алгоритм выполняет итерации так же много раз, как задано параметром Number of iterations.

Если свойство DoParityCheck установлено в 'yes', то в конце каждой итерации алгоритм проверяет уравнение проверки четности (HcT=0) и остановки, если это удовлетворено.

В этом алгоритме atanh (1) и atanh (-1) собираются быть 19.07 и-19.07 соответственно, чтобы избежать бесконечных чисел от того, чтобы быть используемым в уравнениях алгоритма. Эти числа были выбраны, потому что MATLAB возвращается 1 для tanh (19.07) и-1 для tanh (-19.07), из-за конечной точности.

Параметры

Parity-check matrix

Этот параметр принимает разреженную матрицу с размерностью n-k by n (где n> k> 0) вещественных чисел. Все ненулевые элементы должны быть равны 1. Предел верхней границы для значения n 231-1

Output format

Вывод является сигналом вектор-столбца с действительным знаком. Опциями является Information part и Whole codeword.

  • Когда вы этот параметр к Information part, вывод содержит элементы k.

  • Когда вы устанавливаете этот параметр на whole codeword, вывод содержит элементы n

Decision type

Опциями является Hard decision и Soft decision.

  • Когда вы устанавливаете этот параметр на Hard decision, вывод является декодируемыми битами (типа double или булев).

  • Когда вы устанавливаете этот параметр на Soft decision, вывод является логарифмическими отношениями правдоподобия (типа double).

Output data type

Этот параметр появляется только, когда Decision type установлен в Hard decision.

Опциями является boolean и double.

Number of iterations

Это может быть любым положительным целым числом.

Stop iterating when all parity checks are satisfied

Если проверяется, блок определит, удовлетворены ли проверки четности после каждой итерации и остановки, если все удовлетворены.

Output number of iterations executed

Добавляет выходной порт Iter к блоку, когда выбрано.

Output final parity checks

Добавляет выходной порт ParChk к блоку, когда выбрано.

Поддерживаемый тип данных

ПортПоддерживаемые типы данных
\in
  • Плавающая точка двойной точности

  • Плавающая точка двойной точности

  • Булевская переменная, когда Decision type является Hard decision

Примеры

Введите commdvbs2 в командной строке, чтобы видеть пример, который использует этот блок.

Ссылки

[1] Gallager, Роберт Г., имеющие малую плотность коды с проверкой четности, Кембридж, MA, нажатие MIT, 1963.

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

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

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

Блоки

Системные объекты

Функции