exponenta event banner

Декодер Витерби

Декодировать сверточно закодированные данные с помощью алгоритма Витерби

Библиотека

Сверточный поддиапазон обнаружения и исправления ошибок

  • Viterbi Decoder block

Описание

Блок декодера Витерби декодирует входные символы для получения двоичных выходных символов. Этот блок может обрабатывать несколько символов одновременно для повышения производительности.

Этот блок может выводить последовательности, которые изменяются по длине во время моделирования. Дополнительные сведения о последовательностях, изменяющихся по длине, или сигналах переменного размера см. в разделе Основы сигналов переменного размера (Simulink).

Размеры ввода и вывода

Если сверточный код использует алфавит из 2n возможных символов, длина входного вектора этого блока равна L * n для некоторого положительного целого L. Аналогично, если декодированные данные используют алфавит из 2k возможных выходных символов, длина выходного вектора этого блока равна L * k.

Этот блок принимает входной сигнал вектора столбца с любым положительным целым значением для L. Для входов переменного размера L может изменяться во время моделирования. Работа блока регулируется параметром режима работы.

Для получения информации о типах данных, поддерживаемых каждым блочным портом, см. таблицу Поддерживаемые типы данных на этой странице.

Входные значения и типы решений

Записи входного вектора являются биполярными, двоичными или целочисленными данными, в зависимости от параметра типа решения.

Параметр типа решенияВозможные записи на входе декодераИнтерпретация ценностейРасчет метрики ответвления

Unquantized

Вещественные числа

Положительный вещественный: логический ноль

Отрицательный вещественный: логический

Евклидово расстояние

Hard Decision

0, 1

0: логический ноль

1: логический

Расстояние хэмминга

Soft Decision

Целые числа от 0 до 2b-1, где b - параметр Число битов мягкого решения.

0: наиболее уверенное решение для логического нуля

2b-1: наиболее уверенное решение для логического

Другие ценности представляют собой менее уверенные решения.

Расстояние хэмминга

Чтобы проиллюстрировать ситуацию мягкого решения более явно, в следующей таблице перечислены интерпретации значений для 3-битных мягких решений.

Входное значениеИнтерпретация
0 Самый уверенный ноль
1 Второй по уверенности ноль
2 Третий по уверенности ноль
3 Наименее уверенный ноль
4 Наименее уверенный
5 Третий по уверенности
6 Второй по уверенности
7 Самый уверенный

Режимы работы входов

Блок декодера Витерби имеет три возможных способа перехода между последовательными входными кадрами. Параметр Operation mode определяет метод, используемый блоком:

  • В Continuous в режиме блок сохраняет свою внутреннюю метрику состояния в конце каждого входа для использования со следующим кадром. Каждый путь отслеживания обрабатывается независимо.

  • В Truncated в режиме блок обрабатывает каждый вход независимо. Путь отслеживания начинается в состоянии с лучшей метрикой и всегда заканчивается в состоянии всех нулей. Этот режим подходит, когда соответствующий блок сверточного кодера имеет режим работы, равный Truncated (reset every frame).

  • В Terminated в режиме блок обрабатывает каждый вход независимо, и путь отслеживания всегда начинается и заканчивается в состоянии «все нули». Этот режим подходит, когда некодированный сигнал сообщения (то есть вход в соответствующий блок сверточного кодера) имеет достаточно нулей в конце каждого входа для заполнения всех регистров памяти кодера прямой передачи. Если кодировщик имеет k входные потоки и вектор длины ограничения constr (используя описание полинома), «достаточно» означает k*max(constr-1). Для кодеров обратной связи этот режим подходит, если соответствующий блок сверточного кодера имеет режим работы, установленный в Terminate trellis by appending bits.

Примечание

Когда этот блок выводит последовательности, варьирующиеся по длине во время моделирования, и устанавливается режим «Работа» Truncated или Terminatedсостояние блока сбрасывается на каждом шаге времени ввода.

Используйте Continuous режим, когда входной сигнал содержит только один символ.

Сброс порта

Порт сброса используется только в том случае, если для параметра Operation mode установлено значение Continuous. При выборе Enable reset input port блок получает дополнительный входной порт с меткой Rst. Когда Rst вход ненулевой, декодер возвращается в исходное состояние, конфигурируя свою внутреннюю память следующим образом:

  • Устанавливает нулевую метрику состояния «все нули».

  • Устанавливает максимальное значение для всех других метрик состояния.

  • Устанавливает нулевое значение памяти отслеживания.

Использование порта сброса в этом блоке аналогично установке режима работы в блоке сверточного кодера в значение Reset on nonzero input via port.

Порт сброса поддерживает double или boolean набранные сигналы.

Блок-схема сигнала с фиксированной точкой

Существует три основных компонента алгоритма декодирования Витерби. Они представляют собой вычисления метрики ветвления (BMC), добавление-сравнение и выбор (ACS) и декодирование отслеживания (TBD). Следующая диаграмма иллюстрирует поток сигналов для k/n кода скорости.

В качестве примера диаграммы BMC поток сигнала со скоростью 1/2, nsdec = 3 будет следующим.

WL=nsdec+n−1n=2⇒WL=4

Компонент ACS в общем случае показан на следующей схеме.

Где WL2 задается пользователем на маске.

На приведенных выше блок-схемах inNT, bMetNT, stMetNT и outNT numerictype Объекты (Fixed-Point Designer) и bMetFIMATH и stMetFIMATH fimath (Fixed-Point Designer) объекты.

Примеры шаблона прокола

Для некоторых часто используемых образцов прокола для определенных скоростей и многочленов см. последние три ссылки.

Примеры декодирования Витерби с фиксированной точкой

Примеры декодирования Витерби с жестким решением с фиксированной точкой и декодирования Витерби с мягким решением с фиксированной точкой конфигурируют блок декодера Витерби для использования обработки с фиксированной точкой для сверточного декодирования с аппаратным и мягким решением.

В примерах выделяются атрибуты моделирования с фиксированной точкой декодера Витерби с использованием привычного макета.

Обзор моделирования

Два моделирования имеют сходную структуру и имеют большинство общих параметров. Источник данных создает случайную двоичную последовательность, которая сверточно кодируется, модулируется BPSK и проходит через канал AWGN.

Сверточный кодер сконфигурирован как кодер скорости 1/2. Для каждых 2 битов кодер добавляет еще 2 избыточных бита. Чтобы учесть это и добавить правильное количество шума, параметр Eb/No (dB) блока AWGN фактически уменьшается вдвое путем вычитания 10 * log10 (2).

В случае жесткого решения демодулятор BPSK формирует жесткие решения в приемнике, которые передаются в декодер.

Для случая мягкого решения демодулятор BPSK производит мягкие решения в приемнике, используя логарифмическое отношение правдоподобия. Эти мягкие выходы квантуются по 3 бита и передаются в декодер.

После декодирования имитация сравнивает принятые декодированные символы с исходными переданными символами, чтобы вычислить частоту битовых ошибок. Моделирование заканчивается после обработки 100 битовых ошибок или 1e6 битов, в зависимости от того, что наступит раньше.

Моделирование с фиксированной точкой

Моделирование с фиксированной точкой позволяет моделировать истинные биты, которые учитывают аппаратные аспекты реализации и динамический диапазон данных/параметров. Например, если целевым аппаратным средством является микропроцессор DSP, некоторые из возможных длин слов составляют 8, 16 или 32 бита, тогда как если целевым аппаратным средством является ASIC или FPGA, то выбор длины слова может быть более гибким.

Чтобы разрешить декодирование Витерби с фиксированной точкой, вход блока должен иметь тип ufix1 (целое число без знака длины слова 1) для принятия жестких решений. На основе этого ввода (либо 0, либо 1) вычисляются метрики внутренней ветви с использованием целого числа без знака длины слова = (количество выходных битов), как определено решетчатой структурой (что равно 2 для примера жесткого решения).

Для мягких решений вход блока должен быть типа ufixN (целое число без знака длины слова N), где N - количество битов мягкого решения, чтобы разрешить декодирование с фиксированной точкой. Входные данные блока должны быть целыми числами в диапазоне от 0 до 2N-1. Внутренние метрики ветви вычисляются с использованием целого числа без знака длины слова = (N + число выходных битов - 1), как определено решетчатой структурой (которая равна 4 для примера мягкого решения).

Длина слова метрики состояния задается пользователем и обычно должна быть больше, чем уже рассчитанная длина слова метрики ветви. Это значение можно настроить как наиболее подходящее (на основе аппаратных средств и/или данных) путем просмотра зарегистрированных данных для системы.

Включите ведение журнала, выбрав «Приложения» > «Инструмент с фиксированной точкой». В графическом интерфейсе пользователя Fixed-Point Setting установите режим Fixed-point instruments в значение Minimums, maximums and overflowsи повторно запустите моделирование. Если вы видите переполнения, это означает, что данные не умещаются в выбранном контейнере. Можно либо увеличить размер слова (если это разрешено оборудованием), либо попытаться масштабировать данные перед их обработкой. На основе минимального и максимального значений данных можно также определить, имеет ли выбранный контейнер соответствующий размер.

Попробуйте выполнить моделирование с различными значениями длины слова метрики состояния, чтобы получить представление о его влиянии на алгоритм. Необходимо укоротить параметр до подходящего значения, которое не оказывает неблагоприятного влияния на результаты BER.

Сравнение с данными с двойной точностью

Чтобы запустить ту же модель с данными двойной точности, выберите «Приложения» > «Инструмент фиксированной точки». В графическом интерфейсе Fixed-Point Tool выберите переопределение типа данных для Double. Этот выбор переопределяет все параметры типа данных во всех блоках, чтобы использовать двойную точность. Для блока декодера Витерби, так как для параметра Output type было установлено значение Boolean, этот параметр также должен иметь значение double.

При моделировании модели обратите внимание, что результаты BER с двойной точностью и фиксированной точкой одинаковы. Они одинаковы, поскольку параметры фиксированной точки для модели были выбраны, чтобы избежать потери точности при сохранении максимальной эффективности.

Сравнение жесткого и мягкого декодирования

Две модели настроены на выполнение из BERTool для генерации кривой моделирования, которая сравнивает производительность BER для декодирования с жестким решением и с мягким решением.

Чтобы сгенерировать результаты моделирования для декодирования Viterbi с жестким решением с фиксированной точкой, выполните следующие действия.

  1. Откройте пример декодирования Viterbi с жестким решением с фиксированной точкой, чтобы получить модель simulink на пути.

  2. Напечатать bertool в командной строке MATLAB.

  3. Перейдите в область Монте-Карло.

  4. Установите диапазон Eb/No в значение 2:5.

  5. Задайте для расчетной модели значение cm_viterbi_harddec_fixpt. Убедитесь, что модель находится на пути.

  6. Задайте для имени переменной BER значение BER.

  7. Задайте для параметра Количество ошибок значение 100и число битов для 1e6.

  8. Нажмите кнопку Выполнить (Run), чтобы создать график.

Чтобы сгенерировать результаты моделирования для декодирования Viterbi с мягким решением с фиксированной точкой, откройте пример, чтобы получить модель simulink на пути, измените изменение модели на cm_viterbi_softdec_fixptи нажмите кнопку «Выполнить».

Обратите внимание, что, как и ожидалось, 3-битное декодирование с мягким решением лучше, чем декодирование с жестким решением, примерно на уровне 1,7 дБ, а не 2 дБ, как обычно цитируется. Разница в ожидаемых результатах может быть приписана несовершенному квантованию мягких выходных сигналов демодулятора.

Параметры

Решетчатая конструкция

Структура MATLAB ®, содержащая решетчатое описание сверточного кодера. Используйте то же самое значение здесь и в соответствующем блоке сверточного кодера.

Проколотый код

Установите этот флажок, чтобы указать проколотый входной код. Появится поле Проколотый код.

Проколотый вектор

Вектор шаблона постоянной пункции, используемый в передатчике (кодере). Вектор прокола представляет собой рисунок 1s и 0с. 0s указывает проколотые биты. При выборе «Проколотый код» появляется поле «Проколотый вектор».

Включить входной порт стирания

Если этот флажок установлен, декодер открывает входной порт с меткой Era. Через этот порт можно задать шаблон вектора стирания 1s и 0s, где 1s указывает стертые биты.

Для этих стираний во входящем потоке данных декодер не обновляет метрику ветви. Ширина и время выборки портов стирания и входных данных должны быть одинаковыми. Входной порт стирания может иметь тип данных double или Boolean.

Тип решения

Определяет использование Unquantized, Hard Decision, или Soft Decision для расчета метрики ветви.

  • Unquantized решение использует евклидово расстояние для вычисления метрик ветви.

  • Soft Decision и Hard Decision использовать расстояние Хэмминга для вычисления метрик ветви, где число битов мягкого решения равно 1.

Количество битов мягкого решения

Количество битов мягкого решения для представления каждого входного сигнала. Это поле активно, только если для параметра Тип решения установлено значение Soft Decision.

Ошибка, если квантованные входные значения находятся вне диапазона

Установите этот флажок, чтобы выдать ошибку, если квантованные входные значения находятся вне диапазона. Этот флажок активен, только если для параметра Тип решения установлено значение Soft Decision или Hard Decision.

Глубина отслеживания

Количество ветвей решетки для построения каждого пути отслеживания.

Режим работы

Способ перехода между последовательными входными кадрами: Continuous, Terminated, и Truncated.

Примечание

Когда этот блок выводит последовательности, варьирующиеся по длине во время моделирования, и устанавливается режим «Работа» Truncated или Terminatedсостояние блока сбрасывается на каждом шаге времени ввода.

Включить входной порт сброса

Если этот флажок установлен, декодер открывает входной порт с меткой Rst. Предоставление ненулевого входного значения для этого порта приводит к тому, что блок перед обработкой входных данных переводит свою внутреннюю память в исходное состояние.

Отложить действие сброса на следующий шаг времени

При выборе этого параметра блок декодера Витерби сбрасывается после декодирования кодированных данных. Эта опция доступна только в том случае, если для параметра Режим работы (Operation mode) задано значение Continuous и выберите Enable reset input port. Необходимо включить этот параметр для поддержки HDL.

Тип выходных данных

Тип данных выходного сигнала может быть double, single, boolean, int8, uint8, int16, uint16, int32, uint32или задайте значение 'Inherit via internal rule' или 'Smallest unsigned integer'.

Если установлено значение 'Smallest unsigned integer'тип выходных данных выбирается на основе настроек, используемых на панели Аппаратная реализация (Hardware Implementation) диалогового окна Параметры конфигурации (Configuration Parameters) модели. Если ASIC/FPGA выбран на панели Hardware Implementation, тип выходных данных: ufix(1). Для всех остальных вариантов выбора это целое число без знака с наименьшей заданной длиной слова, соответствующей значению символа (например, uint8).

Если установлено значение 'Inherit via internal rule' (установка по умолчанию), блок выбирает двухтипные выходы для двойных входов, однотипные выходы для одиночных входов и ведет себя аналогично 'Smallest unsigned integer' для всех остальных типизированных входов.

Поддерживаемые типы данных

ПортПоддерживаемые типы данных

Вход

  • Плавающая точка с двойной точностью

  • Плавающая точка с одинарной точностью

  • Логическое значение для Hard decision способ

  • 8-, 16- и 32-битные целые числа со знаком (для Hard decision и Soft decision режимы)

  • 8-, 16- и 32-разрядные беззнаковые целые числа (для Hard decision и Soft decision режимы)

  • ufix (n), где n представляет количество битов мягкого решения

Продукция

  • Плавающая точка с двойной точностью

  • Плавающая точка с одинарной точностью

  • Булев

  • 8-, 16- и 32-разрядные целые числа со знаком

  • 8-, 16- и 32-разрядные целые числа без знака

  • ufix (1) дляASIC/FPGA способ

Ссылки

[1] Кларк, Джордж К. и J. Затвор Каин. Кодирование с исправлением ошибок для цифровой связи. Приложения теории коммуникаций. Нью-Йорк: Пленум Пресс, 1981.

[2] Гитлин, Ричард Д., Иеремия Ф. Хейз и Стивен Б. Вайнштейн. Принципы передачи данных. Приложения теории коммуникаций. Нью-Йорк: Пленум Пресс, 1992.

[3] Хеллер, J. и я. Джейкобс. «Декодирование Витерби для спутниковой и космической связи». IEEE Transactions on Communication Technology 19, No. 5 (октябрь 1971 года): 835-48. https://doi.org/10.1109/TCOM.1971.1090711.

[4] Ясуда, Я., К. Кашики и Я. Хирата. «Высокоскоростные проколотые сверточные коды для декодирования Витерби с мягким решением». IEEE Transactions on Communications 32, No. 3 (март 1984 года): 315-19. https://doi.org/10.1109/TCOM.1984.1096047.

[5] Хаккун, Д. и Г. Бегин. «Высокоскоростные проколотые сверточные коды для Витерби и последовательного декодирования». IEEE Transactions on Communications 37, No. 11 (ноябрь 1989 года): 1113-25. https://doi.org/10.1109/26.46505.

[6] Бегин, Г., Д. Хаккун и К. Пакин. «Дальнейшие результаты по высокоскоростным проколотым сверточным кодам для Витерби и последовательного декодирования». IEEE Transactions on Communications 38, No. 11 (ноябрь 1990 года): 1922-28. https://doi.org/10.1109/26.61470.

[7] Moision, B. «Правило глубины усечения большого пальца для сверточных кодов». В информационной теории и прикладном семинаре (27 января 2008 - 1 февраля 2008, Сан-Диего, Калифорния), 555-557. Нью-Йорк: IEEE, 2008.

Подробнее

развернуть все

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.
Представлен до R2006a