Блок осуществляет декодирование принятого кодового слова по алгоритму Витерби. Подробную информацию о сверточных кодерах и декодерах можно найти в [1].
Декодирование осуществляется в 2-х режимах:
- Непрерывный режим: в один момент времени на вход блока поступает один символ кодового слова и на выходе блока формируется один символ информационного слова. В данном режиме блок выдает декодированное информационное слово с задержкой, равной глубине декодирования. Пример: пусть кодовая скорость равна K/N, глубина декодирования равна 20, тогда на вход декодера подается N отсчётов за такт, на выходе декодера формируется K отсчетов за такт, первые принятые символы будут декодированы через 20 шагов интегрирования модели. До выполнения 20 шагов интегрирования декодер выдает нули.
- Пакетный режим: в один момент времени на вход блока поступает одно кодовое слово и на выходе блока формируется одно информационное слово. Длина информационного слова определяется параметром Размер пакета. Длина кодового слова определяется как Размер пакета * 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, кодер будет считаться систематическим, то есть входные биты будут передаваться на выход блока, в противном случае кодер будет интерпретироваться как несистематический (свойство доступно только при полиномиальном описании кодера);
- Глубина решетки декодера - глубина решетки декодера;
- Тип решений на входе - тип оценок, принятых из канала:
- Жесткие - на вход декодера поступают оценки в виде 0 и 1. Метрика, используемая для выбора оптимальных маршрутов - расстояние Хэмминга;
- Квантованные - на вход декодера поступают целые числа в диапазоне [0, 2b - 1], где b - число бит в мягкой оценке. Метрика, используемая для выбора оптимальных маршрутов - расстояние Хэмминга;
- Непрерывные - на вход декодера поступают оценки в виде вещественных чисел, причем, положительное число интерпретируется как логический ноль, отрицательное число интерпретируется как логическая единица;
- Число бит в мягкой оценке - число бит в квантованной оценке. Число уровней квантования определяется как 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.