4. ОСОБЕННОСТИ ПЕРЕДАчи СИГНАЛОВ ЦИФРОВОГО ТЕЛЕВИДЕНИЯ
по возможности простой метод декодирования, так как декодер должен
быть в каждом телевизионном приемнике.
4.3.2. Коды Рида-Соломона
в современных системах цифрового телевидения для обеспечения помехоустойчивой передачи цифровых телевизионных сигналов по радио каналу используются наиболее совершенные коды Рида-Соломона (ReedSolomon), требующие добавления двух проверочных символов в расчете на одну исправляемую ошибку. Коды Рида-Соломона обладают высокими корректирующими свойствами, для них разработаны относительно про стые и конструктивные методы кодирования. Коды Рида-Соломона не яв ляются двоичными. Это надо понимать в том смысле, что символами кодо
вых слов являются не двоичные знаки, а элементы множества чисел, со
стоящего более чем из двух знаков (хотя, конечно, при передаче каждый символ заменяется соответствующей двоичной комбинацией).
Коды Рида-Соломона, относящиеся к классу циклических кодов, обра зуют подгруппу блоковых кодов. Они получаются из любой разрешенной комбинации путем циклического сдвига ее разрядов. Кодирование и деко дирование, обнаруживающее и исправляющее ошибки, - это вычислитель ные процедуры, которые для циклических кодов удобно выполнять как
действия с многочленами и реализацию в виде цифровых устройств на ба
зе регистров сдвига с обратными связями.
Чтобы получить более детальное представление о кодах Рида
Соломона посмотрим, какое место они занимают в классификации коррек тирующих кодов (рис. 4.4).
Корректирующие коды разделяются на блочные и сверточные (непре рывные). Блочные коды основаны на перекодировании исходной кодовой комбинации (блока), содержащей k информационных символов, в переда ваемую кодовую комбинацию, содержащую n > k символов. Дополнитель ные р символов зависят только от k символов исходной кодовой
комбинации. Следовательно, кодирование и декодирование осуществля
ются всегда в пределах одной кодовой комбинации (блока). В противопо
ложность этому в сверточных кодах кодирование и декодирование осуще
ствляются непрерывно над последовательностью двоичных символов.
Блочные коды бывают разделимые и неразделимые. В разделимых ко дах можно в каждой кодовой комбинации указать, какие символы являют
ся информационными, а какие проверочными. В неразделимых кодах такая
возможность отсутствует.
Следующая ступень классификации - систематические коды. Они отличаются тем, что в них проверочные символы формируются из инфор
мационных символов по определенным правилам, выражаемым математи
ческими соотношениями. Например, каждый проверочный символ Хр) по
лучается как линейная комбинация информационных символов
4.3. Принципы кодирования, исиравляющего ошибки
211
Корректирующие
коды
Сверточные
Блочные (непрерывные)
Несистематические
Рис. 4.4. Место кодов Рида-Соломона в классификации
корректирующих кодов
(4.3)
где b1j , ... ,bkj
коэффициенты, принимающие значения О или 1;
j =1,2, .. .,n - k.
Соотношение (4.2) для формирования контрольного бита
проверки на четность является частным случаем (4.3).
Перейдем к более подробному знакомству с циклическими кодами.
В первую очередь введем запись кодовой комбинации или, как часто называют ее в литературе, кодового вектора в виде полинома. Пусть име
ется кодовая комбинация aoala2 .. .an-l,где аО - младший разряд кода, an-l -
старший разряд кода. Соответствующий ей полином имеет вид
ао +alX+ ... +an-lХn-l ,
где Х - формальная переменная, вводимая только для получения записи
кодовой комбинации в виде полинома.
Над полиномами, представляющими кодовые комбинации, определе на математическая операция умножения. Особенность этой операции по
сравнению с общепринятой заключается в том, что коэффициенты при Х
всех степеней суммируются по модулю 2, а показатели степени Х при пе
ремножении суммируются по модулю n, поэтому ХN = 1.
Далее введем понятие производящего полинома. Производящим по линомом порядка (n - k) может быть полином со старшей степенью Х,
равной (n - k), на который без остатка делится двучлен (1 + хn). Разре-
212
4. ОСОБЕННОСТИ ПЕРЕДАчи СИГНАЛОВ ЦИФРОВОГО ТЕЛЕВИДЕНИЯ
шенные кодовые комбинации получаются перемножением полиномов по рядка k - 1, выражающих исходные кодовые комбинации, на производя
щий полином.
Циклические коды имеют следующее основное свойство. Если кодо
вая комбинация aoala2 .. .an-lявляется разрешенной, то получаемая из нее путем циклического сдвига кодовая комбинация an-lаОаl.. .аn-2 также явля
ется разрешенной в данном коде. При записи в виде полиномов операция
циклического сдвига кодового слова сводится к умножению соответст вующего полинома на х с учетом приведенных ранее правил выполнения
операции умножения.
Циклический код с производящим полиномом g ( х) строится сле
2.Кодовые комбинации, соответствующие этим полиномам, записы
BaюT в виде строк матрицы G, называемой производящей матрицей.
3. Формируется набор разрешенных кодовых комбинаций кода. В него входит нулевая кодовая комбинация, k кодовых комбинаций, ука
занных в п. 1, а также суммы их всевозможных сочетаний. Суммирова ние осуществляется поразрядно, причем каждый разряд суммируется по
модулю 2. Общее число полученных таким образом разрешенных кодо
вых комбинаций равно 2\ что соответствует числу информационных
разрядов кода.
Для построения декодера в первую очередь получают производящий
полином h ( х) порядка k для построения исправляющей матрицы Н:
n
h(x)=l+x
g(x)
Строками исправляющей матрицы Н будут кодовые комбинации, оп
ределяемые полиномами h'(x), xh'(x), ..., xn-k-1h'(x), где h'(x) - это
записанный в обратном порядке полином h ( х ). Исправляющая матрица
имеет n столбцов и n - k строк.
При декодировании принятая кодовая комбинация aoala2 .. .an-lскаляр
но умножается на каждую строку исправляющей матрицы. Эта операция может быть записана в виде соотношения:
где hji - элементыj-той строки матрицы Н. Полученные n - k чисел С) обра
зуют исправляющий вектор или синдром. Если ошибок нет, то все С) = О. Если же при передаче данной кодовой комбинации возникла ошибка, то
некоторые из чисел С) не равны О. По тому, какие именно элементы ис
правляющего вектора отличны от нуля, можно сделать вывод о том, в ка
ких разрядах принятой кодовой комбинации есть ошибка и, следовательно, исправить эти ошибки.
4.3. Принципы кодирования, исиравляющего ошибки
213
Рассмотрим пример, часто встречающийся в литературе. Построим
циклический код с n = 7; k = 4. Для этого представим двучлен 1 + х7 В виде
произведения [4]:
(4.4)
в обычной алгебре это равенство, конечно, не выполняется, но если использовать для приведения подобных вместо обычного сложения опе рацию суммирования по модулю 2, а при сложении показателей степе
ней - операцию суммирования по модулю 7, то равенство окажется спра
ведливым.
В качестве производящего многочлена возьмем 1 + Х + х3 . Умножаем его на х, х2 и х3 И получаем многочлены х + х2 + х4 ; х2 + х3 + х5 ; х3 + х4 + х6 .
Затем записываем производящую матрицу G, причем в каждой строке мат рицы младший разряд кодовой комбинации расположен первым слева.
1
1
О
1
О
О
О
G=
О
1
1
О
1
О
О
О
О
1
1
О
1
О
ОО О 1 1 О 1
Далее формируем набор из 15 допустимых кодовых комбинаций:
00000000, 1101000,0110100,0011010,0001101, 1011100,0101110,0010111, 1000110,0100011,1111111,1010001,1000110, 0100011,1001011. В этих
записях младшие биты слева, а старшие - справа.
Перемножив первые два сомножителя в (4.4), получаем производящий
многочлен для исправляющей матрицы: 1 + Х + Х + х4 . Затем умножаем его
2
~
на х и х и получаем еще две строки этои матрицы, которая в результате
имеет такой вид (в отличие от матрицы G здесь младшие разряды соответ ствующих полиномов расположены справа):
[
О
О
1
О
1
1
1J
Н=
О
1
О
1
1
1
О .
1
О
1
1
1
О
О
Пусть принята кодовая комбинация 0001101, входящая в набор допус тимых. Найдем скалярные произведения этой кодовой комбинации со все ми строками матрицы Н:
(О
О
О
1
1
О
1)(0
О
1
О
1
1
1)=0ЕЕ>0ЕЕ>0ЕЕ>0ЕЕ>1ЕЕ>0ЕЕ>1=0;
(О
О
О
1
1
О
1)(0
1
О
1
1
1
0)=0ЕЕ>0ЕЕ>0ЕЕ>1ЕЕ>1ЕЕ>0ЕЕ>0=0;
(О
О
О
1
1
О
1)(1
О
1
1
1
О
0)=0ЕЕ>0ЕЕ>0ЕЕ>1ЕЕ>1ЕЕ>0ЕЕ>0=0.
Пусть теперь принята кодовая комбинация 0001100, в которой по следний, (старший) бит содержит ошибку. Скалярные произведения принятой кодовой комбинации на строки исправляющей матрицы име
ют вид:
214
4. ОСОБЕННОСТИ ПЕРЕДАчи СИГНАЛОВ ЦИФРОВОГО ТЕЛЕВИДЕНИЯ
( О О О 1
1
О О)( О О 1 О 1 1 1) = О ЕЕ> О ЕЕ> О ЕЕ> О ЕЕ>1ЕЕ> О ЕЕ> О =1;
(О
О
О
1
1
О
0)(0
1
О
1
1
1
0)=0ЕЕ>0ЕЕ>0ЕЕ>1ЕЕ>1ЕЕ>0ЕЕ>0=0;
(О
О
О
1
1
О
0)(1
О
1
1
1
О
0)=0ЕЕ>0ЕЕ>0ЕЕ>1ЕЕ>1ЕЕ>0ЕЕ>0=0.
Таким образом, получен синдром (1, О, О). Если ошибка оказывается в другом бите кодовой комбинации, то получается другой синдром.
Одним из важных достоинств циклических кодов является возмож
ность построения кодирующих и декодирующих устройств в виде сдвиго
вых регистров с обратными связями через сумматоры по модулю 2.
Различные виды циклических кодов получаются с помощью различ
ных производящих полиномов. Существует развитая математическая тео рия этого вопроса [15]. Среди большого количества циклических кодов к числу наиболее эффективных и широко используемых относятся коды Бо уза-Чоудхури-Хоквингема (ВСН-коды - по первым буквам фамилий Bose, Chaudhuri, Hockwinham или в русскоязычной записи БЧХ-коды), являю щиеся обобщением кодов Хемминга на случай исправления нескольких
ошибок. Они образуют наилучший среди известных класс неслучайных ко дов для каналов, в которых ошибки в последовательных символах возни
кают независимо. Например, БЧХ-коД (63, 44), используемый в системе спутникового цифрового радиовещания, позволяет исправить 2 или 3
ошибки, обнаружить 4 или 5 ошибок на каждый блок из 63 символов. От
носительная скорость такого кода равна R = 44/63 = 0,698.
Одним из видов BCH-коДов являются коды Рида-Соломона. Эти ко ды относятся к недвоичным кодам, так как символами в них могут быть многоразрядные двоичные числа, например, целые байты. В Европейском
стандарте цифрового телевидения DVB используется код Рида-Соломона, записываемый как (204, 188, 8), где 188 - количество информационных
байт в пакете транспортного потока МPEG-2, 204 - количество байт в па кете после добавления проверочных символов, 8 - минимальное кодовое расстояние между допустимыми кодовыми комбинациями. Таким обра зом, в качестве кодовых комбинаций берутся целые пакеты транспортно
го потока, содержащие 188·8 = 1504 информационных бита, а добавляе
мые проверочные символы содержат 16·8 = 128 бит. Относительная ско
рость такого кода равна 0,92. Этот код Рида-Соломона позволяет эффек
тивно исправлять до 8 принятых С ошибками байт в каждом транспорт
ном пакете.
Отметим также, что используемый в цифровом телевизионном веща
нии код Рида-Соломона часто называют укороченным. Смысл этого терми на состоит в следующем. Из теории кодов Рида-Соломона следует, что ес ли символом кода является байт, то полная длина кодового слова должна
составлять 255 байт (239 информационных и 16 проверочных). Однако, пакет транспортного потока МPEG-2 содержит 188 байт. Чтобы согласо
вать размер пакета с параметрами кода, перед кодированием в начало каж-
[37, 38].
4.3. Принципы кодирования, исиравляющего ошибки
215
дого транспортного пакета добавляют 51 нулевой информационный байт, а после кодирования эти дополнительные нулевые байты отбрасывают.
В приемнике для каждого принятого транспортного пакета, содержа
щего 204 байта, вычисляются синдромы и находятся два полинома: «лока тор», корни которого показывают положение ошибок, и «корректор» (evaluator), дающий значение ошибок. Ошибки корректируются, если это возможно. Если же коррекция невозможна (например, ошибочных байт более 8) данные в пакете не изменяются, а сам пакет помечается путем ус тановки флага (первый бит после синхробайта), как содержащий неустра нимые ошибки. В обоих случаях 16 избыточных байт удаляются, и после декодирования длина транспортного пакета становится равной 188 байт.
4.3.3. Сверточное кодирование
Другой класс корректирующих кодов, используемых в современном
цифровом телевидении, - это сверточные коды, основанные на преобразо
вании входной бесконечной последовательности двоичных символов в вы xoдHyю бесконечную последовательность двоичных символов, в которой на каждый символ входной последовательности приходится более одного символа Увеличение количества передаваемых двоичных симво
лов при использовании сверточных кодов характеризуется относительной
скоростью кода, иногда называемой просто скоростью кода,
R= QBX =k ,
Qвых n
где QBX и Qвых - скорости передачи двоичных символов на входе и выхо де кодера соответственно, k - число бит входной последовательности, пре
образуемых в n бит выходной последовательности.
Пример сверточного кодера приведен на рис. 4.5. Кодер содержит
трехразрядный сдвиговый регистр, на вход которого поступает входная
последовательность двоичных символов. На каждый такт биты в ячейках регистра сдвигаются на шаг вправо, причем очередной бит входной после довательности записывается в первую слева ячейку, а бит из крайней спра-
Вход
Выход
Рис. 4.5. Сверточный кодер
216
4. ОСОБЕННОСТИ ПЕРЕДАчи СИГНАЛОВ ЦИФРОВОГО ТЕЛЕВИДЕНИЯ
ва ячейки выбрасывается. Выходы разрядов регистра подключены ко вхо дам двух сумматоров по модулю 2. Выходная последовательность двоич ных символов формируется с помощью коммутатора, который на каждый такт входной последовательности сначала передает на выход бит с верхне го сумматора (точка 1), а потом - бит с нижнего сумматора (точка 2). Та ким образом, на каждый бит входной последовательности формируются два бита выходной последовательности, то есть относительная скорость этого кода R = 1/2.
Важный параметр сверточных кодов - кодовое ограничение, обозна чаемое К. Этот параметр показывает, сколько групп по k бит содержится в сдвиговом регистре и, следовательно, одновременно участвует в формиро вании бит выходной последовательности. В рассматриваемом примере
k=1,K=3.
Работа сверточного кодера поясняется решетчатой диаграммой (рис. 4.6). Каждый двоичный символ входной последовательности преоб
разуется в пару двоичных символов выходной последовательности, опре деляемую двоичным символом входной последовательности и текущим
состоянием кодирующего устройства. Таких состояний может быть четы
ре: 00,01,10 и 11.
Каждому состоянию соответствует горизонтальный ряд узлов на диа грамме. Из каждого узла, соответствующего текущему состоянию, выходят
две ветви. Верхняя (на рис. 4.6) ветвь соответствует двоичному символу
«О» входной последовательности, а нижняя ветвь - двоичному символу
«1». Пара цифр у каждой ветви показывает пару двоичных символов вы ходной последовательности, формируемых при данном переходе коди
рующего устройства из одного состояния в другое. Полученная структура переходов кодирующего устройства образует решетку, поэтому такие коды
часто называютсярешетчатыми (trellis code).
Если входная последовательность состоит из одних нулей, то и выход ная последовательность также содержит только нули. Пусть входная после довательность содержит один единичный бит, а остальные - равные нулю:
... 001000 ....
С помощью структурной схемы кодера и решетчатой диаграммы по
строим выходную последовательность:
Рис. 4.6. Решетчатая диаграмма сверточного кода
4.3. Принципы кодирования, исиравляющего ошибки
217
...
00 00
11 01
11 00 11 ....
Эта последовательность содержит 5 единиц, поэтому расстояние Хем
минга между ней и последовательностью из одних нулей равно 5. Изучение
свойств рассматриваемого сверточного кода показывает, что расстояние
Хемминга между выходными последовательностями, получающимися из
различных входных последовательностей и несодержащими ошибок, ока зывается не менее 5 [38]. Вообще, расстояние между выходными последова тельностями возрастает с уменьшением R и с увеличением К.
ДЛЯ декодирования сверточных кодов чаще всего применяется алго
ритм Витерби, который позволяет из множества возможных путей, приво
дящих к последнему декодируемому символу принятой последовательно
сти, выбрать относительно небольшое число путей, являющихся наиболее правдоподобными, и определить правильное значение символа исходной
последовательности.
4.3.4. Алгоритм декодирования Витерби
Алгоритм Витерби - это алгоритм максимального nравдоnодобия
для декодирования сверточных кодов, основанный на использовании веро
ятностных характеристик принимаемых сигналов. Декодирование может иметь как жесткое, так и мягкое решения. В случае жесткого решения о принятых сигналах выбирается кодовое слово, отличающееся от принятого слова в наименьшем числе символов. При мягком решении используется
информация об апостериорной вероятности принимаемых символов. Од
ним из преимуществ алгоритма является то, что сложность реализации де
кодера с мягким решением мало отличается от сложности реализации де
кодера с жестким решением. Недостаток - экспоненциальный рост слож
ности декодера в зависимости от длины кодового ограничения сверточного
кода, которая по этой причине должна быть ограничена значением при мерно равным 1О.
Процесс декодирования заключается в прослеживании по кодовой
решетке состояний пути с максимальной апостериорной вероятностью с
применением для оценки расстояний, например, метрики Хемминга. На
отдельном шаге декодирования в каждом из состояний решетчатой диа граммы осуществляется вычисление метрик ветвей по принимаемым ка нальным символам, сложение метрик предыдущих состояний с метриками соответствующих ветвей, сравнение метрик путей, входящих в данный
узел решетки, и выбор путей с наименьшими метриками, величины кото
рых используют в качестве метрик состояний на следующем шаге декоди poBaHия. При равенстве метрик сравниваемых путей выбор, например, од
ного из двух путей производят случайно. На каждом шаге в результате
сравнения половина возможных путей отбрасывается и в дальнейшем не
218
4. ОСОБЕННОСТИ ПЕРЕДАчи СИГНАЛОВ ЦИФРОВОГО ТЕЛЕВИДЕНИЯ
Данные
Исправ
ленные
стира ния
Блок вычисления
дан ные
-r--
Блок вычисления
Блок суммирования,
-
-
метрики выбранных
-
-
f-
метрики ветвей
сравнения, селекции
путей
t
!
t
~
~
Блок синхронизации и
Оценка
оценки коэффициента -
коэффициента
ошибок ошибок
Рис. 4. 7. Структурная схема декодера Витерби
используется. Другая половина образует продолжения путей для следую
щего шага декодирования. Из каждого шага на следующем шаге вновь по
являются варианты продолжения, исследуемые с использованием той же последовательности вычислений.
Таким образом, в процессе декодирования по кодовой решетке про
слеживается путь, имеющий минимальное расстояние от пути, генери
руемого в кодере. Алгоритм Витерби обеспечивает высокую помехо
устойчивость и является достаточно простым при его технической реали
зaции на специализированных СБИС [39]. Пример такой реализации по казан на рис. 4.7
Алгоритм Витерби сравнительно просто реализуется для кодов СО
скоростями R = 1/n. При скоростях вида R = m/n структура декодера ус
ложняется. Для упрощения алгоритма при использовании высоких кодо
вых скоростей R = (n - 1)/n часто выбирают коды, полученные выкалыва нием (nерфорацией) некоторого исходного сверточного кода с кодовой скоростью 1/2. Процедура выкалывания состоит в удалении из исходного
кода некоторых символов на заданных позициях. Поскольку характеристи
ки выколотых сверточных кодов практически не уступают лучшим извест
ным кодам с той же кодовой скоростью, то они получили широкое распро
странение [15].
Выкалывание отдельных символов сигнала позволяет модифициро
вать решетчатую диаграмму и получить кодовую решетку, отвечающую
коду с более высокой скоростью и меньшей избыточностью при сохране
нии длины кодового ограничения.
4.3.5. Каскадное кодирование
В системах наземного цифрового телевизионного вещания, как прави
ло, используется каскадное кодирование, которое может быть как последо
вательным, так и параллельным.
Современные системы цифрового телевизионного вещания, передаю щие потоки данных с высокой степенью сжатия, обладают повышенной чувствительностью к ошибкам, поэтому они предъявляют очень высокие
4.3. Принципы кодирования, исиравляющего ошибки
219
Вход
Кодер
Кодер
Канал
Декодер
Декодер
Выход
внешнего
внутреннего
внутреннего
внешнего
связи
кода
кода
кода
кода
Рис. 4.8. Схема каскадного кодирования
требования к надежности кодовой защиты. Кодовое расстояние зависит от избыточности кода. Поэтому для исправления пакетов ошибок (оши бок большой степени кратности) потребовалось бы значительно увеличить избыточность кода Рида-Соломона и тем самым загрузить канал передачи избыточной информацией в ущерб основной. Наиболее высокая исправ ляющая способность по отношению к одиночным и пакетированным ошибкам достигается при использовании каскадного кодирования, впер вые предложенного Форни [37].
Термин каскадное кодирование последовательного типа характеризу
ет случай использования двух последовательно включенных кодеков, как
правило, различного типа, оптимизированных для исправления ошибок
различной структуры (рис. 4.8). В этом случае кодер и декодер, сопряжен
ные соответственно с модулятором и демодулятором, то есть находящиеся
внутри цепи кодирования, называются внутренним кодеком. Первый кодер
и последний декодер в цепи каскадного кодирования называются внешним
кодеком. Его задача - исправление одиночных и пакетированных ошибок на уровне символов передаваемых данных. Предположим, что внешний
кодек работает с кодовой скоростью r = k/n, а внутренний - с R = K/N. То гда с учетом того, что длина каскадного кода составляет N* = nN симво
лов, из которых К* =
kK символов являются информационными, кодовая
скорость каскадного
кода R* = kK/nN = rR. Следовательно, величину nN
можно считать как общую длину кода каскадного кодера. Известно, что чем длиннее код, тем большей исправляющей способности можно достиг нуть, но одновременно тем выше будет сложность аппаратуры. Для кас кадных кодов длина кода пропорциональна произведению nN, но слож ность аппаратуры пропорциональна сумме этих чисел. Преимущество кас кадного кодирования в том, что высокая исправляющая способность обес
печивается установкой двух сравнительно простых кодеков с длинами ко
дов n иN.
В системах цифрового телевизионного вещания кодеки блокового RS-
кода используют в качестве внешнего кодека, так как они имеют хорошие
характеристики как для независимых, так и для пакетированных ошибок, и хорошо устраняют ошибки на уровне транспортного пакета, выдаваемого потребителю. Для внутреннего кодирования обычно используют сверточ
ные коды. Внутренний сверточный кодек исправляет ошибки на уровне физической передачи модулированного сигнала, поэтому его часто назы
вают модуляционным кодеком. Такое построение каскадного кодека имеет
свои особенности. Поскольку сверточный кодек работает при умеренно