Научная статья на тему 'Реализация потокового декодера укороченных кодов Рида-Соломона на ПЛИС'

Реализация потокового декодера укороченных кодов Рида-Соломона на ПЛИС Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
313
68
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПЛИС / КОД РИДА-СОЛОМОНА / КОДЫ / ИСПРАВЛЯЮЩИЕ ОШИБКИ / БЛОЧНЫЕ КОДЫ / КОДЫ БЧХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Федоров С.В., Ромашкин В.И., Вялых К.М.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация потокового декодера укороченных кодов Рида-Соломона на ПЛИС»

Наука и Образование

МГТУ им. Н.Э. Баумана

Наука и Образование. МГТУ им. Н.Э. Баумана. Электрон. журн. 2016. № 06. С. 184-199.

]Э5М 1994-040В

DOI: 10.7463/0616.0842221

Представлена в редакцию: Исправлена:

© МГТУ им. Н.Э. Баумана

13.05.2016 27.05.2016

УДК 519.725.2; 004.312.4

Реализация потокового декодера укороченных кодов Рида-Соломона на ПЛИС

Федоров С. В.1'*, Ромашкин В. И.2, Вялых К. М.1

:МГТУ им. Н.Э. Баумана, Москва, Россия 2НИЦ «Курчатовский институт» , Москва, Россия

БуЩЬтБШЛ!

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

Ключевые слова: коды, исправляющие ошибки, блочные коды, код Рида-Соломона, коды БЧХ, ПЛИС

1.Введение

В ряде систем используются укороченные коды Рида-Соломона. Традиционный метод декодирования таких кодов заключается в дополнении кодового слова нулями до полного кода и последующем декодировании. Это делает невозможной обработку данных в темпе поступления информации, что снижает производительность системы при использовании пакетов, содержащих кодовые слова различной длины. Несмотря на распространение в настоящее время более эффективных турбокодов и кодов с малой плотностью проверок на четность (LDPC кодов), коды Рида-Соломона по-прежнему широко используют в системах, где имеются ограничения на вычислительную сложность или требуется высокая пропускная способность, например, в сотовых сетях пятого поколения. В данной работе рассматривается реализация потокового декодера для сокращенного кода Рида-Соломона в системах цифрового телевидения, соответствующего стандартам ETSI EN 300 421 [1] и ETSI EN 301 790 [2]. В данных стандартах используются укороченные коды Рида-Соломона для пакетов различной длины, производные от стандартного кода (255,239,8).

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

Ф) = f (х) + e(x),

где fx) - переданное сообщение (кодовое слово), в котором в процессе передачи по каналу связи произошло и ошибок, отображаемых многочленом e(x).

Каждый ненулевой компонент e(x) в процессе декодирования описывается парой значений: Yi - величина ошибки и Xi - номер позиции ошибки (локатор ошибки). При этом Yi, Xi являются элементами GF(n), и значение Xi = a1, a1 eGF(n). Для описания ошибок используются:

1. Многочлен локаторов ошибок Л(х):

и

Л(х) = П (! - xXt) = Л хи + ^ iX^1 + ... + Л x1 + Л,

i=i

имеющий корни xi =Xi~1. Данные корни имеют значения, обратные к локаторам ошибок, т. е.

X-1 • X, = 1.

2. Многочлен значений ошибок Q(x):

Q(x )= S (х)Л(х) (mod х2t),

где

2t 2t и

S (*) = £ SjXj YX

j=l j=l i=l

синдромный многочлен бесконечной степени, для которого известны только 2t коэффициентов для поступившего сообщения. Здесь

Sj = Е YXj = e(aj)

элемент синдрома, aJ - корень порождающего многочлена кода.

Значение S. = e(aj) вычисляется в модуле вычисления синдромов как:

Sj = c(aj )= f (aJ)+ e(aJ ) = e(aJ),

где m < j < m + 2t -1 при m0 = i •

Уравнение для многочлена значений ошибок определяет множество из (2t-u) уравнений и называется ключевым уравнением, так как оно представляется "ключом" решения задачи декодирования. Так как степень Q(x) не превышает и-1, то поэтому справедливо:

[A(,)S ОС 1 = 0, где [a(x)]nm = amXm + a^ Xm+1 +... + a„Xn .

Из этого уравнения необходимо получить и уравнений для и неизвестных коэффициентов Ак. Эти уравнения являются линейными. Они могут быть решены обычными ме-

i=\

тодами либо с помощью итерационных процедур. После нахождения многочлена Л(х) ключевое уравнение позволяет найти неизвестные компоненты вектора е(х) и по ним выходной вектор декодера У(х)= с(х) + е(х).

Обобщенно аппаратную реализацию декодера Рида-Соломона можно представить в виде следующих этапов:

1. вычисление синдромов;

2. решение ключевого уравнения;

3. поиск позиций ошибок;

4. расчет значений ошибок;

5. коррекция ошибок.

Решение ключевого уравнения является основной задачей декодирования кодов Рида-Соломона, для которой разработан целый ряд алгоритмов, со своими достоинствами и недостатками.

Прямолинейная реализация решения (см. [3] и [4]) влечет за собой решение системы из 2t уравнений, где I - корректирующая способность кода. Из-за сложности обращения матриц больших размерностей, применяется он только для малых значений t. Алгоритмы с мягким решением, например алгоритм Судана [5], в аппаратных реализациях используются редко ввиду нерегулярности получаемой архитектуры.

Для сокращения вычислительной сложности наиболее часто применяют алгоритмы, основанные на подходе Берлекэмпа-Месси [6] и Евклида [7].

Алгоритм Евклида обладает высокой регулярностью структуры, что приводит к эффективной аппаратной реализации. Но классический алгоритм Евклида требует много ресурсов, а итеративный обладает большой вычислительной задержкой. В [7] рассмотрена аппаратная реализация решателя на основе алгоритма Евклида на жесткой логике и программируемых логических интегральных схемах (ПЛИС).

Алгоритм Берлекэмпа-Месси обладает высокой эффективностью по числу операций в конечном поле, из-за чего он наиболее часто применяется в программных декодерах и при моделировании. Этот факт также благоприятно сказывается на необходимых для аппаратной реализации ресурсах и времени работы алгоритма. К сожалению, в исходном алгоритме Берлекэмпа-Месси используется операция нахождения обратного, что значительно повышает сложность и снижает быстродействие аппаратуры, реализующей алгоритм. Имеются модификации алгоритма, не использующие делений (iBM) [6]. В работах [6,7] реализуется несколько алгоритмов на основе iBM и проводится их сравнение с алгоритмом Евклида. В работе [8] предложен алгоритм на основе iBM, требующий меньшее количество умножителей.

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

Рис. 1. Структура декодера полного кода.

В рассмотренном выше алгоритме использование укороченного кода не требует изменений в блоке расчета синдромов, но при определении позиций и значений ошибок процедурой Ченя и алгоритмом Форни на дальнейших шагах декодирования необходимо вносить коррекции для декодирования укороченного кода.

Один из возможных подходов декодирования укороченного кода - расширение полученного слова нулями до полного кода и его последующая обработка. Это делает невозможной непрерывную обработку поступающих пакетов данных. Два варианта коррекции без дополнения слова нулями предложены в [9]. Один метод предполагает заполнение сдвигового регистра для расчета синдрома с учетом укорочения кода, что соответствует дополнению слова нулями, однако, требует знания длины кодового слова, а второй метод корректирует позицию найденной ошибки при обработке синдромов. Методы ускоренного декодирования укороченного кода, схожие с подходом, используемым в данной работе, были рассмотрены в [10,11]. Однако, в отличие от этих методов, предлагаемый метод упрощает расчет коррекций и позволяет не модифицировать модули расчета локаторов, значений ошибок и синдромов для полного кода, внося минимальные изменения в модули. Предложенный метод позволяет использовать особенности структуры декодера на основе алгоритма Берлекэмпа-Месси и эффективно вычислить коррекции, требуемые для слова укороченного кода непосредственно в процессе его приема.

2. Декодер укороченного кода

Далее будет рассматриваться декодер со структурой, представленной на рис. 2. Дополнительный модуль расчета корректора локаторов позволяет осуществлять расчет синдромов для укороченного кода в процессе его приема без дополнения его нулями и последующую коррекцию результатов решения ключевого уравнения для корректной работы процедуры Ченя и Алгоритма Форни.

Рис. 2. Структура декодера укороченного кода.

2.1. Расчет синдромов

Модуль расчета синдромов осуществляет первый этап декодирования. В данном модуле расчет всех синдромов ведется параллельно с приемом слова и все 2t синдромов доступны через такт после приема сообщения.

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

п—1 _

Б, ер1, г = -1).

1 =0

Можно разложить это выражение по схеме Горнера, тогда получим выражение, использованное в нашей аппаратной реализации.

= (■ • • (((еп-1 + еп-2 + еп-3 + еп-4 + ■■■ + е0 ).

Данное выражение справедливо и при работе с укороченными на к символов кодами. При привидении укороченного кода к полному, старшие степени полиномиального представления каждого слова заполнятся нулями. Этот факт изменит выражение расчета синдрома следующим образом:

=(-"(((еп-*-1 + Сп—к—2+ Сп—к—3 + Сп—к—4 )р' + ■■■ + е0 ).

Легко заметить, что это изменение никак не меняет алгоритм вычисления.

Данная схема реализована в модуле, схема которого представлена на рис. 3.

Рис. 3. Схема блока расчета /-го синдрома.

Из схемы видно, что при приходе сигнала начала слова ^ор в регистре просто сохраняется значение пришедшего информационного байта (данный сигнал держится 1 такт). После чего начинается нормальная работа по схеме Горнера.

Модуль содержит 15 блоков расчетов синдромов, т.к. расчет 80 сводится к суммированию по модулю 2 всех приходящих символов, что реализовано на регистре с минимумом комбинационной логики (рис. 4).

Рис. 4. Общая структура блока вычисления синдромов.

2.2. Расчет корректоров локаторов и решение ключевого уравнения

Рассмотрим коррекции, которые требуется внести для обеспечения возможности непрерывной обработки. Многочлен локаторов ошибок

У

Л(х) = П(! - XX,) =ЛуХУ + Лу^-1 +... + ЛС 1=1

имеет корни хг = X-1, обратные к локаторам ошибок, т.е. X-1 • Хг = 1.

В случае, если получено сообщение укороченного кода Рида-Соломона длины п-Ъ, многочлен сообщения записывается как

п-Ь-1

с( х) = 2 с •х'

1=0

и степень старшего члена равна п-Ь-1, чему соответствует локатор X = а" ь 1 и корень многочлена локаторов х = = а~"+ь+1 = ¡а " = а0 }= аь+1. Перебор в процедуре Ченя

должен начинаться с аь+1 и далее до а255. Например, если Ь=1, то имеет место укорочение на 1 байт, и поиск должен начинаться с а2.

Заметим, что при решении ключевого уравнения может быть сформирован многочлен локаторов, имеющий корни х = а1, 1 < Ь +1. Такой многочлен соответствует нахождению ошибок в позициях, которые не передавались по каналу связи и были приняты при расчете синдромов равными нулю, что называется неисправимой конфигурацией ошибок. Подобная ситуация может возникнуть при нахождении ошибок в позициях i > п.

Процедуру Ченя для полного кода можно описать следующей последовательностью вычисления значений многочлена локаторов ошибок, начиная с а1:

ЛСа1) ^(а^+Л^а1)-1 +... + Ло

Л(а2) = Ли(а2)и + Л^а2)-1 +... + Лс

Л(а255) = Л„ (a255)v + V ) + ••• + К

Для сокращенного кода последовательность вычисления значений многочлена локаторов ошибок, начиная с ab+1:

Л^1) = Л>Ь+1Г + Л^+Т1 +... + Л0 = Kv(ab )V)v + Л^(аь Wr1 +... + Л0

Л(аь+2) = Лv(ab+2)v + Л^^Г1 +... + Ло = Лv(ab )v(a2)v + Л^^ Wr1 +... + Ло

Л(а255) = Лv(a255)v + Л^ (a255)v1 +... + ЛС= Лv(ab )v(a255~b )v + Л^ (ab )v-1(a255"b )v1 +... + Лс

Аналогичные рассуждения верны и для вычисления значения многочлена значений ошибок Q(x).

Пусть k=n-b - длина слова укороченного кода Рида-Соломона. Тогда ab = an k = a~к и итерации процедуры Ченя можно записать как

Л^) ^v(av)-k (av)' +Лv_l(av-1)-k (a^1)' +... + ЛС.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Назовем и чисел (a~1) , j = 1: v , корректорами локаторов ошибок lcj. При домноже-нии коэффициентов многочлена локаторов ошибок и многочлена значений ошибок на корректоры локаторов возможно использование реализации алгоритмов Ченя и Форни для полного кода, начинающих поиск корней с a1.

Модуль, который реализует расчет корректоров локаторов при приеме слова, состоит из однотипных ячеек, структура которых приведена на рис. 5. По сигналу sop, обозначающему начало слова, в регистр j-й ячейки загружается начальное значение a~1. Далее начинаются итерации последовательного домножения значения в регистре на a~1 при приеме каждого символа. Таким образом, если сообщение содержит k символов, на k-й

итерации в регистре будет храниться значение (а 1) , которое будет защелкнуто модулем вычисления локаторов и значений ошибок по сигналу завершения слова.

эор

Рис. 5. Элемент вычисления корректора локатора

Модуль также содержит счетчик, определяющий число принятых символов в слове для последующего ограничения числа итераций алгоритмов Ченя и Форни.

Рассчитанные корректоры локаторов передаются в декодер. В данной работе реализация решателя подробно не рассматривается, так как в рамках предлагаемого подхода декодирования укороченных кодов могут использоваться любые перечисленные выше алгоритмы решения ключевого уравнения. Рассмотрим модификацию реализации алгоритма Берлекемпа-Месси, приведенной в [8], в которой осуществление домножения на корректоры локаторов осуществляется в модуле решения ключевого уравнения на имеющихся в нем умножителях после решения ключевого уравнения (шаг 5), что позволит уменьшить количество требуемых ресурсов.

Входы:

Я 1=0,1,2,...,21-1;

Ц, ]=1,2,, V

Переменные:

Б(х) - многочлен корректора;

А - невязка;

Г - масштабирующий коэффициент, вводится для устранения деления;

К - текущая длина регистра сдвига;

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

Лс(0)=Во(0)=1, Л(0)=Д(0)=0 для 1=1,2,^,1; Д0)=0; Г(0)=1;

Итерации:

от г=0 до 21-1 с шагом 1

{

Шаг 1. Вычисление невязки:

А(г)=&* А(г)+ &-1* Л(г)+...+ &-1* Л(г)

Шаг 2. Коррекция многочлена локаторов:

Л(г+1)= Г(г)* Л(г)- А(г)*Д-1(г), 1=0,1,...,1

Шаг 3. Обновление корректора и длины:

если ((А(г)!=0) и (Дг)*2<=г)) {

Д(г+1)= Л(г), 1=0,1,...,1 Г(г+1)= А(г) Дг+1)=г-Дг)

}

иначе

{

Д(г+1)= В1-1(г), 1=0,1,.,1 Г(г+1)= Г(г) Дг+1)=Дг)

}

}

Шаг 4. Расчет многочлена ошибок: от 1=21 до 31-1 с шагом 1

01(21)=^1* Л)(21)+ ^1-1* Л1(21)+.+ ¿0* Л(21)

Шаг 5. Домножение на корректоры: Л(21)= Л(21) * 1с1; 01(21)= 01(21) * 1с1;

Выходы:

Л(21), 1=0,1,...,1

01(21), 1=0,1,., 1-1

На шаге 5 осуществляется домножение вычисленных коэффициентов многочленов локаторов ошибок и значений ошибок на корректоры локаторов ошибок. Для этого используется умножитель, используемый на шаге 2. Это увеличивает количество мультиплексоров, подающих данные на умножители. так как в зависимости от состояния схемы уиножитель должен умножать 4 различных пары операндов (2 пары на шаге 2 и 2 при домножении на корректоры), однако, для рассматриваемых семейств ПЛИС эти мультиплексоры объединяются синтезатором с логикой умножителей и практически не занимают дополнительных элементов. Похожий подход для другой реализации алгоритма Берле-кемпа-Месси, использован в [11], однако, в рамках подхода не выделяется отдельный модуль для вычисления корректоров локаторов, общих для Л(х) и О(х), и не предлагается эффективный метод их вычисления.

2.3. Коррекция ошибок

Простейшим путем нахождения корней многочлена Л(х) является метод проб и ошибок, известный как процедура Ченя. Эта процедура состоит в последовательном вычислении Лр1) для каждого у и проверки полученных значений на нуль. Если величина

Л(а;) равна нулю, то х. = а] является обратным к корню многочлена локаторов ошибок. Так как в ОЕ (" +1) примитивный элемент образует циклическую группу по умножению, порождающую все элементы поля, то а" = а0 = 1, и х. • X. = а] •а-] = а] - а"4 = 1. Тогда многочлен сообщения

"-1

с( х) = 2 С1 - х1

'=0

для полного кода длины n имеет степень старшего члена n-1, чему соответствует локатор X = a n4 и корень многочлена локаторов х = a1. Так как сообщение принимается начиная с символов ci, соответствующих старшему члену c(x), то перебор в процедуре Ченя дол-

1 255

жен начинаться с a и далее до a .

В данной работе были использованы подход и структура, близкие к рассмотренным в [7]. На рис. 6 представлен элемент, реализующий перебор по алгоритму Ченя. В начальный момент времени в регистр по сигналу load, загружается значение i-го коэффициента многочлена локаторов Л(х) ошибок или значений ошибок ш(х). Загруженные значения на каждом такте домножаются на a ' , где i соответствует степени коэффициента в многочлене локаторов.

load

Рис. 6. Элемент перебора.

Структура модуля, реализующего процедуру Ченя, приведена на рис. 7. Модуль, приведенный на рис 6, обозначен как О.

На выходе данной части модуля имеем значение Л (а1) и его формальную производную Л' (а1). Законность вычисления формальной производной таким образом покажет следующая математическая выкладка.

8

Л(х) = 2 Л1 - X ;

1=0

Л'( х) = 8 -Л- х7 + 7 -Л7- х6 + 6 -Л6- х5 + 5 -Л • х4 + 4 -Л4- х3 + 3 -Л3 • х2 + 2 -Л2- х1 + Л = = 7 -Л7- х6 + 5 -Л- х4 + 3 -Л- х2 +Л =Л7- х6 +Л5- х4 +Л3- х2 +Л = 2Л- х1 /х.

1-нечетное !

Но в нашем случае данное значение использовать неудобно, т.к. в алгоритме Форни придется использовать деление на х. Поэтому в модуле, реализующем процедуру Ченя, вместо формальной производной Л (а') сразу вычисляется значение Л (а' )пт1:

Л'(х)„^ =Л'(х) ■ х = £Л' • х'.

¡-нечетное

Ло

А2^а"2к Л4^а"4к

О -К-

Л1 •а"*

С1

л л -8-к

Лб-а Л8-а

1111

С2 С4 С6 С8

Л(а') ,

Л' (а1)

С3 С5 С7

Г т т

Лз^а-3к Л5^а-5к Л7^а-7к

Рис. 7. Модуль, реализующий процедуру Ченя.

На рис. 8 представлена схема, представляющая вторую половину модуля - алгоритм Форни.

Ы2-а

Ы4-а Ыб-а

Ыз-а

Ыо

-> 0

Л (а1) Л' (а1)

С2 С4 С6 С8 1 ,1,

Ы1-а

С1

С3 С5 С7

Т Ыз-а-3к Г Ы5-а-5к т Ы7-а-7-к

Рис. 8. Модуль, реализующий алгоритм Форни.

р

Левая часть схемы структурно повторяет схему реализации процедуры Ченя, в результате чего получаем значение ш(а'). Модуль памяти "ROM инверсия" позволяет заменить деление на формальную производную умножением на ее обратное. В модуле памяти хранится предвычисленная таблица обратных значений. Причиной табличной реализации вычисления обратного является сложность комбинационной реализации функции вычисления обратного в поле Галуа, что может приводить к возникновению критического пути в комбинационной логике. Модуль памяти вносит задержку в 2 такта, поэтому в остальные пути в схеме внесены элементы задержки на один такт, обозначенные символом D.

В случае, если Л (а') имеет нулевое значение, текущая позиция соответствует найденной ошибке и происходит коррекция значения с выходного буфера путем сложения с выходом алгоритма Форни. Таким образом, выходное значение модуля можно описать следующим выражением:

та') та')

С°п-г = СИ-' + ( W = Cn-' +-77ГП ,

Л' (а' U x -Л' (а' j

где n - длина слова, i - номер текущей (обрабатываемой) позиции, с - входной символ.

3. Сравнение результатов

Используем для сравнения функцию декодера Рида-Соломона Reed-Solomon II IP-Core 14.0 и САПР Quartus II 14.0 фирмы Altera. Для синтеза использовалась ПЛИС Altera семейства Cyclone IV EP4CE115F29C7. К сожалению, в современной практике проектирования цифровых схем исходные коды и описание используемых алгоритмов в коммерческих продуктах, как правило, недоступны, поэтому сравнение возможно лишь по объему и быстродействию реализаций. Декодеры были сконфигурированы в соответствии с требованиями стандарта DVB [1,2] для декодирования укороченных кодов, производных от полного кода (255,239,8). Приведем сравнительные таблицы по затрачиваемым ресурсам и быстродействию декодеров (таблица 1).

Таблица 1. Сравнение декодеров

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Декодер Спроектированный Altera

Частота, МГц 146 153

Число логических элементов 2666 2612

Память ОЗУ, биты 6144 5120

Задержка, такты 54 112

Несмотря на то, что декодеры имеют схожий объем и быстродействие, реализованный в данной работе декодер имеет вдвое меньшую задержку от момента подачи последнего символа слова до появления первого символа на выходе. Кроме того, реализованный декодер имеет важное функциональное преимущество перед декодером фирмы Altera - он позволяет обрабатывать слова различной длины в непрерывном потоке, чего не могут делать декодеры фирмы Altera. Декодеру фирмы Altera требуется перерыв между словами

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

В реализованном декодере осушествляется буферизация результов работы алгоритма Берлекэмпа-Месси для нескольких поступивших слов для обеспечения непрерывности обработки данных при прохождении через декодер слов различной длины. Для выполнения требований стандарта EN 301 790 [2], определяющих минимальную и максимальную длину слов, для этого потребовался буфер FIFO глубиной 4 и разрядностью 144 бита, который был реализован на триггерах в логических элементах. Также осуществляется расчет корректоров локаторов, занимающий еще 89 логических элементов.

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

Заключение

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

Список литературы

1. ETSI EN 300 421 Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for 11/12 GHz satellite services. 1997. 24 p.

2. ETSI EN 301 790 Digital Video Broadcasting (DVB); Interaction channel for satellite distribution systems. 2005. 176 p.

3. D. Gorenstein, N. Zierler. A Class of Error Correcting Codes in pAm Symbols // J SIAM. Vol. 9. 1961. Pp. 207-214.

4. Р. Морелос-Сарагоса. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М.: Техносфера, 2006. 320 с.

5. M. Sudan. Decoding of Reed-Solomon Codes Beyond the Error-Correction Bound // Journal of Complexity. 1997. Vol. 13. No.1. Pp. 180-193. DOI: 10.1006/jcom.1997.0439

6. Dilip V. Sarwate, Naresh R. Shanbhag. High-Speed Architectures for Reed-Solomon Decoder // IEEE Transactions on VLSI Systems. 2001. Vol. 9. No. 5. Pp. 641-655.

DOI: 10.1109/92.953498

7. Hanho Lee. High-Speed VLSI Architecture for Parallel Reed-Solomon Decoder // IEEE Transactions on VLSI Systems. 2003. Vol. 11. No. 2. Pp. 288-294.

DOI: 10.1109/TVLSI.2003.810782

8. Федоров С.В. Аппаратная реализация решателя ключевых уравнений Берлекэмпа-Месси для кодов Рида-Соломона на ПЛИС // Наука и Образование. МГТУ им. Н.Э.Баумана. Электрон. журн. 2011. №7. С. 1-11. Режим доступа: http://technomag.bmstu.ru/doc/198028.html (дата обращения: 23.05.2016)

9. Todd K. Moon. Error Correction Coding: Mathematical Methods and Algorithms. Wiley-Interscience, 2005. 759 p.

10. Shin-Lin Shieh, Shuenn-Gi Lee. Wern-Ho Sheen. A low-latency decoder for punctured/shortened Reed-Solomon codes // IEEE 16th International Symposium on Personal, Indoor and Mobile Radio Communications. 2005. Vol. 4. Pp. 2547-2551.

DOI: 10.1109/PIMRC.2005.1651903

11. Hoyoung Yoo, Youngjoo Lee. Low-latency area-efficient decoding architecture for shortened Reed-Solomon codes // SoC Design Conference (ISOCC). 2012. Pp. 223-226. DOI: 10.1109/ISQCC.2012.6407080

Science ¿Education

of the Bauinan MSTU

Science and Education of the Bauman MSTU, 2016, no. 06, pp. 184-199.

DOI: 10.7463/0616.0842221

Received: 13.05.2016

Revised: 27.05.2016

© Bauman Moscow State Technical Unversity

FPGA-based Implementation of a Streaming Decoder for Shortened Reed-Solomon Codes

S.V. Fedorov1'", V.l. Romashkin2, 'Wegwmju

K.M. Vyalyh1

1Bauman Moscow State Technical University, Moscow, Russia 2National Research Centre "Kurchatov Institute", Moscow, Russia

Keywords: codes, error correcting codes, block codes, Reed-Solomon code, BCH codes, FPGA

The traditional approaches to decoding shortened block codes are the padding of received codeword with zeros or correction of the syndrome polynomial values. Such approaches make stream-oriented decoding of continuous input data stream impossible. The paper offers a new technique for decoding the shortened Reed-Solomon codes. Its hardware implementation allows us to provide stream processing, reduce latency in clock cycles, and decrease a required quantity of hardware resources as compared to decoder implementation with padding of received packet with zeros. A distinctive feature of the proposed technique is that the decoder processes a stream of code words of different lengths without changing their structure and insertion of additional delays and that it is possible to use the modules of existing Reed-Solomon decoders for full codeword length. To enable this, a notion of error locator corrector for shortened code is introduced and a technique of their calculation is offered. Error locator correctors are calculated during the reception of a codeword in parallel to syndrome polynomial calculation. Their values allow us to modify the polynomial values of locators and errors at the output of the key equation solver. The paper considers a shortened code decoder that is implemented on the full code decoder modules based on Berlekamp-Massey algorithm, describes architecture of additional modules and required modifications of the algorithm. It shows the way to save hardware resources by using the multipliers in Berlekemp-Massey key equation solver to correct values. The Altera FPGA-based decoder has been tested in and compared to the Reed-Solomon II decoder IP from Altera.

References

1. ETSI EN 300 421 Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for 11/12 GHz satellite services. 1997. 24 p.

2. ETSI EN 301 790 Digital Video Broadcasting (DVB); Interaction channel for satellite distribution systems. 2005. 176 p.

3. D. Gorenstein, N. Zierler. A Class of Error Correcting Codes in pAm Symbols. JSIAM, vol. 9, 1961, pp. 207-214.

4. R. Morelos-Zaragosa. Iskusstvo pomekhoustoychivogo kodirovaniya. Metody, algoritmy, primenenie [The Art of Error-Correcting Coding. Methods, Algorithms, Applications]. Moscow, Technosfera Publ., 2006, 320 p. (in Russian).

5. M. Sudan. Decoding of Reed-Solomon Codes Beyond the Error-Correction Bound. Journal of Complexity, 1997, vol. 13, no.1, pp. 180-193. DOI: 10.1006/jcom.1997.0439

6. Dilip V. Sarwate, Naresh R. Shanbhag. High-Speed Architectures for Reed-Solomon Decoder. IEEE Transactions on VLSI Systems, 2001, vol. 9, no. 5, pp. 641-655.

DOI: 10.1109/92.953498

7. Hanho Lee. High-Speed VLSI Architecture for Parallel Reed-Solomon Decoder. IEEE Transactions on VLSI Systems, 2003, vol. 11, no. 2. pp. 288-294.

DOI: 10.1109/TVLSI.2003.810782

8. Fedorov S.V. Hardware implementation of Berlekamp-Massey key equation solver for ReedSolomon codes in FPGA. Nauka i obrazovanie MGTU im. N.E. Baumana = Science and Education of the Bauman MSTU, 2011, no. 7, pp. 1-11. Available at: http://technomag.bmstu.ru/doc/198028.html (accessed 23.05.2016) (in Russian).

9. Todd K. Moon. Error Correction Coding: Mathematical Methods and Algorithms. Wiley-Interscience, 2005. 759 p.

10. Shin-Lin Shieh, Shuenn-Gi Lee. Wern-Ho Sheen. A low-latency decoder for punctured/shortened Reed-Solomon codes. IEEE 16th International Symposium on Personal, Indoor and Mobile Radio Communications, 2005, Vol.4, pp. 2547-2551.

DOI: 10.1109/PIMRC.2005.1651903

11. Hoyoung Yoo, Youngjoo Lee. Low-latency area-efficient decoding architecture for shortened Reed-Solomon codes. SoCDesign Conference (ISOCC), 2012, pp. 223-226.

DOI: 10.1109/ISQCC.2012.6407080

i Надоели баннеры? Вы всегда можете отключить рекламу.