Эта модель показывает, как использовать Convolutional Encoder
и Viterbi Decoder
блоки, чтобы симулировать кусающий хвост сверточный код. Завершение решетки сверточного кода является основным параметром в производительности кода для основанных на пакете коммуникаций. Кусающее хвост сверточное кодирование является методом завершения решетки, которое избегает потери уровня, понесенной завершением нулевого хвоста за счет более комплексного декодера [1].
Пример использует оперативный субоптимальный метод декодирования в кусающем хвост декодировании и показывает, как кодирование достигается для энкодера feedforward. Сравнения производительности частоты ошибок по битам сделаны со случаем с нулевым хвостом для стандартного сверточного кода.
Кусающее хвост кодирование гарантирует, что начальное состояние энкодера эквивалентно, это - конечное состояние (и что это значение состояния должно не обязательно быть все-нулевым состоянием). Для уровня 1/n
энкодер feedforward, это достигается путем инициализации m
элементы памяти энкодера с последним m
информационные биты блока данных длины L
, и игнорирование выхода. Весь L
биты затем вводятся к энкодеру и результирующему L*n
выходные биты используются в качестве кодовой комбинации.
Это моделируется Tail-biting Convolutional Encoder
подсистема в следующей модели, commtailbiting.slx:
Для длины блока 100 битов, подсистема энкодера выходные параметры 200 битов для уровня 1/2 энкодер feedforward с 6 элементами памяти. Display
блокируйтесь в подсистеме, указывает, что начальные и конечные состояния идентичны для каждого блока обработанных данных.
Сверточные блоки Энкодера используют установку "Truncated (reset every frame)" в параметре Режима работы, чтобы указать на мудрую блоком обработку.
Обратитесь к Tailbiting, Кодирующему Используя Энкодеры Обратной связи согласно [2] о том, как достигнуть кодирования кусания хвоста для энкодера обратной связи.
В сравнении метод завершения нулевого хвоста добавляет m
нули к блоку данных, чтобы гарантировать энкодер feedforward начинают с и заканчиваются во все-нулевом состоянии для каждого блока. Это подвергается потере уровня из-за дополнительных битов хвоста (т.е. неинформационные биты), которые передаются.
Что касается следующей модели, commterminatedcnv.slx,
заметьте, что для той же длины блока 100 битов, энкодер вывел, теперь включает биты нулевого хвоста, приводящие к фактическому уровню кода 100/212, который меньше что достигнут кусающим хвост энкодером.
Convolutional Encoder
блок использует установку "Terminate trellis by appending bits" в параметре Режима работы для этого случая, который работает на энкодеры обратной связи также.
Декодер кусания хвоста наибольшего правдоподобия вовлекает определение лучшего пути в решетку при ограничении что это начала и концы в том же состоянии. Способ реализовать это состоит в том, чтобы запустить M
параллельные алгоритмы Viterbi, где M
количество состояний в решетке, и выберите декодируемые биты на основе алгоритма Viterbi, который дает лучшую метрику. Однако это делает декодирование M
времена, более комплексные, чем это для кодирования с нулевым хвостом.
Этот пример использует оперативную подоптимальную схему согласно [3], который намного более прост, чем наибольшее правдоподобие приближается, и все же выполняет сравнительно. Схема основана на предпосылке, что кусающая хвост решетка может быть рассмотрена круговой как ее начала и концы в том же состоянии. Это позволяет алгоритму Viterbi быть продолженным мимо конца блока путем повторения полученной циркулярной кодовой комбинации. В результате модель повторяет полученную кодовую комбинацию от демодулятора и запускает этот набор данных через Декодер Витерби, выполняя traceback от лучшего состояния в конце повторного набора данных. Только фрагмент декодируемых битов с середины выбран как декодируемые биты сообщения.
Параметр Режима работы для блока Viterbi Decoder устанавливается, чтобы быть "Усеченным" для кусающего хвост случая, в то время как это установлено в "Отключенный" для случая с нулевым хвостом.
Пример сравнивает производительность Частоты ошибок по битам двух методов завершения для декодирования трудного решения в канале AWGN в области значений значений Eb/No. Обратите внимание на то, что эти две модели установлены таким образом, что они могут быть симулированы в области значений значений Eb/No с помощью BERTool.
Когда рисунок показывает, что оперативная схема декодирования кусания хвоста выполняет сравнительно близко к ниже ограниченной производительности сверточного кода с нулевым хвостом для выбранных параметров.
После загрузки модели инициализируют набор переменных, которые управляют симуляцией. Они включают длину блока, Eb/No и максимальное количество ошибок и симулированных битов. Вы поощряетесь вопроизвести со значениями этих переменных, чтобы видеть их эффекты на производительности ссылки.
Обратите внимание на то, что оперативная производительность схемы декодирования чувствительна к используемой длине блока. Также производительность кода зависит от traceback декодирование длины, используемой в алгоритме Viterbi.
H. Мама и Дж. Уолф, "На Хвосте, Кусающем сверточные коды", Транзакции IEEE на Коммуникациях, Издании COM-34, № 2, февраль 1986, стр 104-11.
C. Weiss, К. Беттстеттер, С. Ридель, "Конструкция кода и Декодирование Параллельных Конкатенированных Кусающих Хвост Кодов", Транзакции IEEE на Теории информации, издании 47, № 1, январь 2001, стр 366-386.
И. Э. Ван и Р. Рэмеш, "Чтобы Укусить или не Укусить? Исследование Битов Хвоста по сравнению с Кусанием хвоста", Коммуникации Персональной, Внутренней и Рации, 1996. PIMRC '96, Седьмой Симпозиум IEEE® International, Объем 2, 15-18 октября 1996, Страница (страницы):317 - 321.