Материал: Технологии цифровой связи

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

В общем случае справедливы следующие соотношения

- для обнаруживающей способности

- для исправляющей способности

.2 Линейные коды

Двоичный блочный код является линейным если сумма по модулю 2 двух кодовых слов является также кодовым словом.Линейные коды также называют групповыми.

Введем понятия группы.

Множество элементов с определенной на нем групповой операцией называется группой, если выполняется следующие условия:

. Замкнутость gig j= gk G в результате операции с двумя элементами группы получается третий, так же принадлежащий этой группе.

.Ассоциативность (сочетательность) (gigj)  gk = gi (gj gk)

.Наличие нейтрального элемента gj  e = gj

4. Наличие обратного элемента. gi  (gi)-1= e

Если выполняется условие gi  gj = gj  gi, то группа называется коммутативной.Множество кодовых комбинаций n-элементного кода является замкнутой группой с заданной групповой операцией сложение по модулю 2.

Поэтому используя свойство замкнутости относительно операции 2, множество всех элементов можно задать не перечислением всех элементов, а производящей матрицей.Все остальные элементы, кроме 0, могут быть получены путем сложения по модулю 2 строк производящей матрицы в различных сочетаниях.В общем случае строки производящей матрицы могут быть любыми линейно независимыми, но проще и удобнее брать в качестве производящей матрицы - единичную.


2.3 Циклические коды

Широкое распространение на практике получил класс линейных кодов, которые называются циклическими. Данное название происходит от основного свойства этих кодов:

если некоторая кодовая комбинация принадлежит циклическому коду, то комбинация полученная циклической перестановкой исходной комбинации (циклическим сдвигом), также принадлежит данному коду.

.

Вторым свойством всех разрешенных комбинаций циклических кодов является их делимость без остатка на некоторый выбранный полином, называемый производящим.

Синдромом ошибки в этих кодах является наличие остатка от деления принятой кодовой комбинации на производящий полином.

Эти свойства используются при построении кодов, кодирующих и декодирующих устройств, а также при обнаружении и исправлении ошибок.

Представление кодовой комбинации в виде многочлена

Описание циклических кодов и их построение удобно проводить с помощью многочленов (или полиномов).

В теории циклических кодов кодовые комбинации обычно представляются в виде полинома. Так, n-элементную кодовую комбинацию можно описать полиномом (n-1) степени, в виде

.

где ={0,1}, причем = 0 соответствуют нулевым элементам комбинации, а = 1 - ненулевым.

Запишем полиномы для конкретных 4-элементных комбинаций



Действия над многочленами

При формировании комбинаций циклического кода часто используют операции сложения многочленов и деления одного многочлена на другой. Так,

,

поскольку .

Следует отметить, что действия над коэффициентами полинома (сложение и умножение) производятся по модулю 2.

Рассмотрим операцию деления на следующем примере:


Деление выполняется, как обычно, только вычитание заменяется суммированием по модулю два.

Отметим, что запись кодовой комбинации в виде многочлена, не всегда определяет длину кодовой комбинации. Например, при n = 5, многочлену  соответствует кодовая комбинация 00011.

Алгоритм получения разрешенной кодовой комбинации циклического кода из комбинации простого кода

Пусть задан полином , определяющий корректирующую способность кода и число проверочных разрядов r, а также исходная комбинация простого k-элементного кода в виде многочлена .

Требуется определить разрешенную кодовую комбинацию циклического кода (n, k).

Умножаем многочлен исходной кодовой комбинации на


Определяем проверочные разряды, дополняющие исходную информационную комбинацию до разрешенной, как остаток от деления полученного в предыдущем пункте произведения на образующий полином


Окончательно разрешенная кодовая комбинация циклического кода определится так


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

Формирование базиса (производящей матрицы) циклического кода

Формирование базиса циклического кода возможно как минимум двумя путями.

Вариант первый.

Составить единичную матрицу для простого исходного кода.

Определить для каждой кодовой комбинации исходного кода группу проверочных элементов и дописать их в соответствующие строки матрицы.


Полученная матрица и будет базисом циклического кода. Причем, в данном случае, разрешенные комбинации заведомо разделимы (т.е. информационные и проверочные элементы однозначно определены).

Вариант второй.

Дописать слева от КК, соответствующей образующему полиному циклического кода нули так, чтобы длина разрешенной кодовой комбинации равнялась n.

Получить остальные разрешенные кодовые КК базиса, используя циклический сдвиг исходной. (В базисе должно быть k - строк)

В данном случае код будет неразделимым.

Получив базис ЦК, можно получить все разрешенные комбинации, проводя  сложение по модулю 2 кодовых комбинаций базиса в различных сочетаниях и плюс НУЛЕВАЯ.



Построение кодера циклического кода

Рассмотрим код (9,5) образованный полиномом

.

Разрешенная комбинация циклического кода  образуется из комбинации простого (исходного) кода путем умножения ее на  и прибавления остатка R(x) от деления на образующий полином.

Умножение полинома на одночлен

эквивалентно добавлению к двоичной последовательности соответствующей G(x) , r - нулей справа.

Пусть

тогда

Для реализации операции добавления нулей используется r-разрядный регистр задержки.

Рассмотрим более подробно операцию деления:


Как видим из примера, процедура деления одного двоичного числа на другое сводится к последовательному сложению по mod2 делителя [10011] с соответствующими членами делимого [10101], затем с двоичным числом, полученным в результате первого сложения, далее с результатом второго сложения и т.д., пока число членов результирующего двоичного числа не станет меньше числа членов делителя.

Это двоичное число и будет остатком .

Построение формирователя остатка циклического кода

Структура устройства осуществляющего деление на полином полностью определяется видом этого полинома. Существуют правила позволяющие провести построение однозначно.

Сформулируем правила построения ФПГ.

Число ячеек памяти равно степени образующего полинома r.

Число сумматоров на единицу меньше веса кодирующей комбинации образующего полинома.

Место установки сумматоров определяется видом образующего полинома.


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

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

Целью курса является изучение основных закономерностей и методов передачи сообщений по каналам связи и решение задачи анализа и синтеза систем связи.

Курс «Технология цифровой связи» предназначен для подготовки инженеров электросвязи широкого профиля по специальностям автоматической электросвязи, многоканальной телекоммуникационной системы, радиосвязь, радиовещание и телевидение, а также бакалавров по направлению телекоммуникаций.

3. Расчетная часть

3.1 Общее задание

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

3.2 Исходные данные

Необходимые для решения задачи исходные данные выбираются по таблице 1 в соответствии с полученным вариантом.

Таблица 3.1Исходные данные для вариантов расчетно-графической работы

Вариант №

Количество элементов в коде Количество исправляемых ошибок Вариант №Количество элементов в коде Количество исправляемых ошибок





1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

5 6 7 8 9 10 5 6 7 8 9 10 5 6 7 8 9 10 5 6

1 5 3 2 4 1 2 4 6 1 3 2 3 3 5 4 2 3 4 2

21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

7 8 9 5 6 7 8 6 7 5 5 6 7 6 9 8 10 5 5 8

4 3 1 5 1 2 5 6 1 3 5 2 4 6 3 4 2 4 5 3


3.3 Этапы выполнения работы

1. Определение числа проверочных элементов избыточного кода.

2. Выбор образующего многочлена для построения кода, указанного в задании.

3. Расчёт матрицы синдромов для однократной ошибки.

4. Построение функциональной схемы устройств кодирования-декодирования полученного кода.

5. Построение графика появления необнаруживаемой ошибки при заданном изменении вероятности ошибки в канале связи.

 

.4 Задание варианта


Разработать систему кодирования/декодирования для k = 6-элементного первичного кода, когда код обнаруживает и исправляет tИ = 5-ошибку. Оценить вероятность обнаружения ошибки на выходе системы передачи, если вероятность ошибки в канале связи РОШ меняется от  до .

3.5 Решение


Определение количества поверочных элементов r.

Исходя из того, что k = 6 и tИ = 5, решаем систему уравнений:


Откуда следует:


Составляем таблицу:


1 2 3 4 5

0,3 0,6 2,9 9,2 23,5


Откуда определяем: r = 5, n = k + r = 6 + 5 = 11.

3.6 Выбор образующего полинома

После определения проверочных разрядов r, выбираем образующий полином G(x) (многочлен) степени, равной r.

Образующий полином G(x) должен обладать некоторыми свойствами:

1)      Остатки от деления должны быть все разные, т.е. его нельзя составить из степеней низших порядков, он неприводимый.

2)      Число остатков у этого полинома должно быть равно количеству ошибок в коде, т.е. такие полиномы примитивные.

С помощью таблицы образующих полиномов можно найти необходимый полином. В приводимой таблице указаны некоторые свойства этих многочленов и соотношения между ними. Приводятся примитивные многочлены с минимальным числом ненулевых коэффициентов. Многочлены даны в восьмеричном представлении.

Двойственный многочлен неприводимого многочлена также неприводим, а двойственный многочлен примитивного многочлена примитивен. Поэтому каждый раз в таблице приводится либо сам многочлен, либо двойственный многочлен. Каждая запись в таблице, оканчивающаяся некоторой буквой, соответствует некоторому неразложимому многочлену указанной степени. Для степеней от 2 до 16 этими многочленами, а также двойственными к ним исчерпываются все неразложимые многочлены этих степеней.

Буквы, которые приведены после восьмеричного представления многочлена, дают о нем следующую информацию:

A, B, С, D   Не примитивный

Е, F, G, Н  Примитивный

A, B, Е, F   Корни линейно зависимы

С, D, G, Н  Корни линейно независимы

A, C, Е, G   Корни двойственного многочлена линейно зависимы

B, D, F, Н  Корни двойственного многочлена линейно независимы

Выписываем часть таблицы неприводимых полиномов:

Полиномның m дәрежесі

Полиномдардың сегіздік кодта көрсетілуі

1.7





3

1.13





4

1.23

3.37

5.007



5

1.45

3.75

5.67



6

1.103

3.127

5.147

7.111

9.115


11.155

21.007




7

1.211

3.217

5.235

7.365

9.277


11.325

13.203

19.303

21.345


8

1.435

3.567

5.763

7.551

9.765


11.747

13.453

15.727

17.023

19.545


21.613

23.543

25.433

27.477

37.537


43.703

45.471

51.037

85.007



Из таблицы выбираем полином (1 45F) и затем переводим из восьмеричного в двоичное представление:

Получили образующий полином:

G(x) = x5 + x2 + 1

3.7 Проверка образующего полинома

1. Определяем необходимое кодовое расстояние:


. Вычисляем:       f(x) = xk-1 = x5 = 100000

. Находим:          f(x)xr = x10 = 10000000000

. Поделим f(x)xr на G(x):

x10    |x5 + x2 + 110 + x7 + x5 |x5 + x2 + 1

x7 + x5

x7 + x4 + x2

x5 + x4 + x2

x5 + x2 + 1

x4 + 1= r(x) = 10001

Полученный остаток от деления является комбинацией проверочных элементов:

r(x) = 10001

. Записываем многочлен комбинации:

F(x) = f(z)xr + r(x) = 10000010001

Определяем вес многочлена (количество единиц в комбинации): V = 3.


3.8Построение матрицы синдромов для однократной ошибки

Для определения элементов матрицы синдромов будем вносить ошибку в кодовую комбинацию (F(x) == 10000010001) поочерёдно начиная со старшего разряда, затем делить на образующий полином, полученный остаток и будет одной из строк матрицы синдромов. Пусть ошибка произошла в самом старшем разряде, тогда она имеет вид 0000010001, т.е. деление такого числа на образующий полином и есть это число. Следовательно это синдром для ошибки в разряде а1. Определим синдромы для остальных разрядов.

для а2:

x9    |x5 + x2 + 1

x9 + x6 + x4 |x4 + х + 1

x6 + x4

x6 + x3 + x

x4 + x3 + x = s(x) = 11010

для а3:

x8    |x5 + x2 + 1

x8 + x5 + x3 |x3 + 1

x5 + x3

x5 + x2 + 1

x3 + x2 + 1= s(x) = 01101

для а4:

x7    |x5 + x2 + 1

x7 + x4 + x2 |x2 + 14 + x2 = s(x) = 10100

для а5:

x6    |x5 + x2 + 1

x6 + x3 + x |x

x3 + x = s(x) = 01010

для а6:

x5    |x5 + x2 + 1

x5 + x2 + 1 |1

x2 + 1 = s(x) = 00101

Таким образом, матрица синдромов имеет вид:


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

3.9 Схема кодера циклического кода (12, 8)

Образующий полином G(x) можно представить в виде:

G(x) = g4x4 + g3x3 + g2x2 + g1x + g0, где g4 = 1, g3 = 0, g2 = 0, g1 = 1, g0 = 1.

Тогда устройство кодирования имеет вид:

Рис.3.1 Схема устройства кодирования циклического кода (12, 8).

3.10 Принцип работы устройства

В исходном состоянии ключ находится в положении 1, на вход устройства поступает первичная кодовая комбинация f(x) (начиная со старшего разряда). Через k-тактов вся первичная кодовая комбинация поступит на выход, а в результате деления (благодаря обратной связи) образуется остаток. Ключ переключается в положение 2. Таким образом, через n-тактов на выходе получим F(x).

3.11 Схема декодера циклического кода (12, 8)








Рис 3.2 Схема устройства декодирования       циклического кода (12, 8).

3.12 Принцип работы устройства

Исходная комбинация F(x) подается в буферный регистр и одновременно в декодирующий регистр. Если с приходом последнего символа, зафиксирован нулевой остаток (синдром 0000), то ошибок нет, если же не нулевой, то есть. Принятая комбинация подается через выходной сумматор, и искаженный сигнал исправляется.

3.13Оценка вероятности обнаруживаемой ошибки на выходе системы передачи


Определим вероятность ошибочного приема кодовой комбинации в условиях биномиального распределения ошибок. При помехоустойчивом кодировании различают ошибки двух типов:

·   Обнаруживаемые или исправляемые кодом.

·        Необнаруживаемые ошибки.

Вероятности появления необнаруживаемых ошибок (в режиме исправления):


С помощью программы в среде МАТКАД производим расчеты и получаем графическую зависимость вероятности необнаруживаемых ошибок от вероятности ошибки элемента:

Рис3.3 График зависимости вероятности не обнаруживаемой ошибки Рно на выходе системы передачи от вероятности ошибки в канале связи Рош.

Из графика видим, что с увеличением вероятности ошибки в канале вероятность обнаружения ошибки на выходе системы передачи также увеличивается.

ЛИТЕРАТУРА

цифровой связь дискретный

1.           Питерсон У., Уэлдон Э. Коды исправляющие ошибки. - М.: Мир, 1976г.

2.      Мак-Вильямс Ф.Дж., Слоэн Н.Дж. Теория кодов, исправляющих ошибки. - М.: Радио и связь, 1979г.

.        Основы передачи дискретных сообщений: Учебник для вузов / Ю.П. Куликов, В.М. Пушкин, Г.И. Скворцов и др.: Под ред. В.М. Пушкина. - М.: Радио и связь, 1992.- 288 с., ил.