Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кодирования.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
12.08 Mб
Скачать

1.4. Принципы формирования и обработки разрешенных кодовых комбинаций циклических кодов

На основании материалов предыдущего раздела можно дать следую- щее определение циклических кодов.

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

r, который, в свою очередь, должен быть делителем бинома X n + 1, т. е. остаток после деления бинома на G (X) должен равняться нулю.

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

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

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

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

вой комбинации:

dmin = Wmin. (4.13)

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

4. Значения проверочных элементов r = n k для ЦК могут опреде-

ляться путем суммирования по модулю 2 ряда определенных информа- ционных символов кодовой комбинации Аi (Х). Например, для кода Хем-

минга (7,4) с порождающим полиномом G (X) = X 3 + Х + 1 алгоритм

получения проверочных символов будет следующим:

r1 = i1 i2 i3 ;

r2 = i2 i3 i4 ;

r3 = i1 i2 i4 . (4.14)

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

ства для ЦК.

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

умножения ее на X r, дописать справа r проверочных символов.

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

ровать Bi(X) на стороне передачи (кодирующее устройство) простым

методом умножения (4.2).

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

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

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

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

мативными и проверочными символами, что затрудняет его декодиро- вание, так как это приводит к необходимости применять метод макси- мального правдоподобия в декодирующем устройстве (ДУ).

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

мов ЗУ и большого времени обработки при декодировании. Эти обсто-

ятельства являются вторым недостатком метода умножения при коди- ровании ЦК.

Исследования показывают [2–5], что хороший циклический коррек- тирующий код с кратностью исправляемых ошибок gи  5 при относи- тельной скорости кода Вк  0,5, т. е. коэффициенте избыточности x  0,5,

должен иметь число информационных символов k  40. Это значение и

приводит к техническим трудностям при процедуре декодирования по ММП, сводящейся к сравнению принятой кодовой комбинации со все- ми N0 разрешенными.

Для примера определим время декодирования Тдк принятой кодовой

комбинации, если число информационных символов в ней k = 40 и для

сравнения используется ЭВМ со скоростью 107 операций в секунду. Будем полагать, что для сравнения принятой кодовой комбинации с од- ной из разрешенных достаточно одной операции на ЭВМ. Тогда для проведения N0 = 2k = 240 сравнений потребуется время декодирования

40 12 5

T N0 2

1,110

1,1105 c

1,110

30 ч.

дк 7 7

VЭВМ 10 10

3600 c

Как видно из примера, задача декодирования простым перебором и

сравнением непосильна даже для современных ЭВМ.

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

ров на основе деления полиномов, а при декодировании – на основе синдромного метода декодирования (СМД).

Метод деления полиномов позволяет представить разрешенные к пе- редаче кодовые комбинации в виде разделенных информационных Ai(X) и проверочных Ri(X) символов, т. е. получить блочный код.

Поскольку число проверочных символов равно r, то для компактной

их записи в последние младшие разряды кодового слова надо предвари- тельно к Ai(X) справа приписать r "нулей", что эквивалентно умноже-

нию Ai(X) на оператор сдвига Xr (см. свойство 5 ЦК).

На практике предпочитают использование метода деления полино-

мов при построении кодеков, поскольку при этом имеется возможность представить кодовую комбинацию в виде разделенных информацион- ных и проверочных символов:

r

Bi (X) = Ai (X) X

+ Ri (X), (4.15)

где Ri (X) остаток от деления Ai (X) Xr /G(X).

В алгоритме (4.15) можно выделить три этапа формирования разре-

шенных кодовых комбинаций в кодирующем устройстве:

1) к комбинации первичного кода Ai(X) дописывается справа r ну- лей, что эквивалентно умножению Ai (X) на X r;

2) произведение Ai(X) X r делится на соответствующий порождающий полином G(X) и определяется остаток Ri(X), степень которого не превы- шает r – 1, этот остаток и дает группу проверочных символов;

3) вычисленный остаток присоединяется справа к Ai (X) X r.

Пример

Рассмотрим процедуру кодирования по алгоритму (4.15): для кодо- вой комбинации А = 1001 сформировать кодовую комбинацию цикли- ческого кода (7,4).

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

Ai (X) = 1001 ~ X3 + 1, (знак "~" тильда означает соответствие).

1. Ai (X) X r = (X 3 + 1 ) X 3 = X 6 + X 3 ~ 1001000, (n = 7).

2. Ai (X) X r /G(X) = X 6 + X 3 X 3 + X + 1

+ ——————

X6 + X 4 + X 3 X 3 + X

——————

X 4

+

X 4 + X 2 + X

——————

X2 + X – остаток Ri (X) = X 2 + X ~ 110.

3. Bi (X) = Ai (X) X r + Ri (X) = 1001110 – итоговая комбинация ЦК.

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

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

После передачи по каналу с помехами принимается кодовое слово

Bi (X) = Bi(X) + z (X), (4.16) где Bi(X) – передаваемая кодовая комбинация; z (X) – полином (вектор) ошибки, имеющий степень от 1 до n – 1.

При декодировании принятое кодовое слово делится на G(X)

Bi ( X )

G ( X )

Ui ( X )  Si ( X ),

(4.17)

где остаток от деления 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 (см. табл. 4.1), взаимосвязь меж- ду синдромом и ошибочным символом для двух возможных порождаю-

щих полиномов кода (7,4) приведена в табл. 4.2. Пользуясь этой табли- цей, можно найти местоположение ошибки и исправить ее.

Для параметров рассмотренного ранее примера, где была показана процедура кодирования кодовой комбинации Ai = 1001 при использова-

нии порождающего полинома G (X) = X3 + X +1 для кода Хемминга

(7,4), исправляющего однократную ошибку, приведем в следующем примере процедуру декодирования принятой с помехой кодовой ком- бинации.

Пример

Принятая кодовая комбинация ЦК (7,4) имеет вид Bi(X) = 1011110. Определить и исправить ошибку в Bi(X), если она имеется.

Выполним три необходимые операции, проводимые при декодировании:

1) в соответствии с алгоритмом (4.17) производим деление

Bi(X) / G(X) = X 6 + X 4 + X 3 + X2 + X X3 + X +1

——————

X 6 + X 4 + X 3 X 3

—————————

X 2 + X – остаток R (X) = X 2 + X ~ 110, отметим, что совпадение остатков в примерах 1 и 2 – чисто случайное,

в примере . 104) остаток являлся проверочной группой кода, а в при-

мере (с. 106) – синдромом;

2) по полученному синдрому 110 в соответствующем опознавателе синдрома (дешифраторе синдрома, локаторе ошибки) определяем вид шумового вектора z (X) 0010000 (см. табл. 4.2);

3) воспользовавшись алгоритмом (4.18), исправляем принятую кодо- вую комбинацию Bi(X) и получаем переданную комбинацию Bi(X):

Таблица 4.2

№ символа комбинации со старшего разряда

Ошибочный символ полинома комбинации

Синдром для порож- дающего полинома G (X) = X 3 + X + 1

Синдром для порож- дающего полинома G (X) = X 3 + X 2 + 1

Шумовой вектор

z (X)

7

6

5

4

3

2

1

X 6

X 5

X 4

X 3

X 2

X 1

X 0

101

111

110

011  H к (7, 4)

100

010

001

см. (4.29)

110

011

111

101  H˜ к (7, 4)

100

010

001

см. (4.29)

1000000

0100000

0010000

0001000

0000100

0000010

0000001

Нет ошибки

000

000

0000000

Bi (X) = Bi(X ) + z (X) = 1011110

0010000

————

1001110 – исправленная комби- нация на выходе ДУ с инвертированием неверно принятого символа.

Число проверочных символов r = n – k определяет число исправляемых ошибок. Значение r должно быть достаточным для получения необходимо- го числа синдромов S (опознавателей ошибок). Для исправления всех

одиночных (однократных) ошибок необходимо S = n + 1 синдромов, так

как шумовой вектор может принимать следующие n значений:

000...01, 000...10, ..., 001...00, 010...00, 100...00,

кроме того, необходим один синдром для определения факта безоши- бочного приема кодовой комбинации S0 = 000...00. Таким образом, для двоичных кодов при необходимости исправления всех однократных оши-

бок требуется выполнение соотношения

S = 2

n – k

= 2r

= n + 1. (4.19)

Плотноупакованные коды – такое название получили коды, у кото-

рых соблюдается точное равенство В (4.19) числа необходимых синдро- мов для исправления ошибок заданной кратности. Вследствие уникаль-

ности таких кодов, плотноупакованные коды называют также "совер- шенными" или "оптимальными". К таким кодам относятся коды Хем- минга, которые при минимальном кодовом расстоянии dmin = 3 обеспе-

чивают исправление всех однократных ошибок, поскольку у классичес-

ких кодов Хемминга число символов n = 2r – 1 удовлетворяет условию

(4.19).

В общем случае при необходимости исправления всех независимых ошибок кратности до gи включительно, требуемое число синдромов оп- ределяется выражением

S 1 C1 C 2

C 3 ... C gи

gи

C i ,

n n n n

n

i  0

(4.20)

n

где Ci

n!

(n i)! i!

n

число сочетаний из n по i, причем C 0

 1 , так

как 0! = 1.

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

gи

r log2

Ci .

(4.21)

n

i 0

Занимаясь поиском плотноупакованных кодов ("кодов без потерь"),

М. Голей заметил (опубликовано в 1949 г.), что

23 23 23 23

C 0 C1 C 2 C 3  1  23  253  1771  211,

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

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

(дуальными) полиномами (4.9):

G( X ) X 11 X 10 X 6 X 5 X 4 X 2 1;

G˜ ( X )  X 11 X 9 X 7 X 6 X 5 X  1.

Простым вычислением проверяется, что

(4.22)

X 23  1 

( X  1) G ( X ) 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) пока не найдено других совершенных, плотноупакованных кодов, число синдромов у которых точно соответствует требуемому зна-

чению для гарантированного исправления ошибок заданной кратности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]