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 нулевых бит для сверточного кода со скоростью , где — количество символов сообщения, а — количество закодированных символов.
Подробнее
Размеры входных и выходных данных
Если сверточный код использует алфавит из возможных символов, то длина входного вектора должна быть для некоторого положительного целого числа . Аналогично, если декодированные данные используют алфавит из возможных выходных символов, длина выходного вектора будет .
Этот блок принимает входной сигнал в виде вектора-столбца с любым положительным целым значением для . Для входных сигналов переменного размера может изменяться во время моделирования. Работа блока регулируется параметром режима работы.
В этой таблице приведены типы данных, поддерживаемые для входных и выходных портов.
Порт | Поддерживаемый тип данных |
---|---|
Вход |
|
Выход |
|
Входные данные и тип решения
Записи входного вектора представляют собой либо биполярные действительные, либо двоичные, либо целочисленные данные в зависимости от значения параметра Decision type.
Decision type | Возможные записи на входе декодера | Интерпретация величин | Вычисление метрики ветвления |
---|---|---|---|
|
Вещественные числа. Входные значения за пределами диапазона обрезаются до значений и соответственно. |
Положительное вещественное число: логический ноль. Отрицательное вещественное число: логическая единица. |
Евклидово расстояние |
|
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.