620 likes | 1.4k Views
Циклические коды. CRC и БЧХ коды. Тихоокеанский Государственный Университет Кафедра “ Вычислительная техника ” Дисциплина “ Сети ЭВМ ” Преподаватель Шоберг А. Г. Содержание. ** Блочные и линейные коды. ** CRC код. -- CRC код. Базовые определения. -- Вычисление CRC.
E N D
Циклические коды. CRCи БЧХкоды Тихоокеанский Государственный Университет Кафедра “Вычислительная техника” Дисциплина “Сети ЭВМ” Преподаватель Шоберг А. Г.
Содержание **Блочные и линейные коды **CRC код -- CRC код. Базовые определения -- Вычисление CRC -- Коррекция ошибок ** БЧХкод -- БЧХкод. Базовые определения -- Построение и реализация кода ** Выводы
Блочные и линейные коды • * Блоковый код представляет собой множество последовательностей симво- лов, именуемых кодовыми словами. • * В общем случае элементы кодового слова выбираются из алфавита с q элементами. На практике наиболее широко используются коды, содержащие два элемента (О и 1), такие коды называются двоичными (q = 2).
* Относительно большой класс блоковых кодов составляют линейные коды. Для них по сравнению с общим случаем блоковых кодов значительно упрощается операция декодирования. * Линейные коды представляют собой подпространство Vk линейного прост- ранстваVJ и обладают следующим важным свойством: сумма (определенная для этого пространства) двух кодовых слов также является кодовым словом.
* Большим подклассом линейных кодов являются линейные цик- лические коды, представите- лями которых являются коды CRC, БЧХ, Рида-Соломона и др..
CRC код. Базовые определения • ** Cyclic Redundancy Code (CRC) – циклический избыточный код ** • * CRC – это значение, которое вычисляется для некоторого блока данных, например, для каждого файла во время архивации. • * При развертывании файла архиватор сравнивает это значение со вновь вычисленным CRC распакованного файла.
* Если они совпадают, то существует очень большая вероятность того, что этот новый файл получился идентичным исходному. При использовании CRC32 вероятность пропустить изменение данных составляет всего 2-32.
* Основная идея состоит в том, чтобы представить файл, как одну огромную строку бит, и поделить ее на некоторое число; Оставшийся в результате остаток и есть CRC. *Всегда будет оставаться остаток (правда, иногда он может оказаться равным нулю), который лишь на один бит меньше делителя Пример: 9/3=3, остаток = 0; (9+2)/3=3, остаток = 2.
ВычислениеCRC • *Вычисление CRC использует особый вид вычитания и сложения, своего рода "новую арифметику". Компьютер "забывает" делать перенос при вычислении каждого бита. • *Заём при вычислении также "забывают" сделать. Это напоминает операцию "Исключающее ИЛИ" (eXclusive OR, или более привычно - XOR), чем оно фактически и является. • *Пример CRC-арифметики:
*Для вычисления CRC нам необходимо выбрать делитель, который с этого момента мы будет называть полиномом. Степень полинома (W – Width) – это номер позиции его старшего бита, следовательно, полином 1001 будет иметь степень "3", а не "4". *Обратите внимание, что старший бит всегда должен быть равен 1, следовательно, после того, как Вы выбрали степень полинома, Вам необходимо подобрать лишь значения младших его битов.
РЕЗУЛЬТАТ:1101011011111 Здесь необходимо упомянуть 2 важных момента: 1. Операция XOR выполняется только в том случае, когда старший бит последовательности равен “1”, в противном случае мы просто сдвигаем ее на один бит влево. 2. Операция XOR выполняется только с младшими W битами,так какстарший бит всегда в результате дает “0”.
Коррекция ошибок *Процедуракоррекцииошибокпредполагаетдвасовмещенныепроцесса: обнаружениеошибки иопределение места. Послерешенияэтихдвухзадач,исправлениетривиально–надоинвертироватьзначениеошибочногобита. *Вназемныхканалахсвязи,где вероятностьошибкиневелика,обычноиспользуетсяметоддетектирования ошибокиповторнойпересылкифрагмента,содержащегодефект.Для спутниковыхканаловсбольшимизадержкамисистемыкоррекцииошибокстановятсяпривлекательными.
* Код Хэмминга представляет собой блочный код, который позволяет выявить и исправить ошибочно переданныйбит в пределах переданного блока. ОбычнокодХэммингахарактеризуется двумя целымичислами, например, (11,7) используемый при передаче 7-битных ASCII-кодов. * Такая запись говорит,чтоприпередаче7-битногокодаиспользуется4контрольныхбита(7+4=11).При этом предполагается, что имела местоошибка в одном бите и что ошибка в двух илиболеебитах существенно менее вероятна.
* Приэтомпредполагается,что имела место ошибка в одном бите и что ошибка вдвухили болеебитахсущественноменеевероятна.Сучетомэтогоисправлениеошибкиосуществляетсясопределеннойвероятностью. Например,пустьвозможныследующиеправильные коды (все они, кроме первого и последнего, отстоят друг от друга на расстояние 4): *Приполучениикода00000111нетруднопредположить,чтоправильное значениеполученногокодаравно00001111.Другиекодыотстоят от полученного на большее расстояние Хэмминга. *Рассмотримпримерпередачикодабуквыs=0x073=1110011сиспользованием кода Хэмминга (11,7).
*Символами “*” помечены четыре позиции, где должны размещаться контрольные биты. Эти позиции определяются целой степенью 2 (1, 2, 4, 8 и т.д.). *Контрольная сумма формируется путем выполнения операции XOR (исключающее ИЛИ) над кодами позиций ненулевых битов. В данном случае это 11, 10, 9, 5 и 3. Вычислим контрольную сумму: *Таким образом, приемник получит код:
*Просуммируем снова коды позиций ненулевых битов и получим нуль: * Нуатеперьрассмотримдваслучаяошибокводномизбитовпосылки, например,вбите 7(1вместо0)ивбите5(0вместо1).Просуммируемкоды позиций ненулевыхбит еще раз.
*В общем случае код имеет N=M+C бит и предполагается, что не более чем одинбитвкодеможетиметьошибку.Тогдавозможно N+1 состояниекода (правильное состояние и n ошибочных).Пусть М=4, а N=7, тогда слово-сообщение будетиметьвид: M4, M3, M2, C3, M1, C2, C1.Теперьпопытаемсявычислить значенияС1,С2,С3.Дляэтогоиспользуютсяуравнения,гдевсеоперации представляютсобой сложение по модулю 2: *Дляопределениятого,доставленолисообщениебезошибок,вычисляем следующие выражения (сложение по модулю 2):
*Результат вычисления интерпретируется следующим образом: *Описанная схема легко переносится на любое число n и М.Числовозможныхкодовых комбинаций Мпомехоустойчивого кода делится на n классов,гдеN –числоразрешенныхкодов.Разделениенаклассы осуществляетсятак,чтобывкаждыйклассвошелодинразрешенныйкоди ближайшиекнемзапрещенныекоды. *Если код принят с ошибкой, он заменяется ближайшим разрешенным кодом. При этом предполагается, что кратность ошибки не более qm.
*Можнодоказать, чтодля исправления ошибок с кратностьюнеболее qmm (какправило,оновыбираетсяравным D =2qm + 1).Втеориикодирования существуютследующиеоценкимаксимальногочисла N n-разрядных кодов с расстоянием D. *Для кода Хэмминга это неравенство превращается в равенство.ВслучаекодаХэммингапервыеkразрядовиспользуютсявкачестве информационных, причем k=n - log2(n+1), откудаследует(логарифм по основанию 2), что k может принимать значения 0, 1, 4, 11, 26, 57 и т.д., это и определяет соответствующие коды Хэмминга (3,1); (7,4); (15,11); (31,26); (63,57) и т.д..
БЧХкод. Базовые определения ** Коды Боуза - Чоудхури - Хоквингхема (БЧХ-коды) – втеории кодированияэто широкий класс циклических кодов, применяемых для защитыинформации от ошибок. ** * Отличается возможностью построениякодасзаранее определёнными корректирующими свойствами, а именно, минимальным кодовым расстоянием. * Коды Боуза-Чоудхури-Хоквингема (БЧХ) – класс циклических кодов, исправляющих кратные ошибки, т. е. две и более (d0 >= 5).
* ТеоретическикодыБЧХ могут исправлять произвольное количест- во ошибок. * Но при этом существенно увеличивается длительность кодо- вой комбинации, что приводит к уменьшению скорости передачи данных и усложнению приемо-передающей аппаратуры.
*Методика построения кодов БЧХ отличается от обычных цикличес- ких, в основном, выбором опреде- ляющего полинома P(х). * Коды БЧХ строятся по заданной длине кодового слова n и числа исправляемых ошибок S, при этом количество информационныхразря- довk не известно пока не выбран определяющий полином.
* ДляпониманияматематическойструктурыБЧХ–кодовнеобходимо ознакомиться с некоторыми новыми понятиями линейной алгебры. * В общем случаеэтипонятиясправедливыдлямножествамногочленовс коэффициен-тами изполяGF(q),гдеq – простоечисло. * Посколькунас интересуют в первую очередь двоичные коды, мы ограничимся случаем q = 2.
* Есливкачестве образующего многочлена идеала g(x) взятнеприводимыймногочленстепенит,принадлежащийпоказателюстепени n (n = 2m - 1), то общее число классов вычетов, включая идеал, равно 2m.
* Зададимоперациисложенияиумножениядляполученныхклассов вычетов: где ((r1(х)) – класс вычетов по модулю многочлена g(x)содержащий элементr1(х). * При этом совокупность классов вычетов образует конечное поле. Оно насчитывает 2m элементов, обозначается GF(2m) и называется расширением поля степени m над GF(2m). Единичным и нулевым элементами поля являются классы вычетов соответственно (1) и (0).
* При этом совокупность классов вычетов образует конечное поле. Оно насчитывает 2m элементов, обозначается GF(2m) и называется расширением поля степени m над GF(2m). Единичным и нулевым элементами поля являются классы вычетов соответственно (1) и (0). * Нетрудно убедиться в том, что для любого ненулевого элемента поля (ra(х)) в нем найдется обратный ему элемент (ra(х)), удовлетворяющий равенству:
Построениеи реализация кода * Процесс выбора образующегомногочленакода Боуза - Чоудхури - Хоквингема, рассчитанного на исправ- ление единичных ошибок, ничем не отличается от рассмотренного ранее. * Основноеотличиезаключаетсяв интерпретации опознавателей ошибок.
* Вданном случае ими считаются различные степени примитивно- го элемента поля GF(2m), постро-ение сиспользованиемвыбран- ного неприводимогомногочленаg(x)степениm,принадлежащего показателю степени n = 2m - 1.
* При возникновении двух ошибок построенный код позволяет определить только сумму s опознавателей этих ошибок * Для однозначного определения ошибок необходимо еще одно независимое уравнение. Возможно использование степенных функций от ξ. Однако квадраты опознавателей не приводят к желательному результату, поскольку второе уравнение с учетом сложения по модулю два оказывается квадратом первого. Действительно, * Если использовать кубы опознавателей, то уравнения оказываются независимыми: * Такой подход допускает обобщение на случай исправления 3- и 4-кратных ошибок и т. д.. При этом к полученным уравнениям соответственно добавляются уравнения с опознавателями в пятой, седьмой степенях и т. д.
* Коснемся подробнее случая исправления двойных ошибок. Проведем преобразование второго уравнения * Поскольку известны сумма и произведение опознавателей, то на основании теоремы Виета можно составить уравнение, для которого опознаватели являются корнями:
* На практике оказывается удобнее использовать многочлены, корнями которых являются не опознаватели ошибок, а их мультипликативные обратные элементы. * Для случая исправления двойных ошибок левая часть уравнения преобразуется к виду: * При возникновении ошибки: * При отсутствии ошибок:
* В общем случае образующий многочлен кода Боуза - Чоудхури – Хоквингема представляет собой наименьшее общее кратное (НОК) примитивного и минимальных многочленов: * Вчастности,длякодасn =15,рассчитанногонаисправлениедвойных независимыхошибок, получаем: * Рассмотрим процедуру кодирования с использованием кода БЧХ на конкретном примере.
** Пример: Построить 15-разрядный код БЧХ, исправляющий две ошибки в кодовой комбинации (т. е. n = 15, S = 2)** Решение: Определим количество контрольных mи информационных разрядов k m<= hS. - Определим параметр h из формулы n = 2h-1, h = log2(n+1) = log216 = 4, при этом: m <= hS = 4*2 = 8;k = n-m = 15-8 = 7. - Таким образом, получили (15, 7)-код.
2. Определим параметры образующего полинома: -количество минимальных многочленов, входящих в образующий L = S = 2; -порядок старшего (все минимальные - нечетные) минимального многочлена = 2S - 1 = 3; -степень образующего многочлена = m <= 8.
3. Выбор образующего многочлена. - Из таблицы для минимальных многочленов для кодов БЧХ (см. приложение 4) из колонки 4 (т. к. l = h = 4) выбираем два минимальных многочлена 1 и 3 (т. к. = 3): M1(x) = 10011; M2(x) = 11111. - При этом: P(x) = M1(x)*M2(x)=10011*11111=111010001= = x8+ x7+ x6+ x4+1.
4. Строим образующую матрицу. Записываем первую строку образующей матрицы, которая состоит из образующего полинома с предшествующими нулями, при этом общая длина кодовой комбинации равна n = 15. Остальные строки матрицы получаем в результате k-кратного циклического сдвига справа налево первой строки матрицы.
* Строки образующей матрицы представляют собой 7 кодовых комбинаций кода БЧХ, а остальные могут быть получены путем суммирования по модулю 2 всевозможных сочетаний строк матрицы. * Процедура декодирования, обнаружения и исправления ошибок в принятой кодовой комбинации такая же, как и для циклических кодов с d0 < 5
Выводы **Циклические коды CRC и БЧХ в целом обеспечивают большую гибкость с точки зрения возможности реализации кодов с необходимой способностью обнаружения и исправления ошибок. Как следствие этого можно отметить, что данные коды являются помехоустойчивыми.** **Однако следует отметить, что способность исправления ошибок данных кодов не столь велика. Коды CRC и БЧХ предназначены больше для обнаружения ошибок с использованием иных средств и методов их исправления.**