Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Циклические коды получили широкое распространение благодаря их эффективности при обнаружении и исправлении ошибок. Схемы кодирующих и декодирующих устройств для этих кодов строятся на основе обычных регистров сдвига.
Циклическим кодом называется линейный блочный (n, m)-код, который характеризуется свойством цикличности, т.е. сдвиг влево на один шаг любого разрешенного кодового слова дает также разрешенное кодовое слово, принадлежащее этому же коду и у которого, множество кодовых слов представляется совокупностью многочленов степени (n -1) и менее, делящихся на некоторый многочлен g (x) степени k = n - m, являющийся сомножителем двучлена xn +1.
Название кода произошло от его свойства, заключающегося в том, что каждая кодовая комбинация может быть получена путем циклической перестановки символов комбинации, принадлежащей этому же коду. Это означает, что если кодовая комбинация а 0 а 1 а 2… аn -1 является разрешенной комбинацией циклического кода, то комбинация вида аn -1 а 0 а 1 а 2… аn -2 так же является разрешенной комбинацией и принадлежит этому коду. Запись а 0 а 1… аn -1 означает, что кодовая комбинация состоит из n разрядов, первый из которых а 0, последний аn -1.
Отличие комбинации аn -1 а 0 а 1 а 2… аn -2 от комбинации а 0 а 1 а 2… аn -1 состоит в том, что последний разряд аn -1 становится первым, а предпоследний аn -2 становится последним. Такая перестановка называется циклической.
Циклические коды часто описываются с использованием многочленов (полиномов) переменной X
X = Р (x); Р (x) = an -1 xn -1 + … + a 1 x + a 0, (8.63)
где аi – цифры данной системы исчисления (в двоичной системе 0 и 1). Так, например, двоичное семиразрядное число 1010101 может быть записано в виде полинома:
Р (x) = 1 x 6 + 0 x 5 + 1 x 4 + 0 x 3 + 1 x 2 + 0 x 1 + 1 x 0 = x 6 + x 4 + x 2 + 1. (8.64)
То есть цифры двоичного кода рассматриваются как коэффициенты многочлена Р (x). Наибольшая степень х в слагаемом с ненулевым коэффициентом называют степенью многочлена (полинома). Представление кодовых комбинаций в виде (8.63) позволяет свести действия над комбинациями к действиям над многочленами. При этом сложение двоичных многочленов сводится к сложению по модулю 2 коэффициентов при равных степенях переменной х
ха + ха = 0; ха +0 = ха; 0 + 0 = 0. (8.65)
Умножение производится по обычному правилу перемножения степенных функций:
(8.66)
Рассмотрим пример умножения многочленов
и
Либо умножение можно произвести следующим образом
1 1 0 1 1 |
1 1 0 1 1 0 |
1 0 1 0. |
Деление осуществляется по правилу деления степенных функций, при этом операции вычитания заменяются операциями суммирования по модулю 2.
Рассмотрим пример деления многочлена
на бином . Вначале рассмотрим деление комбинаций.
1 1 1 0 1 0 | 1 0 0 1 | |||||||||||
Å | 1 0 0 1 | 1 1 1 | - результат деления – | |||||||||
0 1 1 1 1 0 | ||||||||||||
Å | 1 0 0 1 | |||||||||||
0 1 1 0 0 | ||||||||||||
Å | 1 0 0 1 | |||||||||||
0 1 0 1 | - остаток. | |||||||||||
А теперь рассмотрим деление полиномов
х 5+ х 4+ х 3+ х | х 3+1 | ||||||||||||
Å | х 5+ х 2 | х 2+ х +1 | - результат деления – 1 1 1 | ||||||||||
х 4+ х 2+ х 3+ х | новый многочлен | ||||||||||||
Å | х 4+ х | ||||||||||||
х 3+ х 2 | новый многочлен | ||||||||||||
Å | х 3+ 1 | ||||||||||||
х 2+1 | - остаток- 0 1 0 1. | ||||||||||||
Представления комбинаций в форме (8.63) удобно еще тем, что упомянутая ранее циклическая перестановка есть результат простого умножения данного полинома на х. Если одна из кодовых комбинаций выражается полиномом
Р (x) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + … + an -1 xn -1, (8.67)
то новая комбинация за счет циклического сдвига будет x × Р (x):
x × Р (x) = a 0 x + a 1 x 2 + a 2 x 3 + a 3 x 4 + an -2 xn -1 + an -1 xn. (8.68)
В последнем члене необходимо заменить хn на х0. Новую комбинацию обозначим Р 1(x)
Р 1(x) = an -1 х0 + a 0 x + a 1 x 2 + a 2 x 3 + … + an -2 xn -1. (8.69)
Пример. Рассмотрим, как получить новую комбинацию из кодовой комбинации 1010101= x 6 + x 4 + x 2+1 путем циклического сдвига. Циклический сдвиг получается умножением многочлена, соответствующего исходной комбинации на х
Р (x) × х = х ×(x 6 + x 4 + x 2+1) = x 7 + х 5 + x 3 + x. (8.70)
Заменив х 7 на х 0 т.е. на «1» получим новую кодовую комбинацию Р 1(x) в виде полинома:
Р 1(x) = х 5 + x 3 + x + 1. (8.71)
Р 1(x) соответствует кодовой комбинации 0101011. Таким образом, в результате циклической перестановки исходной кодовой комбинации 1010101 получена новая кодовая комбинация 0101011 также принадлежащая циклическому коду. Заметим, что запись кода в виде многочлена получается более компактной, чем в матричном виде.
Циклический сдвиг на один разряд соответствует алгебраическому умножению некоторого многочлена g (x), который выбран в качестве исходного на х. Процесс получения новых комбинаций кода можно представить следующим образом g (x), х g (x), х 2 g (x), х 3 g (x),…, хn -1 g (x).
Многочлен, взятый в качестве исходного, называют образующим или порождающим.
Принцип обнаружения ошибок при помощи циклического кода заключается в том, что в качестве разрешенных принимаются только те комбинации, которые без остатка делятся на заранее выбранный образующий многочлен g (x). Если принимаемая комбинация искажена, то это условие на приемной стороне не будет выполнено. В результате этого формируется сигнал, указывающий на наличие ошибки.
Задача состоит в том, чтобы сформировать кодовые комбинации на передаче, удовлетворяющие указанному условию. Метод построения кодовых комбинаций используется следующий. В процессе кодирования многочлен Р (x) отображающий двоичный код передаваемого сообщения (примитивный код) умножаются на хk. При этом длина кодовой комбинации увеличивается на k разрядов. Эти дополнительные разряды будут проверочными. Полученное произведение Р (x)× xk делят на специально подобранный образующий многочлен g (x). При этом получают остаток R (x). Данный остаток R (x) суммируют с произведением Р (x)× xk. Получают кодовую комбинацию F (x)= Р (x)× xk + R (x), которая будет без остатка делиться на g (x).
Алгоритм формирования комбинаций циклического кода показан на рис. 8.14.
Покажем справедливость такого способа формирования циклического кода. Обозначим частное от деления Р (x)× xk на g (x) как f (x). Тогда справедливо равенство Р (x)× xk = f (x)× g (x) – R (x), где R (x) остаток деления Р (x)× xk на g (x).
Перенося R (x) за знак равенства получим:
Р (x)× xk + R (x) = f (x)× g (x).
При таком методе построения коэффициенты при высших степенях являются обозначениями информационных разрядов, а коэффициенты при степенях порядка k -1 и ниже – проверочными.
Рис. 8.14. Алгоритм формирования циклического кода
Рассмотрим использование описанного алгоритма формирования комбинаций циклического кода на примере.
Пример. Требуется закодировать сообщение 1011. Дано: порождающий полином g (x)= х 3+ х 2 + 1, общее число разрядов n = 7, число информационных разрядов m =4, число избыточных разрядов k = 3.
Решение:
1. Для кодирования сообщения 1011 определим, какому многочлену оно соответствует: Р (x) = 1× x 3 + 0× x 2 + 1× x 1 + 1× x 0 = x 3 + x + 1.
2. Разделим полином Р (x)× xk на порождающий g (x) для определения остатка R (x):
Р (x)× xk = Р (x) x 3 = (x 3 + x + 1)× x 3 = x 6 + x 4 + x 3
х 6+ х 4+ х 3 | х 3+ х 2+1 | ||||||||||
Å | х 6+ х 5 + х 3 | х 3+ х 2 | |||||||||
х 5+ х 4 | |||||||||||
Å | х 5+ х 4 + х 2 | ||||||||||
х 2 | - остаток | R (x)= x 2 | |||||||||
3. Суммируем произведение Р (x)× x 3 с полученным остатком x 2 получим кодовый многочлен F (x)
F (x) = G (x)× x 3 + R (x) = x 6+ х 4+ х 3 + х 2.
В двоичном коде этому многочлену соответствует кодовая комбинация 1011 100. В этой кодовой комбинации последние три позиции занимают проверочные разряды (выделены).
Проверим возможность обнаружения ошибки при приеме кодовой комбинации циклического кода указанным выше алгоритмом. Пусть принимается рассмотренная выше комбинация F (x)=1011100. Порождающий полином должен быть известен на приеме. Вынесение решения о наличии ошибки основывается на анализе остатка R (x) от деления комбинации на порождающий полином g (x) если R (x) = 0, то ошибки нет.
Кодовой комбинации 1011100 соответствует многочлен F (x)= x 6+ x 4+ x 3+ х 2.
Делим F (x) на g (x)
х 6+ х 4+ х 3+ х 2 | х 3+ х 2+1 | ||||||||||
Å | х 6+ х 5 + х 3 | х 3+ х 2 | |||||||||
х 5+ х 4+ х 2 | |||||||||||
Å | х 5+ х 4 + х 2 | ||||||||||
Остаток R (x)=0, следовательно, ошибки нет.
Допустим, в результате воздействия помех в канале связи вместо комбинации 1011100 принято 0011100. Этой комбинации соответствует многочлен х4+х3+х2. Деление на g (x) дает:
х 4+ х 3+ х 2 | х 3+ х 2+1 | |||||||||
Å | х 4+ х 3 +х | х | ||||||||
х 2+ х | Остаток R (x) ¹0 | |||||||||
Ошибка обнаружена.
Возможно применение циклического кода в качестве кода с исправлением ошибок. В этом случае на приеме получают остаток от деления принятой комбинации кода на порождающий многочлен. Места искаженных разрядов определяются путем анализа остатка.
Дата публикования: 2015-09-17; Прочитано: 1616 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!