Рис. 2.3 Схема декодирующего устройства.
Принимаемая последовательность записывается в ячейки буферного регистра и поступает в декодирующий регистр. На k-м такте ключ К1 закрывается, благодаря чему в буферном регистре оказываются лишь информационные разряды принимаемой комбинации. Проверочные разряды продолжают поступать в декодирующий регистр. На n-м такта, после приема последнего разряда кодовой комбинации, открывается ключ К2. Если комбинация принята без ошибок, то в ячейках декодирующего регистра будут записаны нули, а сигнал "ошибка" будет отсутствовать. Наличие же в тех или иных ячейках декодирующего регистра единиц свидетельствует об ошибках в принимаемой информации. На выходе схемы ИЛИ в таком случае появляется сигнал "ошибка", который может быть использован для стирания ошибочно принятой информации, накопленной в буферном регистре.
В табл.2.2 приведены значения сформированных комбинаций синдрома в ячейках декодирующего регистра.
Табл.2.2. Процесс формирования проверочных разрядов синдрома в декодирующем устройстве.
состояние ячеек | |||||
инф | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 1 |
Итак, синдром (001) отличен от нуля, что свидетельствует о наличии ошибки. Исправление последней производится следующим образом: ключ К2 отключает декодирующий регистр от входа декодирующего устройства и в буферный и декодирующий регистры подаются тактовые импульсы. Номер такта, при котором в схему И считывается комбинация синдрома 100, совпадает с номером искаженного разряда кодовой комбинации.
3 ЛАБОРАТОРНАЯ РАБОТА №2
Тема: «Исследование сверточного кода»
Цель работы:
1. Изучить работу кодера и декодера сверточных кодов по алгоритму Витерби.
1. Проанализировать исправляющую способность декодера.
Расчеты:
Сверточные коды можно рассматривать как частный случай блоковых кодов, но наличие сверточной структуры наделяет его дополнительными свойствами, улучшающими его характеристики. Как любой корректирующий код, сверточные коды защищают информацию, добавляя избыточные символы. Кодирующее устройство сверточного кода со скоростью R = k/n (рис. 3.1) обрабатывает входную последовательность, состоящую их k информационных символов, и вычисляет п кодовых (канальных) символов (n > к). Если один (например первый) из n символов текущего блока повторяет текущий информационный бит, код называется систематическим.
Рис.3.1 Кодирующее устройство сверточного кода со скоростью R = k/n.
Сверточный кодер с кодовым ограничением v представляет собой регистр памяти для хранения т информационных символов и преобразователь информационной последовательности в кодовую последовательность. Процесс кодирования производится непрерывно. Информационные двоичные символы {ai} поступают на вход регистра сдвига с т ячейками, в котором символы кодовой последовательности формируются суммированием по модулю 2 символов с выходов некоторых ячеек. Подключение сумматоров к ячейкам регистра задается генераторными полиномами g1(x) и g2(x).
Будем полагать, что кодирование производится с использованием сверточного (7,5)-кода. Схема сверточного кодера в этом случае будет иметь вид (рис.3.2)
Рис. 3.2 Схема сверточного кодера для кода (7,5).
Алгоритм функционирования такого кодера поясняется следующей диаграммой (рис. 3.3). Решетчатая диаграмма является разверткой диаграммы состояний во времени (рис.3.4).
Рис. 3.3 Алгоритм функционирования кодера (7,5).
Рис. 3.4 Диаграмма состояний сверточного кодера указанной структуры.
Сверточный кодер можно рассматривать как постоянный во времени конечный автомат, структура которого является периодической и может быть описана с помощью различных диаграмм. Например, сверточный кодер может быть описан диаграммой состояний. Диаграмма представляет собой направленный граф и описывает все возможные переходы кодера из одного состояния в другое, а также содержит выходные символы кодера, которые сопровождают эти переходы. Пример диаграммы состояний показан на рисунке 3.4. В кружках указаны четыре возможных состояния кодера 00, 10, 01, 11, линиями со стрелками - возможные переходы. Сплошная линия отмечает переходы, совершаемые при поступлении на вход кодирующего устройства информационного символа 0, пунктирная - при поступлении символа 1. Символы около линий обозначают символы на входе и выходе кодера, соответствующие данному переходу.
Принцип функционирования декодера Витерби состоит в следующем: на вход декодера поступает сегмент последовательности r длиной b, превышающей кодовую длину блока n. Назовем b окном декодирования. Сравним все кодовые слова данного кода (в пределах сегмента длиной b) с принятым словом и выберем кодовое слово, ближайшее к принятому. Первый информационный кадр выбранного кодового слова принимается в качестве оценки информационного кадра декодированного слова. После этого в декодер вводится n0 новых символов, а введенные ранее самые старые n0 символов сбрасываются, и процесс повторяется для определения следующего информационного кадра. Таким образом, декодер Витерби последовательно обрабатывает кадр за кадром, двигаясь по решетке, аналогичной используемой кодером. В каждый момент времени декодер не знает, в каком узле находится кодер, и не пытается его декодировать. Вместо этого декодер по принятой последовательности определяет наиболее правдоподобный путь к каждому узлу и определяет расстояние между каждым таким путем и принятой последовательностью. Это расстояние называется мерой расходимости пути. В качестве оценки принятой последовательности выбирается сегмент, имеющий наименьшую меру расходимости. Путь с наименьшей мерой расходимости называется выжившим путем.
Свободное расстояние кода (7,5) равно минимальному весу пути по диаграмме из состояния 00 в тоже состояние (исключая петлю у состояния 00). Диаграмма свободного расстояния для рисунка 3.4 изображена на рисунке 3.5 и для него df =5.
Рис. 3.5 Диаграмма свободного расстояния кодера (7,5).
Рассмотрим работу декодера Витерби на примере сверточного кода (7,5). Все решетчатые диаграммы процесса декодирования представлены на рис. 3.4.
Пользуясь решетчатой диаграммой кодера, попытаемся, приняв некоторый сегмент r, проследить наиболее вероятный путь кодера. При этом для каждого сечения решетчатой диаграммы будем отмечать меру расходимости пути каждому ее узлу. Предположим, что передана кодовая последовательность U = (00000000…), а принятая последовательность имеет вид r = (10001000…), то есть в первом и в третьем кадрах кодового слова возникли ошибки. Как мы уже убедились, процедура и результат декодирования не зависят от передаваемого кодового слова и определяются только ошибкой, содержащейся в принятой последовательности. Поэтому проще всего считать, что передана нулевая последовательность, то есть U = (00000000…). Приняв первую пару символов (10), определяется мера расходимости для первого сечения решетки, приняв следующую пару символов (00), — для второго сечения и т.д. При этом из входящих в каждый узел путей оставляем путь с меньшей расходимостью, поскольку путь с большей на данный момент расходимостью уже не сможет стать в дальнейшем короче. Заметим, что для рассматриваемого примера начиная с четвертого уровня метрика (или мера расходимости) нулевого пути меньше любой другой метрики. Поскольку ошибок в канале больше не было, ясно, что в конце концов в качестве ответа будет выбран именно этот путь. Из этого примера также видно, что выжившие пути могут достаточно долго отличаться друг от друга. Однако на шестом-седьмом уровне первые семь ребер всех выживших путей совпадут друг с другом. В этот момент согласно алгоритму Витерби и принимается решение о переданных символах, так как все выжившие пути выходят из одной вершины, т.е. соответствуют одному информационному символу.