Помехоустойчивое кодирование Коды Рида-Соломона • Коды Рида-Соломона были предложены в 1960 году Ирвином Ридом (Irving S. Reed) и Густавом Соломоном (Gustave Solomon), являвшимися сотрудниками Линкольнской лаборатории МТИ. • Ключом к использованию этой технологии стало изобретение в 1969 году эффективного алгоритма декодирования Элвином Берлекампом и Джеймсом Мэсси (алгогритм Берлекемпа-Мэсси). • РС – коды – это недвоичные коды, где в качестве разрядов кодовых слов рассматриваются не биты, а группы битов (чаще всего – шестнадцатеричные, восьмеричные символы или байты). Приложения • Коды Рида-Соломона применяются для исправления ошибок во многих системах: • устройствах памяти (включая магнитные ленты, CD, DVD, штрих-коды, и т.д.); • беспроводных или мобильных коммуникациях (включая сотовые телефоны, микроволновые каналы и т.д.); • спутниковых коммуникациях; • цифровом телевидении / DVB (digital video broadcast); • скоростных модемах, таких как ADSL, xDSL и т.д. Покомпонентное произведение кодовых слов над полем Галуа (a0 , a1 ,..., an 1 ) T и (b0 , b1 ,..., bn 1 ) (a0b0 , a1b1 ,..., an 1bn 1 ) T T Дискретное преобразование Фурье в поле Галуа m Рассматривается поле Галуа GF (q ) , - примитивный элемент поля. Пусть задано слово (c0 , c1 ,..., cn 1 ), c j GF (q) . n q 1 m Дискретное преобразование Фурье в поле Галуа Преобразование Фурье в поле Галуа вектора определяется как вектор (C0 , C1 ,..., Cn 1 ), n 1 C j ci , C j GF (q ) i o i j m Пример. Пример. поле GF (2 ) n 7 2 1, (0011000), с0 0, с1 0, с2 1, с3 1, с4 0, с5 0, с6 0 3 3 С0 с2 с3 0, С1 2 3 5 , С2 4 6 3 , С3 6 9 6 2 1, С4 8 12 5 6 , С5 10 15 3 1, С6 12 18 5 4 1 (0, 5 , 3 ,1, 6 ,1,1) Дискретное преобразование Фурье в поле Галуа n 1 C j ci i j i o Если рассмотреть многочлен для n 1 (c0 , c1 ,..., cn 1 ) с( x) ci x i , i 0 то n 1 с( ) ci , j i j i 0 Поэтому C j с( j ) (c( 0 ), c( 1 ),..., c( n1 )) Дискретное преобразование Фурье в поле Галуа n 1 C j ci i j i o Точно также с j С ( ) j (С ( ), С ( ),..., С ( 0 1 1 n )) Пример. Пример. n 7 23 1, поле GF (2 ), c( x) x x 3 2 3 (0011000) С ( X ) (1 1) ( 2 3 ) X ( 4 6 ) X 2 ( 6 9 ) X 3 ( 8 12 ) X 4 ( 10 15 ) X 5 ( ) X X X X X X X , 12 18 6 5 (0, 5 , 3 ,1, 6 ,1,1) 3 2 3 6 4 5 6 Дискретное преобразование Фурье в поле Галуа • По аналогии с ПФ для непрерывных сигналов, говорят, что вектор (или соответствующий многочлен) принадлежит временной области, а вектор (многочлен) определен в частотной области Дискретное преобразование Фурье в поле Галуа характеристики 2 Теорема 1. n 1 . C j i j ci , i o n 1 c j i j Ci i o Теорема 2. C 0 тогда и только тогда, когда j является корнем многочлена c(x). сj 0 тогда и только тогда, когда является корнем многочлена С(x). j j Свертка (случай поля характеристики 2) • Рассмотрим произведение двух двоичных многочленов: l 1 l 1 f ( x) c( x) b( x) ci x b j x j i i 0 2l 2 ( c b )x k 0 i j k i j j 0 2l 2 k fk xk k 0 • В области преобразования соответствующий многочлен 2l 2 2l 2 k 0 k 0 F ( x) Fk x k Ck Bk x k C ( x) B( x) Пример(1) Пример. поле GF (2 ), c( x) x x 3 2 3 0011000 C ( X ) (1 1) ( 2 3 ) X ( 4 6 ) X 2 ( ) X ( ) X ( ) X 6 9 3 8 12 4 10 15 5 ( ) X X X X X X X 12 18 6 5 3 2 3 6 4 5 6 Пример (2). Пример. b( x ) 1 x x 3 1101000 B( X ) (1 1 1) (1 3 ) X (1 2 6 ) X 2 (1 ) X (1 ) X (1 ) X 3 9 3 4 12 4 5 (1 ) X 1 X X X 6 18 6 4 3 2 5 6 15 5 Пример (3). Пример. f ( x) c( x) b( x) ( x 2 x 3 )(1 x x 3 ) x x x x 2 4 5 6 0010111 F ( X ) C ( X ) B ( X ) 4 X 3 2 X 5 X 6 ( 5 X 3 X 2 X 3 6 X 4 X 5 X 6 ) (1 4 X 3 2 X 5 X 6 ) Граница Синглтона • Теорема. Минимальное расстояние любого (n,k) – кода удовлетворяет неравенству dmin n k 1 • Код с максимальным расстоянием: dmin n k 1 РС - коды • Выбирается d – параметр кода Рида-Соломона • Код Рида-Соломона – циклический линейный (n,nd+1) – код над полем GF(q), где q p m , длины n=q1, порождающий многочлен которого g(x) имеет своими корнями d-1 последовательных степеней примитивного элемента поля GF(q). • В качестве порождающего многочлена РС-кода можно выбрать, например, g ( x) ( x )( x 2 )...( x d 1 ) РС – коды. Кодирование. • Ограничимся случаем p=2, то есть полем характеристики 2. • Выберем информационное слово длины k (a1 , a2 ,..., ak 1 ), ai GF (q), k n d 1 • Построим слово (a1 , a2 ,..., ak 1 , 0 ,0 ,..., 0), nk • Пусть слово получается путем прямого ПФ из Пример • Пусть q 2 , d 5 • Выберем информационное слово, k=7-5+1=3 α ( , , ) Построим слово β (a, a, a,0,0,0,0), b( x) x x 2 3 6 4 6 4 ( , , , , 1 , 1 , ) • Cлово b(1) , b( ) 2 3 6 , b( 2 ) 3 5 4 , b( 3 ) 4 1 6 , b( 4 ) 5 2 1, b( 5 ) 6 4 1, b( 6 ) 1 6 4 РС – коды. Кодирование. • Теорема 1. Множество q k слов в частотной области образует (n,k)-код РидаСоломона. • Теорема 2. Минимальное кодовое расстояние кода Рида-Соломона равно d=n-k+1. РС – коды. Декодирование. • Для удобства изложения расположим информационные символы в старших разрядах слова , тогда в соответствующем многочлене (0 ,0 ,..., 0, bn k , bn k 1 ,..., bn 1 ), nk b( x) 0 x 0 ... 0 x n k 1 bn k x n k ... b n 1 x n 1 • Порождающий многочлен имеет вид g ( x) ( x k 1 )( x k 2 )...( x n ) РС – коды. Декодирование. • В канале к кодовому слову прибавляется вектор ошибки кратности l d 1 n k : • Рассмотрим обратное ПФ принятого из канала слова : (e0 , e1 ,..., en k 1 , bnk enk , ,..., bn1 en1 ) nk • Синдром ошибки: (e0 , e1 ,..., enk 1 ) (e0 , e1 ,..., ed 2 ) nk d 1 РС – коды. Декодирование. • Вектор ошибки имеет кратность l d 1 , пусть ненулевые компоненты вектора находятся на местах j1 , j2 ,..., jl . • Определим многочлен локаторов ошибок: l s ( x) (1 x jk ) s0 s1 x ... sl x l k 1 • Тогда 0 s ( x )e( x ) 0 РС – коды. Декодирование. • Получаем систему d-1-l линейных уравнений относительно l неизвестных: s0 el s1el 1 ... sl e0 0 s0 el 1 s1el ... sl e1 0 ... s0 ed 2 s1ed 3 ... sl ed 2l 0 РС – коды. Декодирование. • 1.Определяется минимальное значение l, при котором система совместна (Алгоритим Берлекемпа, 1967) • 2.Вычисляется s (x ) • Вычисляются координаты en k , en k 1 ,..., en 1 вектора ошибки: из s ( x)e( x) 0 получим en k s0enk s1enk 1 ... sl enk l 0 • Затем решаем s0enk 1 s1enk ... sl enk l 1 0 • и т.д. Алгоритм декодирования • Вычислить обратное преобразование Фурье принятого слова .Выделить синдром • (e0 , e1 ,..., enk 1 ) nk Найти многочлен локаторов ошибок s (x ) • С помощью рекуррентной процедуры вычислить остальные компоненты вектора ошибки enk , ,..., en1 • Найти информационное слово и кодовое слово • Вычислить прямое преобразование Фурье, получить Пример(1) • Пусть q 2 , d 5 • Выберем информационное слово, k=7-5+1=3 α ( , , ) Построим слово β (a, a, a,0,0,0,0), b( x) x x 2 3 • Cлово ( , 6 , 4 , 6 ,1,1, 4 ) E (0,0, ,0,1,0,0) • Допустим вектор ошибки • Тогда на выходе из канала получено слово ( , 6 , 2 , 6 ,0,1, 4 ) Пример(2) • Строим обратное преобразование: β (1, a 2 ,1,0, a 4 , a 6 , a 6 ) • Синдром есть (0, a 4 , a 6 , a 6 ) • Решаем систему s0 6 s1 6 s2 4 0 s0 6 s1 4 0 • Многочлен локаторов ошибок(места ошибок) 1 2 x x 2 (1 х 3 )(1 х 5 ) (1 х 4 )(1 х 2 ) • Находим величину ошибки из уравнения 1 4 2 0 e2 0 16-ричный (15,11) код Рида — Соломона • Пусть t = 2. Выберем • 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. Выберем • g(x) = (x − α4)(x − α5)(x − α6)(x − α0) = x4 + α6x3 + α6x2 + α3x + α. • Пусть информационный многочлен имеет вид • a(x) = α4x2 + x + α3. 8-ричный (7,3) код Рида — Соломона • Кодовое слово несистематического кода запишется в виде • c(x) = a(x)g(x) = (α4x2 + x + α3)(x4 + α6x3 + α6x2 + α3x + α) = α4x6 + αx5 + α6x4 + 0x3 + 0x2 + α5x + α4 • что представляет собой последовательность семи восьмеричных символов. Наиболее важные результаты Наиболее важные результаты Наиболее важные результаты