- •Основы теории передачи данных
- •Лекция 1 История развития техники передачи дискретных сообщений
- •Особенности систем дискретной связи
- •Структурная схема системы передачи дискретной информации
- •Виды систем передачи дискретной информации
- •Понятие кодирования
- •Основные понятия в области кодирования
- •Параметры кодов
- •Классификация кодов
- •Стандартные первичные коды
- •1. Стандартный пятиэлементный код
- •2. Стандартный семиэлементный код
- •Лекция 2 Понятие о дискретной модуляции
- •Основные понятия дискретной модуляции
- •Виды дискретной модуляции
- •1. Виды параметрической модуляции. Несущий сигнал - постоянный ток
- •Несущий сигнал - переменный ток
- •2. Относительная модуляция
- •Способы увеличение пропускной способности канала с использованием свойств дискретной модуляции
- •Прохождение дискретного канала по каналу связи Общие сведения о линиях и каналах связи
- •Проводные и кабельные каналы
- •Радиолинии и радиоканалы
- •Перспективные типы линий и каналов
- •Способы передачи сигнала по каналу связи
- •Сочетание последовательного и параллельного методов передачи сигнала по каналу связи
- •Распределители. Основные характеристики
- •Лекция 3 Общие сведения о каналах связи для передачи дискретных данных
- •Способы повышения пропускной способности канала связи
- •Скорость передачи дискретной информации
- •Виды помех в канале связи
- •Механизм появления искажений импульсов
- •Классификация искажений
- •Характеристика искажений преобладания
- •Характеристика характеристических искажений
- •Характеристика случайных краевых помех
- •Закон распределения вероятностей искажений
- •Лекция 4 Прием элементов дискретных сигналов Понятие регистрации сигнала
- •Метод стробирования
- •Интегральный метод регистрации
- •Понятие об ошибках. Поток ошибок
- •Классификация ошибок
- •Коэффициенты ошибок
- •Расчет вероятности ошибок
- •Математические модели ошибок
- •Общие сведения об измерении искажений и ошибок
- •Методика измерения искажений
- •Методика измерения ошибок
- •Лекция 5 Методы повышения верности передачи дискретных данных
- •Избыточность сигналов дискретной информации
- •Методы повышения верности передачи дискретных данных в системах без обратной связи
- •Методы повышения верности передачи дискретных данных в системах с обратной связью
- •Принципы помехоустойчивого кодирования
- •Доля ошибок, обнаруживаемых корректирующим кодом
- •Доля ошибок, исправляемых корректирующим кодом
- •Кодовое расстояние
- •Связь расстояния Хэмминга и корректирующих свойств кода
- •Определение требуемого числа проверочных разрядов
- •Классификация помехоустойчивых кодов
- •Лекция 6 Коды Хэмминга Общие сведения
- •Понятие синдрома
- •Построение кода Хэмминга
- •Понятие проверочной матрицы
- •Обнаружение ошибок кодом Хэмминга (9,5)
- •Понятие порождающей матрицы
- •Связь порождающей и проверочной матриц кода Хэмминга
- •Матричное построение систематических кодов с поэлементным формированием проверочной группы
- •Дуальные коды
- •Лекция 7 Циклические коды Общие сведения
- •Построение разрешенных комбинаций циклического кода
- •Обнаружение ошибок при циклическом кодировании
- •Определение места ошибки. Выбор образующего полинома
- •Матричное представление циклических кодов
- •Общие сведения об итеративном коде
- •Метод исправления ошибок. Порождающая матрица итеративного кода
- •Лекция 8 Принципы построения кодирующих устройств Код с поэлементным формированием проверочной группы
- •Кодирующее устройство циклического кода
- •Принципы использования детекторов качества сигналов
- •Понятие о непрерывных и сверточных кодах
- •Содержание
Обнаружение ошибок при циклическом кодировании
Обнаружение ошибок при циклическом кодировании сводится к делению принятой кодовой комбинации на тот же образующий полином, который использовался при кодировании (вид его должен быть известен и на приеме). Если ошибок в принятой кодовой комбинации нет (или они такие, что данную передаваемую кодовую комбинацию превращают в другую разрешенную), то деление на образующий полином произведется без остатка. Если при делении получится остаток, то это свидетельствует о наличии ошибки. Остаток от деления в циклических кодах играет роль синдрома.
Пример
Пусть при приеме получена кодовая комбинация 1111010, вместо посланной разрешенной комбинации 0111010, т.е. в информационной части произошла ошибка в старшем (7-м) разряде (разряды считаем справа налево). Известно, что образующий полином имеет вид: P(x)=x3+x+1.
Требуется обнаружить ошибку.
Для обнаружения ошибки запишем полученную кодовую комбинацию в виде полинома 1111010 → x6+x5+x4+x3+x. Разделим полученный полином на известный образующий полином. Имеем:
Наличие остатка R(x)=x2+1 свидетельствует об ошибке.
Определение места ошибки. Выбор образующего полинома
Остаток от деления R(x) - синдром циклического кода. Если синдром не равен нулю, то это свидетельствует о наличии ошибки. В кодах с образующим полиномом степени r остаток представляется в виде полинома, степень которого меньше r. Это означает, что количество различных ненулевых остатков может быть равным 2r -1. Если номер разряда, в котором произошла ошибка, однозначно связать с видом получающегося при этом ненулевого остатка, то можно определить не только наличие ошибки, но и ее место и исправить ошибку.
Таким образом, для исправления ошибок необходимо обеспечить условие, при котором количество различных ненулевых остатков будет равно количеству элементов n (при исправлении одной ошибки) или числу комбинаций из n по tи, где tи — количество ошибок (кратность), исправляемых кодом.
Пример
Имеется кодовая комбинация циклического кода содержащая 15 элементов (n=15). Код исправляет двукратные ошибки (tи=2). Определить число проверочных элементов кодовой комбинации и вид примененного кода.
Определим возможное число двукратных ошибок в кодовой комбинации, состоящей из 15 элементов. Очевидно, что ошибки могут быть
в 1,2; 1,3; …2,3; 2,4 … и т.д. разрядах. Т.е. общее число возможных ошибок определяется по формуле сочетаний из 15 элементов по 2:
Т.о. необходимо выбрать образующий полином обеспечивающий 105 различных остатков, или
2r -1≥105, откуда получаем r=7 (27-1 = 127).
Следовательно, комбинация имеет 7 проверочных разрядов, для кодирования нужно выбрать образующий многочлен с r=7 и код (15,7).
Не все неприводимые многочлены позволяют формировать 2r-1 различных остатков. Это присуще только определенному подклассу неприводимых многочленов. Такие многочлены называются примитивными.
Поэтому в качестве образующих многочленов используют примитивные многочлены. Их признаком является наличие остатка, равного единице только при делении на них х0 (т.е. 1) и хn, где n — количество элементов в кодовой комбинации. Между n и r для таких полиномов имеется зависимость 2r=n-1. Здесь n - максимальное количество элементов, при котором число различающихся ненулевых остатков равно n-1. Поэтому в таблицах образующих полиномов указываются только примитивные полиномы.
Для определения места ошибки в циклическом коде существует несколько методов, основанных на анализе синдрома R(x). Рассмотрим один из них.
Принятую кодовую комбинацию F'(x) можно представить в виде F'(х)=F(х) E(x),
где Е(х) - многочлен ошибки,
F(x) – переданная кодовая комбинация.
Например, если F(0,1)=01110111, а E(0,1) = 10000000, то F´(0,1) =11110111 (здесь комбинации записаны в виде двоичных кодов, поэтому аргументы F и E нуль и единица).
Остаток от деления принятой кодовой комбинации F'n(x) на Р(х) равен остатку от деления на Р(х) кодовой комбинации ошибки Еn(х), если
где n – число элементов кодовой комбинации.
Это действительно так, учитывая, что Fn(x) разрешенная кодовая комбинация, которая делится на P(x) без остатка, но тогда и суммарный остаток от деления на P(x) многочленов F'n(x) и Еn(х) должен быть равен нулю. А это выполняется, если эти остатки равны, тогда их сумма по модулю 2 будет равна нулю.
Пример
Имеется циклический код (11,7). Передана разрешенная комбинация F11(0,1)=10110111100. Принята кодовая комбинация F'11(0,1)=00110111100.Требуется найти кодовую комбинацию ошибки Е(0,1). Убедиться, что остатки от деления F'11(0,1) и Е(0,1) на образующий полином равны. Образующий полином имеет вид Р(0,1)=10011.
Т.к. F'(х)=F(х) E(x), то многочлен ошибки равен (учитывая, что операции вычитания и сложения по модулю 2 совпадают):
Для примера все операции будем выполнять над двоичными числами, а не над многочленами, тогда:
Комбинация ошибки показывает, что в принятой кодовой комбинации имеется одна ошибка в старшем разряде.
Найдем остаток от деления принятой кодовой комбинации F'11(0,1)на P(x):
Найдем остаток от деления комбинации ошибки E(0,1)на P(x):
Сравнение остатков показывает, что для обоих случаев они одинаковы.
Это свойство позволяет сделать вывод, что синдром не зависит от переданной кодовой комбинации, а определяется лишь наличием ошибок. Указанное свойство можно использовать для определения ошибочно принятого элемента.
Алгоритм определения места ошибочно принятого элемента следующий:
Записывается многочлен ошибки (или кодовая комбинация, если вычисления выполняются над двоичными числами) соответствующий ошибке в старшем разряде кода.
Многочлен ошибки делится на образующий полином, находится остаток R0. Этот остаток является синдромом ошибки в старшем разряде.
Полученная кодовая комбинация F'n делится на образующий полином, находится остаток R1.
а) Если R1 =0, комбинация принята без ошибок.
б) Если R1 = R0, принятая комбинация имеет ошибку в старшем разряде.
в) Если R1 ≠ R0, к принятой комбинации дописывают 0 справа и продолжают деление.
4. Пункт 3в) повторяют до тех пор, пока полученный при делении остаток Ri станет равен R0 (Ri = R0). Позиция ошибочно принятого разряда равна числу приписанных к кодовой комбинации нулей плюс 1. Позиции в кодовой комбинации считаются слева направо.
Замечание: приписывание нуля к кодовой комбинации эквивалентно ее сдвигу на одну позицию влево. Когда ошибочно принятый разряд в результате таких сдвигов попадет на позицию старшего разряда, выполнится условие Ri = R0.
Пример
При пользовании циклического кода (11,7) была принята комбинация F'11(0,1)=10111111100. Определить наличие ошибки и исправить ее, если известно, что используемый код исправляет одну ошибку, образующий многочлен имеет вид Р(0,1)=10011.
Все операции будем выполнять над двоичными числами.
Запишем кодовую комбинацию ошибки, соответствующую ошибке в старшем разряде кода (учитываем, что n=11):
Многочлен ошибки разделим на образующий полином и найдем остаток R0. Из предыдущего примера R0=111.
Полученную кодовую комбинацию F'11(0,1) делим на образующий полином:
Остаток от деления стал равен остатку R0=111после приписывания четырех нулей. Следовательно, ошибочно принят разряд на 5-ой позиции, если считать слева направо. Верная комбинация имеет вид: 10110111100.