
- •2.3 Ldpc коды: декодирование
- •2.3.1 Алгоритм sum-product
- •2.3.2 Интерпретация алгоритма sum-product
- •2.3.3 Другие алгоритмы декодирования
- •2.4 Ldpc коды: анализ
- •2.4.1 Анализ ldpc кодов Галлагера
- •2.4.2 Дерево декодирования
- •2.4.3 Плотность эволюции для ldpc кодов
- •2.4.4 Порог декодирования ldpc кода
- •2.4.5 Анализ диаграмм внешней передачи информации
2.3.2 Интерпретация алгоритма sum-product
Когда
сообщение LLR положительно
это означает, что
,
и как только величина этого сообщения
возрастает, сообщение становится более
надежным. В алгоритме sum-product
(и других алгоритмах передачи сообщений)
сообщения, которые переменный узел
посылает своим соседним проверочным
узлам, представляет собой его утверждение
об их значении вместе с мерой надежности.
Кроме того, сообщение, которое проверочный
узел посылает на переменный соседний
узел, есть утверждение о значении этого
переменного узла вместе с некоторой
мерой надежности.
В sum-product декодере переменной узел получает утверждение, что все соседние проверочные узлы знают о нем. Переменный узел обрабатывает эти сообщения (в данном случае простое суммирование) и посылает корректирующие утверждения о себе обратно в соседние проверочные узлы. Это может быть понятно, когда достоверность сообщений от переменного узла увеличивается с получением числа (наиболее правильного) утверждений о себе. Это очень похоже на многократный код, который получает составные утверждения для одиночного бита из канала и, следовательно, способный сделать более надежное решение.
Основная задача проверочного узла заставить своих соседей удовлетворять четности. Таким образом, для соседнего переменного узла , он обрабатывает утверждения других соседних переменных узлов о себе и посылает сообщение узлу , которое указывает на утверждение этого проверочного узлов об узле . Знак этого сообщения выбирается так, чтобы воздействовать на контроль четности и его величина зависит от надежности других входящих сообщений.
Вследствие этого, подобно переменному узлу, исходящее сообщение от проверочного узла соответствует обработке всех входящих дуг, кроме одной, которая получает исходящее сообщение. Однако, в отличие от переменного узла, проверочный узел получает утверждение всех соседних переменных узлов про их собственные значения. В результате, надежность исходящего сообщения даже меньше, чем у наименее надежного входящего сообщения. Другими словами, надежность сообщения уменьшается на проверочных узлах. Это также может быть проверено по (2.8), где величина исходящего сообщения меньше, чем у входящих сообщений.
Так, в простых словах, на проверочном узле, мы воздействуем на соседние переменные узлы, чтобы удовлетворить даже проверку четности за счет потери надежности в сообщениях, но на переменном узле мы усиливаем надежность. Этот процесс повторяется многократно, чтобы очистить ошибок, вводимых каналом.
Следуя этой интерпретации алгоритма sum-product, другие алгоритмы декодирования могут быть описаны, как по существу делающие то же самое с меньшей точностью и, возможно, менее сложно.
2.3.3 Другие алгоритмы декодирования
В этом разделе мы представляем ряд важных алгоритмов передачи сообщений, которые по существу являются приближениями алгоритма sum-product. Здесь не показан полный перечень таких алгоритмов, но здесь охвачено большинство алгоритмов, которые будут использоваться в последующих главах этой работы.
Алгоритм min-sum:
В алгоритме
min-sum метод
корректировки на переменном узле такой
же, как в алгоритме sum-product
(2.9), но метод корректировки на проверочном
узле
упрощается
Обратите
внимание, что
результата
аппроксимируется как минимум абсолютного
значения результирующего знака. Эта
аппроксимация становится более точной
величиной, когда величина сообщения
увеличивается. Таким образом, в последующих
итерациях, когда величина сообщения
обычно большая, производительность
этого алгоритма является почти такой
же, как и алгоритма sum-product.
Алгоритм декодирования Галлагера А:
В этом алгоритме, введенном Галлагером [11], сообщение принадлежит алфавиту {0, 1}. Другими словами, используется не программная информация.
Метод корректировки на проверочном узле :
где ⨁ представляет сумму по модулю два двоичных сообщений.
На
переменном узле
,
исходящее сообщение
с такое же, как и внутреннее сообщение,
если все внешние сообщения не согласны
с внутренним сообщением. В этом случае
исходящее сообщение такое же, как и
внешние сообщения. Другими словами
где
является внутренним двоичным сообщением
и
представляет собой дополнение к двоичной
величине
.
В оставшейся части этой работы мы ссылаемся на алгоритм декодирования Галлагера А. Алгоритм имеет худшее исполнение по сравнению с программными методами декодирования, введенными выше, но вычислительно гораздо менее сложный.
Алгоритм декодирования Галлагера Б:
Этот алгоритм также принадлежит Галлагеру и, подобно Алгоритму А, все сообщения имеют двоичное значение. Единственная разница между этим алгоритмом и Алгоритм А это метод корректировки переменного узла. На переменном узле исходящее сообщение
где
целое число в диапазоне
.
Здесь, исходящее сообщение переменного
узла такое же, как внутреннее сообщение,
кроме
внешних сообщений, противоречащих друг
другу. Значение
может меняться от одной итерации к
другой. Оптимальное значение
для равномерного
LDPC
кода вычисляется по Галлагеру [11], и
наименьшее число
,
для которого
где
и
переходные вероятности канала (внутренняя
величина ошибки в сообщении) и внешняя
величина ошибки в сообщении, соответственно.
С этого момента, мы будем ссылаться на
алгоритм Галлагера Б как на Алгоритм
Б.
Мы докажем в главе 3, что алгоритм Б является наилучшим из возможных алгоритмов передачи двоичных сообщений равномерных LDPC кодов. Для неравномерных LDPC кодов, мы также покажем, что алгоритм Б самый оптимальный среди всех двоичных алгоритмов передачи сообщений, когда узлы в фактор графе кода не имеют информации об узловых степенях в их местном районе.
В обоих алгоритмах А и Б, сообщения не несут программную информацию. Поэтому не удивительно, что производительность этих двух алгоритмов, по сравнению с алгоритмом sum-product, низкого качества. Но, конечно, они вычислительно гораздо дешевле. По мере того, как программа декодера (например, декодер sum-product) стремится по направлению сближения, величина сообщений становится очень большой, поэтому программная информация становится менее полезной. Мы используем эту особенность в главе 7, чтобы ускорить процесс декодирования, позволяя декодеру выбрать свой метод декодирования на каждой итерации, и мы увидим, что декодер стремится перейти на алгоритмы аппаратного декодирования в последующих итерациях.