Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сети радиодоступа. Ч.1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
91
Таблица 4.6 – Порождающие многочлены кодов БЧХ
n k
t
Порождающий полином
многочлен
Двоичный код
Восьмеричный
код
7 4 1
3
1XX++
1011
13
15
11
1
4
1XX++
10011
23
15 7 2
8 7 6 4
1X X X X+ + + +
111010001
721
15 5 3
10 8 5 4 2
1X X X X X X+ + + + + +
10100110111
2467
31
26
1
52
1XX++
100101
45
31
21
2
10 9 8 6 5 3
1X X X X X X+ + + + + +
11101101001
3551
31
16 3 107657
31
11 5 5423325
31 6 7
313365047
63
57
1
6
1XX++
1000011
103
63
51 1 12471
Более полный список порождающих полиномов для кодов БЧХ можно
найти в [20].
Для декодирования сигналов кода БЧХ можно использовать поиск в таблицах разрешенных кодовых слов и синдромов ошибок (подобных таблице
4.4 для циклического кода (7, 4)). На настоящее время разработано достаточно большое количество алгоритмов, требующих меньше памяти, чем прямой поиск в таблице. Однако сложность этих алгоритмов увеличивается как квадрат
количества ошибок, которые нужно исправить.
4.6 Коды Рида-Соломона
Коды Рида-Соломона (Reed-Solomon codes – RS codes) – это широко используемый подкласс недвоичных кодов БЧХ.
Длина символа
Длина блока
Длина блока данных
Размер контрольного кода
Минимальное расстояние
m бит n = (2m -1) символов = m(2m -1)
бит
k символов n – k = 2t символов = m(2t)
бит
d
min
= (2t + 1) символов
92
При использовании кодов Рида-Соломона данные обрабатываются порциями по m бит, именуемыми символами. Код (n, k) характеризуется следующими параметрами.
Таким образом, алгоритм кодирования расширяет блок k символов до размера n , добавляя (n – k) избыточных контрольных символов. Как правило, m > 1 является степенью 2, широко используется значение m = 8.
Коды Рида-Соломона удобны для исправления пакетов ошибок. Данный
тип кодов характеризуется высокоэффективным использованием избыточности, длина блоков и размеры символов могут легко приспосабливаться под сообщения разных размеров. Кроме того, для таких кодов существуют
эффективные методы кодирования.
Коды Рида-Соломона (n, k) определены на m-битовых символах при всех n и k , для которых
0 2 2,
m
kn +
(4.24)
Где k – число информационных бито, подлежащих кодированию, а n – число бит в закодированном блоке. Для большинства кодов Рида-Соломона (n,
k)
( , ) (2 1,2 1 2 ),
mm
n k t= − − −
(4.25)
где t – количество ошибочных бит в символе, которые может исправить код, а n – k = 2t – число контрольных символов. Расширенный код Рида­Соломона можно получить только при n = 2m или n = 2m + 1.
Код Рида-Соломона обладает наибольшим минимальным расстоянием,
возможным для линейного кода с одинаковой длиной входных и выходных блоков кодера. Для недвоичных кодов расстояние между двумя кодовыми словами определяется (по аналогии с расстоянием Хэмминга) как число
символов, которыми отличаются последовательности. Для кодов Рида­Соломона минимальное расстояние определяется следующим образом
min
1.d n k= − +
(4.26)
Код, который исправляет все искаженные символы, содержащие ошибки в t или меньшем числе бит, t можно выразить следующим образом
93
min
1
.
22
d n k
t
−−
==
 
(4.27)
Здесь
x


означает наибольшее целое, не превышающее х. Из (1.27)
видно, что коды Рида-Соломона, исправляющие t символьных ошибок, требуют не более 2t контрольных символов. Следовательно, декодер имеет n – k
«используемых» избыточных символов, количество которых вдвое превышает количество исправляемых ошибок. Для каждой ошибки один избыточный
символ используется для обнаружения ошибки и один – для определения правильного значения.
Преимущества недвоичных кодов, подобных кодам Рида-Соломона, можно показать следующим образом. Рассмотрим двоичный код (n, k) = (7, 3).
Полное количество кодовых слов в нем равно 2
n
= 27 = 128, из которых 2k = 23 =
8 (или 1/16 часть всех кодовых слов) являются разрешенными кодовыми
словами.
Теперь рассмотрим недвоичный код (n, k) = (7,3), где каждый символ состоит из m =3 бит. Полное количество кодовых слов в таком коде равно 2nm = 221 = 2 097 152, из которых 2km =29 = 512 (или 1/4096 часть всех кодовых слов, т.е. очень небольшая часть) являются разрешенными кодовыми словами.
Из сравнения двоичных и недвоичных кодов следует, что в последних
используется только незначительная часть полного количества кодовых слов, и это дает возможность достичь большего значения d
min
.
Рассмотрим на примере способность кода Рида-Соломона исправлять
пакеты ошибок, которые могут быть вызваны либо импульсными помехами,
либо глубокими замираниями сигнала в радиотракте.
Возьмем для примера код (n, k) = (255,247), в котором каждый символ состоит из т = 8 бит. Поскольку п – k = 8, из уравнений (4.24) и (4.25) можно видеть, что этот код может исправлять любые 4-символьные
ошибки в блоке длиной до 255 символов. Пусть блок длительностью 25 бит
в ходе передачи поражается помехами, как показано на рисунке 4.13. В
этом примере импульсная помеха или глубокое замирание сигнала
попадает на 25 последовательных битов и исказит точно 4 символа. Декодер для кода (255, 247) исправит любые 4-символьные ошибки без
учета характера повреждений, причиненных символу. Другими словами, если декодер исправляет байт (заменяет неправильный правильным), то ошибка может быть вызвана искажением одного или всех восьми битов. Поэтому, если символ неправильный, он может быть искажен на всех
двоичных позициях.
94
Это дает коду Рида-Соломона огромное преимущество при наличии
импульсных помех или замираний сигнала по сравнению с двоичными
кодами (даже при использовании в двоичном коде чередования).
Символ1Символ2Символ3Символ4Символ5Символ
6
Норма
НормаИскажен Искажен Искажен Искажен
25-битовый пакет ошибок
Рисунок 4.13 – Блок данных, искаженный 25-битовым пакетом ошибок
Эффективность кодирования – это снижение необходимого отношения Eb/N0 для системы с кодированием по сравнению с системой без кодирования
(при одном и том же виде модуляции) для достижения заданной вероятности
ошибок. Часто этот параметр называют энергетическим выигрышем кода – ЭВК
( ) ( )
00
..
/ / , .
bb
без код с код
ЭВК E N E N дБ=−
(4.28)
В таблице 4.7 приведены значения ЭВК для некоторых блочных кодов при использовании в гауссовом канале модуляции BPSK, вероятности ошибки 10-5 при отношении Eb/N0.= 9,6 дБ без использования кодирования.
Таблица 4.7 – Значения ЭВК блочных кодов
Тип кода
Хэммин­га
Хэммин­га
Хэммин­га
Голея
БЧХ
БЧХ
Парамет
ры кода
(7, 4), t = 1
(15, 1), t = 1
(31, 26), t = 1
(24, 12), t = 3
(127, 36), t = 15
(127, 64), t = 10
ЭВК
0,8
1,6
1,9
2,3
2,5
3,4
В таблице 4.8 приведены значения требуемого отношения Eb/N0 для блочного кода Рида-Соломона при использовании в гауссовом канале модуляции 32-MFSK с возможностью коррекции t символов и n = 31.
Таблица 4.8 – Значения Eb/N0 для кода Рида-Соломона
Значения t
1 2 4
8
Значения Eb/N0
6,15
5,65
5,35
5,9
95
В этом примере, если будет наблюдаться воздействие аддитивного
белого гауссовского шума, 25-битовая случайная ошибка может исказить
более чем 4 символа (искаженными могут оказаться до 25 символов). Конечно, исправление такого числа ошибочных символов окажется вне
возможностей кода (255, 247).
4.7 Свёрточные коды
Свёрточные коды. Блочные коды являются одним из двух видов кодов с коррекцией ошибок, широко используемых при беспроводной
передаче. Второй вид – это сверточные коды. Блочный код (п, k) обрабатывает данные блоками по k бит, генерируя на выходе блок из п бит (п > k) для каждого k-битового блока на входе. Если прием и передача данных происходят относительно непрерывным потоком, то блочный код (в частности, с большим значением п) может быть не так удобен, как код,
который генерирует избыточные биты непрерывно. В последнем случае обнаружение и исправление ошибок выполняется непрерывно, и именно в
этом состоит преимущество сверточных кодов [4].
Сверточный код задается тремя параметрами: п, k и К. Код (п, k, К) обрабатывает входящие данные порциями по k бит и генерирует выходную последовательность, состоящую из п бит для каждых k бит входа. До этого
момента принципы работы сверточных и блочных кодов не отличаются. Для сверточных кодов п и k, как правило, являются очень малыми числами. Разница между двумя типами кодов состоит в том, что сверточные коды используют память, которая характеризуется длиной кодового ограничения К.
По сути, текущая п-битовая входная последовательность кода (п, k, К) зависит не только от значений текущего входного блока, состоящего из k бит, но также и от предыдущих (К -1)k-битовых блоков. Следовательно, текущая
выходная п-битовая последовательность является функцией последних (Kk) входных битов.
Свёрточный код создаётся прохождением передаваемой
информационной последовательности через линейный сдвиговый регистр с
конечным числом состояний. В общем, регистр сдвига состоит из К (k -битовых)
ячеек и линейного преобразователя, состоящего из п функциональных
генераторов и выполняющего алгебраические функции, как показано на рисунке
4.14.
Входные данные к кодеру, которые считаются двоичными, продвигаются вдоль регистра сдвига по k бит за раз. Число выходных битов для
96
каждой k-битовой входной последовательности равно п. Следовательно, кодовая скорость, определённая как Rc = k/n, согласуется с определением скорости
блочного кода. Параметр К называется длиной кодового ограничения (или кодовым ограничением) свёрточного кода и указывает число разрядов в регистре
сдвига.
Чтобы иметь возможность описывать сверточный код, необходимо
определить кодирующую функцию G(m) так, чтобы по данной входной последовательности m можно было быстро вычислить выходную последовательность U. Для реализации сверточного кодирования используется
несколько методов; наиболее распространенными из них являются графическая
связь, векторы, полиномы связи, диаграмма состояния, древовидная и решетчатая
диаграммы. Все они рассматриваются ниже.
1 2 k 1 2 k 1 2 k
1 2 3 n
Kk ячеек
k
информаци
онных бит
Кодированная последовательность
Рисунок 4.14 – Сверточный кодер
Представление связи.
При обсуждении сверточных кодеров в качестве модели будем использовать сверточный кодер, показанный на рисунке 4.15, а. На этом
рисунке изображен сверточный кодер (2, 1, 3) с длиной кодового ограничения К
= 3. В нем имеется п =2 сумматора по модулю 2; следовательно, скорость кодирования кода k/n равна 1/2. При каждом поступлении входной бит
помещается в крайний левый разряд, а биты регистра смещаются на одну позицию вправо. Затем коммутатор на выходе дискретизирует выходы всех сумматоров по модулю 2 (т.е. сначала верхний сумматор, затем нижний), в результате чего формируются пары кодовых символов, образующих кодовое
97
слово, связанное с только что поступившим битом. Это выполняется для
каждого входного бита. На рисунке 1.15, б представлена схема сверточного кодера с параметрами (3, 2, 2).
Выбор связи между сумматорами и разрядами регистра влияет на характеристики кода. Всякое изменение в выборе связей приводит в результате к различным кодам. Связь, конечно же, выбирается и изменяется не произвольным образом. Задача выбора связей, дающая оптимальные дистанционные свойства, сложна и в общем случае не решается; однако для всех значений длины кодового ограничения, меньших 20, с помощью
компьютеров были найдены хорошие коды.
В отличие от блочных кодов, имеющих фиксированную длину слова п, в
сверточных кодах нет определенного размера блока.
1 2 3
Вход Выход
а)
1 2
Вход Выход
б)
1 2
1
2
3
Рисунок 4.15 – Сверточный кодер (2, 1, 3) а) и (3, 2, 2) б)
Один из способов реализации кодера заключается в определении п векторов связи, по одному на каждый из п сумматоров по модулю 2. Каждый вектор имеет размерность К и описывает связь регистра сдвига кодера с
соответствующим сумматором по модулю 2. Единица на i-й позиции вектора
указывает на то, что соответствующий разряд в регистре сдвига связан с сумматором по модулю 2, а нуль в данной позиции указывает, что связи между разрядом регистра и сумматором по модулю 2 не существует Для кодера на
рисунке 4.15, а можно записать вектор связи (генераторный полином) g1 для верхних связей, a g2 – для нижних
98
12
12
111, 101
в восьмеричной форме
7, 5
gg
gg
==
==
(4.29)
Аналогичным образом можно записать генераторные полиномы для
кодера на рисунке 4.15, б, учитывая, что в этом кодере каждый раз два бита поступают на вход регистров сдвига, а на выходе генерируется три бита
1 2 3
1 2 3
1011, 1101, 1010,
в восьмеричной форме
13, 15, 12
g g g
g g g
= = =
= = =
Иногда связи кодера описываются с помощью полиномиального генератора. Сверточный кодер можно представить в виде набора из п
полиномиальных генераторов, по одному для каждого из п сумматоров по
модулю 2. Каждый полином имеет порядок К – 1 или меньше и описывает
связь кодирующего регистра сдвига с соответствующим сумматором по модулю
2, почти так же, как и вектор связи. Коэффициенты возле каждого слагаемого полинома порядка (К – 1) равны либо 1, либо 0, в зависимости от того, имеется ли связь между регистром сдвига и сумматором по модулю 2. Для кодера на рисунке 1.22, а можно записать полиномиальный генератор g1 (X) для верхних связей, a g2 (X) – для нижних
2
1
2
2
( ) 1
( ) 1
g X X X
g X X
= + +
=+
Здесь слагаемое самого нижнего порядка в полиноме соответствует
входному разряду регистра. Выходная последовательность находится следующим образом
12
( ) ( ) ( ) чередуется с ( ) ( ).U X m X g X m X g X=
Рассмотрим пространственные характеристики свёрточных кодов в
контексте простого кодера (рисунок 4.15, а). Мы хотим узнать расстояния между
всеми возможными парами последовательностей кодовых слов. Как и в случае блочных кодов, нас интересует минимальное расстояние между всеми такими
99
парами последовательностей кодовых слов в коде, поскольку минимальное
расстояние связано с возможностями коррекции ошибок кода.
Для оценки возможностей кода по коррекции ошибок используется
выражение
1
2
min
dt−

=
 
. (4.30)
Здесь
x


означает наибольшее целое, не большее х. Положив d
min
= 5,
можно видеть, что код, описываемый кодером на рисунке 4.15, а, может исправить две любые ошибки канала.
Возможности сверточного кода в коррекции ошибок. При изучении блочных кодов говорилось, что способность кода к коррекции ошибок, t,
представляет собой количество ошибочных кодовых символов, которые можно исправить в каждом блоке кода путем декодирования по методу максимального
правдоподобия.
В то же время при декодировании сверточных кодов способность кода к коррекции ошибок нельзя сформулировать так лаконично. При декодировании по принципу максимального правдоподобия код способен исправить t ошибок в пределах нескольких длин кодового ограничения, причем
"несколько" – это где-то от 3 до 5. Точное значение длины зависит от распределения ошибок. Для конкретного кода и модели ошибки длину можно ограничить с использованием методов передаточной функции кода.
Векторы связи или полиноминальные генераторы сверточного кода обычно выбираются исходя из свойств свободного расстояния кода. Главным критерием при выборе кода является требование, чтобы код не допускал катастрофического размножения ошибок и имел максимальное свободное
расстояние при данной степени кодирования и длине кодового ограничения.
Список наиболее известных кодов со скоростью кодирования 1/2 при К, равном от 3 до 9, и со степенью кодирования 1/3 при К, равном от 3 до 8,
соответствующих этому критерию, приводится в табл. 5.2. Векторы связи в этой
таблице представляют наличие или отсутствие (1 или 0) соединения между
соответствующими регистрами сверточного кодера, причем крайний левый
элемент соответствует крайнему левому разряду регистра кодера. Интересно, что эти соединения можно обратить (заменить в указанной выше схеме крайние
левые на крайние правые). При декодировании по алгоритму Витерби обратные
соединения приведут к кодам с точно такими же пространственными характеристиками, а значит, и с такими же рабочими характеристиками, как
показаны в таблицах 4.9 – 4.14.
100
Таблица 4.9 – Максимальное свободное расстояние кодов со скоростью кодирования 1/2
Длина
кодового
ограничения K
Порождающие полиномы (в восьмеричной записи)
d
св
3 5 7 5 4
15
17
6
5
23
35
7
6
53
75
8
Таблица 4.10 – Максимальное свободное расстояние кодов со скоростью кодирования 1/3
Длина
кодового
ограничения K
Порождающие полиномы (в восьмеричной записи)
d
св
3 5 7 7 8
4
13
15
17
10 5 25
33
37
12 6 47
53
75
13 7 133
145
175
15 8 225
331
367
16 9 557
663
711
18
Таблица 4.11 – Максимальное свободное расстояние кодов со скоростью кодирования 2/3
Длина
кодового
ограничения K
Порождающие полиномы (в восьмеричной записи)
d
св
2
17
06
15
3
3
27
75
72
5
4
236
155
337
7
Таблица 4.12 – Максимальное свободное расстояние кодов со скоростью кодирования k/5
Скорость
Длина кодового
Порождающие полиномы (в восьмеричной записи)
d
св
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]