Блочное кодирование
Блочный кодер обозначается (K2,K1), где K1 - число символов в блоке входной последовательности, а K2 - число символов в блоке выходной последовательности. Отношение R=K1/K2 носит наименование скорости кодирования (coding rate) и характеризует меру избыточности, вносимую кодером.
При блочном кодировании в стандарте TETRA используется двоичный систематический кодер, т. е. кодер, у которого каждый символ входной и выходной последовательности соответствует одному биту, а в состав блока выходной информации полностью включается блок входной информации, который дополняется p-битовым кодом циклического контроля избыточности (CRC - Cyclic Redundancy Check). Таким образом, K1 битов типа 1 преобразуются в K2 бита типа 2, где K2=K1+p.
CRC-коды вычисляются по правилу
F(X) = Xn-K1M(X) mod G(X),
где
M(X)=b1(1)XK1-1 + b1(2)XK1-2 + ... + b1(K1-1)X! + b1(K1),
G(X) - формирующий полином, различный для разных логических каналов; n-K1 - количество создаваемых битов четности.
Многочлен F(X) является многочленом степени (n-K1-1) с коэффициентами f(0), f(1),.., f(n-K1-1), т. е.
Тогда K2 бит типа 2 имеют вид: b2(k) = b1(k) при k = 1,2,.., K1 b2(k) = f(k-K1-1) при k = K1+1, K1+2,.., n.
Порождающий полином для канала речевого трафика имеет вид:
G(X) = 1 + X3 +X7,
для остальных каналов:
G(X) = 1 + X5 + X12 + X16 .
Для одного из логических каналов - канала назначения доступа AACH - используется блочное кодирование на основе кода Рида-Маллера. Коды Рида-Маллера представляют собой класс линейных кодов с простым описанием и декодированием, осуществляемым методом простого голосования [15].
Порождающая матрица кода Рида-Маллера r-го порядка длиной 2m определяется как совокупность блоков
где G0 - вектор размерности n=2m, состоящий из одних единиц; Gp - (m х 2m)- матрица, содержащая в качестве столбцов все двоичные m-последовательности; строки матрицы Gp получены из строк матрицы G1 как все возможные произведения p строк из G1 [15].
При блочном кодировании канала AACH стандарта TETRA 14 бит входной информационной последовательности должно преобразовываться в 30-разрядный выходной блок в соответствии с уравнением
[b2(1), b2(2),..,b2(30)] = [b1(1), b1(2),..,b1(14)] G,
где G - порождающая матрица, имеющая вид
G = [I14GRM],
где I14 - единичная матрица размером 14х14, а GRM - порождающая матрица кода Рида-Маллера размерностью 16х14.
Это означает, что при блочном кодировании AACH первые 14 бит выходной последовательности соответствуют битам входного информационного блока, а последующие 16 бит образуются с помощью кода Рида-Маллера.
Сверточное кодирование
Сверточное кодирование обеспечивает преобразование K2 входных бит типа 2, полученных в результате блочного кодирования, в K3 бит выходной последовательности, причем K3 > K2. Каждый бит выходной последовательности получается как результат суммирования по модулю 2 нескольких следующих друг за другом битов входной последовательности.
Сверточные кодеры обычно обозначаются как n,k,K, где n - количество бит в одном символе выходной последовательности, которые формируются за один такт работы кодера (соответствует числу сумматоров по модулю 2 в схеме кодера); k - количество бит в одном символе входной последовательности, поступающих на вход кодера за один такт; K - длина ограничения (constraint length), т. е. числовое значение, соответствующее длине сдвигового регистра, который участвует в формировании одного выходного символа. (Символы могут состоять из одного или нескольких бит.) При этом отношение R = k/n, как и в блочном кодере, называется скоростью кодирования.
Однако поскольку в стандарте TETRA непосредственно сверточное кодирование дополняется процедурой прореживания полученной информации, изменяющей количество бит выходной последовательности, под скоростью кодирования будем понимать отношение суммарного количества бит входной последовательности к суммарному количеству бит выходной последовательности (K2/K3).
В связи с тем, что объемы блоков, а также требования по помехоустойчивости и скорости передачи информации в разных логических каналах отличны друг от друга, сверточные коды для этих логических каналов также различаются. Сверточное кодирование в стандарте TETRA состоит из двух процедур:
кодирования "материнским" кодом с фиксированной скоростью (для канала речевых сообщений TCH/S она соответствует 1/3, для всех остальных каналов - 1/4);
перфорирования (прореживания, выкалывания) полученной последовательности, т. е. пропуска некоторых кодированных символов с целью приведения структуры размещения бит в соответствие со структурой кадра. Изменение алгоритмов перфорирования позволяет обеспечить различную скорость сверточного кодирования для разных логических каналов.
Кодирование материнским кодом
При кодировании материнским кодом используется сверточный кодер (n,1,5), где n - для канала трафика речи (TCH/S) равно 3, а для всех остальных каналов - 4.
Любой из порождающих многочленов материнского кода может быть записан в виде
где gi,j = 0 или 1, j = 0,1,2,3,4
Это означает, что закодированные биты определяются как
где сумма берется по модулю 2, а b2(k-j)=0 при k≤j.
Порождающие многочлены материнского кода имеют вид:
для канала трафика речи: G1(D) = 1 + D + D2 + D2 + D3 + D4 G2(D) = 1 + D + D3 + D4 G3(D) = 1 + D2 + D4
для остальных каналов: G1(D) = 1 + D + D4 G2(D) = 1 + D2 + D3 + D4 G3(D) = 1 + D + D2 + D4 G4(D) = 1 + D + D3 + D4.
В качестве иллюстрации на рис. 8.2 показана схема сверточного кодера для всех логических каналов стандарта TETRA, отличных от канала речевого трафика.
