Помехоустойчивое кодирование работает как главный ресурс радиосвязи, и его классы различаются по выигрышу, задержке и цене декодирования. Свёрточные коды, коды Рида-Соломона, турбо-коды и LDPC закрывают один и тот же канал по-разному, и умение выбирать между ними считается от требований системы. В статье разобраны выигрыш кодирования и предел Шеннона, свёрточные коды, коды Рида-Соломона, каскадирование, турбо-коды, LDPC и порядок выбора.

Выигрыш кодирования и предел Шеннона

Выигрыш кодирования работает как главная величина сравнения кодов, и его эталоном считается предел Шеннона. Предел для двоичного канала при скорости кода 1/2 составляет около 0,2 дБ по энергии на бит к спектральной плотности шума, и коды, работающие в его окрестности, считаются предельными. Расчёт выигрыша для практического случая даёт следующее, некодированная квадратурная фазовая манипуляция требует около 9,6 дБ при вероятности ошибки 1e-5, код со скоростью 1/2 требует около 4,5 дБ, и его выигрыш составляет около 5 дБ. Связь с классами кодов прямая, свёрточные коды дают 5-6 дБ, каскад с кодами Рида-Соломона около 8 дБ, турбо-коды и LDPC 9-10 дБ, и их различие работает на дальность связи. Практическая связка, требуемая вероятность ошибки, скорость кода и выигрыш, и их сумма работает на выбор. Выигрыш работает и в обратную сторону, код с выигрышем 5 дБ на канале с запасом 6 дБ меняет вероятность ошибки на порядки, и его работа на надёжность фундаментальна. Накладные расходы кода считаются в скорости, и их связь с выигрышем работает на компромисс. Проверка выигрыша идёт моделированием канала с фактическими условиями, и его результат сравнивается с расчётом. Экономия на кодировании платится мощностью, и её цена в дальности связи измеряется децибелами. Практическая работа с выигрышем заслуживает отдельного взгляда. Кривые вероятности ошибки работают на расчёт выигрыша, и их наклон при кодировании круче, чем у некодированного канала. Кроссовер кода работает на низких отношениях сигнала к шуму, где код проигрывает, и его положение считается в адаптивных системах. Проверка идёт моделированием кривых в диапазоне отношений, и её данные работают на адаптацию.

Свёрточные коды и алгоритм Витерби

Свёрточные коды работают через свёртку данных, и их декодирование по алгоритму Витерби остаётся рабочим решением массовых систем. Код с длиной ограничения 7 и скоростью 1/2 даёт выигрыш 5-6 дБ, и его декодер работает с решёткой из 64 состояний. Расчёт ресурсов декодера прямое, решётка с 64 состояниями и глубина возврата в 5-7 длин ограничения работают на память и вычисления, и их бюджет считается в проектировании. Связь с задержкой прямая, глубина возврата задаёт задержку декодера, и её величина в десятки бит работает на тракты с ограниченной задержкой. Практическая связка, длина ограничения, глубина возврата и ресурсы, и их сумма работает на выбор кода. Коды с большей длиной ограничения дают больший выигрыш ценой экспоненциального роста ресурсов, и их компромисс фундаментален. Перфорация кода работает на скорость, и её схемы дают скорости 2/3 и 3/4 с меньшим выигрышем. Практическое решение, код с длиной ограничения 7 для массовых систем, перфорация для скоростей, и их работа в каскаде с кодами Рида-Соломона считается стандартом. Проверка идёт моделированием при фактическом канале, и его результат сравнивается с расчётом. Экономия на декодере платится выигрышем, и его цена в дальности измеряется децибелами. Практическая работа с декодером заслуживает отдельного взгляда. Мягкие решения на входе декодера работают на выигрыш в 2 дБ против жёстких, и их разрядность считается в интерфейсе. Скорость декодера работает на пропускную способность, и её параллельные схемы считаются в ресурсах. Проверка идёт моделированием с мягкими решениями, и его выигрыш сравнивается с расчётом.

Коды Рида-Соломона и вспышки ошибок

Коды Рида-Соломона работают на байтовых символах, и их сила в исправлении вспышек ошибок. Код Рида-Соломона с параметрами (255, 223) работает в блоке из 255 байтов с 223 данными, его накладные расходы составляют 32 байта или 12,5 процента, и он исправляет до 16 байтовых ошибок в блоке. Связь с вспышками фундаментальна, вспышка в 16 байтов подряд исправляется полностью, и её размазывание чередованием работает на блоки. Расчёт вероятности ошибки блока прямое, блок с 16 исправляемыми ошибками при вероятности байтовой ошибки 1e-3 имеет вероятность отказа блока на порядки ниже, и его расчёт идёт по биномиальному распределению. Практическая связка, размер блока, накладные и исправляемые ошибки, и их сумма работает на выбор кода. Чередование данных работает на вспышки, его глубина размазывает вспышку по блокам, и её расчёт идёт от длительности вспышек канала. Практическое решение, чередование с глубиной от длительности вспышек, код Рида-Соломона поверх свёрточного, и их связка работает на остаточные ошибки декодера. Остаточные ошибки Витерби приходят блоками, и их размазывание чередованием закрывает код Рида-Соломона. Проверка идёт моделированием с фактическими вспышками канала, и его результат сравнивается с расчётом. Экономия на чередовании платится вспышками, и их цена в отказе блоков измеряется порядками. Практическая работа с блоками заслуживает отдельного взгляда. Размер блока работает на задержку и на накладные одновременно, и его выбор считается от задачи. Синхронизация блоков работает на приём, и её потеря работает на весь блок. Проверка идёт счётчиком блоков с ошибками в эксплуатации, и её данные сравниваются с расчётом.

Каскадирование кодов и его суммарный выигрыш

Каскадирование работает как связка внутреннего и внешнего кодов, и его суммарный выигрыш считается по обоим. Расчёт для практического случая даёт следующее, свёрточный код со скоростью 1/2 внутри и код Рида-Соломона снаружи дают суммарный выигрыш около 8 дБ, и его величина на 2-3 дБ выше одного внутреннего кода. Связь с остаточными ошибками фундаментальна, внешний код закрывает остаточные ошибки внутреннего, и его работа на порядок вероятности ошибки фундаментальна. Практическая связка, внутренний код, внешний код и чередование между ними, и их сумма работает на каскад. Накладные расходы каскада складываются из обоих кодов, и их сумма в скорости считается в бюджете. Расчёт для практического примера прямое, внутренний код 1/2 и внешний с 12,5 процентами накладных дают суммарную скорость 0,44, и её цена в полосе считается в проектировании. Практическое решение, каскад для систем с жёсткими требованиями к вероятности ошибки, его чередование для вспышек, и их работа в тракте считается стандартом массовых систем. Задержка каскада складывается из декодера и чередования, и её сумма работает на тракты с ограничением. Практическая работа с каскадом заслуживает отдельного взгляда. Порядок кодов в каскаде работает на остаточные ошибки, внешний код всегда снаружи, и его чередование между кодами работает на вспышки. Синхронизация декодеров работает на задержку каскада, и её сумма считается в бюджете. Проверка идёт по каскаду целиком, и её результат работает на выбор параметров. Проверка идёт моделированием каскада при фактическом канале, и его результат сравнивается с расчётом. Экономия на каскаде платится вероятностью ошибки, и её цена в надёжности измеряется порядками.

Турбо-коды и их итеративное декодирование

Турбо-коды работают через итеративное декодирование, и их выигрыш подходит к пределу Шеннона. Турбо-код работает в 0,5-1 дБ от предела Шеннона, и его итерации 5-10 дают основную часть выигрыша. Расчёт выигрыша итераций прямое, первые итерации дают основную долю, и его насыщение после 5-10 итераций считается в проектировании. Связь с задержкой фундаментальна, итерации работают на задержку декодера, и её величина для больших блоков измеряется миллисекундами. Практическая связка, размер блока, итерации и задержка, и их сумма работает на выбор. Двойное кодирование с перемежителем работает как основа турбо-кода, и его перемежитель работает на итеративное декодирование. Практическое решение, турбо-код для систем с жёсткими требованиями и допустимой задержкой, его блоки от размера задачи, и их работа в спутниковых и глубоких каналах считается стандартом. Ресурсы декодера растут с итерациями линейно, и их бюджет считается в проектировании. Проверка идёт моделированием при фактическом канале с подсчётом итераций, и его результат сравнивается с расчётом. Экономия на итерациях платится выигрышем, и его цена в дальности измеряется долями децибела. Практическая работа с итерациями заслуживает отдельного взгляда. Ранний выход декодера по сходимости работает на среднюю задержку, и его порог считается по надёжности. Блоки малых размеров работают на задержку ценой выигрыша, и их компромисс считается от задачи. Проверка идёт по распределению итераций в эксплуатации, и его данные сравниваются с расчётом. Для систем с жёсткой задержкой турбо-коды уступают LDPC, и их выбор считается в следующем разделе.

Коды LDPC и их проверки на чётность

Коды LDPC работают на разреженных матрицах проверок на чётность, и их декодирование по распространению доверия закрывает предел Шеннона. LDPC коды работают в 0,1-1 дБ от предела Шеннона, и их структурированные матрицы работают на аппаратную реализацию. Расчёт для практического примера прямое, код со скоростью 1/2 с матрицей структурированной конструкции работает с итерациями в десятки, и его ресурсы считаются от плотности матрицы. Связь со скоростями фундаментальна, LDPC коды работают на скоростях от 1/4 до 9/10, и их семейство закрывает адаптивные системы. Практическая связка, скорость кода, матрица и ресурсы декодера, и их сумма работает на выбор. Декодер с параллельной обработкой работает на пропускную способность, и его ресурсы считаются от числа проверок. Практическое решение, структурированные LDPC коды для широкополосных систем, их скорости для адаптации, и их работа в стандартах цифрового телевидения и связи считается современным стандартом. Вспышки ошибок работают на LDPC слабее, чем на Рида-Соломона, и их связка в каскаде считается для каналов с вспышками. Проверка идёт моделированием при фактическом канале, и его результат сравнивается с расчётом. Экономия на декодере платится выигрышем, и его цена в дальности измеряется долями децибела. Задержка LDPC измеряется десятками итераций, и её величина работает на тракты в реальном времени. Практическая работа с декодером LDPC заслуживает отдельного взгляда. Слоистое декодирование работает на пропускную способность и сходимость, и его порядок работает на ресурсы. Ранний выход по проверкам работает на среднюю задержку, и его порог считается по надёжности. Проверка идёт по фактическому каналу с подсчётом итераций, и её данные сравниваются с расчётом.

Порядок выбора кода для системы

Выбор кода укладывается в шесть шагов:

  1. расчёт требуемой вероятности ошибки и допустимого выигрыша от задачи;
  2. расчёт допустимой задержки декодера от системы;
  3. выбор класса кода по выигрышу, задержке и ресурсам декодера;
  4. расчёт чередования для вспышек ошибок канала;
  5. расчёт каскада кодов для жёстких требований;
  6. проверка идёт моделированием при фактическом канале.

Такой порядок превращает выбор кода из привычки в расчёт от задачи. Практика радиосвязи подтверждает масштаб, коды, выбранные по описанному циклу, работают на пределе Шеннона там, где задачи позволяют, и каждый децибел выигрыша конвертируется в дальность и мощность напрямую. Сравнительный анализ помехоустойчивых кодов остаётся той частью проектирования, где теория и практика работают вместе, и умение вести выбор от предела Шеннона до декодера определяет, что система покажет на практике. Практическая связка кода с остальным трактом заслуживает отдельного взгляда. Код проектируется вместе с модуляцией и адаптацией, и их совместная работа считается в бюджете канала. Изменение условий канала работает на смену скорости кода, и её схемы работают в адаптации. Документирование кода с его моделированием работает на обслуживание системы, и его данные работают на следующие версии.