N96(18)2008
А.Н. Мальчуков, А.Н. Осокин
Реализация системы автоматизированного проектирования кодеков помехоустойчивых кодов короткой длины
Применение помехоустойчивых кодов является одним из эффективных методов обеспечения верности передачи данных. Проектирование кодеков помехоустойчивых кодов в первую очередь связано с определением параметров корректирующего кода, затем по этим параметрам пытаются подобрать более или менее подходящий код, исправляющий ошибки. Параметрами кода являются длина информационного блока и корректирующая способность кода (количество контролирующих символов).
Для исправления независимых ошибок различной кратности широко используются линейные блоковые помехоустойчивые коды (далее — коды) небольшой длины: Хемминга, Рида-Маллера, БЧХ-коды (коды Боуза-Чоудхури-Хоквенге-ма) и др. Для непосредственного выбора помехоустойчивого кода с минимальной избыточностью под конкретные параметры необходимы глубокие знания теории помехоустойчивого кодирования.
Благодаря использованию системы автоматизированного проектирования кодеков значительно ускоряется разработка различных систем промышленной автоматизации и сетей сбора информации.
Сформулируем основные требования, предъявляемые к такой системе.
1. Проектирование конечного кодека должно осуществляться по двум параметрам, которые вводит в систему пользователь:
• длина информационного блока;
• корректирующая способность кода.
2. Система не должна быть требовательна к вычислительным ресурсам.
3. На выходе системы должны быть:
• возможность программной реализации кодека.
4. Используемый код должен иметь минимальную избыточность.
Предлагаемый в данной статье вариант реализации системы удовлетворяет указанным выше требованиям.
Рассмотрим структуру такой системы.
Структура системы проектирования кодеков
Система проектирования кодеков состоит из следующих взаимосвязанных модулей (рис. 1):
Данные пользователя
Модули
Выбор образующего полинома
Реализация кодека
Формирование помехоустойчивого . кода ,
Ж
Проектирование кодека
^--У
Реализация кодека на языке описания аппаратуры УегМод
Параметры кода,
таблицы декодирования
• готовое решение аппаратной реализации кодека; Рис. 1. Структура системы проектирования кодеков
106
№>6(18)2008
1) выбор образующего полинома;
2) формирование помехоустойчивого кода;
3) проектирование кодека;
4) реализация на программируемых логических интегральных схемах (ПЛИС).
В системе используются модифицированные циклические помехоустойчивые коды, в которых процедуры кодирования и декодирования основаны на делении кодового слова на образующий полином по модулю два. Основные отличия данной системы: предъявляемые требования к образующему полиному и небольшая длина кодового слова.
Данные пользователя
В качестве входных данных пользователь вводит (рис. 2) длину информационного блока (количество бит данных, передаваемых в одном кодовом слове) и желаемую корректирующую способность кода (количество исправляемых кодом независимых ошибок).
Ввод данных
Разрядность информационного блока 9
Количество исправляемых ошибок 2
Дальше
Рис. 2. Форма ввода данных пользователя системы
Два параметра, введенные пользователем, поступают на вход модуля выбора образующего полинома.
Модуль выбора образующего полинома
На входе модуля — задаваемые пользователем параметры: разрядность информационной последовательности и желаемая
корректирующая способность кода. Мо- Л дуль работает с файлами данных, в которых ig содержатся заранее найденные и прове- ^ ренные полиномы для различных вариаций ^ пользовательских параметров. |
При формировании файлов предвычис- ^ ленных многочленов использовался автор- J| ский алгоритм поиска образующих полино- ^ мов [1]. Несмотря на то что количество ите- ^ раций алгоритма поиска было существенно сокращено, поиск образующих полиномов остается по-прежнему ресурсоемким процессом. В связи с этим для поиска, результаты которого сведены в табл. 1, использовался суперкомпьютерный кластер «СКИФ-политех».
В табл. 1 на пересечении строк и столбцов указаны образующие полиномы, найденные автором [1]. Полученные результаты сопоставимы с результатами, опубликованными группой разработчиков программы MAGMA (Markus Grassl, Greg White, Damien Fisher) [4].
В итоге на выход модуля поступают выбранный образующий полином и вычисленная длина кодового слова, которые передаются в модуль формирования помехоустойчивого кода.
Модуль формирования помехоустойчивого кода
Основной операцией в процедурах кодирования и декодирования помехоустойчивых кодов системы является нахождение остатков (от деления кодового слова на образующий полином по модулю два). Для увеличения быстродействия кодеков, проектируемых системой, разработан авторский алгоритм матричного деления полиномов в арифметике по модулю два [5], позволяющий быстро вычислять контрольный блок или синдром ошибки. Пример реализации системой блока матричного деления на языке описания аппаратуры Verilog представлен на рис. 3.
Матрица задержек для ПЛИС семейства Flex10k фирмы Altera представлена на рис. 4.
^^v 107
N96(18)2008
Таблица 1
Полиномы, найденные автором
т /1 1 2 3 4
1 111 11111 1111111 111111111
2 1101 1101101 1110110101 1110101110101
3 1101 11001101 11101100101 111010011101001
4 1101 11100101 11101100101 1111000101100101
5 11001 110101001 11101100101 1111000100101101
6 11001 111010001 101101110001 10111000110110001
7 11001 111010001 110001110101 111000101001011001
8 11001 100111001 110001110101 110000111000110101
9 11001 100111001 110001110101 1110000110010010101
10 11001 1100001101 110001110101 1001100001010101101
11 11001 1101000011 110001110101 1000111110010100001
12 110001 1101000011 110001110101 11100001010110000011
13 110001 1101000011 110010101000101 10110001100101001001
14 110001 11000011001 1100001010010101 111001000000100110101
15 110001 11000011001 1100001010010101 111001110001000000101
16 110001 11000011001 1100001010010101 1111011000001000000101
17 101001 11000011001 11000011010000011 1111010000100011000001
18 101001 11000011001 11001000001100101 1110000100011100010001
19 101001 11000011001 110100001000010011 1011100100000001110001
20 101001 11000011001 100110010001100001 11110001000010100001001
21 101001 11000011001 100110010001100001 11001011000100000010101
22 101001 101100001001 100110010001100001 111100100000010001001001
23 101001 101100001001 110010100001100001 111100100000010001001001
24 101001 101100001001 110010100001100001 111010001000100001000011
25 101001 1100010010001 110010100001100001 111010001000100001000011
26 101001 1101010000001 110010100001100001 111010001000100001000011
27 1100001 1100010010001 1100100100010001001 1111001000010010000000011
28 1100001 1010110000001 1101000101000000011 1111001000010010000000011
29 1100001 1010110000001 1101000101000000011 1100110000000010001010011
Примечание. t — количество исправляемых кодом независимых ошибок.
108
№6(18)2008
I
0
эё
ео
1
I
■S3
ай
Рис. 3. Пример реализации системой матричного деления в САПР Altera Max+plusII
Рис. 4. Матрица задержек для схемы матричного деления
109
N96(18)2008
I
I
со о
3
-а §
0 с со
1 I
I
I
0 &
1 £
§
о &
в §
о
€ Й
г! ¡8
£
Рис. 5. Структура кодека
По авторскому алгоритму матричного деления на основании образующего полинома (выбран предыдущим модулем) данный модуль формирует таблицы вычисления остатков от деления, которые будут использоваться в процедурах кодирования и декодирования. На выходе модуля доступен сформированный быстродействующий блок вычисления контрольных разрядов и синдрома ошибок.
Модуль проектирования кодека
Для выбора структуры кодека системы проектирования проведено исследование [6], в результате которого выбрана и формализована структура быстродействующего кодека помехоустойчивых кодов
(на рис. 5 представлена одна из возможных структур реализации). Для окончательной конфигурации кодека модуль генерирует таблицы декодирования.
На выходе модуля доступны все параметры кодека, необходимые для программной реализации. Для аппаратной реализации все вычисленные параметры передаются в модуль реализации на ПЛИС.
Модуль реализации кодека на ПЛИС
На заключительном этапе формируется проект, состоящий из файлов, содержащих программу, описывающую работу кодека на языке описания аппаратуры Verilog (на рис. 6 приведен пример компиляции проек-
110
№6(18)2008
I
0
S
эё ^
ci
1
il ■SS
aë
Рис. 6. Пример компиляции проекта в САПР Max+plusII
а)
Name: Value: С 20.0ns 40.0ns 60.0ns £ 1-1-1-1- 77.1ns 0.0ns 100.0ns 120.0ns 1 1 1
codec clock ip= data fix_data 1 0
11010110 100000000
00000000000000000 3 11010110001001000
b)
Name:
codec clock data ^ fix data
Value- I 260.0ns 280.0ns 300.0ns 320.0ns 340.0
-Ha-1-1-1-'-
11010110011100010 \ 1
Jj 10010100011100010 J
Рис. 7. Моделирование работы кодека в режимах кодирования (а) и декодирования (Ь)
111
Не6(18)2008
'S ê
ï
«
Q
3
-а =s
Si
0
с «
8
il
1
5
i
о
6
g
lg §
о &
8
Si
<3
S
e 8 S
s g
¿S
та). Формируется прошивка для ПЗУ, в которой будут содержаться таблицы декодирования. При генерации конфигурационного файла для ПЗУ применяется метод уменьшения требуемого объема памяти при табличном декодировании. Используется метод, подобный частично-ассоциативной организации кэш-памяти. Затем готовый проект применяют для конфигурирования ПЛИС (на рис. 9 приведены диаграммы задержек в режимах кодирования и декодирования), используя САПР фирмы Altera (Max+plus II, Quartus).
Задержки в режимах кодирования и декодирования равняются 20 и 25 нс соответственно для кристалла EPF10K30ETC144-1 семейства ПЛИС Flex10KE фирмы Altera.
Предлагаемая в статье система позволит инженеру проектировать быстродействующие кодеки помехоустойчивых кодов [6] без углубленных знаний в области помехоустойчивого кодирования по двум параметрам (длина информационного блока, корректирующая способность кода). На выходе системы доступны данные как для программной, так и для аппаратной реализации. В качестве аппаратной реализации формируются проектные файлы для конфигурирования ПЛИС фирмы Altera.
Помехоустойчивые кодеки, проектируемые системой, имеют следующие особенности:
• быстродействие (кодирование 20 нс, декодирование 25 нс при длине кодового слова, равной 2 байтам);
• длина кодового слова меньше, чем у БЧХ-кодов для случаев t =2, m = {1-4, 8-13, 22-24}, для t =3, m = {2, 6-13, 17-26} и для t=4, m = {1-26};
• возможность работать с данными при параллельном способе передаче (за счет блока матричного деления);
• исправление пакетов ошибок в дополнение к исправлению независимых ошибок;
• сигнализация о нахождении неисправимой ошибки.
Требования к системе:
система
Windows
• операционная 95/98/2000/XP/Vista;
• 441 кб на жестком диске;
• 7 Мб оперативной памяти;
Авторы благодарят администрацию суперкомпьютерного кластера «СКИФ-политех» за содействие при проведении расчетов.
Работа выполнена на кафедре вычислительной техники института «Кибернетический центр» Томский политехнический университет и поддержана грантом «У.М.Н.И.К.» Фонда содействия развитию малых форм предприятий в научно-технической сфере.
Список литературы
1. Мальчуков А.Н. Алгоритм поиска образующих полиномов для системы проектирования кодеков помехоустойчивых кодов // Сб. трудов 13-й международной научно-практической конференции студентов, аспирантов и молодых ученых «Современные техника и технологии». Томск: изд-во ТПУ, 2008 (в печати).
2. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М.: Техносфера, 2005.
3. Мак-Вильямс Ф.Дж, Слоэн Н.Дж.А. Теория кодов, исправляющих ошибки. Пер. с англ. И. И. Грушко, В. А. Зиновьева. М.: Связь, 1979.
4. Markus Grassl. On-line Tables of linear Codes. http://www.codetables.de
5. Буркатовская Ю.Б., Мальчуков А.Н., Осо-кин А.Н. Быстродействующие алгоритмы деления полиномов в арифметике по модулю два // Известия Томского политехнического университета. 2006. T. 309. № 1. С. 19-24.
6. Буркатовская Ю.Б., Мальчуков А.Н., Осо-кин А.Н. Быстродействующий кодек БЧХ-кодов на ПЛИС // Приборы и системы. Управление. Контроль. Диагностика. 2006. № 3. С. 21-23.
112