Итеративное декодирование последовательно конкатенированного сверточного кода

Эта модель показывает, как использовать итеративный процесс, чтобы декодировать последовательно конкатенированный сверточный код (SCCC).

Примечание

Этот пример представляет технологию, покрытую под американским Доступным Номером 6,023,783, "Гибридные каскадные коды и итеративное декодирование", присвоил Калифорнийскому технологическому институту. Конечный пользователь этого продукта настоящим выдан ограниченная лицензия использовать этот пример только в целях оценки возможных коммерческих и образовательных приложений технологии. Любое другое использование или модификация этого примера могут составить нарушение этого и/или других патентов.

Исследование примера

Симуляция генерирует информационные биты, кодирует их использующий последовательно конкатенированный сверточный код и передает закодированную информацию вдоль шумного канала. Симуляция затем декодирует полученную закодированную информацию, с помощью итеративного процесса декодирования, и вычисляет ошибочную статистику на основе различных количеств итераций. В течение симуляции коэффициенты ошибок появляются в блоке Display.

Откройте модель, doc_iterative_decoding_sccc, путем ввода следования командной строки MATLAB®.

doc_iterative_decoding_sccc

Переменные в примере

Блок Model Parameters позволяет вам отличаться значения некоторых количеств, которые использует модель. Приведенная ниже таблица указывает на их имена и значения.

ИмяЗначение
Eb/NoEb/N0 в шуме канала, измеренном в дБ; используемый, чтобы вычислить отклонение шума канала
Block sizeКоличество битов в каждом кадре незакодированных данных
Number of iterationsКоличество итераций, чтобы использовать при декодировании
SeedНачальный seed в Случайном Interleaver и Случайных блоках Deinterleaver

Создание последовательно каскадного кода

Фрагмент кодирования примера использует блок Convolutional Encoder, чтобы закодировать кадр данных, блок Random Interleaver, чтобы переставить биты в кодовых комбинациях и другой блок Convolutional Encoder, чтобы закодировать чередованные биты. Поскольку эти блоки соединяются друг последовательно с другом, получившийся код называется последовательно каскадным кодом.

Вместе, эти блоки кодируют 1024-битный кадр данных в 3072-битный кадр, представляющий каскадный код. Эти размеры зависят от параметра Block size модели (см. блок Model Parameters). Уровень кода каскадного кода является 1/3.

В целом цель чередоваться состоит в том, чтобы защитить кодовые комбинации от пакетных ошибок в шумном канале. Пакетная ошибка, которая повреждает чередованные данные на самом деле, имеет небольшой эффект на каждую из нескольких кодовых комбинаций, а не большой эффект на любую кодовую комбинацию. Чем меньший ошибка в отдельной кодовой комбинации, тем больше шанс, что декодер может восстановить информацию правильно.

Сверточные детали кодирования

Два экземпляра блока Convolutional Encoder используют свои параметры Trellis structure, чтобы задать сверточные коды. Таблица ниже приводит полиномы, которые задают каждый из этих двух сверточных кодов. Второй энкодер имеет два входных параметров и использует две строки регистров памяти.

 Внешний сверточный кодВнутренний сверточный код
Полиномы генератора1+D+D2 и 1+D2Первая строка: 1+D+D2, 0, и 1+D2
Вторая строка: 0, 1+D+D2, и 1+D
Полиномы обратной связи1+D+D21+D+D2 для каждой строки
Продолжительности ограничения33 для каждой строки
Уровень кода1/22/3

Декодирование Используя итеративный процесс

Фрагмент декодирования этого примера состоит из двух блоков Декодера APP, блока Random Deinterleaver и нескольких других блоков. Вместе, эти блоки формируют цикл и действуют на уровне в шесть раз больше чем это фрагмента кодирования примера. Циклическая структура и более высокое объединение уровня, чтобы заставить декодирование разделить на части итеративный процесс. Используя несколько итераций улучшает производительность декодирования. Можно управлять количеством итераций путем установки параметра Number of iterations в блоке Model Parameters модели. Количество по умолчанию итераций равняется шести.

Вычисления в каждой итерации

В каждой итерации фрагмент декодирования примера декодирует внутренний сверточный код, устраняет чередование результата и декодирует внешний сверточный код. Выходной сигнал L(u) внешнего декодера представляет обновленные вероятности битов исходного сообщения (то есть, входных битов к внешнему энкодеру).

Стратегия цикличного выполнения в этом примере позволяет внутреннему декодеру извлечь выгоду в следующей итерации из работы внешнего декодера. Чтобы понять, как цикл работает, сначала вспомните значения этих сигналов:

  • Выходной сигнал L(c) внешнего декодера представляет обновленные вероятности битов кода от внешнего энкодера.

  • Вход L(u) внутреннего декодера представляет вероятности входных битов к внутреннему энкодеру.

Обратная связь распознает, что первичное различие между этими двумя сигналами находится в операции чередования, которая происходит между внешними и внутренними энкодерами. Поэтому цикл чередует L(c) вывод внешнего декодера, чтобы реплицировать ту операцию чередования, задерживает чередованные данные, чтобы гарантировать, что два входных порта внутреннего декодера представляют данные из тех же временных шагов, и сбрасывает вход L(u) к внутреннему декодеру, чтобы обнулить после каждых шести итераций.

Результаты итерационного цикла

Результатом декодирования является кадр с 1024 элементами, элементы которого указывают на вероятность, что каждый из 1 024 битов сообщения был 0 или 1. Неотрицательный элемент указывает, что бит сообщения был, вероятно, 1, и отрицательный элемент указывает, что бит сообщения был, вероятно, 0. Блок Hard Decision преобразовывает неотрицательные и отрицательные величины в 1's и 0, соответственно, так, чтобы результаты имели ту же форму как исходные незакодированные двоичные данные.

Результаты и отображения

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

Измените Eb/No на 1 дБ и запустите симуляцию. Заметьте, что частоты ошибок по битам уменьшаются с каждой итерацией.

Ссылки

[1] Бенедетто, S., Д. Дивсэлэр, Г. Монторси и Ф. Поллара, "Последовательная конкатенация чередованных кодов: анализ производительности, проект и итеративное декодирование", отчет о выполнении работ JPL TDA, издание 42-126, август 1996.

[2] Divsalar, Дариуш, и Фабрицио Поллара, гибридные каскадные коды и итеративное декодирование, американский доступный № 6,023,783, 8 февраля 2000.

[3] Heegard, Крис, и Стивен Б. Викер, турбокодирование, Бостон, Kluwer академические издатели, 1999.