Документация Engee

Viterbi Decoder

Декодирование сверточно кодированных данных с помощью алгоритма Витерби.

viterbi decoder

Описание

Блок Viterbi Decoder декодирует входные символы, полученные сверточным кодированием, для получения двоичных выходных символов с помощью алгоритма Витерби. Структура решетки задает схему сверточного кодирования.

Порты

Вход

Port_1 — входное слово, полученное сверточным кодированием
вектор-столбец

Входное слово, полученное сверточным кодированием, заданное в виде вектора-столбца. Если декодер принимает входных битовых потоков (то есть может принимать возможных входных символов), длина входного вектора блока равна для некоторого положительного целого числа .

Дополнительную информацию можно посмотреть в разделах Размеры входных и выходных данных, Входные данные и тип решения, а также в описании параметра Operation mode.

Типы данных: Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

Выход

Port_1 — выходное сообщение
двоичный вектор-столбец

Выходное сообщение, возвращаемое в виде двоичного вектора-столбца. Если декодер выдает выходных битовых потоков (то есть может выдать возможных выходных символов), длина выходного вектора блока равна для некоторого положительного целого числа .

Дополнительную информацию можно посмотреть в разделе Размеры входных и выходных данных.

Типы данных: Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

Параметры

Encoded data parameters

Trellis structure — описание сверточного кода через кодовую решетку
poly2trellis(7, [171 133]) (по умолчанию)

Решетчатое описание сверточного кода, заданное в виде структуры решетки для кода со скоростью , где — это количество входных битовых потоков, а — количество выходных битовых потоков.

Для создания структуры решетки можно использовать функцию poly2trellis или задать ее вручную.

Структура решетки содержит следующие поля:

  • numInputSymbols — количество символов, поступающих на вход устройства кодирования, задается как целое число, равное , где K — количество входных битовых потоков.

  • numOutputSymbols — количество символов, поступающих на выход устройства кодирования, задается как целое число, равное , где K — количество выходных битовых потоков.

  • numStates — количество состояний в устройстве кодирования, заданное в виде степени 2.

  • nextStates — следующие состояния для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы целых чисел. Размер матрицы должен быть numStates на .

  • outputs — выходы для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы восьмеричных чисел. Размер матрицы должен быть numStates на .

Branch metric computation parameters

Decision type — тип решения декодера
Hard decision (по умолчанию) | Unquantized

Тип решения декодера, варианты для выбора:

  • Hard decision — декодер использует расстояние Хемминга для вычисления метрики ветвления. На входе должен быть вектор жестких значений решений, которые представляют собой 0 или 1. Тип данных на входе должен быть двойной точности, одинарной точности, логический или числовой.

  • Unquantized — декодер использует евклидово расстояние для вычисления метрики ветвления. Входные данные должны представлять собой вектор вещественных значений двойной или одинарной точности, неквантованных. Объект преобразовывает положительные значения на логические единицы, а отрицательные значения на логические нули.

Traceback decoding parameters

Traceback depth — глубина трассировки
34 (по умолчанию) | положительное целое число

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

Глубина трассировки влияет на задержку декодирования. Задержка декодирования — это количество нулевых символов, которые предшествуют первому декодированному символу на выходе.

В непрерывном режиме работы задержка декодирования равна количеству символов глубины трассировки.

По общим оценкам, типичное значение глубины трассировки примерно в два-три раза больше , где

  • — длина ограничений в коде;

  • ;

  • — количество входных символов;

  • — количество выходных символов;

  • — вектор шаблонов проколов.

Например, если применить эту общую оценку, то получатся такие приблизительные глубины трассировки:

  • Код со скоростью 1/2 имеет глубину трассировки .

  • Код со скоростью 2/3 имеет глубину трассировки .

  • Код со скоростью 3/4 имеет глубину трассировки .

  • Код со скоростью 5/6 имеет глубину трассировки .

Больше информации в 7.

Operation mode — метод завершения кодированного кадра
Continuous (по умолчанию)

Метод завершения кодированного кадра, заданный как одно из этих значений режима.

Continuous — блок сохраняет свою внутреннюю метрику состояния в конце каждого ввода для использования со следующим кадром. Каждый путь трассировки обрабатывается независимо. Этот режим приводит к задержке декодирования Traceback depth нулевых бит для сверточного кода со скоростью , где — количество символов сообщения, а — количество закодированных символов.

Подробнее

Размеры входных и выходных данных

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

Этот блок принимает входной сигнал в виде вектора-столбца с любым положительным целым значением для . Для входных сигналов переменного размера может изменяться во время моделирования. Работа блока регулируется параметром режима работы.

В этой таблице приведены типы данных, поддерживаемые для входных и выходных портов.

Порт Поддерживаемый тип данных

Вход

  • Число с плавающей точкой двойной точности.

  • Число с плавающей точкой одинарной точности.

  • Булево значение для режима Hard decision.

  • 8-, 16- и 32-битные целые числа со знаком для режима Hard decision.

  • 8-, 16- и 32-битные целые числа без знака для режима Hard decision.

Выход

  • Число с плавающей точкой двойной точности.

  • Число с плавающей точкой одинарной точности.

  • Булево значение.

  • 8-, 16- и 32-битные целые числа со знаком.

  • 8-, 16- и 32-битные целые числа без знака.

Входные данные и тип решения

Записи входного вектора представляют собой либо биполярные действительные, либо двоичные, либо целочисленные данные в зависимости от значения параметра Decision type.

Decision type Возможные записи на входе декодера Интерпретация величин Вычисление метрики ветвления

Unquantized

Вещественные числа.

Входные значения за пределами диапазона обрезаются до значений и соответственно.

Положительное вещественное число: логический ноль.

Отрицательное вещественное число: логическая единица.

Евклидово расстояние

Hard Decision

0, 1

0: логический ноль.

1: логическая единица.

Расстояние Хемминга

Библиография

[1] Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.

[2] Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. Applications of Communications Theory. New York: Plenum Press, 1992.

[3] Heller, J., and I. Jacobs. “Viterbi Decoding for Satellite and Space Communication.” IEEE Transactions on Communication Technology 19, no. 5 (October 1971): 835–48. https://doi.org/10.1109/TCOM.1971.1090711.

[4] Yasuda, Y., K. Kashiki, and Y. Hirata. “High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding.” IEEE Transactions on Communications 32, no. 3 (March 1984): 315–19. https://doi.org/10.1109/TCOM.1984.1096047.

[5] Haccoun, D., and G. Begin. “High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 37, no. 11 (November 1989): 1113–25. https://doi.org/10.1109/26.46505.

[6] Begin, G., D. Haccoun, and C. Paquin. “Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 38, no. 11 (November 1990): 1922–28. https://doi.org/10.1109/26.61470.

[7] Moision, B. "A Truncation Depth Rule of Thumb for Convolutional Codes." In Information Theory and Applications Workshop (January 27 2008-February 1 2008, San Diego, California), 555-557. New York: IEEE, 2008.