
- •190000, Санкт-Петербург, ул. Б. Морская, 67
- •1. Методические указания по подготовке к лабораторной работе
- •1. 1. Структурная схема цифровой системы связи
- •1.6. Методы синхронизации и фазирования в цифровых системах связи
- •2. Порядок выполнения лабораторной работы
- •2.3. После набора контрольного слова необходимо нажать клавишу
- •16. Решить предыдущую задачу 15 при следующих условиях:
- •1. Методические указания по подготовке к лабораторной работе
- •1.1 Информация, сообщение, кодирование, сигнал
- •1.2. Информационные характеристики системы передачи сообщений
- •1.3. Эффективное кодирование дискретных сообщений
- •2. Порядок выполнения лабораторной работы
- •3. Порядок оформления и содержание отчета
- •4. Контрольные вопросы и задачи
- •3. Поясните определение "энтропия". Перечислите свойства энтропии.
- •1. Методические указания по подготовке к лабораторной работе
- •1.1. Принципы помехоустойчивого кодирования
- •1.4. Корректирующие коды Хемминга
- •3. Контрольные вопросы и задачи
- •1. Методические указания по подготовке к лабораторной работе
- •1.1. Классификация корректирующих кодов
- •1.3. Порождающие полиномы циклических кодов
- •1.4. Принципы формирования и обработки разрешенных кодовых комбинаций циклических кодов
- •1.5. Построение порождающих и проверочных матриц циклических кодов
- •1.6. Укороченные циклические коды
- •1.7. Циклические коды Боуза –Чоудхури –Хоквингема
- •1.8. Структурный состав линейных переключательных схем
- •1.10. Деление полиномов на базе лпс
- •1.11. Кодирующее и декодирующее устройства для кода Хемминга (7,4)
- •1.12. Принципы построения декодирующих устройств для циклических кодов с исправлением ошибок
- •2. Порядок выполнения лабораторной работы
- •3. Контрольные вопросы и задания
- •5. Харкевич а. А. Борьба с помехами. М.: Физматиздат, 1963. 276 с.
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,110
1,1105 c
1,110
30 ч.
дк 7 7
VЭВМ 10 10
3600 c
Как видно из примера, задача декодирования простым перебором и
сравнением непосильна даже для современных ЭВМ.
В соответствии с этим, основным направлением в теории кодирова- ния является поиск таких кодов и алгоритмов их формирования и обра- ботки, для которых не требуется хранение в ЗУ разрешенных кодовых комбинаций. Эти задачи решаются, в частности, при построении коде-
ров на основе деления полиномов, а при декодировании – на основе синдромного метода декодирования (СМД).
Метод деления полиномов позволяет представить разрешенные к пе- редаче кодовые комбинации в виде разделенных информационных Ai(X) и проверочных Ri(X) символов, т. е. получить блочный код.
Поскольку число проверочных символов равно r, то для компактной
их записи в последние младшие разряды кодового слова надо предвари- тельно к Ai(X) справа приписать r "нулей", что эквивалентно умноже-
нию Ai(X) на оператор сдвига Xr (см. свойство 5 ЦК).
На практике предпочитают использование метода деления полино-
мов при построении кодеков, поскольку при этом имеется возможность представить кодовую комбинацию в виде разделенных информацион- ных и проверочных символов:
r
+ 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
n!
(n i)! i!
n
1 , так
как 0! = 1.
С учетом (4.19) и (4.20) можно получить выражение для оценки чис- ла проверочных символов r при необходимости исправления gи – крат- ных ошибок в принятых кодовых комбинациях
gи
r log2
Ci .
(4.21)
n
i 0
Занимаясь поиском плотноупакованных кодов ("кодов без потерь"),
М. Голей заметил (опубликовано в 1949 г.), что
23 23 23 23
а это означало, что существует плотноупакованный двоичный (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) пока не найдено других совершенных, плотноупакованных кодов, число синдромов у которых точно соответствует требуемому зна-
чению для гарантированного исправления ошибок заданной кратности.