RU2634193C1 - Декодер ldpc и способ его функционирования - Google Patents

Декодер ldpc и способ его функционирования Download PDF

Info

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
Application number
RU2016125720A
Other languages
English (en)
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 RU2016125720A priority Critical patent/RU2634193C1/ru
Application granted granted Critical
Publication of RU2634193C1 publication Critical patent/RU2634193C1/ru

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 (кодов с малой плотностью проверок на четность) и способам их функционирования. Техническим результатом является уменьшение аппаратных ресурсов. Сущность заявленных изобретений заключается в оптимизации схемы декодера и способа его функционирования, а именно использования для каждой проверочной вершины одного узла поиска минимумов (509) и элементов памяти (503) для всех ребер, исходящих из этой проверочной вершины (502) к символьным (501) согласно графу. Для каждой символьной вершины используют один общий сумматор (516) всех сообщений (520 и 515) от проверочных вершин согласно графу Таннера и элемент памяти (524) вне зависимости от ребер, исходящих из этой символьной вершины. 2 н.п. ф-лы, 5 ил.

Description

Изобретение относится к области цифровой обработки информации, а именно к декодерам LDPC (Low density parity check - кодов с малой плотностью проверок на четность) и способам их функционирования, и может быть использовано для декодирования информации, закодированной кодом LDPC, в различных системах передачи/приема данных.
Коды LDPC относятся к блочному кодированию и широко используют в системах передачи информации. Данные коды позволяют исправлять множественные ошибки в блоках данных от нескольких бит до сотен килобайт (увеличение блока данных приводит к аппаратным сложностям).
В настоящее время данные коды LDPC массово используют в нескольких стандартах передачи данных. Последние достижения в технологии производства микроэлектроники позволяют аппаратно реализовать системы кодирования (декодирования) на основе кодов LDPC, что позволяет крайне близко подойти к границе Шеннона по пропускной способности.
Как у любого блочного кода, основой декодирования является проверочная матрица. При больших длинах данных (десятки-сотни килобит) данная матрица имеет огромные размеры, однако суть кодов LDPC заключается в том, что количество единиц в строках и столбцах всегда не более определенного числа, гораздо меньшего размерности матрицы. Как правило, декодирование осуществляют при помощи графа Таннера, построенного согласно проверочной матрице. Существует несколько способов декодирования по надежностям, полученным при демодуляции принятых данных из зашумленного канала. Наиболее адаптированным способом для аппаратной реализации с минимальной потерей в корректирующей способности является алгоритм min-sum (минимум-сумма). В зависимости от применения существуют параллельный, последовательный и последовательно-параллельный способы реализации данного алгоритма. Наибольшей пропускной способностью является алгоритм, реализованный параллельным способом, то есть обменом вероятностью между символьными и проверочными вершинами графа Таннера. Данная реализация требует наибольшие аппаратные ресурсы.
Известен декодер LDPC, описанный в заявке US 2011/0239086 A1, в котором реализован алгоритм min-sum. Однако, в нем по каждому ребру от проверочной вершины к символьной вычисляют свое сообщение, что требует больших аппаратных ресурсов декодера. Аналогично, от символьной вершины к проверочным вычисляют сообщение, уникальное для каждой вершины, что также требует больших аппаратных ресурсов декодера, поэтому увеличивает его стоимость.
В патенте RU 2382493 описан способ декодирования кодов LDPC, в котором узел проверочной вершины оптимизирован подобно заявленному изобретению в части вычисления двух минимумов, однако отсутствует элемент корректировки сообщения от символьной вершины к проверочной. Это значит, что в символьной вершине также вычисляют уникальные сообщения по каждому ребру, исходящему из вершины, что требует больших аппаратных ресурсов декодера, поэтому увеличивает его стоимость.
Наиболее близкими к заявленному изобретению являются декодер LDPC и способ его функционирования, описанные в патенте CN 101188426 и выбранные в качестве прототипов заявленного изобретения, которые аналогичны способу, описанному в патенте RU 2382493, в части сохранения двух минимумов, однако в них значения хранят в буферах FIFO, что свидетельствует о последовательном режиме работы, и также отсутствует элемент корректировки сообщения от символьной вершины к проверочной, это свидетельствует о затрате большие аппаратных ресурсов декодера со стороны символьных вершин и, соответственно, об увеличении стоимости декодера.
Задачей заявленного изобретения является создание декодера LDPC (Low density parity check - кодов с малой плотностью проверок на четность) и способа его функционирования с меньшими аппаратными ресурсами и, соответственно, с меньшей стоимостью, за счет оптимизации параллельного алгоритма min-sum, а именно за счет одного подсчета надежностей от проверочной вершины для символьных вершин с разницей только в коммутации этих значений для символьной вершины, а также за счет одного общего сумматора в каждой символьной вершине. Алгоритм min-sum является итеративным, в нем при каждой итерации пересчитывают надежности, первоначально принятые от демодулятора. От каждой проверочной вершины исходит надежность, подсчитанная по правилу для символьной вершины согласно графу Таннера (Фиг. 1). И, соответственно, наоборот, от каждой символьной вершины исходит надежность, подсчитанная по правилу для проверочной вершины.
Поставленная задача решена путем создания декодера 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).
Поставленная задача решена также путем создания способа функционирования декодера LDPC (Фиг. 5), в котором на первом этапе в каждой проверочной вершине (502) определяют два минимальных по модулю значения из всех приходящих сообщений (518 и 519) от символьных вершин (501) независимо от того, для какой символьной вершины они предназначаются, причем абсолютные значения минимумов (504, 505), а также знаки (506, 507) этих значений, сохраняют в элементах памяти (503), при раздаче сообщения обратно к символьным, учитывают текущее сообщение от символьной вершины (518): если оно совпадает с одним из выбранных минимумов с учетом знака, то для этой вершины выбирают другой из двух минимумов для каждой из вершин, при каждой итерации сохраняют в элементах памяти (503) оба минимума по модулю (504, 505), оба знака этих минимумов (506, 507), а также общий знак всех сообщений (508), приходящих в проверочную вершину (502), сигнал отрицательного сообщения сохраняют в следующем виде:
Figure 00000001
тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:
Figure 00000002
где операция
Figure 00000003
- сложение по модулю 2,
сигнал выбора (510) одного из минимумов для сообщения от проверочной вершины к символьной формируют на выходе первого компаратора (511), исходя из найденных узлом MINIMUM (509) значений:
Figure 00000004
где
Figure 00000005
- значение с выхода первого мультиплексора знака (513), (9)
таким образом, модуль сообщения (514) от проверочной вершины к символьной формируют на выходе второго мультиплексора (521) следующим образом:
Figure 00000006
а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (522), исключив из общего знака, знак отброшенного согласно (10) минимума:
Figure 00000007
где
Figure 00000008
- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523), сформированные сообщения
Figure 00000009
(520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4):
Figure 00000010
которое при каждой итерации сохраняют в элемент памяти (524), выход которого является выходом декодера (525);
на втором этапе оптимизации корректируют полную сумму для каждой из проверочных вершин от рассматриваемой символьной, при этом вычитают из полной суммы после элемента памяти (524) сообщение от этой вершины, запомненное на предыдущем шаге, все операции с сохраненными в элементах памяти (503) значениями минимумов и знаков выполняют (min 1_, min 2_, neg1_, neg2_, neg_) аналогично выражениям (8-11), знак отрицательности (526) из выражения (12) формируют с помощью инвертора (527) с точностью до наоборот:
Figure 00000011
у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (528) скорректированное сообщение от символьной вершины.
Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.
Фиг. 1 - пример графа Таннера.
Фиг. 2 - схема сообщений от символьной вершины к проверочным после инициализации, выполненная согласно изобретению.
Фиг. 3 - схема сообщений от проверочной вершины С2 к символьным D0 (а) и D3 (б), выполненная согласно изобретению.
Фиг. 4 - схема сообщений от символьной вершины D1 к проверочным С0 (а) и С1 (б), выполненная согласно изобретению.
Фиг. 5 - функциональная схема декодера (с коммутацией сообщений между проверочными и символьными вершинами), выполненная согласно изобретению.
Рассмотрим кратко принцип работы заявленного изобретения (Фиг. 2-4). Декодирование по алгоритму min-sum начинают с инициализации элементов памяти символьных вершин значениями априорного отношения правдоподобий (201), поступающих от демодулятора (Фиг. 2):
Figure 00000012
где Un - априорное отношение правдоподобий принятого символа n от демодулятора,
N - длина кодового слова,
deg(n) - степень вершины - количество исходящих ребер от символьной вершины,
Figure 00000013
- сообщение для конкретной проверочной вершины ki (203) от текущей символьной вершины n (202).
Далее обновляют информацию, исходящую от проверочных вершин (303), по следующему правилу (Фиг. 3):
Figure 00000014
где функция g(…) - определяет минимальное по модулю значение с общим знаком из всех аргументов, так что:
Figure 00000015
Figure 00000016
где
Figure 00000017
Стоит заметить, что среди аргументов функции поиска минимального значения для конкретной символьной вершины (302) отсутствует собственно сообщение от этой символьной вершины. Таким образом, от одной проверочной вершины к символьным исходят разные сообщения о минимуме, поэтому облако комбинационной логики (305) получается разным для каждого исходящего ребра (306) (Фиг. 3).
Далее обновляют все символьные вершины (402) с учетом полученных сообщений от всех проверочных вершин (403), вычисленных согласно выражению (2):
Figure 00000018
В следующей итерации сообщения (404) от символьных вершин к проверочным вычисляют в зависимости от того, к какой проверочной вершине они следуют:
Figure 00000019
Аналогично сообщениям от проверочных вершин, сообщения (404) от символьных вершин для конкретной проверочной вершины в своей сумме не содержат сообщения собственно от этой проверочной вершины. Таким образом, от одной символьной вершины к проверочным исходят разные сообщения о сумме, поэтому облако комбинационной логики (405) получается разным для каждого исходящего ребра (406) (Фиг. 4).
Рассмотрим более подробно вариант выполнения заявленного декодера, показанный на Фиг. 5 и способ его функционирования.
Ввиду того, что для каждого ребра из каждой проверочной вершины согласно графу Таннера необходима своя функция нахождения минимума, аппаратные ресурсы будут крайне велики. В заявленном изобретении оптимизирован данный алгоритм с целью уменьшения аппаратных ресурсов.
Если рассматривать путь сообщений от проверочных вершин (303) к символьным (302), то согласно выражению (2) для символьной вершины ni (302) необходимо найти минимум из всех приходящих в проверочную вершину k сообщений от символьных вершин кроме ni. И так далее, для ni+1 участвуют все сообщения кроме сообщения от ni+1 (Фиг. 3 а, б).
Первый этап оптимизации заключается в определении двух минимальных (по модулю) значений из всех приходящих сообщений (518 и 519) от символьных вершин независимо о того, для какой символьной вершины они предназначаются, при этом существенном снижении аппаратных ресурсов. Абсолютные значения минимумов (504, 505), а также знаки (506, 507) этих значений сохраняют в элементах памяти (503). При раздаче сообщения обратно к символьным, учитывают текущее сообщение от символьной вершины (518): если оно совпадает с одним из выбранных минимумов с учетом знака, то для этой вершины выбирают другой из двух минимумов для каждой из вершин. При каждой итерации сохраняют в элементах памяти (503) оба минимума по модулю (504, 505), оба знака этих минимумов (506, 507), а также общий знак всех сообщений (508), приходящих в проверочную вершину (502). Сигнал отрицательного сообщения сохраняют в следующем виде:
Figure 00000020
тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:
Figure 00000021
где операция
Figure 00000022
- сложение по модулю 2.
Сигнал выбора (510) одного их минимумов для сообщения от проверочной вершины к символьной формируют на выходе первого компаратора (511), исходя из найденных узлом MINIMUM (509) значений:
Figure 00000023
где
Figure 00000024
- значение с выхода первого мультиплексора знака (513). (9)
Таким образом, модуль сообщения (514) от проверочной вершины к символьной формируют на выходе второго мультиплексора (521) следующим образом:
Figure 00000025
а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (522), исключив из общего знака, знак отброшенного согласно (10) минимума:
Figure 00000026
где
Figure 00000027
- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523).
Сформированные таким образом сообщения
Figure 00000028
(520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4):
Figure 00000029
, которое после нескольких итераций сохраняют в элемент памяти (524), выход которого является выходом декодера (525).
Второй этап оптимизации состоит в том, что в каждой символьной вершине (501) хранится полная сумма всех сообщений (520), согласно графу, от проверочных вершин, вне зависимости для какой из проверочных вершин она предназначена. Однако согласно выражению (5) для проверочной вершины (502) предназначена сумма сообщений от проверочных вершин, кроме этой проверочной вершины (502). В схеме на Фиг. 5 предусмотрена корректировка полной суммы для каждой из проверочных вершин от рассматриваемой символьной. Вычитают из полной суммы после элемента памяти (524) сообщение от этой вершины, запомненное на предыдущем шаге. Все операции с сохраненными в элементах памяти (503) значениями минимумов и знаков выполняют (min1_, min2_, neg1_, neg2_, neg_) аналогично выражениям (8-11). Нижнее подчеркивание перед индексом означает, что это значение после элемента памяти (503). Знак отрицательности (526) из выражения (12) формируют с помощью инвертора (527) с точностью до наоборот:
Figure 00000030
Так как от общей суммы необходимо вычесть сообщение от данной вершины, поэтому у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (528) скорректированное сообщение.
Сущность заявленного изобретения заключается в оптимизации схемы декодера и способа его функционирования, а именно использования для каждой проверочной вершины одного узла (данный узел выделен пунктиром на Фиг. 5) поиска минимумов (509) и элементов памяти (503) для всех ребер, исходящих из этой проверочной вершины (502) к символьным (501) согласно графу. И для каждой символьной вершины используют один общий сумматор (516) всех сообщений (520 и 515) от проверочных вершин согласно графу Таннера и элемент памяти (524) (узел выделен сплошной линией) вне зависимости от ребер, исходящих из этой символьной вершины. По каждому ребру необходима схема коммутации сообщений, однако данная схема проста в реализации (выделено жирным штрихпунктирном).
Хотя описанный выше вариант выполнения изобретения был изложен с целью иллюстрации настоящего изобретения, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящего изобретения, раскрытого в прилагаемой формуле изобретения.

Claims (22)

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).
2. Способ функционирования декодера LDPC, в котором на первом этапе в каждой проверочной вершине (502) определяют два минимальных по модулю значения из всех приходящих сообщений (518 и 519) от символьных вершин (501) независимо от того, для какой символьной вершины они предназначаются, причем абсолютные значения минимумов (504, 505), а также знаки (506, 507) этих значений сохраняют в элементах памяти (503), при раздаче сообщения обратно к символьным, учитывают текущее сообщение от символьной вершины (518): если оно совпадает с одним из выбранных минимумов с учетом знака, то для этой вершины выбирают другой из двух минимумов для каждой из вершин, при каждой итерации сохраняют в элементах памяти (503) оба минимума по модулю (504, 505), оба знака этих минимумов (506, 507), а также общий знак всех сообщений (508), приходящих в проверочную вершину (502), сигнал отрицательного сообщения сохраняют в следующем виде:
Figure 00000031
тогда общий сигнал отрицательности (508) всех входящих сообщений вычисляют следующим образом:
Figure 00000032
где операция ⊕ - сложение по модулю 2,
сигнал выбора (510) одного из минимумов для сообщения от проверочной вершины к символьной формируют на выходе первого компаратора (511), исходя из найденных узлом MINIMUM (509) значений:
Figure 00000033
где
Figure 00000034
- значение с выхода первого мультиплексора знака (513) (9)
таким образом, модуль сообщения (514) от проверочной вершины к символьной формируют на выходе второго мультиплексора (521) следующим образом:
Figure 00000035
а так как знак формируют из общего знака всех сообщений, исключая сообщения от символьной вершины, для которой формируют сообщение на выходе второго компаратора (522), исключив из общего знака, знак отброшенного согласно (10) минимума:
Figure 00000036
где
Figure 00000037
- сигнал отрицательности, сформированный на выходе сумматора по модулю 2 (523),
сформированные сообщения
Figure 00000038
(520) от каждой проверочной вершины (502) согласно графу Таннера посылают на входы общего сумматора (516) символьной вершины (501), так что на его выходе формируют значение согласно (4):
Figure 00000039
, которое при каждой итерации сохраняют в элемент памяти (524), выход которого является выходом декодера (525);
на втором этапе оптимизации корректируют полную сумму для каждой из проверочных вершин от рассматриваемой символьной, при этом вычитают из полной суммы после элемента памяти (524) сообщение от этой вершины, запомненное на предыдущем шаге, все операции с сохраненными в элементах памяти (503) значениями минимумов и знаков выполняют (min 1_, min2_, neg1_, neg2_, neg_) аналогично выражениям (8-11), знак отрицательности (526) из выражения (12) формируют с помощью инвертора (527) с точностью до наоборот:
Figure 00000040
у сообщения меняют знак и складывают с полной суммой, при этом получают на выходе сумматора (528) скорректированное сообщение от символьной вершины.
RU2016125720A 2016-06-28 2016-06-28 Декодер ldpc и способ его функционирования RU2634193C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2016125720A RU2634193C1 (ru) 2016-06-28 2016-06-28 Декодер ldpc и способ его функционирования

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2016125720A RU2634193C1 (ru) 2016-06-28 2016-06-28 Декодер ldpc и способ его функционирования

Publications (1)

Publication Number Publication Date
RU2634193C1 true RU2634193C1 (ru) 2017-10-24

Family

ID=60153918

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016125720A RU2634193C1 (ru) 2016-06-28 2016-06-28 Декодер ldpc и способ его функционирования

Country Status (1)

Country Link
RU (1) RU2634193C1 (ru)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101188426A (zh) * 2007-12-05 2008-05-28 深圳国微技术有限公司 用于对准循环结构的ldpc码进行并行处理的译码器及方法
RU2382493C2 (ru) * 2004-08-02 2010-02-20 Квэлкомм Инкорпорейтед Эффективные по использованию памяти способы декодирования кодов с низкой плотностью контроля по четности (ldpc) и устройства для осуществления этих способов
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 (ru) * 2004-08-02 2010-02-20 Квэлкомм Инкорпорейтед Эффективные по использованию памяти способы декодирования кодов с низкой плотностью контроля по четности (ldpc) и устройства для осуществления этих способов
CN101188426A (zh) * 2007-12-05 2008-05-28 深圳国微技术有限公司 用于对准循环结构的ldpc码进行并行处理的译码器及方法
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
CN102412847B (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
US9319069B2 (en) Reduced complexity non-binary LDPC decoding algorithm
Lin et al. A reduced latency list decoding algorithm for polar codes
CN107919874B (zh) 校验子计算基本校验节点处理单元、方法及其计算机程序
Sarkis et al. Increasing the speed of polar list decoders
KR20170097580A (ko) 폴라 코딩 장치
US10637510B2 (en) Methods and devices for error correcting codes decoding
CN107979445B (zh) 使用预先排序的输入的基于基本校验节点的校正子解码
KR20150128750A (ko) 늦은 신뢰도 정보를 사용하여 디코딩하기 위한 시스템 및 방법
EP3364578A1 (en) Decoding method and decoder for low-density parity check code
KR101631128B1 (ko) 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더
US20170134048A1 (en) Message-passing based decoding using syndrome information, and related methods
US20160049962A1 (en) Method and apparatus of ldpc encoder in 10gbase-t system
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 (zh) 在非二进制ldpc解码器中简化的校验节点处理
CN107615666A (zh) Ldpc截短码的译码方法和译码设备
US11201629B2 (en) Low latency sequential list decoding of polar codes
CN103856218A (zh) 译码处理方法及译码器
RU2634193C1 (ru) Декодер ldpc и способ его функционирования
US20150254130A1 (en) Error correction decoder
RU168602U1 (ru) Декодер ldpc
Sarkis et al. Unrolled polar decoders, part ii: Fast list decoders
US11476870B2 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes
EP3841673B1 (en) Apparatuses and methods for mapping frozen sets between product codes and component polar codes