Программная модель помехоустойчивого кодирования

Автор работы: Пользователь скрыл имя, 15 Декабря 2010 в 13:39, курсовая работа

Описание

Цель исследования: на основе теоретического анализа изучить механизм действия помехоустойчивого кодирования.
Объект исследования: код Шеннона – Фано.
В соответствии с целью работы были определены следующие задачи исследования:
1. Изучить основные типы кодов помехоустойчивого кодирования;
2. Исследовать один из выбранных кодов (код Шеннона - Фано)
3. Реализовать код Шеннона – Фано на языке программирования Pascal.

Содержание

Введение……………………………………………………………………………3
Глава 1.
1.1 Основные принципы. Типы кодов …………………………………………...5
1.2 Линейные блочные коды………………………………………………..7
1.2.1 Код с проверкой на четность……………………………………….9
1.2.2 Порождающая матрица линейного блочного кода …………………12
1.2.3 Синдром и обнаружение ошибок ……………………………………16
1.2.4 Синдромное декодирование линейных блочных кодов …………18
1.2.5 Вес и расстояние Хемминга. Способность кодов обнаруживать и исправлять ошибки ………………………………………………………………21
1.3 Циклические коды……………………………………………………..26
1.3.1 Кодирование с использованием циклических кодов……………..27
1.3.2 Вычисление синдрома и исправление ошибок в циклических кодах………………………………………………………………………………32
1.3.3 Неалгебраические методы декодирования циклических кодов …..34
1.4 Сверточные коды……………………………………………………..38
1.4.1 Кодирование с использованием сверточных кодов ………………..39
1.4.2 Синдромное декодирование сверточных кодов………………….43
1.4.3 Декодирование сверточных кодов. Алгоритм Витерби …………46
Глава 2
2.1 Коды Шеннона – Фано (Теоритическая часть)……………………..50
2.2 Описание Кода Шеннона – Фано……………………………………55
Заключение ……………………………………………………………………….56
Литература………………………………………………………………………..57
Приложение1……………………………………………………………………..58

Работа состоит из  1 файл

курсовая.doc

— 877.00 Кб (Скачать документ)
 
 
 

Программная модель помехоустойчивого кодирования

  
 
 
 
 
 
 
 
 
 
 
 

      Содержание 
       

      Введение……………………………………………………………………………3

      Глава 1. 

      1.1 Основные принципы. Типы кодов …………………………………………...5

           1.2 Линейные блочные коды………………………………………………..7 

           1.2.1 Код с проверкой на четность……………………………………….9

           1.2.2 Порождающая матрица линейного блочного кода …………………12

           1.2.3 Синдром и обнаружение ошибок ……………………………………16

           1.2.4 Синдромное декодирование линейных блочных кодов …………18

           1.2.5 Вес и расстояние Хемминга. Способность кодов обнаруживать  и исправлять ошибки ………………………………………………………………21

           1.3 Циклические коды……………………………………………………..26

           1.3.1 Кодирование с использованием циклических кодов……………..27

           1.3.2 Вычисление  синдрома  и исправление  ошибок  в циклических кодах………………………………………………………………………………32

           1.3.3 Неалгебраические методы декодирования циклических кодов …..34

           1.4 Сверточные коды……………………………………………………..38

           1.4.1 Кодирование с использованием сверточных кодов ………………..39

           1.4.2 Синдромное декодирование сверточных кодов………………….43

           1.4.3 Декодирование сверточных кодов. Алгоритм  Витерби …………46

      Глава 2

           2.1 Коды Шеннона – Фано (Теоритическая часть)……………………..50

           2.2 Описание Кода Шеннона – Фано……………………………………55

      Заключение  ……………………………………………………………………….56

      Литература………………………………………………………………………..57

      Приложение1……………………………………………………………………..58 
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

      Введение

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

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

          Возможность использования кодирования для  уменьшения числа ошибок в канале была теоретически показана К. Шенноном в 1948 году в его работе "Математическая теория связи".  В ней было сделано утверждение, что если скорость создания источником сообщений (производительность источника) не превосходит некоторой величины, называемой пропускной способностью канала, то при соответствующем кодировании и декодировании можно свести вероятность ошибок в канале к нулю.

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

          Цель  исследования: на основе теоретического анализа изучить механизм действия помехоустойчивого кодирования.

          Объект исследования: код Шеннона – Фано.

          В соответствии с целью работы были определены следующие задачи исследования:

          1. Изучить основные типы кодов  помехоустойчивого кодирования;

          2. Исследовать один из выбранных кодов (код Шеннона - Фано)

          3. Реализовать код Шеннона –  Фано на языке программирования  Pascal.

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

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

          Глава 1

           1.1 Основные принципы. Типы кодов

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

          Первое  − использование избыточности. Закодированные последовательности всегда содержат дополнительные, или избыточные, символы. Количество символов в кодовой последовательности Y  всегда больше, чем необходимо  для однозначного представления любого сообщения λi из алфавита.  

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

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

          Кодер для блочных кодов делит непрерывную информационную последовательность  X на блоки-сообщения длиной k символов.

          Кодер канала преобразует блоки-сообщения X в более длинные двоичные последовательности  Y, состоящие из n символов и называемые кодовыми словами. Символы (n-k), добавляемые к каждому блоку-сообщению кодером, называются избыточными. Они не несут никакой дополнительной информации, и их функция состоит в обеспечении возможности обнаруживать (или исправлять) ошибки, возникающие в процессе передачи. [2]

          Как мы ранее показали, k-разрядным двоичным словом можно представить 2k возможных значений из алфавита источника, им соответствует 2k  кодовых слов на выходе кодера.

          Такое множество 2k кодовых слов называется блочным кодом.

          Термин "без памяти" означает, что каждый блок из n символов зависит только от соответствующего информационного блока из k символов и не зависит от других блоков.

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

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

          При передаче по радиоканалам чаще используется сверточное кодирование, которое лучше  приспособлено к побитовой передаче данных. Кроме этого, при одинаковой избыточности сверточные коды, как правило, обладают лучшей исправляющей способностью.[1] 
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

1.2 Линейные блочные коды 

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

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

          Что такое линейный код?

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

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

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

          Полем называется множество математических объектов, которые можно складывать, вычитать, умножать и делить.

          Возьмем простейшее поле, состоящее из двух элементов − нуля - 0 и единицы - 1. Определим для него операции сложения и умножения:

          0+0=0,            0× 0=0;  
             0+1=1,            0
      × 1=0; 
             1+0=1,            1
      × 0=0; 
             1+1=0,            1
      × 1=1.

          Определенные  таким образом операции сложения и умножения называются сложением  по модулю 2 ( mod2 ) и умножением по модулю 2.

          Отметим, что из равенства 1+1 = 0 следует, что -1 = 1 и, соответственно, 1+1=1-1, а из равенства 1×1=1  − что 1:1=1

          Алфавит из двух символов 0 и 1 вместе со сложением  и умножением по  mod2  называется полем из двух элементов и обозначается как GF(2).   К полю GF(2) применимы все методы линейной алгебры, в том числе матричные операции.[4]

          Еще раз обратим внимание на то, что все действия над символами в двоичных кодах выполняются по модулю 2.

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

          Систематический код имеет формат, изображенный на рис. 1.1, то есть содержит неизменную информационную часть длиной k символов и избыточную (проверочную)  длиной  n – k символов.

Информация о работе Программная модель помехоустойчивого кодирования