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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

          Идея, лежащая в основе декодера Меггитта, очень проста и  основывается на следующих свойствах циклических кодов:

          -  существует взаимно-однозначное  соответствие между множеством  всех исправляемых ошибок и множеством синдромов;

          -  если S(x) — синдромный многочлен, соответствующий многочлену ошибок    е(x),  то   x×S(x) mod g(x) — синдромный   многочлен, соответствующий x× e(x) mod (xn + 1).

          Равенство а(x) = b(x) mod p(x) читается как а(x), сравнимо с b(x) по модулю р(x)” и означает, что а(x) и b(x) имеют одинаковые остатки от деления на полином p(x).

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

          Следовательно, основным элементом декодера Меггитта является сдвиговый регистр. Структурная схема декодера Меггитта для циклических кодов произвольной длины приведена на рис. 1.15.

          

      Рис. 1.15

          Декодер работает следующим образом. Перед  началом работы содержимое всех разрядов регистров равно нулю. Принимаемая последовательность r в течение первых n тактов вводится в буферный регистр и одновременно с этим в (n-k)-разрядном сдвиговом регистре с обратными связями производится ее деление на порождающий полином g(x).

          Через n тактов в буферном регистре оказывается принятое слово r , a в регистре синдрома — остаток от деления вектора ошибки на порождающий полином.

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

          После этого синдромный и буферный регистры один раз циклически сдвигаются. Это реализует умножение S(x) на x и деление на g(x). Содержимое  ячеек синдромного регистра теперь равно остатку от деления x×S(x) на g(x) или синдрому ошибки x× е(x) mod (Хn + 1).

          Если  новый синдром совпадает с  одним их табличных, то исправляется очередная ошибка и т.д. Через  n тактов все позиции будут, таким образом, исправлены.

          Рассмотрим работу декодера Меггитта для циклического (7,4)-кода, исправляющего одиночную ошибку. Схема декодера изображена на рис. 1.16.

        

          Рис. 1.16

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

          Полином  ошибки в старшем разряде для  (7,4)-кода  Хемминга  имеет  вид  е6 (x) =  x6, соответствующий ему синдромный  полином S6 (x) =  1 + x3 ( S = (101)), детектор ошибки настроен на это значение синдрома.

          Пусть, например, передана последовательность U = (1001011), ей соответствует кодовый полином U(x) = 1 + x3 + x5 + x6. Произошла ошибка в третьей позиции е(x) = x3, принятый вектор имеет вид r = (1000011), его полином r(x) = 1 + x5 + x6.

          Kогда  принятая последовательность полностью  входит в буферный регистр,  в регистре синдрома оказывается  синдром, соответствующий ошибке  е(x) = x3 S3 = (110). Поскольку он не совпадает с табличным для е6, на выходе детектора ошибок будет 0 и исправления не происходит. [13]

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

          Последовательность  состояний регистров декодера в  процессе декодирования показана на рис. 1.17. 
       
       
       
       
       

      Рис. 1.17

           Таким образом, исправление ошибки в декодере Меггитта осуществляется за 2×n тактов: в течение n тактов производится ввод принятой последовательности в буферный регистр, в течение l тактов — исправление ошибки, и еще в течение n - l  - восстановление буферного регистра в исходное состояние с исправленным словом. Простота декодера достигается увеличением времени декодирования.

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

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

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

          При использовании сверточных кодов  поток данных разбивается на гораздо меньшие блоки длиной k символов (в частном случае k0 = 1), которые называются кадрами информационных символов.

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

          Развитие  теории и практики сверточных кодов  заметно отличается от развития блочных кодов. При построении блочных кодов и методов их декодирования широко использовались алгебраические методы. В случае сверточных кодов это не так. Большинство хороших сверточных кодов было найдено путем просмотра с помощью ЭВМ большого числа кодов и последующего выбора кодов с хорошими свойствами. Декодирование сверточных кодов производится методами, близкими к методам максимального правдоподобия, причем в этом случае они реализуются достаточно просто. [16] 
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

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

      Основными характеристиками сверточных кодов  являются величины:

      -   k0 – размер кадра информационных символов;

    • n0 – размер кадра кодовых символов;
    • m – длина памяти кода;
    • k = (m+1) × k -  информационная длина слова;
    • n = (m+1) × n0 -  кодовая длина блока.

          Кодовая длина блока - это длина кодовой последовательности, на которой сохраняется влияние одного кадра информационных символов.[12]

          Наконец, сверточный код имеет еще один важный параметр - скорость R = k/n, которая характеризует степень избыточности кода, вводимой для обеспечения  исправляющих свойств кода.

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

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

          Примеры схем кодеров для систематического (8,4) и несистематического сверточных (6,3)-кодов приведены на рис. 2.1  и 2.2.

       

        Рис. 2.1       Рис. 2.2

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

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

          Импульсная  переходная характеристика фильтра (ИПХ) (а кодер сверточного кода, по сути дела, является фильтром) есть реакция на единичное воздействие вида = (10000..... Для кодеров, изображенных на  рис. 2.1 и 2.2, соответствующие импульсные характеристики будут иметь вид:

                                       Hа = (11.00.00.01.00.00… ,                                      (2.1) 

                                      Hб = (11.10.11.00.00.00… .                                       (2.2)

            Еще одна форма задания сверточных кодов – это использование порождающих полиномов, однозначно связанных с ИПХ эквивалентного фильтра:

                                               Hа(x) = 1 + x + x7,                                                   (2.3)

                                         Hб(x) = 1 + x + x2 + x4 + x5.                                        (2.4)

          При этом кодовая последовательность U на выходе сверточного кодера получается в результате свертки входной информационной последовательности  m   с импульсной переходной характеристикой  H.

          Рассмотрим  примеры кодирования последовательностей с использованием импульсной характеристики эквивалентного фильтра.

          Пусть m = (110 ...  , тогда для кодера с ИПХ   H = (11.00.00.01.00.00....

      U = 11.00.00.01.00.00… 
                  11.00.00.01.00… 
       
      U  = 11.11.00.01.01.00.00… ,

      или  m  = (1011000…

      U = 11.00.00.01.00.00.00… 
                       11.00.00.01.00… 
                            11.00.00.01… 
       
      U = 11.00.11.10.00.01.01.00
      … .     

          Иногда  удобнее рассматривать полный порождающий  полином сверточного кода G(x) как совокупность нескольких многочленов меньших степеней, соответствующих ячейкам выходного регистра кодера. Так, для кодера рис. 2.2 соответствующие частичные порождающие полиномы будут следующими:

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