Устройство декодирования произведений кодов Рида-Соломона
DEVICE FOR DECODING REED-SOLOMON PRODUCT CODES

ОБЛАСТЬ ТЕХНИКИ
Изобретение относится к системам телекоммуникаций и вычислительной техники и может найти применение в устройствах записи, хранения и воспроизведения информации с высоким уровнем ошибок, в том числе в накопителях оптических дисков DVD.
УРОВЕНЬ ТЕХНИКИ
В настоящее время на практике используются устройства декодирования произведений кодов Рида-Соломона (РС-кодов), использующие классические алгоритмы декодирования (Беплекэмпа-Месси, Евклида) компонентных кодов Рида-Соломона.
Известно устройство декодирования произведений кодов Рида-Соломона, реализующее итеративное декодирование [Патент 5920578 США МПК Н03М 13/00]. Устройство содержит: блок кодирования и вычисления синдромов, блок коррекции ошибок, блок вычисления и проверки CRC.
Недостатком данного устройства является сложность обеспечения потокового режима работы, обусловленная выполнением всех итераций декодирования на одном и том же оборудовании.
Известно устройство декодирования многомерных кодов-произведений, реализующее итеративное декодирование [US 2011/0214039 А1, опубл. 01.09.2011, Н03М 13/03, 36 л.]. Устройство содержит K (K - число измерений) декодеров компонентных кодов, соединенных друг с другом по кольцевой схеме.
Недостатком данного устройства является сложность обеспечения потокового режима работы, обусловленная выполнением всех N итераций декодирования на K декодерах компонентных кодов (N>K).
Наиболее близким по технической сущности к заявляемому изобретению является выбранное в качестве прототипа устройство декодирования произведений кодов Рида-Соломона [Патент 1104114 ЕР МПК Н03М 13/29], используемых в накопителях DVD. Устройство прототип содержит: буферную память; схемы коррекции; блоки вычисления синдромов горизонтальных и вертикальных кодовых слов; блоки, реализующие алгоритм Евклида; блоки, выполняющие процедуру поиска Ченя.
Устройство-прототип сначала исправляет ошибки в горизонтальных кодовых словах, затем исправляет ошибки в вертикальных.
Недостатком прототипа является недостаточно высокая эффективность коррекции ошибок, обусловленное однократной обработкой горизонтальных и вертикальных кодовых слов.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Технической задачей изобретения является повышение эффективности коррекции ошибок без снижения пропускной способности устройства путем увеличения числа итераций декодирования горизонтальных и вертикальных кодовых слов и выполнением каждой итерации отдельным декодером.
Поставленная техническая задача решается тем, что в устройство декодирования произведения кодов Рида-Соломона, содержащее первый декодер, причем вход первого декодера является входом символов данных устройства декодирования произведения кодов Рида-Соломона, причем первый декодер содержит буферную память первого декодера, первый сумматор элементов поля Галуа первого декодера, второй сумматор элементов поля Галуа первого декодера, блок вычисления синдромов горизонтальных кодовых слов, введены второй декодер, …, N-ый декодер, причем первый выход первого декодера подключается к первому входу второго декодера, второй выход первого декодера подключается ко второму входу второго декодера, третий выход первого декодера подключается к третьему входу второго декодера, четвертый выход первого декодера подключается к четвертому входу второго декодера, пятый выход первого декодера подключается к пятому входу второго декодера, шестой выход первого декодера подключается к шестому входу второго декодера, первый выход каждого декодера подключается к первому входу следующего декодера, второй выход каждого декодера подключается ко второму входу следующего декодера, третий выход каждого декодера подключается к третьему входу следующего декодера, четвертый выход каждого декодера подключается к четвертому входу следующего декодера, пятый выход каждого декодера подключается к пятому входу следующего декодера, шестой выход каждого декодера подключается к шестому входу следующего декодера, первый выход N-ого декодера является выходом данных устройства декодирования произведения кодов Рида-Соломона, причем в первый декодер введены блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера, блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера, блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера, блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, блок вычисления и хранения синдромов вертикальных кодовых слов, блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера, блок нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера, блок хранения значений ошибок вертикальных кодовых слов первого декодера, причем вход буферной памяти первого декодера, вход блока вычисления синдромов горизонтальных кодовых слов и вход блока вычисления и хранения синдромов вертикальных кодовых слов является входом символов данных устройства декодирования произведения кодов Рида-Соломона, выход буферной памяти первого декодера соединен с первым входом первого сумматора элементов поля Галуа первого декодера, выход блока вычисления синдромов горизонтальных кодовых слов соединен с первым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, выход блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера соединен с входом блока вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера и с первым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера, первый выход блока вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера соединен со вторым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера, второй выход блока вычисления полиномов локаторов и значений ошибок первого декодера соединен с третьим входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера, первый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера является вторым выходом первого декодера, второй выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера соединен со вторым входом первого сумматора элементов поля Галуа первого декодера и со вторым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, третий выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера соединен с первым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, четвертый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера является четвертым выходом первого декодера, пятый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера является третьим выходом первого декодера, выход блока вычисления и хранения синдромов вертикальных кодовых слов соединен с входом блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера и с третьим входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера, первый выход блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен с первым входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера, второй выход блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен со вторым входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера, первый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен с первым входом блока вычисления значений модификаций горизонтальных кодовых слов первого декодера, второй выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен с третьим входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, третий выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен с четвертым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера и со вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера, четвертый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера соединен со вторым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера и со вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера, пятый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера является шестым выходом первого декодера, выход блока хранения значений ошибок вертикальных кодовых слов первого декодера соединен со вторым входом второго сумматора элементов поля Галуа первого декодера, выход блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера соединен со вторым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, выход блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера является пятым выходом первого декодера, выход первого сумматора элементов поля Галуа первого декодера соединен с первым входом второго сумматора элементов поля Галуа первого декодера, выход второго сумматора элементов поля Галуа первого декодера является первым выходом первого декодера, причем второй и последующие декодеры идентичны первому декодеру, за исключением того, что во втором и последующих декодерах отсутствует блок вычисления синдромов горизонтальных кодовых слов, причем первый вход блока хранения и модификации синдромов горизонтальных кодовых слов второго и последующих декодеров является вторым входом второго и последующих декодеров, а также блок вычисления и хранения синдромов вертикальных кодовых слов заменен на блок хранения и модификации синдромов вертикальных кодовых слов, причем первый вход блока хранения и модификации синдромов вертикальных кодовых слов второго и последующих декодеров является четвертым входом второго и последующих декодеров, второй вход блока хранения и модификации синдромов вертикальных кодовых слов второго и последующих декодеров является третьим входом второго и последующих декодеров, третий вход блока хранения и модификации синдромов вертикальных кодовых слов второго и последующих декодеров является пятым входом второго и последующих декодеров, четвертый вход блока хранения и модификации синдромов вертикальных кодовых слов второго и последующих декодеров является шестым входом второго и последующих декодеров, выход блока хранения и модификации синдромов вертикальных кодовых слов второго и последующих декодеров соединен с входом блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов второго и последующих декодеров и с третьим входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов второго и последующих декодеров.
причем блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера содержит третий сумматор элементов поля Галуа, первый коммутатор, первый блок памяти с произвольным доступом, второй коммутатор, третий коммутатор, второй блок памяти с произвольным доступом, четвертый коммутатор, первый счетчик, причем второй вход третьего сумматора элементов поля Галуа является вторым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, выход третьего сумматора элементов поля Галуа соединен с первым входом первого коммутатора и со вторым входом третьего коммутатора, второй вход первого коммутатора и первый вход третьего коммутатора является первым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, третий вход первого коммутатора и четвертый вход третьего коммутатора является четвертым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, пятый вход первого коммутатора и шестой вход третьего коммутатора являются третьим входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, на восьмой вход первого коммутатора, седьмой вход третьего коммутатора и вход первого счетчика подается управляющий сигнал разрешения записи синдрома блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, на десятый вход первого коммутатора и девятый вход третьего коммутатора подается управляющий сигнал разрешения чтения синдрома блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, на одиннадцатый вход первого коммутатора, третий вход второго коммутатора, одиннадцатый вход третьего коммутатора и третий вход четвертого коммутатора подается управляющий сигнал, переключающий режимы работы блоков памяти с произвольным доступом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, на седьмой вход первого коммутатора и восьмой вход третьего коммутатора подается управляющий сигнал разрешения записи модифицированного синдрома блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, на девятый вход первого коммутатора и десятый вход третьего коммутатора подается управляющий сигнал разрешения чтения модифицированного синдрома блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера, выход первого счетчика соединен с четвертым и шестым входами первого коммутатора, с третьим и пятым входами третьего коммутатора, первый выход первого коммутатора соединен с первым входом первого блока памяти с произвольным доступом, второй выход первого коммутатора соединен со вторым входом первого блока памяти с произвольным доступом, третий выход первого коммутатора соединен с третьим входом первого блока памяти с произвольным доступом, четвертый выход первого коммутатора соединен с четвертым входом первого блока памяти с произвольным доступом, пятый выход первого коммутатора соединен с пятым входом первого блока памяти с произвольным доступом, выход первого блока памяти с произвольным доступом соединен с первым входом второго коммутатора и со вторым входом четвертого коммутатора, выход второго коммутатора соединен с первым входом третьего сумматора элементов поля Галуа, первый выход третьего коммутатора соединен с первым входом второго блока памяти с произвольным доступом, второй выход третьего коммутатора соединен со вторым входом второго блока памяти с произвольным доступом, третий выход третьего коммутатора соединен с третьим входом второго блока памяти с произвольным доступом, четвертый выход третьего коммутатора соединен с четвертым входом второго блока памяти с произвольным доступом, пятый выход третьего коммутатора соединен с пятым входом второго блока памяти с произвольным доступом, выход второго блока памяти с произвольным доступом соединен со вторым входом второго коммутатора и с первым входом четвертого коммутатора, выход четвертого коммутатора является выходом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера.
причем блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера содержит первый перемножитель элементов поля Галуа, первый квадратор, второй перемножитель элементов поля Галуа, третий перемножитель элементов поля Галуа, четвертый перемножитель элементов поля Галуа, второй квадратор, пятый перемножитель элементов поля Галуа, шестой перемножитель элементов поля Галуа, седьмой перемножитель элементов поля Галуа, третий квадратор, восьмой перемножитель элементов поля Галуа, девятый перемножитель элементов поля Галуа, десятый перемножитель элементов поля Галуа, четвертый квадратор, одиннадцатый перемножитель элементов поля Галуа, двенадцатый перемножитель элементов поля Галуа, тринадцатый перемножитель элементов поля Галуа, причем первые входы первого, второго, четвертого, пятого, седьмого, восьмого, десятого, одиннадцатого и тринадцатого перемножителей элементов поля Галуа являются вторым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, второй вход первого перемножителя элементов поля Галуа, вход первого квадратора и первый вход третьего перемножителя элементов поля Галуа являются первым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход первого квадратора соединен со вторым входом второго перемножителя элементов поля Галуа, со вторым входом третьего перемножителя элементов поля Галуа, с входом второго квадратора и со вторым входом шестого перемножителя элементов поля Галуа, выход третьего перемножителя элементов поля Галуа соединен со вторым входом четвертого перемножителя элементов поля Галуа, с входом третьего квадратора, с первым входом шестого перемножителя элементов поля Галуа и с первым входом девятого перемножителя элементов поля Галуа, выход второго квадратора соединен со вторым входом пятого перемножителя элементов поля Галуа, со вторым входом девятого перемножителя элементов поля Галуа, с входом четвертого квадратора и со вторым входом двенадцатого перемножителя элементов поля Галуа, выход шестого перемножителя элементов поля Галуа соединен со вторым входом седьмого перемножителя элементов поля Галуа и с первым входом двенадцатого перемножителя элементов поля Галуа, выход третьего квадратора соединен со вторым входом восьмого перемножителя элементов поля Галуа, выход девятого перемножителя элементов поля Галуа соединен со вторым входом десятого перемножителя элементов поля Галуа, выход четвертого квадратора соединен со вторым входом одиннадцатого перемножителя элементов поля Галуа, выход двенадцатого перемножителя элементов поля Галуа соединен со вторым входом тринадцатого перемножителя элементов поля Галуа, второй вход блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера образует первую группу (младших) разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход первого перемножителя элементов поля Галуа образует вторую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход второго перемножителя элементов поля Галуа образует третью группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход четвертого перемножителя элементов поля Галуа образует четвертую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход пятого перемножителя элементов поля Галуа образует пятую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход седьмого перемножителя элементов поля Галуа образует шестую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход восьмого перемножителя элементов поля Галуа образует седьмую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход десятого перемножителя элементов поля Галуа образует восьмую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход одиннадцатого перемножителя элементов поля Галуа образует девятую группу разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера, выход тринадцатого перемножителя элементов поля Галуа образует десятую группу (старших) разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера.
причем блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера содержит четырнадцатый перемножитель элементов поля Галуа, пятый квадратор, пятнадцатый перемножитель элементов поля Галуа, шестнадцатый перемножитель элементов поля Галуа, семнадцатый перемножитель элементов поля Галуа, шестой квадратор, восемнадцатый перемножитель элементов поля Галуа, девятнадцатый перемножитель элементов поля Галуа, двадцатый перемножитель элементов поля Галуа, седьмой квадратор, двадцать первый перемножитель элементов поля Галуа, двадцать второй перемножитель элементов поля Галуа, двадцать третий перемножитель элементов поля Галуа, восьмой квадратор, двадцать четвертый перемножитель элементов поля Галуа, двадцать пятый перемножитель элементов поля Галуа, двадцать шестой перемножитель элементов поля Галуа, девятый квадратор, двадцать седьмой перемножитель элементов поля Галуа, двадцать восьмой перемножитель элементов поля Галуа, двадцать девятый перемножитель элементов поля Галуа, десятый квадратор, тридцатый перемножитель элементов поля Галуа, тридцать первый перемножитель элементов поля Галуа, тридцать второй перемножитель элементов поля Галуа, одиннадцатый квадратор, тридцать третий перемножитель элементов поля Галуа, тридцать четвертый перемножитель элементов поля Галуа, тридцать пятый перемножитель элементов поля Галуа, причем первые входы четырнадцатого, пятнадцатого, семнадцатого, восемнадцатого, двадцатого, двадцать первого, двадцать третьего, двадцать четвертого, двадцать шестого, двадцать седьмого, двадцать девятого, тридцатого, тридцать второго, тридцать третьего и тридцать пятого перемножителей элементов поля Галуа являются вторым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, второй вход четырнадцатого перемножителя элементов поля Галуа, вход пятого квадратора и первый вход шестнадцатого перемножителя элементов поля Галуа являются первым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход пятого квадратора соединен со вторым входом пятнадцатого перемножителя элементов поля Галуа, со вторым входом шестнадцатого перемножителя элементов поля Галуа, с входом шестого квадратора и со вторым входом девятнадцатого перемножителя элементов поля Галуа, выход шестнадцатого перемножителя элементов поля Галуа соединен со вторым входом семнадцатого перемножителя элементов поля Галуа, с первым входом девятнадцатого перемножителя элементов поля Галуа, с входом седьмого квадратора и с первым входом двадцать второго перемножителя элементов поля Галуа, выход шестого квадратора соединен со вторым входом восемнадцатого перемножителя элементов поля Галуа, со вторым входом двадцать второго перемножителя элементов поля Галуа, с входом восьмого квадратора и со вторым входом двадцать пятого перемножителя элементов поля Галуа, выход девятнадцатого перемножителя элементов поля Галуа соединен со вторым входом двадцатого перемножителя элементов поля Галуа, с первым входом двадцать пятого перемножителя элементов поля Галуа, с входом девятого квадратора и со вторым входом двадцать восьмого перемножителя элементов поля Галуа, выход седьмого квадратора соединен со вторым входом двадцать первого перемножителя элементов поля Галуа, с первым входом двадцать восьмого перемножителя элементов поля Галуа, с входом десятого квадратора и со вторым входом тридцать первого перемножителя элементов поля Галуа, выход двадцать второго перемножителя элементов поля Галуа соединен со вторым входом двадцать третьего перемножителя элементов поля Галуа, с первым входом тридцать первого перемножителя элементов поля Галуа, входом одиннадцатого квадратора и с первым входом тридцать четвертого перемножителя элементов поля Галуа, выход восьмого квадратора соединен со вторым входом двадцать четвертого перемножителя элементов поля Галуа и со вторым входом тридцать четвертого перемножителя элементов поля Галуа, выход двадцать пятого перемножителя элементов поля Галуа соединен со вторым входом двадцать шестого перемножителя элементов поля Галуа, выход девятого квадратора соединен со вторым входом двадцать седьмого перемножителя элементов поля Галуа, выход двадцать восьмого перемножителя элементов поля Галуа соединен со вторым входом двадцать девятого перемножителя элементов поля Галуа, выход десятого квадратора соединен со вторым входом тридцатого перемножителя элементов поля Галуа, выход тридцать первого перемножителя элементов поля Галуа соединен со вторым входом тридцать второго перемножителя элементов поля Галуа, выход одиннадцатого квадратора соединен со вторым входом тридцать третьего перемножителя элементов поля Галуа, выход тридцать четвертого перемножителя элементов поля Галуа соединен со вторым входом тридцать пятого перемножителя элементов поля Галуа, второй вход блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера образует первую группу (младших) разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход четырнадцатого перемножителя элементов поля Галуа образует вторую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход пятнадцатого перемножителя элементов поля Галуа образует третью группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход семнадцатого перемножителя элементов поля Галуа образует четвертую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход восемнадцатого перемножителя элементов поля Галуа образует пятую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцатого перемножителя элементов поля Галуа образует шестую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать первого перемножителя элементов поля Галуа образует седьмую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать третьего перемножителя элементов поля Галуа образует восьмую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать четвертого перемножителя элементов поля Галуа образует девятую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать шестого перемножителя элементов поля Галуа образует десятую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать седьмого перемножителя элементов поля Галуа образует одиннадцатую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход двадцать девятого перемножителя элементов поля Галуа образует двенадцатую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход тридцатого перемножителя элементов поля Галуа образует тринадцатую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход тридцать второго перемножителя элементов поля Галуа образует четырнадцатую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход тридцать третьего перемножителя элементов поля Галуа образует пятнадцатую группу разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера, выход тридцать пятого перемножителя элементов поля Галуа образует шестнадцатую группу (старших) разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера.
причем первый блок вычисления и хранения синдромов вертикальных кодовых слов содержит первый блок вентилей, первый умножитель на постоянный коэффициент, второй умножитель на постоянный коэффициент, третий умножитель на постоянный коэффициент, …, r-ый умножитель на постоянный коэффициент, четвертый сумматор элементов поля Галуа, пятый сумматор элементов поля Галуа, шестой сумматор элементов поля Галуа, …, (r+3)-ий сумматор элементов поля Галуа, логический элемент НЕ, второй счетчик, третий блок памяти с произвольным доступом, пятый коммутатор, шестой коммутатор, седьмой коммутатор, восьмой коммутатор, четвертый блок памяти с произвольным доступом, девятый коммутатор, десятый коммутатор, третий счетчик, причем первые входы четвертого, пятого, шестого, …, (r+3)-го сумматоров элементов поля Галуа являются первым входом блока вычисления и хранения синдромов вертикальных кодовых слов, на вход логического элемента НЕ подается управляющий сигнал инициализации синдромов, на вход второго счетчика, первый вход шестого коммутатора и второй вход десятого коммутатора подается управляющий сигнал разрешения записи промежуточных значений синдромов, на третий вход шестого коммутатора и четвертый вход десятого коммутатора подается управляющий сигнал разрешения чтения промежуточных значений синдромов, на третий вход пятого коммутатора, пятый вход шестого коммутатора, третий вход седьмого коммутатора, третий вход восьмого коммутатора, третий вход девятого коммутатора и пятый вход десятого коммутатора подается управляющий сигнал переключения режимов работы блоков памяти с произвольным доступом, на четвертый вход шестого коммутатора, третий вход десятого коммутатора и вход третьего счетчика подается управляющий сигнал разрешения чтения синдромов, на второй вход шестого коммутатора и на первый вход десятого коммутатора подается сигнал логического нуля, выходы первого, второго, третьего, …, r-го умножителей на постоянный коэффициент соединены соответственно со вторыми входами четвертого, пятого, шестого, …, (r+3)-го сумматоров элементов поля Галуа, выходы четвертого, пятого, шестого, …, (r+3)-го сумматоров элементов поля Галуа соединены с первым входом третьего блока памяти с произвольным доступом и с первым входом четвертого блока памяти с произвольным доступом, выход логического элемента НЕ соединен с первым входом первого блока вентилей, выход второго счетчика соединен с первым входом пятого коммутатора и со вторым входом девятого коммутатора, выход третьего счетчика соединен со вторым входом пятого коммутатора и с первым входом девятого коммутатора, выход пятого коммутатора соединен со вторым входом третьего блока памяти с произвольным доступом, первый выход шестого коммутатора соединен с третьим входом третьего блока памяти с произвольным доступом, второй выход шестого коммутатора соединен с четвертым входом третьего блока памяти с произвольным доступом, выход девятого коммутатора соединен со вторым входом четвертого блока памяти с произвольным доступом, первый выход десятого коммутатора соединен с третьим входом четвертого блока памяти с произвольным доступом, второй выход десятого коммутатора соединен с четвертым входом четвертого блока памяти с произвольным доступом, выход третьего блока памяти с произвольным доступом соединен с первым входом седьмого коммутатора и со вторым входом восьмого коммутатора, выход четвертого блока памяти с произвольным доступом соединен со вторым входом седьмого коммутатора и с первым входом восьмого коммутатора, выход седьмого коммутатора соединен со вторым входом первого блока вентилей, выход первого блока вентилей соединен с входами первого, второго, третьего,..., r-го умножителей на постоянный коэффициент, выход восьмого коммутатора является выходом блока вычисления и хранения синдромов вертикальных кодовых слов.
причем блок хранения значений ошибок вертикальных кодовых слов первого декодера содержит пятый блок памяти с произвольным доступом, одиннадцатый коммутатор, первый логический элемент И, второй логический элемент И, двенадцатый коммутатор, шестой блок памяти с произвольным доступом, тринадцатый коммутатор, четвертый счетчик, пятый счетчик, шестой счетчик, третий логический элемент И, четвертый логический элемент И, причем первый вход пятого блока памяти с произвольным доступом и первы вход шестого блока памяти с произвольным доступом являются вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера, третий вход одиннадцатого коммутатора и четвертый вход тринадцатого коммутатора являются первым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера, на второй вход первого логического элемента И и второй вход третьего логического элемента И подается управляющий сигнал разрешения записи значений ошибок вертикальных кодовых слов блока хранения значений ошибок вертикальных кодовых слов первого декодера, на второй вход второго логического элемента И и второй вход четвертого логического элемента И подается управляющий сигнал разрешения чтения значений ошибок вертикальных кодовых слов блока хранения значений ошибок вертикальных кодовых слов первого декодера, на пятый вход одиннадцатого коммутатора, первый вход первого логического элемента И, первый вход второго логического элемента И, первый вход третьего логического элемента И, первый вход четвертого логического элемента И, пятый вход тринадцатого коммутатора и третий вход двенадцатого коммутатора подается управляющий сигнал, переключающий режимы работы блоков памяти с произвольным доступом блока хранения значений ошибок вертикальных кодовых слов первого декодера, на вход четвертого счетчика подается управляющий сигнал инкремента позиции записываемого символа в столбце данных блока данных произведения PC-кодов блока хранения значений ошибок вертикальных кодовых слов первого декодера, на вход пятого счетчика подается управляющий сигнал инкремента позиции считываемого символа в столбце данных блока данных произведения РС-кодов блока хранения значений ошибок вертикальных кодовых слов первого декодера, на вход шестого счетчика подается управляющий сигнал инкремента позиции считываемого символа в строке данных блока данных произведения PC-кодов блока хранения значений ошибок вертикальных кодовых слов первого декодера, выход четвертого счетчика соединен с первым входом одиннадцатого коммутатора и со вторым входом тринадцатого коммутатора, выход пятого счетчика соединен со вторым входом одиннадцатого коммутатора и с первым входом тринадцатого коммутатора, выход шестого счетчика соединен с четвертым входом одиннадцатого коммутатора и с третьим входом тринадцатого коммутатора, первый выход одиннадцатого коммутатора соединен со вторым входом пятого блока памяти с произвольным доступом, второй выход одиннадцатого коммутатора соединен с третьим входом пятого блока памяти с произвольным доступом, выход первого логического элемента И соединен с четвертым входом пятого блока памяти с произвольным доступом, выход второго логического элемента И соединен с пятым входом пятого блока памяти с произвольным доступом, первый выход тринадцатого коммутатора соединен со вторым входом шестого блока памяти с произвольным доступом, второй выход тринадцатого коммутатора соединен с третьим входом шестого блока памяти с произвольным доступом, выход третьего логического элемента И соединен с четвертым входом шестого блока памяти с произвольным доступом, выход четвертого логического элемента И соединен с пятым входом шестого блока памяти с произвольным доступом, выход пятого блока памяти с произвольным доступом соединен с первым входом двенадцатого коммутатора, выход шестого блока памяти с произвольным доступом соединен со вторым входом двенадцатого коммутатора, выход двенадцатого коммутатора является выходом блока хранения значений ошибок вертикальных кодовых слов первого декодера.
Введение в заявляемое устройство второго, …, N-го декодеров позволяет устройству работать в потоковом режиме с высокой пропускной способностью, при этом каждый декодер выполняет одну итерацию декодирования.
Сущность изобретения состоит в том, что итеративное декодирование реализуется последовательностью декодеров, каждый из которых исправляет ошибки сначала в вертикальных кодовых словах, затем в горизонтальных. Каждый декодер при исправлении ошибок в вертикальных кодовых словах модифицирует синдромы горизонтальных кодовых слов. При исправлении ошибок в горизонтальных кодовых словах модификацию синдромов вертикальных кодовых слов осуществляет следующий декодер.
ПЕРЕЧЕНЬ ФИГУР
h
На фиг. 1 приведена структурная схема предлагаемого устройства декодирования произведений PC-кодов. На фиг. 2 изображены структурные схемы первого и последующих декодеров, реализующих итерации алгоритма декодирования произведения PC-кодов. На фиг. 3 показана функциональная схема блока хранения и модификации синдромов горизонтальных кодовых слов; на следующей фиг. 4 - функциональная схема блока вычисления и хранения синдромов вертикальных кодовых слов. На фиг. 5 приведена функциональная схема блока вычисления значений модификаций синдромов горизонтальных кодовых слов. На фиг. 6 представлена функциональная схема блока вычисления значений модификаций синдромов вертикальных кодовых слов, а на фиг. 7 функциональная схема блока хранения значений ошибок вертикальных кодовых слов. На фиг. 8 изображена функциональная схема блока вычисления синдромов горизонтальных кодовых слов. На фиг. 9 показана функциональная схема блока нахождения локаторов и значений ошибок горизонтальных кодовых слов, на следующей фиг. 10 - функциональная схема одного из его основных блоков: модуля дискретного преобразования Фурье многочлена Λ(x). На фиг. 11 изображена временная диаграмма обработки блоков данных предлагаемым устройством декодирования произведений PC-кодов до момента исправления ошибок первым декодером, а на фиг. 12 продолжение временной диаграммы обработки блоков данных предлагаемым устройством декодирования произведений PC-кодов до момента исправления ошибок вторым декодером. На фиг. 13 изображен блок данных, получающийся в результате кодирования информации произведением кодов Рида-Соломона. На фиг. 14 представлены кривые помехоустойчивости, полученные в результате имитационного моделирования на программной модели для процедуры классического декодирования (правая кривая) и для декодирования предлагаемым устройством (левая кривая).
ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В описании устройства и на чертежах используются следующие обозначения:
D-Buf - буферная память для хранения принятых из канала блоков;
H-syn Homer - блок вычисления синдромов горизонтальных кодовых слов;
H-syn RAM - блок хранения и модификации синдромов горизонтальных кодовых слов;
Н-ВМА - блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов с использованием алгоритма Берлекэмпа-Месси;
H-Chien Forney - блок нахождения локаторов и значений ошибок горизонтальных кодовых слов с использованием алгоритмов Ченя и Форни;
H-Δsyn - блок вычисления значений модификаций синдромов горизонтальных кодовых слов;
V-syn Horner/RAM - блок вычисления и хранения синдромов вертикальных кодовых слов;
V-syn RAM - блок хранения и модификации синдромов вертикальных кодовых слов;
V-BMA - блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов с использованием алгоритма Берлекэмпа-Месси;
V-Chien Forney - блок нахождения локаторов и значений ошибок вертикальных кодовых слов с использованием алгоритмов Ченя и Форни;
V-Δsyn - блок вычисления значений модификаций синдромов в вертикальных кодовых словах;
V-XY RAM - блок хранения значений ошибок вертикальных кодовых слов;
Cnt - двоичный счетчик;
MX - мультиплексор (коммутатор);
Rg - регистр;
RAM - блок память с произвольным доступом;
Inv - инвертор в конечном поле;
XOR - логический элемент исключающее ИЛИ (сумматор по модулю 2);
N - количество декодеров, выполняющих итерации (количество итераций);
m
m - разрядность элемента расширенного поля Галуа GF(2);
n - количество символов в кодовом слове РС-кода;
h
n - количество символов в горизонтальном кодовом слове РС-кода;
- количество символов в вертикальном кодовом слове РС-кода;
k - количество информационных символов в кодовом слове РС-кода;
h
k - количество информационных символов в горизонтальном кодовом слове РС-кода;
- количество информационных символов в вертикальном кодовом слове РС-кода;
r - количество проверочных символов в кодовом слове РС-кода;
h
h
h
h
r - количество проверочных символов в горизонтальном кодовом слове PC-кода, r=n-k,
- количество проверочных символов в вертикальном кодовом слове РС-кода,
d - минимальное кодовое расстояние для кодовых слов РС-кода;
h
d - минимальное кодовое расстояние для горизонтальных кодовых слов;
- минимальное кодовое расстояние для вертикальных кодовых слов;
c
t - число гарантированно исправляемых ошибок в блоке данных,
ch
t - число гарантированно исправляемых ошибок в горизонтальном кодовом слове,
- число гарантированно исправляемых ошибок в вертикальном кодовом слове,
m
α - примитивный элемент поля Галуа GF(2);
b
b+1
b+d-2
g(х)=(х-α)(x-α)…(х-α) - порождающий многочлен PC-кода, b - целочисленная константа (обычно b=0 или b=1);
- многочлен принятого из канала горизонтального кодового слова;
- многочлен принятого из канала вертикального кодового слова;
S(x) - многочлен синдрома;
Λ(х) - многочлен локаторов ошибок;
Ω(х) - многочлен значений ошибок;
Λ'(x) - формальная производная многочлена локаторов ошибок;
Устройство декодирования произведений PC-кодов (фиг. 1) содержит: первый декодер 1000, второй декодер 2000, …, N-ый декодер N000.
На вход первого декодера 1000 по шине RecDB поступают символы блока данных, принятые из канала. Первый выход первого декодера 1000 (DBOut) соединен с первым входом второго декодера 2000 (DBIn). Второй выход первого декодера 1000 (HM-syn_del) соединен со вторым входом второго декодера 2000. Третий выход первого декодера 1000  соединен с третьим входом второго декодера 2000. Четвертый выход первого декодера 1000  соединен с четвертым входом второго декодера 2000. Пятый выход первого декодера 1000  соединен с пятым входом второго декодера 2000. Шестой выход первого декодера 1000 (VM-syn_del) соединен с шестым входом второго декодера 2000.
Выходы второго 2000 и последующих декодеров соединены с входами подключенных к ним декодеров аналогичным образом, выход последнего декодера N000 (DBOut) является выходом устройства декодирования произведения PC-кодов (CorDB).
1-ый 1000 декодер (фиг. 2) содержит буферную память первого декодера 1001, первый сумматор элементов поля Галуа первого декодера 1002, второй сумматор элементов поля Галуа первого декодера 1003, блок вычисления синдромов горизонтальных кодовых слов 1100, блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200, блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004, блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300, блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400, блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500, блок вычисления и хранения синдромов вертикальных кодовых слов 1600, блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005, блок нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700, блок хранения значений ошибок вертикальных кодовых слов первого декодера 1800.
Вход буферной памяти первого декодера 1001, блока вычисления синдромов горизонтальных кодовых слов 1100 и блока вычисления и хранения синдромов вертикальных кодовых слов 1600 является первым входом (DBIn) 1-го декодера 1000.
Выход буферной памяти первого декодера 1001 соединен с первым входом первого сумматора элементов поля Галуа первого декодера 1002.
h
Выход блока вычисления синдромов горизонтальных кодовых слов 1100 (S) соединен с первым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200.
Выход блока вычисления и хранения синдромов вертикальных кодовых слов 1600 (VM-syn) соединен со входами блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005 и с третьим входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700.
Первый выход блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005  соединен с первым входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700. Второй выход блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005  соединен со вторым входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700.
h
h
Первый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700  соединен с первым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400. Второй выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700 (j_del) соединен с третьим входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200. Третий выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700 (j) соединен с четвертым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200 и со вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800. Четвертый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700  соединен со вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800 и со вторым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400. Пятый выход блока нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700 (VM-syn_del) является шестым выходом 1-го декодера 1000.
Выход блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800 соединен со вторым входом второго сумматора элементов поля Галуа первого декодера 1003.
h
Выход блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS) соединен со вторым входом блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200.
Выход блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200 (HM-syn) соединен со входом блока вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004 и с первым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300.
h
Первый выход блока вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004 (Ω(x))
h
соединен со вторым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300. Второй выход блока вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004 (Λ(х)) соединен с третьим входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300.
h
h
Первый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (HM-syn_del) является вторым выходом 1-го декодера. Второй выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (x) соединен с первым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500. Третий выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300  является четвертым выходом 1-го декодера 1000. Четвертый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300  является третьим выходом 1-го декодера 1000. Пятый выход блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (y) соединен со вторым входом первого сумматора элементов поля Галуа первого декодера 1002 и со вторым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500.
Выход первого сумматора элементов поля Галуа первого декодера 1002 соединен с первым входом второго сумматора элементов поля Галуа первого декодера 1003.
Выход второго сумматора элементов поля Галуа первого декодера 1003 (DBOut) является первым выходом 1-го декодера 1000.
Выход блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500  является пятым выходом 1-го декодера 1000.
2-ой декодер 2000 (третий и последующие декодеры идентичны второму) (фиг. 2) содержит буферную память второго декодера 2001, тринадцатый сумматор элементов поля Галуа второго декодера 2002, четырнадцатый сумматор элементов поля Галуа второго декодера 2003, блок хранения и модификации синдромов горизонтальных кодовых слов второго декодера 2200, блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов второго декодера 2004, блок нахождения локаторов и значений ошибок горизонтальных кодовых слов второго декодера 2300, блок вычисления значений модификаций синдромов горизонтальных кодовых слов второго декодера 2400, блок вычисления значений модификаций синдромов вертикальных кодовых слов второго декодера 2500, блок хранения и модификации синдромов вертикальных кодовых слов 2600, блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов второго декодера 2005, блок нахождения локаторов и значений ошибок вертикальных кодовых слов второго декодера 2700, блок хранения значений ошибок вертикальных кодовых слов второго декодера 2800.
Второй и последующие декодеры идентичны первому декодеру, за исключением того, что в них отсутствует блок вычисления синдромов горизонтальных кодовых слов 1100, причем первый вход второго блока хранения и модификации синдромов горизонтальных кодовых слов 2200 является вторым входом декодера (HM-syn_del), а также блок вычисления и хранения синдромов вертикальных кодовых слов 1600 заменен на блок хранения и модификации синдромов вертикальных кодовых слов 2600.
Первый вход блока хранения и модификации синдромов вертикальных кодовых слов 2600  является пятым входом декодера. Второй вход блока хранения и модификации синдромов вертикальных кодовых слов 2600 (VM-syn_del) является шестым входом декодера. Третий вход блока хранения и модификации синдромов вертикальных кодовых слов 2600  является четвертым входом декодера. Четвертый вход блока хранения и модификации синдромов вертикальных кодовых слов 2600  является третьим входом декодера. Выход блока хранения и модификации синдромов вертикальных кодовых слов 2600 (VM-syn) соединен с входом блока вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов второго декодера 2005 и с третьим входом блока нахождения локаторов и значений ошибок вертикальных кодовых слов второго декодера 2700.
Блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200 (фиг. 3) содержит третий сумматор элементов поля Галуа 1201, первый коммутатор 1202, первый блок памяти с произвольным доступом 1203, второй коммутатор 1204, третий коммутатор 1205, второй блок памяти с произвольным доступом 1206, четвертый коммутатор 1207, первый счетчик 1208.
h
Второй вход третьего сумматора элементов поля Галуа 1201 (ΔS) является вторым входом блока хранения и модификации синдромов горизонтальных кодовых слов.
h
Второй вход первого коммутатора 1202 и первый вход третьего коммутатора 1205 (S) является первым входом блока хранения и модификации синдромов горизонтальных кодовых слов.
h
Третий вход первого коммутатора 1202 и четвертый вход третьего коммутатора 1205 (j) является четвертым входом блока хранения и модификации синдромов горизонтальных кодовых слов.
h
Пятый вход первого коммутатора 1202 и шестой вход третьего коммутатора 1205 (j_del) является третьим входом блока хранения и модификации синдромов горизонтальных кодовых слов.
На восьмой вход первого коммутатора 1202, седьмой вход третьего коммутатора 1205 и вход первого счетчика 1208 подается управляющий сигнал "разрешение записи синдрома (wr_S)".
На десятый вход первого коммутатора 1202 и девятый вход третьего коммутатора 1205 подается управляющий сигнал "разрешение чтения синдрома (rd_S)".
На седьмой вход первого коммутатора 1202 и восьмой вход третьего коммутатора 1205 подается управляющий сигнал "разрешение записи модифицированного синдрома (wr_SM)".
На девятый вход первого коммутатора 1202 и десятый вход третьего коммутатора 1205 подается управляющий сигнал "разрешение чтения модифицированного синдрома (rd_SM)".
На одиннадцатый вход первого коммутатора 1202, третий вход второго коммутатора 1204, одиннадцатый вход третьего коммутатора 1205 и третий вход четвертого коммутатора 1207 подается управляющий сигнал "переключение режимов работы блоков памяти с произвольным доступом 1203 и 1206 (СМх)".
Выход третьего сумматора элементов поля Галуа 1201 соединен с первым входом первого коммутатора 1202 и со вторым входом третьего коммутатора 1205.
Выход первого счетчика 1208 соединен с четвертым и шестым входами первого коммутатора 1202 и с третьим и пятым входами третьего коммутатора 1205.
Первый выход первого коммутатора 1202 соединен с первым входом первого блока памяти с произвольным доступом 1203 (DI). Второй выход первого коммутатора 1202 соединен со вторым входом первого блока памяти с произвольным доступом 1203 (AW). Третий выход первого коммутатора 1202 соединен с третьим входом первого блока памяти с произвольным доступом 1203 (AR). Четвертый выход первого коммутатора 1202 соединен с четвертым входом первого блока памяти с произвольным доступом 1203 (WR). Пятый выход первого коммутатора 1202 соединен с пятым входом первого блока памяти с произвольным доступом 1203 (RD).
Выход первого блока памяти с произвольным доступом 1203 соединен с первым входом второго коммутатора 1204 и со вторым входом четвертого коммутатора 1207.
Выход второго коммутатора 1204 соединен с первым входом третьего сумматора элементов поля Галуа 1201.
Первый выход третьего коммутатора 1205 соединен с первым входом второго блока памяти с произвольным доступом 1206 (DI). Второй выход третьего коммутатора 1205 соединен со вторым входом второго блока памяти с произвольным доступом 1206 (AW). Третий выход третьего коммутатора 1205 соединен с третьим входом второго блока памяти с произвольным доступом 1206 (AR). Четвертый выход третьего коммутатора 1205 соединен с четвертым входом второго блока памяти с произвольным доступом 1206 (WR). Пятый выход третьего коммутатора 1205 соединен с пятым входом второго блока памяти с произвольным доступом 1206 (RD).
Выход второго блока памяти с произвольным доступом 1206 соединен со вторым входом второго коммутатора 1204 и с первым входом четвертого коммутатора 1207.
Выход четвертого коммутатора 1207 (HM-syn) является выходом блока хранения и модификации синдромов горизонтальных кодовых слов.
h
h
Сумматор элементов поля Галуа 1201 является r разрядным, и реализуется с помощью r*m элементов XOR
Все коммутаторы двунаправленные. Коммутаторы 1202 и 1205 пятисекционные. Первый и второй входы являются входами первой секции, третий и четвертый входы - входами второй секции, пятый и шестой входы -входами третьей секции, седьмой и восьмой входы - входами четвертой секции, девятый и десятый входы - входами пятой секции. На выходы коммутаторов 1202 и 1205 подаются значения их нечетных входов, если на их одиннадцатые входы подается управляющий сигнал "СМх" со значением логической единицы. На выходы коммутаторов 1204 и 1207 подаются значения их первых входов, если на их третьи входы подаются значения логической единицы.
Память 1203 и 1206 - двухпортовая, позволяющая одновременно записывать и считывать данные. На первые входы блоков памяти (DI) подаются записываемые данные. На вторые входы (AW) подаются адреса записываемых данных. На третьи входы (AR) подаются адреса считываемых данных. На четвертый вход подается сигнал (WR) разрешения записи в память. На пятый вход (RD) подается сигнал разрешения чтения из памяти. На выходы блоков памяти (DO) выдаются и хранятся значения выбранных ячеек памяти по окончанию сигнала чтения (RD).
h
Разрядность шин адреса (AW, AR) блоков памяти равна  Каждый блок памяти хранит  ячеек. Каждая ячейка хранит r*m бит.
Размер каждого блока памяти равняется  бит.
Счетчик 1208 двоичный с коэффициентом пересчета  Число разрядов
Блоки хранения и модификации синдромов горизонтальных кодовых слов, используемые во всех декодерах, 2200, …, N200 идентичны блоку 1200.
Блок хранения и модификации синдромов вертикальных кодовых слов 2600 реализован аналогично блоку хранения и модификации синдромов горизонтальных кодовых слов 1200. Единственное отличие этого блока заключается в числе обрабатываемых синдромов ( вместо ) и их разрядности ( вместо ).
Блоки хранения и модификации синдромов вертикальных кодовых слов, используемые во всех декодерах кроме первого, идентичны блоку 2600.
Блок вычисления и хранения синдромов вертикальных кодовых слов 1600 первого декодера (фиг. 4) содержит первый блок вентилей 1601, первый умножитель на постоянный коэффициент 1602.1, второй умножитель на постоянный коэффициент 1602.2, третий умножитель на постоянный коэффициент 1602.3, …, r-ый умножитель на постоянный коэффициент 1602.r, четвертый сумматор элементов поля Галуа 1603.1, пятый сумматор элементов поля Галуа 1603.1, шестой сумматор элементов поля Галуа 1603.1, …, (r-3)-ий сумматор элементов поля Галуа 1603.r, логический элемент НЕ 1604, второй счетчик 1605, третий блок памяти с произвольным доступом 1606, пятый коммутатор 1607, шестой коммутатор 1608, седьмой коммутатор 1609, четвертый блок памяти с произвольным доступом 1610, восьмой коммутатор 1611, девятый коммутатор 1612, десятый коммутатор 1613, третий счетчик 1614.
Первые входы четвертого 1603.1, пятого 1603.2, шестого 1603.3, …, (r+3)-го 1603.r сумматоров элементов поля Галуа являются входом блока вычисления и хранения синдромов вертикальных кодовых слов.
На вход логического элемента НЕ 1604 подается управляющий сигнал "инициализация блока вычисления и хранения синдромов вертикальных кодовых слов (init_S)". Выход логического элемента НЕ 1604 соединен с первым входом первого блока вентилей 1601.
На вход второго счетчика 1605, первый вход шестого коммутатора 1608 и второй вход десятого коммутатора 1613 подается управляющий сигнал "разрешение записи промежуточных значений синдромов (wr_SI)".
На третий вход шестого коммутатора 1608 и четвертый вход десятого коммутатора 1613 подается управляющий сигнал "разрешение чтения промежуточных значений синдромов (rd_SI)".
На третий вход пятого коммутатора 1607, пятый вход шестого коммутатора 1608, третий вход седьмого коммутатора 1609, третий вход восьмого коммутатора 1611, третий вход девятого коммутатора 1612 и пятый вход десятого коммутатора 1613 подается управляющий сигнал "переключение режимов работы блоков памяти (СМх)".
На вход третьего счетчика 1614, четвертый вход шестого коммутатора 1608 и третий вход десятого коммутатора 1613 подается управляющий сигнал "разрешение чтения синдромов (rd_S)".
На второй вход шестого коммутатора 1608 и первый вход десятого коммутатора 1613 подается сигнал логического нуля.
Выход второго счетчика 1605 соединен с первым входом пятого коммутатора 1607 и со вторым входом девятого коммутатора 1612.
Выход третьего счетчика 1614 соединен со вторым входом пятого коммутатора 1607 и с первым входом девятого коммутатора 1612.
Выход пятого коммутатора 1607 соединен со вторым входом третьего блока памяти с произвольным доступом 1606 (А).
Первый выход шестого коммутатора 1608 соединен с третьим входом третьего блока памяти с произвольным доступом 1606 (WR). Второй выход шестого коммутатора 1608 соединен с четвертым входом третьего блока памяти с произвольным доступом 1606 (RD).
Выход девятого коммутатора 1612 соединен со вторым выходом четвертого блока памяти с произвольным доступом 1610 (А).
Первый выход десятого коммутатора 1613 соединен с третьим входом четвертого блока памяти с произвольным доступом 1610 (WR). Второй выход десятого коммутатора 1613 соединен с четвертым входом четвертого блока памяти с произвольным доступом 1610 (RD).
Выход третьего блока памяти с произвольным доступом 1606 соединен с первым входом седьмого коммутатора 1609 и со вторым входом восьмого коммутатора 1611.
Выход четвертого блока памяти с произвольным доступом 1610 соединен со вторым входом седьмого коммутатора 1609 и с первым входом восьмого коммутатора 1611.
Выход седьмого коммутатора 1609 соединен со вторым входом первого блока вентилей 1601.
Выход первого блока вентилей 1601 соединен со входами первого 1602.1, второго 1602.2, третьего 1602.2, …, r-го 1602.r умножителей на постоянный коэффициент.
Выходы первого 1602.1, второго 1602.2, третьего 1602.2, …, r-го 1602.r умножителей на постоянный коэффициент соединены со вторыми входами четвертого 1603.1, пятого 1603.2, шестого 1603.3, …, (r+3)-го 1603.r сумматоров элементов поля Галуа соответственно.
Выходы четвертого 1603.1, пятого 1603.2, шестого 1603.3, …, (r+3)-го 1603.r сумматоров элементов поля Галуа соединены с первым входом третьего блока памяти с произвольным доступом 1606 и с первым входом четвертого блока памяти с произвольным доступом 1610 (DI).
Выход восьмого коммутатора 1611 (VM-syn) является выходом блока вычисления и хранения синдромов вертикальных кодовых слов.
Все коммутаторы двунаправленные. Коммутаторы 1608 и 1613 двухсекционные. Первый и второй входы являются входами первой секции, третий и четвертый входы - входами второй секции. На выходы коммутаторов 1608 и 1613 подаются значения их нечетных входов, если на их пятые входы подается управляющий сигнал "СМх" со значением логической единицы. На выходы коммутаторов 1607, 1609, 1611 и 1612 подаются значения их первых входов, если на их третьи входы подаются значения логической единицы.
Разрядность шины адреса (А) блоков памяти равна  Каждый блок памяти хранит  ячеек. Каждая ячейка хранитбит. Размер каждого блока памяти равняется  бит.
На первые входы блоков памяти (DI) подаются записываемые данные. На вторые входы (А) подаются адреса записываемых и считываемых данных. На третий вход подается сигнал (WR) разрешения записи в память. На четвертый вход (RD) подается сигнал разрешения чтения из памяти. На выходы блоков памяти (DO) выдаются и хранятся значения выбранных ячеек памяти по окончанию сигнала чтения (RD).
h
Счетчики 1605 и 1614 двоичные с коэффициентом пересчета k. Число разрядов
Блок вычисления значения модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (фиг. 5) содержит первый перемножитель элементов поля Галуа 1401.1, первый квадратор 1402.1, второй перемножитель элементов поля Галуа 1401.2, третий перемножитель элементов поля Галуа 1403.1, четвертый перемножитель элементов поля Галуа 1401.3, второй квадратор 1402.2, пятый перемножитель элементов поля Галуа 1401.4, шестой перемножитель элементов поля Галуа 1403.2, седьмой перемножитель элементов поля Галуа 1401.5, третий квадратор 1402.3, восьмой перемножитель элементов поля Галуа 1401.6, девятый перемножитель элементов поля Галуа 1403.3, десятый перемножитель элементов поля Галуа 1401.7, четвертый квадратор 1402.4, одиннадцатый перемножитель элементов поля Галуа 1401.8, двенадцатый перемножитель элементов поля Галуа 1403.4, тринадцатый перемножитель элементов поля Галуа 1401.9.
v
Первый вход первого 1401.1, второго 1401.2, четвертого 1401.3, пятого 1401.4, седьмого 1401.5, восьмого 1401.6, десятого 1401.7, одиннадцатого 1401.8 и тринадцатого 1401.9 перемножителей элементов поля Галуа является вторым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (y).
v
Второй вход первого перемножителя элементов поля Галуа 1401.1, вход первого квадратора 1402.1 и первый вход третьего перемножителя элементов поля Галуа 1403.1 является первым входом блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (x).
Выход первого квадратора 1402.1 соединен со вторым входом второго перемножителя элементов поля Галуа 1401.2, со вторым входом третьего перемножителя элементов поля Галуа 1403.1, со входом второго квадратора 1402.2 и со вторым входом шестого перемножителя элементов поля Галуа 1403.2.
Выход третьего перемножителя элементов поля Галуа 1403.1 соединен со вторым входом четвертого перемножителя элементов поля Галуа 1401.3, первым входом шестого перемножителя элементов поля Галуа 1403.2, входом третьего квадратора 1402.3 и с первым входом девятого перемножителя элементов поля Галуа 1403.3.
Выход второго квадратора 1402.2 соединен со вторым входом пятого перемножителя элементов поля Галуа 1401.4, вторым входом девятого перемножителя элементов поля Галуа 1403.3, входом четвертого квадратора 1402.4 и со вторым входом двенадцатого квадратора 1403.4.
Выход шестого перемножителя элементов поля Галуа 1403.2 соединен со вторым входом седьмого перемножителя элементов поля Галуа 1401.5 и с первым входом двенадцатого перемножителя элементов поля Галуа 1403.4.
Выход третьего квадратора 1402.3 соединен со вторым входом восьмого перемножителя элементов поля Галуа 1401.6.
Выход девятого перемножителя элементов поля Галуа 1403.3 соединен со вторым входом десятого перемножителя элементов поля Галуа 1401.7.
Выход четвертого квадратора 1402.4 соединен со вторым входом одиннадцатого перемножителя элементов поля Галуа 1401.8.
Выход двенадцатого перемножителя элементов поля Галуа 1403.4 соединен со вторым входом тринадцатого перемножителя элементов поля Галуа 1401.9.
0
Второй вход блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 образует первую группу из m (младших) разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
1
Выход первого перемножителя элементов поля Галуа 1401.1 образует вторую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
2
Выход второго перемножителя элементов поля Галуа 1401.2 образует третью группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов 1400 первого декодера (ΔS).
3
Выход четвертого перемножителя элементов поля Галуа 1401.3 образует четвертую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
4
Выход пятого перемножителя элементов поля Галуа 1401.4 образует пятую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
5
Выход седьмого перемножителя элементов поля Галуа 1401.5 образует шестую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
6
Выход восьмого перемножителя элементов поля Галуа 1401.6 образует седьмую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
7
Выход десятого перемножителя элементов поля Галуа 1401.7 образует восьмую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
8
Выход одиннадцатого перемножителя элементов поля Галуа 1401.8 образует девятую группу из m разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
9
Выход тринадцатого перемножителя элементов поля Галуа 1401.9 образует десятую группу из m (старших) разрядов выхода блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (ΔS).
0
Приведенная на фиг. 5 схема изображена для случая использования РС-кодов с b=0. В случае использования кодов Рида-Соломона с b=1 в схему добавится еще один перемножитель элементов поля Галуа для вычисления ΔS, и еще один квадратор, необходимый для вычисления .
Блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (фиг. 6) содержит четырнадцатый 1501.1, пятнадцатый 1501.2, шестнадцатый 1503.1, семнадцатый 1501.3, восемнадцатый 1501.4, девятнадцатый 1503.2, двадцатый 1501.5, двадцать первый 1501.6, двадцать второй 1503.3, двадцать третий 1501.7, двадцать четвертый 1501.8, двадцать пятый 1503.4, двадцать шестой 1501.9, двадцать седьмой 1501.10, двадцать восьмой 1503.5, двадцать девятый 1501.11, тридцатый 1501.12, тридцать первый 1503.6, тридцать второй 1501.13, тридцать третий 1501.14, тридцать четвертый 1503.7 и тридцать пятый 1501.15 сумматоры элементов поля Галуа, пятый 1502.1, шестой 1502.2, седьмой 1502.3, восьмой 1502.4, девятый 1502.5, десятый 1502.6 и одиннадцатый 1502.7 квадраторы.
h
Первые входы четырнадцатого 1501.1, пятнадцатого 1501.2, семнадцатого 1501.3, восемнадцатого 1501.4, двадцатого 1501.5, двадцать первого 1501.6, двадцать третьего 1501.7, двадцать четвертого 1501.8, двадцать шестого 1501.9, двадцать седьмого 1501.10, двадцать девятого 1501.11, тридцатого 1501.12, тридцать второго 1501.13, тридцать третьего 1501.14 и тридцать пятого 1501.15 перемножителей элементов поля Галуа являются вторым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (y).
h
Второй вход четырнадцатого перемножителя элементов поля Галуа 1501.1, вход пятого квадратора 1502.1 и первый вход шестнадцатого перемножителя элементов поля Галуа 1503.1 является первым входом блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (x).
Выход пятого квадратора 1502.1 соединен со вторым входом пятнадцатого перемножителя элементов поля Галуа 1501.2, со вторым входом шестнадцатого перемножителя элементов поля Галуа 1503.1, со входом шестого квадратора 1502.2 и со вторым входом девятнадцатого перемножителя элементов поля Галуа 1503.2.
Выход шестнадцатого перемножителя элементов поля Галуа 1503.1 соединен со вторым входом семнадцатого перемножителя элементов поля Галуа 1501.3, с первым входом девятнадцатого перемножителя элементов поля Галуа 1503.2, входом седьмого квадратора 1502.3 и с первым входом двадцать второго перемножителя элементов поля Галуа 1503.3.
Выход шестого квадратора 1502.2 соединен со вторым входом восемнадцатого перемножителя элементов поля Галуа 1501.4, со вторым входом двадцать второго перемножителя элементов поля Галуа 1503.3, со входом восьмого квадратора 1502.4 и со вторым входом двадцать пятого перемножителя элементов поля Галуа 1503.4.
Выход девятнадцатого перемножителя элементов поля Галуа 1503.2 соединен со вторым входом двадцатого перемножителя элементов поля Галуа 1501.5, с первым входом двадцать пятого перемножителя элементов поля Галуа 1503.4, со входом девятого квадратора 1502.5 и со вторым входом двадцать восьмого перемножителя элементов поля Галуа 1503.5.
Выход седьмого квадратора 1502.3 соединен со вторым входом двадцать первого перемножителя элементов поля Галуа 1501.6, с первым входом двадцать восьмого перемножителя элементов поля Галуа 1503.5, со входом десятого квадратора 1502.6 и со вторым входом тридцать первого перемножителя элементов поля Галуа 1503.6.
Выход двадцать второго перемножителя элементов поля Галуа 1503.3 соединен со вторым входом двадцать третьего перемножителя элементов поля Галуа 1501.7, с первым входом тридцать первого перемножителя элементов поля Галуа 1503.6, входом одиннадцатого квадратора 1502.7 и с первым входом тридцать четвертого перемножителя элементов поля Галуа 1503.7.
Выход восьмого квадратора 1502.4 соединен со вторым входом двадцать четвертого перемножителя элементов поля Галуа 1501.8 и со вторым входом тридцать четвертого перемножителя элементов поля Галуа 1503.7.
Выход двадцать пятого перемножителя элементов поля Галуа 1503.4 соединен со вторым входом двадцать шестого перемножителя элементов поля Галуа 1501.9.
Выход девятого квадратора 1502.5 соединен со вторым входом двадцать седьмого перемножителя элементов поля Галуа 1501.10.
Выход двадцать восьмого перемножителя элементов поля Галуа 1503.5 соединен со вторым входом двадцать девятого перемножителя элементов поля Галуа 1501.11.
Выход десятого квадратора 1502.6 соединен со вторым входом тридцатого перемножителя элементов поля Галуа 1501.12.
Выход тридцать первого перемножителя элементов поля Галуа 1503.6 соединен со вторым входом тридцать третьего перемножителя элементов поля Галуа 1501.13.
Выход одиннадцатого квадратора 1502.7 соединен со вторым входом тридцать третьего перемножителя элементов поля Галуа 1501.14.
Выход тридцать четвертого перемножителя элементов поля Галуа 1503.7 соединен со вторым входом тридцать пятого перемножителя элементов поля Галуа 1501.15.
0
Второй вход блока вычисления значений модификаций синдромов вертикальных кодовых слов 1500 образует первую группу из m (младших) разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
1
Выход четырнадцатого перемножителя элементов поля Галуа 1501.1 образует вторую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
2
Выход пятнадцатого перемножителя элементов поля Галуа 1501.2 образует третью группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
3
Выход семнадцатого перемножителя элементов поля Галуа 1501.3 образует четвертую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
4
Выход восемнадцатого перемножителя элементов поля Галуа 1501.4 образует пятую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
5
Выход двадцатого перемножителя элементов поля Галуа 1501.5 образует шестую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
6
Выход двадцать первого перемножителя элементов поля Галуа 1501.6 образует седьмую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
7
Выход двадцать третьего перемножителя элементов поля Галуа 1501.7 образует восьмую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
8
Выход двадцать четвертого перемножителя элементов поля Галуа 1501.8 образует девятую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
9
Выход двадцать шестого перемножителя элементов поля Галуа 1501.9 образует десятую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS)
10
Выход двадцать седьмого перемножителя элементов поля Галуа 1501.10 образует одиннадцатую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
11
Выход двадцать девятого перемножителя элементов поля Галуа 1501.11 образует двенадцатую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
12
Выход тридцатого перемножителя элементов поля Галуа 1501.12 образует тринадцатую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
13
Выход тридцать второго перемножителя элементов поля Галуа 1501.13 образует четырнадцатую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
14
Выход тридцать третьего перемножителя элементов поля Галуа 1501.14 образует пятнадцатую группу из m разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
15
Выход тридцать пятого перемножителя элементов поля Галуа 1501.15 образует шестнадцатую группу из m (старших) разрядов выхода блока вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500 (ΔS).
0
Приведенная на фиг. 6 схема изображена для случая использования РС-кодов с b=0. В случае использования кодов Рида-Соломона с b=1 в схему добавится еще один перемножитель элементов поля Галуа для вычисления ΔS, и еще один квадратор, необходимый для вычисления
Блок хранения значений ошибок вертикальных кодовых слов первого декодера 1800 (фиг. 7) содержит пятый блок памяти с произвольным доступом 1801, одиннадцатый коммутатора 1802, первый логический элемент И 1803, второй логический элемент И 1804, двенадцатый коммутатора 1805, шестой блок памяти с произвольным доступом 1806, тринадцатый коммутатор 1807, четвертый счетчик 1808, пятый счетчик 1809, шестой счетчик 1810, третий логический элемент И 1811, четвертый логический элемент И 1812.
v
Первый вход пятого блока памяти с произвольным доступом 1801 и первый вход шестого блока памяти с произвольным доступом 1806 являются вторым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800 (y).
h
Третий вход одиннадцатого коммутатора 1802 и четвертый вход тринадцатого коммутатора 1807 являются первым входом блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800 (j).
На второй вход первого логического элемента И 1803 и второй вход третьего логического элемента И 1811 подается управляющий сигнал "разрешение записи значений ошибок вертикальных кодовых слов (wr)".
На второй вход второго логического элемента И 1804 и второй вход четвертого логического элемента И 1812 подается управляющий сигнал "разрешение чтения значений ошибок вертикальных кодовых слов (rd)".
На пятый вход одиннадцатого коммутатора 1802, первый вход первого логического элемента И 1803, первый вход второго логического элемента И 1804, первый вход третьего логического элемента И 1811, первый вход четвертого логического элемента И 1812, пятый вход тринадцатого коммутатора 1807 и третий вход двенадцатого коммутатора 1805 подается управляющий сигнал "переключающий режимы работы блоков памяти с произвольным доступом (СМх)".
V
На вход четвертого счетчика 1808 подается управляющий сигнал "инкремент номера столбца данных блока данных произведения РС-кодов (inc_A_W), в который записывается значение ошибочного символа".
V
На вход пятого счетчика 1809 подается управляющий сигнал "инкремент номера столбца данных блока данных произведения РС-кодов (inc_A_R), из которого считывается значение ошибочного символа".
H
На вход шестого счетчика 1810 подается управляющий сигнал "инкремент номера строки данных блока данных произведения РС-кодов (inc_A_R), из которого считывается значение ошибочного символа".
Выход четвертого счетчика 1808 соединен с первым входом одиннадцатого коммутатора 1802 и со вторым входом тринадцатого коммутатора 1807.
Выход пятого счетчика 1809 соединен со вторым входом одиннадцатого коммутатора 1802 и с первым входом тринадцатого коммутатора 1807.
Выход шестого счетчика 1810 соединен с четвертым входом одиннадцатого коммутатора 1802 и с третьим входом тринадцатого коммутатора 1807.
v
Первый вход одиннадцатого коммутатора 1802 соединен со вторым входом пятого блока памяти с произвольным доступом 1801 (A).
h
Второй выход одиннадцатого коммутатора 1802 соединен с третьим входом пятого блока памяти с произвольным доступом 1801 (A).
Выход первого логического элемента И 1803 соединен с четвертым входом пятого блока памяти с произвольным доступом 1801 (WR).
Выход второго логического элемента И 1804 соединен с шестым входом пятого блока памяти с произвольным доступом 1801 (RD).
v
Первый выход тринадцатого коммутатора 1807 соединен со вторым входом шестого блока памяти с произвольным доступом 1806 (A).
h
Второй выход тринадцатого коммутатора 1807 соединен с третьим входом шестого блока памяти с произвольным доступом 1806 (A).
Выход третьего логического элемента И 1811 соединен с четвертым входом шестого блока памяти с произвольным доступом 1806 (WR).
Выход четвертого логического элемента И 1812 соединен с шестым входом шестого блока памяти с произвольным доступом 1806 (RD).
Выход пятого блока памяти с произвольным доступом 1801 соединен с первым входом двенадцатого коммутатора 1805.
Выход шестого блока памяти с произвольным доступом 1806 соединен со вторым входом двенадцатого коммутатора 1805.
v
Выход двенадцатого коммутатора 1805 является выходом блока хранения значений ошибок вертикальных кодовых слов (y_del).
Все коммутаторы двунаправленные. Коммутаторы 1802 и 1807 двухсекционные. Первый и второй входы являются входами первой секции, третий и четвертый входы - входами второй секции. На выходы коммутаторов 1802 и 1807 подаются значения их нечетных входов, если на их пятые входы подается управляющий сигнал "CMx" со значением логической единицы. На выходы коммутатора 1805 подается значение его первых входов, если на его третий вход подается значение логической единицы.
Первые входы второго 1804 и третьего 1807 логических элементов И являются инверсными.
v
h
На первые входы блоков памяти (DI) подаются записываемые данные. На вторые входы (A) подаются номера записываемых или считываемых символов блока данных по вертикали. На третьи входы (A) подаются номера записываемых или считываемых символов по горизонтали. На четвертый вход подается сигнал (WR) разрешения записи в память. На пятый вход (RD) подается сигнал разрешения чтения из памяти. На выходы блоков памяти (DO) выдаются и хранятся значения выбранных ячеек памяти по окончанию сигнала чтения (RD).
v
h
Разрядность вторых входов (A) блоков памяти 1801 и 1806 равняется  Разрядность третьих входов (A) блоков памяти 1801 и 1806 равняется  Каждый блок памяти содержит  ячеек.
Каждая ячейка хранит один символ поля Галуа из m бит. Размер каждого блока памяти равняется  бит.
h
Счетчики 1808, 1809 двоичные с коэффициентом пересчета k. Число разрядов
Счетчик 1810 двоичный с коэффициентом пересчета  Число разрядов
Блок вычисления синдромов горизонтальных кодовых слов 1100 (фиг. 8) содержит пятый 1101.1, шестой 1101.2, седьмой 1101.3, …, (r+4)-ый 1101.r умножители на постоянный коэффициент, восьмой 1102.1, девятый 1102.2, десятый 1102.3, …, (r+7)-ой 1102.r сумматоры элементов поля Галуа, первый 1103.1, второй 1103.2, третий 1103.3, …, r-ый 1103.r регистр-защелку.
h
Первые входы восьмого 1102.1, девятого 1102.2, десятого 1102.3, …, (r+7)-го 1102.r сумматоров элементов поля Галуа являются входом блока вычисления синдромов горизонтальных кодовых слов 1100 (r(х)).
На второй вход первого 1103.1, второго 1103.2, третьего 1103.3, …, r-го 1103.r регистров-защелок подается управляющий сигнал сброса "reset".
Выходы восьмого 1102.1, девятого 1102.2, десятого 1102.3, …, (r+7)-го 1102.r сумматоров элементов поля Галуа соединены с первыми входами первого 1103.1, второго 1103.2, третьего 1103.3, …, r-го 1103.r регистров-защелок.
h
Выходы первого 1103.1, второго 1103.2, третьего 1103.3, …, r-го 1103.r регистров-защелок соединены с входами пятого 1101.1, шестого 1101.2, седьмого 1101.3, …, (r+4)-го 1101.r умножителей на постоянный коэффициент соответственно и образуют первую, вторую, третью, …, r-ую группы разрядов выхода (S) блока вычисления синдромов горизонтальных кодовых слов.
Выходы пятого 1101.1, шестого 1101.2, седьмого 1101.3, …, (r+4)-го 1101.r умножителей на постоянный коэффициент соединены со вторыми входами восьмого 1102.1, девятого 1102.2, десятого 1102.3, …, (r+7)-го 1102.r сумматоров элементов поля Галуа.
Блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (фиг. 9) содержит первый модуль дискретного преобразования Фурье 1310, второй модуль дискретного преобразования Фурье 1320, третий модуль дискретного преобразования Фурье 1330, инвертор элементов поля Галуа 1301, тридцать шестой перемножитель элементов поля Галуа 1302, второй блок вентилей 1303, сдвиговый регистр 1304, D-триггер 1305, селектор нулевого элемента поля Галуа 1306, пятый логический элемент И 1307, шестой логический элемент И 1308, блок сравнения 1309, седьмой счетчик 1310, пятый регистр-защелку 1311, шестой регистр-защелку 1312, девятый умножитель на постоянный коэффициент 1313, регистр 1314.
На первые входы первого 1310, второго 1320 и третьего 1330 модулей дискретного преобразования Фурье подается управляющий сигнал "загрузка полиномов (load)".
На третьи входы первого 1310, второго 1320, третьего 1330 модулей дискретного преобразования Фурье, вход седьмого счетчика 1310 и второй вход регистра 1314 подается управляющий сигнал "сброс (reset)", который устанавливает в определенное начальное состояние счетчики и регистры.
h
На второй вход первого модуля дискретного преобразования Фурье 1310 подается формальная производная полинома локаторов ошибок (Λ'(x)).
На второй вход пятого логического элемента И 1307 подается управляющий сигнал "разрешение обнаружения локаторов ошибок (en_loc)".
h
На первый вход блока сравнения 1309 подается значение равное количеству информационных символов в горизонтальном кодовом слове (k).
На третий вход сдвигового регистра 1304 подается управляющий сигнал "сброс значений ошибок (res_y)". На четвертый вход сдвигового регистра 1304 подается управляющий сигнал "разрешение сдвига (en_shift)".
h
Второй вход второго модуля дискретного преобразования Фурье 1320 является первым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300(Ω(x))
Первый вход шестого регистра-защелки 1312 является вторым входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (HM-syn). На второй вход шестого регистра-защелки 1312 подается управляющий сигнал "сброс синдрома (res_syn)".
h
Второй вход третьего модуля дискретного преобразования Фурье 1330 является третьим входом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (Λ(x)).
h
Выход первого модуля дискретного преобразования Фурье 1310 (Λ'(ω)) соединен с входом инвертора элементов поля Галуа 1301.
h
Выход второго модуля дискретного преобразования Фурье 1320 (Ω(ω)) соединен со вторым входом тридцать шестого перемножителя элементов поля Галуа 1302.
Выход инвертора элементов поля Галуа 1301 соединен с первым входом тридцать шестого перемножителя элементов поля Галуа 1302.
Выход тридцать шестого перемножителя элементов поля Галуа 1302 соединен с первым входом второго блока вентилей 1303.
h
Выход третьего модуля дискретного преобразования Фурье 1330 Λ(ω) соединен с входом селектора нулевого элемента поля Галуа 1306.
Выход селектора нулевого элемента поля Галуа 1306 соединен с первым входом пятого логического элемента И 1307.
h
v
Выход седьмого счетчика 1310 (i) соединен со вторым входом блока сравнения 1309, входом пятого регистра-защелки 1311 и является пятым выходом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (j).
Выход блока сравнения 1309 соединен со вторым входом шестого логического элемента И 1308.
Выход пятого логического элемента И 1307 соединен с первым входом шестого логического элемента И 1308, с вторым входом второго блока вентилей 1303 и является выходом сигнала управления "флаг обнаружения ошибки (error_flag)".
Выход второго блока вентилей 1303 соединен с первым входом сдвигового регистра 1304.
Выход шестого логического элемента И 1308 соединен со вторым входом сдвигового регистра 1304.
h
Первый выход сдвигового регистра 1304 является вторым выходом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (y). Второй выход сдвигового регистра 1304 соединен со входом D-триггера 1305 и является выходом сигнала управления "разрешение чтения модифицированного синдрома (rd_SM)".
Выход D-триггера 1305 является выходом сигнала управления "разрешение записи модифицированного синдрома (wr_SM)".
v
Выход пятого регистра-защелки 1311 является четвертым выходом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (j_del).
Выход девятого умножителя на постоянный коэффициент 1313 соединен с первым входом регистра 1314.
h
Выход регистра 1314 соединен с входом девятого умножителя на постоянный коэффициент 1313 и является третьим выходом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (x).
Выход шестого регистра-защелки 1312 является первым выходом блока нахождения локаторов и значений ошибок горизонтальных кодовых слов 1300 (HM-syn_del).
Инвертор элементов поля Галуа 1301 вычисляет обратный элемент в поле Галуа.
h
h
ch
ch
Разрядность шин полиномов локаторов Λ(x) и значений Ω(x) ошибок равна (t+1)×m бит и t×m бит соответственно.
h
Счетчик 1310 двоичный с коэффициентом пересчета n. Число разрядов
На выходе блока сравнения 1309 формируется значение логической единицы, когда значение на его втором входе меньше значения на его первом входе. В противном случае на выходе формируется значение логического нуля.
h
h
Приведенная на фиг. 9 схема изображена для случая использования РС-кодов с b=1. В случае использования кодов Рида-Соломона с b=0 модуль ДПФ 1310 должен выполнять преобразование Фурье над многочленом Λ'(x) * х вместо Λ'(х).
Блоки нахождения локаторов и значений ошибок горизонтальных кодовых слов, используемые во всех декодерах 2300, …, N300 идентичны блоку 1300.
c-
c-
c
c
h
v
h
h
v
h
v
v
h
Блок нахождения локаторов и значений ошибок вертикальных кодовых слов 1700 реализован аналогично блоку нахождения локаторов и значений ошибок горизонтальных кодовых слов 1300. Отличие этого блока заключается в подаваемых на вторые входы модулей ДПФ полиномах  вместо ,  вместо и  вместо  и их разрядности (tV вместо tH) и (tV-1 вместо tH-1), подаваемых на первые входы седьмого регистра-защелки 1312 синдромах (VM-syn вместо HM-syn), коэффициенте пересчета счетчика 1310 ( вместо k) и числе его разрядов ( вместо ), а также значениях на выходах сдвигового регистра 1304 (y вместо y), седьмого счетчика 1310 (j вместо j), пятого регистра-защелки 1311 (j_del вместо j_del), шестого регистра-защелки 1312 (VM-syn_del вместо HM-syn_del), регистра 1314 (x вместо x), и отсутствии блока сравнения 1309.
Блоки нахождения локаторов и значений ошибок вертикальных кодовых слов, используемые во всех декодерах кроме первого, идентичны блоку 1700.
Модуль дискретного преобразования Фурье 1300 (фиг. 10) содержит третий блок вентилей 1331, первый 1332.1, второй 1332.2, …, t-ый 1332.t блоки логических элементов ИЛИ, седьмой 1333.0, восьмой 1333.1, девятый 1333.2, …, (t+7)-ой 1333.t регистры-защелки, десятый 1334.1, одиннадцатый 1334.2, …, (t+9)-ый 1334.t, (t+10)-ый 1336.1, (t+11)-ый 1336.2, …, (2t+9)-ый 1336.t умножители на постоянный коэффициент, двенадцатый сумматор элементов поля Галуа 1335.
h
Первый вход третьего блока вентилей 1331 является вторым входом модуля дискретного преобразования Фурье 1330 (Λ(x)).
Второй вход третьего блока вентилей 1331 является первым входом модуля дискретного преобразования Фурье 1330 (load).
Третьи входы седьмого 1333.0, восьмого 1333.1, девятого 1333.2, …, (t+7)-го 1333.t регистров-защелок являются третьим входом модуля дискретного преобразования Фурье 1330 (reset).
Выход третьего блока вентилей 1331 соединен с первым входом восьмого регистра-защелки 1333.0, с входами (t+10)-ого 1336.1, (t+11)-ого 1336.2, …, (2t+9)-ого 1336.t умножителей на постоянный коэффициент.
Выходы (t+10)-ого 1336.1, (t+11)-ого 1336.2, …, (2t+9)-ого 1336.t умножителей на постоянный коэффициент соединены со вторыми входами первого 1332.1, второго 1332.2, …, t-го 1332.t блоков логических элементов ИЛИ.
Выходы первого 1332.1, второго 1332.2, …, t-го 1332.t блоков логических элементов ИЛИ соединены с первыми входами восьмого 1333.1, девятого 1333.2, …, (t+7)-го 1333.t регистров-защелок.
Выходы седьмого 1333.0, восьмого 1333.1, девятого 1333.2, …, (t+7)-го 1333.t регистров-защелок соединены с входами двенадцатого сумматора элементов поля Галуа 1335. Выходы восьмого 1333.1, девятого 1333.2, …, (t+7)-го 1333.t регистров-защелок соединены с входами десятого 1334.1, одиннадцатого 1334.2, …, (t+9)-го 1334.t умножителей на постоянный коэффициент соответственно.
h
Выход двенадцатого сумматора элементов поля Галуа 1335 является выходом модуля дискретного преобразования Фурье 1330 (Λ(ω)).
h
h
h
h
h
h
h
h
h
Модули дискретного преобразования Фурье 1310 и 1320 реализованы аналогично модулю дискретного преобразования Фурье 1330. Отличие этих блоков состоит в том, что на входы блока вентилей 1331 подается полином Ω(х) вместо Λ(х) для блока 1320 и Λ'(x) вместо Λ(x) для блока 1310, и соответственно значениях на выходах тринадцатого сумматора элементов поля Галуа 1335 (Ω(ω) вместо Λ(ω) для блока 1320) и (Λ'(ω) вместо Λ(ω) для блока 1310). Поскольку формальная производная Λ'(ω) имеет нулевые четные коэффициенты модуль 1310 упрощается за счет удаления элементов *.0, *.2 и т.д.
h
Блок вентилей 1331 пропускает коэффициенты многочлена Λ(x) со входов на выходы, если сигнал load равен логической единице. В противном случае на его выходах формируются значения логических нулей.
Сумматор 1335 многовходовый, количество входов t-1. Величина t является степенью многочлена, подаваемого на вторые входы модуля дискретного преобразования Фурье 1330.
Все линии, соединяющие блоки на фиг. 1-10, по которым передаются данные в виде элементов поля Галуа, являются m-разрядными.
Все используемые триггеры, регистры и счетчики работают по переднему фронту тактового сигнала, который на фигурах 1-10 не показан, но подразумевается.
Сумматоры элементов поля Галуа, умножители на постоянные коэффициенты, квадраторы и инверторы элементов поля Галуа могут быть реализованы известным образом, в частности, сумматоры могут быть реализованы на m двухвходовых элементах ИСКЛЮЧАЮЩЕЕ-ИЛИ (сумматорах по модулю 2), квадраторы и умножители на постоянные коэффициенты могут быть реализованы на многовходовых элементах ИСКЛЮЧАЮЩЕЕ-ИЛИ, инверторы могут быть реализованы табличным способом.
v
h
h
h
v
v
Заявляемое устройство исправляет ошибки в блоке данных представляющем собой произведение кодов Рида-Соломона. Блок данных изображен на фиг. 13. Он представляет собой конструкцию, состоящую из n горизонтальных кодовых слов r(x), каждое из которых содержит n m-разрядных символов, и k вертикальных кодовых слов r(x), каждое из которых содержит n m-разрядных символов, принятых из канала.
Процедура декодирования, выполняемая заявляемым устройством, обеспечивает исправление ошибок за счет последовательного декодирования кодовых слов в блоке данных начиная с вертикальных кодовых слов. При этом исправляются кодовые слова с количеством ошибок  и меньше. Информация об исправленных символах передается в блок вычисления значений модификаций синдромов горизонтальных кодовых слов и впоследствии используется для модификации вычисленных и хранимых синдромов горизонтальных кодовых слов. Синдромы, неисправленных вертикальных кодовых слова не модифицируются.
После декодирования всех вертикальных кодовых слов, декодируются горизонтальные кодовые слова блока данных. Процедура их коррекции схожа с декодированием по вертикали, за исключением того, что вычисленные синдромы горизонтальных кодовых слов модифицируются уже на первой итерации за счет информации об исправленных символах при декодировании вертикальных кодовых слов. При декодировании горизонтальных кодовых слов исправляются кодовые слова, содержащие  и меньше ошибок, и информация об исправленных символах передается в блок вычисления значений модификаций синдромов вертикальных кодовых слов. Эти данные впоследствии используются для модификации синдромов вертикальных кодовых слов на следующей итерации декодирования. Одной итерации соответствует декодирование всех вертикальных и горизонтальных кодовых слов.
Не смотря на то, что заявляемое устройство способно декодировать блоки данных любой конфигурации, наиболее эффективно декодирование блоков, в которых исправляющая способность вертикального РС-кода больше исправляющей способности PC-кода, которым закодированы горизонтальные кодовые слова.
Процедура декодирования как вертикальных, так и горизонтальных кодовых слов PC-кодов базируется на решении системы линейных алгебраических уравнений над конечным полем Галуа. Эта система получается следующим образом.
Обозначим через е(х) многочлен ошибок в кодовом слове:
Пусть произошло  - ошибок,  тогда е(x) можно представить в следующем виде:
где  - неизвестные позиции ошибок. Задача декодирования заключается в их нахождении, а также нахождении значений ошибок
j
b+j-1
Обозначим через S компоненту синдрома (получается в результате подстановки в многочлен принятого слова r(х) значения α), тогда мы можем записать для первой компоненты:
Обозначим  - локатор ошибки,  - ее значение.
1
Тогда выражение для S примет вид:
Запишем по аналогии выражения для оставшихся компонент синдрома, учитывая
Для решения этой нелинейной системы уравнений вводят многочлен локаторов ошибок
его корнями являются обратные к локаторам ошибок величины
С помощью многочлена локаторов систему (1) преобразуют в систему линейных уравнений:
Определив число ошибок в слове и решив систему (2), можно получить многочлен локаторов ошибок. Корни многочлена дадут локаторы ошибок. Зная локаторы ошибок, значения ошибок можно найти из системы (1).
Таким образом, в процедуре декодирования можно выделить следующие этапы:
1) вычисление синдрома,
2) определение количества ошибок в принятом слове и получение многочлена локаторов ошибок,
3) вычисление локаторов ошибок,
4) нахождение значений ошибок,
5) исправление ошибок.
Рассмотрим более подробно реализацию отдельных этапов процедуры декодирования.
Вычисление синдрома
Компоненты синдрома равны:
j
b+j-1
S=r(α),
b+j-1
где α - корни порождающего многочлена кода g(х), j=1, …, d-1.
Чаще всего значения r(х) вычисляют по схеме Горнера. При этом используют представление многочлена r(х) в следующем виде:
Получение многочлена локаторов ошибок
1
Многочлен локаторов ошибок вычисляется с использование алгоритма Берлекэмпа-Месси, который представляет собой итеративную процедуру для нахождения многочлена локаторов ошибок. На вход процедуры последовательно подаются компоненты синдрома, начиная с S.
На каждом шаге вычисляется невязка  (k - номер шага), представляющая разность между предсказанной с помощью текущего многочлена локаторов компонентой синдрома и поступившей компонентой.
k
k
k
Λ(х) - текущий многочлен локаторов, степень которого L. Он вычисляется с использованием вспомогательного многочлена B(х) по формуле:
C
C
C
C
0
(0)
(0)
Для исправления t ошибочных символов (вычисления полинома локаторов степени t) необходимо выполнить 2t итераций (k=1, …, 2t) с начальными условиями Λ(х)=1, В(х)=1 и L=0.
Вычисление локаторов ошибок
m
Вычисление локаторов ошибок сводится к решению уравнения Λ(х)=0 в поле GF(2).
1
0
1
1
В случае ν=1, уравнение Λx+Λ=0 линейно, единственный его корень Х'=1/Λ и локатор ошибки равен Λ.
Для решения уравнений любой степени можно применять процедуру Ченя, которая заключается в последовательной подстановке всех возможных значений величин, обратных к локаторам, в многочлен Λ(х) и проверке результата на нулевое значение.
Вычисление значения многочлена в точке x=X' можно выполнить по схеме Горнера.
Нахождение значений ошибок и их исправление
i
После определения на предыдущем этапе локаторов ошибок нелинейная система уравнений (1) становится линейной относительно неизвестных Y и может решаться известными методами решения линейных систем. Более эффективная процедура предложена Форни.
Значения ошибок получаются из равенства:
где Λ'(х) - формальная производная многочлена Λ(х); Ω(x) - многочлен значений ошибок,  - многочлен синдрома.
Процедура итеративного декодирования, реализуемая заявляемым устройством, предусматривает выполнение N итераций. Алгоритм первой итерации предусматривает выполнение следующих шагов:
h
1) Вычисление полинома синдромов горизонтальных S(x) кодовых слов;
2) Вычисление полинома синдромов вертикальных  кодовых слов;
3) Обнуление счетчика вертикальных кодовых слов
4) Инициализация массива флагов обнаруженных ошибок detect'=false;
5) Получение полиномов локаторов  и значений ошибок  для текущего вертикального кодового слова с использованием алгоритма Берлекэмпа-Месси. Если степень полинома локаторов  больше значения  формируется отказ от декодирования  кодового слова, массиву обнаруженных ошибок detect присваиваются значения false и осуществляется переход к п. 22;
6) Обнуление счетчика символов вертикального кодового слова
7) Обнуление счетчика разрешенных корней полинома
8) Вычисление значений полиномов  в точке
9) Если значение полинома локаторов ошибок  в точке  то осуществляется переход к п. 10, в противном случае значения  и осуществляется переход к п. 14;
10) Вычисление значения ошибки  локатора ошибки  в позиции  с использованием процедуры Форни;
11) Сохранение значения ошибки
12) Установка флага обнаружения ошибки
13) Инкремент счетчика разрешенных корней полинома root=root+1;
14) Если флаг массива обнаруженных ошибок  выполняются п. 15-17, в противном случае осуществляется переход к п. 18;
15) Исправление ошибки в вертикальном кодовом слове
h
16) Вычисление значения модификации синдрома  горизонтального кодового слова ΔS(x) для каждого компонента синдрома  где
17) Модификация синдрома  горизонтального кодового слова
18)  Если  осуществляется переход к п. 8;
19) Если значение счетчика разрешенных корней полинома  равняется степени полинома, то ошибки обнаружены верно. В этом случае осуществляется переход к п. 20, в противном случае  и переход к п. 22;
20) Сброс синдрома  вертикального кодового слова в 0;
21) detect'=detect;
22)  Если  то переход к п. 5;
23) Обнуление счетчика символов вертикального кодового слова
24) Если флаг массива обнаруженных ошибок  выполняются п. 25-27, в противном случае осуществляется переход к п. 28;
25) Исправление ошибки в вертикальном кодовом слове
h
26) Вычисление значения модификации синдрома  горизонтального кодового слова ΔS(х) для каждого компонента синдрома  где
jh
jh
jh
27) Модификация синдрома  горизонтального кодового слова S=S+ΔS;
28)  Если  то возвращаемся к п. 24;
h
29) Обнуление счетчика горизонтальных кодовых слов j=0;
30) Инициализация массива флагов обнаруженных ошибок detect'=false;
h
h
h
h
31) Получение полиномов локаторов Δ(x) и значений ошибок Ω(x) для текущего горизонтального кодового слова с использованием алгоритма Берлекэмпа-Месси. Если степень полинома локаторов Δ(x) больше значения  формируется отказ от декодирования j-го кодового слова, массиву обнаруженных ошибок detect присваиваются значения false и осуществляется переход к п. 49;
h
32) Обнуление счетчика символов горизонтального кодового слова i=0;
h
33) Обнуление счетчика разрешенных корней полинома Δ(x)root=0;
h
h
h
34) Вычисление значений полиномов Δ(x), Ω(x), Λ'(х) в точке
h
35) Если значение полинома локаторов ошибок Λ(x) в точке  то осуществляется переход к п. 36, в противном случае  и осуществляется переход к п. 40;
h
h
h
36) Вычисление значения ошибки y, локатора ошибки x в позиции i с использованием процедуры Форни;
37) Сохранение значения ошибки
38) Установка флага обнаружения ошибки
39) Инкремент счетчика разрешенных корней полинома root=root+1;
40) Если флаг массива обнаруженных ошибок  выполняются п. 41-44, в противном случае осуществляется переход к п. 45;
41) Исправление ошибки в горизонтальном кодовом слове
h
h
42) Если i<k, то выполняются п. 43-44, в противном случае осуществляется переход к п. 45.
0
43) Вычисление значения модификации синдрома  вертикального кодового слова  для каждого компонента синдрома ΔS,  где
44) Модификация синдрома  вертикального кодового слова
h
h
h
h
45) i=i+1. Если i<n, то переход п. 34;
h
46) Если значение счетчика разрешенных корней полинома Λ(x)root равняется степени полинома, то ошибки обнаружены верно. В этом случае осуществляется переход к п. 47, в противном случае  и осуществляется переход к п. 49;
h
47) Сброс синдрома j-го горизонтального кодового слова в 0;
48) detect'=detect;
h
h
49) j=j+1. Если  то переход к п. 31;
h
50) Обнуление счетчика символов горизонтального кодового слова i=0;
51) Если флаг массива обнаруженных ошибок  выполняется п. 52, в противном случае осуществляется переход к п. 55;
52) Исправление ошибки в горизонтальном кодовом слове
0
53) Вычисление значения модификации синдрома  вертикального кодового слова  для каждого компонента синдрома ΔS,  где
54) Модификация синдрома  вертикального кодового слова
h
h
h
h
55) i=i+1. Если i<n, то переход к п. 51, в противном случае начинается следующая итерация с п. 3.
Предлагаемая процедура декодирования позволяет эффективно решить задачу исправления небольших пакетов ошибок, возникающих в результате физических повреждений носителей в процессе производства, эксплуатации и хранения.
Заявляемое устройство декодирования произведений РС-кодов содержит: 1-ый декодер 1000, 2-ой декодер 2000, … N-ый декодер N000.
На вход 1-го декодера 1000 в течение одного кадра построчно поступают символы блоков данных, принимаемых из канала. При этом им выполняется первая итерация процедуры декодирования, за исключением п. 44. На вход второго декодера передаются исправленные блоки данных, модифицированные синдромы горизонтальных кодовых слов HM-syn_del, номера вертикальных кодовых слов, в которых происходило исправление ошибок  эти же номера с задержкой на один такт  значения модификаций синдромов вертикальных кодовых слов  и синдромы вертикальных кодовых слов VM-syn_del.
Вторым и последующими декодерами выполняются вторая и последующие итерации процедуры декодирования.
На выходе (DBOut) последнего декодера N000 формируются исправленные блоки данных (CorDB).
Первый декодер 1000 (фиг. 2) содержит: буферную память первого декодера 1001, первый сумматор элементов поля Галуа первого декодера 1002, второй сумматор элементов поля Галуа первого декодера 1003, блок вычисления синдромов горизонтальных кодовых слов 1100, блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200, блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004, блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300, блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400, блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500, блок вычисления и хранения синдромов вертикальных кодовых слов 1600, блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005, блок нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700, блок хранения значений ошибок вертикальных кодовых слов первого декодера 1800.
Буферная память первого декодера 1001 предназначена для временного хранения принятых из канала символов исправляемых кодовых слов. Может быть реализована известным образом на основе двухпортовой RAM.
h
Блок вычисления синдромов горизонтальных кодовых слов 1100 (фиг. 8) выполняет 1-ый пункт алгоритма декодирования, заключающийся в вычислении синдромов горизонтальных кодовых слов S(x). Может быть реализован известным образом по схеме Горнера. [Егоров С.И. Коррекция ошибок в информационных каналах периферийных устройств ЭВМ. Монография. Курск: Курск, гос. техн. ун-т, 2008. - 252 с]
Блок вычисления и хранения синдромов вертикальных кодовых слов 1600 (фиг. 4) выполняет 2-ой пункт алгоритма декодирования, заключающийся в вычислении синдромов вертикальных кодовых слов  Вычисленные синдромы передаются блоку вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005.
Блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов первого декодера 1005 выполняет 5-ый пункт алгоритма декодирования, заключающийся в вычислении полиномов локаторов  и значений ошибок  вертикальных кодовых слов с использованием алгоритма Берлекэмпа-Месси [Берлекэмп Э. Алгебраическая теория кодирования. Пер. с англ. - М.: Мир. 1971. - 477 с].
h
h-
Блок нахождения локаторов и значений ошибок вертикальных кодовых слов первого декодера 1700 выполняет процедуру дискретного преобразования Фурье полиномов  а также формальной производной  При этом для всех возможных значений локаторов ошибок вычисляются значения полиномов  (8-ой пункт алгоритма декодирования). Выполняется проверка равенства значения полинома локаторов ошибок нулю (п. 9 алгоритма декодирования) и, в случае положительного прохождения проверки, фиксируется локатор ошибки  и для него вычисляется значение ошибки  по формуле Форни (10-ый пункт алгоритма декодирования). Кроме этого блок 1700 формирует управляющие сигналы "запись модифицированных синдромов (wr_SM)" и "чтение модифицированных синдромов (rd_SM)", а также передает номера горизонтальных кодовых слов j и jdel, в которых были обнаружены ошибки для последующей модификации их синдромов блоком хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200.
Блок хранения значений ошибок вертикальных кодовых слов первого декодера 1800 (фиг. 7) предназначен для промежуточного хранения значений ошибок в вертикальных кодовых словах для последующего исправления их в блоке данных с использованием сумматора элементов поля Галуа первого декодера 1003.
Блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400 (фиг. 5) выполняет 16-ый, 26-ой пункты алгоритма декодирования. Используя локаторы и значения ошибок вертикальных кодовых слов вычисляются значения модификаций синдромов горизонтальных кодовых слов ΔSh(x).
Блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200 (фиг. 3) выполняет 17-ый и 27-ой пункты алгоритма декодирования. Значения компонент синдромов, хранимые в блоках памяти с произвольным доступом суммируются со значениями модификаций синдромов, вычисленных блоком 1400, после чего повторно записываются в память и последовательно передаются следующему блоку 1004.
v
h
h
h
Блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1004 работает аналогично блоку 1005 и выполняет 31-ый пункт алгоритма декодирования. Вычисленные за r итераций полиномы локаторов Λ(x) и ошибок Ω(x) передаются следующему блоку 1300. В случаях, когда степень полинома локаторов Λ(x) больше значения  блок 1004 формирует отказ от декодирования.
h
h
h
h
h
h
h
h
Блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300 (фиг. 9) выполняет преобразование Фурье многочленов Λ(x), Ω(х), а также формальной производной Λ'(x). При этом для всех возможных значений локаторов ошибок вычисляются значения полиномов Λ(x), Ω(x), Λ'(х) (34-ый пункт алгоритма декодирования). Выполняется проверка равенства значения полиномов локаторов ошибок нулю (п. 35 алгоритма декодирования) и, в случае положительного прохождения проверки, фиксируется локатор ошибки x и для него вычисляется значение ошибок y по формуле Форни (36-ой пункт алгоритма декодирования). Управляющие блоком модификации синдромов сигналы формируются аналогичным с блоком 1700 образом. При этом модификация синдромов выполняется при условии
h
Блоки 1002 и 1003, являющиеся сумматорами элементов поля Галуа, выполняют 15-ый, 25-ый, 41-ый и 52-ой пункты алгоритма декодирования, заключающиеся в исправлении ошибочных символов путем суммирования значений ошибок в горизонтальных y (блок 1002) и вертикальных  кодовых словах (блок 1003) со значениями символов принятого из канала блока данных, выдаваемых буферной памятью данных первого декодера 1001. Исправленный блок данных при этом передается на вход следующего декодера.
Блок вычисления значений модификаций синдромов вертикальных кодовых слов 1500 (фиг. 6) выполняет 43-ий и 53-ий пункты алгоритма декодирования, заключающийся в вычислении значений  передаваемых следующему декодеру для модификации синдромов вертикальных кодовых слов.
Второй декодер 2000 (фиг. 2) содержит: буферную память второго декодера 2001, первый сумматор элементов поля Галуа второго декодера 2002, второй сумматор элементов поля Галуа второго декодера 2003, блок хранения и модификации синдромов горизонтальных кодовых слов второго декодера 2200, блок вычисления полиномов локаторов и значений ошибок горизонтальных кодовых слов второго декодера 2004, блок нахождения локаторов и значений ошибок горизонтальных кодовых слов второго декодера 2300, блок вычисления значений модификаций синдромов горизонтальных кодовых слов второго декодера 2400, блок вычисления значений модификаций синдромов вертикальных кодовых слов второго декодера 2500, блок вычисления и хранения синдромов вертикальных кодовых слов 2600, блок вычисления полиномов локаторов и значений ошибок вертикальных кодовых слов второго декодера 2005, блок нахождения локаторов и значений ошибок вертикальных кодовых слов второго декодера 2700, блок хранения значений ошибок вертикальных кодовых слов второго декодера 2800.
Блоки 2-го декодера идентичны блокам 1 -го декодера, за исключением одного блока.
Блок хранения и модификации синдромов вертикальных кодовых слов второго декодера 2600 выполняет п. 44, п. 54 алгоритма декодирования, заключающийся в модификации полинома синдромов вертикальных кодовых слов на основе данных, полученных от 1-го декодера.
Устройство и работа последующих декодеров аналогична устройству и работе второго декодера.
Представленное устройство декодирования произведения кодов Рида-Соломона работает по конвейерному принципу. Все составляющие его декодеры работают параллельно, обрабатывая последовательно принятые из канала различные блоки данных. Каждый декодер выполняет итерацию алгоритма декодирования, соответствующую его номеру (1-ый декодер выполняет первую итерацию, 2-ой декодер - вторую и т.д.).
Принцип работы устройства декодирования иллюстрируется фиг. 11 и фиг. 12. Для наглядности временные диаграммы изображены для случая обработки блоков данных состоящих из 4 строк и 10 столбцов.
Сначала в 1-ом кадре (кадр соответствует времени поступления одного блока данных) первый блок данных записывается в буферную память первого декодера 1001 и одновременно в темпе поступления в устройство обрабатывается блоком вычисления синдромов горизонтальных кодовых слов 1100 и блоком вычисления и хранения синдромов вертикальных кодовых слов 1600.
Затем во 2-ом кадре второй блок данных записывается в буферную память первого декодера 1001 и поступает в блоки 1100 и 1600.
h
Одновременно с этим выполняется декодирование k, вертикальных кодовых слов первого блока данных. Для каждого вертикального кодового слова:
- находятся полиномы локаторов  и значений ошибок  (блок V-BMA 1005);
- вычисляются локаторы  и значения  ошибок (блок V-ChienForney 1700);
- номера символов вертикальных кодовых слов  и значения ошибок в них  сохраняются в блоке хранения значений ошибок вертикальных кодовых слов (V-XY RAM 1800);
- модифицируются синдромы горизонтальных кодовых слов (блок Н-Δsyn 1400, H-syn RAM 1200).
В 3-ем кадре блоки 1005, 1700,1800,1400 и 1200 обрабатывают второй блок данных.
v
Одновременно с этим выполняется декодирования n горизонтальных кодовых слов первого блока данных. Для каждого горизонтального кодового слова:
h
h
- находятся полиномы локаторов Λ(x) и значений ошибок Ω(x) (блок Н-ВМА 1004);
h
h
- вычисляются локаторы x и значения y ошибок (блок Н-ChienForney 1300);
- модифицируются синдромы вертикальных кодовых слов (блок V-Δsyn 1500, V-syn RAM 2600);
- исправляются ошибки в горизонтальных кодовых словах использованием сумматора элементов поля Галуа 1002.
Одновременно с этим исправляются ошибки в вертикальных кодовых словах, считанные из блока V-XY RAM 1800, с использованием сумматора элементов поля Галуа 1003.
Одновременно символы исправленного на первой итерации блока данных передаются 2-му декодеру 2000.
В 4-ом кадре второй декодер выполняет вторую итерацию декодирования для вертикальных кодовых слов первого блока данных.
В 5-ом кадре второй декодер выполняет вторую итерацию декодирования для горизонтальных кодовых слов первого блока данных и исправляет ошибки в первом блоке данных. Одновременно символы исправленного на второй итерации блока данных передаются следующему декодеру.
В последующих кадрах устройство декодирования обрабатывает блоки данных аналогичным образом.
Приведем в соответствии с изобретением описание устройства и работы основных нетривиальных блоков декодера.
Блок хранения и модификации синдромов горизонтальных кодовых слов первого декодера 1200
h
Функциональная схема блока хранения и модификации синдромов горизонтальных кодовых слов первого декодера (H-syn RAM) приведена на фиг. 3. Блок содержит r-разрядный сумматор элементов поля Галуа 1201; два пятисекционных коммутатора 1202, 1205; два блока двухпортовой памяти с произвольным доступом 1203, 1206; два двухвходовых коммутатора 1204,1207; двоичный счетчик на  1208.
Блок хранения и модификации синдромов горизонтальных кодовых слов осуществляет хранение и модификацию синдромов горизонтальных кодовых слов принятых от блока 1100.
Каждый из блоков памяти 1203 и 1205 работает в одном из двух режимов.
h
jh
В первом режиме осуществляется модификация синдромов горизонтальных кодовых слов, вычисленных и сохраненных в блок памяти в предыдущем кадре. Из блока памяти читаются значения компонент синдрома j-го горизонтального кодового слова, в котором при декодировании вертикального кодового слова была обнаружена ошибка. С помощью сумматора элементов поля Галуа 1201 эти компоненты суммируются со значениями модификаций синдромов горизонтальных кодовых слов ΔS, вычисленными блоком 1400. После чего модифицированные значения компонент синдрома записываются в ту же ячейку блока памяти.
Во втором режиме хранящиеся в блоке памяти модифицированные синдромы горизонтальных кодовых слов выдаются через коммутатор 1207 в блок вычисления полиномов локаторов и значений ошибок 1004.
В то время, как один блок памяти с произвольным доступом участвует в модификации синдромов одного блока данных, второй блок памяти хранит модифицированные в предыдущем кадре синдромы предшествующего блока данных.
h
h-
h
Переключение режимов работы выполняется коммутаторами 1202, 1204, 1205, 1207 с помощью управляющего сигнала "СМх". Коммутаторы 1202 и 1205 управляют входными сигналами, в то время как коммутаторы 1204 и 1207 - выходными и определяют какой из блоков памяти работает в режиме записи синдромов, а какой в режиме модификации. При поступлении на управляющие входы коммутаторов значения логической «1» блок памяти с произвольным доступом 1203 выполняет функцию модификации синдромов, а блок 1206 - записи синдромов. При этом на первый вход DI блока памяти 1203 поступают значения модифицированных синдромов с выхода сумматора 1201, на второй вход A W поступают адреса для записи синдромов со входа j, на третий вход AR поступают адреса для чтения синдромов со входа jdel, на четвертый вход WR подается управляющий сигнал "разрешение записи модифицированного синдрома wr_SM", на пятый вход RD подается управляющий сигнал "разрешение чтения модифицированного синдрома rd_SM", в то время как на первый вход DI блока памяти с произвольным доступом 1206 подаются значения вычисленных синдромов со входа S, на второй вход AW поступают адреса для записи синдромов с выхода счетчика 1208, на третий вход AR поступают адреса для чтения синдромов с выхода счетчика 1208, на четвертый вход WR подается управляющий сигнал "разрешение записи синдрома wr_S", на пятый вход RD подается управляющий сигнал "разрешение чтения синдрома rd_S". При изменении значения управляющего сигнала на логический «0» происходит обмен выполняемыми RAM функциями и соответственно значениями на входах.
Блок вычисления и хранения синдромов вертикальных кодовых слов 1600
h
Функциональная схема блока вычисления и хранения синдромов вертикальных кодовых слов (V-syn Horner/RAM) 1600 приведена на фиг. 4. Блок содержит блок вентилей 1601; r умножителей на постоянный коэффициент 1602.1-1602.r; r m-разрядных сумматоров элементов поля Галуа 1603.1-1603.r; логический элемент НЕ 1604; два двоичных счетчика на k 1605; два блока памяти с произвольным доступом 1606, 1610; четыре двухвходовых коммутатора 1607, 1609, 1611, 1612; два двухсекционных коммутатора 1608, 1613.
Блок вычисления и хранения синдромов вертикальных кодовых слов осуществляет вычисление и хранение синдромов вертикальных кодовых слов блоков данных, поступивших на вход 1-го декодера.
Каждый из блоков памяти 1606 и 1610 работает в одном из двух режимов.
v
h
h
v
В первом режиме осуществляется вычисление синдромов вертикальных кодовых слов по схеме Горнера. Из блока памяти читаются промежуточные значения компонент синдрома j-го вертикального кодового слова. Эти компоненты умножаются на постоянные коэффициенты (блоками 1602.1-1602.r) и суммируются с поступающим на вход блока вычисления и хранения синдромов вертикальных кодовых слов 1600 символом кодового слова. После чего новые значения компонент синдрома записываются в ту же ячейку блока памяти. При изменении j от 0 до k-1 вычисляются новые промежуточные значения компонент синдромов всех вертикальных кодовых слов. Этот процесс повторяется при поступлении в устройство декодирования каждой новой строки (горизонтального кодового слова) блока данных (j=0…n-1). При обработке первой строки на входы умножителей на постоянные коэффициенты 1602.1-1602.r обеспечивается подача нулевых значений с помощью блока вентилей 1601 (при активном сигнале init_S).
Во втором режиме хранящиеся в блоке памяти синдромы вертикальных кодовых слов выдаются через коммутатор 1611 в блок вычисления полиномов локаторов и значений ошибок 1005.
В то время, как один блок памяти участвует в формировании синдромов, второй блок памяти хранит вычисленные в предыдущем кадре синдромы предшествующего блока данных.
Смена режимов работы блоков памяти осуществляется с помощью коммутаторов 1607, 1608, 1609, 1611, 1612, 1613. Поступающий на управляющие входы коммутаторов сигнал СМх определяет, какой из блоков памяти будет работать в режиме вычисления, а какой в режиме хранения синдромов. Значение логической «1» на управляющих входах коммутаторов соответствует работе блока памяти 1606 в режиме вычисления синдромов, а блока 1610 в режиме хранения. При этом на первые входы DI обоих блоков памяти с произвольным доступом поступают промежуточные значения синдромов. На второй вход А блока памяти 1606 с выхода счетчика 1605 поступают адреса записываемых промежуточных значений синдромов вертикальных кодовых слов. На третий вход WR с устройства управления поступает управляющий сигнал "разрешение записи промежуточных значений синдромов wr_SI". На четвертый вход RD поступает управляющий сигнал "разрешение чтения промежуточных значений синдромов rd_SI". При этом на второй вход А блока памяти 1610 с выхода счетчика 1614 поступают адреса считываемых синдромов вертикальных кодовых слов. На третий вход WR подается сигнал логического «0», а на четвертый вход RD поступает управляющий сигнал "разрешение чтения синдромов кодовых слов rd_S". Коммутаторы 1609 и 1611 переключают направления передачи значений с выходов блоков памяти с произвольным доступом. При поступлении на их управляющие входы значения логической «1» значения, формируемые на выходе блока памяти 1606, передаются на второй вход блока вентилей 1601, а выход блока памяти 1610 является выходом блока 1600 (VM-syn). При изменении значения управляющего сигнала "СМх" на логический «0» происходит переключение режимов работы блоков памяти.
Блок вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера 1400
Функциональная схема блока вычисления значений модификаций синдромов горизонтальных кодовых слов первого декодера (H-Δsyn) 1400 приведена на фиг. 5. Блок содержит: тринадцать перемножителей элементов поля Галуа 1401.1-1401.9, 1403.1-1403.4; четыре квадратора 1402.1-1402.4.
h
h
h
h
Блок вычисления значений модификаций синдромов горизонтальных кодовых слов осуществляет вычисление значений модификаций синдромов горизонтальных кодовых слов  для каждого компонента синдрома  Поступающие на вход блока локаторы ошибок горизонтальных кодовых слов x возводятся в степень, соответствующую номеру компоненты синдрома, и затем умножаются на значение ошибки y. Вычисленные значения модификаций синдромов горизонтальных кодовых слов считываются из блока 1400 через общую шину ΔS, организованную в r m-разрядных групп.
Блок вычисления значений модификаций синдромов вертикальных кодовых слов первого декодера 1500
Функциональная схема блока вычисления значения модификаций синдромов вертикальных кодовых слов первого декодера (V-Δsyn) 1500 приведена на фиг. 6. Блок содержит: двадцать два перемножителя элементов поля Галуа 1501.1-1501.15, 1503.1-1503.7; семи квадраторов 1502.1-1502.7.
Для каждого компонента синдрома  блок вычисления значений модификаций синдромов вертикальных кодовых слов осуществляет вычисление значений модификаций синдромов вертикальных кодовых слов
Поступающие на вход блока локаторы ошибок вертикальных кодовых слов  возводятся в степень, соответствующую номеру компоненты синдрома, а затем перемножаются на значение ошибки  После этого вычисленные значения модификаций синдромов вертикальных кодовых слов считываются из блока 1500 через общую шину  организованную в  m-разрядных групп.
Блок хранения значений ошибок вертикальных кодовых слов первого декодера 1800
h
Функциональная схема блока хранения значений ошибок вертикальных кодовых слов первого декодера (V-XY RAM) 1800 представлена на фиг. 7. Блок содержит: два блока памяти с произвольным доступом 1801, 1806; два двухсекционных коммутатора 1802, 1807; четыре логических элемента И 1803, 1804, 1811, 1812; двухвходовый коммутатор 1805, два двоичных счетчика на k 1808,1809; двоичный счетчик на  1810.
Блок хранения значений ошибок вертикальных кодовых слов служит для временного адресного хранения вычисленных значений ошибок вертикальных кодовых слов  в блоках памяти с произвольным доступом для последующего исправления ошибок в вертикальных кодовых словах сумматором элементов поля Галуа 1003.
Каждый из блоков памяти 1801 и 1806 работает в одном из двух режимов.
h
h
В первом режиме поступающие на вход  от блока 1700 значения ошибок вертикальных кодовых слов сохраняются в блок памяти по адресу, формируемому двумя координатами. Позиция ошибки по горизонтали определяется значением на втором входе блока памяти  поступающим со счетчика 1808. Позиция ошибки по вертикали определяется локатором ошибки и передается блоком 1700 на вход j блока хранения значений ошибок вертикальных кодовых слов первого декодера 1800, который через коммутатор поступает на третий вход блока памяти (A). Ошибки записываются в памяти по столбцам в порядке нахождения их блоком 1700. Этот процесс длится в течение 1 кадра (обработки всех вертикальных кодовых слов одного блока данных).
v
h
Во втором режиме сохраненные в ячейках памяти значения ошибок вертикальных кодовых слов через коммутатор 1805 передаются блоку 1003. При этом значения ошибок выдаются построчно в темпе поступления в блок 1003 символов горизонтальных кодовых слов. Адреса считываемых значений ошибок формируются счетчиками 1809 и 1810 при поступлении на их входы от устройства управления сигналов inc_A_R и inc_A_R соответственно. При этом на выходе счетчика 1809 формируются позиции значений ошибок по горизонтали, в то время как позиция считываемых значений ошибок по вертикали формируются счетчиком 1810.
В то время, как в один блок памяти с произвольным доступом записываются значения ошибок вертикальных кодовых слов одного блока данных по столбцам, на выходе второго блока памяти формируются значения ошибок вертикальных кодовых слов предыдущего блока данных построчно.
V
V
H
Двоичные счетчики 1808-1810 предназначены для адресации записываемых или считываемых символов. При поступлении на вход счетчика 1808 управляющего сигнала "инкремент номера столбца данных блока данных произведения PC-кодов (inc_A_W)" на его выходе формируется позиция записываемого символа по горизонтали. При поступлении на вход счетчика 1809 управляющего сигнала "инкремент номера столбца данных блока данных произведения PC-кодов (inc_A_R)" на его выходе формируется позиция считываемого символа по горизонтали. При поступлении на вход счетчика 1810 управляющего сигнала "инкремент номера строки данных блока данных произведения PC-кодов (inc_A_R)" на его выходе формируется позиция считываемого символа по вертикали.
V
H
V
H
Смена режимов работы осуществляется с помощью коммутаторов 1802, 1805 и 1807, а также логических элементов И 1803, 1804, 1811 и 1812. Поступающий на управляющие входы коммутаторов сигнал СМх определяет, какой из блоков памяти будет работать в режиме записи, а какой в режиме хранения значений ошибок вертикальных кодовых слов. Значение логической «1» на управляющих входах коммутаторов соответствует работе блока памяти 1801 в режиме записи, а блока 1806 в режиме хранения. При этом на первые входы DI обоих блоков поступают значения ошибок вертикальных кодовых слов. На второй вход A блока памяти 1801 с первого выхода коммутатора 1802 поступают позиции записываемых символов по горизонтали. На второй вход A блока памяти 1801 со второго выхода коммутатора 1802 поступают позиции записываемых символов по вертикали. На четвертый вход WR блока памяти 1801 с выхода логического элемента И 1803 поступает управляющий сигнал "разрешение записи". На пятый вход RD блока памяти 1801 с выхода логического элемента И поступает сигнал логического «0». В это время на второй вход A блока памяти 1806 с первого выхода коммутатора 1807 поступают позиции считываемых символов по горизонтали. На третий вход A блока памяти 1806 со второго выхода коммутатора 1807 поступают позиции считываемых символов по вертикали. На четвертый вход WR блока памяти 1806 с выхода логического элемента И 1811 поступает сигнал логического «0». На пятый вход RD блока памяти 1806 с выхода логического элемента И 1812 поступает управляющий сигнал "разрешение чтения".
Коммутатор 1805 определяет выход какого из блоков хранения 1801 или 1806 будет являться выходом блока хранения значений ошибок вертикальных кодовых слов 1800. При поступлении на его управляющий вход сигнала логической «1» на выход блока 1800 передаются значения с выхода блока памяти 1801.
При изменении значения управляющего сигнала "СМх" на логический «0» происходит переключение режимов и блоки памяти 1801 и 1806 меняются выполняемыми функциями.
Блок вычисления синдромов горизонтальных кодовых слов 1100
Функциональная схема блока вычисления синдромов горизонтальных кодовых слов (H-syn Horner) 1100 приведена на фиг. 8. Блок содержит: r умножителей на постоянный коэффициент 1101.1-1101.r; r сумматоров элементов поля Галуа 1102.1-1102.r; r регистров-защелок 1103.1-1103.r.
h
Блок вычисления синдромов горизонтальных кодовых слов реализован на основе схемы Горнера. Компоненты синдрома вычисляются как значения многочлена r(x) в точках
j
h
h
h
Компоненты синдрома вычисляются параллельно путем умножения принятого символа кодового слова на постоянный коэффициент α и последующего сложения результата со следующим поступившим символом. За n тактов на выходе блока формируется синдром горизонтального кодового слова S, считываемый через шину данных разрядностью r×m бит.
Блок нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера 1300
h
Функциональная схема блока нахождения локаторов и значений ошибок горизонтальных кодовых слов первого декодера (H-Chien Forney) 1300 представлена на фиг. 9. Блок содержит: три модуля дискретного преобразования Фурье 1310, 1320, 1330; инвертор элементов поля Галуа 1301; перемножитель элементов поля Галуа 1302; блок вентилей 1303; сдвиговый регистр 1304; D-триггер 1305, селектор нулевого элемента поля Галуа 1306; два логических элемента И 1307, 1308; блок сравнения 1309; двоичный счетчик на n 1310; два регистра-защелки 1311, 1312; регистр 1314; умножитель на постоянный коэффициент 1313.
Блок предназначен для нахождения локаторов (и позиций) и вычисления значений ошибок.
(n-1)
Счетчик 1310 предназначен для перебора возможных значений позиций ошибок, а регистр 1314 и умножитель на постоянный коэффициент 1313 для перебора возможных значений локаторов ошибок. По сигналу Set регистр 1314 устанавливается в состояние α.
h
h
Нахождение локаторов и позиций ошибок осуществляется следующим образом. Модуль дискретного преобразования Фурье многочлена Λ(x) 1330 вычисляет последовательность значений  Нулевое значение многочлена, определяемое селектором нулевого элемента поля Галуа 1306, указывает на наличие ошибочного символа в позиции i. В этом случае по формуле Форни [Егоров С.И. Коррекция ошибок в информационных каналах периферийных устройств ЭВМ. Монография. Курск: Курск, гос. техн. ун-т, 2008. - 252 с] с помощью блоков 1310, 1320, 1301 и 1302 вычисляется значение ошибки, которое запоминается в сдвиговом регистре 1304. Синхронно в этот же регистр помещается флаг обнаруженной ошибки, формируемый с помощью блоков 1307, 1308 и 1309. Блок сравнения 1309 необходим для блокировки флага в случае обнаружения ошибок в области проверочных символов горизонтального кодового слова.
Управляющий сигнал "флаг обнаруженной ошибки (error_flag)" предназначен для подсчета количества обнаруженных ошибок. В случае несовпадения числа обнаруженных ошибок со степенью полинома локаторов фиксируется ситуация наличия неисправимых ошибок в кодовом слове. При наличии такой ситуации при помощи управляющего сигнала "res_y" обнуляется содержимое сдвигового регистра 1304. Тем самым предотвращается ложная коррекция ошибок.
h
При отсутствии неисправимых ошибок в кодовом слове задержанные с помощью сдвигового регистра 1304 значения ошибки y используются для коррекции ошибок блоком 1002. Также в этом случае задержанные значения флага обнаруженных ошибок используются для модификации синдромов вертикальных кодовых слов.
Регистр-защелка 1312 необходим для временного хранения синдромов горизонтальных кодовых слов. В случае успешной коррекции содержимое регистра обнуляется с помощью управляющего сигнала "res_syn".
Модуль дискретного преобразования Фурье 1330
h
h
Функциональная схема модуля дискретного преобразования Фурье (Модуль ДПФ) многочлена Λ(x) 1330 (модули дискретного преобразования Фурье полиномов Ω(x) 1320 и  1310 реализуются по точной такой же схеме) представлена на фиг. 10. Блок содержит: блок вентилей 1331; t блоков логических элементов ИЛИ 1332.1-1332.t; t+1 регистров-защелок 1333.0-1333.t; 2*t умножителей на постоянный коэффициент 1334.1-1334.t, 1336.1-1336.t; сумматор элементов поля Галуа 1335.
-(n-1)
Модуль дискретного преобразования Фурье предназначен для вычисления значений полинома в точках  Перед началом работы модуля ДПФ 1330 при поступлении сигнала управления "reset" регистры 1333.0-1333.t обнуляются. Затем, при поступлении на второй вход блока вентилей 1331 управляющего сигнала "load" через блоки логических элементов ИЛИ 1332.1-1332.t происходит запись в регистры коэффициентов полинома  умноженных на  (р - степень неизвестной при соответствующем коэффициенте полинома). Умножение осуществляется с помощью блоков умножения на постоянные коэффициенты 1336.1-1336.t Сумма всех регистров 1333.0-1333.t сразу же даст значение полинома в точке x=α на выходах сумматора элементов поля Галуа 1335.
p
-(n-2)
Затем содержимое каждого регистра 1333.0-1333.t соответственно умножается на a с помощью умножителей на постоянные коэффициенты 1334.1-1334.t. После этого сумма всех регистров 1330.0-1333.t даст значение полинома в точке x=α.
o
Процесс повторяется до тех пор, пока не будет вычислено значение полинома в точке x=α.
Устройство декодирования произведений PC-кодов представляет собой синхронный потоковый декодер, обрабатывающий входные данные в темпе их поступления. Выходные данные тактируются частотой входных данных, и, следовательно, выдаются с такой же скоростью. Задержка данных в устройстве на каждом декодере равна времени поступления двух блоков, а задержка всего декодера времени поступления 2*N блоков (N - количество декодеров). Емкость буферной памяти 1001, 2001, …, N001, будет при этом равна количеству символов в двух блоках данных.
Предлагаемое устройство состоит из простых по своему функциональному назначению элементов и поэтому легко может быть реализовано на ПЛИС или специализированной БИС.
Результаты исследования корректирующей способности заявляемого устройства декодирования произведений кодов Рида-Соломона в канале с аддитивным белым гауссовским шумом (AWGN) и модуляцией BPSK приведены на фиг. 14.
h
h
h
h
h
h
8
Имитационным моделированием исследовалось декодирование произведения кодов Рида-Соломона, используемое в оптических дисках DVD. Блоки данных DVD содержит 208 горизонтальных кодовых слов Рида-Соломона с параметрами n=182, k=172, d=11 и 172 вертикальных кодовых слов Рида-Соломона с параметрами n=208, k=182, d=17, определенных над конечным полем GF(2).
b
На графике logBlER обозначает десятичный логарифм вероятности неисправимых ошибок блоков данных, E/No - отношения энергии на информационный бит к односторонней спектральной плотности шума.
b
b
Кривая 1 соответствует классическому декодеру произведения кодов Рида-Соломона, кривая 2 - заявляемому устройству декодирования. Из графика видно, что энергетический выигрыш составляет 1,4 dB по сравнению с классическим декодером. При этом среднее число исправляемых ошибочных символов для классического декодера достигает 550,2 при E/No=6,85, а для заявляемого устройства это значение достигает 1900,63 при E/No=5,5.