Transcript
Page 1: Циклические коды.  CRC и БЧХ коды

Циклические коды. CRC и БЧХ коды

Тихоокеанский Государственный УниверситетКафедра “Вычислительная техника”

Дисциплина “Сети ЭВМ”Преподаватель Шоберг А. Г.

Page 2: Циклические коды.  CRC и БЧХ коды

Содержание

** CRC код

-- Вычисление CRC-- Коррекция ошибок

-- БЧХ код. Базовые определения ** БЧХ код

-- CRC код. Базовые определения

-- Построение и реализация кода

** Выводы

** Блочные и линейные коды

Page 3: Циклические коды.  CRC и БЧХ коды

Блочные и линейные коды* Блоковый код представляет собой множество последовательностей симво- лов, именуемых кодовыми словами.

* В общем случае элементы кодового слова выбираются из алфавита с q элементами. На практике наиболее широко используются коды, содержащие два элемента (О и 1), такие коды называются двоичными (q = 2).

Page 4: Циклические коды.  CRC и БЧХ коды

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

* Линейные коды представляют собой подпространство Vk линейного прост- ранства VJ и обладают следующим важным свойством: сумма (определенная для этого пространства) двух кодовых слов также является кодовым словом.

Page 5: Циклические коды.  CRC и БЧХ коды

* Большим подклассом линейных кодов являются линейные цик- лические коды, представите- лями которых являются коды CRC, БЧХ, Рида-Соломона и др..

Page 6: Циклические коды.  CRC и БЧХ коды

CRC код. Базовые определения ** Cyclic Redundancy Code (CRC) – циклический избыточный код **

* CRC – это значение, которое вычисляется для некоторого блока данных, например, для каждого файла во время архивации.

* При развертывании файла архиватор сравнивает это значение со вновь вычисленным CRC распакованного файла.

Page 7: Циклические коды.  CRC и БЧХ коды

* Если они совпадают, то существует очень большая вероятность того, что этот новый файл получился идентичным исходному. При использовании CRC32 вероятность пропустить изменение данных составляет всего 2-32.

Page 8: Циклические коды.  CRC и БЧХ коды

* Основная идея состоит в том, чтобы представить файл, как одну огромную строку бит, и поделить ее на некоторое число; Оставшийся в результате остаток и есть CRC.

* Всегда будет оставаться остаток (правда, иногда он может оказаться равным нулю), который лишь на один бит меньше делителя

Пример: 9/3=3, остаток = 0; (9+2)/3=3, остаток = 2.

Page 9: Циклические коды.  CRC и БЧХ коды

* Вычисление CRC использует особый вид вычитания и сложения, своего рода "новую арифметику". Компьютер "забывает" делать перенос при вычислении каждого бита.

* Заём при вычислении также "забывают" сделать. Это напоминает операцию "Исключающее ИЛИ" (eXclusive OR, или более привычно - XOR), чем оно фактически и является.

* Пример CRC-арифметики:

Вычисление CRC

Page 10: Циклические коды.  CRC и БЧХ коды

* Для вычисления CRC нам необходимо выбрать делитель, который с этого момента мы будет называть полиномом. Степень полинома (W – Width) – это номер позиции его старшего бита, следовательно, полином 1001 будет иметь степень "3", а не "4".

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

Page 11: Циклические коды.  CRC и БЧХ коды

РЕЗУЛЬТАТ: 1101011011111Здесь необходимо упомянуть 2 важных момента: 1. Операция XOR выполняется только в том случае, когда старший бит последовательности равен “1”, в противном случае мы просто сдвигаем ее на один бит влево. 2. Операция XOR выполняется только с младшими W битами, так как старший бит всегда в результате дает “0”.

Page 12: Циклические коды.  CRC и БЧХ коды

Коррекция ошибок* Процедура коррекции ошибок предполагает два совмещенные процесса: обнаружение ошибки и определение места. После решения этих двух задач, исправление тривиально – надо инвертировать значение ошибочного бита.

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

Page 13: Циклические коды.  CRC и БЧХ коды

* Код Хэмминга представляет собой блочный код, который позволяет выявить и исправить ошибочно переданный бит в пределах переданного блока. Обычно код Хэмминга характеризуется двумя целыми числами, например, (11,7) используемый при передаче 7-битных ASCII-кодов.

* Такая запись говорит, что при передаче 7-битного кода используется 4 контрольных бита (7+4=11). При этом предполагается, что имела место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна.

Page 14: Циклические коды.  CRC и БЧХ коды

* При этом предполагается, что имела место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна. С учетом этого исправление ошибки осуществляется с определенной вероятностью. Например, пусть возможны следующие правильные коды (все они, кроме первого и последнего, отстоят друг от друга на расстояние 4):

* При получении кода 00000111 не трудно предположить, что правильное значение полученного кода равно 00001111. Другие коды отстоят от полученного на большее расстояние Хэмминга.

* Рассмотрим пример передачи кода буквы s = 0x073 = 1110011 с использованием кода Хэмминга (11,7).

Page 15: Циклические коды.  CRC и БЧХ коды

* Символами “*” помечены четыре позиции, где должны размещаться контрольные биты. Эти позиции определяются целой степенью 2 (1, 2, 4, 8 и т.д.).

* Контрольная сумма формируется путем выполнения операции XOR (исключающее ИЛИ) над кодами позиций ненулевых битов. В данном случае это 11, 10, 9, 5 и 3. Вычислим контрольную сумму:

* Таким образом, приемник получит код:

Page 16: Циклические коды.  CRC и БЧХ коды

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

* Ну а теперь рассмотрим два случая ошибок в одном из битов посылки, например, в бите 7 (1 вместо 0) и в бите 5 (0 вместо 1). Просуммируем коды позиций ненулевых бит еще раз.

Page 17: Циклические коды.  CRC и БЧХ коды

* В общем случае код имеет N=M+C бит и предполагается, что не более чем один бит в коде может иметь ошибку. Тогда возможно N+1 состояние кода (правильное состояние и n ошибочных). Пусть М=4, а N=7, тогда слово-сообщение будет иметь вид: M4, M3, M2, C3, M1, C2, C1. Теперь попытаемся вычислить значения С1, С2, С3. Для этого используются уравнения, где все операции представляют собой сложение по модулю 2:

* Для определения того, доставлено ли сообщение без ошибок, вычисляем следующие выражения (сложение по модулю 2):

Page 18: Циклические коды.  CRC и БЧХ коды

* Результат вычисления интерпретируется следующим образом:

* Описанная схема легко переносится на любое число n и М. Число возможных кодовых комбинаций М помехоустойчивого кода делится на n классов, где N – число разрешенных кодов. Разделение на классы осуществляется так, чтобы в каждый класс вошел один разрешенный код и ближайшие к нем запрещенные коды. * Если код принят с ошибкой, он заменяется ближайшим разрешенным кодом. При этом предполагается, что кратность ошибки не более qm.

Page 19: Циклические коды.  CRC и БЧХ коды

* Можно доказать, что для исправления ошибок с кратностью не более 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) и т.д..

Page 20: Циклические коды.  CRC и БЧХ коды

БЧХ код. Базовые определения ** Коды Боуза - Чоудхури -

Хоквингхема (БЧХ-коды) – в теории кодирования это широкий класс

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

* Отличается возможностью построения кода с заранее определёнными корректирующими свойствами, а именно, минимальным кодовым расстоянием.

* Коды Боуза-Чоудхури-Хоквингема (БЧХ) – класс циклических кодов, исправляющих кратные ошибки, т. е. две и более (d0 >= 5).

Page 21: Циклические коды.  CRC и БЧХ коды

* Теоретически коды БЧХ могут исправлять произвольное количест- во ошибок.

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

Page 22: Циклические коды.  CRC и БЧХ коды

* Методика построения кодов БЧХ отличается от обычных цикличес- ких, в основном, выбором опреде- ляющего полинома P(х).

* Коды БЧХ строятся по заданной длине кодового слова n и числа исправляемых ошибок S, при этом количество информационных разря- дов k не известно пока не выбран определяющий полином.

Page 23: Циклические коды.  CRC и БЧХ коды

* Для понимания математической структуры БЧХ – кодов необходимо ознакомиться с некоторыми новыми понятиями линейной алгебры.

* В общем случае эти понятия справедливы для множества многочленов с коэффициен- тами из поля GF(q), где q – простое число.

* Поскольку нас интересуют в первую очередь двоичные коды, мы ограничимся случаем q = 2.

Page 24: Циклические коды.  CRC и БЧХ коды

* Если в качестве образующего многочлена идеала g(x) взят неприводимый многочлен степени т, принадлежащий показателю степени n (n = 2m - 1), то общее число классов вычетов, включая идеал, равно 2m.

Page 25: Циклические коды.  CRC и БЧХ коды

* Зададим операции сложения и умножения для полученных классов вычетов:

где ((r1(х)) – класс вычетов по модулю многочлена g(x)содержащий элемент r1(х).

* При этом совокупность классов вычетов образует конечное поле. Оно насчитывает 2m элементов, обозначается GF(2m) и называется расширением поля степени m над GF(2m). Единичным и нулевым элементами поля являются классы вычетов соответственно (1) и (0).

Page 26: Циклические коды.  CRC и БЧХ коды

* При этом совокупность классов вычетов образует конечное поле. Оно насчитывает 2m элементов, обозначается GF(2m) и называется расширением поля степени m над GF(2m). Единичным и нулевым элементами поля являются классы вычетов соответственно (1) и (0).

* Нетрудно убедиться в том, что для любого ненулевого элемента поля (ra(х)) в нем найдется обратный ему элемент (ra(х)), удовлетворяющий равенству:

Page 27: Циклические коды.  CRC и БЧХ коды

Построение и реализация кода* Процесс выбора образующего многочлена кода Боуза - Чоудхури - Хоквингема, рассчитанного на исправ- ление единичных ошибок, ничем не отличается от рассмотренного ранее.

* Основное отличие заключается в интерпретации опознавателей ошибок.

Page 28: Циклические коды.  CRC и БЧХ коды

* В данном случае ими считаются различные степени примитивно- го элемента поля GF(2m), постро- ение с использованием выбран- ного неприводимого многочлена g(x) степени m, принадлежащего показателю степени n = 2m - 1.

Page 29: Циклические коды.  CRC и БЧХ коды

* При возникновении двух ошибок построенный код позволяет определить только сумму s опознавателей этих ошибок

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

* Если использовать кубы опознавателей, то уравнения оказываются независимыми:

* Такой подход допускает обобщение на случай исправления 3- и 4-кратных ошибок и т. д.. При этом к полученным уравнениям соответственно добавляются уравнения с опознавателями в пятой, седьмой степенях и т. д.

Page 30: Циклические коды.  CRC и БЧХ коды

* Коснемся подробнее случая исправления двойных ошибок. Проведем преобразование второго уравнения

* Поскольку известны сумма и произведение опознавателей, то на основании теоремы Виета можно составить уравнение, для которого опознаватели являются корнями:

Page 31: Циклические коды.  CRC и БЧХ коды

* На практике оказывается удобнее использовать многочлены, корнями которых являются не опознаватели ошибок, а их мультипликативные обратные элементы.

* Для случая исправления двойных ошибок левая часть уравнения преобразуется к виду:* При возникновении ошибки:

* При отсутствии ошибок:

Page 32: Циклические коды.  CRC и БЧХ коды

* В общем случае образующий многочлен кода Боуза - Чоудхури – Хоквингема представляет собой наименьшее общее кратное (НОК) примитивного и минимальных многочленов:* В частности, для кода с n = 15, рассчитанного на исправление двойных независимых ошибок, получаем:

* Рассмотрим процедуру кодирования с использованием кода БЧХ на конкретном примере.

Page 33: Циклические коды.  CRC и БЧХ коды

** Пример: Построить 15-разрядный код БЧХ, исправляющий две ошибки в кодовой комбинации (т. е. n = 15, S = 2) **

Решение:1.Определим количество контрольных

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)-код.

Page 34: Циклические коды.  CRC и БЧХ коды

2. Определим параметры образующего полинома:

- количество минимальных многочленов, входящих в образующий L = S = 2;

- порядок старшего (все минимальные - нечетные) минимального многочлена = 2S - 1 = 3;

- степень образующего многочлена = m <= 8.

Page 35: Циклические коды.  CRC и БЧХ коды

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.

Page 36: Циклические коды.  CRC и БЧХ коды

4. Строим образующую матрицу. Записываем первую строку образующей матрицы, которая состоит из образующего полинома с предшествующими нулями, при этом общая длина кодовой комбинации равна n = 15. Остальные строки матрицы получаем в результате k-кратного циклического сдвига справа налево первой строки матрицы.

Page 37: Циклические коды.  CRC и БЧХ коды

* Строки образующей матрицы представляют собой 7 кодовых комбинаций кода БЧХ, а остальные могут быть получены путем суммирования по модулю 2 всевозможных сочетаний строк матрицы.

* Процедура декодирования, обнаружения и исправления ошибок в принятой кодовой комбинации такая же, как и для циклических кодов с d0 < 5

Page 38: Циклические коды.  CRC и БЧХ коды

Выводы** Циклические коды CRC и БЧХ в целом обеспечивают большую гибкость с точки зрения возможности реализации кодов с необходимой способностью обнаружения и исправления ошибок. Как следствие этого можно отметить, что данные коды являются помехоустойчивыми. **** Однако следует отметить, что способность исправления ошибок данных кодов не столь велика. Коды CRC и БЧХ предназначены больше для обнаружения ошибок с использованием иных средств и методов их исправления. **


Recommended