В каких целях спускаемые. Почему конструкторы предлагают покрывать спускаемые отсеки космического корабля слоем легкоплавкого материала?: Викторина. Кабина и оборудование

Коды Рида-Соломона относятся к недвоичным, блочным, помехоустойчивым кодам и могут использоваться в области хранения информации для избегания потери поврежденной информации. Предупреждаю, что данный подход не будет рационален во многих случаях, но позволит реализовать помехоустойчивое кодирование данных с варьируемым процентом восстанавливаемой информации.

При работе с кодами Рида-Соломона процент избыточных символов в 2 раза больше восстанавливаемого объема данных. Объясню на примере: если мы имеем последовательность из 10 символов и хотим иметь возможность восстановить ошибки в 3ех из них (30% исходной информации), то нам нужно хранить 10+3*2=16 символов. Назовем каждую переменную: n - 10, количество информационных символов; f - 3, количество восстанавливаемых символов; g - 16, длина закодированной последовательности. Таким образом, формулу можно записать так: g = n + f * 2. Данные ходы компактнее кодов Хеминга на 1 символ.

Для работы с информацией при кодировании и декодировании данных все арифметические операции выполняются в полях Галуа. Применяется так называемая полиномиальная арифметика или арифметика полей Галуа. Таким образом, результат любой операции также является элементом данного поля. Конкретное поле Галуа состоит из фиксированного диапазона чисел. Характеристикой поля называют некоторое простое число p. Порядок поля, т.е. количество его элементов, является некоторой натуральной степенью характеристики pm, где m N. При m=1 поле называется простым. В случаях, когда m>1, для образования поля необходим еще порождающий полином степени m,такое поле называется расширенным. GF(p m) - обозначение поля Галуа.

Для работы с цифровыми данными естественно использовать p=2 в качестве характеристики поля. При m=1 элементом кодовой последовательности будет бит, при m=8 - 8 бит, то есть байт. Собственно коды Рида-Соломона работающие с байтами и являются наиболее распространенными.

Подробно информацию о арифметике полей Галуа я опубликовал на Хабрахабр . В этой же статье пойдет речь о применений полей Галуа для кодирования, декодирования информации кодами Рида-Соломона .

Для удобства подсчетов приведу 2 таблицы из статьи, посвященной полям Галуа.

Таблица умножения

Таблица степеней

Перед началом кодирования мы определились с необходимым полем GF(q), где q=p m . Длина кодовой последовательности должна быть q-1. Таким образом, в нашем случае с GF(8) кодовая последовательность состоит из 7 элементов. Дальше нужно выяснить какие элементы будут информационными, а какие проверочные (избыточные). В самом начале мы говорили о том, что количество избыточных символов должно быть в два раза больше, чем то количество ошибочных символов, которое мы хотим восстановить. Если необходимо исправить двукратную ошибку (t=2 - кратность ошибки), то, соответственно, следует использовать четыре проверочных символа. Применим это к нашему примеру: из семи элементов для исправления двукратной ошибки необходимы четыре избыточных, а значит три информационных. Кодовая последовательность выглядит следующим образом:

C=(c 0 , c 1 , c 2 , c 3 , c 4 , c 5 , c 6), где c 0 , c 1 , c 2 - информационные, c 3 , c 4 , c 5 , c 6 - проверочные.

Хочу обратить внимание на тот факт, что исправление двукратной ошибки в кодовой последовательности из семи элементов означает, что можно бороться с ошибкой, вероятность возникновения которой не больше чем р ош =2/7≈0,29. Если вероятность возникновения ошибки выше, то нужно увеличивать количество проверочных символов, иначе восстановить искаженную информацию все равно не получится.

Закодируем последовательность С=(4, 6, 7, 0, 0, 0, 0), четыре последних символа - проверочные, равны нулю.

Представим нашу последовательность в виде полинома:

С(x)=4∙x 0 +6∙x 1 +7∙x 2 +0∙x 3 +0∙x 4 +0∙x 5 +0∙x 6 =4+6∙x+7∙x 2

Кодирование осуществляется с помощью обратного дискретного преобразования Фурье (IDFT). Формула для кодирования: c j "=C(z j) , где z=2 - примитивный элемент поля.

c 0 "=C(2 0)=С(1)=4+6+7=5
c 1 "=C(2 1)=С(2)=4+6∙2+7∙4=4+7+1=2
c 2 "=C(2 2)=С(4)=4+6∙4+7∙6=4+5+4=5
c 3 "=C(2 3)=С(3)=4+6∙3+7∙5=4+1+6=3
c 4 "=C(2 4)=С(6)=4+6∙6+7∙2=4+2+5=3
c 5 "=C(2 5)=С(7)=4+6∙7+7∙3=4+4+2=2
c 6 "=C(2 6)=С(5)=4+6∙5+7∙7=4+3+3=4

Получили закодированную последовательность: C"=(5,2,5,3,3,2,4). В виде полинома: С(x)=5∙x 0 +2∙x 1 +5∙x 2 +3∙x 3 +3∙x 4 +2∙x 5 +4∙x 6 .

Формула для декодирования c j =C" (z -j) .

с 0 =C"(2 0)=C"(1)=5+2+5+3+3+2+4=4
с 1 =C" (2 -1)=C" (5)=5+2∙5+5∙7+3∙6+3∙3+2∙4+4∙2=5+1+6+1+5+3+3=6
с 2 =C" (2 -2)=C" (7)=⋯=7
с 3 =C" (2 -3)=C" (6)=⋯=0
с 4 =C" (2 -4)=C" (3)=⋯=0
с 5 =C" (2 -5)=C" (4)=⋯=0
с 6 =C" (2 -6)=C" (2)=⋯=0

При декодировании получили последовательность (4, 6, 7, 0, 0, 0, 0), которая соответствует исходной. Чтобы проверить не произошло ли искажение информации достаточно посмотреть на избыточные символы. Если они все еще равны нулю, то ошибки отсутствуют.

Ошибка представляет собой другую последовательность, которая суммируется с закодированной. Допустим вектор ошибка имеет вид: f" =(0, 0, 5, 0, 3, 0, 0), тогда кодовая последовательность с ошибкой:

C f "=C"+f"=(5,2,0,3,0,2,4)

Попробуем декодировать полученное кодовое слово: C f "=5∙x 0 +2∙x 1 +0∙x 2 +3∙x 3 +0∙x 4 +2∙x 5 +4∙x 6 =5+2∙x 1 +3∙x 3 +2∙x 5 +4∙x 6

C 0 f =C"(2 0)=C"(1)=5+2+0+3+0+2+4=2
c 0 f =C"(2 -1)=C"(5)=5+2∙5+3∙6+2∙4+4∙2=5+1+1=5
c 0 f =C"(2 -2)=C"(7)=5+2∙7+3∙2+2∙6+4∙4=5+5+6+7+6=7
c 0 f =C"(2 -3)=C"(6)=5+2∙6+3∙7+2∙5+4∙3=5+7+2+1+7=6
c 0 f =C"(2 -4)=C"(3)=5+2∙3+3∙4+2∙2+4∙6=5+6+7+4+5=5
c 0 f =C"(2 -5)=C"(4)=5+2∙4+3∙5+2∙3+4∙7=5+3+4+6+1=5
c 0 f =C"(2 -6)=C"(2)=5+2∙2+3∙3+2∙7+4∙5=5+4+5+5+2=3

C f =(2, 5, 7, 6, 5, 5, 3) - декодированная последовательность. Как видим, последние четыре элемента не равны нулю, что, собственно, и свидетельствует о наличии ошибки. Для исправления ошибки в первую очередь необходимо определить позиции искаженных символов. Для этого необходимо вычислить полином локаторов ошибок, корни которого и указывают на позиции ошибок. В матричном виде полином локаторов ошибок выглядит как L=. Так как в нашем примере мы хотим исправить ошибку кратности 2, то L=.

Выпишем последние четыре символа - синдром ошибки:

Из них сформируем матрицу и вектор-столбец, необходимый для вычисления L. В общем виде:

В нашем примере:

Вычислим M -1 , с учетом того, что мы работаем с арифметикой поля Галуа

На всякий случай можно проверить правильность вычислений:

Запишем L в виде полинома:

Вычислим корни полученного полинома простым перебором:

L(2 0)=L(1)=1+4+2=7
L(2 1)=L(2)=1+4∙2+2∙4=1
L(2 2)=L(4)=1+4∙4+2∙6=1+6+7=0
L(2 3)=L(3)=1+4∙3+2∙5=1+7+1=7
L(2 4)=L(6)=1+4∙6+2∙2=1+5+4=0
L(2 5)=L(7)=1+4∙7+2∙3=1+1+6=6
L(2 6)=L(5)=1+4∙5+2∙7=1+2+5=2

Получили, что ошибки присутствуют в c 2 " и c 4 ".

Теперь необходимо найти правильные значения. Для начала приведем L(x) к нормальному виду:

L(x)=1+4x+2x 2 |*5

Запишем вектор ошибки (последние 4 символа - значения синдрома). На местах информационных символов - знаки вопроса, их и необходимо вычислить.

Осуществим свертку для f 0 , f 1 , f 2 , а затем вычислим их значения:

Получили F=(6, 3, 0, 6, 5, 5, 3), так как ошибка суммировалась с закодированной последовательностью, то произведем операцию кодирования над F:

F(x)=6+3x+6x 3 +5x 4 +5x 5 +3x 6

Так как мы уже знаем позиции ошибок, то достаточно вычислить только f 2 "=F(2 2) и f 4 "=F(2 4) , все остальные будут равны нулю. Но для того чтобы точно в этом убедится честно посчитаем все значения:

f 0 "=F(2 0)=F(1)=6+3+6+5+5+3=0
f 1 "=F(2 1)=F(2)=6+3∙2+6∙3+5∙6+5∙7+3∙5=6+6+1+3+6+4=0
f 2 "=F(2 2)=F(4)=6+3∙4+6∙5+5∙2+5∙3+3∙7=6+7+3+1+4+2=5
f 3 "=F(2 3)=F(3)=6+3∙3+6∙4+5∙7+5∙2+3∙6=6+5+5+6+1+1=0
f 4 "=F(2 4)=F(6)=6+3∙6+6∙7+5∙4+5∙5+3∙3=6+1+4+2+7+5=3
f 5 "=F(2 5)=F(7)=6+3∙7+6∙2+5∙5+5∙6+3∙4=6+2+7+7+3+7=0
f 6 "=F(2 6)=F(5)=6+3∙5+6∙6+5∙3+5∙4+3∙2=6+4+2+4+2+6=0

Получили f" =(0, 0, 5, 0, 3, 0, 0). Сложим вектор ошибки с искаженной кодовой последовательностью:

C"=C f "+f"=(5,2,0,3,0,2,4)+(0,0,5,0,3,0,0)=(5,2,5,3,3,2,4)

В результате получили правильную закодированную последовательность, при декодировании которой получим правильные информационные символы.


Теги:

Код Рида - Соломона был изобретён в 1960 году сотрудниками лаборатории Линкольна Ирвином Ридом (англ.) и Густавом Соломоном (англ.). Идея использования этого кода была представлена в статье «Polynomial Codes over Certain Finite Fields». Первое применение код Рида - Соломона получил в 1982 году в серийном выпуске компакт-дисков. Эффективный алгоритм декодирования был предложен в 1969 году Элвином Берлекэмпом (англ.) и Джэймсом Месси (алгоритм Берлекэмпа - Мэсси).

Формальное описание

Коды Рида - Соломона являются важным частным случаем БЧХ-кода , корни порождающего полинома которого лежат в том же поле , над каким и строится код (m = 1 ). Пусть α - элемент поля порядка . Если α - примитивный элемент, то его порядок равен q − 1 , то есть . Тогда нормированный полином g (x ) минимальной степени над полем , корнями которого являются d − 1 подряд идущих степеней элемента α , является порождающим полиномом кода Рида - Соломона над полем :

где l 0 - некоторое целое число (в том числе 0 и 1), с помощью которого иногда удается упростить кодер. Обычно полагается l 0 = 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 )

Свойства

Код Рида - Соломона над , исправляющий t ошибок, требует 2t проверочных символов и с его помощью исправляются произвольные пакеты ошибок длиной t и меньше. Согласно теореме о границе Рейгера, коды Рида - Соломона являются оптимальными с точки зрения соотношения длины пакета и возможности исправления ошибок - используя 2t дополнительных проверочных символов исправляются t ошибок (и менее).

Теорема (граница Рейгера) . Каждый линейный блоковый код, исправляющий все пакеты длиной t и менее, должен содержать, по меньшей мере, 2t проверочных символов.

Исправление многократных ошибок

Код Рида - Соломона является одним из наиболее мощных кодов, исправляющих многократные пакеты ошибок. Применяется в каналах, где пакеты ошибок могут образовываться столь часто, что их уже нельзя исправлять с помощью кодов, исправляющих одиночные ошибки.

(q m − 1,q m − 1 − 2t ) -код Рида - Соломона над полем с кодовым расстоянием d = 2t + 1 можно рассматривать как ((q m − 1)m ,(q m − 1 − 2t )m ) -код над полем , который может исправлять любую комбинацию ошибок, сосредоточенную в t или меньшем числе блоков из m символов. Наибольшее число блоков длины m , которые может затронуть пакет длины l i , где , не превосходит t i , поэтому код, который может исправить t блоков ошибок, всегда может исправить и любую комбинацию из p пакетов общей длины l , если .

Практическая реализация

Кодирование с помощью кода Рида - Соломона может быть реализовано двумя способами: систематическим и несистематическим (см. , описание кодировщика).

При несистематическом кодировании информационное слово умножается на некий неприводимый полином в поле Галуа. Полученное закодированное слово полностью отличается от исходного и для извлечения информационного слова нужно выполнить операцию декодирования и уже потом можно проверить данные на содержание ошибок. Такое кодирование требует большие затраты ресурсов только на извлечение информационных данных, при этом они могут быть без ошибок.

При систематическом кодировании к информационному блоку из k символов приписываются 2t проверочных символов, при вычислении каждого проверочного символа используются все k символов исходного блока. В этом случае нет затрат ресурсов при извлечении исходного блока, если информационное слово не содержит ошибок, но кодировщик/декодировщик должен выполнить k (n k ) операций сложения и умножения для генерации проверочных символов. Кроме того, так как все операции проводятся в поле Галуа, то сами операции кодирования/декодирования требуют много ресурсов и времени. Быстрый алгоритм декодирования, основанный на быстром преобразовании Фурье, выполняется за время порядка O (l n (n 2)) .

Кодирование

При операции кодирования информационный полином умножается на порождающий многочлен. Умножение исходного слова S длины k на неприводимый полином при систематическом кодировании можно выполнить следующим образом:

Кодировщик строится из сдвиговых регистров, сумматоров и умножителей. Сдвиговый регистр состоит из ячеек памяти, в каждой из которых находится один элемент поля Галуа.

Декодирование

  • Вычисляет синдром ошибки
  • Строит полином ошибки
  • Находит корни данного полинома
  • Определяет характер ошибки
  • Исправляет ошибки

Вычисление синдрома ошибки

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

Построение полинома ошибки

Вычисленный синдром ошибки не указывает на положение ошибок. Степень полинома синдрома равна 2t , что много меньше степени кодового слова n . Для получения соответствия между ошибкой и ее положением в сообщении строится полином ошибок. Полином ошибок реализуется с помощью алгоритма Берлекэмпа - Месси , либо с помощью алгоритма Евклида. Алгоритм Евклида имеет простую реализацию, но требует больших затрат ресурсов. Поэтому чаще применяется более сложный, но менее затратоемкий алгоритм Берлекэмпа - Месси. Коэффициенты найденного полинома непосредственно соответствуют коэффициентам ошибочных символов в кодовом слове.

Нахождение корней

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

Определение характера ошибки и ее исправление

По синдрому ошибки и найденным корням полинома с помощью алгоритма Форни определяется характер ошибки и строится маска искаженных символов. Эта маска накладывается на кодовое слово с помощью операции XOR и искаженные символы восстанавливаются. После этого отбрасываются проверочные символы и получается восстановленное информационное слово.

Применение

В настоящий момент коды Рида - Соломона имеют очень широкую область применения благодаря их способности находить и исправлять многократные пакеты ошибок.

Запись и хранение информации

Код Рида - Соломона используется при записи и чтении в контроллерах оперативной памяти, при архивировании данных, записи информации на жесткие диски (ECC), записи на CD/DVD диски. Даже если поврежден значительный объем информации, испорчено несколько секторов дискового носителя, то коды Рида - Соломона позволяют восстановить большую часть потерянной информации. Также используется при записи на такие носители, как магнитные ленты и штрихкоды.

Запись на 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 байта. Обнаружение трех ошибочных символов является фатальной ошибкой и не может быть исправлено.

Беспроводная и мобильная связь

Этот алгоритм кодирования используется при передаче данных по сетям WiMAX , в оптических линиях связи , в спутниковой и радиорелейной связи . Метод прямой коррекции ошибок в проходящем трафике (Forward Error Correction, FEC) основывается на кодах Рида - Соломона.

Примеры кодов

16-ричный (15,11) код Рида - Соломона

Пусть t = 2,l 0 = 1 . Тогда

g (x ) = (x − α)(x − α 2)(x − α 3)(x − α 4) = x 4 + α 13 x 3 + α 6 x 2 + α 3 x + α 10

Степень g (x ) равна 4, n k = 4 и k = 11 . Каждому элементу поля GF(16) можно сопоставить 4 бита. Информационный многочлен является последовательностью 11 символов из GF(16) , что эквивалентно 44 битам, а все кодовое слово является набором из 60 бит.

8-ричный (7,3) код Рида - Соломона

Пусть t = 2,l 0 = 4 . Тогда

g (x ) = (x − α 4)(x − α 5)(x − α 6)(x − α 0) = x 4 + α 6 x 3 + α 6 x 2 + α 3 x + α

Пусть информационный многочлен имеет вид

m (x ) = α 4 x 2 + x + α 3

Кодовое слово несистематического кода запишется в виде

c (x ) = m (x )g (x ) = (α 4 x 2 + x + α 3)(x 4 + α 6 x 3 + α 6 x 2 + α 3 x + α) = α 4 x 6 + αx 5 + α 6 x 4 + 0x 3 + 0x 2 + α 5 x + α 4

Преимущество использования кодов Рида-Соломона заключается в том, что вероятность сохранения ошибок в декодированных данных обычно много меньше, чем вероятность ошибок, если коды Рида-Соломона не используются. Это часто называется выигрышем кодирования.

Пример . Пусть имеется цифровая телекоммуникационная система, работающая с BER (Bit Error Ratio ), равной 10 -9 , т.е. не более 1 из 10 9 бит передается с ошибкой. Такого результата можно достичь путем увеличения мощности передатчика или применением кодов Рида-Соломона (либо другого типа коррекции ошибок). Алгоритм Рида-Соломона позволяет системе достичь требуемого уровня BER с более низкой выходной мощностью передатчика.

Архитектура кодирования и декодирования кодов Рида-Соломона

Кодирование и декодирование Рида-Соломона может быть выполнено аппаратно или программно.

Арифметика конечного поля Галуа

Коды Рида-Соломона базируются на специальном разделе математики – полях Галуа (GF) или конечных полях. Арифметические действия (+,-, x, / и т.д.) над элементами конечного поля дают результат, который также является элементом этого поля. Кодировщик или декодер РидаСоломона должны уметь выполнять эти арифметические операции. Эти операции для своей реализации требуют специального оборудования или специализированного программного обеспечения.

Образующий полином

Кодовое слово Рида-Соломона формируется с привлечением специального полинома. Все корректные кодовые слова должны делиться без остатка на эти образующие полиномы . Общая форма образующего полинома имеет вид

g(x) = (x – a i)(x – a i+1)...(x – a i+2t)

а кодовое слово формируется с помощью операции

c(x) = g(x).i(x)

где g(x) является образующим полиномом , i(x) представляет собой информационный блок, c(x) – кодовое слово, называемое простым элементом поля.

Пример . Генератор для RS(255, 249)

g(x)= (x – a 0)(x – a 1)(x – a 2)(x – a 3)(x – a 4)(x – a 5) g(x)= x 6 + g 5 x 5 + g 3 x 3 + g 2 x 2 + g 1 x 1 + g 0

Архитектура кодировщика

2t символов четности в кодовом слове Рида-Соломона определяются из следующего соотношения:

Ниже показана схема реализации кодировщика для версии RS(255,249) :


Рис. 4.6.

Каждый из 6 регистров содержит в себе символ (8 бит). Арифметические операторы выполняют сложение или умножение на символ как на элемент конечного поля.

Архитектура декодера

Общая схема декодирования кодов Рида-Соломона показана ниже на рис. 4.7 .


Рис. 4.7.

Обозначения:

  • r(x) – Полученное кодовое слово
  • Si – Синдромы
  • L(x) – Полином локации ошибок
  • Xi – Положения ошибок
  • Yi – Значения ошибок
  • c(x) – Восстановленное кодовое слово
  • v – Число ошибок

Полученное кодовое слово r(x) представляет собой исходное (переданное) кодовое слово c(x) плюс ошибки:

r(x) = c(x) + e(x)

Декодер Рида-Соломона пытается определить позицию и значение ошибки для t ошибок (или 2t потерь) и исправить ошибки и потери.

Вычисление синдрома

Вычисление синдрома похоже на вычисление четности . Кодовое слово Рида-Соломона имеет 2t синдромов , это зависит только от ошибок (а не передаваемых кодовых слов). Синдромы могут быть вычислены путем подстановки 2t корней образующего полинома g(x) в r(x) .

Нахождение позиций символьных ошибок

Это делается путем решения системы уравнений с t неизвестными. Существует несколько быстрых алгоритмов для решения этой задачи. Эти алгоритмы используют особенности структуры матрицы кодов РидаСоломона и сильно сокращают необходимую вычислительную мощность. Делается это в два этапа.

1. Определение полинома локации ошибок.

Это может быть сделано с помощью алгоритма Berlekamp-Massey или алгоритма Эвклида. Алгоритм Эвклида используется чаще на практике, так как его легче реализовать, однако алгоритм Berlekamp-Massey позволяет получить более эффективную реализацию оборудования и программ.

2. Нахождение корней этого полинома. Это делается с привлечением алгоритма поиска Chien.

Нахождение значений символьных ошибок

Здесь также нужно решить систему уравнений с t неизвестными. Для решения используется быстрый алгоритм Forney.

Реализация кодировщика и декодера Рида-Соломона. Аппаратная реализация

Существует несколько коммерческих аппаратных реализаций. Имеется много разработанных интегральных схем, предназначенных для кодирования и декодирования кодов Рида-Соломона. Эти ИС допускают определенный уровень программирования (например RS(255, k) , где t может принимать значения от 1 до 16).

Программная реализация

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