RU2634193C1 - Ldpc decoder and method of its functioning - Google Patents
Ldpc decoder and method of its functioning Download PDFInfo
- Publication number
- RU2634193C1 RU2634193C1 RU2016125720A RU2016125720A RU2634193C1 RU 2634193 C1 RU2634193 C1 RU 2634193C1 RU 2016125720 A RU2016125720 A RU 2016125720A RU 2016125720 A RU2016125720 A RU 2016125720A RU 2634193 C1 RU2634193 C1 RU 2634193C1
- Authority
- RU
- Russia
- Prior art keywords
- input
- output
- sign
- vertex
- multiplexer
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
- H03M13/1122—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule storing only the first and second minimum values per check node
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1134—Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
Изобретение относится к области цифровой обработки информации, а именно к декодерам LDPC (Low density parity check - кодов с малой плотностью проверок на четность) и способам их функционирования, и может быть использовано для декодирования информации, закодированной кодом LDPC, в различных системах передачи/приема данных.The invention relates to the field of digital information processing, namely to LDPC (Low density parity check decoders - codes with a low density of parity checks) and methods of their functioning, and can be used to decode information encoded by the LDPC code in various transmission / reception systems data.
Коды LDPC относятся к блочному кодированию и широко используют в системах передачи информации. Данные коды позволяют исправлять множественные ошибки в блоках данных от нескольких бит до сотен килобайт (увеличение блока данных приводит к аппаратным сложностям).LDPC codes are block coding and are widely used in information transmission systems. These codes allow you to correct multiple errors in data blocks from a few bits to hundreds of kilobytes (increasing the data block leads to hardware difficulties).
В настоящее время данные коды LDPC массово используют в нескольких стандартах передачи данных. Последние достижения в технологии производства микроэлектроники позволяют аппаратно реализовать системы кодирования (декодирования) на основе кодов LDPC, что позволяет крайне близко подойти к границе Шеннона по пропускной способности.Currently, these LDPC codes are widely used in several data transfer standards. Recent advances in microelectronics manufacturing technology allow for hardware-based implementation of coding (decoding) systems based on LDPC codes, which allows extremely close access to the Shannon border in terms of throughput.
Как у любого блочного кода, основой декодирования является проверочная матрица. При больших длинах данных (десятки-сотни килобит) данная матрица имеет огромные размеры, однако суть кодов LDPC заключается в том, что количество единиц в строках и столбцах всегда не более определенного числа, гораздо меньшего размерности матрицы. Как правило, декодирование осуществляют при помощи графа Таннера, построенного согласно проверочной матрице. Существует несколько способов декодирования по надежностям, полученным при демодуляции принятых данных из зашумленного канала. Наиболее адаптированным способом для аппаратной реализации с минимальной потерей в корректирующей способности является алгоритм min-sum (минимум-сумма). В зависимости от применения существуют параллельный, последовательный и последовательно-параллельный способы реализации данного алгоритма. Наибольшей пропускной способностью является алгоритм, реализованный параллельным способом, то есть обменом вероятностью между символьными и проверочными вершинами графа Таннера. Данная реализация требует наибольшие аппаратные ресурсы.As with any block code, the basis of decoding is the verification matrix. With large data lengths (tens to hundreds of kilobits), this matrix is huge, but the essence of LDPC codes is that the number of units in rows and columns is always no more than a certain number, much smaller than the dimension of the matrix. As a rule, decoding is carried out using the Tanner graph constructed according to the verification matrix. There are several ways of decoding according to the reliability obtained by demodulating received data from a noisy channel. The most adapted way for a hardware implementation with minimal loss in corrective ability is the min-sum algorithm (minimum-sum). Depending on the application, there are parallel, serial and serial-parallel methods for implementing this algorithm. The greatest throughput is the algorithm implemented in a parallel way, that is, the probability exchange between the symbolic and test vertices of the Tanner graph. This implementation requires the most hardware resources.
Известен декодер LDPC, описанный в заявке US 2011/0239086 A1, в котором реализован алгоритм min-sum. Однако, в нем по каждому ребру от проверочной вершины к символьной вычисляют свое сообщение, что требует больших аппаратных ресурсов декодера. Аналогично, от символьной вершины к проверочным вычисляют сообщение, уникальное для каждой вершины, что также требует больших аппаратных ресурсов декодера, поэтому увеличивает его стоимость.Known LDPC decoder described in the application US 2011/0239086 A1, which implements the min-sum algorithm. However, in it, on each edge from the test vertex to the character vertex, a message is calculated, which requires large hardware resources of the decoder. Similarly, a message unique to each vertex is computed from the symbolic vertex to the verification ones, which also requires large hardware resources of the decoder, and therefore increases its cost.
В патенте RU 2382493 описан способ декодирования кодов LDPC, в котором узел проверочной вершины оптимизирован подобно заявленному изобретению в части вычисления двух минимумов, однако отсутствует элемент корректировки сообщения от символьной вершины к проверочной. Это значит, что в символьной вершине также вычисляют уникальные сообщения по каждому ребру, исходящему из вершины, что требует больших аппаратных ресурсов декодера, поэтому увеличивает его стоимость.RU 2382493 describes a method for decoding LDPC codes in which the node of the verification vertex is optimized similarly to the claimed invention in terms of computing two minima, however, there is no element for adjusting the message from the symbol vertex to the verification one. This means that in the symbolic vertex, unique messages are also calculated for each edge emanating from the vertex, which requires large hardware resources of the decoder, and therefore increases its cost.
Наиболее близкими к заявленному изобретению являются декодер LDPC и способ его функционирования, описанные в патенте CN 101188426 и выбранные в качестве прототипов заявленного изобретения, которые аналогичны способу, описанному в патенте RU 2382493, в части сохранения двух минимумов, однако в них значения хранят в буферах FIFO, что свидетельствует о последовательном режиме работы, и также отсутствует элемент корректировки сообщения от символьной вершины к проверочной, это свидетельствует о затрате большие аппаратных ресурсов декодера со стороны символьных вершин и, соответственно, об увеличении стоимости декодера.Closest to the claimed invention are the LDPC decoder and the method of its operation described in the patent CN 101188426 and selected as prototypes of the claimed invention, which are similar to the method described in patent RU 2382493, in terms of storing two minima, however, the values are stored in FIFO buffers in them , which indicates a sequential mode of operation, and there is also no element for adjusting the message from the symbolic vertex to the verification one, this indicates the expenditure of large decoder hardware resources from the side of the sim free peaks and, accordingly, to increase the cost of the decoder.
Задачей заявленного изобретения является создание декодера LDPC (Low density parity check - кодов с малой плотностью проверок на четность) и способа его функционирования с меньшими аппаратными ресурсами и, соответственно, с меньшей стоимостью, за счет оптимизации параллельного алгоритма min-sum, а именно за счет одного подсчета надежностей от проверочной вершины для символьных вершин с разницей только в коммутации этих значений для символьной вершины, а также за счет одного общего сумматора в каждой символьной вершине. Алгоритм min-sum является итеративным, в нем при каждой итерации пересчитывают надежности, первоначально принятые от демодулятора. От каждой проверочной вершины исходит надежность, подсчитанная по правилу для символьной вершины согласно графу Таннера (Фиг. 1). И, соответственно, наоборот, от каждой символьной вершины исходит надежность, подсчитанная по правилу для проверочной вершины.The objective of the claimed invention is the creation of an LDPC decoder (Low density parity check - codes with a low density of parity checks) and a method of its operation with less hardware resources and, accordingly, with a lower cost, due to the optimization of the parallel min-sum algorithm, namely, due to one calculation of reliability from the test vertex for symbolic vertices with a difference only in the switching of these values for a symbolic vertex, as well as due to one common adder in each symbolic vertex. The min-sum algorithm is iterative, in it, at each iteration, the reliability originally received from the demodulator is recounted. Reliability calculated from the rule for a symbol vertex according to the Tanner graph (Fig. 1) comes from each test vertex. And, accordingly, on the contrary, reliability is calculated from each symbol vertex calculated according to the rule for the verification vertex.
Поставленная задача решена путем создания декодера LDPC (Фиг. 5), содержащего по меньшей мере два общих сумматора (516) с элементами памяти и по меньшей мере два блока (509) поиска двух минимумов, вход которых соединен с выходом сумматора (528) текущей символьной вершины (501) и по меньшей мере еще один вход соединен с по меньшей мере еще одним сумматором (539) другой символьной вершины (541), а выходы соединены с входами элементов памяти (503), выходы которых соединены с нулевым и первым входами мультиплексора (532), вход выбора которого соединен с выходом элемента памяти (534), хранящего значение сигнала выбора (510), причем выход этого же элемента памяти (534) также соединен со входом мультиплексора (533) знака, нулевой и первый входы которого соединены с выходами элементов памяти (503), выполненных с возможностью хранения знака второго и первого (507, 506) минимального значения выхода блока (509) поиска двух минимумов, а выход мультиплексора (533) знака соединен с входом сумматора (523) по модулю два, второй вход которого соединен с выходом элемента памяти (503), выполненного с возможностью хранения общего знака (508) сообщений, а выход соединен с входом инвертора (527), выход которого соединен с входом выбора мультиплексора (531) константы, выход которого соединен с первым входом умножителя (530), второй вход которого соединен с выходом мультиплексора (532) значения, при этом выход умножителя (530) соединен с первым входом сумматора (528), выход которого соединен с входом блока поиска минимумов (509) и с первым входом компаратора (511), второй вход которого соединен с выходом умножителя (512), на второй вход которого поступает модуль первого минимума (504) с выхода блока поиска минимумов (509), а на первый вход поступает сигнал с выхода мультиплексора (513) константы, на нулевой вход которого поступает константное значение 1, а на первый вход константное значение -1, на вход выбора этого мультиплексора (513) поступает значение знака первого минимума (506), при этом выход компаратора (511) соединен с входом элемента памяти (534), с входом выбора мультиплексора (521) значения и входом выбора мультиплексора (535) знака, на нулевой и первый вход которого поступают знаки второго (507) и первого (506) минимумов с выхода блока поиска минимумов (509), при этом выход мультиплексора (535) знака соединен с первым входом сумматора (536) по модулю два, на второй вход которого поступает значение (508) общего знака с выхода блока (509) поиска минимумов, а выход сумматора (536) по модулю два соединен с входом выбора мультиплексора (522) константы, на нулевой вход которого поступает константное значение 1, а на первый вход константное значение -1, при этом выход мультиплексора константы (522) соединен с первым входом умножителя (529), второй вход которого соединен с выходом мультиплексора (521) значения, на нулевой и первый входы которого поступают первый (504) и второй (505) минимумы с выходов блока поиска минимумов (509), при этом выход (515) умножителя (529) соединен с входом общего сумматора (516), вход которого соединен с входом декодера, а по меньшей мере еще один вход соединен с выходом умножителя (529) текущей проверочной вершины (502), а выход общего сумматора (516) соединен с входом элемента памяти (524), выход которого является выходом декодера и соединен со вторым входом сумматора (528).The problem is solved by creating an LDPC decoder (Fig. 5), containing at least two common adders (516) with memory elements and at least two blocks (509) for searching two minima, the input of which is connected to the output of the adder (528) of the current symbol vertices (501) and at least one input connected to at least one adder (539) of another symbol vertex (541), and the outputs are connected to inputs of memory elements (503), the outputs of which are connected to the zero and first inputs of the multiplexer ( 532), the selection input of which is connected to the output element nta memory (534) that stores the value of the selection signal (510), and the output of the same memory element (534) is also connected to the input of the sign multiplexer (533), the zero and first inputs of which are connected to the outputs of the memory elements (503), configured storing the sign of the second and first (507, 506) minimum values of the output of the block (509) searching for two minima, and the output of the sign multiplexer (533) is connected to the input of the adder (523) modulo two, the second input of which is connected to the output of the memory element (503) configured to store a common character (508) with communication, and the output is connected to the input of the inverter (527), the output of which is connected to the input of the choice of the multiplexer (531) constant, the output of which is connected to the first input of the multiplier (530), the second input of which is connected to the output of the multiplexer (532), while the output the multiplier (530) is connected to the first input of the adder (528), the output of which is connected to the input of the minimum search unit (509) and to the first input of the comparator (511), the second input of which is connected to the output of the multiplier (512), to the second input of which the module the first minimum (504) from the output of the search block minima (509), and the first input receives a signal from the output of the multiplexer (513) of the constant, to the zero input of which the
Поставленная задача решена также путем создания способа функционирования декодера LDPC (Фиг. 5), в котором на первом этапе в каждой проверочной вершине (502) определяют два минимальных по модулю значения из всех приходящих сообщений (518 и 519) от символьных вершин (501) независимо от того, для какой символьной вершины они предназначаются, причем абсолютные значения минимумов (504, 505), а также знаки (506, 507) этих значений, сохраняют в элементах памяти (503), при раздаче сообщения обратно к символьным, учитывают текущее сообщение от символьной вершины (518): если оно совпадает с одним из выбранных минимумов с учетом знака, то для этой вершины выбирают другой из двух минимумов для каждой из вершин, при каждой итерации сохраняют в элементах памяти (503) оба минимума по модулю (504, 505), оба знака этих минимумов (506, 507), а также общий знак всех сообщений (508), приходящих в проверочную вершину (502), сигнал отрицательного сообщения сохраняют в следующем виде:The problem was also solved by creating a method of functioning of the LDPC decoder (Fig. 5), in which at the first stage in each verification vertex (502) two minimum modulo values from all incoming messages (518 and 519) from symbol vertices (501) are determined independently from what symbol vertices they are intended for, and the absolute values of the minima (504, 505), as well as the signs (506, 507) of these values, are stored in memory elements (503), when distributing the message back to the symbolic ones, the current message from symbolic vertex (518): ec and it coincides with one of the selected minima, taking into account the sign, then for this vertex, choose the other of two minima for each of the vertices, at each iteration, store both minima modulo (504, 505) in the memory elements (503), both signs of these minima (506, 507), as well as the common sign of all messages (508) arriving at the verification vertex (502), the negative message signal is stored in the following form:
тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:then the common negative signal (508) of all incoming messages is calculated as follows:
где операция - сложение по модулю 2,where is the operation - addition modulo 2,
сигнал выбора (510) одного из минимумов для сообщения от проверочной вершины к символьной формируют на выходе первого компаратора (511), исходя из найденных узлом MINIMUM (509) значений:the selection signal (510) of one of the minima for the message from the test vertex to the symbolic one is generated at the output of the first comparator (511) based on the values found by the MINIMUM node (509):
где - значение с выхода первого мультиплексора знака (513), (9)Where - value from the output of the first sign multiplexer (513), (9)
таким образом, модуль сообщения (514) от проверочной вершины к символьной формируют на выходе второго мультиплексора (521) следующим образом:Thus, the message module (514) from the verification vertex to the symbol one is formed at the output of the second multiplexer (521) as follows:
а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (522), исключив из общего знака, знак отброшенного согласно (10) минимума:and since the sign is formed from the common sign of all messages, excluding messages from the symbolic vertex, for which a message is generated at the output of the second comparator (522), excluding from the common sign the sign of the discarded minimum according to (10):
где Where
- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523), сформированные сообщения (520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4): которое при каждой итерации сохраняют в элемент памяти (524), выход которого является выходом декодера (525);- negativity signal generated at the output of the adder modulo 2 (523), generated messages (520) from each test vertex (502), according to the Tanner graph, is sent to the inputs of the common adder (516) of the symbol vertex (501), so that the value according to (4) is generated at its output: which at each iteration is stored in a memory element (524), the output of which is the output of the decoder (525);
на втором этапе оптимизации корректируют полную сумму для каждой из проверочных вершин от рассматриваемой символьной, при этом вычитают из полной суммы после элемента памяти (524) сообщение от этой вершины, запомненное на предыдущем шаге, все операции с сохраненными в элементах памяти (503) значениями минимумов и знаков выполняют (min 1_, min 2_, neg1_, neg2_, neg_) аналогично выражениям (8-11), знак отрицательности (526) из выражения (12) формируют с помощью инвертора (527) с точностью до наоборот:at the second stage of optimization, the total amount for each of the test vertices is corrected from the considered symbol, while the message from this vertex stored in the previous step, all operations with the minimum values stored in the memory elements (503) are subtracted from the total sum after the memory element (524) and signs are performed (min 1_, min 2_, neg1_, neg2_, neg_) similarly to expressions (8-11), the negative sign (526) from expression (12) is formed using the inverter (527) exactly the opposite:
у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (528) скорректированное сообщение от символьной вершины.the sign of the message is changed and added up with the total amount, while receiving the corrected message from the symbolic vertex at the output of the adder (528).
Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.For a better understanding of the claimed invention the following is a detailed description with the corresponding drawings.
Фиг. 1 - пример графа Таннера.FIG. 1 is an example of Count Tanner.
Фиг. 2 - схема сообщений от символьной вершины к проверочным после инициализации, выполненная согласно изобретению.FIG. 2 is a message diagram from the symbolic vertex to the verification ones after initialization, made according to the invention.
Фиг. 3 - схема сообщений от проверочной вершины С2 к символьным D0 (а) и D3 (б), выполненная согласно изобретению.FIG. 3 is a message diagram from test vertex C2 to symbolic D0 (a) and D3 (b), made according to the invention.
Фиг. 4 - схема сообщений от символьной вершины D1 к проверочным С0 (а) и С1 (б), выполненная согласно изобретению.FIG. 4 is a message diagram from the symbolic vertex D1 to test C0 (a) and C1 (b), made according to the invention.
Фиг. 5 - функциональная схема декодера (с коммутацией сообщений между проверочными и символьными вершинами), выполненная согласно изобретению.FIG. 5 is a functional diagram of a decoder (with message switching between test and symbol vertices) made according to the invention.
Рассмотрим кратко принцип работы заявленного изобретения (Фиг. 2-4). Декодирование по алгоритму min-sum начинают с инициализации элементов памяти символьных вершин значениями априорного отношения правдоподобий (201), поступающих от демодулятора (Фиг. 2):Consider briefly the principle of operation of the claimed invention (Fig. 2-4). Decoding according to the min-sum algorithm begins with the initialization of the memory elements of symbolic vertices with the values of the a priori likelihood ratio (201) coming from the demodulator (Fig. 2):
где Un - априорное отношение правдоподобий принятого символа n от демодулятора,where U n - a priori likelihood ratio of the received symbol n from the demodulator,
N - длина кодового слова,N is the length of the code word,
deg(n) - степень вершины - количество исходящих ребер от символьной вершины,deg (n) - degree of a vertex - the number of outgoing edges from a symbolic vertex,
- сообщение для конкретной проверочной вершины ki (203) от текущей символьной вершины n (202). - a message for a particular test vertex k i (203) from the current symbolic vertex n (202).
Далее обновляют информацию, исходящую от проверочных вершин (303), по следующему правилу (Фиг. 3):Next, update the information coming from the test vertices (303), according to the following rule (Fig. 3):
где функция g(…) - определяет минимальное по модулю значение с общим знаком из всех аргументов, так что:where the function g (...) - determines the minimum modulo value with a common sign from all arguments, so that:
где Where
Стоит заметить, что среди аргументов функции поиска минимального значения для конкретной символьной вершины (302) отсутствует собственно сообщение от этой символьной вершины. Таким образом, от одной проверочной вершины к символьным исходят разные сообщения о минимуме, поэтому облако комбинационной логики (305) получается разным для каждого исходящего ребра (306) (Фиг. 3).It is worth noting that among the arguments of the minimum value search function for a particular symbolic vertex (302), there is actually no message from this symbolic vertex. Thus, different messages about the minimum emanate from one test vertex to the symbolic vertices; therefore, the combinational logic cloud (305) is different for each outgoing edge (306) (Fig. 3).
Далее обновляют все символьные вершины (402) с учетом полученных сообщений от всех проверочных вершин (403), вычисленных согласно выражению (2):Then, all symbolic vertices (402) are updated taking into account the received messages from all verification vertices (403) calculated according to expression (2):
В следующей итерации сообщения (404) от символьных вершин к проверочным вычисляют в зависимости от того, к какой проверочной вершине они следуют:In the next iteration, messages (404) from symbolic vertices to verification vertices are calculated depending on which verification vertex they follow:
Аналогично сообщениям от проверочных вершин, сообщения (404) от символьных вершин для конкретной проверочной вершины в своей сумме не содержат сообщения собственно от этой проверочной вершины. Таким образом, от одной символьной вершины к проверочным исходят разные сообщения о сумме, поэтому облако комбинационной логики (405) получается разным для каждого исходящего ребра (406) (Фиг. 4).Similarly to messages from test vertices, messages (404) from symbolic vertices for a particular test vertex do not in total contain messages from this test vertex. Thus, from one symbolic vertex to the verification ones, different messages about the sum come out, so the combinational logic cloud (405) turns out to be different for each outgoing edge (406) (Fig. 4).
Рассмотрим более подробно вариант выполнения заявленного декодера, показанный на Фиг. 5 и способ его функционирования.Let us consider in more detail the embodiment of the inventive decoder shown in FIG. 5 and the method of its operation.
Ввиду того, что для каждого ребра из каждой проверочной вершины согласно графу Таннера необходима своя функция нахождения минимума, аппаратные ресурсы будут крайне велики. В заявленном изобретении оптимизирован данный алгоритм с целью уменьшения аппаратных ресурсов.Due to the fact that for each edge from each test vertex, according to the Tanner graph, its own function of finding the minimum is necessary, the hardware resources will be extremely large. In the claimed invention, this algorithm is optimized in order to reduce hardware resources.
Если рассматривать путь сообщений от проверочных вершин (303) к символьным (302), то согласно выражению (2) для символьной вершины ni (302) необходимо найти минимум из всех приходящих в проверочную вершину k сообщений от символьных вершин кроме ni. И так далее, для ni+1 участвуют все сообщения кроме сообщения от ni+1 (Фиг. 3 а, б).If we consider the message path from the verification vertices (303) to the symbolic ones (302), then according to expression (2) for the symbolic vertex n i (302), it is necessary to find the minimum of all messages arriving at the verification vertex k from symbolic vertices except n i . And so on, for the n i + 1 includes all messages except the messages from the n i + 1 (Fig. 3 a, b).
Первый этап оптимизации заключается в определении двух минимальных (по модулю) значений из всех приходящих сообщений (518 и 519) от символьных вершин независимо о того, для какой символьной вершины они предназначаются, при этом существенном снижении аппаратных ресурсов. Абсолютные значения минимумов (504, 505), а также знаки (506, 507) этих значений сохраняют в элементах памяти (503). При раздаче сообщения обратно к символьным, учитывают текущее сообщение от символьной вершины (518): если оно совпадает с одним из выбранных минимумов с учетом знака, то для этой вершины выбирают другой из двух минимумов для каждой из вершин. При каждой итерации сохраняют в элементах памяти (503) оба минимума по модулю (504, 505), оба знака этих минимумов (506, 507), а также общий знак всех сообщений (508), приходящих в проверочную вершину (502). Сигнал отрицательного сообщения сохраняют в следующем виде:The first stage of optimization consists in determining two minimum (modulo) values from all incoming messages (518 and 519) from symbolic vertices, regardless of which symbolic vertices they are intended for, while significantly reducing hardware resources. The absolute values of the minima (504, 505), as well as the signs (506, 507) of these values are stored in memory elements (503). When distributing the message back to the symbolic ones, the current message from the symbolic vertex is taken into account (518): if it coincides with one of the selected minima taking into account the sign, then the other of the two minima for each vertex is selected for this vertex. At each iteration, both minima (504, 505), both minima of the minima (506, 507), and the common sign of all messages (508) arriving at the verification vertex (502) are stored in memory elements (503). The negative message signal is stored as follows:
тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:then the common negative signal (508) of all incoming messages is calculated as follows:
где операция - сложение по модулю 2.where is the operation - addition modulo 2.
Сигнал выбора (510) одного их минимумов для сообщения от проверочной вершины к символьной формируют на выходе первого компаратора (511), исходя из найденных узлом MINIMUM (509) значений:The selection signal (510) of one of the minima for the message from the test vertex to the symbolic one is generated at the output of the first comparator (511) based on the values found by the MINIMUM node (509):
где - значение с выхода первого мультиплексора знака (513). (9)Where - the value from the output of the first sign multiplexer (513). (9)
Таким образом, модуль сообщения (514) от проверочной вершины к символьной формируют на выходе второго мультиплексора (521) следующим образом:Thus, the message module (514) from the test vertex to the character is formed at the output of the second multiplexer (521) as follows:
а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (522), исключив из общего знака, знак отброшенного согласно (10) минимума:and since the sign is formed from the common sign of all messages, excluding messages from the symbolic vertex, for which a message is generated at the output of the second comparator (522), excluding from the common sign the sign of the discarded minimum according to (10):
где Where
- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523).- the negativity signal generated at the output of the adder modulo 2 (523).
Сформированные таким образом сообщения (520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4):Messages thus generated (520) from each test vertex (502), according to the Tanner graph, is sent to the inputs of the common adder (516) of the symbol vertex (501), so that the value according to (4) is generated at its output:
, которое после нескольких итераций сохраняют в элемент памяти (524), выход которого является выходом декодера (525). which, after several iterations, is stored in a memory element (524), the output of which is the output of the decoder (525).
Второй этап оптимизации состоит в том, что в каждой символьной вершине (501) хранится полная сумма всех сообщений (520), согласно графу, от проверочных вершин, вне зависимости для какой из проверочных вершин она предназначена. Однако согласно выражению (5) для проверочной вершины (502) предназначена сумма сообщений от проверочных вершин, кроме этой проверочной вершины (502). В схеме на Фиг. 5 предусмотрена корректировка полной суммы для каждой из проверочных вершин от рассматриваемой символьной. Вычитают из полной суммы после элемента памяти (524) сообщение от этой вершины, запомненное на предыдущем шаге. Все операции с сохраненными в элементах памяти (503) значениями минимумов и знаков выполняют (min1_, min2_, neg1_, neg2_, neg_) аналогично выражениям (8-11). Нижнее подчеркивание перед индексом означает, что это значение после элемента памяти (503). Знак отрицательности (526) из выражения (12) формируют с помощью инвертора (527) с точностью до наоборот:The second stage of optimization consists in the fact that in each symbol vertex (501) the total sum of all messages (520), according to the graph, from the verification vertices is stored, regardless of which of the verification vertices it is intended for. However, according to expression (5), for the verification vertex (502), the sum of messages from the verification vertices is intended, except for this verification vertex (502). In the circuit of FIG. 5 provides for the correction of the total amount for each of the test vertices from the considered symbol. Subtract from the total amount after the memory element (524) the message from this vertex, memorized in the previous step. All operations with the values of minima and signs stored in memory elements (503) are performed (min1_, min2_, neg1_, neg2_, neg_) similarly to expressions (8-11). An underscore before the index means that it is after the memory element (503). The negative sign (526) from the expression (12) is formed using the inverter (527) exactly the opposite:
Так как от общей суммы необходимо вычесть сообщение от данной вершины, поэтому у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (528) скорректированное сообщение.Since it is necessary to subtract the message from the given vertex from the total amount, therefore, the sign of the message is changed and added up with the total amount, and the corrected message is received at the output of the adder (528).
Сущность заявленного изобретения заключается в оптимизации схемы декодера и способа его функционирования, а именно использования для каждой проверочной вершины одного узла (данный узел выделен пунктиром на Фиг. 5) поиска минимумов (509) и элементов памяти (503) для всех ребер, исходящих из этой проверочной вершины (502) к символьным (501) согласно графу. И для каждой символьной вершины используют один общий сумматор (516) всех сообщений (520 и 515) от проверочных вершин согласно графу Таннера и элемент памяти (524) (узел выделен сплошной линией) вне зависимости от ребер, исходящих из этой символьной вершины. По каждому ребру необходима схема коммутации сообщений, однако данная схема проста в реализации (выделено жирным штрихпунктирном).The essence of the claimed invention is to optimize the decoder circuit and the method of its operation, namely the use for each test vertex of one node (this node is indicated by the dotted line in Fig. 5) to search for the minima (509) and memory elements (503) for all edges coming from this Verification vertices (502) to symbolic (501) according to the graph. And for each symbol vertex, one common adder (516) of all messages (520 and 515) from the verification vertices according to the Tanner graph and a memory element (524) (the node is marked with a solid line) are used, regardless of the edges coming from this symbol vertex. A message switching scheme is required for each edge, however this scheme is easy to implement (highlighted in bold dot-and-dash).
Хотя описанный выше вариант выполнения изобретения был изложен с целью иллюстрации настоящего изобретения, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящего изобретения, раскрытого в прилагаемой формуле изобретения.Although the above-described embodiment of the invention has been set forth to illustrate the present invention, it is clear to those skilled in the art that various modifications, additions and substitutions are possible without departing from the scope and meaning of the present invention disclosed in the attached claims.
Claims (22)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2016125720A RU2634193C1 (en) | 2016-06-28 | 2016-06-28 | Ldpc decoder and method of its functioning |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2016125720A RU2634193C1 (en) | 2016-06-28 | 2016-06-28 | Ldpc decoder and method of its functioning |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2634193C1 true RU2634193C1 (en) | 2017-10-24 |
Family
ID=60153918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2016125720A RU2634193C1 (en) | 2016-06-28 | 2016-06-28 | Ldpc decoder and method of its functioning |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2634193C1 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188426A (en) * | 2007-12-05 | 2008-05-28 | 深圳国微技术有限公司 | Decoder for parallel processing of LDPC code of aligning cycle structure and its method |
RU2382493C2 (en) * | 2004-08-02 | 2010-02-20 | Квэлкомм Инкорпорейтед | Memory-saving low-density parity-check (ldpc) methods and device for realsing said methods |
US20110239086A1 (en) * | 2002-07-03 | 2011-09-29 | Dtvg Licensing, Inc. | Method and system for routing in low density parity check (ldpc) decoders |
US9136877B1 (en) * | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US20160105199A1 (en) * | 2014-10-10 | 2016-04-14 | Tidal Systems, Inc. | Fast mapping method for layered min-sum decoding of ldpc codes, |
-
2016
- 2016-06-28 RU RU2016125720A patent/RU2634193C1/en active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110239086A1 (en) * | 2002-07-03 | 2011-09-29 | Dtvg Licensing, Inc. | Method and system for routing in low density parity check (ldpc) decoders |
RU2382493C2 (en) * | 2004-08-02 | 2010-02-20 | Квэлкомм Инкорпорейтед | Memory-saving low-density parity-check (ldpc) methods and device for realsing said methods |
CN101188426A (en) * | 2007-12-05 | 2008-05-28 | 深圳国微技术有限公司 | Decoder for parallel processing of LDPC code of aligning cycle structure and its method |
US9136877B1 (en) * | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US20160105199A1 (en) * | 2014-10-10 | 2016-04-14 | Tidal Systems, Inc. | Fast mapping method for layered min-sum decoding of ldpc codes, |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9319069B2 (en) | Reduced complexity non-binary LDPC decoding algorithm | |
Lin et al. | A reduced latency list decoding algorithm for polar codes | |
CN107919874B (en) | Syndrome computation basic check node processing unit, method and computer program | |
Sarkis et al. | Increasing the speed of polar list decoders | |
KR20170097580A (en) | Apparatus for polar coding | |
CN107979445B (en) | Syndrome decoding based on basic check nodes using pre-ordered inputs | |
US10637510B2 (en) | Methods and devices for error correcting codes decoding | |
KR20150128750A (en) | Systems and methods for decoding with late reliability information | |
EP3364578A1 (en) | Decoding method and decoder for low-density parity check code | |
Schläfer et al. | Syndrome based check node processing of high order NB-LDPC decoders | |
US20170134048A1 (en) | Message-passing based decoding using syndrome information, and related methods | |
US20160049962A1 (en) | Method and apparatus of ldpc encoder in 10gbase-t system | |
KR101631128B1 (en) | Ldpc decoder with a variable node updater which uses a scaling constant | |
Cheng et al. | Encoder and list decoder of Reed-Solomon kernel based polar codes | |
EP3408956B1 (en) | Apparatus and method for multi-code distributed storage | |
CN111034055A (en) | Simplified check node processing in non-binary LDPC decoders | |
CN107615666A (en) | The interpretation method and decoding equipment of LDPC shortened codes | |
CN103856218A (en) | Decoding processing method and decoder | |
RU2634193C1 (en) | Ldpc decoder and method of its functioning | |
US20200295787A1 (en) | Low latency sequential list decoding of polar codes | |
Sarkis et al. | Unrolled polar decoders, part ii: Fast list decoders | |
RU168602U1 (en) | DECODER LDPC | |
US11476870B2 (en) | Variable node processing methods and devices for message-passing decoding of non-binary codes | |
US20150254130A1 (en) | Error correction decoder | |
US20190089375A1 (en) | Convolutional ldpc decoding method and apparatus, decoder, and system |