КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
CRC коды 1 страница
Один из наиболее популярных стандартов помехоустойчивого кодирования известен как избыточные циклические коды для обнаружения ошибок (CRC коды). Эти циклические коды используются для обнаружения ошибок в блоках данных. CRC коды имеют длину п≤2т-1. Обычно CRC коды имеют порождающий полином вида (1 + x)g(x), где g(x) порождающий полином кода Хемминга. Обычные значения т равны 12, 16 и 32. Выбор порождающего полинома зависит от допустимой вероятности необнаруженной ошибки, которая определяется распределением (спектром) весов кода. Вычисление вероятности необнаруженной ошибки эквивалентно определению спектра весов кода. Эта задача остается исключительно трудной. Несмотря на 50 лет существования и развития теории кодирования имеется лишь незначительный прогресс. Ниже приведен список наиболее популярных CRC кодов (или CRC полиномов).
3.2. Общий алгоритм декодирования циклических кодов Пусть r(х) = v(x) + e(x), где е(х) полином ошибок, ассоциированный с вектором ошибок ДСК. Тогда синдром (синдромный полином) имеет вид s(x)= r(x) mod g(x)= e(x) mod g(x) (3.8) На Рисунке 18 показана обобщенная структура декодера циклического кода. Синдром s(x) используется для определения полинома ошибок е(х). Так как циклический код является, прежде всего, линейным кодом, то эта структура может рассматриваться как вариант «стандартной таблицы» для циклических кодов. Проблема декодирования равноценна поиску (неизвестного) полинома ошибок е(х) по известному синдрому s(x). Эти полиномы связаны уравнением (3.8), которое составляет основу синдромного декодера (известного также как декодер Меггита) для циклического кода. Другой (но близкий) вариант декодера, реализующий алгоритм ловли ошибок, известный также как декодер Касами, проверяет совпадение синдрома с возможным вектором ошибок. Только очень немногие классы Рис. 18. Обобщенная структура декодера циклического кода.
кодов имеют такое относительно простое декодирование, как циклические коды Хемминга и Голея. Однако с увеличением корректирующей способности кода t = |_(dmin - 1)/2_| сложность декодера, основанного на комбинаторном обнаружении ошибок, становится чрезвычайно большой. Предположим, что ошибка возникла на первой принятой позиции, т.е. е(х) = хn-1. Соответствующий синдром равен s(x) =xn-1 mod g(x). Если ошибка, искажающая заданную позицию, обнаруживается данным циклическим кодом, то могут быть обнаружены и ошибки на других позициях за счет циклических сдвигов и соответствующей коррекции синдрома. Синдромный декодер проверяет синдром для каждой позиции принятого слова и, если обнаруживается полином хn-1 mod g(x), то символ на этой позиции исправляется. Пример 25. В этом примере рассматривается декодирование циклического (7,4,3) кода Хемминга с порождающим многочленом g(x) =x3+x+l. Схема вычисления синдрома показана на Рисунке 19. Принимаемые символы накапливаются в регистре сдвига и одновременно вводятся в схему деления на g(x). После приема седьмого бита содержимое этого регистра сдвигается на один разряд в каждом такте, а схема деления модифицирует синдром и проверяет совпадение с полиномом Как только на выходе схемы проверки появится 1, будет исправлена ошибка в позиции х6. В тот же самый момент исправление вводится по обратной связи в схему деления и, тем самым, обнуляет остаток от деления. Нулевой остаток может рассматриваться как сигнал об успешном завершении декодирования. Проверка на нулевой остаток схемы деления позволяет обнаруживать некоторые аномалии по окончании процедуры декодирования.
Перейдем теперь к изучению циклических кодов, исправляющих многократные ошибки, для которых задача декодирования может рассматриваться как решение системы уравнений. По этой причине здесь необходимо знакомство с полем, в котором будут выполняться операции умножения, сложения Рис. 19. Синдромный декодер двоичного циклического (7,4,3) кода Хемминга.
и деления. Циклические коды имеют хорошую алгебраическую структуру. Позднее будет показано, что эффективная реализация мощных алгоритмов декодирования достигается при использовании арифметики конечного поля, когда известно размещение корней порождающего многочлена кода. Напомним, что порождающий полином всегда может быть представлен произведением двоичных неприводимых многочленов: Алгебраическая структура циклических кодов выражается, в частности, в возможности определения корней каждого из многочленов в некотором поле разложения (которое является расширением поля, которому принадлежат коэффициенты многочлена). В интересующем нас случае поле разложения неприводимого многочлена является полем Галуа. В литературе поля Галуа называют также конечными полями, имея в виду конечное число принадлежащих ему элементов. Стандартным обозначением является GF(q), где q число элементов поля. В общем случае число элементов поля есть степень простого числа, однако ниже будут рассматриваться только поля характеристики 2, когда q = 2m. Пример 26. В этом примере мы напомним читателям, что они хорошо знакомы с понятием «поле разложения». Рассмотрим поле действительных чисел. Известно, что в этом поле многочлен х2 + 1 неприводим. Однако в поле комплексных чисел он раскладывается в произведение (х + i)(x –i), где i = . Таким образом, комплексное поле является полем разложения (т.е. расширением) поля вещественных чисел.
3.1.5 Пакеты ошибок Характерной особенностью циклических кодов является способность к распознаванию пакетов ошибок. Под пакетом ошибок понимается группирование ошибок в одной ограниченной области кодового слова (рис. 3.16). Пакет ошибок можно описать многочленом вида . (3.75)
Если длина пакета ошибок не превосходит величины r = п — k, то степень многочлена ошибок меньше r. В этом случае е (Х) не делится на (Х) без остатка и синдром принятого слова всегда отличен от нулевого, следовательно, пакет ошибок длины равной или меньшей r всегда распознается. Из теоремы 3.6.1 следует, что распознается также любой циклический сдвиг многочлена В (Х) степени, меньшей r, т.е. и «концевой» пакет ошибок длины меньшей или равной r (рис. 3.17), всегда распознается.
Теорема 3.7.1. Циклический (п, k)-код способен обнаруживать все пакеты ошибок (в том числе концевые) длины r = п — k и меньше. Помимо распознавания всех пакетов ошибок длины r и меньше циклические коды обладают способностью обнаруживать большую часть пакетов ошибок, длина которых превосходит r. Рассмотрим пакет ошибок длины r + 1, начинающийся в j -ой компоненте. Так как первая и последняя компоненты пакета ошибок отличны от нуля, всего имеется 2 r -1 возможных конфигураций ошибок. Необнаружимой является только одна из них, многочлен которой В (Х) совпадает с (Х), то есть . (3.76)
Теорема 3.7.2. Для циклического (п, k)-кода доля необнаружимых пакетов ошибок длины l = r + 1 = п — k +1 равна 2-( r -1). Рассмотрим пакет ошибок длины l > r +1= n - k +1 начинающийся в j -ой компоненте. Если соответствующий многочлен В (Х) делится на (Х) без остатка, то есть , (3.77) то такой пакет не может быть обнаружен. Пусть коэффициенты многочлена а (Х) степени l - r - 1 имеют вид a 0, a 1,..., al-r 1. Так как пакет ошибок начинается и заканчивается единицей, a 0 = al-r- 1. Следовательно, существует 2 l-r- 2 наборов коэффициентов а (Х), приводящих к необнаружимым ошибкам в (3.77). С другой стороны, существует 2 l- 2 различных пакетов ошибок длины l и, таким образом, верно следующее утверждение.
Теорема 3.7.3. Для циклического (п, k)-кода доля необнаружимых пакетов ошибок длины l > r + l = n — k + 1 равна 2-r. Пример: Распознавание ошибок циклическим (7,4)-кодом Хэмминга. Рассмотрим циклический (7,4)-код Хэмминга из предыдущих примеров с r = п — k = 3. Так как минимальное кодовое расстояние кода Хэмминга dmin = 3, он способен обнаруживать все двойные ошибки или исправлять одиночные. Рассматриваемый (7,4)-код Хэмминга является циклическим кодом и он способен также обнаруживать все пакеты длины r = 3. В частности, любые три следующие друг за другом ошибки всегда обнаруживаются. Доля необнаружимых ошибок длины r + 1 = 4 равна 2-(3-1) = 1/4. При пакетах ошибок с длиной большей 4, не распознается только 2-3 = 1/8 из них. Замечание. На практике, как правило, используются циклические коды с довольно большим числом проверочных разрядов, например, r = п — k = 16. Доля необнаружимых пакетов ошибок такими кодами достаточна мала. Так, при r = 16, обнаруживается более чем 99,9969 % пакетов длины 17 и 99,9984 % пакетов длины 18 и выше.
3.2.1. Арифметика GF(q) Множество А образует поле, если для любых элементов ai, aj, ak Î А определены операции сложения «+» и умножения «´» и выполняются следующие аксиомы: Сложение «+» (А1) Замкнутость ai + aj Î А (А2) Ассоциативность (ai + aj) + ak = ai + (aj + ak) (A3) Существование единственного нулевого элемента 0 Î А, такого, что 0 + ai = ai (А4) Обратный элемент (- ai) Î А такой, что (- а) + ai = 0 (А5) Коммутативность ai + aj = aj + ai Умножение «х» (M1) Замкнутость ai ´ aj Î А (М2) Ассоциативность (ai ´ aj) ´ ak = ai ´ (aj ´ ak) (М3) Существование единственного единичного элемента 1 Î А такого, что 1 Î ai = ai (М4) Обратный элемент (М5) Коммутативность ai ´ aj = aj ´ ai Сложение и умножение (D) Дистрибутивность ai ´ (aj + ak) = ai ´ aj + ai ´ ak Из перечисленных выше аксиом следуют важнейшие правила арифметики, справедливые в любом поле: Для 0,1, а, b, с Î А имеет место 1. а + 0 = 0 Þ а = 0 2. a, b ¹0 Û a ´ b ¹ 0 3. a = 0 и a ´ b = = Þ b = 0 4. -(a ´ b) = (- a) ´ b = a ´ - b) 5. a ¹ 0 и a ´ b = a ´ c / Отметим также, что операции сложения и умножения имеют обратные операции: вычитания и деления, причем, вычитание определяется как а — b = а + (— b), а деление - как а ¸ b = а ´ b -1. Неподготовленного читателя может смутить и даже испугать столь громоздкое аксиоматическое построение алгебраической структуры, называемой полем. Однако, эти страхи должны довольно быстро исчезнуть после того, как мы убедимся, что множество рациональных чисел образует поле. Напомним, что множество рациональных чисел содержит все положительные и отрицательные целые числа (включая ноль), а также все числа вида п/т, где п, т - целые и т ¹ 0. Операциями сложения, вычитания, умножения и деления в поле рациональных чисел являются обычные арифметические операции, которые мы изучали еще в начальной школе. Нетрудно заметить, что эти операции удовлетворяют всем перечисленным выше аксиомам. Расширениями поля рациональных чисел являются поля вещественных и комплексных чисел, они также содержат бесконечное множество элементов. Так как в каналах связи множество передаваемых сигналов всегда конечно, основой теории кодирования являются поля, содержащие конечное число элементов (поля Галуа). Простейшим полем Галуа является двоичное поле GF (2), операции в котором (сложение и умножение) выполняются по правилам арифметики «по модулю 2». Нетрудно заметить, что правила арифметики по mod 2 удовлетворяют всем вышеперечисленным аксиомам (с учетом того, что обратным элементом к «1» по сложению и умножению является сама "1"). В высшей алгебре доказывается, что число элементов q конечного поля GF(q) всегда удовлетворяет условию q = pm, (2.55) где р – простое число, а т = 1,2, … Другими словами, если число элементов q некоторого множества не удовлетворяет условию (2.55), то для этого множества невозможно определить операции сложения и умножения, удовлетворяющие аксиомам поля. Так, например, невозможно образовать поле с числом элементов, равным 6, 10, 12, 14 и т.д., но можно построить поле, с числом элементов, равным 2, 3, 4, 5, 7, 8, 9, 11 и т.д. Таблица 2.4. Операции сложения и умножения в GF (5).
Наиболее просто операции сложения и умножения выполняются в поле с числом элементов, равным простому числу (т = 1). Здесь они определены как операции сложения и умножения по mod р, а сами элементы образуют последовательность чисел {0,1,2,..., р -1}. (2.56) Для примера, в таблице 2.4. приведены результаты сложения и умножения всех пар элементов ai, bj Î{0,1,2,3,4}, т.е сумма ai + bj (mod 5) и произведение ai × bj (mod 5). Непосредственной проверкой можно убедиться в выполнении аксиом (Al) - (А5), (Ml) - (М5) и (D) для операций сложения и умножения. Таким образом, множество элементов a Î {0,1,2,3,4} с операциями сложения и умножения, заданными табл. 2.4, образуют поле GF(5). В теории полей Галуа доказывается следующая, очень важная теорема. Теорема 2.5.1. В поле Галуа GF (p 1), содержащем q элементов, существует по крайней мере один примитивный элемент a такой, что каждый ненулевой элемент из GF (p) может быть представлен как некоторая степень a. Так, в поле GF (5) существует два примитивных элемента = 2 и a2 = 3, так как 20 = 1, 21 = 2, 22 = 4, 23(mod 5) = 3 и 30 = 1, 31 = 3, 32(mod 5) = 4, 33(mod 5) = 2. Сложнее обстоит дело с построением полей Галуа GF (pm), где т > 1 (простое число р называется характеристикой поля). Так как теория кодирования имеет дело, в основном, с полями характеристики 2, рассмотрим основные методы построения полей GF (2 m). Прежде всего, заметим, что каждый элемент GF (2 m) можно представить в виде слова длины m над GF (2) или многочлена с двоичными коэффициентами, степень которого меньше, чем m. Так, например, любой элемент a Î GF (23) можно записать как двоичное слово a 2 a 1 a 0 или как многочлен a 2 X 2 + a 1 X + a 0, где { a 2, a 1, a 0} Î {0,1}. В этом случае, сложение элементов из GF (2 m) выполняется по правилу сложения представляющих их многочленов в поле GF (2). Если при этом умножение элементов мы определим как умножение представляющих эти элементы многочленов по модулю некоторого заданного неприводимого многочлена над GF (2) степени m, то тем самым мы построим поле Галуа GF (2 m). Неприводимым называется многочлен, неразложимый на произведение многочленов с коэффициентами из GF (2). Проводя аналогию с полем GF (p), можно сказать, что роль элементов GF (p) в поле GF (2 m) играют двоичные слова или многочлены степени, меньшей m, а роль простого числа р - неприводимый многочлен степени m. Для реализации операций в поле GF (2 m) в качестве неприводимого многочлена степени m удобнее выбирать примитивный многочлен. Примитивным многочленом р (Х) над GF (2) называется неприводимый многочлен степени m, такой, что в поле GF (2 m), построенного по его модулю, элемент поля X является примитивным. В теории чисел и теории полей примитивный многочлен над конечным полем GF(p) —это минимальный многочлен примитивного элемента поля GF(pm) для положительного целого числа m. Примитивный многочлен является неприводимым. В теории полей Галуа доказывается следующая теорема. Теорема 2.5.2. Для каждого поля Галуа существуют примитивные многочлены всех степеней. Таблица 2.5. Представление поля GF (24) (Таблица антилогарифмов).
В качестве примера приведем поле Галуа GF (24) (табл. 2.5). Для его построения был выбран примитивный многочлен четвертой степени X 4 + X + 1. Из таблицы видно, что степени примитивного элемента a = X образуют все множество ненулевых элементов GF (24). В таком представлении операция умножения в поле GF (24) реализуется очень просто. Пусть, например, нам требуется найти произведение элементов (1011) × (1010). Из таблицы 2.5 находим, что элемент (1011) можно представить в виде a7, а (1010) в виде a9. Из этого следует, что (1011) × (1010) = a7 × a9 = a(7+9) mod 15 = a1. Используя табл. 2.5 еще раз, определяем, что a1 соответствует элементу (0010). Окончательно получаем (1011) × (1010) = (0010). При программной реализации умножения в полях Галуа, как правило, используют так называемые таблицы логарифмов и антилогарифмов. Таблица антилогарифмов ноля GF (24) совпадает с табл. 2.5. Используя эту таблицу, очень легко определить двоичный эквивалент элемента a i по заданному i, 0 £ i £ 14. Таблица логарифмов (табл. 2.6), наоборот, позволяет быстро найти степень примитивного элемента a по его двоичному представлению. Так как операция деления в полях Галуа эквивалентна умножению на обратный элемент, весьма полезной при вычислениях оказывается таблица обратных элементов (табл. 2.7), которая для поля GF (24) строится следующим образом. Пусть, например, нам нужно найти обратный элемент к (1010). По таблице логарифмов находим, что (1010) соответствует a9. Обратным элементом к a9 является a15-9 = a6. По таблице антилогарифмов находим, что двоичным эквивалентом a6 является (1100). Таким образом, окончательно получаем (1010)-1 = (1100).
Таблица 2.6. Таблица логарифмов элементов GF(24).
При небольших значениях т для ускорения умножения при программной реализации можно построить таблицу умножений элементов поля GF (2 m) размерности 2 т ´ 2 т. После того, как все необходимые арифметические таблицы построены, можно заменить двоичные обозначения на целочисленные. Реализация операции сложения (и совпадающей с ней операции вычитания) элементов в поле GF (2 m) не представляет проблем. Сложение элементов из GF (2 m) сводится к покомпонентному сложению их двоичных представлений по модулю 2. Так, например, в поле GF (24) (0011) + (1101) = (1110). Таблица 2.7. Таблица обратных элементов поля GF(24).
С подробным обоснованием построения полей GF (2 m) и исследованием их алгебраической структуры читатель может ознакомиться в [5]. В заключение отметим, что при всей кажущейся сложности, использование полей Галуа в теории помехоустойчивого кодирования имеет глубокий математический смысл. Свойства полей Галуа позволяют при построении кодов использовать законы линейной алгебры, справедливые для полей действительных и комплексных чисел. Отличие заключается лишь в том, что арифметические операции необходимо производить по правилам, определенным для данного конечного поля.
Используя методы абстрактной алгебры, можно показать, что в двоичном поле любой многочлен степени m раскладывается над GF(2m). Для данного пособия достаточно ознакомиться с основами вычислений в конечных полях. Серьезным читателям настоятельно рекомендуется изучение абстрактной алгебры по хорошему учебнику. Использование арифметики GF(2m) в процедурах декодирования позволяет заменить сложные комбинационные схемы практичными процессорными архитектурами, пригодными для решения уравнения (3.8). Ниже приводятся инструменты, необходимые для решения систем уравнений, которые возникают при декодировании циклических кодов. Важные свойства GF(2m) Поле Галуа GF(2m) изоморфно (с точностью до знака «+») линейному пространству {0, 1}m. Другими словами, каждому элементу β GF(2m) соответствует единственный m-мерный вектор . В конечном поле имеется примитивный элемент GF(2m), степени которого порождают все ненулевые элементы поля, т.е Элемент является корнем неприводимого двоичного полинома р(х), р(α) = 0. Наименьшее положительное целое n, для которого αn = 1, равно 2m-1. Все элементы поля удовлетворяют уравнению βn = 1, n = 2m -1 (Другими словами, все ненулевые элементы поля совпадают с корнями степени n из единицы).
Дата добавления: 2014-11-29; Просмотров: 1775; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |