Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник электронных лабораторных работ по системам связи..pdf
Скачиваний:
17
Добавлен:
05.02.2023
Размер:
3.73 Mб
Скачать

55

2. Сведения из теории

2.1 Кодирование

Так как свёрточный код является избыточным, то на один входной бит a приходится несколько (как минимум два) выходных битов, то есть математически кодер выполняет отображение

ab(1)b(2)b(3)b(n) , n>1 .

Для краткости записи выходное слово b(1)b(2)b(3)b(n) можно рассматривать как число, принимающее значение от 0 до 2n−1 .

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

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

Рассмотрим простой свёрточный код с отображением ab(1)b(2) , где одному входному биту соответствует два выходных; в этом случае скорость кодирования равна ½. Для реализации такого кода необходимо задать два полинома. Возьмем, например, полиномы степени не больше первой

G1 (x)=1 , G2 (x)=1+x .

(14)

Непрекращающуюся последовательность входных битов

ai запишем

в виде полинома4

 

A( x)=ai xi ,

 

i

 

3 Это следует из свойства z-преобразования, если x заменить на z1.

4 Математически выгодно индекс суммирования ничем не ограничивать

поэтому свёрточные коды не являются блочными. Правда, их можно назвать блочными по отношению к генераторным полиномам, так как полиномы имеют конечную степень (количество ячеек памяти ограничено, обратных связей нет).
Составим функциональную
схему кодера (рис. 15). Блок MUX
Рисунок 15: Свёрточный кодер ½ — это мультиплексор, последо-
5 Отсюда и название данных кодов — свёрточные

56

где символом обозначено множество целых чисел. Две последовательности на выходе кодера определим через произведение двух полиномов

B(1)(x)=A (x)G1 (x)=A (x) ,

 

 

 

(15)

B(2)(x)=A (x)G2 (x)= A(x)+x A( x)=(ai+ai−1) xi .

 

 

 

 

 

i

 

На основании (15) определяем правило работы кодера

 

b(1)=a ,

b(2)=a +a

i−1

.

 

i

i

i

i

 

 

Произведение двух полиномов — это полином, коэффициенты которого вычисляются через свёртку коэффициентов перемножаемых полиномов5. Для доказательства данного факта не требуется ничего, кроме знания правил перемножения двух полиномов и приведения подобных слагаемых. Также данные факты известны тем, кто знает элементы теории z-преобразования.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

 

0

0

0

0

 

 

(b0(1)b0(2)b1(1)b1(2))=(a0 a1

…)

0 0

1 1

0

1

0

0

,

 

 

0

0

0

0

 

1

1

0

1

 

 

 

(

0

0

0

0

 

0

0

1

1

)

 

 

 

 

 

 

 

 

 

 

 

 

 

57

вательно выдающий все входные биты; в данном случае выдающий попарно, начиная сверху вниз. Блок x — это триггер, хранящий предыдущий входной бит. Сумматор по модулю два обозначен окружностью со знаком +. Он имеет два входа и один выход. Таблица сложения простая

0+0=0, 0+1=1 , 1+0=1, 1+1=0 .

Выходные биты кодера однозначно определяются входным битом и набором предыдущих входных битов, запомненных в регистре (в последовательно соединенных триггерных ячейках). Эти предыдущие биты называются состоянием кодера. Состояние иногда удобно записывать в виде десятичного числа, соответствующего двоичному коду. В рассматриваемом примере состояние определяется лишь одним битом ai−1 .

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

слева — состояние кодера в момент кодирования, то есть в момент выдачи пары битов 00 (эти биты обозначены над линией). Слово на конце стрелки — состояние кодера после прихода следующего кодируемого бита, то есть это будущее состояние.

Определим ветку, если пришел бит 1, а кодер находится в состоянии 0. Очевидно, что выходная пара — 11, а будущее состояние — 1. В данном случае будущее состояние определяется только те-

кущим входным битом, так как ячейка памяти (триггер) одна; в общем случае будущее зависит и от некоторых предыдущих битов. Здесь линия стрелки сплошная, так как пришел бит 1.

Осталось определить две ветки для единичного начального состояния: а) пришел 0, на выходе 01, будущее состояние — 0; б) пришла 1, на выходе 10, будущее состояние — 1.

58

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

 

Если кодер переходит, например,

 

из единицы в единицу, то получается

 

петля или цикл. Пример цикла — пода-

 

ча на кодер одних единиц, что в

 

установившемся режиме даст периоди-

 

ческую

выходную

 

последовательность ...101010....

Рисунок 16: Диаграмма состояний

С помощью диаграммы состоя-

ний очень просто кодировать входную

свёрточного кодера ½

битовую последовательность. Рассмотрим, например, дельта-последователь- ность (цифровую дельта-функцию)

δn=100…0… , отклик на которую есть импульсная характеристика

hn=1101 00…00… ,

два ненулевых слова (11 и 01) которой говорят о том, что кодер обладает памятью. Индекс n у импульсной характеристики отвечает за пару битов, то есть за слово. Избыточность рассматриваемого кода равна 50%, так как на один входной бит кодер выдает два выходных. Кстати, можно отметить, что строки генераторной матрицы состоят из сдвинутых импульсных характеристик.

Рассмотрим более сложную входную последовательность a=110100…0… ,

отклик на которую по диаграмме состояний будет следующим b=1110 01 11010000…00 … .

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

59

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

a=1101=1000+0100+0001=δn n−1n−3 ,

b=hn +hn−1+hn−3=(110100 00 00…)+(00 1101 00 00…)+(00 00 00 1101…)= .

=(111001 1101…)

Слагаемые в скобках складываются по модулю два.

Составить схему свёрточного кодера с

генераторными

полиномами

G1 (x)=1 ,

G2 (x)=1+x+x2 ,

и диаграмму

состояний.

 

 

 

Изучив §2.2 Декодирование Витерби, на основании диаграммы состояний построить решетку кода до момента её установления.

6 Это следует из свойства умножения полинома на сумму полиномов:

A (x)[ B(x)+C(x)]= A(x)B(x)+B(x)C( x)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]