2008
Доклады БГУИР
январь- март
№ 1 (31)
УДК 621.391.(075.8)
КОНТРОЛЬ МОДУЛЬНЫХ СТИРАНИЙ КОРРЕКТИРУЮЩИМИ КОДАМИ
ФАМ ХАК ХОАН, В.К. КОНОПЕЛЬКО
Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь
Поступила в редакцию 4 октября 2007
Предложены метод и устройство декодирования для контроля модульных стираний с высоким быстродействием на основе ПЗУ и сумматоров. Приводится анализ аппаратурных и временных затрат на реализацию предложенного декодера.
Ключевые слова: контроль, коррекция стирания, модульные ошибки, вектор согласования, коды БЧХ, РС, декодер.
Введение
На практике в пакетных сетях, в запоминающих устройствах и во многих других системах передачи и хранения информаций появляются стертые символы — разряды с известными позициями, но не известными состояниями. Известно, что код с кодовым расстоянием й позволяет исправить р стираний, для которых р<й-1. Наличие дополнительной информации о местонахождении стертых разрядов позволяет в два раза эффективнее использовать корректирующие возможности кодов [1]. Как правило, исправление стираний осуществляется с помощью модифицированного итеративного алгоритма Берлекэмпа-Месси для исправления ошибок БЧХ, Рида-Соломона (РС) кодами, приводящее к высокой сложности и низкому быстродействию декодера [2]. Ниже рассматриваются эффективный метод коррекции стираний и быстродействующий декодер для коррекции многократных модульных стираний.
Метод коррекции многократных модульных стираний путем сравнения вычисленного синдрома с синдромами всевозможных ошибок в стертых модулях
Известно, что для линейных кодов ошибке в 7-й позиции кодового слова соответствует синдром, образованный 7-м столбцом проверочной матрицы, а при появлении многократных ошибок синдром равен сумме соответствующих синдромов, образованных теми столбцами, где произошли ошибки. Это можно использовать для разработки быстродействующего алгоритма исправления стираний. В [3] рассматривается эффективный метод исправления многократных случайных стираний, основанный на использовании вычисленного синдрома 8 и сумм составляющих одиночных синдромов всевозможных стираний. По аналогии можно построить метод и для исправления модульных стираний.
Согласно символам принятого слова Ап вычисляется синдром:
8=АП* Нт. (1)
В соответствии с позициями р стертых модулей длины Ь составляется подматрица стираний Се размерности гхЬ р, которая содержит столбцы проверочной матрицы кода Н
с номерами, равными номерам позиций стертых модулей. Обозначим вектор согласования стираний юЬр — вектор строки с Ь-р элементами, >й элемент соответствует ьй слева стертой позиции и равен нулю, если значение этой позиции у принятого слова совпадает с правильным значением кодового слова и равен единице в противном случае. Составляется система линейных уравнений:
Юьр Ce —Si
(2)
Сущность метода коррекции модульных стираний состоит в нахождении вектора согласования шЬр в стертых модулях на основе сравнения всевозможных сумм синдромов, соответствующих одиночным модульным стираниям с вычисленным синдромом S. Декодирование осуществляется по следующему правилу:
1. Вычисляется синдром S—An HT (блок вычисления синдрома — БВС).
2. Формируются всевозможные синдромы в каждом модуле (блок ПЗУ).
3. Формируются всевозможные суммы синдромов в стертых модулях.
4. Производится сравнение Ss=S.
5. По совпадению Ss с S формируется вектор согласования стираний шЬр.
6. Формируется вектор стираний En.
7. Осуществляется коррекция принятого слова An—An +En.
На рис. 1 приведен алгоритм декодирования двукратных модульных стираний.
Рис. 1. Алгоритм декодирования двукратных модульных стираний
Рассмотрим в качестве примера исправление модульных стираний кодом Рида-Соломона (27, 21) с Ь=3, задаваемым проверочной матрицей:
я
" 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 1 0 0 0 1 001 1 0 1 0 1 0 010 0 1 1 1 0 1 _________ 111 0 1 1 го""ГТ 110 111 111 1 0 0 110 110 0 0 1 1 0 0
Данный код позволяет исправлять два модульных стираний. Предположим, что стертыми являются второй и третий модули. Обозначим вектор согласования стираний в модулях ю=(ю1 ю2)=(еЛ е3\ еД е22, е32), тогда получим следующую систему уравнения:
(0>1 Ю2>
=(еД е21, ез1, е12, е22, ез2) •
1 0 0 0 1 0
0 1 0 0 0 1
0 0 1 1 1 0
1 0 0 0 0 1
0 1 0 1 1 0
0 0 1 0 1 1
=^Ь S2, Sз, S4, S5, вб).
(4)
Решение (со1 ю2)=(е11, е21, е31, е12, е22, е32) системы уравнений (4) можно найти следующим образом. Вначале поставляем ю1=(000), вычисляем 81=ю1 Се1т и пробегаются все возможные значения ю2=(000), (001), ..., (111). Для каждого значения ю2 вычисляется 82=ю2 Се2т и производится сравнение (8^82)=8. При совпадении 82 с 8 находится вектор согласования стираний ю=(ю1 ш2). Если для всех 2Ъ всевозможных значений ш2, но ^+8^8, то ю1 увеличивается на единицу и повторяется описанная выше процедура до тех пор, пока не выполнится равенство (8^82)=8. Одна из возможных реализаций предложенного алгоритма для коррекции модульных стираний приведена на рис. 2.
Рис. 2. Структурная схема декодера исправления многократных модульных стираний
В соответствии с адресами стертых модулей, хранимых в регистре стираний, находятся синдромы всевозможных ошибок, хранимых в ПЗУ синдромов, размерность каждого из которых равна г. В блоке формирования 82 всевозможные суммы этих синдромов формируются на сумматорах по модулю два в зависимости от состояния вектора согласования юЬр. Затем эти суммы сравниваются с вычисленным синдромом. При совпадении 8^ с синдромом 8 (8^=8) на выходе блока сравнения установится сигнал, по которому сформируется вектор согласования стираний юЪр.
По сравнению с исправлением р случайных стираний, где вектор согласования стираний имеет р элементов, при исправлении р-кратных модульных стираний вектор согласования стираний содержит Ь-р элементов. Поэтому для исправления р модулей стираний длины Ь необходимо хранить в ПЗУ Ь-р-разрядных векторов и выполнять 2Ър суммирований Ь-р-разрядных векторов и 2Ър сравнений всевозможных сумм 8^ с 8. С увеличением кратности корректируе-
I
6
мых модулей возрастает экспоненциально сложность декодера. Уменьшение сложности можно достичь путем блочного построения декодера.
На рис. 3 приведена функциональная схема блочного декодера для коррекции двукратных модульных стираний, позволяющего уменьшить вычисленные затраты.
Рис. 3. Блочный декодер для коррекции двукратных модульных стираний
Декодер работает следующим образом. Информация о местоположениях стертых модулей записывается в 1-м и 2-м регистрах адресов стираний. Сигналы из выходов двух регистров стираний поступают на входы соответствующих ПЗУ в качестве стробирующих сигналов. В 1-м, 2-м ПЗУ хранятся всевозможные синдромы одиночных модульных стираний соответственно. В зависимости от сигнала ю1 из выхода первого счетчика на одном из выходов 1-го ПЗУ появляется им соответствующий синдром, который поступает на первый вход многоразрядного сумматора по модулю два. По аналогии в зависимости сигнала ю2 соответствующий синдром поступает на второй вход сумматора. Сигнал из выхода сумматора сравнивается с вычисленным синдромом 8. При совпадении входов блока сравнения на его выходе появляется сигнал лог. "1", который закроет одновременно первый и второй счетчики. При этом соответствующие сигналы и ю2 поступают в 1-й, 2-й блоки элементов "И", на вторые входы которых поступают сигналы из выходов 1-го, 2-го регистров адресов стираний. В результате этого на выходах блоков элементов "И" образуется сигнал вектора стираний Еп, который скорректирует искаженные
А *
разряды в модулях принятого слова Ап .
Оценка эффективности предложенного метода
Анализ сложности декодера для коррекции двукратных модульных стираний показывает, что основные затраты связаны с реализацией ПЗУ синдромов. В зависимости от длины кода п=Ь-1 и длины модуля Ь аппаратные затраты на реализацию ПЗУ синдромов равны Q=2•/•2Ьr=2•/•2Ь•2Ь=4•n 2Ь ячеек памяти.
При росте кратности корректируемых модулей емкость ПЗУ увеличивается. В таблице приведена сложность ПЗУ декодеров для коррекции модульных стираний для различных длин кода п и длин модуля Ь.
Сложность ПЗУ синдромов при коррекции модульных стираний
п=64, Ь=4 п=2048, Ь=8
р=2 4 кбит 2 Мбит
р=3 9 кбит 4,5 Мбит
р=4 16 кбит 8 Мбит
Анализ данных в таблице показывает, что при коррекции модульных стираний одной и той тоже кратности сложность декодера, определяемая сложностью ПЗУ, растет экспоненциально длине модуля Ь, а при одной и той тоже длине модуля Ь — пропорционально квадрату кратности корректируемых модулей р.
Для подбора всевозможных векторов ю=(юь ю2) в наихудшем случае требуется 22Ь тактов. В рассмотренном примере при использовании кода (27, 21) для коррекции двух модульных стираний потребуется 64 такта (отметим, что при декодировании циклических РС-кодов, число тактов как минимум равно 2п).
Предложенный метод можно использовать и для коррекции модульных стираний большей кратности. Декодер для коррекции р модульных стираний аналогичен декодеру на рис. 3, но требуется р регистров стираний и р счетчиков для формирования шь ш2, ..., юр; р ПЗУ; р-разрядный сумматор для вычисления сумм р блоков элементов "И". При этом сложность ПЗУ декодера равна:
Q=^•2b•r•р=n•2Ь•р2. (5)
Из этого следует, что при одинаковой длине кода п и длине модуля Ь сложность декодера растет примерно пропорционально квадрату кратности стираний. На рис. 4 приведены зависимости сложности декодера для исправления многократных модульных стираний от п, Ь и р.
Сравнение сложности коррекции многократных модульных ошибок с коррекцией многократных модульных стираний показывает, что например, РС-код длиной п=30, Ь=5 и d=5, позволяет корректировать двукратные модульные ошибки (ро=2), необходимости селектирования 2Г=220 различных синдромов ошибок. При использовании норменного метода для коррекции двукратных ошибок реализация селектора декодера требует шесть вентильных матриц емкостью 450 бит (0,5 п2) каждая для вычисления норм синдрома, пять вентильных матриц емкостью 450 бит каждая для совпадения норм и выходной вентильной матрицы емкостью 900 бит, т.е., суммарная сложность декодера примерно равна 6 кбит [4]. Предложенный же декодер для коррекции двукратных модульных стираний (при р=2 и Ь=5) требует ПЗУ емкостью Q=3,75 кбит, а при коррекции четырех модульных стираний (при р=4 и Ь=5) — ПЗУ емкостью Q=15 Кбит. Это говорит о том, что рассмотренный декодер для коррекции четырехкратных модульных стираний требует аппаратных затрат, соизмеримых с затратами на реализацию декодера для коррекции двукратных модульных ошибок.
—е— п = 10, Ь = 2
—В— п ■= 27, Ь ~ Э
- [>■■ п = 64. b = 4
—»—п = 175, Ь— 5
—*—п = ЛК.Ь=6
■-е- ■ л = 931, Ь = 7
—1—п = 2ШВ. Ь=8
б
Рис. 4. Зависимости сложности декодера: а — от кратности стираний р и б — от длины модуля Ь
С увеличением длины кода п сложность декодера для коррекции модульных ошибок растет пропорционально п2 и резко увеличивается при повышении кратности корректируемых модульных ошибок. Сложность же предложенного декодера растет примерно пропорционально квадрату кратности модульных стираний.
Заключение
Проведенное исследование показало, что исправление модульных стираний большей кратности р и длины модуля Ь требует значительных временных затрат, но не зависит от длины кода, как у циклических РС-кодов. Метод исправления модульных стираний на основании нахождения вектора согласования стираний в модулях позволяет разработать быстродействующий декодер с приемлемой сложностью. При увеличении кратности корректируемых модулей стираний предложенный декодер может наращиваться путем увеличения числа однотипных функциональных блоков.
CONTROL MODULAR ERASURES BY ERROR-CORRECTION CODES
PHAM KHAC HOAN, V.K. KONOPELKO Abstract
The method and decoding device for control modular erasures with high speed processing based on ROM and adder are proposed in this article. The hardware and time costs for realization of proposed decoder are analyzed.
Литература
1. Теория прикладного кодирования. / Под ред. В.К. Конопелько. Мн., 2004, Т. 2.
2. Блейхут Р. Теория и практика кодов, контролирующих ошибок. М., 1986.
3. ФамХакХоан, Конопелько В.К. // Докл. БГУИР. 2006. № 6. С. 19-22.
4. В.К. Конопелько, В.А. Липницкий. Теория норм синдромов и перестановочное декодирование помехоустойчивых кодов. М., 2004.