Автор работы: Пользователь скрыл имя, 13 Декабря 2012 в 23:34, курсовая работа
Задание
1. Для образующего полинома 110101001 - построить образующую матрицу циклического кода.
2. Закодировать номер варианта, представленный в двоично-десятичном коде в циклическом коде двумя способами: с помощью образующей матрицы и путём деления кодируемой кодовой комбинации с приписанными справа нулями в количестве, равном старшей степени образующего полинома и нахождения контрольных разрядов как остатка от деления. В случаях, когда старший разряд равен нулю, на его месте записать единицу.
3. Разработать функциональную схему кодирующего устройства, исследовать его работу с помощью таблицы состояний при подаче на вход двоичной последовательности, соответствующей пункту 2.
4. Разработать функциональную схему декодирующего устройства, исследовать его работу с помощью таблицы состояний при подаче на его вход кодовой комбинации циклического кода, полученного в пункте 2. Декодирование выполнить для обнаружения ошибок.
Задание на курсовой проект…………………………………………….3
Введение………………………………………………………..…….......4
1.Общие теоретические сведения…………………....................................7
1.1. Виды каналов передачи информации………….………………....18
1.1.1. Идеальные дискретные каналы…………...................................19
1.1.2. Реальные дискретные каналы………………………………….20
1.2. Полимиальное кодирование……………………………………….23
1.3. Циклические коды……………………………………………….....25
1.3.1. Кодирование с использованием циклических кодов………….25
2. Разработка структурной схемы СПИ………………………………….…29
2.1. Делитель кодера…………………....................................................29
2.2. Делитель декодера………………………………………………….35
Заключение…………………………………………………………………40
Список используемой литературы………………………………..……….41
Переход на более высокочастотные диапазоны позволяет получить остронаправленное излучение при малых размерах антенн, уменьшить влияние атмосферных и промышленных помех, организовать большое число широкополосных каналов связи.
По характеру сигналов на входе и выходе каналов различают дискретные, непрерывные и дискретно-непрерывные каналы.
1.1.1.Идеальные дискретные каналы
Кодер обеспечивает преобразование предаваемых символов в электрические кодовые сигналы. В идеальном канале между элементами кодовых сигналов на входе и выходе существуют однозначное соответствие (ошибки в канале отсутствуют). Скорость передачи информации равна производительности кодера (ф.1):
Cк =VкHк [бит/с]. (1)
где Vк=1/L - скорость передачи элементарных кодовых сигналов [сигн./с],
Hк - энтропия кодера [бит/сигн.], L - длительность элементарного кодового
сигнала.
Пропускная способность идеального канала (ф.2):
где mк - основание кода. Пропускная способность является предельной характеристикой канала. Если основание кода равно mк и для передачи одного
элементарного кодового сигнала необходимо время L, то для передачи кодовой комбинации длиной n сигналов потребуется время T = nL. Общее число
кодовых комбинаций длительностью T равно N(T) = mnк. Следовательно, максимальное количество информации в одной кодовой комбинации :
Hмакс =nlogmк.
Пропускная способность равна:
C=
Таким образом, пропускную способность идеального дискретного канала полностью определяет скорость передачи сигналов и основание кода.
Теорема Шеннона для идеального дискретного канала (без доказательства): если ошибки в дискретном канале отсутствуют, можно закодировать сообщение на выходе источника так, чтобы передавать информацию со средней скоростью V, сколь угодно близкой к C. Передавать информацию с V > C невозможно.
Эта теорема служит теоретической основой для построения оптимальных эффективных кодов. Если в процессе кодирования на выходе кодера обеспечить появление равновероятных независимых кодовых сигналов, то каждый элементарный сигнал будет нести максимальное количество информации, производительность кодера будет максимальной и скорость передачи информации приблизится к пропускной способности канала.
1.1.2.Реальные дискретные каналы
В реальных каналах всегда имеются ошибки при передаче сообщений. Ошибки приводят к уменьшению пропускной способности канала и потере информации. Вероятности появления ошибок во многом определяются искажениями сигналов и влиянием помех.
Количество информации, которое содержит принятый символ относительно переданного или в более общем случае один символ относительно другого находят с помощью формулы для вероятности совместного появления символов:
P ( ai,a′ j) = P ( ai)P(a′ j /ai) = P(a′ j)P(ai /a′ j) , (5)
где P (ai) и P(a′ j) - вероятности появления символов ai и a′ j, P( ai /a′ j)-
условная вероятность.
Обозначим принятый кодовый символ ak2, а переданный ai1. Количество информации, которое содержит принятый символ ak2 относительно переданного ai1 определяется как
(6)
где P(ak2,ai 1) - вероятность совместного появления символов ak2, ai 1; P(ai 1), P ( ak2) - вероятности появления ak2, ai1; P(ai1/ak2), P(ak2/ai1) -соответствующие условные вероятности. Если символы появляются независимо, то I(ak2, ai 1) = log1 = 0 . Во всех остальных случаях один символ несет
информацию о другом и I(ak2,ai 1) ≠ 0 .
Среднее количество принятой информации, которое приносит один символ, получим, усредняя (6) по всем i и k, а именно:
Учитывая две формы записи дроби (6), получим две формы записи для количества информации:
(8)
(9)
Выражения (8) и (9) можно записать более наглядно:
I(A2,A1)=H(A1)-H(A1/A2)
,
I(A2,A1) = H(A2)-H(A2/A1)
.
Смысл выражений (10), (11) следующий. Величина H(A1) - это энтропия кодера, а величина H(A1/A2) - это среднее количество информации, потерянное в канале из-за ошибок. Следовательно, соотношение (10) показывает, что среднее количество принятой в одном символе информации можно вычислить как разность энтропий принятого сигнала и помехи. Соотношение (11) используют чаще, так как оно позволяет определить I(A2,A1) через
энтропию помехи, которую определить проще.
Скорость передачи информации в реальных каналах равна
V = Vк I(A1, A2). Используя две последние формулы, получим
V = V к[H(A1)-H(A1/A2)]
= V к[H(A2)-H(A2/A1)]
.
Если ошибок нет, то H(A1/A2) = H(A2/A1) = 0 и формула (12) переходит в формулу для идеального канала, когда V = Vmax.
Пропускная способность реальных дискретных каналов равна
C = maxVк[H(A1)-H(A1/A2)] = maxVк[H(A2)-H(A2/A1)] , (13)
где операция отыскания максимума выполняется по всем способам передачи и обработки сигналов.
Теорема Шеннона для реальных дискретных каналов (без доказательства): если производительность источника сообщений меньше пропускной способности канала, сообщение можно закодировать в сигналы так, чтобы передавать информацию по дискретному каналу с помехами со сколь угодно малой вероятностью ошибки.
Эта теорема является теоретической основой корректирующего кодирования. В ней утверждается, что существует такой код, использование которого позволит обнаружить и исправить практически все ошибки. Задача заключается в отыскании и построении таких кодов.
Пропускная способность реальных каналов
Определим с помощью соотношения (13) пропускную способность реального двоичного симметричного канала без памяти. Предположим, что известна вероятность P0 появления ошибки в канале.
Определим значение max[H (A2)-H(A2/A1)]. Для двоичного канала maxH(A2)=log2 = 1 бит/сигн. Условная энтропия H(A2/A1) - это энтропия помехи, которая определяется по формуле условной энтропии двоичного источника с коррелированными неравновероятными символами:
H(A2/A1) = -P(a1) [P(a1/a1)logP(a1/a1) + P(a2/a1)logP(a2/a1)]-
-P(a2) [P(a2/a2)logP(a2/a2) + P(a1/a2)logP(a1/a2)] . (14)
Подставив значения условных вероятностей появления ошибок, получим H(A2/A1) = -P(a1) [(1-P0)log(1-P0) + P0logP0]-
-P(a2) [(1-P0)log(1-P0) + P0logP0] = -[P(a1) + P(a2)] [(1-P0)log(1-P0) + P0logP0] . Так как по условию нормировки сумма вероятностей в первом сомножителе равна единице, то
H(A2/A1) =
-[(1-P0)log(1-P0) + P0logP0]
.
Пропускная способность двоичного реального канала
C2 =V к[1 + P0logP0+(1-P0)log(1-P0)] . (16)
Анализ зависимости C2(P0) показывает, что в диапазоне изменений
P0∈[0; 0,5] функция C2(P0) является монотонно убывающей. При P0 = 0,5, C2(P0) = 0, это означает, что из-за высокого уровня помех в канале кодовые сигналы на входе и на выходе канала становятся независимыми (принимаемые сигналы не несут информации о передаваемых).
Пропускную способность m-ичного реального канала определяют аналогично
Cm =Vк[logmк +P0logP0(mк -1)-1 +(1-P0)log(1-P0)] . (17)
Из (17) как частный случай следует (16) при mк = 2 . Если P0 → 0 , то пропускная способность реального канала стремится к пропускной способности идеального канала (2).
1.2.Полимиальное кодирование
При полиномиальном кодировании каждое сообщение отождествляется с многочленом, а само кодирование состоит в умножении на фиксированный многочлен. Полиномиальные коды — блочные .
Пусть a = a0 ... am-1 — двоичное сообщение. Тогда сопоставим ему многочлен a(x) = a0 + a1x + … + am-1xm-1. Все вычисления происходят в поле классов вычетов по модулю 2, т. е. от результата любой арифметической операции берется остаток от его деления на 2.
Полиномиальный код с кодирующим многочленом g(x) кодирует слово сообщения a(x) многочленом b(x) = a(x)g(x) = b0 +b1x+···+bn-1xn-1 или кодовым словом из коэффициентов этого многочлена b = b0 ...bn-1. Условия g0 = 0 и
gk = 0 необходимы, потому что в противном случае b0 и bn-1 не будут нести никакой информации, т.к. они всегда будут нулями.
Полиномиальные коды являются групповыми. Это следует из того, что коды, получаемые матричным кодированием, — групповые.
Рассмотрим (m,n)-код с кодирующим многочленом g(x). Строка ошибок
e = e0 ...en-1 останется необнаруженной в том и только в том случае, если соответствующий ей многочлен e(x) = e0 + e1x + ··· + en-1xn-1 делится на g(x).
Действительно, a(x)g(x) + e(x) делится на g(x) тогда и только тогда, когда e(x) делится на g(x). Поэтому любая ошибка, многочлен которой не делится на g(x), будет обнаружена и, соответственно, любая ошибка, многочлен которой делится на g(x), не может быть обнаружена.
Таким образом, обнаружение ошибки при использовании полиномиального кода с кодирующим многочленом g(x) может быть реализовано при помощи алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче произошло искажение данных.
Коды Хэмминга
можно строить как
В 1971 году финскими и советскими математиками было доказано [20], что кроме кодов Хэмминга и Голея других совершенных кодов нет.
Наиболее интересными среди полиномиальных кодов являются циклические коды, в которых вместе с любым кодовым словом вида b0 ... bn-2bn-1 есть кодовое слово bn-1b0 . . . bn-2.
1.3. Циклические коды
Частным и наиболее широко распространенным классом полиномиальных кодов являются циклические коды.
Линейный (n,k)-код называется циклическим, если в результате циклического сдвига кодового слова получается другое кодовое слово данного кода. Другими словами, если U = (U0, U1, ...Un-1 ) является кодовым словом, то и V = ( Un-1,U0,U1 ,... Un-2), полученное циклическим сдвигом U, является кодовым словом данного кода.
Циклические коды привлекательны по двум причинам.
Во-первых, операции кодирования и вычисления синдрома для них выполняются очень просто с использованием сдвиговых регистров.
Во-вторых, этим кодам присуща алгебраическая структура, и можно найти более простые и эффективные способы их декодирования.
Основные свойства циклических кодов:
1. В циклическом (n,k)-коде каждый ненулевой полином должен иметь степень, по крайней мере (n-k), но не более n-1.
2. Существует только один кодовый полином g(x) степени (n-k) вида
, называемый порождающим полиномом кода.
3. Каждый кодовый полином U(x) является кратным g(x), то есть
1.3.1. Кодирование с использованием циклических кодов
Предположим, надо закодировать некоторую информационную последовательность т = ( т0, m1, m2...mk-1 ).
Соответствующий ей полином выглядит следующим образом:
т(х)= m0+ m1
x + m2 x2 +...+mk-1
xk-1
Умножив т(х)на хn-k
получим полином степени п-1 или меньшей:
(20)
Воспользовавшись теоремой о делении полиномов, можно записать
где q(x) и р(х) — частное и остаток от деления полинома на порождающий полином g(x).
Поскольку степень g(x) равна (п-к), то степень р(х) должна быть
(п-к-1) или меньше, а сам полином р(х) будет иметь вид
С учетом правил арифметики в GF(2) данное выражение можно переписать следующим образом:
откуда видно, что полином является кратным g(x) и имеет степень п-1 или меньшую. Следовательно, полином - это кодовый полином, соответствующий кодируемой информационной последовательности т(х).
Раскрыв последнее выражение, получим
что соответствует кодовому слову
U= |
(p0, p1 … pn-k-1, |
m0, т1... mk-1), |
проверочные символы |
информационные символы |