Курсовая работа: Анализ и оптимизация цифровой системы связи
Для обнаружения ошибок выбираем циклический код. Из всех известных помехоустойчивых кодов циклические коды являются наиболее простыми и эффективными. Эти коды могут быть использованы как для обнаружения и исправления независимых ошибок, так и, в особенности, для обнаружения и исправления серийных ошибок. Основное их свойство состоит в том, что каждая кодовая комбинация может быть получена путём циклической перестановкой символов комбинаций, принадлежащей этому же коду.
Циклические коды значительно упрощают описание линейного кода, поскольку для них вместо задания элементов двоичной матрицы Ρ требуется задать (n-k+1) двоичных коэффициентов многочлена g(D). Кроме того, они упрощают процедуру кодирования и декодирования для обнаружения ошибок. Действительно, для осуществления кодирования достаточно выполнить перемножение полиномов, что реализуется с помощью линейного регистра, содержащего k ячеек памяти и имеющего обратные связи, соответствующие многочлену h(D) [4].
Циклический код гарантированно обнаруживает ошибки кратностью и исправляет . Поэтому в системах с решающей обратной связью применяется кодирование циклическим кодом.
При обнаружении ошибки на приемной стороне по обратному каналу связи посылается запрос на блок, в котором она была обнаружена, и тогда этот блок передаётся повторно. Так продолжается до тех пор, пока данный блок не будет принят без обнаруженной ошибки. Такая система называется системой с решающей обратной связью (РОС), поскольку решение о приёме блока или о его повторной передаче производится на приёмной стороне. Система с РОС являются эффективным способом повышения помехоустойчивости передачи информации.
При описании процедуры кодирования и декодирования циклическим кодом удобно использовать математический аппарат, основанный на сопоставлении множества кодовых слов с множеством степенных полиномов. Этот аппарат позволяет выявить для циклического кода более простые операции кодирования и декодирования.
Среди всех полиномов, соответствующих кодовым словам циклического кода, имеется ненулевой полином P(x) наименьшей степени. Этот полином полностью определяет соответствующий код и поэтому называется порождающим.
Степень порождающего полинома P(x) равна n - m, свободный член всегда равен единице.
Порождающий полином является делителем всех полиномов, соответствующих кодовым словам циклического кода.
Нулевая комбинация обязательно принадлежит любому линейному циклическому коду и может быть записана как (xn Å 1) mod (xn Å 1) = 0. Следовательно, порождающий полином Р(x) должен быть делителем бинома xn Å 1.
Это даёт конструктивную возможности построения циклического кода заданной длины n: любой полином, являющийся делителем бинома xn Å 1, можно использовать в качестве порождающего.
При построении циклических кодов, пользуются таблицами разложения биномов xn Å 1 на неприводимые полиномы, т.е. полиномы, которые нельзя представить в виде произведения двух других полиномов (см. приложение А).
Любой неприводимый полином, входящий в разложение бинома xn Å 1, а также любое произведение неприводимых полиномов может быть выбрано в качестве порождающего полинома, что дает соответствующий циклический код.
Для построения систематического циклического кода используется следующее правило построения кодовых слов
,
где R(x) – остаток от деления m(x)×xn - m на Р(x).
Степень R(x), очевидно, меньше (n - m), а потому в кодовом слове первые m, символов будут совпадать с информационными, а последние n - m символов будут проверочными.
В основу процедуры декодирования циклических кодов может быть положено свойство их делимости без остатка на порождающий полином Р(x).
В режиме обнаружения ошибок, если принятая последовательность делится без остатка на Р(x), делается вывод, что ошибки нет или она не обнаруживается. В противном случае комбинация бракуется.
В режиме исправления ошибок декодер вычисляет остаток R(x) от деления принятой последовательности F¢(x) на P(x). Этот остаток называют синдромом. Принятый полином F¢(x) представляет собой сумму по модулю два переданного слова F(x) и вектора ошибок Eош (x):
.
Тогда синдром S(x) = F¢(x) modP(x), так как по определению циклического кода F(x) mod P(x) = 0. Определенному синдрому S(x) может быть поставлен в соответствие определенный вектор ошибок Eош (x). Тогда переданное слово F(x) находят, складывая .
Однако один и тот же синдром может соответствовать 2m различным векторам ошибок. Положим, синдром S1 (x) соответствует вектору ошибок E1 (x). Но и все векторы ошибок, равные сумме E1 (x) Å F(x), где F(x) любое кодовое слово, будут давать тот же синдром. Поэтому, поставив в соответствие синдрому S1 (x) вектор ошибок E1 (x), мы будем осуществлять правильное декодирование в случае, когда действительно вектор ошибок равен E1 (x), во всех остальных 2m - 1 случаях декодирование будет ошибочным.
Для уменьшения вероятности ошибки декодирования из всех возможных векторов ошибок, дающих один и тот же синдром, следует выбирать в качестве исправляемого наиболее вероятный в заданном канале.
Например, для ДСК, в котором вероятность P0 ошибочного приёма двоичного символа много меньше вероятности (1 - P0 ) правильного приема, вероятность появления векторов ошибок уменьшается с увеличением их веса i. В этом случае следует исправлять в первую очередь вектор ошибок меньшего веса.
Если кодом могут быть исправлены только все векторы ошибок веса i и меньше, то любой вектор ошибки веса от i + 1 до n, будет приводить к ошибочному декодированию.
Вероятность ошибочного декодирования будет равна вероятности Pn (>i) появления векторов ошибок веса i + 1 и больше в заданном канале. Для ДСК эта вероятность будет равна
.
Общее число различных векторов ошибок, которые может исправлять циклический код, равно числу ненулевых синдромов – 2n - m - 1.
В курсовом проекте необходимо на основании вычисленного в предыдущем пункте значения k выбрать образующий полином по таблице приведенной в приложении А. По выбранному образующему полиному необходимо разработать схему кодера и декодера для случая обнаружения ошибки.
1.5 Показатели эффективности цифровой системы связи