Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сети радиодоступа. Ч.1. Учебное пособие
.pdf
101
ограничения
K
2/5
2
17
07
11
12
04
6
3
27
71
52
65
57
10
4
247
366
171
266
373
12
3/5
2
35
23
75
61
47 5 4/5
2
234
274
156
255
337
3
Таблица 4.13 – Максимальное свободное расстояние кодов со скоростью
кодирования k/7
Скорость
Длина
кодового
ограничения
K
Порождающие полиномы
(в восьмеричной записи)
d
св
2/7
2
05
06
12
15
15
13
17 9 3
33
55
72
47
25
53
75
14 4 312
125
247
366
171
266
373
18
3/7
2
45
21
36
62
57
43
71 8 4/7
2
130
067
237
274
156
255
337
6
Таблица 4.14 – Максимальное свободное расстояние кодов со скоростью
кодирования 3/4 и 3/8
Скорость
Длина
кодового
ограничения
K
Порождающие полиномы
(в восьмеричной записи)
d
св
3/4
2
13
25
61
47
4
3/8
2
15
51
42
36
23
75
61
47
8
Одной из наиболее популярных схем кодирования является сверточная,
поскольку почти во всех приложениях сверточные коды лучше блочных при той
же конструктивной сложности кодера и декодера. Для каналов спутниковой
связи схемы прямого исправления ошибок позволяют легко понизить на 5-6 дБ
требуемое значение SNR для заданной достоверности передачи. Из этой
эффективности кодирования непосредственно вытекает снижение эффективной

102
изотропной излучаемой мощности спутника (effective isotropic radiated power –
EIRP), что, соответственно, приводит к снижению веса и стоимости спутника.
В этой главе мы описали значительную структурную разницу между
блочными и сверточными кодами – сверточные коды со степенью кодирования
1/п сохраняют в памяти предыдущие К - 1 бит, где К означает длину кодового
ограничения. С такой памятью кодирование каждого входного бита данных
зависит не только от значения этого бита, но и от предшествующих ему К - 1
бит. Задача описывалась в контексте алгоритма максимального правдоподобия.
При его использовании изучаются все возможные последовательности кодовых
слов, которые могли быть созданы кодером, и выбирается та, которая выглядит
статистически наиболее вероятной. Решение опирается на метрику расстояния
принятых кодовых символов. Анализ безошибочной работы сверточных кодов
является более сложным, чем простое биномиальное разложение, описывающее
работу без ошибок многих блочных кодов.
В таблице 4.15 приведены значения ЭВК для сверточного кода с Rc = 1/2,
32-битовой памятью путей при использовании в гауссовом канале модуляции
BPSK, вероятности ошибки 10-4 при отношении Eb/N
0
.= 8,2 дБ без
использования кодирования.
Таблица 4.15 – Значения ЭВК сверточного кода
Глубина
кодирова
ния, K
3 4 5 6 7
8
ЭВК
1.1
1.4
1.9
2.2
2.6
3.0
Прореживание. Как было уже сказано, скорость внутреннего кода, или
отношение числа символов в информационном кадре к общему числу
символов, передаваемых в одном кодовом кадре, может изменяться в
соответствии с условиями передачи данных в канале связи и требованиями к
скорости передачи данных. Чем выше скорость кода, тем меньше его
избыточность и тем меньше его способность исправлять ошибки в канале связи.
Как правило, внутреннее кодирование с изменяемой скоростью строится
с использованием базового кодирования со скоростью 1/2. Основу базового
кодера представляют собой два цифровых фильтра с конечной импульсной
характеристикой, выходные сигналы которых X и Y формируются путем
сложения по модулю двух сигналов, снятых с разных точек линии задержки в
виде регистра сдвига из шести триггеров (рисунок 4.16). Входные данные
последовательно вводятся в регистр сдвига, а из выходных сигналов фильтров

103
после преобразования в последовательную форму создается цифровой поток, в
котором биты следуют друг за другом в два раза чаще, чем на входе (скорость
такого кода равна 1/2, так как на каждый входной бит приходится два
выходных).
В режимах с большей скоростью кодирования передается лишь часть
генерируемых сигналов X и Y (передаваемые сигналы и их порядок приведены
в таблице рисунка 4.16). Например, при скорости 2/3 двум входным битам
ставятся в соответствие и передаются в последовательной форме три выходных
сигнала (X
1
, Y1, Y
2
), а X
2
вычеркивается. При максимальной скорости
внутреннего кода, равной 7/8, семи входным битам соответствуют восемь
выходных (X
1
, Y1, Y2, Y3, Y4, X5, Y6, X7).
4.8 Каскадные коды
Каскадный код состоит из двух отдельных кодов, которые объединяются
для образования большего кода. Обычно один из кодов выбирается недвоичным, а
второй двоичным. Они соединяются каскадно, как показано на рисунке 4.17.
Свёрточный кодер,
Rc=1/2
Преобразователь в
последовательный код с
прореживанием
X
Y
Входные
данные
Выходные
данные
а)
c
R
Структура прореживания Выходная последовательность
1/2
:1X
:1Y
11
XY
2/3
:10X
:11Y
1 1 2
X YY
3/4
:101X
:110Y
1 1 2 3
X YY X
5/6
:10101X
:11010Y
1 1 2 3 4 5
X YY X Y X
7/8
:1000101X
:1111010Y
1 1 2 3 4 5 6 7
X YY Y Y X Y X
б)
Рисунок 4.16 – Свёрточное кодирование: а – кодирование с
прореживанием; б – таблица прореживания

104
Недвоичный (N, К) код образует внешний код, а двоичный – внутренний
код. Кодовые слова формируются путём подразделения блока на Kk
информационных бита по К группам, называемым символами, причём
каждый такой символ состоит из k бит. К символов (с k битами каждый)
кодируются в N символов внешним кодом, как это обычно делается при
недвоичном кодировании. Внутренний кодер берет каждый k-битовый символ
и кодирует его в двоичный блоковый код длины п. Таким образом, мы
получаем каскадный блоковый код, имеющий длину Nn бита и содержащий Kk
информационных бита. Это значит, мы создали эквивалентный (Nn.Kk)
длинный двоичный код. Биты в каждом кодовом слове передаются по каналу
посредствам ФМ или, возможно, ЧМ.
Входные
данные
Внешнее
кодирование
Внешнее
перемежение
Внутреннее
кодирование
Внутреннее
перемежение
Внутреннее
деперемежение
Внутреннее
декодирование
Внешнее
деперемежение
Внешнее
декодирование
Выход
кодера
Вход
декодера
Декодированные
даные
Рисунок 4.17 – Структурная схема каскадной системы кодирования
Также укажем, что минимальное расстояние для каскадного кода равно
d
mimDmim
, где D
mim
– это минимальное расстояние для внешнего кода, a d
mim
–
минимальное расстояние для внутреннего кода. Далее, скорость каскадного
кода равна Kk/Nn, что равно произведению скоростей двух кодов.
Декодер жёстких решений для каскадного кода удобно разделить на
внутренний декодер и внешний декодер. Внутренний декодер выполняет
жёсткое решение по каждой группе из п бит, соответствующие кодовому слову
внутреннего кода, и выносит решение о k информационных битах,
основываясь на алгоритме максимального правдоподобия (минимума
расстояния). Эти k бит представляют один символ внешнего кода. Когда
принят блок из N k-битовых символов от внутреннего декодера, внешний

105
декодер принимает жёсткое решение по К k-битовым информационным
символам, основываясь на декодирование по правилу максимального
правдоподобия.
При каскадном кодировании возможно и декодирование мягких
решений. Обычно оно выполняется по внутреннему коду, если он выбран так,
что имеет немного кодовых слов, т. е. 2k не очень велико. Внешний код обычно
декодируется посредствам декодера жёстких решений, особенно если длина
блока велика и имеется много кодовых слов. С другой стороны, можно
достичь достаточный выигрыш в качестве при использовании
декодирования мягких решений по внутреннему и внешнему кодам, чтобы
оправдать дополнительную сложность декодирования.
Внутренний код (рисунок 4.17) связан с модулятором (демодулятором) и
каналом; он, как правило, настраивается для исправления большинства
канальных ошибок. Внешний код, чаще всего с низкой избыточностью,
снижает вероятность появления ошибок до заданного значения. Основной
причиной использования каскадного кодирования являются низкая
избыточность (высокая скорость) кодирования и меньшая сложность
реализации, которая потребовалась бы для осуществления с какой-то одной
ступенью кодирования. На рисунке 4.17 между двумя этапами кодирования
располагается устройство перемежения. Делается это для того, чтобы разнести
пакеты ошибок, которые могут возникать в результате внутреннего
декодирования.
4.9 Турбокоды
Хотя турбокоды и были введены французским ученым Клодом Берру
(Claude Berrou) сравнительно недавно – в 1993 году [1, 3, 6, 20, 22] и,
следовательно, представляют собой новый тип кодов для исправления ошибок,
они содержат «давно забытые» идеи начального этапа теории кодирования.
Первая из этих идей – коды-произведения, или итеративные коды, которыми
фактически и являются турбокоды. Вторая идея – многоразовое декодирование,
когда результат предыдущего декодирования используется на последующих
шагах. Вторая идея использовалась, например, Р. Галлагером при декодировании
низкоплотностных кодов. Однако эти старые идеи в турбокодах обрели «второе
дыхание». Уже в первой работе по турбокодам была практически
продемонстрирована возможность получения значения вероятности ошибки в
бите Pb = 10-5 для BPSK в канале с аддитивным белым гауссовым шумом при
отношении сигнал/шум на бит всего 0,7 дБ, что лишь на 0,5 дБ больше
теоретического предела.

106
Турбокоды есть и сверточные, и блоковые. Исторически раньше появились
сверточные турбокоды, а позже блоковые. Сверточные турбокоды удобнее для
малых относительных скоростей кода, а блоковые – для больших.
Сверточные турбокоды. Принцип построения кодера турбокода
достаточно прост [20] и показан на рисунке 4.18.
Информационная
последовательность
Информационная
группа турбокода
Проверочная
группа турбокода
Схема
выкалывания
проверочных
бит
Кодер
РСК 1
Кодер
РСК 2
Устройство
перемежения
Проверочная
группа РСК 1
Проверочная
группа РСК 2
Рисунок 4.18 – Структура кодера турбокодера
Из структуры кодера видно, что турбокод представляет собой
систематический непрерывный код, в котором проверочные символы
генерируются двумя кодерами составных рекурсивных сверточных кодов (РСК),
причем информационная последовательность подается в кодер первого РСК
(РСК1) непосредственно, а в кодер второго РСК (РСК2) – через устройство
псевдослучайного перемежения. Схема «выкалывания» проверочных символов
применяется для регулирования общей скорости турбокода.
Если при подаче определенной информационной последовательности на
вход кодера РСК1 вес его проверочной последовательности оказывается малым,
то перемеженная версия этой информационной последовательности, подаваемая
на вход кодера РСК 2, с высокой вероятностью приведет к генерации
проверочной последовательности большого веса. Если какая-либо комбинация
ошибок не может быть исправлена одним РСК, то это почти наверняка будет
сделано с помощью другого РСК, и наоборот. Заметьте, что при использовании в
составе турбокода нерекурсивной формы сверточных кодов с такой же
корректирующей способностью выигрыш от кодирования оказывается намного
меньше. Это происходит потому, что вес выходной последовательности
сверточных кодов в нерекурсивной форме слабо зависит от вида входной

107
информационной последовательности. Число составных кодов в турбокоде
может быть и больше двух.
Для декодирования турбокодов в настоящее время повсеместно
применяется концепция так называемого итеративного декодирования, сущность
которой можно раскрыть, рассматривая структуру итеративного декодера
турбокода (рисунок 4.19).
Устройство
псевдослучайного
деперемежения
Устройство
псевдослучайного
деперемежения
Внешняя информация
SISO декодера РСК 2
Внешняя информация
SISO декодера РСК 1
SISO
декодер
РСК 2
SISO
декодер
РСК 1
Мягкое решение
от демодулятора
Декодированная
информация
Рисунок 4.19 – Структура итеративного декодера турбокода
Итеративный декодер образован последовательным соединением декодеров
двух элементарных кодов (РСК1 и РСК2), так называемых декодеров с мягкими
входным и выходным сигналами (SISO – Soft-In Soft-Out).
В процессе декодирования турбокода элементарные SISО-декодеры
обмениваются друг с другом внешней информацией, с каждой итерацией улучшая
окончательное решение в смысле снижения вероятности ошибки в бите в
декодированной информационной последовательности (одна итерация включает
в себя декодирование РСК1 и РСК2). Однако уже после первой итерации внешняя
информация, подаваемая на вход декодера РСК1 по цепи обратной связи,
оказывается коррелированной с информацией, получаемой из мягких решений
демодулятора для проверочных символов РСК1. Поэтому улучшение
окончательного решения с каждой итерацией становится меньше и, таким
образом, величина вероятности ошибки на бит, достигаемая декодированием по
этому методу, стремится к определенному пределу. Окончательное (жесткое)
решение о передаваемых информационных битах принимается после завершения
Методы построения SISO элементарных декодеров практически сводятся к
использованию алгоритмов декодирования элементарных кодов, способных

108
вырабатывать мягкие выходные решения о передаваемых информационных
символах.
В качестве примера рассмотрим характеристики помехоустойчивости
конструкции на основе BPSK и турбокода со следующими параметрами: R =
1/2, составляющие коды со скоростями 2/3 с 16 состояниями с полиномами в
восьмеричном виде 33 и 31. Для рассматриваемых условий ЭВК турбокода
существенно увеличивается с ростом длины информационного пакета k. Так,
при увеличении длины пакета в 32 раза (4096 вместо 128) ЭВК увеличивается
более чем на 2 дБ при одинаковом числе итераций (для Pb = 10
-5
). При больших
длинах пакета увеличение числа итераций также оказывается энергетически
выгодным. Для k = 128 увеличение числа итераций в два раза приводит к
возрастанию ЭВК в среднем только на 0,1 ÷ 0,2 дБ, в то время как при k = 4096
это увеличение уже составляет около 0,3 дБ.
Блоковые турбокоды. Блоковые турбокоды являются кодамипроизведениями, или итеративными кодами. В качестве составляющих кодов
используются либо простейшие коды с проверкой на четность, либо
расширенные коды Хемминга с общей проверкой на четность. Коды могут
быть не только двумерными, но и трехмерными. В некоторых случаях
возможны комбинации с низкоплотностными кодами. В качестве алгоритмов
декодирования составляющих кодов используются специализированные
алгоритмы мягкого декодирования, выдающие метрику каждого бита на
выход декодера (SISO). Декодирование, как и в случае сверточных турбокодов,
осуществляется несколько раз.
Двумерные турбокоды с составляющими расширенными кодами
Хемминга (128,120,4) приводят к результатам, даже в гауссовском канале
дающим дополнительные 4 дБ ЭВК по сравнению с каскадной парой
«сверточный код с декодированием по Витерби и код PC». Также важно, что
результирующие относительные скорости блокового турбокода существенно
выше, чем у сверточных.
4.10 Низкоплотностные коды
Низкоплотностные коды были предложены Р. Галлагером в 1960 году [1,
21] и долгое время оставались красивой идеей, слабо реализуемой из-за
вычислительной сложности. Однако в последнее время низкоплотностные
коды становятся одной из достаточно модных процедур кодирования и
декодирования. Ниже приводится одна из наиболее простых, но достаточно
эффективных процедур реализации низкоплотностных кодов.

109
Метод построения проверочной матрицы. Декодирование
низкоплотностных кодов осуществляется с помощью их проверочной
матрицы, которая порождается следующим образом. Пусть J и К > J – это
некоторые целые положительные числа, а Р – некоторое простое число.
Обозначим через Е единичную матрицу размером Р × Р. Рассмотрим
исходную проверочную матрицу Н
0
, которая представляет собой J рядов из К
подматриц, каждая из которых получается в результате некоторой
циклической перестановки столбцов единичной матрицы Е, В дальнейшем
совокупность строк проверочной матрицы, соответствующих некоторому
ряду подматриц, будем называть полосой. Отметим, что каждый столбец
любой полосы содержит ровно одну единицу. Соответственно, каждый
столбец матрицы Н
0
содержит J единиц, а каждая строка – К единиц.
Полученная исходная матрица Н
0
задает линейный код длиной N = Р × К
со скоростью передачи R ≈ 1 - J/K. Приблизительный знак равенства
использован потому, что, как правило, построенная таким образом
проверочная матрица имеет линейно зависимые строки. Таким образом,
число информационных символов оказывается несколько большим, чем Р × (N
– J). При К > Р можно выбрать циклические перестановки столбцов
единичных подматриц таким образом, что матрица Н
0
будет задавать J
ортогональных проверок для каждого символа кода. Будем говорить, что
такая матрица обладает свойством ортогональности проверок, и будем
использовать ее при порождении других матриц путем перестановки
столбцов в каждой полосе исходной проверочной матрицы.
Задается некоторое целое положительное число М – количество попыток
перестановок столбцов в каждой полосе, которые осуществляются
последовательно для каждой полосы. При каждой очередной попытке
псевдослучайно выбираются два столбца в данной полосе, которые затем
меняются местами. После этого проводится проверка наличия свойства
ортогональности проверок. При положительном результате этой проверки
перестановка столбцов сохраняется, в противном случае – аннулируется.
После проведения всех попыток перестановок во всех полосах матрицы Н
0
получается некоторая псевдослучайная проверочная матрица Н,
обладающая свойством ортогональности проверок. Как показало
проведенное моделирование низкоплотностных кодов в канале с белым
аддитивным гауссовым шумом, матрица Н, как правило, обеспечивает
лучшие результаты, чем матрица Н
0
.
Алгоритм декодирования низкоплотностных кодов. Описываемый
ниже алгоритм декодирования низкоплотностных кодов основывается на
использовании демодулятора с мягким решением. Таким образом, из

110
демодулятора в декодер должны передаваться два вектора: вектор жестких
двоичных решений для каждого символа
( )
12
, , ,
N
x x xK
вектор надежностей
символов
( )
12
, , ,
N
E E EK
, где значение надежности i-го символа – величины Ei
пропорционально логарифмическому отношению правдоподобия символа xi .
По полученному вектору жестких решений для символов кода вычисляется
синдром
( )
12
, , ,
r
s s sK
, где r – число строк проверочной матрицы.
Алгоритм декодирования состоит из заданного числа итераций. При
каждой итерации выполняется последовательная обработка всех строк
проверочной матрицы. Обработка строки заключается в коррекции
надежностей входящих в данную строку символов кода в зависимости от
значения соответствующей данной строке компоненты синдрома. При этом
следует отметить, что в данном алгоритме надежности символов
рассматриваются как положительные величины. Если при коррекции
надежности некоторого символа его надежность стала отрицательной,
жесткое значение символа меняется на противоположное, при этом его
надежность меняет знак на положительный.
Опишем теперь детально процедуру обработки строки. Рассмотрим
строку с номером j. Перед обработкой данной строки имеются текущие
значения векторов жестких решений, надежностей и синдрома. После
обработки строки выдаются модифицированные значения этих векторов.
Обозначим через n(j,k) позицию k-й единицы в j-й строке. Таким образом, n(j,
1), n(j, 2),..., n(j, К) – это позиции единиц в строке с номером j. Рассмотрим
набор надежностей символов, соответствующих единицам в данной строке,
( ) ( ) ( )
( )
,1 ,2 ,
, , ,
n j n j n j K
E E EK
. Далее для простоты будем обозначать эти надежности
как Е1, Е2,..., ЕК.
Обработка каждой строки состоит из двух шагов. На первом после
последовательного просмотра набора надежностей находятся позиции двух
наименьших надежностей. Пусть Ek1 – минимальная надежность, а Ек2 –
надежность, не превосходящая все остальные, кроме Ek1.
Выполнение второго шага зависит от значения компоненты синдрома,
соответствующей данной строке. Если sj = 0, то в позициях к1 и к2
устанавливаются значения надежностей Ek1 + Ек2, в остальных позициях
значения надежностей увеличиваются на Ek1. Если 8j = 1, то в позициях k1 и к2
устанавливаются значения надежностей Ек2 – Ek1, в остальных позициях
значения надежностей уменьшаются на Ek1. Кроме того, в этом случае
изменяется жесткое значение символа, соответствующего позиции к1, и
производится соответствующая модификация синдрома.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
