Создайте сверточный код из двоичных данных
Сверточная сублибрария Выявления ошибок и Коррекции
Блок Сверточного Энкодера кодирует последовательность двоичных входных векторов, чтобы создать последовательность двоичных выходных векторов. Этот блок может обрабатывать несколько символов за раз.
Этот блок может принимать входы, которые варьируются в длине во время симуляции. Для получения дополнительной информации о сигналах переменного размера смотрите Основы сигнала переменного размера (Simulink).
Если энкодер принимает k входных битовых потоков (то есть может получить 2k возможные входные символы), длина входного вектора блока L * k для некоторого положительного целого числа L. Точно так же, если энкодер производит n выходных битовых потоков (то есть может произвести 2n возможные выходные символы), длина выходного вектора блока является L * n.
Этот блок принимает вектор-столбец входной сигнал с любым положительным целым числом для L. Для входов переменного размера L может варьироваться во время симуляции. Операция блока определяется параметром Operation mode.
Для его входов и выходов для портов данных, блок поддерживает double
, single
, boolean
, int8
, uint8
, int16
, uint16
, int32
, uint32
, и ufix1
. Типы данных портов наследуются от сигналов, которые управляют блоком. Входной порт сброса поддерживает double
и boolean
набранные сигналы.
Чтобы задать сверточный энкодер, используйте параметр Trellis structure. Этот параметр является MATLAB® структура, формат которой описан в Trellis Description of a Convolutional Code. Вы можете использовать это поле параметра двумя способами:
Если в рабочем пространстве MATLAB есть переменная, содержащая структуру шпалеры, введите ее имя в параметр Trellis structure. Этот способ предпочтителен, потому что он вызывает Simulink® тратить меньше времени на обновление схемы в начале каждой симуляции по сравнению с использованием, описанным далее.
Если вы хотите задать энкодер, используя его ограниченную длину, полиномы генератора и, возможно, полиномы связи с обратной связью, используйте poly2trellis
команда в параметре Trellis structure. Для примера, чтобы использовать энкодер с ограничительной длиной 7, полиномами генератора кода 171 и 133 (в октальных числах) и соединением обратной связи 171 (в восьмиугольнике), установите параметр Trellis structure на
poly2trellis(7,[171 133],171)
Регистры энкодера начинаются в состоянии «все нули». Установите параметр Operation mode равным Reset on nonzero input via port
чтобы сбросить все регистры энкодера в состояние «все нули» во время симуляции. Этот выбор открывает второй входной порт, маркированный Rst
, который принимает скалярное значение входного сигнала. Когда входной сигнал ненулевой, блок сбрасывается перед обработкой данных в первом входном порте. Чтобы сбросить блок после обработки данных на первом входном порте, выберите Delay reset action to next time step.
Структура MATLAB, которая содержит описание решетки сверточного энкодера.
В Continuous
В режиме блок сохраняет состояния энкодера в конце каждого входа для использования со следующей системой координат.
В Truncated (reset every frame)
mode, блок обрабатывает каждый вход независимо. Состояния энкодера сбрасываются в состояние «все нули» в начале каждого входа.
Примечание
Когда этот блок выводит последовательности, которые варьируются в длине во время симуляции, и вы устанавливаете Operation mode равной Truncated (reset every frame)
или Terminate trellis by appending bits
состояние блока сбрасывается при каждом входном временном шаге.
В Terminate trellis by appending bits
mode, блок обрабатывает каждый вход независимо. Для каждого входного кадра дополнительные биты используются, чтобы установить состояния энкодера в состояние «все нули» в конце системы координат. Длина выхода задается как , где x количество входа бит, и (или, в случае нескольких длин ограничений, s = sum(ConstraintLength(i)-1)
).
Примечание
Этот блок работает для случаев , где она имеет те же значения для длин ограничений в каждом входном потоке (например, длины ограничений [2 2] или [7 7] будут работать, но [5 4] не будут).
В Reset on nonzero input via port
mode, блок имеет дополнительный входной порт, маркированный Rst
. Когда Rst
вход ненулевый, энкодер сбрасывается в состояние «все нули».
Когда вы выбираете Delay reset action to next time step, блок Convolutional Encoder сбрасывается после вычисления закодированных данных. Этот флажок появляется только, когда вы устанавливаете параметр Operation mode равным Reset on nonzero input via port
.
Задержка в действии сброса позволяет блоку поддерживать генерацию HDL-кода. В порядок генерации HDL-кода необходимо иметь лицензию HDL Coder™.
Когда вы выбираете Output final state, второй сигнал порта выхода задает состояние выхода для блока. Выходной сигнал является скалярным, целочисленным значением. Можно выбрать Output final state для всех режимов работы, кроме Terminate trellis by appending bits
.
Когда вы выбираете Specify initial state via input port второй входной сигнал порта задает начальное состояние для каждой системы координат в блоке. Входной сигнал должен быть скалярным, целым значением. Specify initial state via input port появляется только в Truncated
операция.
При выборе этой опции откроется Puncture vector поля.
Вектор, используемый для прокола закодированных данных. Вектор прокола является шаблоном 1
s и 0
s, где 0
s указывает проколотые биты. Это поле появляется при выборе Punctured code.
Для некоторых обычно используемых шаблонов пункции для определенных скоростей и полиномов, смотрите последние три ссылки, перечисленные на этой странице.
[1] Clark, George C. Jr. and J. Bibb Cain, Error-Correction Coding for Digital Communications, New York, Plenum Press, 1981.
[2] Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein, Data Communications Principles, New York, Plenum, 1992.
[3] Yasuda, Y., et. al., «High rate procected convolutional codes for soft decoding Viterbi decoding», IEEE Transactions on Communications, Vol. COM-32, No. 3, pp 315-319, March 1984.
[4] Haccoun, D. and Begin, G., «High-rate puctured convolutional codes for Viterbi and Sequential decoding», IEEE Transactions on Communications, Vol. 37, No11, pp 1113-1125, Nov. 1989.
[5] Begin, G., et.al., «Дальнейшие результаты на высокоскоростных проколотых сверточных кодах для Viterbi и последовательного декодирования», Транзакции IEEE по коммуникациям, том 38, № 11, стр. 1922-1928, ноябрь 1990.