Convolutional Encoder
Кодирует двоичные данные с помощью схемы сверточного кодирования.
Тип: ConvolutionalEncoder
Путь в библиотеке:
|
Описание
Блок Convolutional Encoder кодирует входное двоичное сообщение, используя схему сверточного кодирования, заданную структурой решетки.
Значок блока и количество входных и выходных портов меняется в зависимости от значения параметров Specify initial state via input port и Output final state.
Порты
Выход
#
OUT_1
—
выходной сигнал
двоичный вектор-столбец
Details
Сверточное кодовое слово, возвращаемое в виде двоичного вектора-столбца.
На иконке блока этот порт не имеет названия.
Если кодер производит выходных битовых потоков (то есть может произвести возможных выходных символов), длина выходного вектора блока равна для некоторого положительного целого числа . Этот выход наследует тип данных от входа In.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
FSt
—
конечное состояние регистров
неотрицательное целое число
Details
Конечное состояние регистров кодера для каждого кадра, выводимого из блока, возвращаемое в виде неотрицательного целого числа.
Зависимости
Чтобы использовать этот порт, установите для параметра Operation mode одно из значений: Continuous, Truncated (reset every frame), или Reset on nonzero input via port и установите флажок Output final state.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Вход
#
In
—
входной сигнал
двоичный вектор-столбец
Details
Входное сообщение, заданное в виде двоичного вектора-столбца. Этот порт остается безымянным до тех пор, пока не будет включен второй порт ввода.
Кодер принимает только один входной битовый поток .
Пример: [1 1 0 1 0 0 1 1] задает сообщение в виде двоичного вектора строк с восемью элементами.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
ISt
—
начальное состояние регистров
неотрицательное целое число
Details
Начальное состояние регистров кодера для каждого кадра, поступающего в блок, заданное в виде неотрицательного целого числа.
Зависимости
Чтобы использовать этот порт, установите для параметра Operation mode значение Truncated (reset every frame) и установите флажок Specify initial state via input.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Параметры
Основные
#
Trellis structure —
описание сверточного кода через кодовую решетку
String
Details
Решетчатое описание сверточного кода, заданное в виде структуры решетки для кода со скоростью , где — это количество входных битовых потоков, а — количество выходных битовых потоков.
Для создания структуры решетки можно использовать функцию poly2trellis или задать ее вручную.
Структура решетки содержит следующие поля:
-
numInputSymbols— количество символов, поступающих на вход устройства кодирования, задается как целое число, равное , где K — количество входных битовых потоков. -
numOutputSymbols— количество символов, поступающих на выход устройства кодирования, задается как целое число, равное , где K — количество выходных битовых потоков. -
numStates— количество состояний в устройстве кодирования, заданное в виде степени 2. -
nextStates— следующие состояния для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы целых чисел. Размер матрицы должен бытьnumStatesна . -
outputs— выходы для всех комбинаций текущих состояний и текущих входов, заданные в виде матрицы восьмеричных чисел. Размер матрицы должен бытьnumStatesна .
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
#
Operation mode —
метод завершения кодированного кадра
Continuous | Truncated (reset every frame)
Details
Метод завершения кодированного кадра, заданный как одно из этих значений режима.
-
Continuous— блок сохраняет состояния кодера в конце каждого входа для использования в следующем кадре. -
Truncated (reset every frame)— блок обрабатывает каждый вход независимо. В начале каждого входного кадра состояния кодера сбрасываются в состояние «все нули» или, если установлен флажок Specify initial state via input port, в состояние, указанное портом ISt.
| Значения |
|
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Specify initial state via input port —
задать начальное состояние через входной порт
Logical
Details
Выберите этот параметр, чтобы добавить входной порт ISt в блок.
Зависимости
Чтобы использовать этот параметр, установите для параметра Operation mode значение Truncated (reset every frame).
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Output final state —
выводить конечное состояние
Logical
Details
Выберите этот параметр, чтобы добавить порт вывода FSt в блок.
Зависимости
Чтобы использовать этот параметр, установите для параметра Operation mode значение Continuous или Truncated (reset every frame).
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
#
Puncture code —
включение перфорирования сверточного кода
Logical
Details
Установите этот флажок, чтобы использовать параметр Puncture vector.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Нет |
# Puncture vector — шаблон перфорирования
Details
Шаблон перфорирования, заданный в виде вектора. Вектор перфорирования представляет собой шаблон из 1 и 0, где 0 обозначают биты, исключенные из выходных кодированных данных.
Длина вектора должна быть целым числом, кратным length(In), длине вектора входного сообщения.
Некоторые часто используемые шаблоны проколов для определенных скоростей и полиномов приведены в [3], [4], [5].
Зависимости
Чтобы использовать этот параметр, установите флажок Puncture code
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
Подробнее о сверточном кодировании
Сверточное кодирование — это кодирование с контролем ошибок, которое обладает памятью. В частности вычисления и кодированный выход зависят от текущего набора входных символов и от количества предыдущих входных символов, которое меняется в зависимости от конфигурации решетки.
Сверточный кодер выдает битов на каждые входных битов. В процессе моделирования входные данные могут быть кратны битам.
Используя структуру решетки, которая определяет набор генераторных полиномов, вы можете моделировать несистематические, систематические сверточные коды с прямой или систематической обратной связью.
Для декодирования выходного сигнала сверточного кода можно использовать:
-
Блок Viterbi Decoder — использует алгоритм Витерби с жестким и мягким декодированием.
-
Блок APP Decoder — использует апостериорный вероятностный декодер для мягкого декодирования выходных данных сверточных кодов.
Определение кодера
Чтобы определить сверточный кодер, используйте параметр Trellis structure. Структуру решетки можно задать с помощью вызова функции poly2trellis.
Например, чтобы использовать кодер с длиной ограничения 7, полиномами генератора кода 171 и 133 (в восьмеричных числах), задайте для параметра Trellis structure значение poly2trellis(7,[171 133]).
Литература
-
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.
-
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.