RU2441318C1 - Device to decode reed-solomon codes - Google Patents
Device to decode reed-solomon codes Download PDFInfo
- Publication number
- RU2441318C1 RU2441318C1 RU2010134469/08A RU2010134469A RU2441318C1 RU 2441318 C1 RU2441318 C1 RU 2441318C1 RU 2010134469/08 A RU2010134469/08 A RU 2010134469/08A RU 2010134469 A RU2010134469 A RU 2010134469A RU 2441318 C1 RU2441318 C1 RU 2441318C1
- Authority
- RU
- Russia
- Prior art keywords
- inputs
- outputs
- block
- input
- switch
- Prior art date
Links
Images
Abstract
Description
Изобретение относится к системам телекоммуникаций и вычислительной технике и может найти применение в устройствах приема информации из канала передачи или воспроизведения информации с высоким уровнем ошибок.The invention relates to telecommunication systems and computer engineering and may find application in devices for receiving information from a transmission channel or reproducing information with a high level of errors.
В настоящее время на практике применяются устройства декодирования кодов Рида-Соломона (PC-кодов), реализующие классические алгоритмы декодирования (Питерсона-Горенстейна-Цирлера, Берлекэмпа-Месси, Евклида), позволяющие исправлять не более t ошибочных символов в кодовом слове (t=(d-1)/2, d - минимальное кодовое расстояние).Currently, in practice, Reed-Solomon code decoding devices (PC codes) are used that implement the classical decoding algorithms (Peterson-Gorenstein-Zirler, Berlekamp-Messi, Euclid) that allow correcting no more than t erroneous characters in the codeword (t = (d-1) / 2, d is the minimum code distance).
Известно устройство списочного декодирования кодов Рида-Соломона, исправляющее ошибки за границей половины минимального кодового расстояния t, [1], содержащее: входной блок, блок декодирования и выходной блок. Используемый метод декодирования основывается на нахождении ненулевого элемента в ядре структурированной матрицы.A device for list decoding of Reed-Solomon codes is known that corrects errors beyond half the minimum code distance t, [1], comprising: an input block, a decoding block, and an output block. The decoding method used is based on finding a nonzero element in the core of the structured matrix.
Недостатком данного устройства является сложность его реализации.The disadvantage of this device is the complexity of its implementation.
Известно устройство декодирования, реализующее алгебраический алгоритм декодирования кодов Рида-Соломона, используя мягкие решения [2], содержащее: блок повторного кодирования, блок интерполяции, блок факторизации, блок выборки точек интерполяции и селектор.A decoding device is known that implements an algebraic algorithm for decoding Reed-Solomon codes using soft solutions [2], comprising: a re-coding unit, an interpolation unit, a factorization unit, a block for selecting interpolation points, and a selector.
Алгоритм работы устройства состоит в следующем: используя оценки надежностей символов принятого кодового слова, вычисляется матрица М, которая определяет интерполяционные точки и их кратность; выполняется процедура интерполяции для нахождения полинома QM(X,Y); в полиноме QM(X,Y) выделяются сомножители вида Y-f(X); из полиномов f(X) реконструируются кодовые слова; наиболее вероятное из них выбирается как результат работы алгоритма.The algorithm of the device is as follows: using estimates of the reliability of the characters of the received code word, the matrix M is calculated, which determines the interpolation points and their multiplicity; the interpolation procedure is performed to find the polynomial Q M (X, Y); in the polynomial Q M (X, Y), factors of the form Yf (X) are distinguished; codewords are reconstructed from polynomials f (X); the most probable of them is selected as a result of the algorithm.
Недостатком данного устройства является его сложность, обусловленная сложностью реализации процедур интерполяции и факторизации многочленов больших степеней.The disadvantage of this device is its complexity, due to the complexity of the implementation of procedures for interpolation and factorization of polynomials of large degrees.
Наиболее близким по технической сущности к заявляемому изобретению является выбранное в качестве прототипа устройство декодирования кодов Рида-Соломона [3], позволяющее исправить одну дополнительную ошибку за границей половины минимального кодового расстояния. Устройство-прототип содержит: буферную память данных, блок вычисления синдромов, процессор Галуа, блок дискретного преобразования Фурье, блок поиска позиций ошибок веса t+1 и блок вычисления значений ошибок.The closest in technical essence to the claimed invention is the Reed-Solomon code decoding device selected as a prototype [3], which allows one additional error to be corrected beyond half the minimum code distance. The prototype device comprises: a data buffer, a syndrome calculation unit, a Galois processor, a discrete Fourier transform unit, an error position search unit of weight t + 1, and an error value calculation unit.
Устройство-прототип осуществляет поиск позиций ошибок за границей половины минимального кодового расстояния путем вычисления последовательностей возможных значений неизвестных невязок аналитического продолжения алгоритма Берлекэмпа-Месси и подсчета значений невязок в этих последовательностях.The prototype device searches for error positions beyond half the minimum code distance by calculating sequences of possible values of unknown residuals of the analytic continuation of the Berlekamp-Messi algorithm and counting the residual values in these sequences.
Недостатком прототипа является относительно низкое быстродействие, обусловленное переборным характером поиска неизвестных невязок при исправлении t+1 ошибок. Количество вычислений возможных значений неизвестной невязки равняется nS=(n-1+t)(n-t)/2, где n - длина кодового слова кода Рида-Соломона.The disadvantage of the prototype is the relatively low speed due to the exhaustive nature of the search for unknown residuals when correcting t + 1 errors. The number of calculations of the possible values of the unknown residual is n S = (n-1 + t) (nt) / 2, where n is the length of the code word of the Reed-Solomon code.
Быстродействие декодера [3] может быть увеличено за счет усреднения времени декодирования кодовых слов с различным числом ошибок. Однако при этом для обеспечения постоянной пропускной способности необходимо ввести дополнительный буфер для хранения кодовых слов, что одновременно увеличит задержку данных в декодере.The speed of the decoder [3] can be increased by averaging the decoding time of code words with a different number of errors. However, in order to ensure constant bandwidth, it is necessary to introduce an additional buffer for storing codewords, which will simultaneously increase the data delay in the decoder.
Технической задачей изобретения является повышение быстродействия исправления ошибок за границей половины минимального расстояния путем использования информации о надежности принятых из канала символов.An object of the invention is to increase the speed of error correction beyond half of the minimum distance by using information about the reliability of the symbols received from the channel.
Поставленная техническая задача решается тем, что в устройство декодирования кодов Рида-Соломона, содержащее буферную память данных, блок вычисления синдромов, процессор Галуа, блок дискретного преобразования Фурье, блок поиска позиций ошибок, блок вычисления значений ошибок, первый сумматор элементов поля Галуа, причем входы буферной памяти данных и входы блока вычисления синдромов являются входами символов данных устройства декодирования кодов Рида-Соломона, выходы буферной памяти данных соединены с первыми входами первого сумматора элементов поля Галуа, выходы блока вычисления синдромов соединены с первыми входами процессора Галуа, первые выходы процессора Галуа соединены с первыми входами блока дискретного преобразования Фурье, вторые выходы процессора Галуа соединены со вторыми входами блока дискретного преобразования Фурье, третьи выходы процессора Галуа соединены с третьими входами блока дискретного преобразования Фурье, четвертые выходы процессора Галуа соединены с четвертыми входами блока поиска позиций ошибок, пятые выходы процессора Галуа соединены с первыми входами блока вычисления значений ошибок, шестые выходы процессора Галуа соединены со вторыми входами блока вычисления значений ошибок, седьмые выходы процессора Галуа соединены с третьими входами блока вычисления значений ошибок, вторые выходы блока дискретного преобразования Фурье соединены с третьими входами процессора Галуа, третьи выходы блока дискретного преобразования Фурье соединены с четвертыми входами процессора Галуа, четвертые выходы блока дискретного преобразования Фурье соединены с первыми входами блока поиска позиций ошибок, пятый выход блока дискретного преобразования Фурье соединен со вторым входом блока поиска позиций ошибок, шестые выходы блока дискретного преобразования Фурье соединены с третьими входами блока поиска позиций ошибок, первые выходы блока поиска позиций ошибок соединены с пятыми входами процессора Галуа, вторые выходы блока поиска позиций ошибок соединены с шестыми входами процессора Галуа, третьи выходы блока поиска позиций ошибок соединены с седьмыми входами процессора Галуа, четвертые выходы блока поиска позиций ошибок соединены с восьмыми входами процессора Галуа, выходы блока вычисления значений ошибок соединены со вторыми входами первого сумматора элементов поля Галуа, выходы первого сумматора элементов поля Галуа являются выходами данных устройства декодирования кодов Рида-Соломона, введен блок сортировки позиций символов, причем первые входы блока сортировки позиций символов являются входами оценок надежности символов данных устройства декодирования кодов Рида-Соломона, пятые выходы блока поиска позиций ошибок соединены со вторыми входами блока сортировки позиций символов, первые выходы блока дискретного преобразования Фурье соединены с третьими входами блока сортировки позиций символов, первые выходы блока сортировки позиций символов соединены со вторыми входами процессора Галуа, вторые выходы блока сортировки позиций символов соединены с пятыми входами блока поиска позиций ошибок, причем блок сортировки позиций символов содержит первую схему сравнения кодов, первый блок памяти отсортированных позиций, второй блок памяти отсортированных позиций, третий блок памяти отсортированных позиций, четвертый блок памяти отсортированных позиций, пятый блок памяти отсортированных позиций, первый коммутатор, второй коммутатор, третий коммутатор, четвертый коммутатор, пятый коммутатор, шестой коммутатор, седьмой коммутатор, первый счетчик, второй счетчик, третий счетчик, первый дешифратор, второй дешифратор, причем первые входы первой схемы сравнения кодов являются первыми входами блока сортировки позиций символов, вторые входы первой схемы сравнения кодов соединены с шиной константы Thres, выход первой схемы сравнения кодов соединен со вторым входом первого блока памяти отсортированных позиций, со вторым входом второго блока памяти отсортированных позиций, со вторым входом третьего блока памяти отсортированных позиций, со вторым входом четвертого блока памяти отсортированных позиций и со вторым входом пятого блока памяти отсортированных позиций, первые выходы первого счетчика соединены с первыми входами первого блока памяти отсортированных позиций, с первыми входами второго блока памяти отсортированных позиций, с первыми входами третьего блока памяти отсортированных позиций, с первыми входами четвертого блока памяти отсортированных позиций и с первыми входами пятого блока памяти отсортированных позиций, второй выход первого счетчика соединен с входом второго счетчика, выходы второго счетчика соединены со входами первого дешифратора, первый выход первого дешифратора соединен с третьим входом первого блока памяти отсортированных позиций, второй выход первого дешифратора соединен с третьим входом второго блока памяти отсортированных позиций, третий выход первого дешифратора соединен с третьим входом третьего блока памяти отсортированных позиций, четвертый выход первого дешифратора соединен с третьим входом четвертого блока памяти отсортированных позиций, пятый выход первого дешифратора соединен с третьим входом пятого блока памяти отсортированных позиций, выходы первого блока памяти отсортированных позиций соединены со вторыми входами первого коммутатора и четвертыми входами второго коммутатора, выходы второго блока памяти отсортированных позиций соединены с третьими входами первого коммутатора и пятыми входами второго коммутатора, выходы третьего блока памяти отсортированных позиций соединены с четвертыми входами первого коммутатора и первыми входами второго коммутатора, выходы четвертого блока памяти отсортированных позиций соединены с пятыми входами первого коммутатора и вторыми входами второго коммутатора, выходы пятого блока памяти отсортированных позиций соединены с первыми входами первого коммутатора и третьими входами второго коммутатора, выходы третьего счетчика соединены с шестыми входами первого коммутатора, с шестыми входами второго коммутатора и входами второго дешифратора, первый выход второго дешифратора соединен с третьим входом седьмого коммутатора, второй выход второго дешифратора соединен с третьим входом третьего коммутатора, третий выход второго дешифратора соединен с третьим входом четвертого коммутатора, четвертый выход второго дешифратора соединен с третьим входом пятого коммутатора, пятый выход второго дешифратора соединен с третьим входом шестого коммутатора, первые входы третьего, четвертого, пятого, шестого и седьмого коммутаторов являются третьими входами блока сортировки позиций символов, вторые входы третьего, четвертого, пятого, шестого и седьмого коммутаторов являются вторыми входами блока сортировки позиций символов, выходы третьего коммутатора соединены с четвертыми входами первого блока памяти отсортированных позиций, выходы четвертого коммутатора соединены с четвертыми входами второго блока памяти отсортированных позиций, выходы пятого коммутатора соединены с четвертыми входами третьего блока памяти отсортированных позиций, выходы шестого коммутатора соединены с четвертыми входами четвертого блока памяти отсортированных позиций, выходы седьмого коммутатора соединены с четвертыми входами пятого блока памяти отсортированных позиций, выходы первого коммутатора являются вторыми выходами блока сортировки позиций символов, выходы второго коммутатора являются первыми выходами блока сортировки позиций символов, причем блок памяти отсортированных позиций содержит первый блок памяти с произвольным доступом, второй блок памяти с произвольным доступом, первый логический элемент И-НЕ, второй логический элемент И-НЕ, четвертый счетчик, пятый счетчик, восьмой коммутатор, девятый коммутатор, десятый коммутатор, одиннадцатый коммутатор и вычитатель, причем первые входы первого блока памяти с произвольным доступом, первые входы второго блока памяти с произвольным доступом являются первыми входами блока памяти отсортированных позиций, первый вход первого логического элемента И-НЕ, первый вход второго логического элемента И-НЕ, третий вход восьмого коммутатора, третий вход девятого коммутатора являются третьим входом блока памяти отсортированных позиций, второй вход первого логического элемента И-НЕ, второй вход второго логического элемента И-НЕ являются вторым входом блока памяти отсортированных позиций, выход первого логического элемента И-НЕ соединен со вторым входом первого блока памяти с произвольным доступом и входом четвертого счетчика, выходы четвертого счетчика соединены с первыми входами восьмого коммутатора, вторыми входами одиннадцатого коммутатора и первыми входами вычитателя, выходы восьмого коммутатора соединены с третьими входами первого блока памяти с произвольным доступом, выходы первого блока памяти с произвольным доступом соединены с первыми входами десятого коммутатора, выход второго логического элемента И-НЕ соединен со вторым входом второго блока памяти с произвольным доступом и входом пятого счетчика, выходы пятого счетчика соединены с первыми входами девятого коммутатора, выходы девятого коммутатора соединены с третьими входами второго блока памяти с произвольным доступом, выходы второго блока памяти с произвольным доступом соединены со вторыми входами десятого коммутатора, вторые входы вычитателя и вторые входы восьмого коммутатора являются четвертыми входами блока памяти отсортированных позиций, а старший разряд четвертых входов блока памяти отсортированных позиций соединен с третьим входом одиннадцатого коммутатора, первые выходы вычитателя соединены со вторыми входами девятого коммутатора, второй выход вычитателя соединен с третьим входом десятого коммутатора, выходы десятого коммутатора соединены с первыми входами одиннадцатого коммутатора, выходы одиннадцатого коммутатора являются выходами блока памяти отсортированных позиций, причем блок поиска позиций ошибок содержит первый блок вычисления невязок, второй блок вычисления невязок, первый блок подсчета невязок, второй блок подсчета невязок, двенадцатый коммутатор, первый регистр-защелку, блок памяти коэффициентов, первое местное устройство управления, причем первые входы первого местного устройства управления являются четвертыми входами блока поиска позиций ошибок, вторые входы первого местного устройства управления и первые входы блока памяти коэффициентов являются пятыми входами блока поиска позиций ошибок, третьи входы блока поиска позиций ошибок являются младшими разрядами вторых входов блока памяти коэффициентов, первые входы блока поиска позиций ошибок являются средними разрядами вторых входов блока памяти коэффициентов, второй вход блока поиска позиций ошибок является старшим разрядом вторых входов блока памяти коэффициентов, младшие разряды первых выходов блока памяти коэффициентов соединены с первыми входами первого блока вычисления невязок и с первыми входами второго блока вычисления невязок, средние разряды первых выходов блока памяти коэффициентов соединены с третьими входами первого блока вычисления невязок и с третьими входами второго блока вычисления невязок, старший разряд первых выходов блока памяти коэффициентов соединен с пятым входом первого блока вычисления невязок и с пятым входом второго блока вычисления невязок, младшие разряды вторых выходов блока памяти коэффициентов соединены со вторыми входами первого блока вычисления невязок и со вторыми входами второго блока вычисления невязок, средние разряды вторых выходов блока памяти коэффициентов соединены с четвертыми входами первого блока вычисления невязок и с четвертыми входами второго блока вычисления невязок, старший разряд вторых выходов блока памяти коэффициентов соединен с шестым входом первого блока вычисления невязок и с шестым входом второго блока вычисления невязок, первые выходы первого блока вычисления невязок соединены с шестыми входами двенадцатого коммутатора, вторые выходы первого блока вычисления невязок соединены с пятыми входами двенадцатого коммутатора, третий выход первого блока вычисления невязок соединен с четвертым входом первого блока подсчета невязок, четвертые выходы первого блока вычисления невязок соединены с третьими входами первого блока подсчета невязок, пятый выход первого блока вычисления невязок соединен с третьим входом первого местного устройства управления, первый выход первого блока подсчета невязок соединен с пятым входом первого местного устройства управления, вторые выходы первого блока подсчета невязок соединены с четвертыми входами двенадцатого коммутатора, первые выходы второго блока вычисления невязок соединены с первыми входами двенадцатого коммутатора, вторые выходы второго блока вычисления невязок соединены со вторыми входами двенадцатого коммутатора, пятый выход второго блока вычисления невязок соединен с четвертым входом первого местного устройства управления, четвертые выходы второго блока вычисления невязок соединены с третьими входами второго блока подсчета невязок, третий выход второго блока вычисления невязок соединен с четвертым входом второго блока подсчета невязок, вторые выходы второго блока подсчета невязок соединены с третьими входами двенадцатого коммутатора, первый выход второго блока подсчета невязок соединен с шестым входом первого местного устройства управления, третий выход первого местного устройства управления соединен с седьмым входом первого блока вычисления невязок, четвертый выход первого местного устройства управления соединен с восьмым входом первого блока вычисления невязок, пятый выход первого местного устройства управления соединен с девятым входом первого блока вычисления невязок, шестые выходы первого местного устройства управления соединены с четвертыми входами блока памяти коэффициентов, седьмые выходы первого местного устройства управления соединены с третьими входами блока памяти коэффициентов, восьмые выходы первого местного устройства управления соединены со вторыми входами первого блока подсчета невязок, девятый выход первого местного устройства управления соединен с первым входом первого блока подсчета невязок, десятый выход первого местного устройства управления соединен с пятым входом второго блока подсчета невязок, одиннадцатый выход первого местного устройства управления соединен с четвертым входом первого регистра-защелки, двенадцатые выходы первого местного устройства управления соединены с седьмыми входами двенадцатого коммутатора, тринадцатый выход первого местного устройства управления соединен с пятым входом второго блока подсчета невязок, четырнадцатый выход первого местного устройства управления соединен с первым входом второго блока подсчета невязок, пятнадцатые выходы первого местного устройства управления соединены со вторыми входами второго блока подсчета невязок, шестнадцатый выход первого местного устройства управления соединен с девятым входом второго блока вычисления невязок семнадцатый выход первого местного устройства управления соединен с восьмым входом второго блока вычисления невязок, восемнадцатый выход первого местного устройства управления соединен с седьмым входом второго блока вычисления невязок, первые выходы первого местного устройства управления являются пятыми выходами блока поиска позиций ошибок, вторые выходы первого местного устройства управления являются первыми выходами блока поиска позиций ошибок, первые выходы двенадцатого коммутатора соединены с первыми входами первого регистра-защелки, вторые выходы двенадцатого коммутатора соединены со вторыми входами первого регистра-защелки, третьи выходы двенадцатого коммутатора соединены с третьими входами первого регистра-защелки, вторые выходы первого регистра-защелки соединены с десятыми входами первого блока вычисления невязок, десятыми входами второго блока вычисления невязок и являются вторыми выходами блока поиска позиций ошибок, первые выходы первого регистра-защелки являются третьими выходами блока поиска позиций ошибок, третьи выходы первого регистра-защелки являются четвертыми выходами блока поиска позиций ошибок, причем блок вычисления невязок содержит тринадцатый, четырнадцатый и пятнадцатый коммутаторы, второй регистр-защелку, третий регистр-защелку, второй сумматор элементов поля Галуа, третий сумматор элементов поля Галуа, первый инвертор элементов поля Галуа, первый перемножитель элементов поля Галуа, вторую схему сравнения кодов, первый селектор нулевого элементов поля Галуа, первый логический элемент И, второй логический элемент И, логический элемент ИЛИ-НЕ, D-триггер, причем первые входы тринадцатого коммутатора являются первыми входами блока вычисления невязок, вторые входы тринадцатого коммутатора являются вторыми входами блока вычисления невязок, первые входы четырнадцатого коммутатора являются третьими входами блока вычисления невязок, вторые входы четырнадцатого коммутатора являются четвертыми входами блока вычисления невязок, первый вход пятнадцатого коммутатора является пятым входом блока вычисления невязок, второй вход пятнадцатого коммутатора является шестым входом блока вычисления невязок, третий вход тринадцатого коммутатора, третий вход четырнадцатого коммутатора, третий вход пятнадцатого коммутатора являются седьмым входом блока вычисления невязок, выходы тринадцатого коммутатора соединены с первыми входами второго регистра-защелки и вторыми входами второго сумматора элементов поля Галуа, второй вход второго регистра-защелки, второй вход третьего регистра-защелки, второй вход D-триггера являются восьмым входом блока вычисления невязок, выходы второго регистра-защелки соединены с первыми входами второго сумматора элементов поля Галуа и являются вторыми выходами блока вычисления невязок, выходы второго сумматора элементов поля Галуа соединены со входами первого инвертора элементов поля Галуа, выходы первого инвертора элементов поля Галуа соединены с первыми входами первого перемножителя элементов поля Галуа, выходы первого перемножителя элементов поля Галуа соединены со вторыми входами второй схемы сравнения кодов и являются четвертыми выходами блока вычисления невязок, первые входы второй схемы сравнения кодов являются десятыми входами блока вычисления невязок, выход второй схемы сравнения кодов соединен с первым входом первого логического элемента И, выход первого логического элемента И является пятым выходом блока вычисления невязок, выходы четырнадцатого коммутатора соединены с первыми входами третьего регистра-защелки и вторыми входами третьего сумматора элементов поля Галуа, выходы третьего регистра-защелки соединены с первыми входами третьего сумматора элементов поля Галуа и являются первыми выходами блока вычисления невязок, выходы третьего сумматора элементов поля Галуа соединены со входами первого селектора нулевого элемента поля Галуа и вторыми входами перемножителя элементов поля Галуа, выход первого селектора нулевого элемента поля Галуа соединен с первым входом второго логического элемента И, второй вход второго логического элемента И является девятым входом блока вычисления невязок, выход второго логического элемента И соединен с первым входом логического элемента ИЛИ-НЕ, выход пятнадцатого коммутатора соединен со вторым входом логического элемента ИЛИ-НЕ и первым входом D-триггера, выход D-триггера соединен с третьим входом логического элемента ИЛИ-НЕ, выход логического элемента ИЛИ-НЕ соединен со вторым входом первого логического элемента И и является третьим выходом блока вычисления невязок, причем блок подсчета невязок содержит первый блок вентилей, третий блок памяти с произвольным доступом, схему инкремента, третью схему сравнения кодов, шестнадцатый коммутатор, четвертый регистр-защелку, третий логический элемент И, четвертый логический элемент И, причем второй вход первого блока вентилей и третий вход шестнадцатого коммутатора являются первым входом блока подсчета невязок, выходы первого блока вентилей соединены с первыми входами третьего блока памяти с произвольным доступом, выходы третьего блока памяти с произвольным доступом соединены с первыми входами схемы инкремента, выходы схемы инкремента соединены с первыми входами первого блока вентилей и первыми входами третьей схемы сравнения кодов, вторые входы третьей схемы сравнения кодов соединены с шиной константы 't', выход третьей схемы сравнения кодов соединен с первым входом третьего логического элемента И, выход третьего элемента логическое И является первым выходом блока подсчета невязок, первые входы шестнадцатого коммутатора являются вторыми входами блока подсчета невязок, выходы шестнадцатого коммутатора соединены со вторыми входами третьего блока памяти с произвольным доступом, входы четвертого регистра-защелки являются третьими входами блока подсчета невязок, выходы четвертого регистра-защелки соединены со вторыми входами шестнадцатого коммутатора и являются вторыми выходами блока подсчета невязок, первый вход четвертого логического элемента И является четвертым входом блока подсчета невязок, второй вход четвертого логического элемента И является пятым входом блока подсчета невязок, выход четвертого логического элемента И соединен со вторым входом схемы инкремента и вторым входом третьего логического элемента И.The technical problem posed is solved by what's in the Reed-Solomon code decoding device, containing a data buffer syndrome calculation unit, Galois processor discrete Fourier transform unit, block for finding error positions, unit for calculating error values, the first adder of the Galois field elements, moreover, the inputs of the buffer data memory and the inputs of the block computing syndromes are inputs of data symbols of the device for decoding Reed-Solomon codes, the outputs of the data buffer memory are connected to the first inputs of the first adder of the Galois field elements, the outputs of the syndrome calculation unit are connected to the first inputs of the Galois processor, the first outputs of the Galois processor are connected to the first inputs of the discrete Fourier transform block, the second outputs of the Galois processor are connected to the second inputs of the discrete Fourier transform block, the third outputs of the Galois processor are connected to the third inputs of the discrete Fourier transform block, the fourth outputs of the Galois processor are connected to the fourth inputs of the error position search unit, the fifth outputs of the Galois processor are connected to the first inputs of the error value calculation unit, the sixth outputs of the Galois processor are connected to the second inputs of the error value calculation unit, the seventh outputs of the Galois processor are connected to the third inputs of the error value calculation unit, the second outputs of the discrete Fourier transform unit are connected to the third inputs of the Galois processor, the third outputs of the discrete Fourier transform unit are connected to the fourth inputs of the Galois processor, the fourth outputs of the discrete Fourier transform unit are connected to the first inputs of the error position search unit, the fifth output of the discrete Fourier transform unit is connected to the second input of the error position search unit, the sixth outputs of the discrete Fourier transform unit are connected to the third inputs of the error position search unit, the first outputs of the error position search unit are connected to the fifth inputs of the Galois processor, the second outputs of the error position search unit are connected to the sixth inputs of the Galois processor, the third outputs of the error position search unit are connected to the seventh inputs of the Galois processor, the fourth outputs of the error position search unit are connected to the eighth inputs of the Galois processor, the outputs of the unit for calculating error values are connected to the second inputs of the first adder of the Galois field elements, the outputs of the first adder of the Galois field elements are the data outputs of the Reed-Solomon code decoding device, a block for sorting character positions has been introduced, moreover, the first inputs of the block for sorting the positions of characters are inputs of estimates of the reliability of the characters of the data of the Reed-Solomon code decoding device, the fifth outputs of the block for searching error positions are connected to the second inputs of the block for sorting the positions of symbols, the first outputs of the discrete Fourier transform unit are connected to the third inputs of the character position sorting unit, the first outputs of the block for sorting character positions are connected to the second inputs of the Galois processor, the second outputs of the block for sorting character positions are connected to the fifth inputs of the block for searching error positions, moreover, the unit for sorting the positions of characters contains the first scheme for comparing codes, first memory block of sorted items, a second memory block of sorted items, a third memory block of sorted items, fourth block of memory of sorted items, fifth block memory of sorted items, first switch second switch third switch fourth switch fifth switch Sixth switch seventh switch first counter second counter third counter first decoder, second decoder, moreover, the first inputs of the first scheme for comparing codes are the first inputs of the block sorting character positions, the second inputs of the first code comparison circuit are connected to the Thres constant bus, the output of the first circuit comparing codes is connected to the second input of the first memory block of sorted items, with the second input of the second memory block of sorted items, with the second input of the third memory block of sorted positions, with the second input of the fourth memory block of sorted positions and with the second input of the fifth memory block of sorted positions, the first outputs of the first counter are connected to the first inputs of the first memory block of sorted items, with the first inputs of the second memory block of sorted positions, with the first inputs of the third block of memory of sorted items, with the first inputs of the fourth memory block of sorted positions and with the first inputs of the fifth memory block of sorted positions, the second output of the first counter is connected to the input of the second counter, the outputs of the second counter are connected to the inputs of the first decoder, the first output of the first decoder is connected to the third input of the first memory block of sorted items, the second output of the first decoder is connected to the third input of the second memory block of the sorted positions, the third output of the first decoder is connected to the third input of the third block of memory of sorted items, the fourth output of the first decoder is connected to the third input of the fourth memory block of sorted items, the fifth output of the first decoder is connected to the third input of the fifth memory block of sorted positions, the outputs of the first memory block of sorted positions are connected to the second inputs of the first switch and the fourth inputs of the second switch, the outputs of the second memory block of sorted positions are connected to the third inputs of the first switch and the fifth inputs of the second switch, the outputs of the third memory block of sorted positions are connected to the fourth inputs of the first switch and the first inputs of the second switch, the outputs of the fourth memory block of sorted positions are connected to the fifth inputs of the first switch and the second inputs of the second switch, the outputs of the fifth memory block of sorted positions are connected to the first inputs of the first switch and the third inputs of the second switch, the outputs of the third counter are connected to the sixth inputs of the first switch, with the sixth inputs of the second switch and the inputs of the second decoder, the first output of the second decoder is connected to the third input of the seventh switch, the second output of the second decoder is connected to the third input of the third switch, the third output of the second decoder is connected to the third input of the fourth switch, the fourth output of the second decoder is connected to the third input of the fifth switch, the fifth output of the second decoder is connected to the third input of the sixth switch, the first entrances of the third, the fourth fifth the sixth and seventh switches are the third inputs of the block sorting character positions, second entrances of the third, the fourth fifth the sixth and seventh switches are the second inputs of the block sorting character positions, the outputs of the third switch are connected to the fourth inputs of the first memory block of sorted items, the outputs of the fourth switch are connected to the fourth inputs of the second memory block of sorted positions, the outputs of the fifth switch are connected to the fourth inputs of the third memory block of sorted positions, the outputs of the sixth switch are connected to the fourth inputs of the fourth memory block of sorted positions, the outputs of the seventh switch are connected to the fourth inputs of the fifth memory block of sorted positions, the outputs of the first switch are the second outputs of the block for sorting character positions, the outputs of the second switch are the first outputs of the block for sorting character positions, moreover, the memory block of the sorted positions contains the first random access memory block, a second random access memory unit, the first logical element AND NOT, the second logical element AND NOT, fourth counter fifth counter eighth switch Ninth switch tenth switch eleventh switch and subtractor, moreover, the first inputs of the first random access memory block, the first inputs of the second random access memory block are the first inputs of the sorted position memory block, the first input of the first logical element AND NOT, the first input of the second logical element AND NOT, the third input of the eighth switch, the third input of the ninth switch is the third input of the memory block of sorted items, the second input of the first logical element AND NOT, the second input of the second logical element AND is NOT the second input of the memory block of sorted positions, the output of the first logical element AND is NOT connected to the second input of the first random access memory block and the input of the fourth counter, the outputs of the fourth counter are connected to the first inputs of the eighth switch, the second inputs of the eleventh switch and the first inputs of the subtractor, the outputs of the eighth switch are connected to the third inputs of the first random access memory unit, the outputs of the first random access memory unit are connected to the first inputs of the tenth switch, the output of the second logical element AND is NOT connected to the second input of the second random access memory unit and the input of the fifth counter, the outputs of the fifth counter are connected to the first inputs of the ninth switch, the outputs of the ninth switch are connected to the third inputs of the second random access memory unit, the outputs of the second random access memory unit are connected to the second inputs of the tenth switch, the second inputs of the subtractor and the second inputs of the eighth switch are the fourth inputs of the memory block of sorted positions, and the senior bit of the fourth inputs of the memory block of sorted items is connected to the third input of the eleventh switch, the first outputs of the subtractor are connected to the second inputs of the ninth switch, the second output of the subtractor is connected to the third input of the tenth switch, the outputs of the tenth switch are connected to the first inputs of the eleventh switch, the outputs of the eleventh switch are the outputs of the memory block sorted items, moreover, the unit for finding error positions contains the first unit for calculating residuals, the second block calculating the residuals, first block of residual counting, second block for calculating residuals, twelfth switch first register latch, coefficient memory block, first local control unit moreover, the first inputs of the first local control device are the fourth inputs of the block search for error positions, the second inputs of the first local control device and the first inputs of the coefficient memory block are the fifth inputs of the error position search block, the third inputs of the unit for searching for error positions are the least significant bits of the second inputs of the coefficient memory block, the first inputs of the block for searching error positions are the middle bits of the second inputs of the coefficient memory block, the second input of the error position search block is the highest bit of the second inputs of the coefficient memory block, the least significant bits of the first outputs of the coefficient memory block are connected to the first inputs of the first residual computing block and to the first inputs of the second residual computing block, the middle bits of the first outputs of the coefficient memory block are connected to the third inputs of the first residual calculation block and to the third inputs of the second residual calculation block, the senior bit of the first outputs of the coefficient memory block is connected to the fifth input of the first residual computing unit and to the fifth input of the second residual computing unit, the least significant bits of the second outputs of the coefficient memory block are connected to the second inputs of the first residual computing unit and to the second inputs of the second residual computing unit, the middle bits of the second outputs of the coefficient memory block are connected to the fourth inputs of the first residual calculation block and to the fourth inputs of the second residual calculation block, the senior bit of the second outputs of the coefficient memory block is connected to the sixth input of the first residual computing unit and to the sixth input of the second residual computing unit, the first outputs of the first block calculating the residuals are connected to the sixth inputs of the twelfth switch, the second outputs of the first block computing the residuals are connected to the fifth inputs of the twelfth switch, the third output of the first residual calculation unit is connected to the fourth input of the first residual calculation unit, the fourth outputs of the first residual calculation unit are connected to the third inputs of the first residual calculation unit, the fifth output of the first residual calculation unit is connected to the third input of the first local control device, the first output of the first residual counting unit is connected to the fifth input of the first local control device, the second outputs of the first block counting residuals connected to the fourth inputs of the twelfth switch, the first outputs of the second residual calculation unit are connected to the first inputs of the twelfth switch, the second outputs of the second block calculating the residuals are connected to the second inputs of the twelfth switch, the fifth output of the second residual calculation unit is connected to the fourth input of the first local control device, the fourth outputs of the second residual calculation unit are connected to the third inputs of the second residual calculation unit, the third output of the second residual calculation unit is connected to the fourth input of the second residual calculation unit, the second outputs of the second block counting residuals connected to the third inputs of the twelfth switch, the first output of the second residual counting unit is connected to the sixth input of the first local control device, the third output of the first local control device is connected to the seventh input of the first residual calculation unit, the fourth output of the first local control device is connected to the eighth input of the first residual calculation unit, the fifth output of the first local control device is connected to the ninth input of the first residual computing unit, the sixth outputs of the first local control device are connected to the fourth inputs of the coefficient memory unit, the seventh outputs of the first local control device are connected to the third inputs of the coefficient memory unit, the eighth outputs of the first local control device are connected to the second inputs of the first residual counting unit, the ninth output of the first local control device is connected to the first input of the first residual counting unit, the tenth output of the first local control device is connected to the fifth input of the second residual counting unit, the eleventh output of the first local control device is connected to the fourth input of the first register-latch, the twelfth outputs of the first local control device are connected to the seventh inputs of the twelfth switch, the thirteenth output of the first local control device is connected to the fifth input of the second residual counting unit, the fourteenth output of the first local control device is connected to the first input of the second residual counting unit, the fifteenth outputs of the first local control device are connected to the second inputs of the second residual counting unit, the sixteenth output of the first local control device is connected to the ninth input of the second residual calculation unit, the seventeenth output of the first local control device is connected to the eighth input of the second residual calculation unit, the eighteenth output of the first local control device is connected to the seventh input of the second residual calculation unit, the first outputs of the first local control device are the fifth outputs of the error position search unit, the second outputs of the first local control device are the first outputs of the error position search unit, the first outputs of the twelfth switch are connected to the first inputs of the first register-latch, the second outputs of the twelfth switch are connected to the second inputs of the first register-latch, the third outputs of the twelfth switch are connected to the third inputs of the first register-latch, the second outputs of the first register-latch connected to the tenth inputs of the first block calculating residuals, the tenth inputs of the second block calculating the residuals and are the second outputs of the block searching for error positions, the first outputs of the first latch register are the third outputs of the error position search unit, the third outputs of the first latch register are the fourth outputs of the error position search unit, wherein the residual calculation unit contains the thirteenth, fourteenth and fifteenth switches, second latch register, third latch register, the second adder of the Galois field elements, the third adder of the Galois field elements, the first inverter of the Galois field elements, the first multiplier of the elements of the Galois field, a second code comparison scheme, the first selector of the zero elements of the Galois field, the first logical element And, the second logical element And, logical element OR NOT D trigger moreover, the first inputs of the thirteenth switch are the first inputs of the block computing residuals, the second inputs of the thirteenth switch are the second inputs of the block calculating residuals, the first inputs of the fourteenth switch are the third inputs of the residual calculation unit, the second inputs of the fourteenth switch are the fourth inputs of the block calculating residuals, the first input of the fifteenth switch is the fifth input of the residual calculation unit, the second input of the fifteenth switch is the sixth input of the residual calculation unit, the third input of the thirteenth switch, the third input of the fourteenth switch, the third input of the fifteenth switch is the seventh input of the residual calculation unit, the outputs of the thirteenth switch are connected to the first inputs of the second register-latch and the second inputs of the second adder of the Galois field elements, the second input of the second register-latch, the second input of the third register-latch, the second input of the D-flip-flop is the eighth input of the residual calculation unit, the outputs of the second register-latch are connected to the first inputs of the second adder of the Galois field elements and are the second outputs of the residual calculation unit, the outputs of the second adder of the elements of the Galois field are connected to the inputs of the first inverter of the elements of the Galois field, the outputs of the first inverter of the elements of the Galois field are connected to the first inputs of the first multiplier of the elements of the Galois field, the outputs of the first multiplier of the Galois field elements are connected to the second inputs of the second code comparison circuit and are the fourth outputs of the residual calculation unit, the first inputs of the second code comparison circuit are the tenth inputs of the residual computing unit, the output of the second code comparison circuit is connected to the first input of the first logical element AND, the output of the first logical element And is the fifth output of the block calculating the residuals, the outputs of the fourteenth switch are connected to the first inputs of the third register-latch and the second inputs of the third adder of the Galois field elements, the outputs of the third register-latch are connected to the first inputs of the third adder of the Galois field elements and are the first outputs of the residual calculation unit, the outputs of the third adder of the elements of the Galois field are connected to the inputs of the first selector of the zero element of the Galois field and the second inputs of the multiplier of the elements of the Galois field, the output of the first selector of the zero element of the Galois field is connected to the first input of the second logical element And, the second input of the second logical element And is the ninth input of the block calculating the residuals, the output of the second logical element AND is connected to the first input of the logical element OR NOT the output of the fifteenth switch is connected to the second input of the OR-NOT logical element and the first input of the D-trigger, the output of the D-trigger is connected to the third input of the logic element OR-NOT, the output of the OR gate is NOT connected to the second input of the first logical gate AND is the third output of the block for calculating residuals, wherein the residual counting unit comprises a first valve block, third random access memory block, increment scheme third code comparison scheme, sixteenth switch fourth latch register, the third logical element And, fourth logical element AND, moreover, the second input of the first block of gates and the third input of the sixteenth switch are the first input of the block counting residuals, the outputs of the first block of gates are connected to the first inputs of the third random access memory block, the outputs of the third random access memory block are connected to the first inputs of the increment circuit, the outputs of the increment circuit are connected to the first inputs of the first valve block and the first inputs of the third code comparison circuit, the second inputs of the third code comparison circuit are connected to the constant bus 't', the output of the third code comparison circuit is connected to the first input of the third logical element AND, the output of the third element is logical AND is the first output of the block for calculating residuals, the first inputs of the sixteenth switch are the second inputs of the block counting residuals, the outputs of the sixteenth switch are connected to the second inputs of the third random access memory block, the inputs of the fourth register-latch are the third inputs of the block counting residuals, the outputs of the fourth register-latch are connected to the second inputs of the sixteenth switch and are the second outputs of the block counting residuals, the first input of the fourth logical element AND is the fourth input of the block for calculating residuals, the second input of the fourth logical element AND is the fifth input of the block for calculating residuals, the output of the fourth logical element AND is connected to the second input of the increment circuit and the second input of the third logical element I.
Введение в устройство блока сортировки позиций символов позволяет организовать в блоке поиска позиций ошибок поиск позиций ошибочных символов, управляемый надежностью символов кодового слова, обеспечивая тем самым быстрое нахождение позиций ошибокThe introduction to the device of the block for sorting the positions of characters allows you to organize in the block search for positions of errors the search for positions of erroneous characters, controlled by the reliability of the characters of the code word, thereby ensuring a quick finding of error positions
Сущность изобретения состоит в том, что в процесс поиска ошибочных символов за границей половины минимального кодового расстояния вводится управление информацией о надежности принятых из канала символов. Для этого используется таблица перестановок позиций символов кодового слова, полученная в результате сортировки символов по надежности.The essence of the invention lies in the fact that in the process of searching for erroneous characters beyond the half of the minimum code distance, information about the reliability of the symbols received from the channel is introduced. For this, a table of permutations of the positions of the symbols of the codeword is used, obtained as a result of sorting the symbols by reliability.
Для каждого кодового слова таблица перестановок формируется блоком сортировки позиций символов, в котором она хранится необходимое время. Эта таблица используется для формирования адресов памяти при записи результатов работы блока дискретного преобразования Фурье в блок поиска позиций ошибок веса t+1. Последовательное чтение данных из памяти в блоке поиска позиций ошибок формирует поток данных, упорядоченный в соответствии с надежностью символов кодового слова. В результате достаточно обработать небольшую часть этого потока, чтобы найти позиции ошибочных символов. Это значительно ускоряет работу заявляемого устройства декодирования.For each codeword, a permutation table is formed by a block for sorting the positions of characters in which it is stored for the required time. This table is used to generate memory addresses when recording the results of a discrete Fourier transform block into a block for finding error positions of weight t + 1. The sequential reading of data from the memory in the block for searching for error positions generates a data stream ordered in accordance with the reliability of the codeword symbols. As a result, it is enough to process a small part of this stream to find the positions of erroneous characters. This greatly speeds up the operation of the inventive decoding device.
На фиг.1 приведена функциональная схема предлагаемого устройства декодирования PC-кода. На фиг.2 изображена функциональная схема блока сортировки позиций символов; на следующей фиг.3 - функциональная схема одного из его основных блоков: блока памяти отсортированных позиций. На фиг.4 приведена функциональная схема блока поиска позиций ошибок, на следующих фиг.5-6 - функциональные схемы его основных блоков: блока вычисления невязок (фиг.5), блока подсчета невязок (фиг.6). На фиг.7 показана функциональная схема блока дискретного преобразования Фурье, на следующей фиг.8 - функциональная схема одного из его основных блоков: модуля дискретного преобразования Фурье многочлена Λ(2t)(х). На фиг.9 изображена временная диаграмма обработки кодовых слов предлагаемым устройством декодирования PC-кода. На фиг.10 приведен график с результатами исследований быстродействия заявляемого устройства в канале с аддитивным белым гауссовским шумом (AWGN) и модуляцией BPSK.Figure 1 shows the functional diagram of the proposed device for decoding a PC code. Figure 2 shows a functional block diagram of the sorting of positions of characters; in the following figure 3 is a functional diagram of one of its main blocks: a memory block of sorted positions. Figure 4 shows the functional block diagram of the search for error positions, in the following figures 5-6 - functional diagrams of its main blocks: block calculating residuals (figure 5), block counting residuals (figure 6). In Fig.7 shows a functional diagram of a unit of discrete Fourier transform, in the following Fig.8 is a functional diagram of one of its main blocks: module of a discrete Fourier transform of the polynomial Λ (2t) (x). Figure 9 shows a timing diagram of the processing of code words by the proposed decoding device of the PC code. Figure 10 shows a graph with the results of studies of the performance of the inventive device in the channel with additive white Gaussian noise (AWGN) and BPSK modulation.
В описании устройства и на чертежах используются следующие обозначения:In the description of the device and in the drawings, the following notation is used:
БВС - блок вычисления синдромов;BVS - block for calculating syndromes;
БСПС - блок сортировки позиций символов;ACAS - block for sorting character positions;
БДПФ - блок дискретного преобразования Фурье;BDPF - block of discrete Fourier transform;
БППО - блок поиска позиций ошибок;BPPO - block for finding error positions;
БВЗО - блок вычисления значений ошибок;BVZO - block for calculating error values;
БПОП - блок памяти отсортированных позиций;BPOP - memory block of sorted items;
Ct2 - двоичный счетчик;Ct2 is a binary counter;
DC - дешифратор;DC - decoder;
Mux - мультиплексор (коммутатор);Mux - multiplexer (switch);
RAM - память с произвольным доступом;RAM - random access memory;
Sub - вычитатель;Sub - subtractor;
МУУ - местное устройство управления;MUU - local control device;
Inv - инвертор в конечном поле;Inv - inverter in the final field;
Rg - регистр;Rg is the register;
БВ - блок вентилей;BV - valve block;
БВН - блок вычисления невязок;BVN - block for calculating residuals;
БПН - блок подсчета невязок;BPN - block for calculating residuals;
БПК - блок памяти коэффициентов;BOD - block memory coefficients;
m - разрядность элемента расширенного поля Галуа GF(2m);m is the bit depth of the element of the extended Galois field GF (2 m );
n - количество символов в кодовом слове PC-кода;n is the number of characters in the code word of the PC code;
k - количество информационных символов в кодовом слове;k is the number of information symbols in the codeword;
d - минимальное кодовое расстояние PC-кода, d=r+1;d is the minimum code distance of the PC code, d = r + 1;
t - число гарантированно исправляемых ошибок в кодовом слове ;t - the number of guaranteed correctable errors in the codeword ;
α - примитивный элемент поля Галуа GF(2m);α is a primitive element of the Galois field GF (2 m );
r(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0 - многочлен принятого из канала кодового слова;r (x) = r n-1 x n-1 + r n-2 x n-2 + ... + r 1 x + r 0 is the polynomial of the codeword received from the channel;
с(х)=cn-1xn-1+сп-2xn-2+…+с1х+с0 - многочлен исправленного кодового слова;c (x) = c n-1 x n-1 + c n-2 x n-2 + ... + c 1 x + c 0 - polynomial of the corrected codeword;
S(x) - многочлен синдрома;S (x) is the polynomial of the syndrome;
Λ(2t)(х) - многочлен локаторов ошибок после 2t итераций алгоритма Берлекэмпа-Месси;Λ (2t) (x) - polynomial of error locators after 2t iterations of the Berlekamp-Messi algorithm;
B(2t)(x) - вспомогательный многочлен после 2t итераций алгоритма Берлекэмпа-Месси;B (2t) (x) is the auxiliary polynomial after 2t iterations of the Berlekamp-Messi algorithm;
L2t - формальная степень многочлена локаторов ошибок Λ(2t)(х);L 2t is the formal degree of the polynomial of error locators Λ (2t) (x);
Λ(2t+2)(x) - многочлен локаторов ошибок, полученный аналитическим продолжением алгоритма Берлекэмпа-Месси еще на 2 итерации;Λ (2t + 2) (x) is the polynomial of error locators obtained by analytic continuation of the Berlekamp-Messi algorithm for another 2 iterations;
Δ2t+1 и Δ2t+2 - невязки аналитического продолжения алгоритма Берлекэмпа-Месси на 2 итерации;Δ 2t + 1 and Δ 2t + 2 are the residuals of the analytic continuation of the Berlekamp-Messi algorithm at 2 iterations;
Λ'(х) - формальная производная многочлена локаторов ошибок;Λ '(x) is the formal derivative of the polynomial of error locators;
Ω(x) - многочлен значений ошибок;Ω (x) is the polynomial of error values;
{РЕ} - множество позиций ошибок в кодовом слове.{RE} - the set of error positions in the codeword.
Устройство декодирования PC-кода (фиг.1) содержит: буферную память данных 100, блок вычисления синдромов 200, процессор Галуа 300, блок дискретного преобразования Фурье 400, блок поиска позиций ошибок веса t+1 500, блок сортировки позиций символов 600, блок вычисления значений ошибок 700, первый сумматор элементов поля Галуа 800.The PC code decoding device (FIG. 1) contains: a
На вход буферной памяти данных 100, вход блока вычисления синдромов 200 поступают символы ri кодового слова, принятого из канала (сигналы DIn). Выходы буферной памяти данных 100 соединены с первыми входами первого сумматора элементов поля Галуа 800. Выходы блока вычисления синдромов 200 соединены с первыми входами процессора Галуа 300. Первые выходы процессора Галуа 300 (сигналы Control) соединены с первыми входами блока дискретного преобразования Фурье 400. Вторые выходы процессора Галуа 300 (Λ(2t)(x)) соединены со вторыми входами блока дискретного преобразования Фурье 400. Третьи выходы процессора Галуа 300 (B(2t)(x)) соединены с третьими входами блока дискретного преобразования Фурье 400. Четвертые выходы процессора Галуа 300 (сигналы Control) соединены с четвертыми входами блока поиска позиций ошибок 500. Пятые выходы процессора Галуа 300 (Ω(х)) соединены с первыми входами блока вычисления значений ошибок 700. Шестые выходы процессора Галуа 300 (Λ'(х)) соединены со вторыми входами блока вычисления значений ошибок 700. Седьмые выходы процессора Галуа 300 ({РЕ}) соединены с третьими входами блока вычисления значений ошибок 700.At the input of the
Вторые выходы блока дискретного преобразования Фурье 400 (сигналы State) соединены с третьими входами процессора Галуа 300. Третьи выходы блока дискретного преобразования Фурье 400 ({РЕ}) соединены с четвертыми входами процессора Галуа 300. Четвертые выходы блока дискретного преобразования Фурье 400 (Ci|Di) соединены с первыми входами блока поиска позиций ошибок 500. Пятый выход блока дискретного преобразования Фурье 400 (Mskl) соединен со вторым входом блока поиска позиций ошибок 500. Шестые выходы блока дискретного преобразования Фурье 400 (Ai) соединены с третьими входами блока поиска позиций ошибок 500.The second outputs of the discrete Fourier transform 400 (State signals) are connected to the third inputs of the Galois processor 300. The third outputs of the discrete Fourier transform 400 ({PE}) are connected to the fourth inputs of the Galois 300 processor. Fourth outputs of the discrete Fourier transform 400 (C i | D i) connected to the first inputs of the block
Первые выходы блока поиска позиций ошибок 500 (сигналы State) соединены с пятыми входами процессора Галуа 300. Вторые выходы блока поиска позиций ошибок 500 (Δ) соединены с шестыми входами процессора Галуа 300. Третьи выходы блока поиска позиций ошибок 500 (Ai1) соединены с седьмыми входами процессора Галуа 300. Четвертые выходы блока поиска позиций ошибок 500 (Ci1|Di1) соединены с восьмыми входами процессора Галуа 300.The first outputs of the error position search unit 500 (State signals) are connected to the fifth inputs of the Galois 300 processor. The second outputs of the error position search unit 500 (Δ) are connected to the sixth inputs of the Galois 300 processor. The third outputs of the error position search unit 500 (A i1 ) are connected to the seventh inputs of the Galois processor 300. The fourth outputs of the error position search unit 500 (C i1 | D i1 ) are connected to the eighth inputs of the Galois processor 300.
Первые входы блока сортировки позиций символов 600 (сигналы SoftIn) являются входами оценок надежности символов данных устройства декодирования кодов Рида-Соломона. Оценка надежности представляется двоичным числом без знака с фиксированной точкой. Большее значение числа соответствует большей надежности символов кодового слова.The first inputs of the block for sorting symbol positions 600 (SoftIn signals) are inputs of estimates of the reliability of the data symbols of the Reed-Solomon code decoding device. The reliability score is represented by an unsigned fixed-point binary number. A larger value corresponds to a greater reliability of the codeword characters.
Пятые выходы блока поиска позиций ошибок 500 ({РЕ'}) соединены со вторыми входами блока сортировки позиций символов 600. Первые выходы блока дискретного преобразования Фурье 400 (AddrR1) соединены с третьими входами блока сортировки позиций символов 600. Первые выходы блока сортировки позиций символов 600 ({РЕ}) соединены со вторыми входами процессора Галуа 300. Вторые выходы блока сортировки позиций символов 600 (AddrW) соединены с пятыми входами блока поиска позиций ошибок 500.The fifth outputs of the error position search block 500 ({PE '}) are connected to the second inputs of the symbol position sorting block 600. The first outputs of the discrete Fourier transform 400 (AddrR1) are connected to the third inputs of the symbol position sorting block 600. The first outputs of the symbol position sorting block 600 ({PE}) are connected to the second inputs of the Galois processor 300. The second outputs of the character position sorting unit 600 (AddrW) are connected to the fifth inputs of the error
Выходы блока вычисления значений ошибок 700 соединены со вторыми входами первого сумматора элементов поля Галуа 800. Выходы первого сумматора элементов поля Галуа 800 являются выходами данных устройства декодирования кодов Рида-Соломона (сигналы DOut).The outputs of the error value calculation unit 700 are connected to the second inputs of the first adder of the Galois field elements 800. The outputs of the first adder of the Galois field elements 800 are data outputs of the Reed-Solomon code decoding device (DOut signals).
Блок сортировки позиций символов 600 (фиг.2) содержит первую схему сравнения кодов 610, первый блок памяти отсортированных позиций 620.1, второй блок памяти отсортированных позиций 620.2, третий блок памяти отсортированных позиций 620.3, четвертый блок памяти отсортированных позиций 620.4, пятый блок памяти отсортированных позиций 620.5, первый коммутатор 630.1, второй коммутатор 630.2, третий коммутатор 670.1, четвертый коммутатор 670.2, пятый коммутатор 670.3, шестой коммутатор 670.4, седьмой коммутатор 670.5, первый счетчик 640, второй счетчик 650.1, третий счетчик 650.2, первый дешифратор 660.1, второй дешифратор 660.2.The character position sorting unit 600 (FIG. 2) contains a first
Первые входы первой схемы сравнения кодов 610 (сигналы SoftIn) являются первыми входами блока сортировки позиций символов, а вторые входы первой схемы сравнения кодов соединены с шиной константы Thres. Выход первой схемы сравнения кодов 610 соединен со вторым входом первого блока памяти отсортированных позиций 620.1, со вторым входом второго блока памяти отсортированных позиций 620.2, со вторым входом третьего блока памяти отсортированных позиций 620.3, со вторым входом четвертого блока памяти отсортированных позиций 620.4 и со вторым входом пятого блока памяти отсортированных позиций 620.5. Первые выходы первого счетчика 640 соединены с первыми входами первого блока памяти отсортированных позиций 620.1, с первыми входами второго блока памяти отсортированных позиций 620.2, с первыми входами третьего блока памяти отсортированных позиций 620.3, с первыми входами четвертого блока памяти отсортированных позиций 620.4 и с первыми входами пятого блока памяти отсортированных позиций 620.5. Второй выход первого счетчика 640 соединен со входом второго счетчика 650.1. Выходы второго счетчика 650.1 соединены со входами первого дешифратора 660.1. Первый выход первого дешифратора 660.1 соединен с третьим входом первого блока памяти отсортированных позиций 620.1. Второй выход первого дешифратора 660.1 соединен с третьим входом второго блока памяти отсортированных позиций 620.2. Третий выход первого дешифратора 660.1 соединен с третьим входом третьего блока памяти отсортированных позиций 620.3. Четвертый выход первого дешифратора 660.1 соединен с третьим входом четвертого блока памяти отсортированных позиций 620.4. Пятый выход первого дешифратора 660.1 соединен с третьим входом пятого блока памяти отсортированных позиций 620.5. Выходы первого блока памяти отсортированных позиций 620.1 соединены со вторыми входами первого коммутатора 630.1 и четвертыми входами второго коммутатора 630.2. Выходы второго блока памяти отсортированных позиций 620.2 соединены с третьими входами первого коммутатора 630.1 и пятыми входами второго коммутатора 630.2. Выходы третьего блока памяти отсортированных позиций 620.3 соединены с четвертыми входами первого коммутатора 630.1 и первыми входами второго коммутатора 630.2. Выходы четвертого блока памяти отсортированных позиций 620.4 соединены с пятыми входами первого коммутатора 630.1 и вторыми входами второго коммутатора 630.2. Выходы пятого блока памяти отсортированных позиций 620.5 соединены с первыми входами первого коммутатора 630.1 и третьими входами второго коммутатора 630.2. Выходы третьего счетчика 650.2 соединены с шестыми входами первого коммутатора 630.1, с шестыми входами второго коммутатора 630.2 и входами второго дешифратора 660.2. Первый выход второго дешифратора 660.2 соединен с третьим входом седьмого коммутатора 670.5, второй выход второго дешифратора 660.2 соединен с третьим входом третьего коммутатора 670.1. Третий выход второго дешифратора 660.2 соединен с третьим входом четвертого коммутатора 670.2. Четвертый выход второго дешифратора 660.2 соединен с третьим входом пятого коммутатора 670.3. Пятый выход второго дешифратора 660.2 соединен с третьим входом шестого коммутатора 670.4. Первые входы третьего 670.1, четвертого 670.2, пятого 670.3, шестого 670.4 и седьмого 670.5 коммутаторов (сигналы AdR1) являются третьими входами блока сортировки позиций символов 600. Вторые входы третьего 670.1, четвертого 670.2, пятого 670.3, шестого 670.4 и седьмого 670.5 коммутаторов (сигналы AdR2) являются вторыми входами блока сортировки позиций символов 600. Выходы третьего коммутатора 670.1 соединены с четвертыми входами Adr первого блока памяти отсортированных позиций 620.1. Выходы четвертого коммутатора 670.2 соединены с четвертыми входами Adr второго блока памяти отсортированных позиций 620.2. Выходы пятого коммутатора 670.3 соединены с четвертыми входами Adr третьего блока памяти отсортированных позиций 620.3. Выходы шестого коммутатора 670.4 соединены с четвертыми входами Adr четвертого блока памяти отсортированных позиций 620.4. Выходы седьмого коммутатора 670.5 соединены с четвертыми входами Adr пятого блока памяти отсортированных позиций 620.5. Выходы первого коммутатора 630.1 (сигналы DOR1) являются вторыми выходами блока сортировки позиций символов. Выходы второго коммутатора 630.2 (сигналы DOR2) являются первыми выходами блока сортировки позиций символов.The first inputs of the first code comparison circuit 610 (SoftIn signals) are the first inputs of the character position sorting unit, and the second inputs of the first code comparison circuit are connected to the Thres constant bus. The output of the first
Все используемые в блоке 600 счетчики - двоичные: счетчик 640 работает с коэффициентом пересчета n, счетчики 650 работают с коэффициентом перечета 5.All counters used in block 600 are binary:
Дешифраторы 660 имеют инверсные выходы. На i-х выходах дешифраторов (i=1,…,5) появляются значения логического ноля (активный уровень), когда на их входы подаются значения «i-1».Decoders 660 have inverse outputs. At the i-outputs of the decoders (i = 1, ..., 5), the values of the logical zero (active level) appear when the values “i-1” are sent to their inputs.
Все коммутаторы в блоке 600-m-разрядные. На выходы коммутаторов 630 подаются значения их «i-х» входов (i=1,…,5), если на их шестые входы подаются значения «i-1». На выходы коммутаторов 670 подаются значения их первых входов, если на их третьи входы подаются значения логического ноля.All switches in the block are 600-m-bit. The outputs of the switches 630 are supplied with the values of their “i-x” inputs (i = 1, ..., 5), if the values “i-1” are supplied to their sixth inputs. The outputs of the switches 670 are supplied with the values of their first inputs, if the values of the logical zero are fed to their third inputs.
Блок памяти отсортированных позиций (фиг.3) содержит первый блок памяти с произвольным доступом 621.1, второй блок памяти с произвольным доступом 621.2, первый логический элемент И-НЕ 622, второй логический элемент И-НЕ 627, четвертый счетчик 623.1, пятый счетчик 623.2, восьмой коммутатор 624.1, девятый коммутатор 624.2, десятый коммутатор 625.1, одиннадцатый коммутатор 625.2 и вычитатель 626.The sorted position memory block (Fig. 3) contains a first random access memory block 621.1, a second random access memory block 621.2, a
Первые входы первого блока памяти с произвольным доступом 621.1, первые входы второго блока памяти с произвольным доступом 621.2 являются первыми входами DI блока памяти отсортированных позиций. Первый вход первого логического элемента И-НЕ 622, первый вход второго логического элемента И-НЕ 627, третий вход восьмого коммутатора 624.1, третий вход девятого коммутатора 624.2 являются третьим входом блока памяти отсортированных позиций. Второй вход первого логического элемента И-НЕ 622, второй вход второго логического элемента И-НЕ 627 являются вторым входом S блока памяти отсортированных позиций. Выход первого логического элемента И-НЕ 622 соединен со вторым входом первого блока памяти с произвольным доступом 621.1 и входом четвертого счетчика 623.1. Выходы четвертого счетчика 623.1 соединены с первыми входами восьмого коммутатора 624.1, вторыми входами одиннадцатого коммутатора 625.2 и первыми входами вычитателя 626. Выходы восьмого коммутатора 624.1 соединены с третьими входами А первого блока памяти с произвольным доступом 621.1. Выходы первого блока памяти с произвольным доступом 621.1 соединены с первыми входами десятого коммутатора 625.1. Выход второго логического элемента И-НЕ 627 соединен со вторым входом второго блока памяти с произвольным доступом 621.2 и входом пятого счетчика 623.2. Выходы пятого счетчика 623.2 соединены с первыми входами девятого коммутатора 624.2. Выходы девятого коммутатора 624.2 соединены с третьими входами А второго блока памяти с произвольным доступом 621.2. Выходы второго блока памяти с произвольным доступом 621.2 соединены со вторыми входами десятого коммутатора 625.1. Вторые входы вычитателя 626 и вторые входы восьмого коммутатора 624.1 (сигналы Adr) являются четвертыми входами блока памяти отсортированных позиций, а старший разряд четвертых входов блока памяти отсортированных позиций соединен с третьим входом одиннадцатого коммутатора 625.2. Первые выходы вычитателя 626 соединены со вторыми входами девятого коммутатора 624.2. Второй выход вычитателя 626 соединен с третьим входом десятого коммутатора 625.1. Выходы десятого коммутатора 625.1 соединены с первыми входами одиннадцатого коммутатора 625.2. Выходы одиннадцатого коммутатора 625.2 являются выходами блока памяти отсортированных позиций.The first inputs of the first random access memory unit 621.1, the first inputs of the second random access memory unit 621.2 are the first inputs DI of the sorted position memory unit. The first input of the first gate AND-622, the first input of the second gate AND 627, the third input of the eighth switch 624.1, the third input of the ninth switch 624.2 are the third input block memory of sorted items. The second input of the first
Блоки памяти с произвольным доступом 621 содержат n log2n-разрядных ячеек. Счетчики 623 - двоичные log2n-разрядные. Такую же разрядность имеют коммутаторы 624 и 625. Они осуществляют коммутацию с двух направлений, передавая значения своих первых входов на выходы, когда на их третьи входы подается значение логического ноля.621 random access memory blocks contain n log 2 n-bit cells. Counters 623 are binary log 2 n-bit. Switches 624 and 625 have the same bit depth. They carry out switching from two directions, passing the values of their first inputs to the outputs, when a logical zero value is supplied to their third inputs.
Вычитатель 626 осуществляет вычитание содержимого счетчика 623.1 из значения, поданного на четвертые входы блока 620 (сигналы Adr). На втором выходе вычитателя формируется сигнал заема.
Блок поиска позиций ошибок (фиг.4) содержит первый блок вычисления невязок 510.1, второй блок вычисления невязок 510.2, первый блок подсчета невязок 520.1, второй блок подсчета невязок 520.2, двенадцатый коммутатор 530, первый регистр-защелку 540, блок памяти коэффициентов 550, первое местное устройство управления 560.The error position search unit (Fig. 4) contains a first residual calculation unit 510.1, a second residual calculation unit 510.2, a first residual calculation unit 520.1, a second residual calculation unit 520.2, a
Первые входы первого местного устройства управления 560 (сигналы Control) являются четвертыми входами блока поиска позиций ошибок 500. Вторые входы первого местного устройства управления 560 и первые входы блока памяти коэффициентов 550 (сигналы AddrW) являются пятыми входами блока поиска позиций ошибок. Третьи входы блока поиска позиций ошибок 500 (сигналы Ai) являются младшими разрядами вторых входов блока памяти коэффициентов 550. Первые входы блока поиска позиций ошибок 500 являются средними разрядами вторых входов блока памяти коэффициентов 550 (Ci|Di). Второй вход блока поиска позиций ошибок 500 (Msk1) является старшим разрядом вторых входов блока памяти коэффициентов 550 (Mask1). Младшие разряды первых выходов DR1 блока памяти коэффициентов 550 (сигналы A'i) соединены с первыми входами первого блока вычисления невязок 510.1 и с первыми входами второго блока вычисления невязок 510.2. Средние разряды первых выходов DR1 блока памяти коэффициентов 550 (C'i|D'i) соединены с третьими входами первого блока вычисления невязок 510.1 и с третьими входами второго блока вычисления невязок 510.2. Старший разряд первых выходов DR1 блока памяти коэффициентов 550 (Msk1') соединен с пятым входом первого блока вычисления невязок 510.1 и с пятым входом второго блока вычисления невязок 510.2. Младшие разряды вторых выходов DR2 блока памяти коэффициентов 550 (А''i) соединены со вторыми входами первого блока вычисления невязок 510.1 и со вторыми входами второго блока вычисления невязок 510.2. Средние разряды вторых выходов DR2 блока памяти коэффициентов 550 (С''i|D''i) соединены с четвертыми входами первого блока вычисления невязок 510.1 и с четвертыми входами второго блока вычисления невязок 510.2. Старший разряд вторых выходов DR2 блока памяти коэффициентов 550 (Msk1'') соединен с шестым входом первого блока вычисления невязок 510.1 и с шестым входом второго блока вычисления невязок 510.2.The first inputs of the first local control device 560 (Control signals) are the fourth inputs of the error
Первые выходы первого блока вычисления невязок 510.1 (сигналы (Ci1|Di1)1) соединены с шестыми входами двенадцатого коммутатора 530. Вторые выходы первого блока вычисления невязок 510.1 ((Ai1)1) соединены с пятыми входами двенадцатого коммутатора 530. Третий выход первого блока вычисления невязок 510.1 (¬Msk21) соединен с четвертым входом первого блока подсчета невязок 520.1. Четвертые выходы первого блока вычисления невязок 510.1 (Δ'1) соединены с третьими входами первого блока подсчета невязок 520.1. Пятый выход первого блока вычисления невязок 510.1 (SXi1) соединен с третьим входом местного устройства управления 560. Первый выход первого блока подсчета невязок 520.1 (St1) соединен с пятым входом первого местного устройства управления 560. Вторые выходы первого блока подсчета невязок 520.1 (Δ''1) соединены с четвертыми входами двенадцатого коммутатора 530.The first outputs of the first residual calculation block 510.1 (signals (C i1 | D i1 ) 1 ) are connected to the sixth inputs of the
Первые выходы второго блока вычисления невязок 510.1 (сигналы (Ci1|Di1)2) соединены с первыми входами двенадцатого коммутатора 530. Вторые выходы второго блока вычисления невязок 510.2 ((Ai1)2) соединены со вторыми входами двенадцатого коммутатора 530. Пятый выход второго блока вычисления невязок 510.2 (SXi2) соединен с четвертым входом первого местного устройства управления 560. Четвертые выходы второго блока вычисления невязок 510.2 (Δ'2) соединены с третьими входами второго блока подсчета невязок 520.2. Третий выход второго блока вычисления невязок 510.2 (¬Msk22) соединен с четвертым входом второго блока подсчета невязок 520.2. Вторые выходы второго блока подсчета невязок 520.2 (Δ''2) соединены с третьими входами двенадцатого коммутатора 530. Первый выход второго блока подсчета невязок 520.2 (St2) соединен с шестым входом первого местного устройства управления 560. Третий выход первого местного устройства управления 560 (CMx1) соединен с седьмым входом первого блока вычисления невязок 510.1. Четвертый выход первого местного устройства управления 560 (Ld1) соединен с восьмым входом первого блока вычисления невязок 510.1. Пятый выход первого местного устройства управления 560 (EM1) соединен с девятым входом первого блока вычисления невязок 510.1. Шестые выходы первого местного устройства управления 560 (AR1) соединены с четвертыми входами AR1 блока памяти коэффициентов 550. Седьмые выходы первого местного устройства управления 560 (AR2) соединены с третьими входами AR2 блока памяти коэффициентов 550. Восьмые выходы первого местного устройства управления 560 (AI1) соединены со вторыми входами первого блока подсчета невязок 520.1. Девятый выход первого местного устройства управления 560 (I1) соединен с первым входом первого блока подсчета невязок 520.1. Десятый выход местного первого устройства управления 560 (E1) соединен с пятым входом первого блока подсчета невязок 520.1. Одиннадцатый выход первого местного устройства управления 560 (L) соединен с четвертым входом первого регистра-защелки 540. Двенадцатые выходы первого местного устройства управления 560 (СМх) соединены с седьмыми входами двенадцатого коммутатора 530. Тринадцатый выход первого местного устройства управления 560 (Е2) соединен с пятым входом второго блока подсчета невязок 520.2. Четырнадцатый выход первого местного устройства управления 560 (I2) соединен с первым входом второго блока подсчета невязок 520.2. Пятнадцатые выходы первого местного устройства управления 560 (AI2) соединены со вторыми входами второго блока подсчета невязок 520.2. Шестнадцатый выход первого местного устройства управления 560 (ЕМ2) соединен с девятым входом второго блока вычисления невязок 510.2. Семнадцатый выход первого местного устройства управления 560 (Ld2) соединен с восьмым входом второго блока вычисления невязок 510.2. Восемнадцатый выход первого местного устройства управления 560 (СМх2) соединен с седьмым входом второго блока вычисления невязок 510.2. Первые выходы первого местного устройства управления 560 ({РЕ'}) являются пятыми выходами блока поиска позиций ошибок 500. Вторые выходы первого местного устройства управления 560 (State) являются первыми выходами блока поиска позиций ошибок 500. Первые выходы двенадцатого коммутатора 530 соединены с первыми входами первого регистра-защелки 540. Вторые выходы двенадцатого коммутатора 530 соединены со вторыми входами первого регистра-защелки 540. Третьи выходы двенадцатого коммутатора 530 соединены с третьими входами первого регистра-защелки 540. Вторые выходы первого регистра-защелки 540 (Δ) соединены с десятыми входами первого блока вычисления невязок 510.1, десятыми входами второго блока вычисления невязок 510.2 и являются вторыми выходами блока поиска позиций ошибок 500. Первые выходы первого регистра-защелки 540 (Ai1) являются третьими выходами блока поиска позиций ошибок 500. Третьи выходы первого регистра-защелки 540 (Ci1|Di1) являются четвертыми выходами блока поиска позиций ошибок 500.The first outputs of the second residual calculation block 510.1 (signals (C i1 | D i1 ) 2 ) are connected to the first inputs of the
Коммутатор 530 - трехсекционный двунаправленный. Первый и шестой входы коммутатора являются входами первой секции, второй и пятый входы - входами второй секции, третий и четвертый входы - входами третьей секции.
Блок вычисления невязок (фиг.5) содержит тринадцатый 511.1, четырнадцатый 511.2 и пятнадцатый коммутаторы 511.0, второй регистр-защелку 512.1, третий регистр-защелку 512.2, второй сумматор элементов поля Галуа 513.1, третий сумматор элементов поля Галуа 513.2, первый инвертор элементов поля Галуа 514, первый перемножитель элементов поля Галуа 515, вторую схему сравнения кодов 516.1, первый селектор нулевого элемента поля Галуа 516.2, первый логический элемент И 517.2, второй логический элемент И 517.1, логический элемент ИЛИ-НЕ 518, D-триггер 519.The residual computing unit (FIG. 5) contains the thirteenth 511.1, fourteenth 511.2 and fifteenth switches 511.0, a second latch register 512.1, a third latch register 512.2, a second adder of Galois field elements 513.1, a third adder of Galois field elements 513.2, a first inverter of
Первые входы тринадцатого коммутатора 511.1 (сигнал Ai ') являются первыми входами блока вычисления невязок. Вторые входы тринадцатого коммутатора 511.1 (Ai'') являются вторыми входами блока вычисления невязок. Первые входы четырнадцатого коммутатора 511.2 (C'i(D'i)) являются третьими входами блока вычисления невязок. Вторые входы четырнадцатого коммутатора 511.2 (С''i(D''i)) являются четвертыми входами блока вычисления невязок. Первый вход пятнадцатого коммутатора 511.0 (Msk1') является пятым входом блока вычисления невязок. Второй вход пятнадцатого коммутатора 511.0 (MSk1'') является шестым входом блока вычисления невязок.The first inputs of the thirteenth switch 511.1 (signal A i ' ) are the first inputs of the residual calculation unit. The second inputs of the thirteenth switch 511.1 (A i '') are the second inputs of the residual calculation unit. The first inputs of the fourteenth switch 511.2 (C ' i (D' i )) are the third inputs of the residual calculation unit. The second inputs of the fourteenth switch 511.2 (C '' i (D '' i )) are the fourth inputs of the residual calculation unit. The first input of the fifteenth switch 511.0 (Msk1 ') is the fifth input of the residual calculation unit. The second input of the fifteenth switch 511.0 (MSk1 '') is the sixth input of the residual calculation unit.
Третий вход тринадцатого коммутатора 511.1, третий вход четырнадцатого коммутатора 511.2, третий вход пятнадцатого коммутатора 511.0 являются седьмым входом блока вычисления невязок, на который подается сигнал СМх. Выходы тринадцатого коммутатора 511.1 соединены с первыми входами второго регистра-защелки 512.1 и вторыми входами второго сумматора элементов поля Галуа 513.1. Второй вход второго регистра-защелки 512.1, второй вход третьего регистра-защелки 512.2, второй вход D-триггера 519 являются восьмым входом блока вычисления невязок, на который подается сигнал Ld. Выходы второго регистра-защелки 512.1 (сигналы Ai1) соединены с первыми входами второго сумматора элементов поля Галуа 513.1 и являются вторыми выходами блока вычисления невязок. Выходы второго сумматора элементов поля Галуа 513.1 соединены со входами первого инвертора элементов поля Галуа 514. Выходы первого инвертора элементов поля Галуа 514 соединены с первыми входами первого перемножителя элементов поля Галуа 515. Выходы первого перемножителя элементов поля Галуа 515 (сигналы Δ') соединены со вторыми входами второй схемы сравнения кодов 516.1 и являются четвертыми выходами блока вычисления невязок. Первые входы второй схемы сравнения кодов 516.1 являются десятыми входами блока вычисления невязок, на которые подаются сигналы Δ. Выход второй схемы сравнения кодов 516.1 соединен с первым входом первого логического элемента И 517.1. Выход первого логического элемента И 517.1 (сигнал SXi) является пятым выходом блока вычисления невязок. Выходы четырнадцатого коммутатора 511.2 соединены с первыми входами третьего регистра-защелки 512.2 и вторыми входами третьего сумматора элементов поля Галуа 513.3. Выходы третьего регистра-защелки 512.2 (Ci1|Di1) соединены с первыми входами третьего сумматора элементов поля Галуа 513.2 и являются первыми выходами блока вычисления невязок. Выходы третьего сумматора элементов поля Галуа 513.2 соединены со входами первого селектора нулевого элемента поля Галуа 516.2 и вторыми входами первого перемножителя элементов поля Галуа 515. Выход первого селектора нулевого элемента поля Галуа 516.2 соединен с первым входом второго логического элемента И 517.2. Второй вход второго логического элемента И 517.2 является девятым входом блока вычисления невязок, на который подается сигнал ЕМ. Выход второго логического элемента И 517.2 соединен с первым входом логического элемента ИЛИ-НЕ 518. Выход пятнадцатого коммутатора 511.0 соединен со вторым входом логического элемента ИЛИ-НЕ 518 и первым входом D-триггера 519. Выход D-триггера 519 соединен с третьим входом логического элемента ИЛИ-НЕ 518. Выход логического элемента ИЛИ-НЕ 518 (¬Msk2) соединен со вторым входом первого логического элемента И 517.1 и является третьим выходом блока вычисления невязок.The third input of the thirteenth switch 511.1, the third input of the fourteenth switch 511.2, the third input of the fifteenth switch 511.0 are the seventh input of the residual computation unit, to which the signal Cmx is supplied. The outputs of the thirteenth switch 511.1 are connected to the first inputs of the second register-latch 512.1 and the second inputs of the second adder of the Galois field elements 513.1. The second input of the second register-latch 512.1, the second input of the third register-latch 512.2, the second input of the D-flip-
Регистры-защелки 512 и D-триггер 519 принимают информацию при активном сигнале Ld, который подается на их вторые входы.Latch registers 512 and D-flip-
Блок подсчета невязок (фиг.6) содержит первый блок вентилей 521, третий блок памяти с произвольным доступом 522, схему инкремента 523, третью схему сравнения кодов 524, третий логический элемент И 525, шестнадцатый коммутатор 526, четвертый регистр-защелку 527, четвертый логический элемент И 528.The residual counting unit (Fig. 6) contains a first block of
Второй вход первого блока вентилей и третий вход шестнадцатого коммутатора являются первым входом блока подсчета невязок, на который подается сигнал I. Выходы первого блока вентилей соединены с первыми входами DI третьего блока памяти с произвольным доступом 522. Выходы третьего блока памяти с произвольным доступом 522 соединены с первыми входами схемы инкремента 523. Выходы схемы инкремента 523 соединены с первыми входами первого блока вентилей 521 и первыми входами третьей схемы сравнения кодов 524. Вторые входы третьей схемы сравнения кодов 524 соединены с шиной константы 't'. Выход третьей схемы сравнения кодов 524 соединен с первым входом третьего логического элемента И 525. Выход третьего элемента логическое И 525 является первым выходом блока подсчета невязок, на котором формируется сигнал St. Первые входы шестнадцатого коммутатора 526 являются вторыми входами блока подсчета невязок, на который подаются сигналы AI. Выходы шестнадцатого коммутатора 526 соединены со вторыми входами А третьего блока памяти с произвольным доступом 522. Входы четвертого регистра-защелки 527 являются третьими входами блока подсчета невязок, на который подаются сигналы Δ'. Выходы четвертого регистра-защелки 527 (сигналы Δ''n) соединены со вторыми входами шестнадцатого коммутатора 526 и являются вторыми выходами блока подсчета невязок. Первый вход четвертого логического элемента И 528 является четвертым входом блока подсчета невязок, на который подается сигнал ¬Msk2. Второй вход четвертого логического элемента И 528 является пятым входом блока подсчета невязок, на который подается сигнал Е. Выход четвертого логического элемента И 528 соединен со вторым входом схемы инкремента 523 и вторым входом третьего логического элемента И 525.The second input of the first gate block and the third input of the sixteenth switch are the first input of the residual counting block to which signal I. The outputs of the first gate block are connected to the first inputs DI of the third random
Блок вентилей 521 передает информацию с первых входов на выходы, когда на второй его вход подается логический ноль, в противном случае на его выходах формируются нули.The
Блок дискретного преобразования Фурье (фиг.7) содержит второе местное устройство управления 410, первый модуль дискретного преобразования Фурье многочлена Λ(2t)(х) 420.1, второй модуль дискретного преобразования Фурье многочлена В(2t)(х) 420.2, семнадцатый коммутатор 430, второй инвертор элементов поля Галуа 440, второй перемножитель двух элементов поля Галуа 450, восемнадцатый двухвходовый коммутатор 460, умножитель на α 470, пятый регистр-защелку 480, работающую по фронту тактового сигнала; шестой двоичный счетчик номеров позиций принятого слова 490 с коэффициентом пересчета n.The discrete Fourier transform block (Fig. 7) contains a second
Первые входы второго местного устройства управления 410 являются первыми входами блока дискретного преобразования Фурье 400, на которые подаются сигналы Control. Первые выходы второго местного устройства управления 400 являются вторыми выходами блока дискретного преобразования Фурье 400, на которые выдаются сигналы State. Вторые выходы второго местного устройства управления 410 являются третьими выходами блока дискретного преобразования Фурье 400, на которые выдаются сигналы {РЕ}. Третьи выходы второго местного устройства управления 410 соединены со вторыми входами первого модуля дискретного преобразования Фурье 420.1 и со вторыми входами второго модуля дискретного преобразования Фурье 420.2. Четвертый выход второго местного устройства управления 410 соединен с третьим входом семнадцатого коммутатора 430 и с третьим входом восемнадцатого коммутатора 460. Первые входы первого модуля дискретного преобразования Фурье 420.1 и второго модуля дискретного преобразования Фурье 420.2 являются вторыми и третьими входами блока дискретного преобразования Фурье 400, на которые подаются сигналы Λ(х), В(х). Первые выходы первого модуля дискретного преобразования Фурье 420.1 (сигналы Λ(α-1)) соединены с первыми входами семнадцатого коммутатора 430. Второй выход первого модуля дискретного преобразования Фурье 420.1 (sel0) соединен с третьим входом второго местного устройства управления 410 и первым входом восемнадцатого коммутатора 460. Первые выходы второго модуля дискретного преобразования Фурье 420.2 (В(α-1)) соединены со вторыми входами семнадцатого коммутатора 430. Второй выход второго модуля дискретного преобразования Фурье 420.2 (sel0) соединен со вторым входом восемнадцатого коммутатора 460. Первые выходы семнадцатого коммутатора 430 соединены со входами второго инвертора элементов поля Галуа 440. Вторые выходы семнадцатого коммутатора соединены со вторыми входами второго перемножителя элементов поля Галуа 450. Выходы второго инвертора элементов поля Галуа 440 соединены с первыми входами второго перемножителя элементов поля Галуа 450. Выходы второго перемножителя элементов поля Галуа являются четвертыми выходами блока дискретного преобразования Фурье 400, на которые выдаются сигналы (Ci|Di). Выход восемнадцатого коммутатора 460 является пятым выходом блока дискретного преобразования Фурье 400, на который выдается сигнал Msk1. Выходы шестого двоичного счетчика 490 соединены со вторыми входами второго местного устройства управления 410 и являются первыми выходами блока дискретного преобразования Фурье 400, на которые выдаются сигналы AddrR1. Выходы умножителя на α 470 соединены со входами пятого регистра-защелки 480. Выходы пятого регистра-защелки 480 соединены со входами умножителя на α 470 и являются шестыми выходами блока дискретного преобразования Фурье 400, на которые выдаются сигналы Ai.The first inputs of the second
Семнадцатый коммутатор 430 - перекресный. Когда сигнал на третьем входе - активный, коммутатор работает в режиме перекрестной передачи: значения его первых входов подаются на вторые выходы, значения его вторых входов подаются на первые выходы. При неактивном сигнале на третьем входе коммутатор работает в режиме прямой передачи.The
Модуль дискретного преобразования Фурье (фиг.8) содержит второй блок вентилей 421, шестой, седьмой, восьмой, …, t+7 регистры-защелки, работающие по фронту тактового импульса, 422.0 - 422.t+1, четвертый сумматор элементов поля Галуа на t+2 входа 423, второй селектор нулевого элемента поля Галуа 424, первый, второй, …, t+1 умножители на постоянные коэффициенты в поле Галуа 425.1 - 425.t+1, первый, второй, …, t+1 блоки логических элементов ИЛИ 426.1-426.t+1.The discrete Fourier transform module (Fig. 8) contains the second block of
Первые входы второго блока вентилей 421 являются первыми входами модуля дискретного преобразования Фурье, на которые подаются сигналы Λ(х). Второй вход второго блока вентилей 421 (сигнал enable) подключен к шине loc_contr, представляющей вторые входы БДПФ 400. Выходы второго блока вентилей 421 соединены с первыми входами шестого регистра-защелки 422.0, вторыми входами первого, второго, …, t+1 блоков логических элементов ИЛИ 426.1, …, 426.t+1. Вторые входы шестого, седьмого, восьмого, …, t+7 регистров-защелок подключены к шине loc_contr (сигналы c0…ct+1). Третьи входы шестого, седьмого, восьмого, …, t+7 регистров-защелок подключены к шине loc_contr (сигнал clear). Выходы первого, второго, …, t+1 блоков логических элементов ИЛИ 426.1,…, 426.t+1 соединены с первыми входами седьмого, восьмого, …, t+7 регистров-защелок 422.1, …, 425.t+1 соответственно. Выходы шестого регистра-защелки 422.0 соединены с первыми входами четвертого сумматора элементов поля Галуа 423. Выходы седьмого, восьмого, …, t+7 регистров-защелок 422.1, …, 425.t+1 соединены соответственно со вторыми, третьими, …, t+2 входами четвертого сумматора элементов поля Галуа 423 и входами первого, второго, …, t+1 умножителя на постоянные коэффициенты в поле Галуа 425.1, …, 425.t+1, соответственно. Выходы первого, второго, …, t+1 умножителя на постоянные коэффициенты в поле Галуа 425.1…425.t+1 соединены с первыми входами первого, второго, …, t+1 блоков логических элементов ИЛИ 426.1, …, 426.t+1 соответственно. Выходы четвертого сумматора элементов поля Галуа 423 соединены со входами второго селектора нулевого элемента поля Галуа 424 и являются первыми выходами модуля дискретного преобразования Фурье, на которые выдаются сигналы Λ(w). Выход второго селектора нулевого элемента поля Галуа 424 является вторым выходом модуля дискретного преобразования Фурье, на который выдается сигнал sel0.The first inputs of the second block of
Все линии связи, соединяющие блоки на фиг.1-8, по которым передаются данные в виде элементов поля Галуа, являются m-разрядными.All communication lines connecting the blocks of FIGS. 1-8, through which data in the form of Galois field elements are transmitted, are m-bit.
Все используемые триггеры, регистры и счетчики работают по переднему фронту тактового сигнала, который на фиг.1-7 не показан, но подразумевается.All used triggers, registers and counters operate on the leading edge of the clock signal, which is not shown in Figs. 1-7, but is implied.
Сумматоры элементов поля, умножители на постоянные коэффициенты и блоки нахождения обратного элемента поля могут быть реализованы известным образом, в частности, сумматоры могут быть реализованы на m двухвходовых элементах ИСКЛЮЧАЮЩЕЕ-ИЛИ (сумматорах по модулю 2), умножители на постоянные коэффициенты могут быть реализованы на многовходовых элементах ИСКЛЮЧАЮЩЕЕ-ИЛИ, блоки нахождения обратного элемента могут быть реализованы табличным способом.Adders of field elements, multipliers by constant coefficients and blocks for finding the inverse field element can be implemented in a known manner, in particular, adders can be implemented on m two-input EXCLUSIVE-OR elements (adders modulo 2), multipliers by constant coefficients can be implemented on multi-input Exclusive-OR elements, blocks for finding the inverse element can be implemented in a tabular manner.
Процедура декодирования, выполняемая заявляемым устройством, обеспечивает исправление t+1 ошибки в кодовом PC-кода с минимальным кодовым расстоянием d=2t+1 путем аналитического продолжения алгоритма Берлекэмпа-Месси еще на две итерации. Это продолжение дает:The decoding procedure performed by the claimed device provides the correction of t + 1 errors in the PC code code with a minimum code distance d = 2t + 1 by analytically continuing the Berlekamp-Messi algorithm for two more iterations. This continuation gives:
где δk=1, если Δk≠0 и 2Lk-1≤k-1, или δk=0 в противном случае. Lk - формальная степень многочлена локаторов ошибок Λ(k)(х), В(k)(х) - вспомогательный многочлен.where δ k = 1 if Δ k ≠ 0 and 2L k-1 ≤k-1, or δ k = 0 otherwise. L k is the formal degree of the error locator polynomial Λ (k) (x), B (k) (x) is the auxiliary polynomial.
Каждой паре неизвестных невязок Δ2+t1 и Δ2t+2. соответствует многочлен Λ(2t+2)(х). По определению многочлен локаторов ошибок Λ(х) обращается в нуль, когда х принимает значения, обратные к локаторам ошибочных символов. Представляют интерес такие многочлены Λ(2t+2)(х), которые имеют степень t+1 и имеют точно t+1 корень в GF(q). Множество допустимых корней многочлена Λ(2t+2)(x) составляет {α0, α-1, α-2, …, α-(n-2), α-(n-1)} (α - примитивный элемент поля GF(q)). Подставляя это множество в уравнение (1), можно получить следующее:To each pair of unknown residuals Δ 2 + t1 and Δ 2t + 2 . corresponds to the polynomial Λ (2t + 2) (x). By definition, the polynomial of error locators Λ (x) vanishes when x takes values that are inverse to the locators of erroneous symbols. Of interest are such polynomials Λ (2t + 2) (x) that have degree t + 1 and have exactly t + 1 root in GF (q). The set of admissible roots of the polynomial Λ (2t + 2) (x) is {α 0 , α -1 , α -2 , ..., α - (n-2) , α - (n-1) } (α is a primitive element of the field GF (q)). Substituting this set into equation (1), we can obtain the following:
где Λ(2t)(α-i) и В(2t)(α-i) - компоненты дискретного преобразования Фурье многочленов Λ(2t)(х) и В(2t)(х).where Λ (2t) (α -i ) and B (2t) (α -i ) are the components of the discrete Fourier transform of the polynomials Λ (2t) (x) and B (2t) (x).
В случае наличия в кодовом слове конфигурации ошибок веса t+1 ровно t+1 правых частей уравнений системы (2) для некоторого значения пары невязок Δ2t+1 и Δ2t+2 обращаются в 0. Для определения позиций этих ошибочных символов необходимо найти соответствующую пару невязок и зафиксировать номера i уравнений системы (2) с правыми частями, обратившимися в нуль.If the codeword contains a configuration of errors of weight t + 1 exactly t + 1 right-hand sides of the equations of system (2) for some value of the pair of residuals, Δ 2t + 1 and Δ 2t + 2 turn to 0. To determine the positions of these erroneous symbols, it is necessary to find the corresponding pair of residuals and fix the numbers i of the equations of system (2) with the right-hand sides vanishing.
Приравняв левые части уравнений системы (2) нулю, можно получить следующую систему уравнений от двух неизвестных Δ2t+1 и Δ2t+2:Equating the left-hand sides of the equations of system (2) to zero, we can obtain the following system of equations from two unknowns Δ 2t + 1 and Δ 2t + 2 :
Подмножества из ровно t+1 совместных уравнений системы (3) будут соответствовать искомым комбинациям ошибок веса t+1, значения номеров уравнений i дадут позиции ошибок в кодовом слове.The subsets of exactly t + 1 joint equations of system (3) will correspond to the desired combinations of errors of
Эти подмножества могут быть найдены следующим образом [3, 4]. Фиксируется одно из уравнений системы (3) (обозначим его номер i). К нему присоединяется одно из оставшихся уравнений (пусть его номер будет j). Для этих двух уравнений с двумя неизвестными находится возможное значение невязки . Затем к первому уравнению последовательно присоединяются другие оставшиеся уравнения. Для всех таких пар уравнений также вычисляются возможные значения невязки . Если среди всех полученных значений невязки есть t одинаковых, равных Δ2t+1, это говорит о том, что зафиксированное уравнение с номером i входит в искомое подмножество уравнений (и определяет позицию первой ошибки). Значения j, соответствующие условию , дадут позиции еще t ошибок. В процессе поиска перебираются все возможные значения i.These subsets can be found as follows [3, 4]. One of the equations of system (3) is fixed (we denote its number i). One of the remaining equations joins it (let its number be j). For these two equations with two unknowns, the possible value of the discrepancy is found . Then, the remaining remaining equations are sequentially connected to the first equation. For all such pairs of equations, the possible residuals are also calculated . If among all the obtained residual values there are t identical, equal to Δ 2t + 1 , this indicates that the fixed equation with number i is included in the desired subset of equations (and determines the position of the first error). Values of j corresponding to the condition , will give the position another t errors. In the search process, all possible values of i are sorted.
Формальное описание процедуры декодирования основывается на нижеприведенных Теореме, Следствии и Утверждении [3, 4], приведенных ниже без доказательств.The formal description of the decoding procedure is based on the following Theorem, Corollary and Statement [3, 4], given below without proof.
Теорема: Пусть Λ(2t)(х), В(2t)(х) и L2t получены после 2t итераций алгоритма Берлекэмпа-Месси. Если L2t<t или L2t>t+1, то тогда в принятом слове не может быть t+1 ошибок.Theorem: Let Λ (2t) (x), B (2t) (x), and L 2t be obtained after 2t iterations of the Berlekamp-Messi algorithm. If L 2t <t or L 2t > t + 1, then there can be no t + 1 errors in the received word.
Если L2t=t, то тогда неизвестные невязки, соответствующие t+1 ошибкам, могут быть найдены из следующей системы уравнений:If L 2t = t, then unknown residuals corresponding to t + 1 errors can be found from the following system of equations:
гдеWhere
Если L2t=t+1, то тогда невязки могут быть найдены из системы:If L 2t = t + 1, then the residuals can be found from the system:
гдеWhere
Следствие: Если L2t=t, то последовательности значений Δ2t+1, полученные для всех пар i и j уравнений системы (4), будут иметь следующий вид:Corollary: If L 2t = t, then the sequence of values Δ 2t +1 obtained for all pairs i and j of equations of system (4) will have the following form:
Если L2t=t+1, то последовательности значений Δ2t+1, полученные из системы (6), будут иметь следующий вид:If L 2t = t + 1, then the sequence of Δ 2t + 1 values obtained from system (6) will have the following form:
Обозначим через Cnt(S) оператор подсчета различных значений элементов последовательности S в поле GF(q). Этот оператор формирует вектор W размерности q: i-ая компонента вектора (i=0 …, q-2) соответствует элементу поля αi∈GF(q), последняя компонента (i=q-1) соответствует нулевому элементу поля GF(q). Тогда справедливо следующее утверждение.Let Cnt (S) denote the operator of counting the various values of the elements of the sequence S in the field GF (q). This operator forms a vector W of dimension q: the i-th component of the vector (i = 0 ..., q-2) corresponds to the element of the field α i ∈GF (q), the last component (i = q-1) corresponds to the zero element of the field GF (q ) Then the following statement is true.
Утверждение: Пусть Δ - множество значений Δ2t+1 такое, что полином Λ(2t+2)(x) имеет точно t+1 допустимых корней в поле GF(q). Пусть Wi=Cnt(Si); i=0, …, n-1-t; Р(α-i)≠0. Тогда множество Δ состоит из всех значений αi, удовлетворяющих условию wi,j=t для всех i=0, …, n-1-t, Р(α-i)≠0 и l=0, …, q-2.Statement: Let Δ be the set of values of Δ 2t + 1 such that the polynomial Λ (2t + 2) (x) has exactly t + 1 admissible roots in the field GF (q). Let W i = Cnt (S i ); i = 0, ..., n-1-t; P (α -i ) ≠ 0. Then the set Δ consists of all values of α i satisfying the condition w i, j = t for all i = 0, ..., n-1-t, P (α -i ) ≠ 0 and l = 0, ..., q-2 .
Значение i для найденной невязки Δ2t+1 дает позицию (i1=i) первой ошибки. Значения j, удовлетворяющие условию дают позиции (j1, j2, …, jt) остальных ошибок. Тогда локатор первой ошибки будет , и локаторы остальных ошибок будут , …, .The value of i for the discrepancy Δ 2t + 1 gives the position (i 1 = i) of the first error. Values of j satisfying the condition give the position (j 1 , j 2 , ..., j t ) of the remaining errors. Then the first error locator will be , and the locators of the remaining errors will be , ... .
После нахождения невязки Δ2t+1 невязку Δ2t+2 можно легко вычислить, используя (4)After finding the residual Δ 2t + 1, the residual Δ 2t + 2 can be easily calculated using (4)
или (6)or (6)
Отличительной чертой процедуры декодирования, используемой в заявляемом устройстве, является управление процессом поиска позиций t+1 ошибки информацией о надежности символов. Процедура декодирования состоит из следующих этапов:A distinctive feature of the decoding procedure used in the claimed device is the control of the process of searching for t + 1 error positions by information about the reliability of characters. The decoding procedure consists of the following steps:
1) Вычисление полинома синдромов S(x).1) Calculation of the polynomial syndromes S (x).
2) Получение полинома локаторов Λ(2t)(х), вспомогательного полинома В(2t)(х) и формальной степени полинома локаторов L2t с использованием алгоритма Берлекэмпа-Месси.2) Obtaining the locator polynomial Λ (2t) (x), the auxiliary polynomial B (2t) (x), and the formal degree of the locator polynomial L 2t using the Berlekamp-Messi algorithm.
3) Вычисление преобразования Фурье полиномов Λ(2t)(x) и В(2t)(х), когда L2t=t или L2t=t+1.3) Calculation of the Fourier transform of the polynomials Λ (2t) (x) and B (2t) (x) when L 2t = t or L 2t =
4а) Вычисление коэффициентов Ci=В(2t)(α-i)/Λ(2t)(α-i), когда L2t=t, или Di=Λ(2t)(α-i)/(В(2t)(α-i)·α-2i), когда L2t=t+1.4a) Calculation of the coefficients C i = B (2t) (α -i ) / Λ (2t) (α -i ) when L 2t = t, or D i = Λ (2t) (α -i ) / (В ( 2t) (α -i ) · α -2i ) when L 2t =
4b) Вычисление последовательностей Si возможных значений невязки Δ2t+1 для каждого значения i∈{0,…,n-1-t} (j=i+1,…,n-1), подсчет значений Wi для каждой последовательности и фиксация значения Δ2t+1, которое встречается точно t раз в какой-то из этих последовательностей (wi,l=t), где4b) Calculation of sequences S i of possible values residuals Δ 2t + 1 for each value i∈ {0, ..., n-1-t} (j = i + 1, ..., n-1), counting the values of W i for each sequence and fixing the value Δ 2t + 1 , which occurs exactly t times in any of these sequences (w i, l = t), where
когда L2t=t, илиwhen L 2t = t, or
когда L2t=t+1 (L - массив номеров позиций символов принятого кодового слова, упорядоченных (может быть частично) по возрастанию надежности символов, nc≤n-1-t).when L 2t = t + 1 (L is an array of character position numbers of the received codeword, ordered (maybe partially) by increasing character reliability, n c ≤n-1-t).
4с) Повторное вычисление последовательностей Si для найденного значения i и фиксация позиций ошибок в моменты времени равенства невязки Δ2t+1 значениям .4c) Recalculation of the sequences S i for the found value of i and fixing the positions of errors at the moments of time of equality of the residual Δ 2t + 1 to the values .
5) Получение полинома Λ(2t+2)(x), вычисление значений ошибок и их исправление.5) Obtaining the polynomial Λ (2t + 2) (x), calculating the error values and correcting them.
При такой организации перебора (12, 13) неизвестная невязка находится при малых значениях i.With such an organization of enumeration (12, 13), an unknown discrepancy is found at small values of i.
Предлагаемая процедура декодирования одновременно с повышением быстродействия позволяет решить задачу выбора наиболее вероятного вектора ошибок из списка. В большинстве случаев невязка , соответствующая этому вектору находится первой.The proposed decoding procedure simultaneously with an increase in speed allows us to solve the problem of choosing the most probable error vector from the list. In most cases, the discrepancy corresponding to this vector is first.
Заявляемое устройство декодирования PC-кодов содержит: буферную память данных 100, блок вычисления синдромов 200, процессор Галуа 300, блок дискретного преобразования Фурье 400, блок поиска позиций ошибок веса t+1 500, блок сортировки позиций символов 600, блок вычисления значений ошибок 700, первый сумматор элементов поля Галуа 800.The inventive device for decoding PC codes contains: a
Устройство обрабатывает входные данные, представляющие собой последовательность n m-разрядных символов кодового слова {ri}, принятого из канала, которые сопровождаются значениями их надежности {reli}. При этом оно выполняет описанную выше процедуру декодирования. На выход устройства выдается последовательность n m-разрядных символов кодового слова с исправленными ошибками {ci}.The device processes the input data, which is a sequence of n m-bit characters of the code word {r i } received from the channel, which are accompanied by the values of their reliability {rel i }. At the same time, it performs the decoding procedure described above. The output device is a sequence of n m-bit characters of the code word with the corrected errors {c i }.
Буферная память данных 100 (фиг.1) предназначена для временного хранения принятых из канала символов исправляемых кодовых слов. Может быть реализована известным образом на основе двухпортовой RAM.The buffer data memory 100 (FIG. 1) is intended for temporary storage of symbols of corrected code words received from the channel. It can be implemented in a known manner based on dual-port RAM.
Блок вычисления синдромов 200 выполняет 1-й этап процедуры декодирования, заключающийся в вычислении многочлена синдрома S(x) принятого кодового слова, может быть реализован известным образом по схеме Горнера [4, 5].The unit for computing
Блок сортировки позиций символов 600 осуществляет сортировку позиций символов принимаемого из канала кодового слова в соответствии с их надежностью, формируя тем самым таблицу перестановок L.The character position sorting unit 600 sorts the character positions of the codeword received from the channel in accordance with their reliability, thereby forming a permutation table L.
Процессор Галуа 300 - специализированный процессор, выполняющий операции в конечном поле Галуа, может быть реализован известным образом на основе RISC-архитектуры.Galois processor 300 - a specialized processor that performs operations in the final Galois field, can be implemented in a known manner based on the RISC architecture.
Процессор Галуа 300 реализует алгоритм Берлекэмпа-Месси [4, 5], вычисляя в соответствии с ним многочлены Λ(2t)(x) и В(2t)(х) за 2t итераций (2-ой этап процедуры декодирования).The Galois 300 processor implements the Berlekamp-Messi algorithm [4, 5], calculating in accordance with it the polynomials Λ (2t) (x) and B (2t) (x) in 2t iterations (the second stage of the decoding procedure).
Кроме того, на основе информации, полученной от блока поиска позиций ошибок веса t+1 500 (i1∈{РЕ}, Δ ( или Δ=Δ2t+1), или он вычисляет значение Δ2t+2 по формуле (10) или (11) и затем Λ(2t+2)(x) (выполнив еще две итерации алгоритма Берлекэмпа-Месси с невязками Δ2t+1 и Δ2t+2). Используя многочлены Λ(х)=Λ(2t+2)(х) и S(x), процессор Галуа 300 вычисляет многочлен значений ошибок Ω(х)=Λ(x)·S(x)modxd-1 и формальную производную Λ'(х) многочлена локаторов Λ(х) с последующей загрузкой полученных многочленов вместе с найденными позициями ошибок {РЕ} в блок вычисления значений ошибок 700. Таким образом, выполняется начало 5-го этапа процедуры декодирования.In addition, based on the information received from the search unit for error positions of weight t + 1 500 (i 1 ∈ {PE}, Δ ( or Δ = Δ 2t + 1 ), or he calculates the value of Δ 2t + 2 by the formula (10) or (11) and then Λ (2t + 2) (x) (after completing two more iterations of the Berlekamp-Messi algorithm with residuals Δ 2t + 1 and Δ 2t + 2 ). Using the polynomials Λ (x) = Λ (2t + 2) (x) and S (x), the Galois 300 processor calculates the polynomial of error values Ω (x) = Λ (x) · S (x) modx d-1 and the formal derivative Λ '(x) of the locator polynomial Λ (x) followed by loading the obtained polynomials together with the found error positions {PE} into the error value calculation unit 700. Thus, the beginning of the 5th stage of the decoding procedure is performed.
Кроме этого, процессор Галуа 300 управляет БДПФ 400 и БППО 500 (с использованием сигналов управления Control). Процессор Галуа устанавливает режим работы БДПФ 400, он же загружает в него коэффициенты многочленов Λ(2t)(x) и В(2t)(х). Процессор Галуа контролирует состояние БДПФ (сигналы состояния State) и выгружает из него значения позиций ошибок веса меньшего или равного t. Также процессор Галуа контролирует состояние БППО (сигналы состояния State) и выгружает из него значения позиций ошибок веса t+1 (пропуская их предварительно через таблицу перестановок L блока БСПС 600).In addition, the Galois 300 processor controls the
Блок ДПФ 400 вычисляет преобразование Фурье многочленов Λ(2t)(х) и В(2t)(х) (3-ий этап процедуры декодирования). Кроме того, в зависимости от режима работы он вычисляет коэффициенты Ci или Di, а также коэффициенты Ai=αi (этап 4а процедуры декодирования). Эти коэффициенты загружаются в память блока БППО 500, адресуемую с помощью таблицы перестановок L блока БСПС 600. Блок ДПФ также вычисляет величины, обратные к корням полинома Λ(2t)(х), и контролирует их число, если L2t≤t.The
Блок поиска позиций ошибок веса t+1 500 в зависимости от режима работы анализирует систему (4) с коэффициентами Ci или систему (6) с коэффициентами Di. Он находит позиции ошибок веса t+1 и соответствующие им значения Δ, , или . Таким образом выполняются этапы 4b и 4с процедуры декодирования.The search unit for error positions of weight t + 1 500, depending on the operating mode, analyzes system (4) with coefficients C i or system (6) with coefficients D i . He finds the error positions of weight t + 1 and the corresponding Δ values, , or . Thus, steps 4b and 4c of the decoding procedure are performed.
Блок вычисления значений ошибок 700, используя многочлены Ω(х) и Λ'(х), вычисляет значения ошибок в найденных позициях ошибок {РЕ}. Он может быть реализован известным образом с использованием формулы Форни [4, 5]. Значения ошибок суммируются с помощью сумматора 800 с соответствующими символами кодового слова, считываемого из буферной памяти данных. Тем самым исправляются ошибочные символы кодового слова. Таким образом выполняется основная часть 5-го этапа процедуры декодирования.The error value calculation unit 700, using the polynomials Ω (x) and Λ '(x), calculates the error values at the found error positions {PE}. It can be implemented in a known manner using Forney's formula [4, 5]. The error values are summed using the adder 800 with the corresponding characters of the codeword read from the data buffer memory. This corrects erroneous codeword characters. Thus, the main part of the 5th stage of the decoding procedure is performed.
Представленный декодер работает по конвейерному принципу: все основные его модули работают параллельно, обрабатывая последовательно принятые из канала различные кодовые слова. Конвейерный принцип работы декодера иллюстрируется фиг.9.The presented decoder works according to the conveyor principle: all its main modules work in parallel, processing various codewords sequentially received from the channel. The conveyor principle of operation of the decoder is illustrated in Fig.9.
Рассмотрим для примера обработку декодером k-го кодового слова, в котором произошло t+1 ошибок.Consider, for example, the processing by the decoder of the kth codeword in which t + 1 errors occurred.
Сначала в 1-ом кадре (кадр соответствует времени поступления одного кодового слова) k-oe слово записывается в буфер данных 100 и одновременно в темпе поступления в декодер обрабатывается блоком вычисления синдромов 200 и блоком сортировки позиций символов 600.First, in the 1st frame (the frame corresponds to the time of arrival of one codeword), the k-oe word is written to the
Затем в первой половине 2-го кадра процессор Галуа 300 реализует алгоритм Берлекэмпа-Месси для вычисленного синдрома, анализирует L2t и в начале второй половины 2-го кадра загружает коэффициенты многочленов Λ(2t)(х) и В(2t)(х) в блок ДПФ 400 (Низкий уровень на строке "БДПФ" фиг.9).Then, in the first half of the 2nd frame, the Galois 300 processor implements the Berlekamp-Messi algorithm for the calculated syndrome, analyzes L 2t and at the beginning of the second half of the 2nd frame loads the coefficients of the polynomials Λ (2t) (x) and B (2t) (x) in the block DFT 400 (Low level on the line "BDPF" Fig.9).
В течение второй половины 2-го кадра и первой половины 3-го кадра блок ДПФ 400 выполняет преобразование Фурье многочленов Λ(2t)(x) и В(2t)(х) k-го кодового слова (высокий уровень на строке 'БДПФ'). Кроме того, в зависимости от режима работы он вычисляет коэффициенты Ci или Di и Ai, которые загружаются в память БППО, адресуемую с помощью таблицы перестановок L блока БСПС. Если L2t≤t блок ДПФ 400 также вычисляет величины, обратные к корням полинома Λ(2t)(х), и контролирует их число.During the second half of the 2nd frame and the first half of the 3rd frame, the
В течение второй половины 3-го кадра и первой половины 4-го кадра блок поиска позиций ошибок веса t+1 500 выполняет вычисление значений величины (или Δ=Δ2t+1) k-го кодового слова, их подсчет и фиксацию тех их значений, которые встретились в цикле сканирования ровно t раз.During the second half of the 3rd frame and the first half of the 4th frame, the error position search block of weight t + 1 500 performs the calculation of the values (or Δ = Δ 2t + 1 ) of the k-th codeword, their calculation and fixing of those values that occurred exactly t times in the scan cycle.
В течение второй половины 4-го кадра и первой половины 5-го кадра блок поиска позиций ошибок веса t+1 500 с помощью зафиксированного значения Δ определяет позиции t+1 ошибочных символов k-го кодового слова. Значения этих позиций корректируются с помощью таблицы L во время их пересылки в процессор Галуа.During the second half of the 4th frame and the first half of the 5th frame, the block for searching for error positions of weight t + 1 500 using the fixed value Δ determines the positions t + 1 of the erroneous characters of the k-th code word. The values of these positions are adjusted using table L during their transfer to the Galois processor.
В течение второй половины 5-го кадра процессор Галуа 300 вычисляет многочлены Ω(х) и Λ'(х) и загружает их в блок вычисления значений ошибок 700.During the second half of the 5th frame, the Galois processor 300 calculates the polynomials Ω (x) and Λ '(x) and loads them into the error value calculation unit 700.
В течение 6-го кадра блок вычисления значений ошибок 700 вычисляет значения ошибок для соответствующих позиций k-го кодового слова, выгружаемого из буферной памяти данных 100 и осуществляет их исправление с помощью сумматора 800.During the 6th frame, the error value calculation unit 700 calculates the error values for the corresponding positions of the k-th codeword, unloaded from the
Аналогичным образом осуществляется обработка k+1, k+2 и т.д. принятых из канала кодовых слов.Similarly, processing is carried out k + 1, k + 2, etc. codewords received from the channel.
Приведем в соответствии с изобретением описание устройства и работы основных нетривиальных блоков декодера.We present in accordance with the invention a description of the device and the operation of the main non-trivial blocks of the decoder.
Блок сортировки позиций символов 600Character Sort Block 600
Функциональная схема блока сортировки позиций символов (БСПС) 600 приведена на фиг.2. Блок содержит: схему сравнения кодов 610; пять блоков памяти отсортированных позиций (БПОП) 620.1-620.5; два пятивходовых коммутатора 630.1, 630.2; двоичный счетчик на n 640; два двоичных счетчика на 5 650.1, 650.2; два дешифратора на 5 состояний 660.1, 660.2; пять двухвходовых коммутатора 670.1-670.5.The functional diagram of the block character position sorting (ACAS) 600 is shown in figure 2. The block contains: a
БСПС осуществляет сортировку позиций символов принятого из канала кодового слова в соответствии с их надежностью. Сортировка осуществляется в процессе поступления символов в декодер, при этом формируется таблица перестановок L. Таблица состоит из двух частей: по младшим адресам располагаются позиции ненадежных символов (для которых надежность меньше заданного порога), по старшим адресам располагаются позиции оставшихся символов. Сравнение надежности символа с порогом осуществляет схема сравнения кодов 610, на выходе которой формируется логическая «1», если величина надежности, подаваемая на первые входы БСПС SoftIn, будет больше значения порога «Thres».ACAS sorts the positions of the symbols of the codeword received from the channel in accordance with their reliability. Sorting is carried out when the characters arrive at the decoder, and a permutation table L is formed. The table consists of two parts: the positions of unreliable characters (for which the reliability is less than a specified threshold) are located at the lowest addresses, and the positions of the remaining characters are located at the senior addresses. A symbol reliability comparison with a threshold is carried out by a
Таблицы перестановок формируются и затем хранятся в каждом из блоков БПОП 620. Пять блоков необходимы для организации конвейерной работы декодера с учетом того, что сформированная таблица L для кодового слова будет использоваться с задержкой.Permutation tables are generated and then stored in each of the BPOPS 620 blocks. Five blocks are necessary for organizing the pipeline operation of the decoder, taking into account the fact that the generated table L for the codeword will be used with a delay.
Величина задержки видна на временных диаграммах работы декодера (фиг.9). Так, для k-го кодового слова таблица перестановок формируется в 1-ом кадре, используется во 2-ой половине 2-го и 1-ой половине 3-го кадра, и еще раз - во 2-ой половине 4-го и 1-ой половине 5-го кадра.The amount of delay is visible on the timing diagrams of the decoder (Fig.9). So, for the k-th codeword, a permutation table is formed in the 1st frame, used in the 2nd half of the 2nd and 1st half of the 3rd frame, and again in the 2nd half of the 4th and 1st half of the 5th frame.
Пять блоков БПОП 620 позволяют формировать таблицу L для символов поступающего в декодер кодового слова и одновременно использовать таблицы перестановок для обработки двух других поступивших в декодер ранее кодовых слов.Five BPOPS 620 blocks make it possible to create a table L for symbols of a codeword arriving at a decoder and at the same time use permutation tables to process two other codewords received at a decoder earlier.
Для организации одновременного обращения к трем из пяти блоков БППО используются счетчики 640, 650.1, 650.2; дешифраторы 660.1, 660.2 и коммутаторы 630.1, 630.2, 670.1-670.5. Счетчики 640, 650.1 и дешифратор 660.1 предназначены для управления записью в БПОП при формировании таблицы перестановок. Счетчик 640 хранит позицию текущего символа, которая подается на вход данных DI всех БПОП одновременно с подачей флага надежности, формируемого схемой сравнения кодов 610, на вход S БПОП. Запись будет осуществляться в тот БПОП, на вход которого подается логический "0" (активный уровень) с выхода дешифратора 660.1.To organize simultaneous access to three of the five BPPO blocks, counters 640, 650.1, 650.2 are used; decoders 660.1, 660.2 and switches 630.1, 630.2, 670.1-670.5. The
Счетчик 650.2, дешифратор 660.2 и коммутаторы предназначены для управления чтением из БПОП при обращении к таблице перестановок. Причем коммутаторы 630.1, 630.2 предназначены для подключения выходов DO БПОП ко вторым (DOR1) или первым (DOR2) выходам блока 600 БСПС. Коммутаторы 670.1-670.5 предназначены для подключения адресных входов Adr БПОП к третьим (AdR1) или вторым (AdR2) входам БСПС. Направление передачи данных коммутаторами определяется счетчиком 650.2.The counter 650.2, the decoder 660.2 and the switches are designed to control reading from the BPOP when accessing the permutation table. Moreover, the switches 630.1, 630.2 are designed to connect the DO BPO outputs to the second (DOR1) or first (DOR2) outputs of the ACAS unit 600. Switches 670.1-670.5 are designed to connect the Adr BPOP address inputs to the third (AdR1) or second (AdR2) ACAS inputs. The direction of data transfer by the switches is determined by the counter 650.2.
Функциональная схема БПОП 620 приведена на фиг.3. БПОП содержит: два блока памяти с произвольным доступом 621.1, 621.2; два логических элемента И-НЕ 622, 627; два двоичных счетчика 623.1, 623.2; четыре коммутатора 624.1, 624.2, 625.1, 625.2; вычитатель 626.Functional diagram of BPOP 620 is shown in Fig.3. BPOP contains: two memory blocks with random access 621.1, 621.2; two
Память 621.1 предназначена для хранения позиций ненадежных символов кодового слова таблицы перестановок L, позиции надежных символов хранятся в памяти 621.2.The memory 621.1 is intended for storing positions of unreliable characters of the codeword of the permutation table L, the positions of the reliable characters are stored in memory 621.2.
БПОП работает в двух режимах:BPOP operates in two modes:
1) режиме записи в память позиции символа кодового слова;1) the mode of writing to the memory the position of the symbol of the code word;
2) режиме чтения из таблицы перестановок.2) reading mode from the permutation table.
Первый режим используется для формирования таблицы перестановок, в этом режиме на третий вход БПОП подается логический ноль Если БПОП работает в режиме чтения таблицы перестановок.The first mode is used to form a permutation table; in this mode, a logical zero is supplied to the third input of the BPOA If BPOP works in the reading mode of the permutation table.
БПОП в первом режиме работает следующим образом. По активному сигналу , подаваемому на третий вход БПОП, коммутаторы 624 подают на третьи (адресные входы) блоков памяти 621 содержимое счетчиков 623, которые содержат адреса следующих незаписанных ячеек памяти. Если на второй вход БПОП подается сигнал sel=0 (для ненадежного символа), по сигналу осуществляется запись позиции символа с первых входов БПОП (DI) в память 621.1 и по завершению записи содержимое счетчика 623.1 инкрементируется. Если сигнал sel=1 (для надежного символа), осуществляется запись в память 621.2 и инкремент счетчика 623.2.BPOP in the first mode works as follows. By active signal supplied to the third input of the BPOA, the switches 624 provide the third (address inputs) of the memory blocks 621 with the contents of the counters 623, which contain the addresses of the following unrecorded memory cells. If the signal sel = 0 (for an unreliable symbol) is supplied to the second input of the BPOA, the signal the position of the symbol is recorded from the first inputs of the BPOE (DI) into the memory 621.1, and upon completion of recording, the contents of the counter 623.1 are incremented. If the signal sel = 1 (for a reliable character), it is written to the memory 621.2 and the increment of the counter 623.2.
Во втором режиме работы БПОП осуществляется выдача на выходы БПОП (DO) следующей информации:In the second mode of operation of the BPOA, the following information is output to the outputs of the BPOA (DO):
1) количества позиций ненадежных символов, хранимых в памяти 621.1 (содержимое счетчика 623.1), необходимое для определения переменной nC в формулах (12, 13);1) the number of positions of unreliable characters stored in memory 621.1 (the contents of the counter 623.1) needed to determine the variable n C in formulas (12, 13);
2) содержимого таблицы перестановок L по адресу, поданному на четвертые входы БПОП (Adr) (содержимое ячейки памяти 621.1 или 621.2).2) the contents of the permutation table L at the address supplied to the fourth inputs of the BPOE (Adr) (contents of memory cell 621.1 or 621.2).
Если старший бит входной шины Adr равен «1», то через коммутатор 625.2 на выходы БПОП (DO) подается содержимое счетчика 623.1. В противном случае на выходы через коммутаторы 625 подается содержимое одного из блоков памяти 621.If the most significant bit of the Adr input bus is “1”, then through the switch 625.2 the contents of the counter 623.1 are fed to the outputs of the BPOA (DO). Otherwise, the outputs through the switches 625 serves the contents of one of the memory blocks 621.
Если содержимое шины Adr будет меньше содержимого счетчика 623.1 (заем на втором выходе вычитателя 626, управляющий коммутатором 625.1, отсутствует), то на выходы БПОП будет подаваться содержимое ячейки памяти 621.1, адресуемой непосредственно содержимым шины адреса Adr. В противном случае на выходы БПОП будет подаваться содержимое ячейки памяти 621.2, адресуемой разностью содержимого шины адреса Adr и содержимого счетчика 623.1.If the contents of the Adr bus will be less than the contents of the counter 623.1 (there is no loan at the second output of the
Блок дискретного преобразования Фурье 400
Функциональная схема блока дискретного преобразования Фурье 400 приведена на фиг.7. Блок содержит: местное устройство управления (МУУ) 410; модуль дискретного преобразования Фурье многочлена Λ(2t)(х) 420.1; модуль дискретного преобразования Фурье многочлена B(2t)(х) 420.2; перекрестный коммутатор 430; инвертор элементов поля Галуа 440; перемножитель двух элементов поля Галуа 450; двухвходовый коммутатор 460, умножитель на α 470; регистр-защелку 480, работающую по фронту тактового сигнала; двоичный счетчик номеров позиций принятого слова 490 с коэффициентом пересчета n.The functional block diagram of the
Местное устройство управления 410 предназначено для взаимодействия с процессором Галуа 300 и управления блоком ДПФ 400. Оно также накапливает возможные позиции ошибок веса, меньшего t+1, запоминая значения i в момент равенства нулю значения многочлена Λ(2t)(α-i) (сигнал sel0) и подсчитывая их количество.The
Двоичный счетчик 490 предназначен для формирования значения i.
Регистр 480 и умножитель на α 470 обеспечивают формирование величины Ai=αi.
Блок ДПФ 400 - может работать в трех режимах.Block DPF 400 - can operate in three modes.
Нулевой режим. В этом режиме блок ДПФ 400 работает, когда L2t<t. При этом в него загружаются только значения коэффициентов полинома Λ(2t)(х) и ищутся позиции ошибок веса, меньшего t. Значения сигналов на первых, четвертых-шестых выходах Б ДПФ (AddR1, Ci|Di, Mskl, Ai) игнорируются.Zero mode. In this mode, the
Первый режим. В этом режиме блок ДПФ 400 работает, когда L2t=t. В него загружаются значения коэффициентов обоих полиномов Λ(2t)(х) и B(2t)(x). Осуществляется поиск позиций ошибок веса t. Вычисляются коэффициенты . Для их вычисления перекрестный коммутатор 430 работает в прямом направлении, подавая на вход инвертора 440 коэффициенты Λ(α-i). На пятом выходе БППФ значение Msk1 (исключение уравнений из системы) формируется путем подачи через коммутатор 460 сигнала со второго выхода модуля дискретного преобразования Фурье 420.1, который имеет единичный уровень, когда Λ(α-i)=0.First mode. In this mode, the
Второй режим. В этом режиме блок ДПФ 400 работает, когда L2t=t+1. В него загружаются значения коэффициентов полиномов Λ(2t)(х) и х2·В(2t)(х). Вычисляются коэффициенты . Для их вычисления перекрестный коммутатор 430 работает в перекрестном режиме, подавая на вход инвертора 440 значения α-2iB(α-i). На пятом выходе БППФ значение Msk1 формируется путем подачи через коммутатор 460 сигнала со второго выхода модуля дискретного преобразования Фурье 420.2, который имеет единичный уровень, когда В(α-i)=0.The second mode. In this mode, the
В каждом такте работы блока ДПФ 400 на первых выходах модуля дискретного преобразования Фурье многочлена Λ(х) 420.1 появляется значение Λ(α-i), на первых выходах модуля дискретного преобразования Фурье многочлена В(х) 420.2 появляется значение В(α-i) (или α-2iB(α-i)), на выходе регистра 480 формируется значение Ai. За время цикла работы блока ДПФ 400 i пробегает значения 0, …, n-1.In each clock cycle of the
В первом и втором режимах Ai, Ci|Di и Msk1 записываются в буферную память 550 блока поиска позиций ошибок веса t+1 500. Для формирования адресов памяти 550 при записи используется счетчик 490, значение которого подается на вход таблицы перестановок L, хранящейся в блоке сортировки позиций символов 600.In the first and second modes, A i , C i | D i and Msk1 are written into the
Функциональная схема модуля дискретного преобразования Фурье многочлена Λ(2t)(х) 420.1 (модуль дискретного преобразования Фурье многочлена В(2t)(х) 420.2 реализуется по точно такой же схеме) приведена на фиг.8.Functional diagram of the module of the discrete Fourier transform of the polynomial Λ (2t) (x) 420.1 (the module of the discrete Fourier transform of the polynomial B (2t) (x) 420.2 is implemented in exactly the same way) is shown in Fig. 8.
Модуль 420 содержит блок вентилей 421, регистры-защелки, работающие по фронту тактового импульса, 422.0 - 422.t+1, сумматор элементов поля Галуа на t+2 входа 423, селектор нулевого элемента поля Галуа 424, умножители на постоянные коэффициенты в поле Галуа 425.1 - 425.t+1, блоки логических элементов ИЛИ 426.1 - 426.t+1.Module 420 contains a block of
Перед началом работы блока ДПФ 400 регистры 422.0 - 422.t+1 обнуляются. Затем процессор Галуа 300 с помощью местного устройства управления 410 загружает в эти регистры через блок вентилей 421 и блоки логических элементов ИЛИ 426.1 - 426.t+1 коэффициенты полинома Λ(2t)(х) (В(2t)(х), x2B(2t)(x)). Сумма всех регистров 422.0-422.t+1Before starting the operation of the
сразу даст значение полинома в точке х=α0 на выходах сумматора элементов поля Галуа 423.immediately gives the value of the polynomial at the point x = α 0 at the outputs of the adder of the elements of the
Затем содержимое каждого регистра 422.k (k=1, …, t+1) соответственно умножается на α-k с помощью умножителя на постоянные коэффициенты 425.k, где k соответствует степени неизвестной при обрабатываемом в регистре коэффициенте полинома. После этого сумма всех регистров 422.0 - 422.t+1 даст значение полинома в точке х=α-1.Then the contents of each register 422.k (k = 1, ..., t + 1) are respectively multiplied by α -k using the multiplier by constant coefficients 425.k, where k corresponds to the degree unknown for the polynomial coefficient being processed in the register. After that, the sum of all the registers 422.0 - 422.t + 1 will give the polynomial value at the point x = α -1 .
Процесс повторяется до тех пор, пока не вычислится значение полинома в точке х=α-(n-1). Все это время селектор нулевого элемента поля 424 активизирует сигнал sel0 при обнаружении нулевого значения полинома на выходах сумматора 423.The process is repeated until the polynomial value at the point x = α - (n-1) is calculated. All this time, the zero element selector of the
Блок поиска позиций ошибок веса t+1 500Block for searching for positions of errors of weight t + 1 500
Для снижения аппаратной сложности желательно, чтобы блок поиска позиций ошибок веса t+1 (БППО) 500 выполнял вычисления по возможности одинаково с коэффициентами Ci в случаях, когда L2t=t, и с коэффициентами Di в случаях, когда L2t=t+1. Для этого в первом случае подсчитывают значения не невязки Δ2t+1, а обратной к ней величины .To reduce the hardware complexity, it is desirable that the block for searching for error positions of weight t + 1 (BPPO) 500 perform the calculations as similarly as possible with the coefficients C i in cases where L 2t = t, and with the coefficients D i in cases where L 2t = t +1 For this, in the first case, the values of not the residuals Δ 2t + 1 , but the values inverse to it, are calculated .
Функциональная схема блока поиска позиций ошибок веса t+1 500 приведена на фиг.4. БППО содержит: два блока вычисления невязки Δ' (БВН) ( или Δ'=Δ2t+1) 510.1, 510.2; два блока подсчета невязок Δ' (БПН) 520.1, 520.2; коммутатор 530; регистр-защелку 540; блок памяти коэффициентов (БПК) 550, местное устройство управления (МУУ) 560.The functional block diagram of the search for positions of errors of weight t + 1 500 is shown in Fig.4. BPPO contains: two blocks for calculating the residual Δ '(BVN) ( or Δ '= Δ 2t + 1 ) 510.1, 510.2; two blocks for calculating residuals Δ '(BPN) 520.1, 520.2;
Блоки 510.1, 510.2 выполняют вычисления Δ' в соответствии с формулами (12) или (13) в зависимости от значения L2t.Blocks 510.1, 510.2 perform Δ 'calculations in accordance with formulas (12) or (13) depending on the value of L 2t .
Блоки 520.1, 520.2 осуществляют подсчет различных значений величины Δ' в поле Галуа (wi,l) и фиксируют ситуацию равенства t количества какого-то значения Δ'.Blocks 520.1, 520.2 carry out the calculation of various values of Δ 'in the Galois field (w i, l ) and fix the situation of equality t of the quantity of some value Δ'.
Определенные для этой ситуации значения Δ'', и поступают из соответствующей пары блоков 510 и 520 через коммутатор 530 на входы регистра 540 и запоминаются в нем.The Δ '' values defined for this situation, and come from the corresponding pair of blocks 510 and 520 through the
Блок памяти коэффициентов 550 предназначен для временного хранения величин Ai, Ci (или Di) и бит Msk1. Он содержит 3 секции, операции с которыми выполняются одновременно. В одну секцию величины Ai, Ci (или Di) и биты Msk1 поступают из блока ДПФ 400, из другой секции задержанные на один кадр они считываются и поступают в блоки 510.1-510.2 для вычисления Δ', из следующей секции эти величины, задержанные еще на один кадр, считываются и используются для повторного вычисления последовательности Δ', необходимой для фиксации позиций ошибочных символов. БПК 550 может быть реализован известным образом на основе трехпортовой RAM.The
Местное устройство управления 560 предназначено для взаимодействия с процессором Галуа 300 и управления блоком БППО. В том числе, оно вычисляет последовательность адресов чтения блока памяти коэффициентов 550. Оно также накапливает позиции конфигурации ошибок веса t+1, записывая в стек значения AR2 в момент равенства величин Δ' и Δ (сигнал SXi).The
Две пары блоков БВН+БПН 510 и 520 необходимы для обеспечения конвейерного режима работы блока поиска позиций ошибок. Каждая пара блоков 510 и 520 обрабатывает коэффициенты Ci (или Di) одного кодового слова в течение двух кадров (см. фиг.9). В каждом кадре одна пара осуществляет вычисления Δ' и подсчет их значений, БВН другой пары осуществляет вычисления Δ' для фиксации позиций ошибочных символов в предыдущем кодовом слове, одновременно осуществляется очистка памяти БПН этой же пары.Two pairs of BVN + BPN blocks 510 and 520 are necessary to ensure the conveyor operation mode of the error position search block. Each pair of blocks 510 and 520 processes the coefficients C i (or D i ) of one codeword for two frames (see Fig. 9). In each frame, one pair performs Δ 'calculations and counts their values, the I / O of the other pair performs Δ' calculations to fix the positions of erroneous characters in the previous code word, and the BPN memory of the same pair is simultaneously cleared.
На фиг.4 пара блоков 510.1+520.1 осуществляет подсчет различных значений Δ' для k-го кодового слова во второй половине 3-го кадра и первой половине 4-го. Фиксация позиций ошибочных символов для k-го слова осуществляется во второй половине 4-го кадра и первой половине 5-го с использованием блока 510.1, в это же время записывается нулями память БПН 520.1. Аналогичным образом работает пара блоков 510.2+520.2, обрабатывая t+1-ое кодовое слово со смещением на кадр.In Fig. 4, a pair of blocks 510.1 + 520.1 counts different Δ 'values for the k-th codeword in the second half of the 3rd frame and the first half of the 4th. The positions of erroneous characters for the k-th word are fixed in the second half of the 4th frame and the first half of the 5th using block 510.1, at the same time, the memory of BPN 520.1 is written in zeros. In a similar way, a pair of blocks 510.2 + 520.2 works, processing t + 1 codeword with an offset per frame.
Рассмотрим устройство и работу основных блоков БППО.Consider the device and the operation of the main BPPO blocks.
Функциональная схема блока вычисления невязок Δ' (БВН) 510 приведена на фиг.5. БВН содержит: три коммутатора с двух направлений 511.0, 511.1 и 511.2; два регистра-защелки, работающих по фронту тактового сигнала 512.1 и 512.2; два сумматора элементов поля Галуа 513.1 и 513.2; инвертор элементов поля Галуа 514; перемножитель элементов поля Галуа 515; схему сравнения кодов (на выходе логическая "1", если коды на входах равны) 516.1; селектор нулевого элемента поля Галуа 516.2; два элемента логическое И 517.1 и 517.2; элемент логическое ИЛИ-НЕ 518; D-триггер, работающий по фронту тактового сигнала 519.The functional diagram of the unit for calculating residuals Δ '(BVN) 510 is shown in Fig.5. BVN contains: three switches from two directions 511.0, 511.1 and 511.2; two register-latches operating along the front of the clock signal 512.1 and 512.2; two adders of Galois field elements 513.1 and 513.2; Galois
БВН работает в 2-х режимах.BVN works in 2 modes.
В первом (основном) режиме БВН вычисляет значение Δ' по формуле (12) или (13) и формирует инверсный бит маскирования для блока подсчета невязок 520.In the first (main) mode, the BVN calculates the value Δ 'by the formula (12) or (13) and generates an inverse masking bit for the residual counting unit 520.
В начале цикла сканирования по сигналу Ld (см. фиг.5), подаваемому на восьмой вход БВН, в регистр 512.1 через коммутатор 511.1 защелкивается коэффициент A'l(i) (адрес данных чтения AR1 БПК 550 при этом равен i), в регистр 512.2 через коммутатор 511.2 защелкивается коэффициент C'L(i) (D'L(i)), в триггер 519 защелкивается бит маски Msk1'. В следующих тактах из БПК 550 считываются коэффициенты A'l(j), C'L(j) (d'l(j)) вместе с соответствующим битом маски (адреса данных чтения БПК при этом будут пробегать значения j=i+1, …, n-1). На выходах сумматора элементов поля 513.1 формируются суммы A'L(i)+A'l(j) (в поле Галуа характеристики 2 вычитание совпадает со сложением). Инвертор 514 находит обратную величину полученной суммы в поле Галуа. На выходах сумматора элементов поля 513.2 формируются суммы C'l(i)+C'l(j) (D'l(i)+D'l(j)), на выходах перемножителя 515 получаются величины (или для L2t=2t+1). С помощью бита маскирования Msk2, формируемого логическим элементом ИЛИ-НЕ 518, из подсчета убираются Δ', для которых Λ(2t)(α-i)=0 (или В(2t)(α-i)=0 для L2t=2t+1). Кроме того, из подсчета убираются нулевые значения Δ' с помощью селектора нулевого элемента поля 516.2 и логического элемента И 517.2.At the beginning of the scan cycle, according to the signal Ld (see Fig. 5) supplied to the eighth input of the IOS, the coefficient A ' l (i) is latched into the register 512.1 through the switch 511.1 (the read data address AR1 of the
Во втором режиме определяются значения t позиций ошибочных символов (значение позиции первой ошибки определяется в местном устройстве управления 560 при обнаружении ровно t значений Δ'). Для этого повторяют цикл вычисления Δ', на котором был обнаружен набор из t одинаковых значений Δ', используя значения А''L(i), С''L(j) (D''l(j), Msk1'' со вторых входов блока памяти коэффициентов 550. При этом последовательность Δ' сравнивается схемой сравнения кодов 516.1 с запомненным в регистре 540 значением Δ''. Всякий раз при сравнении сигнал SXi принимает значение логической 1, и в этот момент времени значение AR2 принимается как значение позиции РЕ' ошибочного символа (без учета перестановки).In the second mode, the values of t positions of erroneous symbols are determined (the position value of the first error is determined in the
Блок подсчета невязок (БПН) 520 содержит (см. фиг.6): блок вентилей 521, блок памяти с произвольной выборкой 522 с защелкой выходных данных на выходе по фронту тактового сигнала, схему инкремента 523, схему сравнения кодов 524, коммутатор с двух направлений 526, регистр-защелку 527, логические элементы И 525 и 528.The block of residual counting (BPN) 520 contains (see Fig. 6): a block of
В основе БПН лежит память 522, которая содержит 2m слов (2m - число элементов конечного поля Галуа) разрядностью log2t. Слово памяти хранит значение счетчика соответствующего значения Δ' (wi,l).The BPN is based on
Блок подсчета невязок работает в двух режимах.The residual counting unit operates in two modes.
В первом режиме осуществляется подсчет различных значений Δ'. Поступающие на вход блока значения Δ', защелкиваются в регистр 527. Содержимое ячейки памяти 522 (счетчик wi,l), соответствующее этому значению Δ', увеличивается на 1 с помощью схемы инкремента 523 и записывается в ту же ячейку памяти через открытый блок вентилей 521. Схема сравнения кодов 524 проверяет, не достигло ли значение счетчика t, и если достигло, то формирует сигнал обнаружения значения невязки Δ', соответствующего конфигурации ошибок веса t+1.In the first mode, various Δ 'values are counted. The Δ 'values arriving at the block input are latched into
Уровень логического нуля на выходе элемента 528, формируемый при активном сигнале Msk2 или неактивном сигнале разрешения работы Е, блокирует инкрементирование количества Δ', находящегося на выходе памяти.The logic zero level at the output of
Во втором режиме работы БПН (режиме инициализации), задаваемом сигналом I на первом входе БПН, во все ячейки памяти 522 записываются нулевые слова. Адреса ячеек памяти 522 в этом режиме поступают через коммутатор 526 из местного устройства управления 560. Нулевые слова на входе памяти 522 получают с помощью блока вентилей 521.In the second operation mode of the on-load tap-changer (initialization mode) specified by the signal I at the first input of the on-load tap-changer, zero words are written to all
Предлагаемое устройство декодирования кодов Рида-Соломона представляет собой синхронный потоковый декодер, обрабатывающий входные данные в темпе их поступления. Выходные данные тактируются частотой входных данных, и, следовательно, выдаются с такой же скоростью. Задержка данных в устройстве равна времени поступления пяти кодовых слов. Размер буферной памяти данных 100 будет при этом равен 5n символам.The proposed device for decoding Reed-Solomon codes is a synchronous stream decoder that processes the input data at the rate of their arrival. The output is clocked by the frequency of the input, and therefore output at the same rate. The data delay in the device is equal to the arrival time of five code words. The size of the
Заявляемое устройство состоит из простых по своему функциональному назначению элементов и поэтому легко может быть реализовано на ПЛИС или специализированной БИС.The inventive device consists of simple in its functional purpose elements and therefore can easily be implemented on FPGA or specialized LSI.
Результаты исследования быстродействия заявляемого декодера в канале с аддитивным белым гауссовским шумом (AWGN) и модуляцией BPSK приведены на фиг.10. В качестве меры надежности символа слова PC-кода использовалось минимальное значение модулей мягких решений составляющих его бит.The results of the study of the performance of the inventive decoder in the channel with additive white Gaussian noise (AWGN) and BPSK modulation are shown in Fig.10. As a measure of the reliability of the word symbol of the PC code, the minimum value of the soft decision modules was used its constituent bits.
Имитационным моделированием исследовались PC-коды с d=13, определенные над конечным полем GF(28), nc=30. Модель канала - BPSK, AWGN, Eb/No=7 db. На графике ξ обозначает коэффициент повышения быстродействия поиска неизвестных невязок, равный отношению ns·nw (nw - число обработанных кодовых слов в процессе моделирования) к реальному числу вычислений невязок декодером при исправлении t+1 ошибок.By simulation, we studied PC codes with d = 13, defined over a finite field GF (2 8 ), n c = 30. Channel model - BPSK, AWGN, E b / No = 7 db. On the graph, ξ denotes a coefficient for increasing the speed of searching for unknown residuals, equal to the ratio of n s · n w (n w is the number of processed code words in the modeling process) to the real number of calculations discrepancies by the decoder when correcting t + 1 errors.
Кривая 1 соответствует случаю декодирования кодовых слов с t+1 ошибкой по алгоритму [3] (характеризует возможность повышения быстродействия декодера-прототипа за счет усреднения времени декодирования кодовых слов), кривая 2 - случаю управления поиском невязок информацией о надежности принятых из канала символов. Для получения значения ξ в одной точке обрабатывалось nw=107 кодовых слов. Из графика видно, что выигрыш по быстродействию при управляемом поиске составляет примерно два десятичных порядка.
Использование информации о надежности принятых из канала символов кодового слова в процессе поиска неизвестных невязок обеспечивает значительно большее быстродействие заявляемого устройства декодирования по сравнению с прототипом.The use of information about the reliability of the codeword symbols received from the channel in the process of searching for unknown residuals provides significantly greater performance of the inventive decoding device compared to the prototype.
Источники информацииInformation sources
1. Патент 6631172 США. МПК7 H03D 1/00. Efficient List Decoding Of Reed-Solomon Codes For Message Recovery In The Presence Of High Noise Levels. / Mohammad Amin Shokrollahi, Vadim Olshevsky - заявлено 01.05.2000 N09/563602; опубл. 07.10.2003.1. US patent 6631172. IPC 7 H03D 1/00. Efficient List Decoding Of Reed-Solomon Codes For Message Recovery In The Presence Of High Noise Levels. / Mohammad Amin Shokrollahi, Vadim Olshevsky - 05/01/2000 N09 / 563602; publ. 10/07/2003.
2. Патент 6634007 США. МПК7 Н03М 13/00. Algebraic Soft-Decision Decoding of Reed-Solomon codes. / Ralf Koetter, Alexander Vardy - заявлено 23.01.2000 N09/602914; опубл. 14.10.2003.2. U.S. Patent 6,634,007. IPC 7 Н03М 13/00. Algebraic Soft-Decision Decoding of Reed-Solomon codes. / Ralf Koetter, Alexander Vardy - Declared 1/23/2000 N09 / 602914; publ. 10/14/2003.
3. Egorov S., Markarian G., Pickavance K. A Modified Blahut Algorithm for Decoding Reed-Solomon Codes Beyond Half the Minimum Distance // IEEE Trans. on Commun., vol.52, no.12, December. 2004, pp.2052-2056.3. Egorov S., Markarian G., Pickavance K. A Modified Blahut Algorithm for Decoding Reed-Solomon Codes Beyond Half the Minimum Distance // IEEE Trans. on Commun., vol. 52, no.12, December. 2004, pp. 2052-2056.
4. Егоров С.И. Коррекция ошибок в информационных каналах периферийных устройств ЭВМ. Монография. Курск: Курск, гос. техн. ун-т, 2008. - 252 с.4. Egorov S.I. Error correction in the information channels of computer peripherals. Monograph. Kursk: Kursk, state. tech. Univ., 2008 .-- 252 p.
5. Блейхут Р. Теория и практика кодов, контролирующих ошибки: Пер. с англ. - М.: Мир, 1986. - 576 с.5. Bleikhut R. Theory and practice of error control codes: Per. from English - M.: Mir, 1986 .-- 576 p.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2010134469/08A RU2441318C1 (en) | 2010-08-17 | 2010-08-17 | Device to decode reed-solomon codes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2010134469/08A RU2441318C1 (en) | 2010-08-17 | 2010-08-17 | Device to decode reed-solomon codes |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2441318C1 true RU2441318C1 (en) | 2012-01-27 |
Family
ID=45786588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2010134469/08A RU2441318C1 (en) | 2010-08-17 | 2010-08-17 | Device to decode reed-solomon codes |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2441318C1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014003599A1 (en) * | 2012-06-29 | 2014-01-03 | Ems Corparation | Redundant disc encoding via erasure decoding |
RU2541869C1 (en) * | 2013-10-10 | 2015-02-20 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Юго-Западный государственный университет" (ЮЗ ГУ) | Reed-solomon code decoder |
RU2584963C1 (en) * | 2014-11-26 | 2016-05-20 | Открытое Акционерное Общество "Концерн "Морское Подводное Оружие - Гидроприбор" | Pseudonoise signal decoding method |
RU2613760C2 (en) * | 2015-06-04 | 2017-03-21 | Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования "Санкт-Петербургский государственный университет телекоммуникации им. проф. М.А. Бонч-Бруевича" | Device for majority decoding reed-solomon code in k-element sections of code combination |
-
2010
- 2010-08-17 RU RU2010134469/08A patent/RU2441318C1/en not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014003599A1 (en) * | 2012-06-29 | 2014-01-03 | Ems Corparation | Redundant disc encoding via erasure decoding |
US9081752B2 (en) | 2012-06-29 | 2015-07-14 | Emc Corporation | Redundant disk encoding via erasure decoding |
RU2541869C1 (en) * | 2013-10-10 | 2015-02-20 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Юго-Западный государственный университет" (ЮЗ ГУ) | Reed-solomon code decoder |
RU2584963C1 (en) * | 2014-11-26 | 2016-05-20 | Открытое Акционерное Общество "Концерн "Морское Подводное Оружие - Гидроприбор" | Pseudonoise signal decoding method |
RU2613760C2 (en) * | 2015-06-04 | 2017-03-21 | Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования "Санкт-Петербургский государственный университет телекоммуникации им. проф. М.А. Бонч-Бруевича" | Device for majority decoding reed-solomon code in k-element sections of code combination |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Reduced-latency SC polar decoder architectures | |
Wei | VLSI architectures for computing exponentiations, multiplicative inverses, and divisions in GF (2/sup m/) | |
US7716562B1 (en) | Reduced processing in high-speed reed-solomon decoding | |
RU2441318C1 (en) | Device to decode reed-solomon codes | |
Garcia-Herrero et al. | High-speed RS (255, 239) decoder based on LCC decoding | |
Imaña et al. | Bit-parallel finite field multipliers for irreducible trinomials | |
Hariri et al. | Concurrent error detection in montgomery multiplication over binary extension fields | |
Ahmed et al. | VLSI architectures for soft-decision decoding of Reed–Solomon codes | |
Zhu et al. | High-speed re-encoder design for algebraic soft-decision Reed-Solomon decoding | |
Freudenberger et al. | Reduced complexity hard‐and soft‐input BCH decoding with applications in concatenated codes | |
US20050004966A1 (en) | System and method for efficient VLSI architecture of finite fields | |
Wei et al. | High-speed decoder of Reed-Solomon codes | |
EP3420640A1 (en) | Methods and apparatus for performing reed-solomon encoding | |
RU2541869C1 (en) | Reed-solomon code decoder | |
Zhang et al. | Reducing parallel linear feedback shift register complexity through input tap modification | |
US20180006664A1 (en) | Methods and apparatus for performing reed-solomon encoding by lagrangian polynomial fitting | |
Freudenberger et al. | A low-complexity three-error-correcting BCH decoder with applications in concatenated codes | |
CN108847851B (en) | Method for realizing binary BCH code adjoint matrix | |
RU2677372C1 (en) | Device for decoding reed-solomon product codes | |
Yeon et al. | Low-complexity triple-error-correcting parallel BCH decoder | |
CN112534724A (en) | Decoder and method for decoding polarization code and product code | |
Lin et al. | A long block length BCH decoder for DVB-S2 application | |
CN111510164B (en) | Turbo code component encoder identification method and system | |
Zhang | Further exploring the strength of prediction in the factorization of soft-decision Reed–Solomon decoding | |
Prashanthi et al. | An advanced low complexity double error correction of an BCH decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20120818 |