Исправление ошибок с помощью кода Рида-Соломона
Использование кодов Рида–Соломона – недвоичных циклических кодов, позволяющих исправлять ошибки, в системах восстановления данных с компакт-дисков, при создании архивов с информацией для восстановления в случае повреждений, в помехоустойчивом кодировании.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 16.06.2016 |
Размер файла | 76,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1. История
- 2. Формальное описание
- 3. Свойства
- 4. Практическая реализация
- 5. Применение
- 6. Примеры кодов
- Литература
Введение
Коды Рида-Соломона - недвоичные циклические коды, позволяющие исправлять ошибки в блоках данных. Элементами кодового вектора являются не биты, а группы битов (блоки). Очень распространены коды Рида-Соломона, работающие с байтами (октетами).
Код Рида-Соломона является частным случаем БЧХ-кода.
В настоящее время широко используется в системах восстановления данных с компакт-дисков, при создании архивов с информацией для восстановления в случае повреждений, в помехоустойчивом кодировании.
1. История
Код Рида-Соломона был изобретён в 1960 году сотрудниками лаборатории Линкольна Массачуссетскоготехнологического института Ирвином Ридом (англ.) и Густавом Соломоном (англ.). Идея использования этогокода была представлена в статье "Polynomial Codes over Certain Finite Fields". Первое применение код Рида-Соломона получил в 1982 году в серийном выпуске компакт-дисков. Эффективный алгоритмдекодирования был предложен в 1969 году Элвином Берлекэмпом (англ.) и Джэймсом Месси (англ.)
2. Формальное описание
Коды Рида-Соломона являются важным частным случаем БЧХ-кода, корни порождающего полиномакоторого лежат в том же поле, над каким и строится код (m = 1). Пусть б - элемент поля порядка . Если б - примитивный элемент, то его порядок равен q ? 1, то есть
Тогда нормированный полином g(x) минимальной степени надполем , корнями которого являются d ? 1 подряд идущих степеней элемента б, является порождающим полиномом кода Рида-Соломона над полем :
где l0 - некоторое целое число (в том числе 0 и 1), с помощью которого иногда удается упростить кодер. Обычно полагается l0 = 1. Степень многочлена равна d ? 1.
Длина полученного кода n, минимальное расстояние d (минимальное расстояние d линейного кода являетсяминимальным из всех расстояний Хемминга всех пар кодовых слов, см. Линейный код). Код содержит
r = d ?1 = deg(g(x))
проверочных символов, где deg() обозначает степень полинома; число информационныхсимволов
k = n ? r = n ? d + 1
Таким образом
и код Рида-Соломона являетсяразделимым кодом с максимальным расстоянием (является оптимальным в смысле границы Синглтона).
Кодовый полином c(x) может быть получен из информационного полинома m(x),
,
путем перемножения m(x) и g(x):
c(x) = m(x)g(x)
3. Свойства
Код Рида-Соломона над , исправляющий t ошибок, требует 2t проверочных символов и с егопомощью исправляются произвольные пакеты длиной t и меньше. Согласно теореме о границе Рейгера, коды Рида-Соломона являются оптимальными с точки зрения соотношения длины пакета и возможностиисправления ошибок - используя 2t дополнительных проверочных символов исправляются t ошибок (именее).
Теорема (граница Рейгера). Каждый линейный блоковый код, исправляющий все пакеты длиной t и менее, должен содержать по меньшей мере 2t проверочных символов.
Исправление многократных ошибок
Код Рида-Соломона является одним из наиболее мощных кодов, исправляющих многократные пакетыошибок. Применяется в каналах, где пакеты ошибок могут образовываться столь часто, что их уже нельзяисправлять с помощью кодов, исправляющих одиночные ошибки.
(qm ? 1,qm ? 1 ? 2t)
-код Рида-Соломона над полем с кодовым расстоянием
d = 2t + 1
можнорассматривать как
((qm ? 1)m,(qm ? 1 ? 2t)m)
-код над полем , который может исправлять любуюкомбинацию ошибок, сосредоточенную в t или меньшем числе блоков из m символов. Наибольшее числоблоков длины m, которые может затронуть пакет длины li, где
,
не превосходит ti, поэтому код, который может исправить t блоков ошибок, всегда может исправить и любую комбинацию из pпакетов общей длины l, если
.
4. Практическая реализация
Кодирование с помощью кода Рида-Соломона может быть реализовано двумя способами:систематическим и несистематическим (см. [1], описание кодировщика).
При несистематическом кодировании информационное слово умножается на некий неприводимый полиномв поле Галуа. Полученное закодированное слово полностью отличается от исходного и для извлеченияинформационного слова нужно выполнить операцию декодирования и уже потом можно проверить данныена содержание ошибок. Такое кодирование требует большие затраты ресурсов только на извлечениеинформационных данных, при этом они могут быть без ошибок.
Структурасистематического кодовогослова Рида-Соломона
При систематическом кодировании к информационному блоку из k символов приписываются 2t проверочныхсимволов, при вычислении каждого проверочного символа используются все k символов исходного блока. Вэтом случае нет затрат ресурсов при извлечении исходного блока, если информационное слово не содержитошибок, но кодировщик/декодировщик должен выполнить k(n ? k) операций сложения и умножения длягенерации проверочных символов. Кроме того, так как все операции проводятся в поле Галуа, то самиоперации кодирования/декодирования требуют много ресурсов и времени. Быстрый алгоритмдекодирования, основанный на быстром преобразовании Фурье, выполняется за время порядка lnn2.
Кодирование
При операции кодирования информационный полином умножается на порождающий многочлен. Умножениеисходного слова S длины k на неприводимый полином при систематическом кодировании можно выполнитьследующим образом:
К исходному слову приписываются 2t нулей, получается полином
.
Этот полином делится на порождающий полином G, находится остаток R, где Q - частное.
,
Этот остаток и будет корректирующем кодом Рида-Соломона, он приписывается к исходному блокусимволов. Полученное кодовое слово
.
Кодировщик строится из сдвиговых регистров, сумматоров и умножителей. Сдвиговый регистр состоит изячеек памяти, в каждой из которых находится один элемент поля Галуа.
Декодирование
Декодировщик, работающий по авторегрессивному спектральному методу декодирования, последовательновыполняет следующие действия:
· Вычисляет синдром ошибки
· Строит полином ошибки
· Находит корни данного полинома
· Определяет характер ошибки
· Исправляет ошибки
Вычисление синдрома ошибки
Вычисление синдрома ошибки выполняется синдромным декодером, который делит кодовое слово напорождающий многочлен. Если при делении возникает остаток, то в слове есть ошибка. Остаток от деленияявляется синдромом ошибки.
Построение полинома ошибки
Вычисленный синдром ошибки не указывает на положение ошибок. Степень полинома синдрома равна 2t, что много меньше степени кодового слова n. Для получения соответствия между ошибкой и ее положением в сообщении строится полином ошибок. Полином ошибок реализуется с помощью алгоритма Берлекэмпа - Месси, либо с помощью алгоритма Евклида. Алгоритм Евклида имеет простую реализацию, но требует больших затрат ресурсов. Поэтому чаще применяется более сложный, но менее затратоемкий алгоритм Берлекэмпа - Месси. Коэффициенты найденного полинома непосредственно соответствуют коэффициентам ошибочных символов в кодовом слове.
Нахождение корней
На этом этапе ищутся корни полинома ошибки, определяющие положение искаженных символов в кодовом слове. Реализуется с помощью процедуры Ченя, равносильной полному перебору. В полином ошибок последовательно подставляются все возможные значения, когда полином обращается в ноль - корни найдены.
Определение характера ошибки и ее исправление
По синдрому ошибки и найденным корням полинома с помощью алгоритма Форни определяется характер ошибки и строится маска искаженных символов. Эта маска накладывается на кодовое слово с помощью операции XOR и искаженные символы восстанавливаются. После этого отбрасываются проверочные символы и получается восстановленное информационное слово.
5. Применение
циклический помехоустойчивый кодирование восстановление
В настоящий момент коды Рида-Соломона имеют очень широкую область применения благодаря их способности находить и исправлять многократные пакеты ошибок.
Запись и хранение информации. Код Рида-Соломона используется при записи и чтении в контроллерах оперативной памяти, при архивировании данных, записи информации на жесткие диски.
Запись на CD-ROM. Возможные ошибки при чтении с диска появляются уже на этапе производства диска, так как сделать идеальный диск при современных технологиях невозможно. Так же ошибки могут быть вызваны царапинами на поверхности диска, пылью и т. д. Поэтому при изготовлении читаемого компакт-диска используется система коррекции CIRC (Cross Interleaved Reed Solomon Code). Эта коррекция реализована во всех устройствах, позволяющих считывать данные с CD дисков, в виде чипа с прошивкой firmware. Нахождение и коррекция ошибок основана на избыточности и перемежении (redundancy & interleaving). Избыточность примерно 25 % от исходной информации.
При записи на цифровые аудиокомпакт-диски (Compact Disc Digital Audio - CD-DA) используется стандарт Red Book. Коррекция ошибок происходит на двух уровнях C1 и C2. При кодировании на первом этапе происходит добавление проверочных символов к исходным данным, на втором этапе информация снова кодируется. Кроме кодирования осуществляется также перемешивание (перемежение) байтов, чтобы при коррекции блоки ошибок распались на отдельные биты, которые легче исправляются. На первом уровне обнаруживаются и исправляются ошибочные блоки длиной один и два байта (один и два ошибочных символа соответственно). Ошибочные блоки длиной три байта обнаруживаются и передаются на следующий уровень. На втором уровне обнаруживаются и исправляются ошибочные блоки, возникшие в C2, длиной 1 и 2 байта. Обнаружение трех ошибочных символа является фатальной ошибкой, не могут быть исправлены.
Беспроводная и мобильная связь. Этот алгоритм кодирования используется при передаче данных по сетям оптических линиях связи, в спутниковой и радиорелейной связи. Метод прямой коррекции ошибок в проходящем трафике (Forward ErrorCorrection, FEC) основывается на кодах Рида-Соломона.
6. Примеры кодов
16-ричный (15,11) код Рида-Соломона
Пусть t = 2,l0 = 1. Тогда
g(x) = (x ? б)(x ? б2)(x ? б3)(x ? б4) = x4 + б13x3 + б6x2 + б3x + б10
Степень g(x) равна 4, n ? k = 4 и k = 11. Каждому элементу поля GF(16) можно сопоставить 4 бита. Информационный многочлен является последовательностью 11 символов из GF(16), что эквивалентно 44битам, а все кодовое слово является набором из 60 бит.
8-ричный (7,3) код Рида-Соломона
Пусть t = 2,l0 = 4. Тогда
g(x) = (x ? б4)(x ? б5)(x ? б6)(x ? б0) = x4 + б6x3 + б6x2 + б3x + б
Пусть информационный многочлен имеет вид
m(x) = б4x2 + x + б3
Кодовое слово несистематического кода запишется в виде
c(x) = m(x)g(x) = (б4x2 + x + б3)(x4 + б6x3 + б6x2 + б3x + б) = б4x6 + бx5 + б6x4 + 0x3 + 0x2 + б5x + б4
что представляет собой последовательность семи восьмеричных символов.
Литература
1. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки. - М.: Мир, 1976. - С. 596.
2. Блейхут Р. Теория и практика кодов, контролирующих ошибки = Theory and practice of error control codes. - М.: Мир, 1986. - С. 576.
3. Берлекэмп Э. Алгебраическая теория кодирования = Algebraic Coding Theory. - М.: Мир, 1971. - С. 478.
Размещено на Allbest.ru
Подобные документы
Разработка кодера и декодера кода Рида-Соломона. Общая характеристика структурных схем кодека циклического РС-кода. Синтез кодирующего и декодирующего устройства. Проектирование структурной, функциональной и принципиальной схемы кодера и декодера.
курсовая работа [937,5 K], добавлен 24.03.2013Разработка алгоритма и программы кодирования и декодирования данных кодом Рида-Малера. Понятие избыточных кодов, их применение. Корелляционный код. Особенности построения простых помехоустойчивых кодов Рида-Маллера. Рассмотрение частных случаев.
курсовая работа [31,9 K], добавлен 09.03.2009Изучение сущности циклических кодов - семейства помехоустойчивых кодов, включающих в себя одну из разновидностей кодов Хэмминга. Основные понятия и определения. Методы построения порождающей матрицы циклического кода. Понятие открытой системы. Модель OSI.
контрольная работа [99,5 K], добавлен 25.01.2011Выбор и обоснование основных параметров кода. Коды Рида-Маллера первого порядка. Кодирование информации путем умножения исходного информационного сообщения на порождающую матрицу. Разработка структурной и функциональной схем кодера Рида-Маллера.
курсовая работа [555,2 K], добавлен 24.03.2013История применения кодов. Технология применения кодов в современных условиях. Анализ "экстремальных кодов" - кодов, границы параметров которых достигают равенства. Способность кода корректировать ошибки, ее зависимость от величины кодового расстояния.
контрольная работа [164,9 K], добавлен 14.07.2012Коды Боуза-Чоудхури-Хоквингема (БЧХ) – класс циклических кодов, исправляющих многократные ошибки. Отличие методики построения кодов БЧХ от обычных циклических. Конкретные примеры процедуры кодирования, декодирования, обнаружения и исправления ошибок.
реферат [158,2 K], добавлен 16.07.2009Помехоустойчивое кодирование, правильность передачи информации. Устранение ошибок в симплексных каналах связи с помощью корректирующих кодов. Способы обнаружения ошибок - контрольное суммирование, проверка на нечетность. Применение циклических кодов.
реферат [28,1 K], добавлен 03.08.2009Обеспечение достоверности передаваемой информации применением корректирующих кодов. Код Хэмминга - алгоритм обнаружения и исправления одиночной ошибки. Использование циклических кодов при последовательной передачей между ЭВМ и внешними устройствами.
дипломная работа [123,7 K], добавлен 02.08.2009Сущность метода перестановочного декодирования. Особенности использования метода вылавливания ошибок. Декодирование циклического кода путем вылавливания ошибок. Распознавание пакетов ошибок как особенность циклических кодов. Вычисление вектора ошибок.
доклад [20,3 K], добавлен 24.05.2012Циклические коды как подкласс (подмножество) линейных кодов, пошаговый алгоритм и варианты их кодирования и декодирования. Методика построения интерфейса отладочного модуля. Элементарный план и элементы отладки декодирующего модуля циклических кодов.
лабораторная работа [133,8 K], добавлен 06.07.2009