Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Конспект ТЭС 2 сем

.pdf
Скачиваний:
39
Добавлен:
11.05.2015
Размер:
1.45 Mб
Скачать

1 КОДИРОВАНИЕ СИГНАЛОВ

1.1 основные понятия

Кодирование – преобразование элементов дискретного сообщения в последовательности кодовых символов. Обратное преобразование – декодирование.

Устройства, осуществляющие эти операции автоматически, называются соответственно кодером и декодером. Кодек – устройство, объединяющее кодер и декодер.

Код – алгоритм (правило), по которому осуществляется кодирование.

Кодовая комбинация (слово) – последовательность кодовых символов, соответствующая одному элементу дискретного сообщения.

Кодовый алфавит – весь набор кодовых символов.

Основание кода m – число символов в кодовом алфавите. Если m=2 код называ-

ется двоичным, m>2 – многопозиционным (недвоичным).

Разряд – значащая позиция кодового слова.

Разрядность (значность) кода n – число символов в кодовой комбинации. Если n=const, то код называется равномерным, n≠const неравномерным.

Кодеры и декодеры легче сделать для равномерных двоичных кодов.

1.2 Система передачи дискретных сообщений

Источник

Кодер

Криптогра

Кодер

Модуля

сообщения

источника

фический

канала

тор

 

кодер

 

 

 

 

 

 

 

Помехи

Канал

 

 

 

Перехватчик

связи

 

 

 

 

Получатель

Декодер

Криптогр

Декодер

Демод

афически

сообщения

источника

канала

улятор

й декодер

 

 

 

 

Рисунок 1.1 – Структурная схема системы передачи дискретных сообщений.

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

Кодирование источника (сжатие данных) применяется для снижения технических затрат на хранение и передачу информации.

Криптографическое кодирование (шифрование) применяется для предотвращения несанкционированного доступа к информации.

Кодирование канала (помехоустойчивое кодирование) применяется для повышения достоверности передачи информации по каналу с помехами.

1.3 сжатие данных

Сжатие возможно, т.к. данные на выходе источника содержат избыточную и/или плохо различимую информацию.

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

1

Приемы, применяемые в алгоритмах сжатия с потерями:

-использование модели – подбор параметров модели и передача только одних параметров;

-предсказание – предсказание последующего элемента и передача величины ошибки;

-дифференциальное кодирование – передача изменений последующего элемента при сравнении с предыдущим.

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

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

-кодирование длин последовательностей – передача числа повторяющихся элементов;

-кодирование словаря – использование ссылок на переданные ранее последовательности, а не их повторение;

-неравномерное кодирование – более вероятным символам присваиваются более короткие кодовые слова.

1.4 Кодирование словаря

Позволяет уменьшить избыточность, вызванную зависимостью между символами. Идея кодирования словаря состоит в замене часто встречающихся последовательностей символов ссылками на образцы, хранящиеся в специально создаваемой таблице (словаре). Данный подход основан на алгоритме LZ, описанном в работах израильских исследователей Зива и Лемпеля.

1.5 Неравномерное кодирование

Позволяет уменьшить избыточность, вызванную неравной вероятностью символов. Идея неравномерного кодирования состоит в использовании коротких кодовых слов для часто встречающихся символов и длинных – для редко возникающих. Данный подход основан на алгоритмах Шеннона-Фано и Хаффмана.

Коды Шеннона-Фано и Хаффмана являются префиксными. Префиксный код – код, обладающий тем свойством, что никакое более короткое слово не является началом (префиксом) другого более длинного слова. Такой код всегда однозначно декодируем. Обратное неверно.

Код Шеннона-Фано строится следующим образом. Символы источника выписываются в порядке убывания вероятностей (частот) их появления. Затем эти символы разбиваются на две части, верхнюю и нижнюю, так, чтобы суммарные вероятности этих частей были по возможности одинаковыми. Для символов верхней части в качестве первого символа кодового слова используется 1, а нижней – 0. Затем каждая из этих частей делится еще раз пополам и записывается второй символ кодового слова. Процесс повторяется до тех пор, пока в каждой из полученных частей не останется по одному символу.

Пример1.1:

Таблица 1.1 – Построение кода Шеннона-Фано.

Символ

Вероятность

Этапы разбиения

Код

 

 

1

2

3

4

 

а1

0,40

1

 

 

 

1

а2

0,35

0

1

 

 

01

2

а3

0,10

0

0

1

 

001

а4

0,10

0

0

0

1

0001

а5

0,05

0

0

0

0

0000

Алгоритм Шеннона-Фано не всегда приводит к построению однозначного кода с наименьшей средней длиной кодового слова. От отмеченных недостатков свободен алгоритм Хаффмана.

Код Хаффмана строится следующим образом. Символы источника располагают в порядке убывания вероятностей (частот) их появления. Два самых последних символа объединяют в один вспомогательный, которому приписывают суммарную вероятность. Полученные символы вновь располагают в порядке убывания вероятностей, а два последних объединяют. Процесс продолжается до тех пор, пока не останется единственный вспомогательный символ с вероятностью 1. Для нахождения кодовых комбинаций строится кодовое дерево. Из точки, соответствующей вероятности 1, направляются две ветви. Ветви с большей вероятностью присваивается символ 1, с меньшей – 0. Такое ветвление продолжается до достижения вероятности каждого символа. Двигаясь по кодовому дереву сверху вниз, записывают для каждого символа кодовую комбинацию.

Пример1.2:

Таблица 1.2 – Построение кода Хаффмана.

Символ

Вероятность

Объединение симво-

Код

 

 

 

лов

 

 

а1

0,40

0,40

0,40

0,60

1,00

0

а2

0,35

0,35

0,35

0,40

 

11

а3

0,10

0,15

0,25

 

 

100

а4

0,10

0,10

 

 

 

1011

а5

0,05

 

 

 

 

1010

 

 

 

 

 

1,00

 

 

0,06

 

 

«1»

«0»

0,04

 

 

 

 

 

0,35

«1»

«0»

0,25

 

а1

 

 

 

 

 

а2

 

0,15

«1» «0»

0,10

 

 

0,10

«1»

«0» 0,05

а3

 

 

 

а4

 

а5

 

 

Рисунок 1.2 – Кодовое дерево для кода Хаффмана.

Домашнее задание:

1.[3.1.2] с.13…16; [3.1.3] с.174…176;

[3.1.5] с. 109…112, 131…135, 297…299; [3.1.14] с. 146…155; [3.1.15] с.11…14.

2.Файл состоит из некоторой символьной строки:

«aaaaaaaaaabbbbbbbbccccccdddddeeeefff».

3

Закодировать символы кодами Шеннона-Фано и Хаффмана и оценить достигнутую степень сжатия.

РЕШЕНИЕ ЗАДАЧИ ДОМАШНЕГО ЗАДАНИЯ:

Рассчитаем частоты появления символов: υ(а)=10/36=0,28; υ(b)=8/36=0,22;

υ(c)=6/36=0,17; υ(d)=5/36=0,14; υ(e)=4/36=0,11; υ(f)=0,08.

Таблица 1.3 – Построение кода Шеннона-Фано.

Символ

Частота

Этапы разбиения

Код

 

 

1

2

3

 

a

0,28

1

1

 

11

b

0,22

1

0

 

10

c

0,17

0

1

1

011

d

0,14

0

1

0

010

e

0,11

0

0

1

001

f

0,08

0

0

0

000

Достигнутая в результате кодирования степень сжатия определяется коэффициентом сжатия:

Ксж = кк0 ,

m

где к0 – первоначальный размер данных; кm – размер данных в сжатом виде.

При кодировании кодом Шеннона-Фано обеспечивается коэффициент сжатия:

Ксж =36∙¯|log26|¯/(10∙2+8∙2+6∙3+5∙3+4∙3+3∙3)=108/90=1,2,

где 36 – количество символов в файле;

¯|log26|¯ - минимальная длина кодовой комбинации при кодировании равномерным кодом (¯|.|¯ обозначает ближайшее целое число, большее log26);

10, 8, 6, 5, 4, 3 – число символов a, b, c, d, e, f в файле;

2, 2, 3, 3, 3, 3 – длина кодовых комбинаций кода Шеннона-Фано, соответствую-

щих символам a, b, c, d, e, f (см. таблицу 1.1).

 

 

 

 

 

Таблица 1.3 – Построение кода Хаффмана.

 

 

 

 

Символ

Частота

 

Объединение символов

 

Код

 

a

 

 

0,28

 

 

0,28

0,31

0,41

0,59

1,00

 

10

 

b

 

 

0,22

 

 

0,22

0,28

0,31

0,41

 

 

01

 

c

 

 

0,17

 

 

0,19

0,22

0,28

 

 

 

111

 

d

 

 

0,14

 

 

0,17

0,19

 

 

 

 

110

 

e

 

 

0,11

 

 

1,14

 

 

 

 

 

001

 

f

 

 

0,08

 

 

 

 

 

 

 

 

000

 

 

 

 

 

 

 

 

 

1,00

 

 

 

 

 

 

 

 

 

0,59

 

«1»

 

«0»

 

0,41

 

 

 

 

 

0,31

«1»

 

«0» 0,28 0,22 «1»

«0»

0,19

 

 

0,17

«1»

«0»

0,14

a

 

b

0,11

«1»

«0

0,17

 

 

 

 

 

 

 

 

 

»

 

с

 

d

 

 

 

 

 

 

e

f

 

Рисунок 1.3 – Кодовое дерево для кода Хаффмана.

4

При кодировании кодом Хаффмана обеспечивается степень сжатия:

Ксж=36∙¯|log26|¯/(10∙2+8∙2+6∙3+5∙3+4∙3+3∙3)=108/90=1,2.

2 ПОМЕХОУСТОЙЧИВОЕ (КОРРЕКТИРУЮЩЕЕ) КОДИРОВАНИЕ

2.1Оосновные понятия

Помехоустойчивое кодирование используется в различных системах связи, в сетях ЭВМ, в бытовой и профессиональной аудио- и видеотехнике.

Любой помехоустойчивый код является избыточным.

Избыточные коды – коды, в которых для передачи информации используются не все возможные кодовые слова. Используемые кодовые слова называются разрешенными. Их число – мощность кода М . Неиспользуемые кодовые слова считают-

ся запрещенными.

Пример 2.1:

Рассмотрим трехразрядный (n=3) двоичный (m=2) код.

Безызбыточный код

Избыточный код

 

Разрешенные ко-

Запрещенные ко-

 

довые слова

довые слова

000

000

 

001

 

001

010

010

 

011

 

011

100

100

 

101

 

101

110

110

 

111

 

111

Мбезыззб. = mn = 23 = 8

Мизб. = 4

< Мбезыззб.

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

Пример 2.2:

Безызбыточный код

 

 

Избыточный код

 

 

 

011*

 

 

 

 

011*

 

010

Канал

 

010

 

Канал

 

Разрешенное

 

Разрешенное

 

Разрешенное

 

Запрещенное

 

слово

t=1

 

слово

 

t=1

 

слово

 

 

слово

 

Нет возможности контролировать

 

Есть возможность контролировать

 

 

ошибки.

 

 

 

 

ошибки.

 

 

Корректирующая способность кода – способность кода контролировать (обна-

руживать и исправлять) ошибки. Она определяется кодовым расстоянием.

Кодовое расстояние – минимальное расстояние Хэмминга для заданного кода:

 

 

d0

= min d X .

 

 

 

 

Расстояние Хэмминга – степень различия между i -ым и j -ым кодовыми словами:

5

d X = dist(bi ,bj ) .

Определяется числом несовпадающих в них разрядов. Задача 2.1:

Определить d0 для избыточного кода из примера 2.1. Решение:

d X 1,2

= dist(

 

 

 

 

 

,

 

 

 

 

 

 

 

 

) = dist(000,010) =1;

b1

b2

d X 1,3

= dist(

 

 

 

,

 

 

 

 

 

) = dist(000,100) =1;

b1

b3

d X 1,4

= dist(

 

 

 

,

 

 

 

 

) = dist(000,110) = 2;

b1

b4

d X 2,3

= dist(

 

 

 

,

 

 

 

) = dist(010,100) = 2 ;

b2

b3

d X 2,4

= dist(

 

 

,

 

 

) = dist(010,110) =1;

b2

b4

d X 3,4

= dist(

 

,

 

) = dist(100,110) =1;

b3

b4

d0 =1.

Методы декодирования помехоустойчивых кодов:

-декодирование с обнаружением ошибок – обеспечивает стирание или особую от-

метку той части сообщения, в которой обнаружены ошибки;

-декодирование с исправлением ошибок – позволяет получить верное сообщение,

несмотря на наличие искажений отдельных символов.

Существует также смешанное декодирование. Один и тот же код можно использовать при различных методах декодирования.

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

1. Для обнаружения ошибок кратности to кодовое расстояние должно удовлетворять соотношению:

d0 to +1.

2. Для исправления ошибок кратности tи и одновременного обнаружения ошибок кратности to (to tи ) кодовое расстояние должно удовлетворять соотношению:

d0 to +tи +1.

Задача 2.2:

Определить корректирующую способность кода, имеющего d0 = 3 . То же для

кода с d0 = 4 . Решение:

Формулы для определения обнаруживающей и исправляющей способности ко-

да:

 

 

 

to d0 1,

 

 

 

 

tи (d0 1(2)) / 2 .

 

Для кода с d0

= 3

to = 2

(из правила 1:

3 = 2 +1) или tи =1 и tо =1

(из правила 2:

3 =1+1+1).

 

 

(из правила 1:

4 = 3 +1) или tи =1 и to = 2

(из правила 2:

Для кода с d0

= 4

to = 3

4=1+ 2 +1).

2.2Классификация помехоустойчивых кодов

6

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

Блочные коды

Непрерывные коды

Равном

коды

Разделимые коды

Неразделимые коды

Линейные коды

Нелинейные коды

Систематические коды

Несистематические коды

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

(n, k) .

Для коррекции ошибок неравномерные коды почти не применяют.

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

По алгоритму формирования проверочных символов различают линейные (про-

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

По способу передачи кодовых символов различают систематические (в канал связи первоначально передаются информационные символы, а затем – проверочные) и несистематические коды (в канал связи кодовые символы передаются по «псевдослучайному» закону).

2.3 Код с постоянным весом

Это неразделимый блочный код, каждая кодовая комбинация которого имеет одинаковое число единиц (одинаковый вес).

Если вес принятой кодовой комбинации отличается от заданного, то выносится решение об ошибке. Данный код обладает d0 = 2 и обнаруживает все ошибки нечет-

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

Пример 2.3:

Таким кодом является код МТК-3 – семиразрядный код, каждая кодовая комбинация которого содержит три единицы.

ДОМАШНЕЕ ЗАДАНИЕ: 1 [3.1.1] с.272…277; [3.1.2] с.307…313;

7

[3.1.3] с.185…189, 193; [3.1.5] с.137…144; [3.1.14] с.49…52; [3.1.15] с.12…23.

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

3 СИСТЕМАТИЧЕСКИЕ ЛИНЕЙНЫЕ БЛОЧНЫЕ КОДЫ (СЛБК)

3.1 Основные понятия

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

Они задаются с помощью порождающей G и проверочной H матриц, которые связаны основным уравнением кодирования:

G H T = 0 ,

где H T - транспонированная проверочная матрица (строки H переписаны в столбцы

H T );

0 - нулевая матрица.

Матрица G содержит k строк и n столбцов, ее элементами являются нули и единицы. Строками матрицы G являются любые ненулевые линейно независимые векторы, отстоящие друг от друга не менее, чем на заданное кодовое расстояние. Понятие линейно независимые означает, что каким бы образом мы не суммировали по модулю два различные строки матрицы, мы не получим суммы, равной нулю.

С помощью матрицы G можно создавать линейный код: суммируя в различном сочетании строки матрицы G , получают все (кроме нулевой) комбинации кода. Полученный код содержит M = 2k кодовых слов длины n .

Если две порождающие матрицы различаются только порядком расположения столбцов, то определяемые ими коды называются эквивалентными. Они имеют одинаковые кодовые расстояния и, следовательно, одинаковые способности обнаруживать и исправлять ошибки.

Пример 3.1:

Код Рида-Маллера (8, 4) задается следующей порождающей матрицей:

 

1

1

1

1

1

1

1

1

 

 

 

 

G =

0

1

0

1

0

1

0

1

 

.

 

0

0

1

1

0

0

1

1

 

 

 

0

0

0

0

1

1

1

1

 

 

Матрица H содержит r = n k строк и n

столбцов. Единицы в каждой строке

этой матрицы показывают, какие символы кодовой комбинации нужно сложить по модулю два, чтобы получить нуль. Используется для проверки правильности приема.

Чаще всего применяют систематические линейные коды. Такие коды задаются матрицами в систематической (приведено-ступенчатой или канонической) форме:

G =

 

Ik

G*

 

,

 

 

H =

 

H *

Ir

 

 

 

 

8

H * = G*T

где Ik , Ir - единичные подматрицы размерностью k ×k и r ×r соответственно;

G* = H *T - прямоугольная подматрица размерностью k ×r ; - прямоугольная подматрица размерностью r ×k .

Пример 3.2:

Систематический код Рида-Маллера (8, 4) задается порождающей матрицей:

 

 

 

 

 

 

1

0

0

0

1

1

1

0

 

 

 

 

 

 

 

 

 

G =

 

I4

G*

 

=

0

1

0

0

1

1

0

1

 

.

 

 

 

 

 

 

 

 

0

0

1

0

1

0

1

1

 

 

 

 

 

 

 

 

0

0

0

1

0

1

1

1

 

 

Найдем проверочную матрицу:

 

 

 

 

 

1

1

1

0

1

0

0

0

 

 

 

 

 

 

 

 

H =

 

G*T I4

 

=

1

1

0

1

0

1

0

0

 

.

 

 

 

 

 

 

 

1

0

1

1

0

0

1

0

 

 

 

 

 

 

 

0

1

1

1

0

0

0

1

 

 

3.2 Кодирование информации

1) С помощью матрицы G : операция кодирования заключается в умножении информационного вектора a на порождающую матрицу G , т.е.

 

 

 

 

 

 

 

 

 

 

= a G ,

 

 

 

 

 

где

 

- кодовый вектор.

 

 

 

b

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 3.3:

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим кодирование

информационного

слова

 

= (1011) кодом Рида-

 

a

Маллера (8, 4):

1

1

1

1

1

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= (1011)

0

1

0

1

0

1

0

1

=(11000011).

 

 

b

 

 

 

 

 

0

0

1

1

0

0

1

1

 

 

 

 

 

 

 

 

0

0

0

0

1

1

1

1

 

 

 

2) С помощью матрицы Н : в СЛБК информационные символы слова а входят без изменения в кодовое слово b и занимают в нем первые k позиций, к ним добавляются r = n k проверочных символов, правила формирования которых задает проверочная матрица.

Единицы в i -ой строке подматрицы H * указывают, какие информационные символы необходимо просуммировать по модулю два, чтобы получить i -ый проверочный.

Пример 3.4:

Из матрицы H систематического кода Рида-Маллера запишем правила формирования проверочных символов:

b5 = a1 a2 a3 , b6 = a1 a2 a4 , b7 = a1 a3 a4 , b8 = a2 a3 a4 .

Тогда для a = (1011) b = (1011 0010) .

3.3 Код с четным числом единиц

Это простейший систематический код с параметрами (n, k) = (k +1, k) . Он строится добавлением к комбинации из k информационных символов одного проверочно-

9

го, равного сумме всех информационных символов по модулю два. При этом каждая кодовая комбинация содержит четное число единиц. Если в принятой кодовой комбинации окажется нечетное число единиц, то делается вывод о наличии в ней ошибок.

Порождающая и проверочная матрицы такого кода:

 

 

 

k

 

 

 

 

 

 

 

1

0

...

0

1

 

 

 

G =

0

1

...

0

1

k ,

 

... ... ... ... ...

 

 

0

0

0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n=k +1

H = 1 1 ... 1 1 .

Уравнение кодирования: bk +1 = a1 a2 ... ak .

Этот код имеет

и позволяет обнаруживать любое нечетное число ошибок.

d0 = 2

3.4Коды хэмминга

Это линейные блочные коды с параметрами (n, k) = (2m 1,2m 1m) , где m - по-

ложительное целое число, r = m - число проверочных символов. Для задания кодов Хэмминга обычно используется проверочная матрица. Ее столбцами являются все ненулевые двоичные числа длиной m .

Они обладают кодовым расстоянием d0 = 3 и способны исправлять только одну

или обнаруживать две ошибки.

Примеры полных кодов Хэмминга: (7, 4), (15, 11), (31, 26), (63, 57).

Пример 3.5:

Рассмотрим код Хэмминга (7, 4). Проверочная матрица:

H =

 

0

0

 

 

0

1

1

1

1

 

=[Перемещая столбцы, приводим ее к систематической

 

 

 

0

1

 

 

1

0

0

1

1

 

 

 

1

0

 

 

1

0

1

0

1

 

 

 

 

 

форме] =

 

0

1

1

1

1

0

0

 

 

 

 

 

1

0

1

1

0

1

0

 

.

 

 

 

 

 

1

1

0

1

0

0

1

 

 

Порождающая матрица:

 

1

0

0

0

0

1

1

 

 

 

G =

0

1

0

0

1

0

1

.

 

0

0

1

0

1

1

0

 

 

0

0

0

1

1

1

1

 

Модификациями кодов Хэмминга являются укороченные и удлиненные коды Хэмминга.

Чтобы получить проверочную матрицу укороченного кода Хэмминга, необходимо в проверочной матрице полного кода исключить любые Т столбцов, относящиеся к информационным разрядам, где Т - параметр укорочения.

Удлиненные коды Хэмминга получаются путем введения дополнительной проверки на четность всех символов кодового слова.

10