Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы по ТИ 2009-2010 год.doc
Скачиваний:
14
Добавлен:
16.04.2019
Размер:
1.03 Mб
Скачать
  1. Циклические помехоустойчивые коды.

Циклические коды (ЦК) составляют множество многочленов Вi(Х) степени n -1 и менее (до r = n - k, где r - число проверочных символов), кратных порождающему (образующему) полиному G(Х) степени r, который, в свою очередь, должен быть делителем бинома X n + 1, т. е. остаток после деления бинома на G(X) должен равняться нулю.

Учитывая, что ЦК принадлежат к классу линейных, групповых кодов, сформулируем ряд основных свойств, им присущих.

1. Сумма разрешённых кодовых комбинаций ЦК образует разрешённую кодовую комбинацию

Bi(X) Bj(X) = Bk(X).

2. Поскольку к числу разрешённых кодовых комбинаций ЦК относится нулевая комбинация 000...00, то минимальное кодовое расстояние dmin для ЦК определяется минимальным весом разрешённой кодовой комбинации: Dmin = Wmin.

3. Циклический код не обнаруживает только такие искажённые помехами кодовые комбинации, которые приводят к появлению на стороне приёма других разрешённых комбинаций этого кода из набора Ν0.

4. Значения проверочных элементов r = n - k для ЦК могут определяться путём суммирования по модулю 2 ряда определённых информационных символов кодовой комбинации Аi(Х). Например, для кода Хемминга (7,4) с порождающим полиномом G(X)=X3+Х+1 алгоритм получения проверочных символов будет следующим [3]:

r1 = i1 i2 i3 ;

r2 = i2 i3 i4 ;

r3 = i1 i2 i4 ;

Эта процедура свидетельствует о возможности "поэлементного" получения проверочной группы для каждой кодовой комбинации Аi(Х). В соответствии с (4.14) могут строиться кодирующие устройства для ЦК.

5. Как было показано на примере в подразделе 1.2, умножение полинома на X приводит к сдвигу членов полинома на один разряд влево, а при умножении на Xr , соответственно, на r разрядов влево, с заменой r младших разрядов полинома "нулями". Умножение полинома на X свидетельствует о том, что при этой процедуре X является "оператором сдвига". Деление полинома на X приводит к соответствующему сдвигу членов полинома вправо с уменьшением показателей членов на 1. Процедура сдвига позволяет к исходной кодовой комбинации Аi(Х), после домножения её на Xr, дописать справа r проверочных символов.

6. Поскольку разрешённые кодовые слова ЦК Bi(X) без остатка делятся на порождающий полином G(X) с получением итога в виде информационной комбинации Аi(Х), то имеется возможность формировать Bi(X) на стороне передачи (кодирующее устройство) простым методом умножения.

Два последних свойства ЦК позволяют осуществить построение кодеров ЦК двумя методами: методом умножения и методом деления полиномов. Рассмотрим достоинства и недостатки этих методов с учётом вариантов построения декодеров ЦК, соответствующих этим методам.

Метод умножения позволяет при формировании разрешённых кодовых комбинаций по алгоритму (4.2) использовать любой порождающий полином, лишь бы его максимальная степень была равна числу необходимых проверочных символов r.

Однако этот метод обладает двумя существенными недостатками.

Во-первых, при формировании ЦК методом умножения в полученной комбинации Bi(X) в явном виде не содержатся информационные символы. Код получается неразделимым с "перетасованными" информативными и проверочными символами, что затрудняет его декодирование, так как это приводит к необходимости применять метод максимального правдоподобия в декодирующем устройстве (ДУ).

Метод максимального правдоподобия (ММП) предполагает при исправлении ошибок принимаемую кодовую комбинацию отождествлять с той разрешённой, к которой принятая находится ближе всего. При таком непосредственном способе декодирования в памяти запоминающего устройства (ЗУ) декодера необходимо хранить все разрешённые кодовые комбинации N0, что требует на стороне приёма больших объёмов ЗУ и большого времени обработки при декодировании. Эти обстоятельства являются вторым недостатком метода умножения при кодировании ЦК.

Исследования показывают [5 - 8], что хороший циклический корректирующий код с кратностью исправляемых ошибок gu ≥ 5 при относительной скорости кода Вк ≥ 0,5, т. е. коэффициенте избыточности к ≤ 0,5, должен иметь число информационных символов k ≥ 40 . Это значение и приводит к техническим трудностям при процедуре декодирования по ММП, сводящейся к сравнению принятой кодовой комбинации со всеми N0 разрешёнными.

Для примера определим время декодирования Тдк принятой кодовой комбинации, если число информационных символов в ней k= 40 и для сравнения используется ЭВМ со скоростью 107 операций в секунду. Будем полагать, что для сравнения принятой кодовой комбинации с одной из разрешённых достаточно одной операции на ЭВМ. Тогда для проведения N 0 = 2k = 240 сравнений потребуется время декодирования Как видно из примера, задача декодирования простым перебором и сравнением непосильна даже для современных ЭВМ.

В соответствии с этим, основным направлением в теории кодирования является поиск таких кодов и алгоритмов их формирования и обработки, для которых не требуется хранение в ЗУ разрешённых кодовых комбинаций.

Синдромный метод декодирования (СМД) предполагает в ДУ принятую кодовую комбинацию поделить на порождающий полином. Если принятая комбинация является разрешённой, т. е. не искажена помехами в канале связи, то остаток от деления будет нулевым. Ненулевой остаток свидетельствует о наличии в принятой кодовой комбинации ошибок, остаток от деления и называется синдромом.

Термин "синдром" заимствован из медицинской практики (от греч. вместе бегущий) и означает сочетание (комплекс) симптомов болезни, характерное для определённого заболевания. В теории кодирования синдром, который также называют опознавателем ошибки, обозначает совокупность признаков, характерных для определённой ошибки. Для исправления ошибки на стороне приёма необходимо знать не только факт её существования, но и её местонахождение, которое определяется по установленному виду вектора ошибки z(X).

После передачи по каналу с помехами принимается кодовое слово Bi' (X) = Bi(X) + z(X), (4.16)

где Bi(X) - передаваемая кодовая комбинация; z(X) полином (вектор) ошибки,

имеющий степень от 1 до n -1.

При декодировании принятое кодовое слово делится на G(X) где остаток от деления Si(X) и является синдромом. Если при делении получается нулевой остаток Si(X) = 0, то выносится решение об отсутствии ошибки z(X) = 0. Если остаток (синдром) ненулевой Si(X)≠ 0, то выносится решение о наличии ошибки и определяется шумовой вектор (полином) z(X), а затем -

передаваемое кодовое слово, поскольку из (4.16) следует Bi(X) = Bi' (X) + z(X). (4.18)

Всякому ненулевому синдрому соответствует определённое расположение (конфигурация) ошибок. Взаимосвязь между видом синдрома и местоположением ошибочного символа находится довольно просто. Достаточно в любую разрешённую кодовую комбинацию ввести ошибку и выполнить деление на G(X). Полученный остаток (4.17) - синдром и будет указывать на ошибку в этом символе. В качестве примера для ЦК Хемминга (7,4), позволяющего исправлять однократную ошибку при dmin = 3 (см. табл. 1), взаимосвязь между синдромом и ошибочным символом для двух возможных порождающих полиномов кода (7,4) приведена в табл. 2.

Пользуясь этой таблицей, можно найти местоположение ошибки и исправить её. Для параметров рассмотренного ранее примера 1, где была показана процедура кодирования кодовой комбинации Ai = 1001 при использовании порождающего полинома G(X) = X3 + X +1 для кода Хемминга (7,4), исправляющего однократную ошибку, приведём в примере 2 процедуру декодирования принятой с помехой кодовой комбинации.

Плотноупакованные коды — такое название получили коды, у которых соблюдается точное равенство В (4.19) числа необходимых синдромов для исправления ошибок заданной кратности. Вследствие уникальности таких кодов, плотноупакованные коды называют также "совершенными" или "оптимальными". К таким кодам относятся коды Хемминга, которые при минимальном кодовом расстоянии dmin = 3 обеспечивают исправление всех однократных ошибок, поскольку у классических кодов Хемминга число символов n = 2 r -1 удовлетворяет условию (4.19).

В общем случае, при необходимости исправления всех независимых ошибок кратности до gи включительно, требуемое число синдромов определяется выражением = - число сочетаний из n по i, причём C0 1 n = , так как 0! = 1.

С учётом (4.19) и (4.20), можно получить выражение для оценки числа проверочных символов r при необходимости исправления gи - кратных ошибок в принятых кодовых комбинациях

Занимаясь поиском плотноупакованных кодов ("кодов без потерь"), М. Голей заметил (опубликовано в 1949 году), что

а это означало, что может существовать плотноупакованный двоичный (23,12) код, удовлетворяющий условию (4.20), исправляющий все кодовые комбинации с тремя или менее ошибками. Он показал, что такой код действительно существует и в дальнейшем этот код получил его имя.

Код Голея относится к классу ЦК с порождающими двойственными (дуальными) полиномами (4.9):

Простым вычислением проверяется, что X ( G ~ X23 +1 =(X+1) ⋅G(X) ⋅

в связи с чем в качестве порождающего полинома ЦК Голея (23, 12) можно использовать как G(X), так и G̃(X).

Код Голея, гарантированно исправляющий ошибки с кратностью не менее трёх включительно, обладает минимальным кодовым расстоянием, dmin =2g и +1 = 7, что, как правило, указывается в маркировке кода (23, 12, 7). Добавление к этому коду общей проверки на чётность по всем позициям увеличивает на единицу как общую длину кода, так и минимальное кодовое расстояние dmin = 8.

Расширенный код Голея, имеющий маркировку (24, 12, 8), состоит из 12 информационных символов и 12 проверочных, т. е. представляет собой код, обладающий скоростью 1/2 и избыточностью, также равной 1/2.

Обратим внимание на то, что плотноупакованные коды Хемминга и Голея — циклические, которые принадлежат классу двоичных линейных кодов. Общим для линейных двоичных кодов является наличие, в качестве разрешённого, нулевого кодового слова 000...00, что приводит к тому, что минимальный вес wmin ненулевого разрешённого кодового слова равен минимальному кодовому расстоянию dmin (4.13).

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

(23, 12, 7) следующее:

N0 = N23 = 1; N7 = N16 = 253; N8 = N15 = 506; N11 = N12 = 1288,

а в расширенном коде Голея N0 = N24 = 1; N8 = N16 = 759; N12 = 2576. (4.23)

Кодовые слова с весом 12, 8 и 16, выделенные из кода (24,12,8). образуют КПВ максимальной мощности.

К сожалению, кроме кодов Хемминга (dmin = 3, gи =1) и кода Голея (23, 12, 7) пока не найдено других совершенных, плотноупакованных кодов, число синдромов у которых точно соответствует требуемому значению для гарантированного исправления ошибок заданной кратности.

1.5. Построение порождающих и проверочных матриц циклических кодов Наряду с полиномиальным способом задания кода, структуру построения кода можно определить с помощью матричного представления. При этом в ряде случаев проще реализуется построение кодирующих и декодирующих устройств ЦК. Рассмотрим варианты формирования и обработки ЦК, заданных в виде порождающих и проверочных матриц, на конкретном примере ЦК Хемминга (7, 4), воспользовавшись выражением (4.11), в котором определены двойственные (дуальные) порождающие полиномы кода:

X7+1 = (X +1) (X3+X+1) (X3+X2+1),

что соответствует кодам (7, 6); (7, 4); (7, 4),