Помехоустойчивые коды цифрового телевидения
Ключевые слова: цифровое телевидение, помехоустойчивые коды, DVB-T, DVB-S
При канальном кодировании в телевидении используют внешние и внутренние коды. Для внешнего кодирования в DVB-T и DVB-S — код Рида-Соломона, а в качестве внутреннего — сверточный код с декодированием по алгоритму Витерби. В новых стандартах передачи DVB-T2 и DVB-S2 для внешнего кодирования применяют коды Боуза-Чоудхури-Хоквингема (БЧХ), а для внутреннего — код с малой плотностью проверок на четность (LDPC). Коды Рида-Соломона — недвоичные блочные циклические коды, позволяющие исправлять ошибки в блоках данных. Недвоичные они, потому что элементами кодового слова являются не биты, а байты. Этот код позволяет исправлять до З принятых с ошибками байтов в каждом транспортном пакете. Для внутреннего кодирования обычно используются несистематические сверточные коды. Коды БЧХ для телевидения — циклические, блочные систематические коды. Они исправляют кратные ошибки, т. е. две и более ошибок. LDPC — линейные блоковые коды с проверкой чётности, которые описываются низкоплотностной проверочной матрицей, содержащей в основном нули и относительно малое количество единиц (<10) в строках и столбцах. При использовании только LDPC-кода ошибки в декодированном слове имеют тенденцию группирования в пакеты ошибок. Устранение пакетов ошибок производится циклическим кодом БЧХ, исправляющим пакеты из З?12 ошибок. Рссматриваются особенности и преимущества этих кодов, обеспечивающих в стандартах DVB высокую помехоустойчивость.
Быков В.В., Меньшиков К.В.
Повышение достоверности приема сигналов в цифровом телевидении требует использования помехоустойчивого кодирования. При канальном кодировании используется каскадное кодирование с внешним и внутренним кодами.
Внешний код — код, применяемый на передающей стороне первым, но декодируемый на приемной стороне последним.
Внутренний код — код, применяемый на передающей стороне последним, но декодируемый на приемной стороне в первую очередь.
В цифровом ТВ данные транспортного пакета подвергаются пе-ремежению, а затем помехоустойчивому кодированию каскадным кодом. В качестве внешнего в РУБ-Т используется код Рида-Соломона, а в качестве внутреннего — сверточный код.
Рис. 1. Схема каскадного кодирования РУБ-Т
Основной принцип построения корректирующих кодов заключается в том, что в каждую передаваемую кодовую комбинацию, со-держашую к информационных двоичных символов, вводят р дополнительных двоичных символов. В результате получается новая кодовая комбинация, содержащая п=k+р двоичных символов. Такой код обозначается как (п, Ц. Доля информационных символов в нем характеризуется относительной скоростью кода, определяемой соотношением I? = k / п = k / k + p.
Для оценки способности кода обнаруживать и исправлять ошибки используется понятие кодового расстояния d.
Линейные коды — цифровые комбинации, обладающие важным свойством: два кодовых слова можно сложить и получить третье кодовое слово. К ним применимы методы линейной алгебры.
Следующая ступень классификации — систематические и несистематические коды [1;3]. В систематических кодах k старших коэффициентов сформированного кода с(х) содержат исходное сообщение.
В процессе кодирования к блоку k информационных символов в конце кодового слова добавляется блок из 21 проверочных символов, где t — число исправляемых ошибок. Это удобно при декодиро-
Рис 2. Место кодов Рида-Соломона, БЧХ, сверточных кодов и LDPC в классификации корректирующих кодов
вании, поэтому в телевидении используется систематический код РС. Несистематические коды не содержат исходного сообщения в явной форме (например, сверточный код).
Циклическим кодом является линейный код, обладающий следующим свойством: если в кодовом слове выполнена циклическая перестановка, то полученное слово также является кодовым словом.
Рассмотрим коды РС и сверточные коды, используемые в стандарте DVB-T.
Коды Рида-Соломона
Коды РС — недвоичные блочные циклические коды, позволяющие исправлять ошибки в блоках данных. Недвоичные они, потому что элементами кодового слова являются не биты, а группы битов. В телевидении это — байты. Для восьмибитовых символов полная длина кодового слова составляет 28-1 = 255 символов, из них 239 информационных и 16 проверочных
На рис. 3 показано размещение байтов в пакете данных MPEG-2 с защитой от ошибок блочным кодом РС.
В стандарте цифрового телевидения DVB используется код РС, записываемый как (204, 188, 8). Здесь 188 — количество информационных байтов в пакете транспортного потока MPEG-2, 204 — количество байт в пакете после добавления проверочных символов, 8 — число корректируемых байт. Таким образом, в качестве кодовых комбинаций берутся целые пакеты транспортного потока, содержащие 188 байт, а добавляемые проверочные символы содержат 16 байт.
зо
T-Comm, #9-2013
* п , ІС ,
Синхробайт 1 байт Информационные данные МРЕС-2 187 байт Проверочные данные 16 байт
Рис. 3. Пакет данных MPEG-2 с защитой от ошибок внешним систематическим кодом РС (204, 188, t = 8)
Построение кодового слова, защищенного кодами РС
Формирование циклических кодовых слов производится с помощью порождающего многочлена д(х), максимальная степень которого равна числу проверочньх символов п-к (для телевидения п-к = 2f = 16):
Процедура нахождения кодового слова с(х) заключается в умножении исходного информационного многочлена /(х) на порождающий многочлен кода: с(х) = д(х) /(х).
В приемнике для каждого принятого транспортного пакета, содержащего 204 байта, вычисляются полиномы синдромов ошибки. Синдромы ошибок получаются делением кодового слова на порождающие многочлены. Если кодовые слова делятся на порождающий многочлен без остатка, то ошибок нет. Принятые слова, которые не делятся без остатка на порождающий многочлен, не являются разрешенными и, следовательно, содержат ошибки. При наличии остатка деления — включается процедура исправления ошибки.
Описание кодера Рида-Соломона
Кодер осуществляет деление многочлена у(х), отображающего принятое слово, на порождающий многочлен д(х). Полученный остаток от деления приписывается к у(х) в качестве младших разрядов и это кодовое слово идет на передачу. Деление в кодере реализуется посредством умножения и сложения [2].
Декодирование кодов РС
В приемнике для каждого принятого транспортного пакета, содержащего 204 байта, вычисляются синдромы ошибки и два полинома: "локатор" Цх), корни которого показывают положение ошибок, и "корректор", дающий значение ошибок X. Вычисление синдрома ошибки 5(х). Синдром является остатком деления декодируемого кодового слова с(х) на порождающий полином д(х). Если этот остаток равен нулю, кодовое слово считается неискаженным. Ненулевой остаток свидетельствует о наличии ошибки.
Нахождение позиций символьных ошибок (используется алгоритм поиска Ченя). Восстановление данных, посредством решения системы уравнений с f неизвестными. Для решения используется быстрый алгоритм Форни.
Сверточные коды
Сверточные коды основаны на преобразовании входной последовательности двоичных символов в выходную последовательность двоичных символов, у которой на каждый символ входной последовательности формируется более одного символа выходной последо-
Рис. 5. Схема декодирования кодов Рида-Соломона: у(х) — принятое кодовое слово; 5(х) — синдромы; Цх) — полином локации ошибок; XI — местоположения ошибок; У1 — значения ошибок;
(х) — восстановленное кодовое слово [2]
вательности [1; 3]. В отличие от блоковых, они не делят информацию на фрагменты! и работают с ней как со сплошным потоком данных.
Сверточное кодирование — это итеративная обработка потока битов, создающая зависимость каждого бита от нескольких предыдущих. Сверточный код задают посредством порождающих многочленов, которые определяют структуру двоичного кодера сверточного кода. Кодовое слово на выходе такого кодера составляется в виде в двух последовательностей, которые в двоичной форме представляют коэффициенты соответствующих порождающих многочленов.
Пример сверточного кодера приведен на рис.6. Он содержит трехразрядный сдвиговый регистр, на вход которого поступает входная последовательность двоичных символов. Кодер состоит из 3-разрядного регистра сдвига и 2-х сумматоров по модулю 2.
Рис. 6. Кодер несистематического сверточного кода скорости 1/2 и памяти 3 с примером кодирования входной последовательности 101; [1]
Информационная последовательность поступает на вход регистра. Содержимое регистра обрабатывается сумматорами, на выходах которых образуется кодовая последовательность, которая сим-вол-за-символом поступает на выход.
Относительная скорость этого кода уменьшается (К = 1/2), а тактовая частота возрастает в два раза.
Декодирование сверточных кодов
Декодирование реализует алгоритм Витерби, основанный на принципе максимального правдоподобия (рис. 8). Алгоритм включает в себя вычисление меры подобия (или расстояния Хемминга), между сигналом на входе декодера и на его выходе. Декодер принимает решения путем исключения менее вероятных путей [2].
Сверточные коды эффективно работают в канале с белым шумом, но плохо справляются с пакетами ошибок. Более того, если де-
Рис. 4. Структурная схема кодера Рида-Соломона.
На схеме до — Э16 — коэффициенты порождающего многочлена д(х)
Рис. 7. Схема сверточного кодера цифрового телевидения йУБ-Т
Т-Сотт, #9-2013
31
Метрики Решения блока
ветвей метрики путей
Декодированный
поток
Вход
Блок
метрики
ветвей
1_ Блок 1 Восстанавление пути Буфер. восстанавливающий
максимального точный
правдоподобия порядок символов
I
Выход
Внутренний кодер
Рис. 8. Обобщенная схема декодера Витерби
кодер ошибается, на его выходе возникает пакет ошибок, который исправляется кодом РС. Сверточные коды используются при низком отношении сигнал-шум, когда исправляющей способности блоковых кодов при разумной длине блока оказывается недостаточно.
В РУБ-Т2 также как и в РУБ-Т применяется каскадное кодирование. В качестве внешнего кода используется код Боуза-Чоудхури-Хоквингема (БЧХ), а в качестве внутреннего — код с малой плотностью проверок на четность ^РРС].
Коды Боуза-Чоудхури-Хоквингема
Коды БЧХ двоичные, линейные, циклические, блочные [1, 2]. Они исправляет кратные ошибки, т. е. две и более ошибок в кодовой комбинации. БЧХ-код можно задать порождающим полиномом. Методика построения кодов БЧХ отличается от методики обычных циклических, выбором определяющего порождающего полинома д(х).
Общее свойство кодовых слов циклического кода: их делимость без остатка на многочлен д(х). Если при делении есть остаток, то произошла ошибка.
Систематическое кодирование осуществляется путем "дописывания" к кодируемому слову остатка от деления хп - к и(х) на д(х), то есть у(х) = хп - к и(х) + [хп - к u(x)modg(x)].
В РУБ-Т2 и РУБ-32 применяется систематическое кодирование. При систематическом кодировании кодовое слово образуется из двух подблоков: информационного и проверочного (как и в кодах РС). При этом информационный подблок повторяет вид информационного исходного слова.
В процессе систематического кодирования в каждом кодовом слове на первых к позициях, соответствующим старшим степеням переменной х, будут расположены информационные символы. п — общее число символов в слове. Для кодирования достаточно найти остаток з(х) от деления полинома и(х) кодируемого слова, умноженного на хп - к, на порождающий полином д(х):
з(х)= х - к u(x)modg(x).
Затем этот остаток приписывается вслед за последним информационным символом.
Для кодирования кодами БЧХ применяются те же методы и схемы, что и для кодирования другими циклическими кодами. Отличие состоит в выборе порождающего полинома д(х). БЧХ-кодирование осуществляется по схеме, подобной кодеру РС (рис. 4), но вместо байтовых ячеек применяются Р-триггеры.
Декодирование кодов БЧХ
Декодер БЧХ состоит из логических схем и обрабатывающих блоков, реализующих следующие задачи [2]:
1. Вычислить синдромы, путем вычисления значения принятого полинома в нулях кода.
2. Найти коэффициенты многочлена локаторов ошибок а(х).
3. Найти обратные величины корней локатора ошибок а(х), т.е. позиции ошибок (по методу Ченя).
4. Исправить принятое слово на вычисленных позициях для подсчитанных значений ошибок.
Рис. 9. Схема декодера для двоичных кодов БЧХ [2]
Коды ЬЭРС
LРPC — код с малой плотностью проверок на четность или низ-коплотностный код с проверкой на четность. Это — линейный блоковый систематический код, задаваемый с помощью порождающей матрицы и с итеративным декодированием [2].
Проверка четности — простой метод для обнаружения ошибок в передаваемом пакете данных С ее помощью нельзя восстановить данные. Можно только обнаружить одиночную ошибку. Поэтому при кодировании и декодировании LDPC для определения разряда, в котором произошла ошибка, используют специальные проверочные матрицы, позволяющие найти синдромы ошибок в любом разряде кодового слова.
Когда в проверяющей матрице LDPC количество единиц мало, это позволяет эффективнее организовать процесс хранения матрицы в декодере или же напрямую реализовать процесс декодирования с помощью полупроводниковой схемы.
Кодовое слово LDPC формируется умножением исходного информационного слова на порождающую матрицу &
LРPC-коды описываются низкоплотностной матрицей, содержащей в основном нули и относительно малое количество единиц (<10) в строках и столбцах [5]. На рис. 10 приведен пример проверочной матрицы кода LDPC [4], которая имеет размерность 12-16.
На практике применяются матрицы с большим количеством элементов — от 10 до 100 тысяч строк. Однако количество единиц в строке или в столбце проверочной матрицы остается достаточно малым, обычно меньшим 10. Последнее упрощает декодирование информационных сигналов на приемной стороне.
Синдром ошибки при декодировании LDPC вычисляется как произведение строки кодового слова на трансформированную проверочную матрицу. Затем создается схема, которая по синдрому исправит ошибку в принятом кодовом слове.
Процедура декодирования выполняется последовательными шагами. После первой проверки исправляется символ, входящий в наибольшее число ненулевых синдромов, после чего проверка производится повторно, пока все проверочные синдромы не будут удовлетворены. То есть осуществляется итеративное декодирование.
Использование кодов БЧХ и LDPC в цифровом телевидении
В приемнике DVB-T сначала декодируется сверточный код, затем осуществляется обратное перемежение (при этом пачки ошибок на выходе сверточного декодера попадают в разные кодовые слова кода РС). Затем происходит декодирование кода РС.
16 столбцов
:тп зг
н =
Т~—-Г
1 1 1
11
ш
1
ЛЫрГГ 1 1
НЕЕ її
1
1 1
А
12 строк
Рис. 10. Пример проверочной матрицы с низкой плотностью проверок на четность
32
Т-Сотт, #9-2013
Корректирующий код в DVB-T2 также представляет собой каскадный код. В качестве внешнего кода в нем применен код БЧХ, а в качестве внутреннего — LРPC.
В зависимости от скорости кодирования LDPC, размер входного блока данных для БЧХ-кодера может различаться, однако выходной размер кодового слова после LDPC всегда составляет 64800 бит (8100 байт) или 16200 бит (2025 байт) [6].
LРPC-коды эффективны в системах передачи информации, требующих максимальной скорости передачи при ограниченной полосе частот. Использование LDPC/БЧХ-кодов более эффективно по сравнению с каскадами кодов Рида-Соломона и сверточными кодами и тем самым дает возможность понизить отношение сигнал/шум для надежной работы системы. При использовании LDPC и БЧХ удается достичь выигрыша в несколько децибел в отношении сигнал/ шум для достижения.
Но с другой стороны, LDPC/БЧХ-способ кодирования требует большей производительности и в первую очередь приемного оборудования, что приведет к более высокой стоимости приемников/ декодеров.
Таблица некоторых параметров стандарта DVB^2 [б]
Скорость LDPC кодиро- вания Размер блока до БЧХ кодирования ^БЧХ бит Размер блока после БЧХ кодирования (размер блока до LDPC кодирования) Льчх Корректирующая способность БЧХ кода Разность Увчх-- А'ьчч бит Размер блока после LDPC кодирования бит
1/2 32 208 32 400 12 ошибок 192 64 800
Передаваемые данные РУВ-Т2 и РУВ-32 пакетируются в ВВ-ка-дры (рис. 11), заголовок которых содержит информацию о характере данных. Кадр ВВ является контейнером для передаваемого потока данных — транспортного потока MPEG или любого другого.
Информационная часть кадра (ВВ-кадр) Контрольные
биты кода БЧХ
----------------- ------- -ч ^_________________
Данные Коїііраіьііьіе бшы LDPC
Заголовок
РЕС-кадр -64800 бит
Рис. 11. Структура кадра с БЧХ^йРС-кодированием: ВВ (ВаБеВапС) — немодулированный (низкочастотный) кадр; ВВ-кадр содержит ВВ-заголовок (80 бит) и поле данных; FEC — кодирование с обнаружением и исправлением ошибок
Кадр ВВ вместе со своим заголовком и содержимым рассматривается как слово, к которому применяются коды ЮРС и БЧХ. В результате их применения получается кадр РЕС, который может иметь длину строго 64800 или 16200 бит.
Применение LDPC-БЧХ-кодов в РУБ-Т2 позволит эффективно применять режим модуляции 2560АМ. Это увеличит емкость канала на треть.
Помехоустойчивость LDPC- и БЧХ-кодов настолько высока, что они справляются с компенсацией ошибок, возникающих при использовании 2560АМ, без увеличения требуемого отношения сигнал/шум.
Стандартом РУБ-Т2 требования к помехоустойчивости определены величиной вероятности ошибки на бит Рь = 10-7. Это значение достигается каскадной конструкцией LDPC и кода БЧХ.
Кодирование существенно расширяет длительность кадра. В рамках стандарта РУБ-Т2 доля контрольных бит помехозащитных кодов может колебаться от 15 до 50%.
Системы РУБ-Т2, РУБ-Б2 и РУБ-С2 на базе LDPC/БЧХ показали существенное повышение помехозащищенности по сравнению с защитой, используемой в РУБ-Т. Выигрыш в уровне сигнал/шум за счет нового FEC может составлять до 3 дБ для типичного уровня ошибок и при одинаковой доле контрольных символов. Это улучшение позволяет повысить пропускную способность канала примерно на 30% (например, за счет применения более высокого уровня констелляции). Или 30-процентный прирост в мощности, по сравнению со стандартом РУБ-Б.
Совместное использование квадратурной фазовой модуляции QPSK и каскадного кодирования для канала на базе кода РС и сверточного кода в сочетании с алгоритмом декодирования Витерби с мягким решением обеспечивает высокую помехоустойчивость системы в условиях воздействия шумовых и интерференционных помех (РУБ-Б). При этом гарантируется не более одной ошибки в час, что эквивалентно вероятности ошибок около 10-10 на входе демультиплексора MPEG-2 в приемнике-декодере, а в стандарте РУБ-Т2 — 10-12.
Применение новых кодов LDPC и БЧХ вместо кодов Рида-Соломона и сверточных кодов существенно повышает помехоустойчивость систем РУБ-Т2, РУБ-Б2 и РУБ-С2.
Литература
1. Блейхут Р Теория и практика кодов, контролирующих ошибки. — М.: Мир, 1986.
2. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Москва. Техносфера, 2005.
3. Вернер М. Основы кодирования. — М.: Техносфера, 2004.
4. В. Варгаузин. Вблизи границы Шеннона. Телемультимедиа, 2005, Июнь.
5. Зубарев Ю.Б, Овечкин Г.В. Помехоустойчивое кодирование в цифровых системах передачи данных www.mtdbest.iki.rssi.ru/pdf/obzor_dvoich-nie_kodi_2.pdf.
6. Шахнович И. РУБ-Т2 — новый стандарт цифрового телевизионного вещания. Электроника: Наука, Технология, Бизнес, 2009, №6.
Jam-resistant digital television codes
. Bykov V.V, Menshikov K.V.
Abstract
When a television channel coding used by the external and internal codes. For external encoding DVB-T and DVB-S — Reed-Solomon, and as internal — convolutional code with Viterbi decoding. The new transmission standard DVB-T2 and DVB-S2 for external encryption codes used Bose-Chaudhuri-Hoquinghem Codes (BCH), and for the internal — the code of low-density parity-check (LDPC). Reed-Solomon codes — nonbinary block cyclic codes can correct errors in the data block. Nonbinary they are, because the elements of the code words are not bits and bytes. This enables you to correct up to 8 bytes received in error in each overpack. For internal coding typically used nonsystematic convolutional codes. BCH codes for TV — cyclic, systematic block codes. They are correcting multiple errors — two or more errors. LDPC — linear block codes with parity, which are described for low-density parity-check matrix containing mostly zeros and a relatively small number of units (<10) in the rows and columns. When using only the LDPC-code error in the decoded words are grouped into packages errors. Elimination of error bursts is cyclic code BCH correcting packets of 8-12 errors. The report discusses the features and benefits of these codes that the standards DVB high noise immunity.
T-Comm, #9-201З
ЗЗ