Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системы и сети мобильной связи. Учебное пособие
.pdf
Глава 3
БЛОЧНОЕ И СВЕРТОЧНОЕ КОДИРОВАНИЕ
Канальное помехоустойчивое кодирование представляет собой
способ преобразования информации источника путем введения избыточности, который позволяет обнаруживать и исправлять ошибки, возникающие в канале связи. Коды, обнаруживающие ошибки
(коды контроля четности – Cyclic Redundancy Check (CRC)), обычно
используются вместе с методами повторного запроса информации
от источника (например, ARQ). Прямая коррекция ошибок (Forward
Error Correction (FEC)) – другая технология кодирования, позволяющая
обнаруживающих ошибки, исправление ошибок требует введения
существенно большей избыточности в передаваемые данные, что
снижает производительность системы связи. В то же время применение технологии ARQ (и кодов обнаружения ошибок) приводит к
определенным потерям пропускной способности из-за повторных
передач данных и некоторого объема управляющей
В настоящее время существует огромное разнообразие методов и
очень хорошо развитая теория канального кодирования. Использование как технологии FEC, так и кодов, обнаруживающих ошибки
(CRC) в системах мобильной связи, является обоснованным, поскольку их каналы подвержены различного рода помехам и замираниям.
сверточного кодирования
движной связи. Исследуется влияние кодирования сигналов на вероятность ошибок, возникающих при прохождении сигналов через
АБГШ-канал.
исправлять ошибки методом упреждения. В отличие от кодов,
информации.
Содержание настоящей главы посвящено изучению блочного и
сигналов, используемых в системах по-
51

3.1. Некоторые теоретические положения
R
E
p
3.1.1. Блочное систематическое кодирование
Источник информации вырабатывает последовательность символов
сообщения со скоростью
блоки длиной
добавляется
k символов (информационное слово). В каждый блок
nk проверочных символов. Таким образом формирует-
ся кодовое слово длиной
довой скоростью, а ()/
nk k
кода записывается как (,)
пользования кодирования является случай передачи дискретных сооб-
щений в реальном времени при фиксированной мощности передатчика. В этом случае
n символов кодового слова должны быть переданы
за тот же временной интервал, что и
Это приводит к увеличению скорости передачи в /
ствие, к уменьшению отношения
ладает корректирующей способностью, потери, связанные с увеличением вероятности символьной ошибки, не только «отыгрываются»
проверочными символами, но и обеспечивается дополнительный выигрыш – снижение вероятности ошибочного принятия кодового слова
по сравнению со случаем отсутствия кодирования (выигрыш кодиро-
вания). Вероятности ошибки для информационного
P слов определяются выражениями
го
wc
PCpp
где
и q – соответственно вероятности битовой ошибки при кодиро-
вании и в отсутствие кодирования;
правляемой данным кодом (
стояние Хемминга, характерное для данного кода);
ный коэффициент. В линейном блочном коде
ва представляет собой линейную комбинацию
симв/с. Эти символы группируются в
n символов. Величина /kn называется ко-
– избыточностью. Структура блочного
nk . Наиболее характерной ситуацией ис-
k информационных символов.
nk раз и, как след-
/
N . Вследствие того что код об-
0
b
P и кодово-
wu
1(1 ),
Pq
wu
n
wc n
ii ni
1
it
k
(3.1)
(1 ) ,
t – кратность битовой ошибки, ис-
(1)/2td;
min
d – минимальное рас-
min
i
С – биномиаль-
n
i-й символ кодового сло-
информационных
k
52

символов:
X
H
Z
дит так:
yxg xg xg
11 22
ii ikki
....
YXG
. В матричной форме это выгля-
, (3.2)
где
матрица (
k
– информационное слово (вектор-строка); G – порождающая
kn ). Для систематического кода первые (или последние)
символов кодового слова являются информационными. Поэтому по-
рождающая матрица такого кода выглядит следующим образом:
gg g
11 1 2 1
kk n
gg g
21 2 2 2
kk n
Здесь
GPI
I
– единичная матрица размером kk; P – проверочная мат-
k
рица размером ()knk
... ... ... ...
gg g
12
kk kk kn
. С порождающей матрицей линейного блоч-
ного кода связана проверочная матрица
...
...
1 0 ... 0
0 1 ... 0
... ... ... ...
0 ... ... 1
Эта матрица строится сле-
.
. (3.3)
k
дующим образом:
1 0 ... 0
0 1 ... 0
... ... ... ...
0 0 ... 1
H
gg g
11 1 2 1
kk n
gg g
21 2 2 2
kk n
... ... ... ...
...
...
I
nk
. (3.4)
P
gg g
11
kk kk kn
...
Декодирование осуществляется в результате умножения принятого
кодового слова
на проверочную матрицу. Полученный вектор S
размером nk элементов называется синдромом
.SZH
(3.5)
53

Если синдром нулевой, то это значит, что ошибки в кодовом слове
Z
E
нет (либо ошибка привела к преобразованию одного кодового слова в
другое); если же вектор синдрома ненулевой, то это значит, что принятый кодовый вектор – результат суммы по модулю 2 переданного кодового слова и вектора ошибки Е:
YE
(3.6)
.
Существует однозначное соответствие между синдромом и вектором ошибки. Таким образом, располагая синдромом, можно найти вектор ошибки
и скорректировать принятое кодовое слово с целью
устранения ошибки:
.YZ E
(3.7)
3.1.2. Сверточное кодирование
В отличие от блочного, в сверточном кодере информационные
символы не группируются в блоки. Кодовое слово получается в результате свертки информационного слова с импульсной характеристикой кодера. Обычно сверточный кодер строится на основе K разрядного регистра сдвига, набора из n сумматоров по модулю 2 и коммутатора, обеспечивающего подключение выходов сумматоров
шине (рис. 3.1).
K – разрядный регистр сдвига
Информационные
символы
сумматоров
n
Коммутатор
Кодовые символы
R1 R2 R3 ……………….. Rk-1 Rk
+ + + + +
Рис. 3.1. Сверточный кодер
к выходной
54

Каждый входной символ порождает n выходных символов (ответв-
ленное кодовое слово), поэтому кодовая скорость составляет 1/n . Кодовые скорости выше 1 / 2 могут быть получены в результате продвижения
k информационных символов в регистре сдвига в промежутках времени
между коммутациями. В этом случае получается скорость
ный код описывается тремя целыми числами
и .K Число k пока-
k, n
. Сверточ-
/kn
зывает, на сколько символов за такт продвигается в регистре информационное слово, n – разрядность ответвленного кодового слова. Число K
называется длиной кодового ограничения и определяет память кодера.
Ответвленное кодовое слово определяется не только текущим входным
символом, но и 1K
предыдущими символами. Обычно используются
кодеры, в которых входное информационное слово посимвольно продвигается в регистре сдвига (т. е. 1k
), и распространенными кодовыми
скоростями являются скорости 1/2, 1/3. Конкретный вид кода определяется конфигурацией соединений разрядов регистра сдвига и сумматоров –
векторами соединений g1, g2, g3… Обычно конфигурация соединений
для каждого сумматора задается двоичным вектором соединений, в котором единица означает наличие соединения сумматора с данным разрядом
регистра, а нуль – его отсутствие. Наиболее распространенным способом
представления
ма. Пример решетчатой диаграммы для кодера с 3K
111g и
1
работы сверточного кодера является решетчатая диаграм-
, 2n, 1k,
101g показан на рис. 3.2.
2
Рис. 3.2. Решетчатая диаграмма (кодер)
55

На рис. 3.2 моменты времени обозначены как
X
Z
, ,..., tt t
12 6
; узлы
решетки a, b, c, d – состояние кодера перед подачей очередного информационного бита (содержимое первой и второй ячеек регистра
сдвига). Переходам между состояниями кодера соответствуют ответвленные слова (показаны как метки около ветвей решетки). Эффективной реализацией декодирования по методу максимального правдоподобия является алгоритм Витерби. Алгоритм включает в
себя вычис-
ление меры подобия (хеммингова расстояния) между сигналом, полученным в момент времени
t , и всеми путями решетки, входящими в
i
каждое состояние к данному моменту времени. В алгоритме Витерби
не рассматриваются те пути, которые согласно принципу максимального правдоподобия заведомо не могут быть оптимальными. Если в
одно и то же состояние входят два пути, то выбирается тот, который
имеет меньшую метрику. Такой путь называется «
выжившим». Отбор
выживших путей выполняется для каждого состояния. Таким образом,
декодер углубляется в решетку путем исключения менее вероятных
путей. Пример декодирования информационной последовательности
[11011]X с использованием решетчатой диаграммы показан на
рис. 3.3.
: 1 1 0 1 1
Y : 11 01 01 00 01
: 11 01 01 10 01
Рис. 3.3. Процесс декодирования
56

[11011]X – информационная последовательность;
K
K
K
f
[11010100 01]Y – последовательность на выходе сверточного
кодера;
[11010110 01]Z – искаженная последовательность на входе де-
кодера;
– метрики «выживших» путей для каждого из со-
, , ,
abcd
t
стояний решетки к моменту
.
6
На рис. 3.3 метки около ветвей решетки показывают одношаговые
метрики. Для момента времени
выжившего пути для каждого из
t показаны результирующие метрики
6
1
2
состояний. Выбор из двух схо-
дящихся путей одного гарантирует, что у нас никогда не будет путей
1
2
больше, чем состояний (т. е.
). Для осуществления декодирования
алгоритм должен хранить историю выживших путей, длительность
которой называется глубиной декодирования. С высокой вероятностью
при превышении глубины декодирования все
1
2
пути (при движе-
нии назад) ведут к одной общей ветви. Поэтому самые первые биты
выживших путей одинаковы. Простой декодер имеет фиксированный
объем истории путей и выдает ранние биты произвольного пути каждый раз, когда продвигается на один уровень в глубь решетки. Обычно
глубина декодирования выбирается как (4...5)K .
Для оценки корректирующих
«минимальный просвет»
d – это минимальная сумма одношаговых
свойств кода используется понятие
метрик, вычисляемых с момента ответвления от нулевого пути до момента слияния с ним (рис. 3.4).
Рис. 3.4. Минимальный просвет
57

Минимальный просвет, соответствующий ответвлению от нулевого
пути (это ответвление на рис. 3.4 показано утолщенными линиями), равен
5 (2 + 1 + 2). В отличие от блочного кодирования, где принято описывать
корректирующие свойства кода, оперируя кратностью ошибки на блок, в
сверточных кодах говорят о возможности исправления t ошибок в пределах нескольких (3…5) длин кодового ограничения. Кратность ошибки,
которая
/2
может быть исправлена, вычисляется следующим образом:
td. (3.8)
f
3.2. Указания по использованию пакета Simulink
для создания модели кодера и декодера
Процедуры кодирования/декодирования могут быть исследованы с
помощью модели, представленной на рис. 3.5.
Рис. 3.5. Модель для исследования процедур кодирования и декодирования
Применение блочного или сверточного кода означает замену блоков кодирования/декодирования модели. В частности, схема, изображенная на рис. 3.5, предполагает использование линейного блочного
систематического кода.
3.2.1. Модель блочного кодирования
Для изучения свойств кода необходимо воспользоваться блоками
«линейный блочный кодер/декодер» (рис. 3.6).
Рис. 3.6. Линейный блочный кодер и декодер
58

Параметры линейного блочного кодера выбираются следующим
образом.
Generator matrix (binary K-by-N matrix) – генераторная матрица –
записывается для двух вариантов линейных блочных кодеров:
[[110;011;111;101]eye(4)] и [[001111;111100]eye(2)].
Параметры декодера выбираются следующим образом:
Generator matrix (binary K-by-N matrix) – генераторная матрица –
записывается для двух вариантов декодеров: [[110;011;111;101]eye(4)]
и [[001111;111100]eye(2)].
Decoding table (0 for table corresponding to Generator matrix) = 0 –
таблица декодирования (соответствует генераторной матрице).
Для исследования влияния канальных ошибок на работу декодера можно воспользоваться
блоком «Бинарный симметричный канал»
(рис. 3.7), указав следующие параметры.
Error probability – вероятность битовой
ошибки. Работа декодера исследуется для нескольких вероятностей битовой ошибки
234
(
10 , 10 , 10
Initial seed = 12345 – «затравка» для гене-
) .
Рис. 3.7. Бинарный
симметричный канал
ратора случайных чисел.
Output error vector – если этот селектор установлен, то формиру-
ется дополнительный выход, позволяющий контролировать местоположение двоичных символов в последовательности, в которых произошла ошибка. Данный селектор должен быть установлен.
В качестве информационной последовательности можно воспользоваться блоком «Генератор случайных двоичных чисел» (см. рис. 2.8.).
Необходимо настроить этот генератор на формирование информационных блоков
заданной длины. Например, чтобы настроить генератор
на формирование информационного блока из четырех двоичных
символов, параметры генератора должны быть выбраны следующим
образом:
Probability of a zero = [0.5 0.5 0.5 0.5] – вероятность нуля;
Initial seed = [12345 5678 91234 4567] – «затравка» для генерато-
ра случайных чисел;
Sample time = 1e-3 – период взятия отсчетов (с);
Frame-based outputs – селектор, позволяющий выбрать одну из
двух схем формирования выходного сигнала: а) либо каждый разряд
четырехразрядного сигнала подается по отдельному проводу; б) разря-
59

ды сигнала передаются последовательно во времени по одному проводу. Этот селектор должен быть сброшен;
Interpret vector parameters as 1-D – интерпретировать вектор па-
раметров как одномерный вектор. Этот селектор также должен быть
сброшен.
3.2.2. Модель сверточного кодирования
Для изучения свойств кода необходимо воспользоваться блоками
«Сверточный кодер» и «декодер Витерби» (рис. 3.8).
Рис. 3.8. Сверточный кодер и декодер Витерби
Блок параметров модели сверточного кодера содержит следующие
пункты.
Trellis structure – структура, задающая параметры сверточного
кодера. Эта структура создается с помощью функции poly2trellis().
Первым параметром функции poly2trellis() является длина кодового
ограничения ,K вторым – массив записанных в восьмеричном коде
векторов соединений сумматоров
единения
111 7 , а вектор
28
g , 2g , (3g ). Поскольку вектор со-
1
101 5, то для первого сверточного
28
кодера в данном поле должно быть записано следующее:
poly2trellis(3,[7 5]) (либо poly2trellis(3,[7 5 7]) – для второго кодера).
Reset – сброс кодера. Это поле должно быть установлено в None.
Блок параметров модели декодера Витерби содержит следующие
пункты.
Trellis structure – структура, задающая параметры декодера Ви-
терби. Это поле должно быть заполнено по аналогии с соответствующим полем сверточного кодера.
Decision type = Hard Decision – тип принятия решения. Должно
быть выбрано жесткое правило принятия решений.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
