ТЦС Помехоустойчивые коды 2-часть.ppt
- Количество слайдов: 53
Методы и устройства помехоустойчивого кодирования Циклические коды Любой групповой код вида (n, k) может быть записан в виде матрицы, включающий k линейно независимых строк по n символов и наоборот. Среди различных кодов можно выделить также коды, у которых все КК могут быть получены циклическим сдвигом.
Сдвиг осуществляется справа налево, причем крайний левый символ каждый раз переносится в конец КК. Такие коды получили название циклических. 1 ая КК называется образующей. Исх. КК 001011 Матрица КК:
При описании ЦК КК можно представить в виде многочленов некоторой переменной х. Показатели степени у переменной х соответствуют NN разрядам (начиная с нулевого), а коэффициентами при х, в общем случае, являются элементы поля GF(q). Поэтому для двоичного ЦК коэффициентами могут быть 0 или 1.
Так, например: КК 001011 –. или Наибольшая степень х в слагаемом с ненулевым коэффициентом называется степенью многочлена.
Циклический сдвиг многочлена без переноса “ 1” в конец КК можно получить простым умножением на х исходной КК: * х Если эти КК (001011 и 010110) сложить по m 2, то результат сложения будет соответствовать умножению g(x) на (х+1):
001011 010110 011101. => х +1 , ________
Циклический сдвиг строки матрицы с “ 1” в старшем разряде равносилен умножению соответствующего многочлена на х c одновременным вычитанием из результата многочлена т. е. с приведением по m 2 ( Т. е. любая разрешенная КК ЦК могла быть получена в результате умножения g(x) на некоторый другой многочлен с приведением результата по m 2 т. е. при соответственном выборе g(x).
1) Любой многочлен ЦК (разрешенная КК) будет делится на него без остатка. 2) Ни один многочлен, соответствующий запрещенной КК на g(x) без остатка не делится , т. е. при делении на g(x) образует остатки. Это свойство позволяет обнаружить ошибку. По виду остатка можно определить вектор ошибки.
Свойства символического умножения. 1) Многочлен перемножается по обычным правилам, но с приведением подобных членов по m 2. 2) Если старшая степень произведения не превышает n 1 то это произведение является результатом символического умножения. 3) Если старшая степень произведения n, то многочлен произведения делится на заранее определенный многочлен степени n и результатом символического умножения считается остаток от деления.
Степень остатка n 1, следовательно этот многочлен принадлежит к множеству n – разрядных КК. Заранее выбранный элемент многочлен > ( ), Требования, предъявляемые к образующему многочлену. Согласно определению ЦК все многочлены, соответственно его КК должны делится на g(x) без остатка.
Для этого достаточно, чтобы на g(x) делились без остатка многочлены составляющие образующую матрицу ЦК. . Эти многочлены получаются циклическим сдвигом, что соответствует последнему умножению g(x) на х, с приведением по модулю Следовательно, в общем случае многочлен g (x) является остатком от деления производной на многочлен
и может быть записан так: С другой стороны при делении g (x) образующий многочлен g(x) при ошибочном приеме должен образовываться остаток. По виду остатка происходит локализация ошибок и их исправление.
Следовательно, корректирующая способность ЦК будет тем выше, чем больше остатков образует g(x). Привлекая аналогию из простых чисел, можно сказать, что наибольшее число остатков = может образовывать только неприво димый (простой) многочлен. Неприводимый многочлен > аналог простого числа ( делится только на 1 и на самого себя).
Два свойства образующего многочлена: делитель многочлена ( ); неприводимость в поле GF(2), где определена операция суммы по m 2. Число 25 > сложное в поле десятичных чисел. 1101 – неприводимый в поле GF 2 1101 111 101 10 остаток
Выбор образующего многочлена по заданному объему кода и заданной корректирующей способности. По заданному объему кода однозначно определяется количество информационных разрядов. Далее ищется min количество m, обеспечивающее необходимую корректир ующую способность кода. Для ЦК – это нахождение соответствую щего g(x).
Обнаружение одиночных ошибок (d=2). Любая принятая по КС КК может быть. представлена: h(x)=f(x) – неискаженная КК, вектор ошибки. Вектор ошибки имеет вид: где i N искаженного разряда. Таким наиболее простым многочленом g(x) является х+1 остаток от деления на х+1 может иметь два значения:
Т. е. при любом числе информационных символов необходим только 1 контрольный разряд. Это – циклический код с проверкой на нечетность. Исправление одиночных или обнаружение двойных ошибок (d=3). Для исправления одиночной ошибки как уже ранее говорилось, предварительно необходимо локализовать её, т. е. найти место, где произошла ошибка. Следовательно, случае вкак КК и с каждой одиночной ошибке должен соответствовать свой опознаватель.
Наибольшее число остатков дает неприводимый g(x): , где m=n k – степень многочлена. Следовательно, необходимым условием исправления любой ошибки является выполнение неравенства: , где – число комбинаций по 1 в КК из n символов.
m g(x) k Nост N 2 X 2+X+1 3 X 3+X+1 X 3+X 2+1 ≤ 4 4 X 4+X 3+1 X 4+X+1 ≤ 11 7 ≤ 15 5 X 5+X 2+1 X 5+X 3+1 ≤ 26 15 ≤ 31 3 ≤ 3 7 7 ≤ 7
Эти ЦК являются эквивалентом КХ с d=3. Данные ЦК могут быть использованы для обнаружения двойных ошибок. При этом их нельзя использовать для исправления одиночных ошибок. dmin =r+1 = 2+1=3 dmin =2 s+1=2 x 1+1=3 dmin =s+r+1= 1+2+1=4 Для обнаружения двойных и исправления одиночной ошибки d=4. Образующий многочлен получается умножением используемого при d=3 на полином (x+1).
m (x+1) k n+1 3 (x+1) X 3+X+1 (x+1) X 3+X 2+1 4 8 4 (x+1) X 4+X 3+1 (x+1) X 4+X+1 11 16 5 (x+1) X 5+X 2+1 (x+1) X 5+X 3+1 26 32
Декодирование ЦК. Обнаружение ошибок достаточно просто. Если ошибок нет => есть =>. При безошибочном приеме > контрольные символы отбрасываются, информационные – используются по назначению. Обнаружение и исправление ошибок. 1 -й метод.
Для локализации ошибок необходимо каждому вектору ошибки поставить в соответствие свой опознаватель. Допустим: Тогда вектор ошибки: 0000001 => 00000100 00010000 01000000 001 010 100 011 110 111 101
2 -й метод. 1. Вычисление остатка: 2. Подсчет веса остатка: вес остатка должен быть равен или < числа исправленных ошибок W 2 a. Если условие выполняется, то 3. W > S Осуществляется циклический сдвиг КК на 1 символ влево. Полученная КК вновь делится на g(x) If W S. То см. пункт 2 а
3 а. Сдвиг вправо направленной КК на 1 символ вправо. 4. Дополнительные сдвиги влево до тех пор пока: W S Затем п 2. а Затем повторение п. 3. 4 столько раз, сколько было сдвигов слева. Пример. Принята КК: 1101110
S=1 1. Делим КК на g(x): 1101110|1011 1101 1011 1100 1011 111
2. Проверим вес: W=3 3. Сдвиг влево на 1 разряд: 1011101 4. Делим 1011101|1011 |101|
5. Проверим вес W=2 6. Новый сдвиг и деление: 0111011|1011 |001|
7. Складываем 0111011 0111010 8. Два циклических сдвига вправо: 1001110
9. Проверяем: 1001110|1011 0
Коды Боуза-Чоудхури-Хоквингэма. Эти коды, разработанные Боузом, Чодхури и Хоквинхемом (сокращенно коды БЧХ), позволяют обнаруживать и исправлять любое число ошибок. Заданными при кодировании является число ошибок s, которое следует исправить, и общее число символов, посылаемых в линию, т. е. длина слов n. Числа информационных символов k и контрольных символов m, а также состав контрольных символов подлежат определению.
Методика кодирования такова. 1. Выбор длины слова. При кодировании по методу БЧХ нельзя выбирать произвольную длину слова n. Первым ограничением является то, что слова может иметь только нечетное число символов. Однако даже при этом не все нечетные числа могут составлять длину слова. Здесь могут быть два случае: а) по заданному n находят такое число h, чтобы удовлетворялось равенство Например, при n=7 h=3, при n=15 h=4, при n=31 h=5, при n=63 h=6 и т. д. ;
б) находят такое число h; чтобы удовлетворялось равенство где h>0 – целое число, а g – нечетное положительное число, при делении на которое n получается целым нечетным числом. Разлагая на сомножители, получаем следующие числа n и g:
2. Определение кодового расстояния. Кодовое. расстояние определяют согласно 3. Определение образующего многочлена Образующий многочлен есть наименьшее общее кратное (НОК) так называемых минимальных многочленов до порядка 2 s-1 включительно, причем образующий многочлен состовляется из произведения некоторого числа нечетных минимальных многочленов:
Минимальные многочлены являются простыми неприводимыми многочленами, метод опреде ления некоторых дается в [26]. Заметим, что если среди минимальных много членов окажутся два одинаковых, то один из них исключается. 4. Определение числа минимальных многочленов L. Из уравнения (7. 26) следует, что порядок минимальных многочленов определяется как 2 s-1. Если учесть, что этот образующий многочлен состоит только из нечетных минимальных многочленов, то число их определяется просто.
Например, если s=3, то 2 s-1=5. Это значит, что в уравнении будут записаны минимальные многочлены т. е. L=3. Если s=8, то 2 s-1=15 и в уравнении будут использованы минимальные многочлены т. е. L=8. Таким образом, число минимальных многочленов равно числу исправляемых ошибок: L=s
5. Определение старшей степени l минимального многочлена. Степень l есть такое наименьшее целое число, при котором нацело делится на n или ng, или Отсюда следует, что l=h 6. Выбор минимальных многочленов. После того как определены число минимальных многочленов L и степень старшего многочлена l, многочлены выписывают из таблицы.
7. Определение степени многочлена образующего Степнь образующего многочлена зависит от НОК и не превышает произведения ls или l. L, так как L=s. После нахождения всех минимальных многочленов образующий многочлен находят по уравнению пункт 4. 8. Определение числа контрольных символов. Так как число контрольных символов m равно степени образующего многочлена, то в коде длины n.
9. Определение числа информационных символов. Его производят обычным порядком из равенства k=n-m. Сверточные коды. Особенностью линейного блочного кода, который описывается двумя целыми числами, n и k, и полиномиальным или матричным генератором является то, что каждый из n кортежей кодо вых слов однозначно определяется k кортeжeм входного сообщения.
Целое число k указывает на число бит данных, которые образуют вход блочного кодера. Целое число n это суммарное количество разрядов в соответствующем кодовом слове на выходе кодера. Отношение k/n, называемое степенью кодирования кода (code rate), является мерой добавленной избыточности.
Целое число К является параметром, называемым длиной кодового ограничения (constrain! length); оно указывает число разрядов k кортежа в кодирующем регистре сдвига. Важная особенность сверточных кодов, в отличие от блочных, состоит в том, что кодер имеет память n кортежи, получаемые при сверточном кодировании, являются функцией не только одного входного k кортежа, но и предыдущих К 1 входных k кортежей.
Кодер двоичного сверточного кода содержит k. K разрядный регистр и n сумматоров по модулю Обобщенная структурная схема кодера сверточного кода приведена на рисунке.
На рисунке приведены пример кодера сверточного кода с параметрами k=1, n=2, K=3, Rk=1/2. Информационные символы поступают на вход регистра, а символы кода формируются на выходе коммутатора. Коммутатор (КМ) последовательно опрашивает выходы сумматоров по модулю 2 в течение интервала времени, равного длительности информационного символа (бита).
Процедуры кодирования и декодирования удобно описывать с помощью так называемого кодового дерева, которое отображает последовательности на выходе кодера для любой возможной входной последовательности. На рисунке 6. 3 приведено кодовое дерево кодера, изображенного на рисунке 6. 2, для блока из пяти информационных символов.
Если первый символ принимает значение 0, то на выходе кодера формируется пара символов 00. Если первый символ принимает значение 1, то на выходе кодера формируется пара символов 11. Это показано с помощью двух ветвей, которые выходят из начального узла. Верхняя ветвь соответствует 0, нижняя – 1.
В каждом из последующих узлов ветвление происходит аналогичным образом: из каждого узла исходит две ветви, причем верхняя ветвь соответствует 0, а нижняя – 1. Ветвление будет происходить вплоть до последнего символа входного блока. Вслед за ним все входные символы принимают значение 0, и образуется только одна обрывающаяся ветвь.
Таким образом, каждой из возможных входных комбинаций информационных символов соответствует своя вершина на кодовом дереве. В данном случае имеется 32 вершины. С помощью кодового дерева легко построить выходную последовательность символов кода, соответствующую определенной входной последовательности.
Например, входной последовательности 11010 соответствует выходная последовательность, лежащая на пути, изображенном пунктирной линией. Анализируя структуру кодового дерева на рисунке 1. 3, можно заметить, что, начиная с узлов третьего уровня, она носит повторяющийся характер. Действительно, группа ветвей, заключенных в прямоугольники, изображенные пунктирными линиями, полностью совпадают.
Это означает, что при поступлении на вход четвертого символа выходной символ кода будет одним и тем же, независимо от того, каким был первый входной символ: 0 или 1. Другими словами, после первых трех групп выходных символов кода входные последовательности 1 х1 х2 х3 х4… и 0 х1 х2 х3 х4… будут порождать один и тот же выходной символ.
Решетчатая диаграмма для кодера
ТЦС Помехоустойчивые коды 2-часть.ppt