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

 
в палитре на схеме

Блок осуществляет декодирование принятого кодового слова по алгоритму Витерби. Подробную информацию о сверточных кодерах и декодерах можно найти в [1].

Декодирование осуществляется в 2-х режимах:

  1. Непрерывный режим: в один момент времени на вход блока поступает один символ кодового слова и на выходе блока формируется один символ информационного слова. В данном режиме блок выдает декодированное информационное слово с задержкой, равной глубине декодирования. Пример: пусть кодовая скорость равна K/N, глубина декодирования равна 20, тогда на вход декодера подается N отсчётов за такт, на выходе декодера формируется K отсчетов за такт, первые принятые символы будут декодированы через 20 шагов интегрирования модели. До выполнения 20 шагов интегрирования декодер выдает нули.
  2. Пакетный режим: в один момент времени на вход блока поступает одно кодовое слово и на выходе блока формируется одно информационное слово. Длина информационного слова определяется параметром Размер пакета. Длина кодового слова определяется как Размер пакета * N / K. В конце информационного слова необходимо добавлять терминирующие нули, число которых равно сумме кодовых ограничений для используемых полиномов. В данном режиме задержка результата вычисления отсутствует, состояние декодера сбрасывается на каждом шаге моделирования

Полиномиальное описание и решетчатая структура декодера соответствует кодеру. Описание параметров и примеры предствлены в справке по свёрточному кодеру

Входные порты

  • dcsn - массив принятых из канала отсчетов кодового слова. Размерность в непрерывном режиме равна N, в пакетном N * FrameSize, где N - число отсчетов в одном кодированном символе.

Выходные порты

  • bits - информационное слово в виде двоичного вектора длиной N бит в непрерывном режиме, либо N * FrameSize в пакетном, где N - число отсчетов в одном кодированном символе.

Свойства

  • Способ описания декодера - способ описания декодера: полиномиальное представление или решетчатая структура;
  • Режим работы декодера - режим работы декодера: непрерывный/пакетный;
  • Размер пакета - размер информационного слова (на входе кодера и на выходе декодера) в пакетном режиме. Значение данного свойства должно быть кратно числу информационных бит в одном символе на входе кодера (свойство доступно только в пакетном режиме работы кодера);
  • Режим выкалывания бит - флаг включения/выключения режима выкалывания бит;
  • Матрица выкалывания - маска выкалывания входных отсчетов декодера. Задается в виде вектора из нулей и единиц. Единицами обозначаются значащие элементы, нулями - выколотые. Метрики выколотых оценок не рассчитываются. Кодовая скорость после при выкалывании рассчитывается по следующей формуле: Rpunctured = R * MaskLength / OnesCount, где R - исходная кодовая скорость, MaskLength - длина вектора маски выкалывания, OnesCount - число единиц в маске выкалывания. Пример маски для преобразования кодовой скорости от 1/2 к 3/4: [1, 1, 0, 1, 1, 0] (свойство доступно только в режиме выкалывания бит);
  • Начальное состояние декодера - начальное состояние регистров линий задержки кодера. Задается в виде целого числа, биты которого соответствуют элементам линий задержки;
  • Младший бит - первый - параметр, определяющий интерпретацию очередности бит во входном и выходном векторах. В случае, если флаг выставлен в true, первый бит сообщений на входе и выходе кодера/декодера считается младшим, в противном случае - старшим;
  • Описание решетчатой структуры - способ описания решетчатой структуры. Структура может быть описана пользователем вручную либо загружена из файла, сформированного моделью расчета решетчатых структур (свойство доступно только при способе задания кодера в виде решетчатой структуры);
  • Файл решетчатой структуры - имя файла с описанием решетчатой структуры (свойство доступно только при описании решетчатой структуры при помощи файла);
  • Количество символов на входе - количество возможных комбинаций бит на входе кодера и выходе декодера (свойство доступно только при описании решетчатой структуры вручную);
  • Количество символов на выходе - количество возможных комбинаций на выходе кодера и входе декодера (свойство доступно только при описании решетчатой структуры вручную);
  • Количество состояний - количество возможных состояний кодера и декодера (свойство доступно только при описании решетчатой структуры вручную);
  • Массив состояний - таблица возможных состояний кодера размерностью [NumStates]x[NumInCombs]. Задается в виде одномерного массива, в который таблица переписывается построчно (свойство доступно только при описании решетчатой структуры вручную);
  • Массив выходов - таблица возможных выходных значений кодера размерностью [NumStates]x[NumInCombs]. Задается в виде одномерного массива, в который таблица переписывается построчно (свойство доступно только при описании решетчатой структуры вручную);
  • Кодовое ограничение - массив кодовых ограничений кодера. Количество элементов массива соответствует количеству линий задержки в составе кодера (свойство доступно только при полиномиальном описании кодера)
  • Массив полиномов - массив генераторных полиномов кодера. Задается в виде одномерного массива, в который поочередно заносятся генераторные полиномы для каждой линии задержки кодера. В случае, если линия задержки не имеет связей с каким-либо из элементов XOR, в соответствующий элемент массива записывается 0. Размерность массива - [количество линий задержки]х[количество элементов XOR, формирующих выходное сообщение] (свойство доступно только при полиномиальном описании кодера);
  • Массив полиномов обратной связи - массив полиномов, описывающих обратную связь кодера. Количество элементов равно количеству линий задержки в составе кодера. В случае отсутствия в линии задержки обратной связи в соответствующий элемент массива записывается 0. Параметр доступен для редактирования при выборе полиномиального способа описания кодера;
  • Систематический код - параметр, определяющий вид кодера. Если флаг установлен в true, кодер будет считаться систематическим, то есть входные биты будут передаваться на выход блока, в противном случае кодер будет интерпретироваться как несистематический (свойство доступно только при полиномиальном описании кодера);
  • Глубина решетки декодера - глубина решетки декодера;
  • Тип решений на входе - тип оценок, принятых из канала:
    1. Жесткие - на вход декодера поступают оценки в виде 0 и 1. Метрика, используемая для выбора оптимальных маршрутов - расстояние Хэмминга;
    2. Квантованные - на вход декодера поступают целые числа в диапазоне [0, 2b - 1], где b - число бит в мягкой оценке. Метрика, используемая для выбора оптимальных маршрутов - расстояние Хэмминга;
    3. Непрерывные - на вход декодера поступают оценки в виде вещественных чисел, причем, положительное число интерпретируется как логический ноль, отрицательное число интерпретируется как логическая единица;
  • Число бит в мягкой оценке - число бит в квантованной оценке. Число уровней квантования определяется как 2SoftDecisionBitsCount;

Параметры

Нет

Расчет решетчатых структур

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

Список источников

Скляр Бернард. Цифровая связь: теоретические основы и практическое применение / Скляр Б. ; Гроза Е.Г. [и др.] (пер. с англ.). — 2-е изд. — М. [и др.] : Вильямс, 2016. — 1099 с. — Пер. изд.: Digital communications / Sklar Bernard. — 2d ed. Upper Saddle River (N.J.) : Prentice Hall, cop. 2001. — ISBN 978-5-8459-2071-3.