Открыть сервис

Коды LDPC

LDPC-коды (Low-Density Parity-Check codes, коды с малой плотностью проверок на чётность) — это класс линейных блочных помехоустойчивых кодов, используемых для коррекции ошибок при передаче данных по каналам связи с шумом. Отличительной особенностью LDPC-кодов является разрежённость их проверочной матрицы (матрицы H), то есть малое количество ненулевых элементов по сравнению с её размерами. Благодаря этому свойству, для декодирования LDPC-кодов могут применяться эффективные итеративные алгоритмы, позволяющие приблизиться к пропускной способности канала (пределу Шеннона) с вычислительной сложностью, линейно зависящей от длины кода. LDPC-коды широко применяются в современных системах цифровой связи, включая стандарты Wi-Fi (IEEE 802.11n/ac/ax), цифровое телевидение (DVB-S2, DVB-T2, DVB-C2), спутниковую связь, системы хранения данных (NAND-флэш-память) и технологию 5G NR.

История

Открытие и ранние работы

LDPC-коды были впервые предложены Робертом Галлагером в его докторской диссертации в Массачусетском технологическом институте в 1960 году и опубликованы в 1962 году. Галлагер описал нерегулярные коды и итеративный алгоритм декодирования, основанный на распространении вероятностных сообщений по графу. Однако в то время вычислительные мощности были недостаточны для практической реализации декодирования, а теоретическая значимость работы не была в полной мере оценена. В течение последующих десятилетий LDPC-коды были практически забыты.

Переоткрытие и развитие

В 1993 году Клод Берру и Ален Главиё открыли турбокоды, которые показали близкую к пределу Шеннона производительность и вызвали новый интерес к итеративным методам декодирования. В 1996 году Дэвид Маккей и Радлифф Нил, а также независимо Микаэль Люби, Майкл Митценмахер и Амир Шокроллахи, переоткрыли LDPC-коды. Они показали, что при достаточно длинных блоках и использовании разрежённых проверочных матриц, LDPC-коды могут превзойти турбокоды по производительности, особенно при больших длинах кодовых слов. С этого момента началось интенсивное изучение и совершенствование LDPC-кодов.

Практическое внедрение

С начала 2000-х годов LDPC-коды стали внедряться в промышленные стандарты. Первым массовым применением стал стандарт спутникового телевидения DVB-S2 (2005 год). Затем последовали стандарты цифрового телевидения DVB-T2 и DVB-C2, стандарты Wi-Fi (IEEE 802.11n, 2009 год), а также стандарты 10GBASE-T Ethernet. В 2018 году LDPC-коды были выбраны в качестве основного канального кодирования для канала данных в технологии 5G NR (New Radio), заменив турбокоды, использовавшиеся в 4G LTE.

Определение и основные понятия

LDPC-код является линейным блочным кодом. Это означает, что он преобразует блок из \( k \) информационных бит в блок из \( n \) бит (кодовое слово), где \( n > k \). Избыточность кода характеризуется скоростью кода \( R = k/n \).

Ключевым элементом является проверочная матрица \( H \) размером \( m \times n \), где \( m = n - k \) (для полноранговой матрицы). Строки матрицы соответствуют проверкам на чётность, а столбцы — битам кодового слова. Кодовое слово \( c \) (длиной \( n \)) удовлетворяет условию:

\[ H \cdot c^T = 0 \]

Условие «малой плотности» (Low-Density) означает, что матрица \( H \) содержит очень мало единиц (ненулевых элементов) по сравнению с нулями. Обычно доля единиц составляет от 0.1% до 1% от общего числа элементов.

LDPC-коды удобно представлять в виде графа Таннера — двудольного графа, где одна доля вершин представляет биты (переменные), а другая — проверки. Ребро соединяет битовую вершину с проверочной, если соответствующий элемент матрицы \( H \) равен 1. Такой граф наглядно иллюстрирует связи между битами и проверками и лежит в основе итеративного декодирования.

Классификация LDPC-кодов

LDPC-коды классифицируются по нескольким признакам.

По регулярности

По способу построения

По типу канала

Декодирование LDPC-кодов

Основным методом декодирования LDPC-кодов является итеративное декодирование на основе распространения доверия (Belief Propagation, BP). Алгоритм работает на графе Таннера и заключается в обмене сообщениями между битовыми и проверочными вершинами.

Алгоритм распространения доверия

  1. Инициализация: Каждая битовая вершина получает априорную вероятность (или логарифмическое отношение правдоподобия, LLR) от канала.
  2. Итерации:
  1. Принятие решения: После каждой итерации (или по завершении заданного числа итераций) на основе суммарной информации в каждой битовой вершине принимается жёсткое решение (0 или 1). Если полученный вектор удовлетворяет всем проверкам (\( H \cdot \hat{c}^T = 0 \)), декодирование считается успешным.

Варианты и упрощения

Применение LDPC-кодов

Благодаря высокой эффективности и возможности параллельной реализации, LDPC-коды нашли широкое применение в различных областях.

Преимущества и недостатки

Преимущества

Недостатки

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →