Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
258
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать

Глава 19. Помехоустойчивое кодирование в системах передачи

Рис. 19.30. Графики зависимости вероятности ошибки на бит Pb для сверточного тур-

бокода со скоростью r = 1/2, длиной кодового ограничения K = 5, глубиной

перемежения 65 536 битов в канале с белым шумом от отношения сигнал/шум

Eb/N0 при разном числе итераций [7.22]

floor) — резкое снижение крутизны кривых помехоустойчивости для заданного турбокода. Исследования показали, что одним из факторов, влияющих на точку перегиба, является длина перемежителя. Увеличение длины перемежителя

в4–5 раз понижает точку перегиба по вероятности ошибки примерно в 2 раза. Но есть и другие факторы, влияющие на положение точки перегиба и крутизну кривых помехоустойчивости после перегиба [7.19].

Следует отметить также влияние составляющих кодов на характеристики турбокодов. Важными параметрами, оказывающими влияние на эффективность турбокода, являются длина конструктивного ограничения составляющих кодов и их образующие полиномы [7.19]. Так, для турбокода с длиной конструктивного ограничения K = 3 оптимальными порождающими полиномами в смысле максимизации свободного расстояния являются полиномы G0 = 7 и G1 = 5 в восьмеричном представлении. Для длины конструктивного ограничения K = 4 оптимальными образующими полиномами составляющих кодов являются G0 = 15 и G1 = 17

ввосьмеричном представлении. Эффективность данного турбокода на 0,25 дБ лучше, чем турбокода с K = 3. Для турбокода с конструктивной длиной K = 5 используются образующие полиномы G0 = 37 и G1 = 21. Увеличение длины конструктивного ограничения K улучшает характеристики турбокода, однако при увеличении K на единицу сложность декодера удваивается, поэтому на практике часто ограничиваются применением турбокодов с K = 3.

19.5. Турбокодирование

19.5.6. Блочные турбокоды

Блочные турбокоды TPC, как и сверточные турбокоды ТСС, имеют высокие показатели помехоустойчивости. Исследования показали несколько более высокую эффективность блочных турбокодов по сравнению со сверточными при кодовых скоростях r > 0,7 [7.21]. Блочные турбокоды могут формироваться как с последовательным, так и с параллельным каскадированием двух или нескольких блочных кодов [7.22]. Считается, что блочные турбокоды с последовательным каскадированием более эффективны, чем с параллельным.

Так, блоковый турбокод (64, 57) × (64, 57) со скоростью r = 0,793 при вероятности битовой ошибки Pb = 10−6 имеет на 1,5 дБ большую эффективность, чем каскадное соединение кода Рида–Соломона и сверточного кода с r = 0,789. Это результат всего лишь на 1,1 дБ хуже теоретически достижимой границы Шеннона для подобных параметров кодирования и канала [7.23, 7.24].

Особенностью TPC является использование в качестве составных блоковых систематических кодов, таких как расширенные коды Хэмминга, коды с контролем четности (parity check codes), а также коды повторения (repetition codes). Применение простых составных кодов в совокупности с итеративным алгоритмом декодирования позволяет достичь достаточно хороших результатов как по вычислительным затратам, так и по эффективности [7.22].

Двумерный блочный турбокод условно изображается в виде прямоугольника (рис. 19.31) и основывается на двух систематических кодах: горизонтальном Cx и вертикальном Cy .

Входной поток битов, поступающих на кодер, построчно записывается в матрицу размерности kx × ky . Сначала кодируется ky строк, затем nx столбцов, в результате чего получается кодированная матрица, содержащая как информационные, так и проверочные символы. Каждая строка матрицы представляет собой кодовое слово Cx=(nx, kx) и состоит из kx информационных символов и nx − kx проверочных. Каждый столбец, соответственно, представляет собой кодовое слово Cy и состоит из ky информационных символов и ny −ky проверочных. Как правило, передача битов из кодированной матрицы в последующие цепи осуществляется построчно.

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

В качестве достоинств блочных турбокодов можно отметить следующие [7.23].

Блочные турбокоды имеют большое минимальное расстояние Хемминга. Минимальное расстояние Хемминга для TPC равно произведению минимальных расстояний Хемминга для Cx и Cy составляющих кодов, из-за чего улучшаются характеристики кода при низких вероятностях ошибки. Поэтому коды, построенные по принципу TPC, не имеют эффекта насыщения error floor в отличие от сверточных турбокодов.

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

Глава 19. Помехоустойчивое кодирование в системах передачи

Рис. 19.31. Структура блочного турбокода

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

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

Итерационный процесс декодирования TPC может быть построен на алгоритмах MAP и log-MAP. В качестве примера ниже приводятся результаты декодирования TPC (табл. 19.8), рекомендованных стандартом IEEE 802.16 (WiMAX), по алгоритму log-MAP [7.23].

Таблица 19.8. Результаты декодирования ТРС

Код

Скорость, r

Примерная скорость, R

(32, 26) × (16, 11)

0,5586

1/2

(32, 26) × (16, 15)

0,762

3/4

(32, 26) × (32, 26)

0,66

3/5

(64, 63) × (32, 26)

0,8

2/3

С примером декодирования простейшего двумерного блочного турбокода с одним символом проверки на четность можно ознакомиться в работе [7.25].

На рис. 19.32 приведены зависимости вероятности ошибки на бит Pb для блочных турбокодов в канале с белым шумом.

19.6.

Низкоплотностные коды

 

Рис. 19.32. Графики зависимости вероятности ошибки на бит Pb для блочных турбокодов

в канале с белым шумом от отношения сигнал/шум Eb/N0 при 30 итерациях

[7.24]

 

 

 

 

 

19.6.1. Основные положения

 

 

Коды с низкой плотностью проверок на четность (LDPC) — это класс линейных блоковых кодов, позволяющих получить превосходную эффективность с относительно малыми вычислительными затратами на их декодирование. Эти коды были предложены Р. Галлагером [7.25] еще в 1963 г., однако были забыты почти на сорок лет в связи со сложностью реализации алгоритмов их декодирования. Но развитие цифровой техники позволило преодолеть многие проблемы и в конце XX столетия исследования в области LDPC-кодов получили новый импульс. В 1981 г. Р.М. Таннером [7.26] было предложено использовать двудольные неориентированные графы, впоследствии названные графами Таннера, для описания структуры итеративно декодируемых кодов. В принципе любой блоковый код размерности (M, N ), где N — число битов, M — число проверок в кодовом слове, можно представить в виде двудольного графа Таннера [7.26], например, на рис. 19.33 изображен такой граф для кода Хэмминга (7, 4), проверочная матрица

которого имеет вид:

0

1

1

1

0

1

0 .

H =

 

 

1

1

1

0

1

0

0

 

 

1

1

0

1

0

0

1

Вершины графа называются проверочными (check nodes — CN) и битовыми узлами (variable nodes — VN), они обозначены на рис. 19.33 как mi и ni соответственно.

Глава 19. Помехоустойчивое кодирование в системах передачи

Рис. 19.33. Граф Таннера для кода Хэмминга (7, 4)

При помощи графа Таннера большинство алгоритмов декодирования LDPC-ко- дов можно представить в виде процесса последовательного обмена сообщениями между соединенными ребрами вершинами. Для проверочных и битовых узлов графа вводиться понятия степени — величины, показывающей число ребер входящих в рассматриваемый узел. Степени битовых и проверочных узлов обозначаются dc и dr соответственно. Если dc и dr фиксированы для всех узлов, код называют регулярным, а если хотя бы один из этих параметров изменяется от узла к узлу — нерегулярным. Для описания нерегулярных кодов вводится ряд распределения степеней, показывающий долю узлов, имеющих конкретную степень.

В1996 г. вышла в свет первая после Р. Галлагера работа, посвященная использованию LDPC-кодов в качестве кодов, способных вплотную приблизиться к границе Шеннона при достаточно большой длине кодового слова [7.27]. Появление этой статьи породило целую волну исследований, посвященных поиску новых, более эффективных структур LDPC-кодов, а также альтернативных алгоритмов их декодирования с различными соотношениями эффективность/производительность.

Впоследнее время LDPC-коды получили широкое распространение благодаря своей превосходной эффективности. Использование LDPC-кодов предусматривает большинство современных стандартов передачи данных (например, стандарты IEEE 802.11, IEEE 802.16), стандартов цифрового вещания (например, стандарты DVB-S2, DVB-T2, DVB-C2).

19.6.2. Классификация LDPC-кодов

По определению, данному Р. Галлагером [7.25], низкоплотностный код — это линейный код, проверочная матрица H которого размерности M × N содержит dc M единиц в каждом столбце и dr N единиц в каждой строке. Причем распределение единиц по столбцам и строкам в общем случае случайно.

На практике случайное распределение единиц крайне неудобно — для кодирования и декодирования приходиться хранить проверочные и генераторные матрицы, что достаточно накладно, особенно при больших длинах кодов.

Очевидным средством борьбы с этой проблемой является переход к низкоплотностным кодам, проверочная матрица которых обладает какой-то структурой. Простейший вариант структуризации проверочной матрицы — использование циклических кодов [7.28].

19.6. Низкоплотностные коды

Формально проверочная матрица такого кода представляет собой циркулянтную матрицу размерности N × N , в которой каждая строка получается циклическим сдвигом вправо предыдущей строки. Значение влияния цикличности проверочной матрицы на сложность декодера LDPC-кода сложно переоценить, поскольку каждая из строк матрицы однозначно определяется предыдущей строкой, в связи с чем реализация декодера может быть существенно упрощена по сравнению со случайной структурой проверочной матрицы. Как известно, кодер циклического кода достаточно просто реализовать с использованием сдвигового регистра и набора сумматоров [7.28].

Кнедостаткам циклических кодов можно отнести фиксированный, для всех скоростей кодирования, размер проверочной матрицы N ×N , что подразумевает более сложный декодер, а также высокий Хэммингов вес строк, что усложняет структуру декодера. Дополнительно стоит заметить, что циклический код — всегда регулярный.

Кдостоинствам помимо упрощения кодирования/декодирования следует отнести большое минимальное расстояние и очень низкий порог при итеративном декодировании [7.28].

Желание преодолеть недостатки циклических LDPC-кодов привело к появлению квазициклических LDPC-кодов. Квазициклические коды также имеют хорошую структуру, позволяющую упростить кодер и декодер. В дополнение к этому они позволяют более гибко подойти к разработке кода, в частности позволяют синтезировать нерегулярные коды. Проверочная матрица такого кода представляет собой не что иное, как набор циркулянтных подматриц:

H =

 

A11

· · ·

A1N

.

AM...

1

 

AM... N

 

 

 

 

· · ·

 

 

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

19.6.3. Методы построения проверочных матриц

Методы построения LDPC-кодов также можно разбить на классы. К первому классу относятся все алгоритмические способы и способы, использующие вычислительную технику. А ко второму — способы, основанные на теории графов, математике конечных полей, алгебре и комбинаторике.

При этом стоит заметить, что первый класс методов позволяет получать как случайные, так и структурированные LDPC-коды, в то время как второй нацелен на получение только структурированных LDPC-кодов, хотя бывают и исключения.

В отличие от других линейных блоковых кодов, таких как БЧХ или кодов Рида–Соломона, имеющих строгий алгоритм синтеза кодов с заданными параметрами, для LDPC-кодов существует множество способов построения кодов.

Здесь мы рассмотрим способы построения LDPC-кодов, предложенные Галлагером и МакКеем. А также подробно рассмотрим более сложный алгоритм построения достаточно эффективных кодов повторения накопления, используемый в некоторых стандартах.

Глава 19. Помехоустойчивое кодирование в системах передачи

Коды Галлагера

Р. Галлагер предложил следующий алгоритм построения низкоплотностных ко-

дов. Пусть проверочная матрица кода имеет вид:

H1

H2

H = .. ,

.

Hdc

где подматрицы Ha, a = 1, . . . , dc имеют структуру, которая может быть описана следующим образом.

Для любых двух целых μ и dr , больших 1, каждая подматрица Ha имеет размерность μ × μ · dr , при этом веса строк этой подматрицы — dr , а столбцов — 1. Подматрица H1 имеет специфическую форму: для i = 0, 1, . . . , μ − 1 i-я строка содержит все dr единиц на позициях с i от dr до (i + r) · r − 1. Оставшиеся подматрицы получаются перестановкой столбцов матрицы H1. Очевидно, что результирующая матрица H — регулярная матрица размерности μ · dc × μ · dr с весами строк и столбцов dr и dc соответственно.

Важной характеристикой матрицы LDPC-кода является отсутствие циклов определенного размера (кратности). Под циклом кратности 4 понимается наличие в двух разных столбцах проверочной матрицы ненулевых элементов на совпадающих позициях. Отсутствие цикла кратности 4 определяется вычислением скалярного произведения столбцов матрицы: если всевозможные скалярные произведения всех столбцов матрицы не превосходят 1, то это означает отсутствие в матрице циклов кратности 4. Цикл кратности 4 является минимально возможным и встречается существенно чаще циклов большей длины (6, 8, 10 и т. д.). Присутствие в матрице LDPC-кода циклов любой кратности свидетельствует о заложенной в структуру матрицы избыточности, не приводящей к улучшению помехоустойчивых свойств кода. Пример циклов кратности 4 приведен на рис. 19.34.

Рис. 19.34. Циклы кратности 4 в матрице LDPC-кода

Рассмотренный выше алгоритм не гарантирует отсутствие циклов кратности 4, однако они могут быть удалены впоследствии. Галлагер показал [7.25], что ансамбль таких кодов обладает прекрасными свойствами. Также была показана возможность реализации достаточно простых кодеров, поскольку проверочные биты такого кода могут быть найдены по проверочной матрице кода как функция информационных узлов.

19.6. Низкоплотностные коды

Пример. проверочной матрицы кода Галлагера (20, 5) dc = 3, dr = 4, μ = 5

имеет следующий вид:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

 

 

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

 

 

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

 

 

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

 

 

 

0

1

 

 

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

0

 

 

 

1

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

0

0

0

 

 

 

0

1

0

0

0

1

0

0

0

1

0

0

0

0

0

0

1

0

0

0

 

 

 

 

H =

 

0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0

 

 

 

 

 

0

0

0

1

0

0

0

0

0

0

1

0

0

0

1

0

0

0

1

0

 

 

 

 

 

 

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

1

 

 

 

 

 

 

1

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

 

 

 

 

 

 

0

1

0

0

0

0

1

0

0

0

1

0

0

0

0

1

0

0

0

0

 

 

 

 

 

 

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

0

0

1

0

 

 

 

 

 

 

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

1

0

0

0

 

 

 

 

 

 

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Коды МакKея

По прошествии тридцати пяти лет МакКей, будучи незнакомым с работой Галлагера, повторно открыл преимущества кодов с разреженными матрицами, и был первым, кто при помощи компьютерного моделирования показал возможность этих кодов вплотную приблизиться к границе Шеннона как для двоичного симметричного канала, так и для канала с аддитивным белым гауссовским шумом. МакКей предложил несколько компьютерных алгоритмов построения проверочных матриц низкоплотностных кодов [7.27]. Приведем некоторые из них в порядке увеличения сложности реализации.

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

Проверочная матрица H синтезируется путем случайного генерирования столбцов веса dc и строк веса dr , с дополнительной проверкой на отсутствие циклов кратности 4.

Проверочная матрица H синтезируется по алгоритму 2, с дополнительным удалением циклов кратности 4.

Проверочная матрица H синтезируется по алгоритму 3, с дополнительным условием, что проверочная матрица имеет вид H = [H1H2], где H2 — обратимая матрица.

Недостатком алгоритмов МакКея является отсутствие какой-либо структуры в проверочных матрицах, что усложняет процесс кодирования.

Кодирование осуществляется приведением матрицы H к виду H = [P T I] (или умножением H на H2−1 для алгоритма 4), из которого можно получить генераторную матрицу в систематической форме G = [P I]. Проблема при кодировании по матрице G заключается в том, что подматрица P , в общем случае, не является разреженной. То есть для кодов, представляющих интерес, сложность кодирования оказывается достаточно высокой.

Глава 19. Помехоустойчивое кодирование в системах передачи

Коды повторения накопления

Выше были рассмотрены достаточно простые алгоритмы построения проверочных матриц LDPC-кодов, появившиеся одними из первых. С тех пор было разработано достаточно большое количество разнообразных алгоритмов, позволяющих получать коды, обладающие лучшей эффективностью и хорошо структурированной проверочной матрицей.

Рассмотрим один из таких алгоритмов на примере кода стандарта DVB-T2. В этом стандарте используется систематический нерегулярный код повторениянакопления (irregular repeat accumulate — IRA) [7.29]. IRA-коды — это класс LDPC-кодов, разработанный на основе кодов повторения-накопления (repeat accumulate — RA). Отличительными особенностями этого класса кодов является возможность использования алгоритмов кодирования по проверочной матрице, а также возможность использования компактных форм хранения самих проверочных матриц.

Граф Таннера для IRA-кода, как правило, изображают в несколько необычной форме, для этих кодов битовые узлы удобно разбить на информационные узлы (information nodes — IN) и узлы четности (parity nodes — PN). На рис. 19.35 изображен граф Таннера для кода повторения-накопления, битовые узлы обозначены кругами, а проверочные — квадратами; битовые узлы, расположенные слева — информационные, поскольку соответствуют исходным битам, требующим кодирования, а расположенные справа — узлы четности PN, они соответствуют полученным в результате кодирования проверочным битам.

Код DVB-T2 является нерегулярным — степени символьных вершин переменные, в то время как степени кодовых вершин одинаковы (исключение составляет только самый первый кодовый узел, степень которого на единицу меньше).

Для описания распределения степеней информационных вершин IRA-кода

вводится ряд распределения (f1, . . . , fJ ), где fi обозначает долю информацион-

ных узлов, соединенных с i проверочными узлами, fi 0, !i

fi = 1. Каждый

проверочный узел соединен с a информационными узлами, и полная запись параметров IRA-кода имеет вид (f1, . . . , fJ ; a).

Для графа Таннера систематического IRA-кода, изображенного на рис. 19.35, параметры записываются как (f2, . . . , fJ ; a). Слева расположены K информационных узлов, по середине и справа — M проверочных узлов и узлов четности соответственно. Каждый проверочный узел соединяется ровно с a информационными узлами, это соединение может быть описано при помощи матрицы случайных перестановок M × a ребер. Соединение узлов четности с проверочными изображено зигзагообразной линией (см. рис. 19.35).

Из структуры рассмотренного графа Таннера видно, что проверочную матрицу кода можно представить в виде двух подматриц H = [HuHp].

Структура проверочных матриц LDPC-кода имеет следующий вид, представленный на следующей странице.

Подматрица Hu размерности M × K — разреженная матрица, обозначенная на рис. 19.35 как матрица перестановок. А подматрица Hp, размерности M × M — ступенчатая матрица, которой на рис. 19.35 соответствует ломаная линия, соединяющая проверочные узлы с узлами четности.

19.6. Низкоплотностные коды

N

K

h11

h12

h13 . .

.

. . . h1K

1

 

 

 

 

 

 

 

 

 

 

 

 

h21

h22

h23

 

 

1 1

Hp

 

 

h31

h32

h33

 

 

1 1

 

 

M

H =

 

 

Hu

 

 

 

 

.

 

 

 

1 1

 

 

 

.

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

h

 

1

1

 

M1

 

 

 

MK

 

 

 

 

Рис. 19.35. Граф Таннера для IRA LDPC-кода

Как известно из теории, кодирование линейных блоковых кодов осуществляется при помощи генераторной матрицы, которую, в свою очередь, можно получить по проверочной. Генераторная матрица, соответствующая данной проверочной матрице H, имеет вид:

G = ( I HuT Hp−T ).

При этом получение матрицы HuT не представляет особого труда, а подматрица Hp−T генераторной матрицы G для IRA-кода является верхней треугольной матрицей:

 

 

1

· · ·

 

1

 

 

 

1

 

 

 

 

 

 

 

1

1

 

Hp−T =

 

1

.1..

· · ·

1...

 

 

 

.

(19.57)

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Можно показать [7.28], что операция умножения на матрицу (19.57) эквивалента накоплению результата в простейшем аккумуляторе. Таким образом, в общем случае

IRA-кодер, состоит из матричного умножителя и аккумулятора [7.28] (рис. 19.36), кодовое слово при этом состоит из информационной части u (входа матричного умножителя) и проверочной части p (выхода аккумулятора).

Заметим также, что получение генераторной матрицы в классическом смысле не требуется — преобразование матрицы перестановок и син-

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

В стандарте DVB-T2 используется аналогичная схема кодирования, однако она имеет ряд

особенностей, связанных с тем, что проверочные Рис. 19.36. Кодер IRA-кода матрицы хранятся в сжатом виде [7.30].