Главная страница

Сверточные коды. 4 Дисер с 15 СК и Мягкое дек с 55. Программноаппаратная реализация оптимального алгоритма декодирования каскадных кодов на базе кодов рида соломона в адаптивных системах обмена данными


Скачать 5.5 Mb.
НазваниеПрограммноаппаратная реализация оптимального алгоритма декодирования каскадных кодов на базе кодов рида соломона в адаптивных системах обмена данными
АнкорСверточные коды
Дата09.03.2020
Размер5.5 Mb.
Формат файлаdocx
Имя файла4 Дисер с 15 СК и Мягкое дек с 55.docx
ТипДиссертация
#111324
страница7 из 21
1   2   3   4   5   6   7   8   9   10   ...   21


Данный способ позволяет найти значения ошибок через ключевое уравнение (1.23) и многочлен локаторов ошибок (1.27), однако решение самого уравнения и нахождение многочлена локаторов ошибок является также сложной и трудоемкой процедурой. Наиболее распространенной из них является алгоритм Берлекэмпа – Месси.

      1. Алгоритм Берлекэмпа – Месси


Нахождение решения ключевого уравнения (1.23), имеющего минимальную степень, эквивалентно построению регистра сдвига минимальной длины с обратными связями, отображающими Λ(x), порождающими первые 2t членов S(x). Основное содержание БМА формулируется следующим образом. Вначале находят самый короткий регистр сдвига, генерирующий S1. Далее проверяют,

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

  • правильно предсказывал следующий символ,

  • не менял предсказание предыдущих символов,

  • увеличивал длину регистра на минимально возможную величину.

Процесс вычисления продолжается до тех пор, пока не будут порождены первые 2t символов синдрома [5, 6].

Алгоритм строится на основе итеративной процедуры. При каждой итерации должны сохраняться как многочлен связей Λ(x), так и добавка B(x). Для каждого нового члена S(x) предусматривается проверка правильности предсказания этого символа текущим многочленом связи. Если предсказание правильно, то многочлен связей не меняется, а добавка умножается на x. Если предсказание неправильно (невязка Δr ≠ 0), то изменяют текущий многочлен связей, прибавляя к нему добавку. После этого проверяют, увеличилась ли длина регистра. Если она не увеличилась, то текущую добавку оставляют без изменений. Если длина регистра возрастает, то лучшей добавкой считают предыдущий многочлен связей. Для недвоичных полей добавку нормируют, чтобы невязка стала равной 1. Далее при каждом исправлении эту нормализованную добавку умножают на значение текущей невязки [87].

Блок-схема БМА приведена на рисунке 1.8. Алгоритм выполняется за 2t = n k итераций.

При этом многочлен значений ошибок находится непосредственным умножением по формуле ключевого уравнения (1.23).





Начальные значения

r = 0, Λ(x) = 1, L = 0, B(x) = 1, Ω(x) = 0, A(x) = 1

r r + 1

Вычисление ошибки в следующем компоненте синдрома

𝐿

Δ𝑟 = Λ𝑗 ∙ 𝑆𝑟−𝑗

𝑗 =0

Генерирует ли Да, отводы обратной связи

существующий остаются без изменений регистр сдвига Δr = 0

следующий

компонент Нет, отводы обратной

синдрома? связи необходимо изменить

Вычисление нового многочлена связей, для которого Δr = 0

𝑀 𝑥 = Λ 𝑥 + Δ𝑟 ∙ 𝑥 ∙ 𝐵 𝑥
Надо ли

увеличивать длину Нет

регистра? 2L r- 1 Λ 𝑥 𝑀 𝑥
Да

𝐵 𝑥 ← Δ−1 ∙ 𝐵 𝑥 Сохранение прежнего

𝑟 регистра после нормализации 𝐵 𝑥 ← 𝑥 ∙ 𝐵 𝑥

Λ 𝑥 𝑀 𝑥 Модификация регистра сдвига

𝐿 ← 𝑟 𝐿 Изменение длины регистра

Многочлен значений ошибок, соответствующий Λr(x) :

Ω𝑟 𝑥 ← Ω𝑟−1 𝑥 + Δ𝑟 ∙ 𝐴𝑟−1 𝑥

Да

LrLr-1 = 0 Ar(x) xAr-1(x)
Нет
Вычисление новой добавки для Ω(x) :

A𝑟 𝑥 Δ−1 ∙ 𝑥 Ω 𝑥

𝑟 𝑟−1

В принятой Нет

комбинации более t r = 2t

ошибок

Да
Нет Да К следующему этапу Стоп deg Λ(x) = L декодирования

Рисунок 1.8 – Алгоритм Берлекэмпа – Месси

Принятые обозначения на рисунке 1.8:

r – номер итерации, r = 0, 1, 2, … , n k = 2t;

Sr– компонент синдрома;

r – ошибка в вычислении Sr(r невязка);

(x) – многочлен локаторов ошибок, в соответствии с компонентами которого строится регистр сдвига минимальной длины;

L – длина регистра сдвига, L  deg (x);

B(x) – нормирующая добавка;

(x) – многочлен значений ошибок.

В [107] приводится дополнение к БМА, позволяющее в ходе решения ключевого уравнения одновременно с нахождением значения многочлена локаторов ошибок Λ(x) степени меньшей или равной t находить многочлен значений ошибок Ω(x) степени меньшей или равной t – 1

Это дополнение на рисунке 1.8 представлено отдельными блоками.

Поскольку Ω(x) находится умножением Λ(x) на S(x), можно задать последовательность многочленов Ωr(x), удовлетворяющих тем же рекуррентным соотношениям, что и многочлены Λr(x). Чтобы избежать путаницы, обозначим добавку при нахождении Ω(x) через Ar(x). Тогда, положив Ω0 (x) = 0 и A0 (x) = 1, получим [13]:

r1x rx r Arx,

A x x Arx, если Lr 1 Lr .

r1 x x r1 , если L L

r r1 r



(1.36)


Как видно из (1.36), решение ключевого уравнения с помощью БМА требует запуска итеративной процедуры. На практике для реализации алгоритма необходимо проектировать специальный сдвиговый регистр с обратными связями [74].

      1. АлгоритмЕвклида


В основе этого алгоритма лежит известная процедура нахождения наибольшего общего делителя (НОД) двух полиномов. Задача декодирования кодов РС в данном случае может быть переформулирована как задача определения многочлена (x), удовлетворяющего ключевому уравнению (1.23). Решение может быть найдено применением расширенного алгоритма Евклида к многочленам r0(x) = xdи r1(x) = S(x), где d = 2t + 1 – кодовое расстояние, а S(x) – синдромный многочлен. Если на j-ом шаге алгоритма получено решение:


rj (x) aj(x)x b(x) S(x)

d

j

(1.37)

такое, что deg( rj(x) ) ≤ t, то (x) = rj(x) и Λ(x) = bj(x). В данном случае полином αj(x) не представляет интереса, так как решение уравнения (1.23) ищется по модулю xd[110].

Расширенный алгоритм Евклида, вычисляющий НОД ( r0(x), r1(x) ) , состоит из следующих этапов:

  • устанавливаются начальные условия: a0(x) = 1, a1(x) = 0, b0(x) = 0,

b1(x) = 1;

  • на вход арифметико-логического устройства (АЛУ) согласно (1.37) подаются значения r0(x) и r1(x), при этом deg( r0(x) ) ≥ deg( r1(x) );

  • на шаге j( j 2 ) применяется длинное деление к многочленам rj-2(x) и

rj-1(x), результат деления представляется в виде:


rj2 (x) qj (x)rj1 (x) rj (x) , 0  degr(x) degr (x),

j j1


(1.38)

где qj(x) – неполное частное, а rj(x) – остаток от деления на j-ом шаге;

  • вычисляется множитель bj(x):




bj (x)  bj 2 (x)  qj (x)bj 1(x) ;

(1.39)

  • проверяется степень полученного многочлена rj(x), если deg( rj(x) ) ≤ t , то выполнение алгоритма заканчивается, в противном случае алгоритм переходит на следующий шаг, и процедура повторяется;

  • на выходе АЛУ возвращает рассчитанные значения многочлена значений ошибок (x) = rj(x) и многочлена локаторов ошибо Λ(x) = bj(x) [110].

Блок-схема вычисления полинома локаторов ошибок и решения ключевого уравнения согласно алгоритму Евклида представлена на рисунке 1.9


Начало


Инициализация

r0 x ,

d
r1 S ( x ),

b 0  0 , b1  1;

Деление многочленов

rj 2 x

rj 1 x

rj2 x qxrj1 x rjx

Обновление множителей ajx aj2 x qjxaj1 x , bjx bj 2 x qjxbj1 x .
deg rjx t нет j j1
да
x rj x

x bj x

К следующему этапу декодирования

Рисунок 1.9 – Алгоритм Евклида




      1. Алгоритм Гурусвами –Судана


Алгоритм списочного декодирования Гурусвами – Судана (ГСА) обобщенных кодов РС состоит из двух основных этапов [28]:

        • интерполяции;

        • факторизации.

На первом этапе по полученному из канала связи кодовому слову строится полином двух переменных специального вида Q(x, y), такого что:


wdeg1,k Q(x, y)  l ,

(1.40)

где (1, k) – взвешенная степень wdeg(1, k) Q(x, y) многочлена Q(x, y), равная максимуму (1, k)-взвешенных степеней его ненулевых членов. При этом точки (xi, yi) являются корнями этого многочлена кратности r:

Q j1, j2 (x, y) 0 , j j r, i 1, ... , n.

i i 1 2

(1.41)

На втором этапе полином Q(x, y) разлагается на сомножители, по которым строится список. Для этого ищутся все многочлены f (j) (x), удовлетворяющие условиям (1.42). Далее строятся соответствующие им кодовые слова и выбираются те из них, которые отличаются от принятого вектора менее чем в τ позициях.

deg f j x k , Qx, f j x 0 .

(1.42)





Доказательство справедливости приведенного выше алгоритма, а также выражения, связывающие параметры l, r, τ, k, n, в рамках этой работы приводиться не будут. Их можно найти в [28].

В настоящее время существуют эффективные алгоритмы построения многочлена Q(x, y). Наиболее распространен среди них итеративный интерполяционный алгоритм (ИИА) [121]. Он состоит в том, что вместо построения одного многочлена, удовлетворяющего вышеперечисленным условиям, строятся ρ + 1 интерполяционных многочленов, при этом их степени по y не превышают ρ. Величина ρ выбирается таким образом, чтобы искомый многочлен, удовлетворяющий условиям (1.40), гарантированно присутствовал среди этих многочленов. Для лучшего понимания алгоритма представим вектор многочленов



Q x, y q xyi, j 0 , ... ,

j ij

i 0

(1.43)


в виде произведения YQ(x, y), где Q(x) некоторый матричный многочлен


Qx  qij x ,

(1.44)

а – Y вектор вида Y = ( y0 , y1 , … , y ρ).

На начальном этапе полагается Q(x) = I. Последовательно обрабатывая интерполяционные точки (xi, yi) и соответствующие им уравнения (1.41), на каждом шаге необходимо домножать Q(x) справа на матрицу вида:

1 0  0  0

 

0 1  0  0

     

i, j1 , j2 ,

01x x  

i

j j j

0 0 0

     

0 0  0  1

(1.45)




где

Q j1 , j2 x , y ,

j0 arg min Qj (x, y) , причем минимальный многочлен

j j i i

j: j 0


определяется на основе градуированного лексикографического порядка. Элемент x xiрасполагается в столбце j0 и строке j0. Умножение на данную матрицу приводит к тому, что производные Хассе порядка [ j1, j2 ] всех многочленов Q(x, y) в точке (xi, yi) обращаются в ноль. После обработки всех интерполяционных точек многочлены Q j(x, y) будут удовлетворять уравнениям
j


(1.41), а их старшие члены будут иметь вид

LT Qx, y xijyj,

j  0, ... , , причем


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

На этапе факторизации ГСА требуется нахождение всех f (j) (x) полученного многочлена Q(x, y) , таких что:

Qx, f j x 0 , deg f j x k.


(1.46)


Наиболее эффективным способом решения данной задачи является алгоритм Рота – Рукенштейна [121]. Данный алгоритм позволяет найти
x


коэффициенты многочленов

f j(x) f i

i
ji


в порядке возрастания i

одновременно для всех j. Для нахождения коэффициентов всех f j,0 необходимо поделить Q(x, y) на максимально возможную степень x. Тогда из (1.46) следует, что:

Q0, f Q0, f j0 0 .

j,0


(1.47)





Применяя стандартные методы поиска корней многочленов от одной переменной из уравнения (1.47), можно найти все значения f j,0. Тогда:

0 Qx, f jx Qx, f x f jx Q jx, f jx.

j,0


(1.48)








Оставшиеся коэффициенты

f j (x) , обозначенные в (1.48) как

f j (x) ,


могут быть найдены из (1.49) аналогичным образом:

Q j x, y Qx, f xy.

j,0


(1.49)

Таким образом, ГСА позволяет произвести списочное декодирование кодов РС за полиноминальное время, которое может оказаться чрезмерно большим для практического применения. При этом наиболее трудоемким шагом является построение интерполяционного многочлена от двух переменных, проходящего с некоторой кратностью точки, соответствующие принятым символам [121].
    1. 1   2   3   4   5   6   7   8   9   10   ...   21


написать администратору сайта