RU168602U1 - DECODER LDPC - Google Patents

DECODER LDPC Download PDF

Info

Publication number
RU168602U1
RU168602U1 RU2016125722U RU2016125722U RU168602U1 RU 168602 U1 RU168602 U1 RU 168602U1 RU 2016125722 U RU2016125722 U RU 2016125722U RU 2016125722 U RU2016125722 U RU 2016125722U RU 168602 U1 RU168602 U1 RU 168602U1
Authority
RU
Russia
Prior art keywords
input
output
multiplexer
adder
vertex
Prior art date
Application number
RU2016125722U
Other languages
Russian (ru)
Inventor
Павел Сергеевич Поперечный
Андрей Александрович Беляев
Ярослав Ярославович Петричкович
Original Assignee
Открытое акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Открытое акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" filed Critical Открытое акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы"
Priority to RU2016125722U priority Critical patent/RU168602U1/en
Application granted granted Critical
Publication of RU168602U1 publication Critical patent/RU168602U1/en

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-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/1122Soft-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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1134Full 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

Полезная модель относится к области цифровой обработки информации, а именно к декодерам LDPC (Low density parity check - кодов с малой плотностью проверок на четность). Техническим результатом полезной модели является создание декодера LDPC с меньшими аппаратными ресурсами и, соответственно, с меньшей стоимостью, за счет оптимизации параллельного алгоритма min-sum, а именно, за счет одного подсчета надежностей от проверочной вершины для символьных вершин, с разницей только в коммутации этих значений для символьной вершины, а также за счет одного общего сумматора в каждой символьной вершине. 5 ил.The utility model relates to the field of digital information processing, namely to decoders LDPC (Low density parity check - codes with a low density of parity checks). The technical result of the utility model is the creation of an LDPC decoder with less hardware resources and, accordingly, at a lower cost due to the optimization of the parallel min-sum algorithm, namely, due to one calculation of the reliability from the verification vertex for symbolic vertices, with the only difference in switching these values for a symbol vertex, as well as due to one common adder in each symbol vertex. 5 ill.

Description

Полезная модель относится к области цифровой обработки информации, а именно к декодерам LDPC (Low density parity check - кодов с малой плотностью проверок на четность), и может быть использована для декодирования информации, закодированной кодом LDPC, в различных системах передачи/приема данных.The utility model relates to the field of digital information processing, namely to LDPC decoders (Low density parity check - codes with a low density of parity checks), and can be used to decode information encoded by the LDPC code in various data transmission / reception systems.

Коды LDPC относятся к блочному кодированию, и широко используют в системах передачи информации. Данные коды позволяют исправлять множественные ошибки в блоках данных от нескольких бит до сотен килобайт (увеличение блока данных приводит к аппаратным сложностям).LDPC codes relate to block coding, and are widely used in information transfer 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 matrix dimension. 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 А1, в котором реализован алгоритм min-sum. Однако, в нем по каждому ребру от проверочной вершины к символьной вычисляют свое сообщение, что требует больших аппаратных ресурсов декодера. Аналогично, от символьной вершины к проверочным вычисляют сообщение, уникальное для каждой вершины, что также требует больших аппаратных ресурсов декодера, поэтому увеличивает его стоимость.Known decoder LDPC, 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 utility model 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 utility model are the LDPC decoder and the method of its operation described in the patent CN 101188426 and selected as prototypes of the claimed utility model, which are similar to the method described in the patent RU 2382493, in terms of storing two minima, however, the values are stored in them FIFO buffers, which indicates a sequential mode of operation, and there is also no element for adjusting the message from the character vertex to the verification one, this indicates the expenditure of large hardware resources of the decoder from s symbolic peaks, and, accordingly, an increase in the cost of the decoder.

Задачей заявленной полезной модели является создание декодера LDPC (Low density parity check - кодов с малой плотностью проверок на четность) с меньшими аппаратными ресурсами и, соответственно, с меньшей стоимостью, за счет оптимизации параллельного алгоритма min-sum, а именно, за счет одного подсчета надежностей от проверочной вершины для символьных вершин, с разницей только в коммутации этих значений для символьной вершины, а также за счет одного общего сумматора в каждой символьной вершине. Алгоритм min-sum является итеративным, в нем при каждой итерации пересчитывают надежности, первоначально принятые от демодулятора. От каждой проверочной вершины исходит надежность, подсчитанная по правилу для символьной вершины согласно графу Таннера (Фиг. 1). И, соответственно, наоборот, от каждой символьной вершины исходит надежность, подсчитанная по правилу для проверочной вершины.The objective of the claimed utility model is to create an LDPC decoder (Low density parity check - codes with a low density of parity checks) with less hardware resources and, therefore, with a lower cost, due to the optimization of the parallel min-sum algorithm, namely, due to one calculation 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, содержащего, по меньшей мере, два общих сумматора (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 containing at least two common adders (516) with memory elements and at least two blocks (509) for searching two minima whose input is connected to the output of the adder (528) of the current symbolic vertex (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 of the element memory (534) storing 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 to store the sign of the second and first (507, 506) minimum values of the output of the block for searching for two minima (509), and the output of the multiplexer (533) of the sign 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 mark (508) community and the output is connected to the input of the inverter (527), the output of which is connected to the input of the constant multiplexer (531), 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 mi maxima (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 constant value 1 arrives, and to the first input - the constant value -1, the sign value of the first goes to the select input of this multiplexer (513) minimum (506), while the output of the comparator (511) is connected to the input of the memory element (534), to the input of the choice of the multiplexer (521) of the value and the input of the choice of the multiplexer (535) of the sign, to the zero and first input of which the signs of the second (507) and the first (506) minimum from the output of the minimum search block (509) at the same time, the output of the sign multiplexer (535) is connected modulo two to the first input of the adder (536), the second input of which receives the common sign value (508) from the output of the minimum search unit (509), and the adder output (536) modulo two is connected to the input of the choice of the multiplexer (522) of the constant, to the zero input of which the constant value 1 arrives, and to the first input - the constant value -1, while the output of the constant multiplexer (522) is connected to the first input of the multiplier (529), the second input of which connected to the output of the multiplexer (521) values to zero the first inputs of which the first (504) and second (505) minima come from the outputs of the minimum search unit (509), while the output (515) of the multiplier (529) is connected to the input of the common adder (516), the input of which is connected to the input of the decoder, and at least one more input is connected to the output of the multiplier (529) of the current test vertex (502), and the output of the common adder (516) is connected to the input of the memory element (524), the output of which is the output of the decoder and connected to the second input of the adder (528) . For a better understanding of the claimed utility model, its detailed description is given below. writing with the corresponding drawings.

Фиг. 1. Пример графа Таннера.FIG. 1. An example of Count Tanner.

Фиг. 2. Схема сообщений от символьной вершины к проверочным после инициализации, выполненная согласно полезной модели.FIG. 2. The message scheme from the symbolic vertex to the verification ones after initialization, made according to the utility model.

Фиг. 3. Схема сообщений от проверочной вершины С2 к символьным D0 (а) и D3 (б), выполненная согласно полезной модели.FIG. 3. The message scheme from the test vertex C2 to the symbolic D0 (a) and D3 (b), made according to the utility model.

Фиг. 4. Схема сообщений от символьной вершины D1 к проверочным С0 (а) и С1 (б), выполненная согласно полезной модели.FIG. 4. The message scheme from the symbolic vertex D1 to the verification ones C0 (a) and C1 (b), made according to the utility model.

Фиг. 5. Функциональная схема декодера (с коммутацией сообщений между проверочными и символьными вершинами), выполненная согласно полезной модели.FIG. 5. Functional diagram of the decoder (with message switching between test and symbol vertices), made according to the utility model.

Рассмотрим кратко принцип работы заявленной полезной модели (Фиг. 2-4). Декодирование по алгоритму min-sum начинают с инициализации элементов памяти символьных вершин значениями априорного отношения правдоподобий (201), поступающих от демодулятора (Фиг. 2):Consider briefly the principle of operation of the claimed utility model (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):

Figure 00000001
Figure 00000001

где 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) - vertex degree - number of outgoing edges from a symbol vertex

Figure 00000002
- сообщение для конкретной проверочной вершины ki (203) от текущей символьной вершины n (202).
Figure 00000002
- 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):

Figure 00000003
Figure 00000003

где функция g(…) - определяет минимальное по модулю значение с общим знаком из всех аргументов, так что:where the function g (...) - determines the minimum modulo value with a common sign from all arguments, so that:

Figure 00000004
Figure 00000004

Figure 00000005
Figure 00000005

Стоит заметить, что среди аргументов функции поиска минимального значения для конкретной символьной вершины (302) отсутствует, собственно сообщение от этой символьной вершины. Таким образом, от одной проверочной вершины к символьным исходят разные сообщения о минимуме, поэтому облако комбинационной логики (305) получается разным для каждого исходящего ребра (306) (Фиг. 3).It is worth noting that among the arguments of the search function, the minimum value for a particular symbolic vertex (302) is missing, in fact, a 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):

Figure 00000006
Figure 00000006

В следующей итерации сообщения (404) от символьных вершин к проверочным вычисляют в зависимости от того, к какой проверочной вершине они следуют:In the next iteration, messages (404) from symbolic vertices to verification vertices are calculated depending on which verification vertex they follow:

Figure 00000007
Figure 00000007

Аналогично сообщениям от проверочных вершин, сообщения (404) от символьных вершин для конкретной проверочной вершины в своей сумме не содержат сообщения,Similar to messages from test vertices, messages (404) from symbolic vertices for a specific test vertex do not contain messages in their sum,

собственно от этой проверочной вершины. Таким образом, от одной символьной вершины к проверочным исходят разные сообщения о сумме, поэтому облако комбинационной логики (405) получается разным для каждого исходящего ребра (406) (Фиг. 4).actually from this test peak. 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 utility model, this algorithm is optimized in order to reduce hardware resources.

Если рассматривать путь сообщений от проверочных вершин (303) к символьным (302), то согласно выражению (2) для символьной вершины ni (302) необходимо найти минимум из всех приходящих в проверочную вершину к сообщений от символьных вершин кроме ni. И так далее, для ni+1 участвуют все сообщения кроме сообщения от ni+1 (Фиг. 3 а, б).If we consider the way messages from the check nodes (303) to character (302), according to the expression (2) to the top of the symbol n i (302) it is necessary to find the minimum of all who come in to check node messages from the character of 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:

Figure 00000008
Figure 00000008

тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:then the common negative signal (508) of all incoming messages is calculated as follows:

Figure 00000009
Figure 00000009

где операция ⊕ - сложение по модулю 2.where the operation ⊕ is 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 formed at the output of the first comparator (511) based on the values found by the MINIMUM node (509):

Figure 00000010
Figure 00000010

где Where

Figure 00000011
, (9)
Figure 00000011
, (9)

- значение с выхода первого мультиплексора знака (513).- the value from the output of the first sign multiplexer (513).

Таким образом, модуль сообщения (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:

Figure 00000012
Figure 00000012

а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (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):

Figure 00000013
Figure 00000013

Figure 00000014
Figure 00000014

- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523).- the negativity signal generated at the output of the adder modulo 2 (523).

Сформированные таким образом сообщения

Figure 00000015
(520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4):Messages thus generated
Figure 00000015
(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:

Figure 00000016
, которое после нескольких итераций сохраняют в элемент памяти
Figure 00000016
which after several iterations is stored in a memory element

(524), выход которого является выходом декодера (525).(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 other than this verification vertex (502) is intended. 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:

Figure 00000017
Figure 00000018
Figure 00000017
Figure 00000018

Так как от общей суммы необходимо вычесть сообщение от данной вершины, поэтому у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (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 utility model 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 dashed line in Fig. 5) to search for minima (509) and memory elements (503) for all edges coming from of this test vertex (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 the memory element (524) (the node is marked with a solid line) are used, regardless of the edges emanating 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 embodiment of the utility model described above was set forth to illustrate the present utility model, it is clear to those skilled in the art that various modifications, additions and replacements are possible without departing from the scope and meaning of the present utility model disclosed in the attached utility model formula.

Claims (1)

Декодер LDPC, содержащий, по меньшей мере, два общих сумматора (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).An LDPC decoder containing at least two common adders (516) with memory elements and at least two blocks (509) for searching two minima whose input is connected to the output of the adder (528) of the current symbolic vertex (501) and at least one more input is connected to at least one other 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), whose selection input connected to the output of a memory element (534) storing 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 to store the sign of the second and first (507, 506) the minimum value of the output of the block (509) searching for two minima, and the output of the multiplexer (533) of the sign 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) messages, and the output is connected to the inverter input (527), in the output of which is connected to the input of the constant multiplexer (531), 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 of the multiplier (530) is connected to the first input of the adder (528) whose output 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), the second input of which receives the first minimum module (504) from the output of the minimum search unit (509) ), and the first input receives a signal from the output of the multiplexer (513), a constant value 1 arrives at the zero input, and a constant value -1 arrives at the first input, the value of the sign of the first minimum (506) is received at the input of the selection of this multiplexer (513), while the output of the comparator (511 ) is connected to the input of the memory element (534), with the input of the choice of the multiplexer (521) of the value and the input of the choice of the multiplexer (535) of the sign, to the zero and first input of which the signs of the second (507) and first (506) minima come from the output of the minimum search unit (509), while the output of the multiplexer (535) sign connected inen with the first adder input (536) modulo two, the second input of which receives the common sign value (508) from the output of the minimum search unit (509), and the adder output (536) modulo two is connected to the input of the multiplexer selection (522) of constant , at the zero input of which a constant value of 1 arrives, and at the first input, a constant value of -1, while the output of the constant multiplexer (522) is connected to the first input of the multiplier (529), the second input of which is connected to the output of the multiplexer (521), to zero and the first inputs of which come first (504) and a minimum (505) from the outputs of the minimum search unit (509), while the output (515) of the multiplier (529) is connected to the input of the common adder (516), the input of which is connected to the input of the decoder, and at least one more input is connected to the output a multiplier (529) of the current check top (502), and the output of the common adder (516) is connected to the input of the memory element (524), the output of which is the output of the decoder and connected to the second input of the adder (528).
RU2016125722U 2016-06-28 2016-06-28 DECODER LDPC RU168602U1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2016125722U RU168602U1 (en) 2016-06-28 2016-06-28 DECODER LDPC

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2016125722U RU168602U1 (en) 2016-06-28 2016-06-28 DECODER LDPC

Publications (1)

Publication Number Publication Date
RU168602U1 true RU168602U1 (en) 2017-02-10

Family

ID=58451123

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016125722U RU168602U1 (en) 2016-06-28 2016-06-28 DECODER LDPC

Country Status (1)

Country Link
RU (1) RU168602U1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
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,

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
US9385753B2 (en) Systems and methods for bit flipping decoding with reliability inputs
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
KR20170097580A (en) Apparatus for polar coding
WO2016112857A1 (en) Ldpc code encoder and decoder
CN107979445B (en) Syndrome decoding based on basic check nodes using pre-ordered inputs
WO2017113507A1 (en) Set decoding method and set decoder
CN113783576A (en) Method and apparatus for vertical layered decoding of quasi-cyclic low density parity check codes constructed from clusters of cyclic permutation matrices
Shen et al. Low-latency software successive cancellation list polar decoder using stage-located copy
Tian et al. Polar codes for channels with deletions
US20170134048A1 (en) Message-passing based decoding using syndrome information, and related methods
Cheng et al. Encoder and list decoder of Reed-Solomon kernel based polar codes
KR101631128B1 (en) Ldpc decoder with a variable node updater which uses a scaling constant
WO2014172874A1 (en) Method and apparatus of ldpc encoder in 10gbase-t system
US11201629B2 (en) Low latency sequential list decoding of polar codes
CN103856218A (en) Decoding processing method and decoder
RU168602U1 (en) DECODER LDPC
CN106169935A (en) With reliability for the low density parity check code reliability propagation interpretation method guided
CN103475378B (en) A kind of high-throughput ldpc decoder being applicable to optic communication
RU2634193C1 (en) Ldpc decoder and method of its functioning
US11323139B2 (en) Apparatuses and methods for mapping frozen sets between polar codes and product codes
Sarkis et al. Unrolled polar decoders, part ii: Fast list decoders
Süral An FPGA implementation of successive cancellation list decoding for polar codes
CN103973316A (en) LDPC Decoder With A Variable Node Updater Which Uses A Scaling Constant
US11476870B2 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes

Legal Events

Date Code Title Description
PD1K Correction of name of utility model owner
MM9K Utility model has become invalid (non-payment of fees)

Effective date: 20180629