Эта модель показывает, как использовать итеративный процесс, чтобы декодировать последовательно конкатенированный сверточный код (SCCC).
Этот пример представляет технологию, покрытую под американским Доступным Номером 6,023,783, "Гибридные каскадные коды и итеративное декодирование", присвоил Калифорнийскому технологическому институту. Конечный пользователь этого продукта настоящим выдан ограниченная лицензия использовать этот пример только в целях оценки возможных коммерческих и образовательных приложений технологии. Любое другое использование или модификация этого примера могут составить нарушение этого и/или других патентов.
Симуляция генерирует информационные биты, кодирует их использующий последовательно конкатенированный сверточный код и передает закодированную информацию вдоль шумного канала. Симуляция затем декодирует полученную закодированную информацию, с помощью итеративного процесса декодирования, и вычисляет ошибочную статистику на основе различных количеств итераций. В течение симуляции коэффициенты ошибок появляются в блоке Display.
Откройте модель, doc_iterative_decoding_sccc, путем ввода следования командной строки MATLAB®.
doc_iterative_decoding_sccc
Блок Model Parameters позволяет вам варьироваться значения некоторых количеств, которые использует модель. Приведенная ниже таблица указывает на их имена и значения.
Имя | Значение |
---|---|
Eb/No | Eb/N0 в шуме канала, измеренном в дБ; использованный для расчета отклонение шума канала |
Block size | Количество битов в каждой системе координат незакодированных данных |
Number of iterations | Количество итераций, чтобы использовать при декодировании |
Seed | Начальный seed в Random Interleaver и блоках Random 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+D2 | 1+D+D2 для каждой строки |
Продолжительности ограничения | 3 | 3 для каждой строки |
Уровень кода | 1/2 | 2/3 |
Фрагмент декодирования этого примера состоит из двух блоков APP Decoder, блока 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, соответственно, так, чтобы результаты имели ту же форму как исходные незакодированные двоичные данные.
Пример включает большой блок Display, который показывает коэффициенты ошибок после сравнения полученных данных с передаваемыми данными. Количество коэффициентов ошибок в отображении является количеством итераций в процессе декодирования. Первый коэффициент ошибок отражает производительность процесса декодирования, который использует одну итерацию, второй коэффициент ошибок отражает производительность процесса декодирования, который использует две итерации и так далее. Серия коэффициентов ошибок показывает, что коэффициент ошибок обычно уменьшается как количество увеличений итераций.
Измените Eb/No в 1 дБ и запустите симуляцию. Заметьте, что частоты ошибок по битам уменьшаются с каждой итерацией.
[1] Бенедетто, S., Д. Дивсэлэр, Г. Монторси и Ф. Поллара, "Последовательная конкатенация чередованных кодов: анализ производительности, проект и итеративное декодирование", отчет о выполнении работ JPL TDA, издание 42-126, август 1996.
[2] Divsalar, Дариуш, и Фабрицио Поллара, гибридные каскадные коды и итеративное декодирование, американский доступный № 6,023,783, 8 февраля 2000.
[3] Heegard, Крис, и Стивен Б. Викер, турбокодирование, Бостон, Kluwer академические издатели, 1999.