
Министерство образования и науки Республики Беларусь
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Черная И. И. Хоменок М. Ю.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
К лабораторной работе №3
ОПТИМАЛЬНАЯ ЛИНЕЙНАЯ ФИЛЬТРАЦИЯ.
СОГЛАСОВАННЫЙ ФИЛЬТР И ЕГО ХАРАКТЕРИСТИКА
По дисциплине “Теория электрической связи”
Минск 1998
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Помехоустойчивым (корректирующим), называется код, позволяющий обнаруживать и исправлять ошибки в принимаемой информации.
Возможности обнаруживать и исправлять ошибки возникают за счет дополнительного введения избыточности.
Важнейшей характеристикой кода является кодовое расстояние d. Оно численно равно числу элементов, которыми отличается любая кодовая комбинация от другой. Минимальное кодовое расстояние, или расстояние Хэмминга, численно равно минимальному числу элементов, которыми должны отличаться любые две кодовые комбинации, чтобы их можно было различить.
Кодовое расстояние определяет корректирующую способность кода
(1.1)
где
и
- число обнаруженных и число исправленных
ошибок соответственно, причем всегда
.
Коды классифицируют по различным признакам.
Одним из них является основание кода m, определяемое числом элементов алфавита, используемого для формирования кода. Если m=2, то коды называются двоичными, или бинарными.
Следующим признаком классификации кодов является их деление на блочные и непрерывные.
Блочными называются коды, в которых последовательность элементарных сообщений источника разбивается на отрезки и каждый из них преобразуется в определенную последовательность (блок) кодовых символов, называемую кодовой комбинацией.
Непрерывные коды образуют последовательность символов, неразделяемую на последовательные кодовые комбинации: здесь, в процессе кодирования символы определяются всей последовательностью элементов сообщения. На практике чаще используются блочные коды.
Блочные коды делятся на равномерные и неравномерные.
В равномерных кодах в отличие от неравномерных все кодовые комбинации содержат одинаковое число символов (разрядов) передаваемых по каналу элементами сигнала неизменной длительности.
Равномерные блочные коды делятся на разделимые и неразделимые. В разделимых кодах, элементы разделяются на информационные и проверочные, занимающие определенные места в кодовой комбинации В. неразделимых кодах отсутствует деление элементов кодов комбинаций на информационные и проверочные (телеграфный МККТ код N 3). Для равномерного n-разрядного кода с основанием m число различных блоков, которое можно получить для этого кода (объем алфавита), удовлетворяет неравенству:
(1.2)
Если М=mn, то все возможные кодовые комбинации используют для передачи информации и являются разрешенными. Такой код будет простым (некорректирующим).
Для того чтобы код был корректирующим, необходимо, чтобы:
M<m (1.3)
При
этом неиспользуемые кодовые комбинации
называются запрещенными. Они и определяют
избыточность кода. Избыточность
равномерного кода
определяется выражением:
(1.4)
а относительная скорость кода выражением:
(1.5).
Это важнейшие параметры кода. Исследуемые двоичные коды являются линейными. Линейными называются такие двоичные коды, в которых множество всех разрешенных блоков является линейным пространством относительно операции поразрядного сложения по модулю 2.
Широкое распространение в технике связи получили систематические коды. Это линейные коды, которые строятся следующим образом.
Сначала
строится простой код длиной К., т.е.
множество всех К-последовательностей
двоичных символов, называемых
информационными. Затем к каждой из этих
последовательностей приписывается
проверочных символов, которые получаются
в результате некоторых линейных операций
над информационными символами.
Систематические коды обычно обозначают
как (n,k)-коды. Простейшим примером
систематических кодов является код с
проверкой на четность. Его можно
обозначить (n,n-1)-код, так как
.
Он строится путем добавления к комбинации
из n-1 информационных элементов кода
одного проверочного элемента кода (r),
равного сумме n-1 информационных элементов
кода по модулю 2. После добавления
проверочного элемента кода образуются
кодовые комбинации из n элементов кода,
содержащие только четное число единиц.
При применении этого кода можно
обнаруживать ошибки нечетной кратности,
так как при наличии таких ошибок
принимаемая комбинация в отличие от
переданной содержит нечетное число
единиц. (Заметим, что под кратностью
ошибки понимается число элементов в
кодовой комбинации, принятых ошибочно).
Коды, обладающие большой избыточностью, имеют большую корректирующую способность. К таким кодам можно отнести циклические коды.
Это подкласс линейных систематических двоичных кодов, в которых каждый вектор, получаемый из кодового циклической перестановкой его символов, также принадлежит коду.
Наиболее эффективным среди циклических кодов считаются коды Боуза-Чоудхури-Хоквингема (БЧХ). Кодовое расстояние кодов БЧХ составляет d>5. Циклические коды строятся с использованием образующего полинома. Образующий полином находится как наименьшее общее кратное минимальных нечетных полиномов m(х) (то есть простых неприводимых многочленов) числом от m1(x) до m(х) порядка 2tи-l включительно, (где tи - число исправляемых ошибок)
Р(х) = НОК[m1(x)m3(x)…m2tи-1(х)]. (1.6)
Существуют многочлены одного и того же порядка различных степеней. Степень минимальных многочленов, входящих в (1.6), должна быть равной m, для которого справедливо:
,
(1.7)
где m - целое число. Например, при m=6, n=63; при m=7,n=127; при m=8, п=255 и т.д.. Так как порядок (номер) самого старшего минимального многочлена 2tи-1, то количество многочленов, входящих в (1,6), равно числу исправляемых ошибок tи. Например, если tи=5, то 2tи-1=9 и в (1.7) будут входить многочлены: m1(x), m3(х), m5(x), m7(x). Минимальные многочлены циклических кодов различных степеней сводятся в таблицы. Для нахождения Р(х) необходимо выписать из таблицы все значения минимальных полиномов, соответствующих степени m, до порядка (2tи-1) включительно. При отсутствии в таблице полинома нужного порядка следует взять ближайший меньший, а если среди минимальных многочленов окажутся два одинаковых, то в (1.6) включают один из них. После перемножения выписанных минимальных многочленов по формуле (1.6) можно считать, что образующий полином Р(х) найден.
Для примера рассмотрим правила построения циклического кода, используемого в данной лабораторной работе.
При
построении циклического кода комбинация
из К. информационных элементов кода
отображается полиномом G(х). Так, комбинации
10110 соответствует полином
,
а комбинации 10100 -
полином
.
Если используется r проверочных элементов
кода, то следует образовать произведение
хrG(х). Пусть, полином R(x) отображает
последовательность из r проверочных
элементов кода. Его называют проверочным
полиномом. Тогда комбинации циклического
кода можно отобразить полиномом
F(x)=xrG(x)+R(x).
В кодере и декодере лабораторной работы используется полином вида
.
Произведение хгG(х) следует разделить
на Р(х), а остаток, полученный в результате
деления, и ecть R(x). В нашем случае
,
а
.
В
результате деления последних полиномов
на P(х) находим, что,
a
.
Теперь учитывая, что члены полинома
F(x) располагаются по убывающим степеням,
будем иметь, что
,
a
.
Так, что кодер циклического кода
комбинацию 10110 преобразует в комбинацию
1011001101, а комбинацию 10100 в комбинацию
1010010010.
Пусть принятой комбинации соответствует полином Н (х). Для обнаружения ошибок следует полином Н(х) разделить на образующий полином Р(х). Если деление не дает остатка, то это указывает на отсутствие ошибок в принятой комбинации или на наличие в ней необнаруживаемых ошибок. Если же в результате деления получается остаток, то это означает, что принятая комбинация содержит ошибки. Известно, что H(x)=F(x)+E(x)., где Е(х) - полином ошибок. Этот полином соответствует кодовой комбинации, представляющей собой поразрядную разность (по модулю 2) между принятой и переданной кодовыми комбинациями и характеризует воздействие помех в канале связи на передаваемую кодовую комбинацию.
Тогда:
H(x)/P(x) =F(x)/P(x) + Е (х)/Р(х). (1.8)
Так как F(x) делится на Р(х) без остатка, то остаток деления определяется частным Е(х)/Р(х). При этом каждому возможному полиному ошибок Е(х) .соответствует свой полином Rn(x). Поэтому по полиному Rn(x) можно определить F(x) и затем исправить ошибки.
Одним из важных преимуществ циклических кодов является наличие сравнительно просто реализуемых процедур декодирования.
Относительно простой является процедура мажоритарного декодирования, принимаемая для некоторого класса двоичных линейных, в том числе циклических кодов. Основана она на том, что в этих кодах каждый информационный символ можно несколькими способами выразить через другие символы кодовой комбинации. Если для некоторого символа эти способы проверки дают неодинаковые результаты (одни дают результат "0", а другие - "1" что может быть только в случае ошибочного приема), то окончательное решение по каждому из информационных символов принимается по мажоритарному принципу, т.е. по большинству.Мажоритарное декодирование осуществляется относительно просто, посредством регистров сдвига.
Примером кода, допускающего мажоритарное декодирование, является код (7,3).
Символ
b1 в этом коде связан с другими символами,
следующими соотношениями:
.
Обозначим принятые после демодуляции
b̃1, b̃2, b̃3, b̃4, b̃5, b̃6, b7. Если бы они все
были приняты верно, то для переданного
символа были бы верны следующие четыре
равенства (проверки):
(1.9)
Каждый из символов принятого блока входит только в одну из этих проверок для b1.
Предположим, что один из символов блока принят с ошибкой. Тогда три из проверок дадут одно (правильное) значение b1, а одна проверка, в которой участвует ошибочный символ, дает другое, ошибочное значение. Принимая решение по большинству, получим правильное значение b1. Если бы ошибок было три или больше, то.мажоритарное решение могло бы дать ошибочный результат. При двух ошибочно принятых символах может получиться одинаковое (верное) значение для b1 во всех проверках (например, при ошибочно принятых b̃2 и b̃1) либо в двух проверках b1=0 а в двух других b1=l (например, при ошибочно принятых b̃2 и b̃1). В последнем случае можно только констатировать наличие ошибок.
После принятия решения о символе b1 аналогично проверяют значения b2 и b3. Поскольку рассматриваемый код (7,3) - циклический, соответствующие проверки получаются из (1.9) циклической перестановкой.
В заключение дадим определение другому классу кодов - неблочным или непрерывным кодам.
Простейшим примером этого класса кодов является рекурентный, или цепной код. При его построении информационные элементы чередуются с проверочными, образуя последовательность
(1.10)
где bi - 1-ый информационный элемент, принимающий значение 0 или 1 в соответствии с передаваемым сообщением, a bi,i+1 - проверочный элемент, определяемый уравнением:
,
(1.11)
причем сложение производится по модулю 2,
Ошибка при приеме одного информационного элемента bi приводит к тому, что (1.11) не выполняется для двух проверочных элементов:bi-1 и bi,i+1. Поэтому алгоритм декодирования можно, выразить так: если (1.11) не выполняется для двух соседних проверочных элементов, то следует изменить находящийся между ними информационный элемент на противоположный.
Эффективность применения корректирующих кодов оценивается вероятностью ошибочного декодирования (при декодировании с исправлением ошибок) и вероятностью необнаруженной ошибки (при декодировании с обнаружением, ошибок) в симметричном канале, без памяти. Вероятность возникновения каких-либо ошибок кратности q определяется биномиальным законом (для случая независимых ошибок)
P(q)=C qp q(l-p)n-q , (1.12)
Где Р - вероятность ошибки в одном элементе кодовой комбинации. Для оценки вероятности ошибочного декодирования Pо.д. при коррекции ошибок и для вероятности необнаруженной ошибки Рн.о. при обнаружении ошибок используются следующие формулы:
(1.13)
(1.14)