Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по дисциплине.doc
Скачиваний:
229
Добавлен:
31.05.2015
Размер:
5.77 Mб
Скачать

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

Кодирующее устройство двоичного сверточного кода (рис. 1.16) представляет собой регистр сдвига, состоящий из k ячеек, к выходам которых в определенном порядке подключены п сумматоров по модулю 2. Двоичные информационные символы, поступающие в регистр от источника информации, сдвигаются в регистре на q<k символов, после чего выходы сумматоров по модулю 2 опрашиваются коммутатором и полученная последовательность двоичных символов с выхода коммутатора направляется на модулятор передатчика. Далее этот процесс повторяется. Полученный таким образом код называется сверточным, или рекуррентным кодом. Параметры k, n и q и порядок подключения сумматоров по модулю 2 к ячейкам регистра сдвига определяют структуру получаемого сверточного кода. Избыточность такого кода Rи=1--q/n. Эквивалентная длина сверточного кода равна k.

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

Рис. 1.16. Кодирующее устройство двоичного сверточного кода.

Рис. 1.17 Кодирующее устройство двоичного сверточного кода при k = 3, n = 2, q=l.

Работу кодирующего устройства сверточного кода удобно пояснить с помощью кодового дерева (рис. 1.18). Кодовое дерево строится следующим образом. Если входной информационный символ, поступающий в сдвигающий регистр, равен 1, то ему приписывается линия (ветвь дерева), идущая, например, вниз, а если информационный символ равен 0- -то вверх. Символы сверточного кода, получаемые на выходе сумматоров по модулю 2, записываются над соответствующей ветвью дерева. Точки, из которых исходят ветви дерева, называются узлами. Определенная последовательность информационных символов на входе кодирующего устройства порождает один из путей по кодовому дереву.

Рис. 1.18. Кодовое дерево, соответствующее кодирующему устройству рис. 1.17.

Например, входная последовательность информационных символов 10001..., поступающая на кодирующее устройство (рис. 1.15), порождает выходную последовательность 1110110011 .... Соответствующий путь по кодовому дереву показан на рис. 1.18 пунктирной линией.

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

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

Для декодирования сверточных кодов разработан ряд эффективных методов декодирования, в частности, последовательное декодирование и декодирование А. Витерби .

Принцип последовательного декодирования в двоичном дискретном канале состоит в следующем, п регенерированных символов сверточного кода, соответствующих одной из ветвей кодового дерева, на приемной стороне записывается в регистр сдвига. Декодирующее устройство, аналогичное кодирующему устройству данного сверточного кода, генерирует п символов сверточного кода, соответствующих каждой из ветвей кодового дерева, исходящей из данного узла. Каждая из двух последовательностей п символов, генерируемых в декодирующем устройстве, поразрядно суммируется по модулю 2 с принятой последовательностью, записанной в регистре. В результате этих операций вычисляется расстояние Хэммннга dХ между этими последовательностями и принятой последовательностью. Затем выбирается путь с наименьшим dХ и выносится предварительное решение, что путь по данной ветви кодового дерева и является истинным. Расстояние dХ для этого пути запоминается, и декодирующее устройство переходит к следующему узлу кодового дерева, к которому при водит выбранный путь. Из этого нового узла вновь исследуются два возможных пути п т. д.

Если вероятность искажения одного символа шумами при передаче равна p, то математическое ожидание числа ошибок, а следовательно, и расстояние Хэмминга dХ. между принятыми п символами сверточного кода и п символами, соответствующими правильному пути по данной ветви кодового дерева, будет равно пр.

Если же по данной ветви выбран неправильный путь, то математическое ожидание расстояния dX для него будет приблизительно равно n/2. Следовательно, через l последовательных шагов декодирования математическое ожидание dx(l) для правильного пути будет равно lпр, а для неправильного пути ln/2. Действительные значения dx(l) для правильного п неправильного пути будут случайными величинами с указанными математическими ожиданиями. Это показано на рис. 1.19.

Рис. 1.19. Зависимость кодового расстояния для правильного и неправильного путей.

В последовательном декодирующем устройстве сравнивается текущее значение dx(l) с некоторым порогом z(l) (рис. 1.19). Если на текущем шаге декодирования порог не превышен, то декодирующее устройство переходит к анализу путей, ведущих из следующего узла. Если порог превышен, то декодирующее устройство возвращается в прошлый узел, для которого не было превышения порога, и исследует другие возможные пути по. кодовому дереву. Таким образом, декодирующее устройство обследует все доступные узлы до тех пор, пока не найдется пути, при котором текущий порог z(t) не превышается. Если же такого пути не находится, то порог повышается и указанная операция повторяется.

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

Достоинством последовательного декодирования является то, что при исключении какого-либо пути по кодовому дереву отбрасываются все другие пути, исходящие из узлов исключенного. За счет этого экономится число операций, производимых при декодировании. Чем выше порог z(l), тем большее количество операций требуется, так как неправильный путь, начавшийся из некоторого узла, обнаруживается позднее. Поэтому сначала декодирование ведут при низком (жестком) пороге; при этом пороге декодируется большинство символов сверточного кода. Если же путей, удовлетворяющих этому порогу, не находится (а это случается значительно реже) порог повышают.

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

Рассмотрим теперь принципы декодирования сверточных кодов по методу Витерби. Для этого вновь рассмотрим кодирующее устройство сверточного кода, изображенное на рис, 1.17. В рассматриваемом случае выходные символы сверточного кода, появляющиеся после каждого цикла опроса коммутатором сумматоров по модулю 2, определяются тремя последовательно поступившими информационными символами, записанными в регистре перед опросом коммутатора, или, что то же, состоянием 2-х первых ячеек регистра и последним ступившим символом. Учитывая это, изобразим кодовое дерево, соответствующее этому кодирующему устройству, в несколько другом по сравнению с рис. 1.18 виде.

На рис. 1.20 четыре возможных состояния первых двух ячеек регистра сдвига кодирующего устройства обозначены цифрами 00, 01, 10, 11, заключенными в рамку. По приходе на кодирующее устройство очередного информационного символа первые две ячейки регистра меняют свои состояния. Если приходящий информационный символ «1», то возможный переход состояния показан пунктирной линией, если «0» — то сплошной линией. Цифрами 1, 2, 3 ... обозначены тактовые моменты прихода на кодирующее устройство информационных символов

Рис. 1.20. Другой вид кодового дерева сверточного кода.

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

Из рис. 1.20 следует, что, начиная с третьего такта, структура кодового дерева повторяется, и каждое из 4 возможных состояний регистра определяется только двумя предшествующими состояниями. Например, состояние 01 на третьем такте имеет два входных пути по кодовому дереву, соответствующих информационным символам 110 и 010. Эти пути разошлись в такте 0 и слились в такте 3. В общем случае, если регистр кодирующего устройства содержит k ячеек и информационные символы перед каждым опросом коммутатора сдвигаются на q ячеек, то структура кодового дерева повторяется через k тактов, а пути сливаются через q(k-1) последовательно поступающих одинаковых информационных символов.

Для двоичного симметричного канала без памяти задачей оптимального декодирующего устройства, работающего по максимуму правдоподобия, является выбор такого пути по кодовому дереву, который имеет минимальное расстояние Хэмминга от принимаемой последовательности символов сверточного кода. Поскольку ветви дерева сливаются, то для декодирования по максимуму правдоподобия нет необходимости рассматривать всю полученную последовательность символов сверточного кода. Сразу после ko такта (на рис. 1.20 после 3-го такта) можно решить, какой один из 2q путей, ведущих в данное состояние, наиболее правдоподобен, а остальные пути исключить из дальнейшего рассмотрения. Это делается для каждого из 2q(k-1) состояний в данном такте. Затем декодирующее устройство переходит к следующему такту и процесс повторяется.

Рассмотрим, например, состояние 01 на третьем тракте (рис. 1.20). К этому состоянию ведут два пути по кодовому дереву: первый путь 110101, соответствующий информационным символам 110, и второй путь 001110, соответствующий информационным символам 010. Пусть, например, получена последовательность символов сверточного кода 000110. Эта последовательность имеет расстояние Хэмминга dx=4 от первого пути и dx=1 от второго пути, и следовательно, первый путь можно исключить из дальнейшего рассмотрения.

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

Описанное декодирование называется декодированием по методу Витерби. Таким образом, при декодировании по методу Витерби декодирующее устройство хранит в памяти множество из 2q(k-1) наиболее вероятных путей на каждом шаге декодирования. Окончательный выбор одного, наиболее вероятного пути, может осуществляться посредством передачи в конце сообщения, состоящего из N информационных символов, k-q заранее известных символов (например нулей, которые приводят декодирующее устройство в исходное состояние).

Как последовательное декодирование, так и декодирование но методу Витерби перспективно для использования в каналах с независимыми ошибками. Количество операций, необходимое для декодирования по методу Витерби N информационных символов, равно N/2q(k-1) Сложность декодирующего устройства, оцениваемая числом необходимых при декодировании операций, линейно зависит от N, что является достоинством этого метода. Однако количество операций экспоненциально зависит от k, поэтому этот метод используется лишь для относительно небольших k. Для всех сверточных кодов увеличение k, подобно увеличению длины кодового слова при блочном кодировании, при прочих равных условиях ведет к экспоненциальному уменьшению вероятности ошибки при декодировании. Поскольку сложность, последовательного декодирования мало зависит от k, его целесообразно применять при малых вероятностях ошибки на декодированный символ (р≤10-3-10-5[105]). При больших вероятностях ошибки целесообразно декодирование по методу Витерби.

Особенностью сверточных кодов является то, что при их декодировании не нужна синхронизация перед началом передачи информации, тогда как для блочных кодов без синхронизации по словам правильное декодирование в большинстве случаев невозможно. Действительно, декодирующее устройство, несинхронизированное перед началом передачи, эквивалентно синхронизированному, но сделавшему одну или несколько ошибок. Моделирование показало, то через (3-5)k синхронизация устанавливается автоматически. Однако для этого требуется надежная синхронизация узлов кодового дерева, т. е. синхронизация по группам символов, соответствующих одному циклу опроса коммутатора сумматоров по модулю 2 в кодирующем устройстве сверточного кода.