Алгоритмы работы блоков помехоустойчивого кодирования / Декодирование |
На настоящий момент известно множество модификаций АИБ. Такой интерес к этому алгоритму вызван его чрезвычайной простотой, а также неплохой эффективностью, демонстрируемой для некоторых классов кодов. В отличие от алгоритмов, основанных на АРД, главной задачей которых было максимальное снижение вычислительных затрат по сравнению с алгоритмом АРД при минимальной потере в эффективности, для алгоритмов основанных на АИБ стоит противоположная задача - максимальное повышение эффективности декодирования с минимальным увеличением сложности. Одной из наиболее простых модификаций АИБ является взвешенный алгоритм ИБ (алгоритм ВИБ, АВИБ, англ. weighted bit-flip, WBF). Как следует из названия, алгоритм ВИБ использует мягкие решения демодулятора относительно принятых бит. Для его работы модем должен оценивать достоверность каждого из этих решений. В простейшем случае достоверность - это модель амплитуды принятого сигнала для соответствующего бита. Шаги, выполняемые алгоритмом ВИБ, совпадают с шагами алгоритма ИБ, отличие заключается только в расчете сообщений от проверочных узлов. При их вычислении используются оценки достоверности принятых бит:
где α - знак, β – модуль сообщения от i-го информационного узла к j-му проверочному узлу. Таким образом, каждая проверка характеризуется не только тем, выполняется она или нет, но и достоверностью этого суждения. При этом достоверность проверки определяется её самым ненадежным битом. Полученное таким образом значение также можно рассматривать как достоверность того, что рассматриваемая проверка содержит искаженный бит. Опираясь на все вышесказанное, АВИБ можно представить в обобщенном виде следующим образом.
Шаг 1. Инициализация. Для всех информационных узлов i инициализировать сообщения α i , хранящиеся в информационных узлах, жёсткими оценками принятых бит.
Шаг 2. Обновление проверочных узлов. Для всех проверочных узлов CN вычислить исходящие сообщения Lj→i:
и передать их соответствующим информационным узлам VN.
Шаг 3. Обновление битовых узлов. Вычислить сообщения L i→j , исходящие от информационных узлов VN:
и передать их соответствующим проверочным узлам.
Шаг 4. Получение окончательных решений. Для всех i =0,1,...,N−1 найти жёсткие решения, а для
Шаг 5. Проверка правильности декодирования. Вычислить синдром:
где H - проверочная матрица LDPC кода. Если s= 0 или число итераций достигло максимума – вычисления прекращаются, а полученное жесткое решение считается результатом декодирования, в противном случае вычисления продолжаются с шага 2.