Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
му 15-16 / 3 семестр / 6 АЭС++ / Авиационная электросвязь.doc
Скачиваний:
944
Добавлен:
22.03.2016
Размер:
31.41 Mб
Скачать

5.6.4. Помехоустойчивые блочные систематические коды

Основные понятия и определения

У двоичных кодов основание кода m = 2 и реализации кодовых символов принимают значения «1» и «0».

Длина кодовой комбинации n для помехоустойчивых кодов должна удовлетворять ус­ловию:

M = 2n > L,

где М – количество всех кодовых комбинаций избыточного кода;

L – объем алфавита источника или количество разрешенных кодовых комбинаций, используемых при кодировании.

Тогда (М – L) – количество запрещенных кодовых комбинаций.

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

(n, k),

где n  – длина кодовой комбинации помехоустойчивого кода;

k – длина информационной части кодовой комбинации помехоустойчивого кода.

Тогда длина проверочной части кодовой комбинации помехоустойчивого кода r = n k.

По форме записи систематических блочных кодов всегда можно определить количество всех M, разрешенных Lразр и запрещенных Lзапр кодовых комбинаций помехоустойчивого кода:

M = 2n; Lразр = 2k; Lзапр = MLразр.

Для избыточных кодов вводится параметр

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

Параметр

называется избыточностью кода или кодовой избыточностью.

Вес кодовой комбинацииgравен количеству «1» в разрядахкодовой комбинации.

Кодовое расстояние d характеризует степень различия между двумя КК и равно количеству разрядов, в которых они отличаются друг от друга.

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

В общем случае для (n, k)-кодов минимальное кодо­вое расстояние dмин определяется выражением

dмин ≤ 1 + nk = 1 + r.

Для (n, k)-кодов, в частности, минимальное кодо­вое расстояние dмин равно весу кодовой комбинации, информационная часть которой имеет минимальный вес.

Кратностью ошибки Δ называется кодовое расстояние между переданной и принятой КК.

Теоремы о помехоустойчивости кодов

В теории кодирования доказаны две теоремы, определяющие воз­можности кодов по обнаружению и исправлению ошибок.

Теорема об обнаруживающей способности кода:

Если dмин ≥ 2 и используется декодирование с об­наружением ошибок, то все ошибки кратностью

Δобн < dмин

обнаруживаются обязательно, а ошибки кратностью Δ ≥ dмин могут об­наруживаться, а могут и не об­наруживаться.

Условия теоремы позволяют оценить вероятность необнаружения ошибки при таком способе декодирования:

Теорема об исправляющей способности кода:

Еслиdмин ≥ 3и используется декодирование с исправлением ошибок, то все ошибки кратностью

Δиспр < [dмин/2]

исправляются обязательно,а ошибкибольшей кратности(Δ > Δиспр) могут исправляться,а могут и не исправляться.3

Условия теоремы позволяют оценить вероятность ошибки в кодовой комбинации при декодировании с исправлением:

Из этих теорем следует (при n = const):

- вероятности pно и pкк тем меньше, чем больше dмин;

- параметры dмин, pно и pкк фактически характеризуют помехоустойчивость кода;

- для построения кода, обнаруживающего ошибки, кратностью Δобн, необходимо, чтобы КК кода имела не менее одного проверочного символа на одну ошибку, т.е. r ≥ Δобн;

- для построения кода, исправляющего ошибки, кратностью Δиспр, необходимо, чтобы КК кода имела не менее двух проверочных символов на одну ошибку, т.е. r ≥ 2 Δиспр,

Помехоустойчивые блочные коды

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

Табличный способ задания помехоустойчивых блочныхкодов прост для малыхn, а для достаточно эффективных кодов (n>> 1) – техническиневозможен.

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

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

В основе полиномиального представления кодов лежит представление любого числа в произвольной системе счисления, записываемое в виде:

P(x) = anxn-1 + an-1xn-2 + … +a1x0.

где x– основание системы счисления;

an-1,an-2, …,a0– коэффициенты, принимающие возможные значения цифр системы счисления.

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

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

10110 → P(x) = 1·x4+ 0·x3+ 1·x2+ 1·x+ 0·x0=x4+x2+x.

Отсюда видно, что КК длины n описывается полиномом степени (n – 1), в котором отсутствуют слагаемые, соответствующие нулевым разрядам КК. Например, при n = 5 полиномуP(x) = (x+ 1) соответствует КК 00011.

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

Циклические коды

Циклические коды являются подклассом линейных блочных систематических двоич­ных кодов и обладают следующими свойствами:

- КК, полученная путем циклического сдвига символов КК циклического кода, также принадлежит этому коду;

- КК, полученная путем поразрядного сложения по модулю 2 кодовых комбинаций циклического кода, также принадлежит этому коду.

Циклический код (n,k) задаетсяпорождающим (образующим) полиномом G(x).

Порождающим полиномом (n, k) циклическо­го кода может служить любой полином G(x) степени (n – k) = r, который делит без остатка двучлен (xn +1). Т.е. степень порождающего полинома равна количеству проверочных символов в КК циклическо­го кода.

Для определения порождающего полинома (n,k) циклическо­го кода возможен другой способ, состоящий в представлении бинома (xn+ 1) в виде[10]:

(xn + 1) = (x + 1)(xn-k + a1xn-k-1 + …+ an-k-1x + 1)×

×(xk-1 + b1xk-2 + …+ bk-2x+ 1),

где первый полином имеет степень (n – k) =r, равную степени требуемого порождающего полинома циклического кода, а второй полином имеет степень (k – 1), соответствующую степени полинома, представляющего собой информационную часть КК циклического кода

Для построения циклического кода необходимо:

1. На основе требований к достоверности передачи информации по каналу связи необходимо определить основные параметры кода dмин,n иk, обеспечивающие решение основных задач теории кодирования:

- максимизация скорости передачи информации;

- обеспечение требуемой помехозащищенности.

2. Для выбранного кода (n, k) определить образующий полином степени (nk) с числом слагаемых не менееdмин.

Требуемое минимальное кодовое расстояние dминопределяется из требований к кратности обнаруживаемыхΔобнили исправляемыхΔиспркодом ошибок.

Знание минимального кодового расстояния dмин, позволяет определить требуемое число проверочных символовr.

У кода, обнаруживающего ошибки, количество проверочных символовrв КК должно быть не меньше требуемой кратности обнаруживаемых ошибокΔобн:

r ≥ Δобн или r ≥ (dмин– 1).

У кода, исправляющего ошибки, количество проверочных символовrв КК должно быть не менее чем в два раза больше требуемой кратности исправляемых ошибокΔиспр:

r ≥ 2Δиспр или r ≥ (dмин– 1).

С целью максимизации скорости передачи информации надо увеличивать скорость кода, которая равна

т.е. надо выбирать код с как можно большей длиной информационной части КК k. Желательно, чтобыk>>r, однакона выбор длины информационной части КК k влияет допустимая вероятность правильного приема КК циклического кода qкк доп:

qкк= (1 –pкк) ≥qкк допилиpккpкк доп= (1 –qкк доп),

где qкк– вероятность правильного приема КК циклического кода;

pкк– вероятность ошибки при приеме КК циклического кода, зависящая отdмин;

pкк доп – допустимая вероятность ошибки при приеме КК циклического кода.

После определения требуемого количества проверочных символов r и допустимого количества символов информационной части ККk,определяют порождающий полиномG(x) циклического кода (n,k) любым из рассмотренных способов.

Циклический код является одним из основных линейных блочных помехоустойчивых систематических кодов, широко используемых в РЭС авиационной электросвязи и передачи данных и в системах ТУ-ТС средств РТОП и АЭС.

Сверточные коды

Сверточные коды так наз­ваны потому, что операцию кодирования этими кодами можно рассматривать как свертку входной информационной последователь­ности с импульсным откликом (характеристикой) кодера.

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

Основные понятия, определения, параметры

В общем случае кодовая по­следовательность a(t), кодируемая сверточным кодом (СК), разбивается на пачки (блоки), содержащие поk кодовых символов. Каждымk входным кодовым символам соответствуетn кодовых символов, формируемых на выходе кодера сверточного кода.

Таким образом, кодовая последовательность α(t), закодированная СК, может быть представлена как последовательность пачек поn кодовых символов.

Основными параметрами сверточного кода являются скорость кода

и связанная с ней избыточность сверточного кода

Параметры кода k и n позволяют определитьколичество основных элементов кодера (регистров сдвига, сумматоров по модулю 2 и коммутаторов (переключателей, ключей)), их характеристики, а также некоторые характеристики генерируемого сверточного кода.

Параметр k определяетколичество регистров сдвига в кодере, а параметрnпозволяет определитьколичество сумматоров по модулю 2 (для кодеров ССК – количество сумматоров по модулю 2 равноn– 1, а для кодеров НСК –n). Кроме того, параметрnзадает требование к необходимомуколичеству положений коммутатора (переключателя)на выходе кодера.

Количество разрядов регистров сдвига, необходимое для реализации кодера сверточного кода, называется длиной кодового ограничения q:

где li– длинаi-го регистра сдвига.

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

Связь между разрядами регистров сдвига и входами сумматоров по модулю 2 задают образующие (порождающие) полиномы Gy(х),y [1,Y], количество которыхY равно произведению параметров k иn:

Y = k ·n.

Для СК в отличие от блочных не существует алгеб­раических методов декодирования. В настоящее время для декодирования СК с небольшой длиной кодово­го ограничения (q ≤ 10) наиболее широко применяют алгоритм максимального правдоподобия Витерби. Алгоритм Витерби хотя и сложен, но наиболее близок к предельному (наилуч­шему) алгоритму по критерию максимального правдоподобия.

Принцип построения и работы кодера сверточного кода

На рис. 5.8 приведен фрагмент канала связи со сверточным кодированием.

.

Рис. 5.8. Фрагмент канала связи

Рассмотрим работу кодера СК, кодирующего кодовую последовательность a(t) сверточным кодом НСК-1/2, для которогоk = 1,n = 2.

У кода НСК-1/2 скорость кода νск= 1/2 и избыточность1/2, т.к.при поступлении на вход кодера одного символакодируемой кодовой последовательностиa(t)на выходе кодера формируется два символавыходной кодовой последовательностиα(t).

Знание скорости кода νскпозволяет определить состав основных элементов кодера: один регистр сдвига, два сумматора по модулю 2 и один переключатель на два положения. Для определения связей регистра сдвига с входами сумматоров по модулю 2 зададим матрицу образующих полиномов:

Gнск1/2(х) = .

Схема кодера, соответствующая этой матрице, приведена на рис. 5.9,а.

Рис. 5.9. Схема кодера НСК-1/2 (а) и его диаграмма состояний (б)

Работа кодера осуществляется по тактам (шагам). Под действием тактовых импульсов символы входной кодовой последовательности a(t) продвигаются по ячейкам регистраR и складываются в сумматорах по модулю 2. Результат сложения считывается коммутаторомК на выход кодера.

Пусть исходное состояние кодера сверточного кода НСК-1/2 – 00, а на вход кодера (рис. 5.9,а) поступает сигнал a(t) (входная кодовая последовательность) →11001.

Кодер находится в состоянии 00 (см. диаграмму состояний кодера на рис. 5.9,б). На вход кодера поступает первый символ 1, и кодер переходит из состояния 00 в состояние 10, тогда регистр переходит в состояние 100, и на выходе кодера формируются кодовые символы 11. Затем на вход кодера поступает второй символ 1, и кодер переходит из состояния 10 в состояние 11 (регистр – в состояние 110), а на выходе кодера формируются кодовые символы 10. Далее, на вход кодера поступает третий символ 0, и кодер переходит из состояния 11 в состояние 01 (регистр – в состояние 011), а на выходе кодера формируются кодовые символы 10 и т.д.

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

α(t) → 11 10 10 11 11 01 11.

Принцип построения и работы декодера сверточного кода (алгоритм Витерби)

Для сверточных кодов в отличие от блочных не существует алгеб­раических методов декодирования. В настоящее время для декодирования сверточных кодов с небольшой длиной кодово­го ограничения (q ≤ 10) наиболее широко применяют алгоритм максимального правдоподобия Витерби. Алгоритм Витерби хотя и сложен, но наиболее близок к предельному (наилуч­шему) алгоритму по критерию максимального правдоподобия.

Критерий максимального правдоподобия относится к классу статистических критериев, и поэтому процесс декодирования сверточных кодов со скоростью =k/nвключает следующие этапы:

- статистическая обработка пачек (кадров) по nсимволов принятой кодовой последовательности β(t), поступающей на вход декодера;

- «угадывание» пачек (кадров) по kкодовых символов, которые могли поступить на вход кодера по результатам проведенной статистической обработки пачек (кадров) поnсимволов принятой кодовой последовательности β(t);

- формирование кодовой последовательности на выходе декодера b(t) из «угаданных» пачек (кадров) поkкодовых символов, которые могли поступить на вход кодера.

Рассмотрим принцип работы декодера сверточного кода. Принятая кодовая последовательность β(t), закодированная сверточным кодом со скоростью кода=k/n, поступает на вход декодера (рис. 5.8).

Для более наглядного описания принципа работы декодера сверточного кода, реализованного в соответствии с алгоритмом Витерби, целесообразно использовать представление процесса декодирования в виде расположенного на решетке взвешенного графа (рис.5.10), вершины которого на каждом шаге декодирования соответствуют возможным состояниям кодера, а ребра – возможным переходам кодера из одного состояния в другое.

Рис. 5.10. Решетчатое представление процесса декодирования сверточного кода НСК-1/2 по алгоритму Витерби

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

продолжается. Это существенно упрощает структуру графа декодирования.

При наличии ошибок в принимаемой кодовой последовательности β(t) может оказаться, что более одной вершины на одном или нескольких шагах декодирования имеют одинаковый минималь­ный вес. В этом случае возможны следующие ситуации и, следовательно, варианты выбора пути декодирования:

- на шаге, где есть вершины с одинаковым минимальным весом, путь выбирается от вершины, ребро от которой имеет ми­нимальный вес шага;

- на шаге, где есть вершины с одинаковым минимальным весом и одинаковым весом шагов по отходящим от них ребрам, уста­навливают следующее правило выбора пути: либо всегда выбирают путь по верх­ним ребрам, либо всегда выбирают путь по нижним ребрам.4

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

Сложность алгоритма Витерби заключается в том, что при оптимальном декодированиинеобходима обработка всей принимаемой кодовой последовательности β(t) для декодирования даже первого символа кодируемой кодовой последовательностиa(t). Это условие существенно усложняет схему декодера из-за необходимости вычислять, хранить и анализировать большие объемы данных (веса путей, шагов и вершин).

Параметр декодера, определяющий через сколько последующих шагов (тактов) обработки символов принимаемой кодовой последовательности принимается решение о символе, принятом на данном шаге (такте) декодирования, называется глубиной декодированияlг. Т.е.при оптимальном декодированииглубина декодированияlгдолжна быть не меньше длины передаваемой кодовой последовательностиa(t).

Исправляющая способность сверточного кода при декодировании зависит от параметра, называемого свободным расстоянием сверточного кода dсв к.

Свободное расстояние сверточного кода dсв к равно весу кратчайшего пути кодирования, начинающегося и заканчивающегося в вершине, соответствующей состоянию кодера 00.

Этот путь наиболее наглядно можно проследить по диаграмме состояний кодера.

Свободное расстояние для данного сверточного кода dсв к = 5.

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

Δсв к<,5

где Δсв к– число ошибокна длине памяти кодераnk.

Длина памяти кодера nk – это длина отрезка кодовой последовательности на выходе кодера, на котором сохраняется влияние одной пачки (кадра) кодовой последовательности длиныk, поступающей на вход кодера).

Очевидно, что величина nkзависит от памяти кодера, определяемой кодовым ограничениемq, и от длины пачки (кадра) кодовых символовn, формируемых на выходе кодера при поступлении на вход кодера пачки (кадра) кодовых символов длиныk:

nk=qn.

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

Для упрощения на практике применяют усеченный алгоритм Витерби, при котором ограничивается длина глубины декодирования lг. В этом случае решение о символе, принятом на каждом шаге (такте) декодирования, принимается через (lг– 1) последующих шагов (тактов) обработки символов принимаемой кодовой последовательности. Параметрlгявляется важным параметром декодера сверточного кода, т.к. он определяет требования к длине регистра памяти декодера.

Для алгоритма Витерби установлено [14], что величина lгзаметно влияет на ошибку при принятии решения о переданном кодовом символе лишь до значений (4 – 5)q, поэтому глубину декодирования выбирают из условия:

lг≥ (4 – 5)q,

где q – кодовое ограничение.

Рассмотрим декодирование кодовой последовательности β(t), закодированной ранее кодером НСК-1/2, реализованным по схеме, представленной на рис. 5.9,а.

При отсутствии помех в канале связи кодовая последовательность b(t) на выходе декодера должна быть равна кодовой последовательностиa(t), поступившей на вход кодера (рис. 5.8).

Декодируем принятую кодовую последовательность β(t), используя для наглядности представление процесса декодирования в виде расположенного на решетке взвешенного графа (рис. 5.11).

Рис. 5.11. Решетчатое представление процесса декодирования сверточного кода НСК-1/2 по алгоритму Витерби (кодовая последовательность β(t) принята без ошибок)

Исходное состояние кодера неизвестно, поэтому построение графа декодирования начинается от всех вершин, отображающих возможные состояния кодера.

На каждом шаге декодирования выбираем путь через вершины (вершину) минимального веса:

- 1 шаг. 1. Определяем возможные пути декодирования (рис. 5.11) от вершин, соответствующих исходным состояниям кодера. От каждой вершины отходит по два ребра, отображающих переход кодера в другое состояние при поступлении на его вход символов 0 и 1 соответственно.

2. По диаграмме состояний кодера (рис. 5.9,б) определяем веса ребер по всем возможным путям декодирования.

3. Сравниваем веса ребер с парой символов кодовой последовательности β(t), принятой на первом шаге декодирования, определяя вес шага по каждому из возможных путей декодирования.

4. Определяем веса соответствующих вершин. На рис. 5.11 видно, что на первом шаге декодирования минимальный вес, равный 0, имеют две вершины, соответствующие переходам кодера из исходных состояний 00 и 01 в состояния 10 и 00 соответственно.

Вывод.На первом шаге декодирования невозможно однозначно выявить состояние кодера, при котором сформирована первая пара кодовых символов;

- 2 шаг.Определяем возможные пути декодирования от вершин, соответствующих состояниям кодера 00 и 10, и веса соответствующих ребер и вершин.

На рис. 5.11 видно, что на втором шаге декодирования минимальный вес, равный 0, имеет одна вершина, соответствующая состоянию кодера 11, т.е. получили однозначное предположение о состоянии кодера на втором шаге.

В состояние 11 кодер может перейти только в том случае, если исходное состояние кодера было 00 и на вход кодера на первом и втором шагах кодирования пришли символы 1.

Вывод. На первом и втором шагах декодирования на выходе декодера надо сформировать символы 1;

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

На рис. 5.11 видно, что на третьем шаге декодирования минимальный вес, равный 0, имеет одна вершина, соответствующая состоянию кодера 01. В это состояние кодер может перейти только в том случае, если на его вход пришел символ 0.

Вывод. На третьем шаге декодирования на выходе декодера надо сформировать символ 0.

Далее декодирование осуществляется аналогично.

Окончательное решение о переданном символе на каждом шаге декодирования и его формировании на выходе декодера осуществляется после обработки принятой кодовой последовательности на всю глубину декодирования, т.е. через (lг– 1) = = (12 – 1) = 11 шагов.

В результате декодирования кодовой последовательности β(t) →11 10 10 11 11 01 11 на выходе декодера получим кодовую последовательностьb(t) →11001.

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