Помехоустойчивое кодирование. Коды Рида

advertisement
Помехоустойчивое
кодирование
Коды Рида-Соломона
• Коды Рида-Соломона были
предложены в 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( n1 ))
Дискретное преобразование Фурье в поле
Галуа
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),
nk
• Пусть слово  получается путем прямого ПФ
из 
Пример
• Пусть 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 ),
nk
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 , bnk  enk , ,..., bn1  en1 )



nk
• Синдром ошибки:
(e0 , e1 ,..., enk 1 )  (e0 , e1 ,..., ed 2 )




nk
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  2l  0
РС – коды. Декодирование.
• 1.Определяется минимальное значение l, при
котором система совместна (Алгоритим
Берлекемпа, 1967)
• 2.Вычисляется s (x )
• Вычисляются координаты en  k , en  k 1 ,..., en 1
вектора ошибки: из s ( x)e( x)  0
получим en  k
s0enk  s1enk 1  ...  sl enk l  0
• Затем решаем
s0enk 1  s1enk  ...  sl enk l 1  0
•
и т.д.
Алгоритм декодирования
• Вычислить обратное преобразование Фурье принятого
слова      .Выделить синдром
•
(e0 , e1 ,..., enk 1 )



nk
Найти многочлен локаторов ошибок
s (x )
• С помощью рекуррентной процедуры вычислить
остальные компоненты вектора ошибки
enk , ,..., en1
• Найти информационное слово

и кодовое слово
• Вычислить прямое преобразование Фурье, получить


Пример(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
• что представляет собой последовательность
семи восьмеричных символов.
Наиболее важные результаты
Наиболее важные результаты
Наиболее важные результаты
Download