- •Основы теории цифровой связи Часть 1 кодирование информации
- •1. Введение
- •1.1. Модель радиотехнической системы связи
- •Контрольные вопросы
- •1.2. Статистическая трактовка процесса передачи информации
- •Контрольные вопросы
- •1.3. Основные понятия и элементы математического аппарата теории связи
- •1.3.1. Сигналы и помехи
- •1.3.2. Разложение сигнала по системе ортогональных функций. Спектр сигнала
- •1.3.3. Cвойства преобразования Фурье
- •1.3.4. Корреляционная функция сигнала
- •1.3.5. Связь между корреляционной функцией и спектром сигнала
- •1.3.6. Случайные сигналы и их характеристики
- •Контрольные вопросы
- •1.4. Источники информации
- •1.5. Теорема дискретизации
- •1.6. Дискретизация изображений
- •Контрольные вопросы
- •1.7. Квантование. Ошибки квантования
- •Контрольные вопросы
- •1.8. Количество информации, содержащейся в сообщении
- •1.8.1. Энтропия сложных сообщений, избыточность источника
- •Контрольные вопросы и задачи
- •2. Основы экономного кодирования информации
- •2.1. Способы представления кодов
- •Контрольные вопросы и задачи
- •2.2. Типы систем сжатия
- •X Квантователь Xq Кодер без потерь информации b (Xq) Декодер X*
- •Методы кодирования без потерь
- •2.3.1. Понятие префиксного множества
- •2.3.2. Алгоритм кодирования Хаффмена
- •2.3.3. Алгоритм Шеннона–Фано
- •2.3.4. Блочные коды
- •2.3.5. Арифметическое кодирование
- •2.3.6. Словарное кодирование. Метод Зива–Лемпеля
- •2.3.7. Кодирование длин повторений (rle)
- •2.3.8. Дифференциальное кодирование
- •Контрольные вопросы и задачи
- •2.4. Методы сжатия с потерей информации
- •2.4.1. Функции “скорость–искажение” и “искажение–скорость”
- •2.5. Сжатие речевых сигналов
- •2.5.1. Кодирование формы сигнала, икм
- •2.5.2. Дифференциальная икм
- •2.5.3. Адаптивная дифференциальная икм (адикм)
- •2.5.4. Дельта-модуляция
- •2.5.5. Другие методы кодирования формы сигнала
- •2.5.6. Кодирование источника
- •2.5.7. Гибридные методы кодирования речи
- •2.5.8. Полноскоростной кодер rpe-ltp (стандарт gsm 06.10)
- •2.5.9. Кодер vselp (стандарт d-amps)
- •Контрольные вопросы и задачи
- •2.6. Кодирование изображений. Стандарт сжатия jpeg
- •Процедуру дкп можно записать в матричной форме:
- •2.6.1. Рекурсивный (вэйвлет) алгоритм
- •2.7. Сжатие подвижных изображений (видео)
- •3. Основы помехоустойчивого кодирования
- •3.1. Основные принципы. Типы кодов
- •3.2. Линейные блочные коды
- •3.2.1. Код с проверкой на четность
- •3.2.2. Итеративный код
- •3.2.3. Порождающая матрица линейного блочного кода
- •3.2.4. Проверочная матрица
- •3.2.5. Дуальные коды
- •3.2.6. Синдром и обнаружение ошибок
- •3.2.7. Синдромное декодирование линейных блочных кодов
- •3.2.8. Мажоритарное декодирование линейных блочных кодов
- •3.2.9. Декодирование методом максимального правдоподобия
- •Поскольку
- •Если принятый сигнал дискретизован и Si – I-й отсчет принятого сигнала.
- •3.2.10. Вес и расстояние Хемминга. Способность кодов обнаруживать и исправлять ошибки
- •Контрольные вопросы и задачи
- •3.3. Полиномиальные коды
- •3.3.1. Циклические коды
- •3.3.2. Кодирование с использованием циклических кодов
- •3.3.3. Вычисление синдрома и исправление ошибок в циклических кодах
- •3.3.4. Неалгебраические методы декодирования циклических кодов
- •3.4. Сверточные коды
- •3.4.1. Кодирование с использованием сверточных кодов
- •3.4.2. Синдромное декодирование сверточных кодов
- •3.4.3. Кодовое дерево и решетчатая диаграмма
- •3.4.4. Декодирование сверточных кодов. Алгоритм Витерби
- •3.4.5. Алгоритмы поиска по решетке
- •Контрольные вопросы и задачи
- •3.5. Применение корректирующего кодирования в системах связи
- •3.5.1. Каскадные коды
- •3.5.2. Кодирование с перемежением
- •Библиографический список
- •Часть 1 1
3.3.3. Вычисление синдрома и исправление ошибок в циклических кодах
Вычисление синдрома для циклических кодов является довольно простой процедурой. Пусть U(x) и r(х) – полиномы, соответствующие переданному кодовому слову и принятой последовательности.
Разделив r(x) на g(x), получим
r(x) = q(x) g(x) + s(x), (3.75)
где q(x) – частное от деления; s(x) – остаток от деления.
Если r(x) является кодовым полиномом, то он делится на g(x) без остатка, то есть s(x) = 0.
Следовательно, s(x) 0 является условием наличия ошибки в принятой последовательности, то есть синдромом принятой последовательности.
Синдром s(x) в общем случае имеет вид
S(x) = S0 + S1 x + ... + Sn– k–1 xn–k–1. (3.76)
Очевидно, что схема вычисления синдрома является схемой деления, подобной схемам кодирования (рис. 3.10 или 3.11).
При наличии в принятой последовательности r хотя бы одной ошибки вектор синдрома S будет иметь по крайней мере один ненулевой элемент, при этом факт наличия ошибки легко обнаружить, объединив по ИЛИ выходы всех ячеек регистра синдрома.
Покажем, что синдромный многочлен S(x) однозначно связан с многочленом ошибки e(x), а значит, с его помощью можно не только обнаружить, но и локализовать ошибку в принятой последовательности.
Пусть
e(x) = e0 + e1 x + e2 x2 + ... + en–1 x n–1 (3.77)
– полином вектора ошибки.
Тогда полином принятой последовательности
r(x) = U(x) + e(x). (3.78)
Прибавим в этом выражении слева и справа U(x), а также учтем, что
r(x) = q(x) g(x) + S(x), U(x) = m(x) g(x), (3.79)
тогда
,
(3.80)
то есть синдромный полином S(x) является остатком от деления полинома ошибки e(x) на порождающий полином g(x).
Отсюда следует, что по синдрому S(x) можно однозначно определить вектор ошибки e(x), а следовательно, исправить эту ошибку.
На рис. 3.14 показана схема синдромного декодера с исправлением однократной ошибки для циклического (7,4)-кода. По своей структуре она подобна схеме, изображенной на рис. 3.6, с той лишь разницей, что вычисление синдрома принятой последовательности производится здесь не умножением на проверочную матрицу, а делением на порождающий полином. При этом она сохраняет и недостаток, присущий всем синдромным декодерам: необходимость иметь запоминающее устройство, ставящее в соответствие множеству возможных синдромов S множество векторов ошибок e. Цикличность структуры кода в этом случае не учитывается.
Рис. 3.14
3.3.4. Неалгебраические методы декодирования циклических кодов
Все методы декодирования линейных блочных кодов можно разбить на две группы: алгебраические и неалгебраические.
В основе алгебраических методов лежит решение систем уравнений, задающих значение и расположение ошибок. Рассмотренные синдромные декодеры относятся именно к этой группе методов.
При неалгебраических методах та же цель достигается с помощью простых структурных понятий теории кодирования, позволяющих находить комбинации ошибок более простым путем.
Одним из неалгебраических методов является декодирование с использованием алгоритма Меггитта, пригодного для исправления как одиночных, так и l-кратных ошибок (на практике l 3). При декодировании в соответствии с алгоритмом Меггитта также вычисляется синдром принятой последовательности S(x), однако используется он иначе, нежели в рассмотренных ранее синдромных декодерах.
Идея, лежащая в основе декодера Меггитта, очень проста и основывается на следующих свойствах циклических кодов:
– существует взаимно-однозначное соответствие между множеством всех исправляемых ошибок и множеством синдромов;
– если S(x) – синдромный многочлен, соответствующий многочлену ошибок е(x), то xS(x) mod g(x) – синдромный многочлен, соответствующий x e(x) mod (xn + 1).
Равенство а(x) = b(x) mod p(x) читается как “а(x) сравнимо с b(x) по модулю р(x) и означает, что а(x) и b(x) имеют одинаковые остатки от деления на полином p(x).
Таким образом, второе условие означает, что если комбинация ошибок циклически сдвинута на одну позицию вправо, то для получения нового синдрома нужно сдвинуть содержимое регистра сдвига с обратными связями, содержащего S(x), также на одну позицию вправо.
Следовательно, основным элементом декодера Меггитта является сдвиговый регистр. Структурная схема декодера Меггитта для циклических кодов произвольной длины показана на рис. 3.15.
Рис. 3.15
Декодер работает следующим образом. Перед началом работы содержимое всех разрядов регистров равно нулю. Принимаемая последовательность r в течение первых n тактов вводится в буферный регистр и одновременно с этим в (n – k)-разрядном сдвиговом регистре с обратными связями производится ее деление на порождающий полином g(x).
Через n тактов в буферном регистре оказывается принятое слово r, a в регистре синдрома – остаток от деления вектора ошибки на порождающий полином.
Вычисленный синдром сравнивается со всеми табличными синдромами, и в случае совпадения с одним из них старший разряд буферного регистра исправляется путем прибавления к его значению единицы.
После этого синдромный и буферный регистры один раз циклически сдвигаются. Это реализует умножение S(x) на x и деление на g(x). Содержимое ячеек синдромного регистра теперь равно остатку от деления xS(x) на g(x) или синдрому ошибки x е(x) mod (Хn + 1).
Если новый синдром совпадает с одним из табличных, то исправляется очередная ошибка и т.д. Через n тактов все позиции будут, таким образом, исправлены.
Рассмотрим работу декодера Меггитта для циклического (7,4)-кода, исправляющего одиночную ошибку. Схема декодера изображена на рис. 3.16.
Рис. 3.16
Принцип работы декодера заключается в том, что независимо от того, в какой позиции произошла ошибка, осуществляется ее сдвиг в последнюю ячейку буферного регистра с соответствующим пересчетом синдрома и ее исправление в этой позиции.
Полином ошибки в старшем разряде для (7,4)-кода Хемминга имеет вид е6 (x) = x6, соответствующий ему синдромный полином S6 (x) = 1 + x3 (синдром S = (101)), детектор ошибки настроен на это значение синдрома.
Пусть, например, передана последовательность U = (1001011), ей соответствует кодовый полином U(x) = 1 + x3 + x5 + x6. Произошла ошибка в третьей позиции е(x) = x3, принятый вектор имеет вид r = (1000011), соответствующий ему полином r(x) = 1 + x5 + x6.
Kогда принятая последовательность полностью входит в буферный регистр, в регистре синдрома оказывается синдром, соответствующий ошибке е(x) = x3, S3 = (110). Поскольку он не совпадает с табличным для е6, на выходе детектора ошибок будет 0 и исправление не происходит.
Далее производятся однократный циклический сдвиг принятой последовательности в буферном регистре, однократное деление синдрома x∙S3 на порождающий полином в регистре с обратными связями и проверка на совпадение синдрома с заданным.
Последовательность состояний регистров декодера в процессе декодирования показана на рис. 3.17.
Рис. 3.17
Т
аким
образом, исправление ошибки в декодере
Меггитта осуществляется за 2n
тактов: в течение n
тактов производится ввод принятой
последовательности в буферный регистр,
в течение l
тактов –
исправление ошибки, и еще в течение (n
– l)
тактов – восстановление
буферного регистра в исходное состояние
с исправленным словом. Простота декодера
достигается увеличением времени
декодирования в сравнении с синдромными
декодерами, в которых процедура
декодирования выполняется параллельно.
