Эта модель показывает, как использовать Convolutional Encoder
и Viterbi Decoder
блоки для симуляции сверточного кода с хвостовым кусочком. Завершение решетки сверточного кода является ключевым параметром в эффективности кода для передачи на основе пакетов. Сверточное кодирование с подкалыванием хвоста является способом резьбового завершения, который избегает потерь скорости, вызванных нулевым завершением за счет более сложного декодера [1].
Пример использует специальный субоптимальный способ декодирования для декодирования с последующим укусом и показывает, как кодирование достигается для feedforward энкодера. Сравнения эффективности Bit-Error-Rate производятся с нулевым случаем для стандартного сверточного кода.
Кодирование с последующим укусом гарантирует, что начальное состояние энкодера совпадает с конечным состоянием (и что это значение состояния не обязательно должно быть полностью нулевым состоянием). Для 1/n скорости
Feedforward энкодера это достигается путем инициализации m
элементы памяти энкодера с последней m
информационные биты блока данных длины L
, и игнорируя выход. Все L
затем биты вводятся в энкодер и полученное L*n
выходные биты используются в качестве кодового слова.
Это моделируется Tail-biting Convolutional Encoder
подсистема в следующей модели, commtailbiting.slx:
Для длины блока 100 бит подсистема энкодера выводит 200 биты для передающего кодера со скоростью 1/2 с 6 элементами памяти. The Display
блок в подсистеме указывает, что начальное и конечное состояния идентичны для каждого блока обработанных данных.
Блоки Convolutional Encoder используют настройку «Усеченный (сброс каждой системы координат)» для параметра Operation mode, чтобы указать блочную обработку.
Для получения информации о том, как добиться кодирования хвостового укуса, см. раздел «Настройка кодирования с использованием энкодеров обратной связи» [2].
Для сравнения, метод обрыв нулевого хвоста добавляет m
нули к блоку данных, чтобы убедиться, что энкодер feedforward начинается и заканчивается в нулевом состоянии для каждого блока. Это приводит к потере скорости из-за дополнительных хвостовых бит (то есть неинформационных бит), которые передаются.
Ссылаясь на следующую модель, commterminatedcnv.slx,
заметим, что при той же длине блока, что и 100 битов, выход энкодера теперь включает в себя биты с нулевым концом, что приводит к фактической скорости кода 100/212, которая меньше скорости, достигнутой кодером с конечным битингом.
The Convolutional Encoder
блок использует настройку «Terminate trellis путем добавления бит» для параметра Operation mode для этого случая, которая также работает и для энкодеров обратной связи.
Декодер с максимальным правдоподобием включает в себя определение наилучшего пути в шпалере под ограничением, что он начинается и заканчивается в том же состоянии. Способ реализовать это - запустить M
параллельные алгоритмы Viterbi, где M
- количество состояний в шпалере и выбор декодированных бит на основе алгоритма Viterbi, который дает лучшую метрику. Однако это делает декодирование M
в разы сложнее, чем для кодирования с нулевым хвостом.
Этот пример использует неоптимальную схему ad-hoc по [3], которая намного проще, чем максимальный подход правдоподобия и, тем не менее, работает сопоставимо. Схема основана на предпосылке, что штифт для укуса хвоста может считаться круглым, когда он начинается и заканчивается в том же состоянии. Это позволяет продолжить алгоритм Viterbi после конца блока путем циклического повторения принятого кодового слова. В результате модель повторяет полученное кодовое слово от демодулятора и запускает этот набор данных через декодер Viterbi, выполняя отслеживание из наилучшего состояния в конце повторенного набора данных. Только фрагмент декодированных бит из середины выбирают в качестве декодированных бит сообщения.
Параметр Operation mode для блока Viterbi Decoder устанавливается в «Усечение» для случая укуса хвоста, в то время как он устанавливается в «Завершено» для случая с нулевым хвостом.
Пример сравнивает эффективность Bit-error-rate двух способов завершения для декодирования с жестким решением в канале AWGN в области значений значений Eb/No. Обратите внимание, что две модели установлены так, что они могут быть моделированы в области значений значений Eb/No с помощью BERTool.
Как показано на рисунке, схема декодирования с несовпадающим укусом выполняет сравнительно близкую к нижней ограниченной эффективности сверточного кода с нулевым хвостом для выбранных параметров.
После загрузки модели инициализируют набор переменных, которые управляют симуляцией. Они включают длину блока, Eb/No и максимальное количество моделируемых ошибок и бит. Рекомендуется играть со значениями этих переменных, чтобы увидеть их эффекты на эффективность ссылки.
Обратите внимание, что эффективность схемы декодирования ad-hoc чувствительна к используемой длине блока. Кроме того, эффективность кода зависит от длины декодирования traceback, используемой для алгоритма Viterbi.
H. Ma and J. Wolf, «On Tail Biting convolutional codes», IEEE Transactions on Communications, Vol. COM-34, No. 2, Feb. 1986, pp. 104-11.
C. Weiss, C. Bettstetter, S. Riedel, «Code Construction and Decoding of Parallel Concatenated Tail-Biting Codes», IEEE Transactions on Information Theory, vol. 47, No1, Jan. 2001, pp. 366-38.
Ю. Э. Ван и Р. Рамеш: "Укусить или не укусить? Исследование Tail Bits vs. Tail-Biting, "Personal, Indoor and Mobile Radio Communications, 1996. PIMRC '96, седьмой Международный симпозиум IEEE ®, том 2, 15-18 октября 1996 года, страницы (ы): 317 - 321.