676_Noskova_N.V._Izuchenie_funktsionirovanija_setej_
.pdfдлинный двоичный код. Биты в каждом кодовом слове передаются по каналу посредствам ФМ или, возможно, ЧМ.
Рисунок 2.4 - Структурная схема каскадной схемы кодирования
Также необходимо сказать, что минимальное расстояние для каскадного кода равно dmin Dmin , где Dmin – это минимальное расстояние для внешнего кода, a dmin – минимальное расстояние для внутреннего кода. Далее,
Kk
скорость каскадного кода равна Nn , что равно произведению скоростей
двух кодов.
Декодер жёстких решений для каскадного кода удобно разделить на внутренний декодер и внешний декодер. Внутренний декодер выполняет жёсткое решение по каждой группе из п бит, соответствующие кодовому слову внутреннего кода, и выносит решение о k информационных битах, основываясь на алгоритме максимального правдоподобия (минимума расстояния). Эти k бит представляют один символ внешнего кода. Когда принят блок из N k -битовых символов от внутреннего декодера, внешний декодер принимает жёсткое решение по К k -битовым информационным символам, основываясь на декодирование по правилу максимального правдоподобия.
При каскадном кодировании возможно и декодирование мягких решений. Обычно оно выполняется по внутреннему коду, если он выбран так, что имеет немного кодовых слов, т е. 2k не очень велико. Внешний код обычно декодируется посредствам декодера жёстких решений, особенно если длина блока велика и имеется много кодовых слов. С другой стороны, можно достичь достаточный выигрыш в качестве при использовании декодирования мягких решений по внутреннему и внешнему кодам, чтобы оправдать дополнительную сложность декодирования.
31
Внутренний код связан с модулятором (демодулятором) и каналом; он, как правило, настраивается для исправления большинства канальных ошибок. Внешний код, чаще всего с низкой избыточностью, снижает вероятность появления ошибок до заданного значения. Основной причиной использования каскадного кодирования являются низкая избыточность (высокая скорость) кодирования и меньшая сложность реализации, которая потребовалась бы для осуществления с какой-то одной ступенью кодирования. На рисунке 2.4 между двумя этапами кодирования располагается устройство перемежения. Делается это для того, чтобы разнести пакеты ошибок, которые могут возникать в результате внутреннего декодирования [8].
2.2.1 Коды Рида-Соломона
Коды Рида-Соломона (Reed-Solomon codes – RS codes) – это широко используемый подкласс недвоичных кодов БЧХ [2, 8, 10, 11].
При использовании кодов Рида-Соломона данные обрабатываются порциями по m бит, именуемыми символами. Код (n, k) характеризуется следующими параметрами.
Таким образом, алгоритм кодирования расширяет блок k символов до размера n , добавляя (n – k) избыточных контрольных символов. Как правило, m > 1 является степенью 2, широко используется значение m = 8.
Коды Рида-Соломона удобны для исправления пакетов ошибок. Данный тип кодов характеризуется высокоэффективным использованием избыточности, длина блоков и размеры символов могут легко приспосабливаться под сообщения разных размеров. Кроме того, для таких кодов существуют эффективные методы кодирования.
Коды Рида-Соломона (n, k) определены на m-битовых символах при всех n и k , для которых
0 k n 2m 2, |
(2.10) |
где k число информационных бито, подлежащих кодированию, n – число бит в закодированном блоке.
32
Для большинства кодов Рида-Соломона (n, k) |
|
(n,k) (2m 1,2m 1 2t), |
(2.11) |
где t – количество ошибочных бит в символе, которые может исправить код,
n –k = 2t – число контрольных символов.
Расширенный код Рида-Соломона можно получить только при n = 2m
или n = 2m + 1.
Код Рида-Соломона обладает наибольшим минимальным расстоянием, возможным для линейного кода с одинаковой длиной входных и выходных блоков кодера. Для недвоичных кодов расстояние между двумя кодовыми словами определяется (по аналогии с расстоянием Хэмминга) как число символов, которыми отличаются последовательности. Для кодов РидаСоломона минимальное расстояние определяется следующим образом
dmin n k 1. |
(2.12) |
Код, который исправляет все искаженные символы, содержащие ошибки в t или меньшем числе бит, t можно выразить следующим образом
t |
d |
min |
1 |
|
n k |
|
||||
|
|
|
|
|
|
|
. |
(2.13) |
||
|
2 |
|
2 |
|||||||
|
|
|
|
|
|
|
|
Здесь x означает наибольшее целое, не превышающее х. Из (2.13)
видно, что коды Рида-Соломона, исправляющие t символьных ошибок, требуют не более 2t контрольных символов. Следовательно, декодер имеет n – k «используемых» избыточных символов, количество которых вдвое превышает количество исправляемых ошибок. Для каждой ошибки один избыточный символ используется для обнаружения ошибки и один для определения правильного значения.
Преимущества недвоичных кодов, подобных кодам Рида-Соломона, можно показать следующим образом. Рассмотрим двоичный код (n, k) = (7, 3). Полное количество кодовых слов в нем равно 2n = 27 = 128, из которых 2k = 23 = 8 (или 1/16 часть всех кодовых слов) являются разрешенными кодовыми словами.
Теперь рассмотрим недвоичный код (n, k) = (7,3), где каждый символ состоит из m =3 бит. Полное количество кодовых слов в таком коде равно 2nm = 221 = 2 097 152 , из которых 2km =29 = 512 (или 1/4096 часть всех кодовых слов, т.е. очень небольшая часть) являются разрешенными кодовыми словами.
Из сравнения двоичных и недвоичных кодов следует, что в последних используется только незначительная часть полного количества кодовых слов, и это дает возможность достичь большего значения dmin.
33
Рассмотрим на примере способность кода Рида-Соломона исправлять пакеты ошибок, которые могут быть вызваны либо импульсными помехами, либо глубокими замираниями сигнала в радиотракте [8, 11].
Возьмем для примера код (n, k) = (255,247), в котором каждый символ состоит из т = 8 бит (такие символы принято называть байтами). Поскольку п – k = 8, из уравнений (3.12) и (3.13) можно видеть, что этот код может исправлять любые 4-символьные ошибки в блоке длиной до 255 символов.
2.2.2 Свёрточные коды
Сверточный код задается тремя параметрами: п, k и К. Код (п, k, К) обрабатывает входящие данные порциями по k бит и генерирует выходную последовательность, состоящую из п бит для каждых k бит входа. До этого момента принципы работы сверточных и блочных кодов не отличаются. Для сверточных кодов п и k, как правило, являются очень малыми числами. Разница между двумя типами кодов состоит в том, что сверточные коды используют память, которая характеризуется длиной кодового ограничения К. По сути, текущая п – битовая входная последовательность кода (п, k, К) зависит не только от значений текущего входного блока, состоящего из k бит, но также и от предыдущих (К -1) k - битовых блоков. Следовательно, текущая выходная п-битовая последовательность является функцией последних (K k) входных битов.
Свёрточный код создаётся прохождением передаваемой информационной последовательности через линейный сдвиговый регистр с конечным числом состояний. В общем случае регистр сдвига состоит из К (k - битовых) ячеек и линейного преобразователя, состоящего из п функциональных генераторов и выполняющего алгебраические функции как показано на рисунке
2.5 [8].
Входные данные к кодеру, которые считаются двоичными, продвигаются вдоль регистра сдвига по k бит за раз. Число выходных битов для каждой k - битовой входной последовательности равно п. Следовательно, кодовая скорость, определённая как Rc = k/n, согласуется с определением скорости блочного кода. Параметр К называется длиной кодового ограничения (или кодовым ограничением) свёрточного кода и указывает число разрядов в регистре сдвига.
Чтобы иметь возможность описывать сверточный код, необходимо определить кодирующую функцию G(m) так, чтобы по данной входной последовательности m можно было быстро вычислить выходную последовательность U. Для реализации сверточного кодирования используется несколько методов; наиболее распространенными из них являются графическая связь, векторы, полиномы связи, диаграмма состояния, древовидная и решетчатая диаграммы [2, 8].
34
Kk ячеек
|
|
|
1 |
2 |
|
|
k |
|
|
1 |
2 |
|
|
k |
|
|
1 |
2 |
|
|
k |
|||||
|
k |
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
информаци |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
онных бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
n |
Кодированная последовательность
Рисунок 2.5 - Сверточный кодер
При обсуждении сверточных кодеров в качестве модели будем использовать сверточный кодер, показанный на рисунке 2.6. На этом рисунке изображен сверточный кодер (2, 1, 3) с длиной кодового ограничения К = 3. В нем имеется п =2 сумматора по модулю 2; следовательно, скорость кодирования кода k/n равна 1/2. При каждом поступлении входной бит помещается в крайний левый разряд, а биты регистра смещаются на одну позицию вправо. Затем коммутатор на выходе дискретизирует выходы всех сумматоров по модулю 2 (т.е. сначала верхний сумматор, затем нижний), в результате чего формируются пары кодовых символов, образующих кодовое слово, связанное с только что поступившим битом. Это выполняется для каждого входного бита.
Выбор связи между сумматорами и разрядами регистра влияет на характеристики кода. Всякое изменение в выборе связей приводит в результате к различным кодам. Связь, конечно же, выбирается и изменяется не произвольным образом. Задача выбора связей, дающая оптимальные дистанционные свойства, сложна и в общем случае не решается; однако для всех значений длины кодового ограничения, меньших 20, с помощью компьютеров были найдены хорошие коды.
В отличие от блочных кодов, имеющих фиксированную длину слова п, в сверточных кодах нет определенного размера блока.
Прореживание. Как было уже сказано, скорость внутреннего кода, или отношение числа символов в информационном кадре к общему числу символов, передаваемых в одном кодовом кадре, может изменяться в соответствии с условиями передачи данных в канале связи и требованиями к скорости передачи данных. Чем выше скорость кода, тем меньше его избыточность и тем меньше его способность исправлять ошибки в канале связи.
35
Рисунок 2.6 - Сверточный кодер с параметрами (2, 1, 3)
Как правило, внутреннее кодирование с изменяемой скоростью строится с использованием базового кодирования со скоростью 1/2. Основу базового кодера представляют собой два цифровых фильтра с конечной импульсной характеристикой, выходные сигналы которых X и Y формируются путем сложения по модулю двух сигналов, снятых с разных точек линии задержки в виде регистра сдвига из шести триггеров (рисунок 3.7). Входные данные последовательно вводятся в регистр сдвига, а из выходных сигналов фильтров после преобразования в последовательную форму создается цифровой поток, в котором биты следуют друг за другом в два раза чаще, чем на входе (скорость такого кода равна 1/2, так как на каждый входной бит приходится два выходных).
В режимах с большей скоростью кодирования передается лишь часть генерируемых сигналов X и Y (передаваемые сигналы и их порядок приведены в таблице рисунка 3.7). Например, при скорости 2/3 двум входным битам ставятся в соответствие и передаются в последовательной форме три выходных сигнала (X1, Y1, Y2), а X2 вычеркивается. При максимальной скорости внутреннего кода, равной 7/8, семи входным битам соответствуют восемь выходных (X1, Y1, Y2, Y3, Y4, X5, Y6, X7).
2.3Перемежение битов
Вдополнение к помехоустойчивому кодированию в беспроводных системах используют операцию перемежения [2, 8].
Изменение по определенному правилу естественного порядка следования символов в некоторой кодовой последовательности называют процедуру перемежением (Interleaving), обратную перемежению, принято называть деперемежением (deinterleaving). В результате выполнения процедуры
деперемежения |
восстанавливается естественный |
порядок следования |
символов. |
|
|
Методы |
перемежения-деперемежения обычно |
используются для |
разрушения пакетов ошибок, вызванных замираниями уровня принимаемого сигнала, и, следовательно, уменьшения степени группирования ошибок в последовательности символов, поступающих на вход канального декодера.
36
При перемежении передаваемое кодовое слово формируется из символов различных кодовых слов.
X
Y
Rc |
|
|
|
|
|
|
|
|
|
|
X :1 |
X1 |
Y1 |
|
|
|
|
|
|
|
Y :1 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
X :10 |
X YY |
|
|
|
|
|
||
|
Y :11 |
1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X :101 |
X YY X |
3 |
|
|
|
|||
|
Y :110 |
1 |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X :10101 |
X YY X Y X |
5 |
|
|||||
|
Y :11010 |
1 |
1 |
2 |
|
3 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
X :1000101 |
X YY YY X Y X |
|
||||||
|
Y :1111010 |
7 |
|||||||
|
1 |
1 |
2 |
3 |
4 |
5 |
6 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 2.7 - Свёрточное кодирование: а – кодирование с прореживанием; б – таблица прореживания
Поэтому при деперемежении возникающий пакет ошибок разбивается на отдельные ошибки, принадлежащие различным кодовым словам. Иначе говоря, при деперемежении пакет ошибок трансформируется в последовательность независимых ошибок, для исправления которых, как правило, можно использовать менее мощный код. С увеличением глубины перемежения можно ожидать улучшения характеристик помехоустойчивости, поскольку при этом происходит ослабление корреляции ошибок. Но при этом возрастает задержка в доставке сообщения, связанная с выполнением процедур перемежениядеперемежения. Поэтому приходится принимать компромиссное решение между степенью улучшения характеристик помехоустойчивости и возможной задержкой. Рассмотрим некоторые эффективные методы перемежения.
2.3.1 Блоковое перемежение
При блоковом перемежении кодовые слова длиной п символов записываются в виде таблицы шириной W и глубиной D символов (рисунок 2.8) [2, 8].
Предположим, что W=n. Тогда строки таблицы представляют собой кодовые слова, содержащие к информационных символов и (п-к) проверочных
37
символов. После заполнения таблицы осуществляется последовательное считывание символов по столбцам и их передача по каналу связи. В приемнике устройство восстановления выполняет обратные операции; оно принимает символы из демодулятора, восстанавливает исходный порядок битов и передает их на декодер. Символы поступают в массив устройства восстановления по строкам, а считываются по столбцам. На рисунке 2.9, а приведен пример устройства чередования с М = 5 строками и N = 5 столбцами.
Перемежитель 1
Входные
биты
|
|
Запись |
|
|
|
|
|
|
|
Считы |
1 |
6 |
11 |
16 |
21 |
|
|
|
вание |
|
||||||
|
|
|
|
|
|
|
||
|
|
|
2 |
7 |
12 |
17 |
22 |
|
|
1÷25, |
|
3 |
8 |
13 |
18 |
23 |
|
|
51÷75, |
|
4 |
9 |
14 |
19 |
24 |
|
|
101÷125, |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
и т.д. |
|
5 |
10 |
15 |
20 |
25 |
Выходные |
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
биты |
П1 |
2 |
|
|
|
|
|
2 |
П2 |
26÷50, |
Запись |
|
|
|
|
|
||
|
|
|
|
|
|
|||
76÷100, Считы |
26 |
31 |
36 |
41 |
46 |
|
||
126÷150, вание |
|
|||||||
|
|
|
|
|
|
|||
|
и т.д. |
|
27 |
32 |
37 |
42 |
47 |
|
|
|
|
28 |
33 |
38 |
43 |
48 |
|
|
|
|
29 |
34 |
39 |
44 |
49 |
|
|
|
|
30 |
35 |
40 |
45 |
50 |
|
Перемежитель 2
Рисунок 2.8 - Пояснение принципа работы блочного перемежителя
N=5 столбцов
|
A1 |
B1 |
C1 |
D1 |
E1 |
|
A1 |
B1 |
C1 |
D1 |
E1 |
|
A1 |
B1 |
C1 |
D1 |
E1 |
|
A2 |
B2 |
C2 |
D2 |
E2 |
|
A2 |
B2 |
C2 |
D2 |
E2 |
|
A2 |
B2 |
C2 |
D2 |
E2 |
M=5 |
A3 |
B3 |
c3 |
D3 |
E3 |
|
A3 |
B3 |
С3 |
D3 |
E3 |
|
A3 |
B3 |
С3 |
D3 |
E3 |
строк |
|
|
|||||||||||||||
|
A4 |
B4 |
C4 |
D4 |
E4 |
|
A4 |
B4 |
C4 |
D4 |
E4 |
|
A4 |
B4 |
C4 |
D4 |
E4 |
|
A5 |
B5 |
C5 |
D5 |
E5 |
|
A5 |
B5 |
C5 |
D5 |
E5 |
|
A5 |
B5 |
C5 |
D5 |
E5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а) |
|
|
|
|
|
б) |
|
|
|
|
|
в) |
|
|
Рисунок 2.9 - Блочное устройство чередования: а) устройство размером
M×N; б) четырёхсимвольный пакет ошибок; в) семисимвольный пакет ошибок.
38
2.3.2 Сверточное перемежение
Помимо блочных устройств перемежения, используются сверточные устройства перемежения. Схема одного из таких устройств представлена на рисунке 2.10 [8].
Рисунок 2.10 - Структурная схема сверточного перемежителя -
деперемежителя
Кодовые символы последовательно подаются в блок из N регистров; причем каждый последующий регистр может хранить на J символов больше, чем предыдущий. Нулевой регистр не предназначен для хранения (символ сразу же передается).
С каждым новым кодовым символом коммутатор переключается на новый регистр, и кодовый символ подается на него до тех пор, пока наиболее старый кодовый символ в регистре не будет передан на модулятор передатчика канала. После (N – 1) регистра коммутатор возвращается к нулевому регистру и цикл снова повторяется. После демодулятора приемника канала все операции повторяются в обратном порядке. И вход, и выход устройств перемежения и деперемежения должны быть синхронизированы.
На рисунке 2.11 показан пример простого сверточного четырехрегистрового (J = 1) устройства перемежения/деперемежения, загруженного последовательностью кодовых символов.
При этом последовательности имеют вид:
на входе перемежителя
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, и т.д.;
на выходе перемежителя
39
1, x, x, x, 5, 2, x, x, 9, 6, 3, x, 13, 10, 7, 4, 17, 14, 11, 8, и т.д.;
на выходе деперемежителя
x, x, x, x, x, x, x, x, x, x, x, x, 1, 2, 3, 4, 5, 6, 7, 8, 9, и т. д,
где знак «х» – означает неопределенное состояние.
Одновременно на этом же рисунке представлено синхронизированное устройство восстановления, которое передает обработанные символы на декодер. На рисунке 2.12, а показана загрузка символов 1 – 4; знак "х" означает неизвестное состояние. На рисунке 2.12, б представлены первые четыре символа, подаваемые в регистры, и показана передача символов 5-8 на выход устройства перемежения. На рисунке 2.12, в показаны поступающие в устройство символы 9 – 12. Теперь устройство восстановления заполнено символами сообщения, но еще не способно ничего передавать на декодер. И, наконец, на рисунке 2.12, г показаны символы 13 – 16, поступившие в устройство чередования, и символы 1 – 4, переданные на декодер. Процесс продолжается, таким образом, до тех пор, пока полная последовательность кодового слова не будет передана на декодер в своей исходной форме.
Рабочие характеристики сверточного устройства перемежения сходны с параметрами блочного устройства перемежения. Важным преимуществом сверточного устройства перемежения перед блочным устройством перемежения является то, что при сверточном перемежении прямая задержка составляет M(N-1) символов при М = NJ, а требуемые объемы памяти – M(N-1)/2 на обоих концах канала.
Очевидно, что требования к памяти и время задержки снижаются вдвое по сравнению с блочным чередованием. Для свёрточного перемежителя (рисунок 2.12) число строк равно N и число столбцов равно NJ. Длина блока перемежаемых данных составляет N× NJ, а глубина перемежения равна
NJ.
Помимо рассмотренных выше регулярных блочного и сверточного перемежения может быть использовано случайное перемежение с использованием на приеме и передаче псевдослучайной последовательности для управления работой коммутаторов.
При передаче отсчетов речевого сигнала восьмиразрядными кодовыми комбинациями перемежение бит позволяет исключить появление при восстановлении сигнала в ЦАП нескольких подряд следующих ошибочных отсчетов, т.е преобразовать пакеты ошибочных отсчетов в одиночные ошибочные отсчеты. А одиночные ошибочно принятые отсчеты могут быть исправлены методом маскирования.
40