Научная статья на тему 'РЕАЛИЗАЦИЯ КОДА РИДА-СОЛОМОНА ДЛЯ ТЕЛЕКОММУНИКАЦИОННЫХ ПРОТОКОЛОВ ПОСРЕДСТВОМ АППАРАТНОГО СИНТЕЗА НА КРИСТАЛЛЕ ПЛИС'

РЕАЛИЗАЦИЯ КОДА РИДА-СОЛОМОНА ДЛЯ ТЕЛЕКОММУНИКАЦИОННЫХ ПРОТОКОЛОВ ПОСРЕДСТВОМ АППАРАТНОГО СИНТЕЗА НА КРИСТАЛЛЕ ПЛИС Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
139
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПЛИС / КОД РИДА-СОЛОМОНА / КОДЕР / ДЕКОДЕР / КОРРЕКЦИЯ ОШИБОК / КОРРЕКЦИЯ СТЕРТЫХ СИМВОЛОВ / FPGA / REED-SOLOMON CODEC / STANDARD CODER / VARIABLE DECODER / ERASURES CODER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Смирнов Михаил Станиславович

Проведен анализ возможности реализации кодеков на основе кода Рида-Соломона посредством аппаратного синтеза на кристалле ПЛИС компании Altera. Проведен синтез стандартного и переменного кодера и декодера с коррекцией ошибок.The designing Reed-Solomon code for special telecommunication protocols. synthesis Reed-Solomon codec in Altera Cyclone III FPGA family.

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

Текст научной работы на тему «РЕАЛИЗАЦИЯ КОДА РИДА-СОЛОМОНА ДЛЯ ТЕЛЕКОММУНИКАЦИОННЫХ ПРОТОКОЛОВ ПОСРЕДСТВОМ АППАРАТНОГО СИНТЕЗА НА КРИСТАЛЛЕ ПЛИС»

УДК 621.3.09; 612.396.94

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

Смирнов М.С.

Проведен анализ возможности реализации кодеков на основе кода Рида-Соломона посредством аппаратного синтеза на кристалле ПЛИС компании Altera. Проведен синтез стандартного и переменного кодера и декодера с коррекцией ошибок.

Ключевые слова: ПЛИС, код Рида-Соломона, кодер, декодер, коррекция ошибок, коррекция стертых символов.

Введение

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

- беспроводные или мобильные коммуникации (включая сотовые телефоны, микроволновые каналы и т.д.);

- спутниковые коммуникации;

- цифровое телевидение;

- скоростные модемы, такие, как ADSL, xDSL и т.д.[1]

Постановка задачи

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

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

Коды Рида-Соломона описываются значениями (N, K), где N - общее число символов в слове; K - число информационных символов. Параметр R - количество проверочных символов (N-K). Ошибки определяются на уровне символов. Любое количество

бит ошибок в символе определяет только одну ошибку.

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

Максимальное количество элементов в слове ограничено значением размером конечного поля 2т-1. Например, при кодировании символов 10 битами получаем 1023 символов в слове. Полином для генерирования кода Рида-Соломона выглядит следующим образом:

£ (х )=П (х )

1=0

где 70 - первый корень полинома; 7 - область корней полинома; Я - количество проверочных символов; а - корни полинома.

Количество ошибок С, которые могут быть исправлены, зависит от количества проверочных символов, и определяется значением С < Я/2.

Если символ кода помечен как стертый, то декодер способен вдвое увеличить количество исправляемых ошибок, соответственно С < Я. Таким образом, код может исправлять все комбинации из стираний и ошибок в кодовой комбинации, если выполняется условие (2е + Е) < Я, где е - ошибки с неизвестной локализацией, Е - стертые символы, Я -количество проверочных символов.

Например, при наличии десяти проверочных символов в слове можно исправить 10 стертых символов или 5 ошибочных символов, или 4 стертых символа и 3 ошибочных символа.

Укороченные коды

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

К примеру, для последовательности из 255239 символов укороченный код будет содержать 204188. Однако оба кодовых слова будут содержать одинаковое количество проверочных символов - 16.

Реализация кодирования и декодирования

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

Кодирование

Временная диаграмма кодирования, полученная при помощи программы моделирования Model-Sim, приведена на рис. 1.

Сигнал sink_sop начинает кодирование данных; сигнал sink_eop прекращает кодиро-

вание. Подтверждающий сигнал sink_val фиксирует правильность данных.

Сигнал sink_val выставляется и снимается через один такт с сигналом sink_ena.

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

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

Временная диаграмма декодирования, полученная при помощи программы моделирования Model-Sim, приведена на рис. 2.

Декодер внутри ПЛИС реализуется при помощи трехступенчатого конвейера на основе шины Avalon-ST. Декодер способен принимать кодированные слова на каждом импульсе тактового генератора. Задержка между входом и выходом данных не зависит от готовности входных данных и составляет три кодовых слова.

Сигнал reset срабатывает по высокому уровню и может быть выставлен асинхронно. Декодер постоянно декодирует и исправляет ошибки, если их количество не превышает значение R/2. Если количеств ошибок находится в диапазоне от RJ2 до R, то декодер только фиксирует наличие ошибки без исправления. При увеличении ошибок свыше величины R декодер перестает определять ошибки в коде.

с"< П_П_Т1_П_Г1_Г1_П_n_Jn_J L! LT1_J LTlJn_n_TLn_in_TU LTl_Jn_TLTlJn_TU Lin_TLTl_Jn_n_J

sink_ena sink_val sink_sop sink_eop rsin[8:1] source_ena source_val source_sop source_eop rsout[8:1]

Рис. 1. Кодирование Рида-Соломона

elk [ sink_ena sink_val sink_sop sink_eop rsin[8:1]'

source_ena source_val source_sop" source_eop rsout[8:1] numcheck[4:1] ( numn[4:1] {

J

/ \ /

Л \ 4 /1

/ \ I

A \!

X i 3 4 Щ 1 2XiP|

1

1 \

J

п

>i h ш в ВС я я ж н в в X I ш

( q 5 1 t q 5 И

( X 1 1:3 *

Рис. 2. Декодирование Рида-Соломона Декодер Рида-Соломона использует интерфейс шины Луа1оп-8Т для входных и выходных данных. Минимум через один такт после сигнала 8тк_епа выставляется сигнал 8тк_уа1. Декодер принимает данные из массива гап. Кодовое слово поступает при инициализации сигнала 8тк_8ор. Сигналы пит-еЬеок и питп фиксируют сигнал 8тк_8ор. Окончание приема кодовых слов происходит после сигнала 8тк_еор. Если 8тк_епа устанавливается в ноль, через один такт декодер прекращает обработку до тех пор, пока сигнал не установится в единицу.

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

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

При коррекции ошибок определяются сим-

Производительность кодирования Рида-Соломона

Реализация кода производилась на ПЛИС семейства Cyclone III (EP3C10F256C6).

Расчет производительности делался на основе размера ключевого слова и количества логических элементов, используемых при реализации кодеков.

Таблица 1. Производительность кодирования Рида-Соломона на кристалле EP3C10F256C6

Тип кодека Бит в символе N символов R символов /тах(МГц) Произв-ть (Мбит/с)

Стандартный декодер 4 15 6 230 213

Стандартный декодер 8 204 16 202 1613

Побитный декодер ошибки 8 204 16 194 1552

Словарный декодер ошибки 8 204 16 190 1519

Стандартный декодер 8 255 32 193 1213

Переменный декодер 8 204 16 202 1620

Декодер стирания 8 204 16 188 1500

Переменный декодер стирания 8 204 16 171 1527

Стандартный кодер 8 204 16 324 2593

Стандартный кодер 8 204 16 237 1897

Переменный кодер 8 204 32 227 1813

Счетчик ошибочных бит

Декодер способен определить количество ошибочных бит в символе потока данных.

Счетчик ошибочных бит работает в двух возможных режимах:

- общий режим - декодер считает общее количество исправленных ошибок, в потоке данных;

- раздельный режим - декодер отдельно считает количество исправлений с 0 на 1 и количество исправлений с 1 на 0.

Литература

1. Питерсон, У. Коды, исправляющие ошибки / У. Питерсон, Э. Уэлдон. - М.: Мир, 1976. -596 с.

2. Блейхут, Р. Теория и практика кодов, контролирующих ошибки / Р. Блейхут.- Theory and Practice of Error Control Codes. - М.: Мир, 1986. -576 с.

3. Берлекэмп, Э. Алгебраическая теория кодирования / Э. Берлекэмп. - Algebraic Coding Theory. - М.: Мир, 1971. - 478 с.

Работа выполнена при поддержке гранта РФФИ№11-07-97503-р_центр_а. Поступила 11 июня 2011 г.

The designing Reed-Solomon code for special telecommunication protocols. Synthesis Reed-Solomon codec in Altera Cyclone III FPGA family.

Key words: FPGA, Reed-Solomon codec, standard coder, variable decoder, erasures coder.

Смирнов Михаил Станиславович - старший преподаватель кафедры радиотехники Муромского института (филиала) Государственного образовательного учреждения высшего профессионального образования «Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевича Столетовых». E-mail: srv777@mail.ru.

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