Viterbi Decoder
Декодирует сверточно кодированные данные с помощью алгоритма Витерби.
Тип: ViterbiDecoder
Путь в библиотеке:
|
Описание
Блок Viterbi Decoder декодирует входные символы, полученные сверточным кодированием, для получения двоичных выходных символов с помощью алгоритма Витерби. Структура решетки задает схему сверточного кодирования.
Порты
Вход
#
IN_1
—
входное слово, полученное сверточным кодированием
вектор-столбец
Details
Входное слово, полученное сверточным кодированием, заданное в виде вектора-столбца. Если декодер принимает входных битовых потоков (то есть может принимать возможных входных символов), длина входного вектора блока равна для некоторого положительного целого числа .
Дополнительную информацию можно посмотреть в разделах Размеры входных и выходных данных, Входные данные и тип решения, а также в описании параметра Operation mode.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Выход
#
OUT_1
—
выходное сообщение
двоичный вектор-столбец
Details
Выходное сообщение, возвращаемое в виде двоичного вектора-столбца. Если декодер выдает выходных битовых потоков (то есть может выдать возможных выходных символов), длина выходного вектора блока равна для некоторого положительного целого числа .
Дополнительную информацию можно посмотреть в разделе Размеры входных и выходных данных.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Параметры
Encoded data parameters
#
Trellis structure —
описание сверточного кода через кодовую решетку
String
Details
Решетчатое описание сверточного кода, заданное в виде структуры решетки для кода со скоростью , где — это количество входных битовых потоков, а — количество выходных битовых потоков.
Для создания структуры решетки можно использовать функцию poly2trellis или задать ее вручную.
Структура решетки содержит следующие поля:
-
numInputSymbols— количество символов, поступающих на вход устройства кодирования, задается как целое число, равное , где K — количество входных битовых потоков. -
numOutputSymbols— количество символов, поступающих на выход устройства кодирования, задается как целое число, равное , где K — количество выходных битовых потоков. -
numStates— количество состояний в устройстве кодирования, заданное в виде степени 2. -
nextStates— следующие состояния для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы целых чисел. Размер матрицы должен бытьnumStatesна . -
outputs— выходы для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы восьмеричных чисел. Размер матрицы должен бытьnumStatesна .
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
Branch metric computation parameters
#
Decision type —
тип решения декодера
Unquantized | Hard decision
Details
Тип решения декодера, варианты для выбора:
-
Hard decision— декодер использует расстояние Хемминга для вычисления метрики ветвления. На входе должен быть вектор жестких значений решений, которые представляют собой0или1. Тип данных на входе должен быть двойной точности, одинарной точности, логический или числовой. -
Unquantized— декодер использует евклидово расстояние для вычисления метрики ветвления. Входные данные должны представлять собой вектор вещественных значений двойной или одинарной точности, неквантованных. Объект преобразовывает положительные значения на логические единицы, а отрицательные значения на логические нули.
| Значения |
|
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
Traceback decoding parameters
#
Traceback depth —
глубина трассировки
Int64 integer
Details
Глубина трассировки задается в виде целого числа, которое указывает количество ветвей решетки, используемых для построения каждого пути трассировки.
Глубина трассировки влияет на задержку декодирования. Задержка декодирования — это количество нулевых символов, которые предшествуют первому декодированному символу на выходе.
В непрерывном режиме работы задержка декодирования равна количеству символов глубины трассировки.
По общим оценкам, типичное значение глубины трассировки примерно в два-три раза больше , где
-
— длина ограничений в коде;
-
;
-
— количество входных символов;
-
— количество выходных символов;
-
— вектор шаблонов проколов.
Например, если применить эту общую оценку, то получатся такие приблизительные глубины трассировки:
-
Код со скоростью
1/2имеет глубину трассировки . -
Код со скоростью
2/3имеет глубину трассировки . -
Код со скоростью
3/4имеет глубину трассировки . -
Код со скоростью
5/6имеет глубину трассировки .
Больше информации в [7].
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
#
Operation mode —
метод завершения кодированного кадра
Continuous | Truncated
Details
Метод завершения кодированного кадра, заданный как одно из этих значений режима:
-
Continuous— блок сохраняет свою внутреннюю метрику состояния в конце каждого ввода для использования со следующим кадром. Каждый путь трассировки обрабатывается независимо. Этот режим приводит к задержке декодирования Traceback depth нулевых бит для сверточного кода со скоростью , где — количество символов сообщения, а — количество закодированных символов. -
Truncated— блок обрабатывает каждый вход независимо. Путь трассировки начинается с состояния с наилучшей метрикой и всегда заканчивается в состоянии «все нули». Этот режим подходит, если для соответствующего блока Convolutional Encoder для параметра Operation mode установлено значениеTruncated (reset every frame). В этом режиме нет задержки вывода.
Состояние декодера сбрасывается на каждом шаге входного времени, если блок выводит последовательности, длина которых меняется в процессе моделирования, и установлен режим работы Truncated.
Если входной сигнал содержит только один символ, используйте режим Continuous.
| Значения |
|
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
Дополнительно
Размеры входных и выходных данных
Details
Если сверточный код использует алфавит из возможных символов, то длина входного вектора должна быть для некоторого положительного целого числа . Аналогично, если декодированные данные используют алфавит из возможных выходных символов, длина выходного вектора будет .
Этот блок принимает входной сигнал в виде вектора-столбца с любым положительным целым значением для . Для входных сигналов переменного размера может изменяться во время моделирования. Работа блока регулируется параметром режима работы.
В этой таблице приведены типы данных, поддерживаемые для входных и выходных портов.
| Порт | Поддерживаемый тип данных |
|---|---|
Вход |
|
Выход |
|
Входные данные и тип решения
Details
Записи входного вектора представляют собой либо биполярные действительные, либо двоичные, либо целочисленные данные в зависимости от значения параметра Decision type.
| Decision type | Возможные записи на входе декодера | Интерпретация величин | Вычисление метрики ветвления |
|---|---|---|---|
|
Вещественные числа. Входные значения за пределами диапазона обрезаются до значений и соответственно. |
Положительное вещественное число: логический ноль. Отрицательное вещественное число: логическая единица. |
Евклидово расстояние |
|
|
: логический ноль. : логическая единица. |
Расстояние Хемминга |
Литература
-
Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.
-
Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. Applications of Communications Theory. New York: Plenum Press, 1992.
-
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.
-
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.
-
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.
-
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.
-
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.