
Книги и методы для курсовых / Kody_i_ustroystva_pomehoust__kodir
.pdf
6. СВЕРТОЧНЫЕ КОДЫ
6.1. Определение, параметры и классификация сверточных кодов
Сверточные коды (СК) имеют большой научный и практический интерес для современных систем и сетей телекоммуникаций. Это определяется многими их достоинствами, а именно: высокой скоростью обработки информации (десятки и сотни Мбит/с), высокой корректирующей способностью как случайных, так пакетных ошибок, реализацией эффективных кодеков и систем ветвевой синхронизации распределителей информации, эффективного использования в каналах связи с фазовой неопределенностью и др.
В общем виде кодирование информации СК может быть представлено следующим образом [1..3,15]
k0 |
|
T(i) (x) = åI(j) (x)× g(j) (x), j =1,2Kk0 ,i = j+1 |
(6.1) |
j=1 |
|
где I(x) - последовательность передаваемых информационных символов;
х - оператор задержки: (оператор задержки иногда обозначают через латинскую букву D);
g(x)— порождающий или образующий полином (многочлен);
k0 - блок информационных символов, одновременно поступающих на вход кодирующего устройства (k0>l).
Способ формирования кодовых символов, выполняемых согласно (6.1), соответствует форме записи свертки двух функций, что и послужило названию данных кодов. Сверточный код — это рекуррентный код с периодической полубесконечной структурой символов кодовой последовательности. Обобщенная структурная схема кодера СК представлена на рис.6.1
|
1 |
|
|
1 |
|
|
I(x) |
Кодер СК |
|
T(i)(x) |
|||
. . . |
. . . |
|
||||
g(j)(x), j=1,2,…,k0 |
n0 |
|||||
|
k0 |
|
|
|||
|
|
|
|
|
|
Рис. 6.1. Обобщенная структура кодера СК
Входные информационные символы I(х) делятся на k0 символов, которые одновременно с каждым тактом поступают на входы кодера СК, в котором согласно (6.1) формируются кодовые символы n0. Таким образом, кодовая последовательность Т(i)(х) представляет собой полубесконечную последовательность блоков n0.
Косновным характеристикам СК относятся:
-R=k0/n0=1/2; 2/3; 3/4 и т.д. или R=k0/n0=1/2; 1/3; 1/4 и т. д. - скорость передачи кода, которая для СК записывается в виде дроби;
-J³2 - количество ортогональных проверочных уравнений;
-d0=J+1 - минимальное кодовое расстояние;
-dсв - свободное кодовое расстояние;
-tисп£J/2 - кратность или количество исправляемых ошибок;
-tобн£d0-1=J - кратность обнаруживаемых ошибок;
-nA=(m+1)*n0 - длина кодового ограничения или длина кодовой последовательности, соответствующая кодированию информационных блоков из k0 символов в течение (m+1) такта;
-kA=R*nA - количество информационных символов, приходящих на nA кодовых символов.
Сверточные коды, как и блоковые линейные коды, бывают:
-двоичные и недвоичные;
-алгебраические и неалгебраические;
-линейные и нелинейные;
-систематические и несистематические;
-ортогональные и неортогональные и т.д.
Алгоритм формирования кодовых символов СК таков, что любому входному информационному блоку из k0 двоичных символов и "m" (m- максимальная степень порождающего полинома g(x)) предшествующих информационных символов, хранящихся в регистре сдвига (RG) кодера, соответствует выходной
кодовый блок из n0 двоичных символов. В связи с тем, что в процессе формирования n0 кодовых символов участвуют "m" предшествующих информационных символов (введенных m тактами ранее), то такой алгоритм кодирования называют кодированием с памятью.
У несистематических СК в кодовых блоках из n0 двоичных символов нет в "явном виде" (невозможно выделить) информационных символов или блоков из k0 двоичных символов. Кодирование входной информации осуществляется с памятью и процесс кодирования может быть бесконечно продолжительным.
В зависимости от способа формирования проверочных уравнений СК бывают ортогональными, самоортогональными и ортогонализируемыми.
Ортогональными СК (ОСК) называют такие коды, у которых система из J (J≤2) проверочных уравнений ортогональна относительно декодируемых k0 информационных символов и неортогональна относительно информационных символов, входящих в данные проверочные уравнения.
Самоортогональные СК (ССК) - коды, у которых декодируемый информационный символ входит одновременно во все проверочные уравнения, а все остальные символы, участвующие в декодировании в данный момент времени, входят не более, чем в одно проверочное уравнение, т.е. СК формирует, так называемую, систему разделенных проверок.
Ортогонализируемыми СК называются такие коды, у которых при декодировании информационного или k0 символов требуется выполнить дополнительные линейные преобразования над проверочными символами для получения дополнительных, так называемых, составных проверок.
6.2. Способы задания систематических сверточных кодов и их кодирование
6.2.1. Задание систематических сверточных кодов
Систематические СК задаются [1…3]:

−с помощью порождающей матрицы, G∞(x);
−с помощью проверочной матрицы, Н∞(х);
−с помощью разностных треугольников;
−с использованием совершенных разностных множеств.
Порождающая матрица систематического СК имеет более сложное построение, чем группового кода. Это определяется из-за полубесконечной структуры порождающей матрицы СК, имеющей вид:
|
éG |
0 G1 |
. |
. . Gm |
. |
. . |
0 ù |
|
|
|
|
ê |
|
G1 . . . |
Gm |
. . |
0 |
ú |
|
|
|
|
ê 0 G0 |
ú |
|
|
||||||
|
ê |
|
|
. |
|
|
|
ú |
|
|
|
ê . |
|
|
|
|
|
ú |
|
|
|
|
ê . |
|
|
. |
|
|
|
ú |
|
|
G (x)=ê . |
|
|
. |
|
|
|
ú |
, |
(6.2) |
|
∞ |
ê |
|
. |
. . G0 |
G1 |
|
|
ú |
|
|
|
ê 0 0 |
. . Gm ú |
|
|
||||||
|
ê . |
|
|
|
|
|
|
ú |
|
|
|
ê |
|
|
|
|
|
|
ú |
|
|
|
ê . |
|
|
|
|
|
|
ú |
|
|
|
ê |
|
|
|
|
|
|
ú |
|
|
|
ë . |
|
|
|
|
|
|
û |
|
|
где "0" - области матрицы, состоящие полностью из нулевых двоичных символов,
m - количество порождающих матриц вида
é q11,ξ |
. . . q1n0 |
,ξ |
ù |
|
|
||||
ê |
|
|
|
|
|
|
ú |
|
|
ê |
|
|
|
|
|
|
ú |
|
(6.3) |
Gξ(x)=ê |
|
|
. . . |
|
|
|
ú |
k0 строк |
|
ê |
|
|
|
|
|
|
ú |
|
|
ê |
|
|
|
|
|
|
ú |
|
|
ê |
k0 |
1,ξ |
. . . q |
k0 |
n |
|
ú |
|
|
ëq |
|
|
0 ,ξ û |
, |
|
||||
|
|
|
|
|
|
|
|
|
n0 столбцов
где qi,j – коэффициенты равны либо 1, либо 0.

Систематический ССК задаются следующей порождающей матрицей G∞(x):
|
|
1 0 |
. . . |
0 |
q1ko+1 . . . |
q1no |
|
|
|
0 1 |
. . . |
0 |
q2ko+1 . . . |
q1no |
|
G*∞(x)=[I,G0]= |
|
|
|
. . . |
|
|
|
|
|
0 0 |
. . . |
1 |
qkoko+1 . . . |
qkono |
|
|
|
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
или |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
1 0 |
. . . |
0 |
q1ko+1 . . . |
q1no |
|||
0 0 |
. . . |
0 |
q2ko+1 . . . |
q1no |
|||
G**∞(x)=[I,G0]= |
|
|
. . . |
(6.4) |
|||
|
|
|
|
||||
0 0 |
. . . |
0 |
qkoko+1 . . . |
qkono |
. . .
.
Проверочная матрица Н∞(х) СК, как и порождающая матрица, является
|
n0 |
|
0 |
|
Ф |
I0 |
|
N |
|
||
|
Ф |
|
|
|
|
|
|
H∞(x)= |
|
Ф |
(6.5) |
∙
0 |
∙ |
, |
|
|
полубесконечной:
где n0=k0+l, l0=n0-k0, N=m+l,
Ф- совокупность проверочных подматриц, имеющих форму треугольника.

Порождающая и проверочная матрицы СК, как и у линейных кодов, связаны выражением: G∞(D)*HT∞(D)= G∞(D)*HT∞(D)=0 .
Для систематического ССК с алгоритмом порогового декодирования
проверочная матрица H∞(D) задается следующим образом:
H 1,ko+1 |
H 2,ko+1 |
. . . |
H ko,ko+1 |
|
H 1,ko+2 |
H 2,ko+2 |
. . . |
H ko,ko+2 |
|
H∞(x)= |
|
. . . |
k0 строк |
(6.6) |
|
|
|
|
|
H 1,no |
H 2,no |
. . . |
H ko,no |
|
.
n0 столбцов
Из данной проверочной матрицы следует, что для ССК с R = k0/n0= =(n0-1)/n0 проверочная матрица Н∞ (х) содержит (n0-k0) строк и k0 столбцов
проверочных треугольников. Для ССК с R = k0/n0 == 1/n0 , n0 = 2;3;..., проверочная матрица Н∞(х) содержит k0=l, т.е. один столбец и n0 строк проверочных треугольников.
Каждый из проверочных треугольников Н i,k0+i,i=l,2,...; k0=l,2,... проверочной матрицы H∞(х) в общем случае имеет вид:
é |
(j) |
|
|
ê q |
(i),0 |
|
q(j)(i),0 |
ê q(j)(i),1 |
|
||
ê |
|
|
q(j)(i),1 |
ê q(j)(i),2 |
|
||
H j,i(x)=ê |
|
|
. |
ê . |
|
||
ê (j) |
(j) |
||
ëq |
(i),m |
q |
(i),m-1 |
|
|
|
ù |
|
|
|
ú |
|
|
|
ú |
q(j)(i),0 |
|
|
ú |
|
|
ú |
|
. |
. |
. |
ú |
ú |
|||
K |
q(j) |
q(j) |
ú |
|
(i),1 |
(i),0 |
|
|
|
|
û , |
где q - коэффициенты равные либо 1,либо О,
j, i - номера соответственно строки и столбца матрицы Н∞(х), которыми определяется проверочный треугольник,
0,...m - порядковые номера степеней, в которые возводятся

соответствующие коэффициенты порождающего полинома.
Основную информацию о самоортогональных сверточных кодах ССК несут коэффициенты левого столбца и нижней строки проверочного треугольника. Например, пусть задан проверочный треугольник следующей структуры:
По данному проверочному треугольнику можно определить параметры ССК
n1=2 |
é1 _ _ _ _ _ _ _ 1ù |
|
||||||||
ê |
0 |
1 |
|
|
|
|
|
ú |
|
|
|
|
|
|
|
|
|
||||
|
ê |
_ _ _ _ _ _ 1ú |
|
|||||||
n1=3 |
ê |
1 |
0 |
1 |
|
|
|
|
ú |
|
ê |
_ _ _ _ _ 1 |
|
||||||||
|
0 |
1 |
0 |
1 |
|
|
|
ú |
|
|
H j,i(x)=H 1,1= |
ê |
_ _ _ _ 1ú |
(6.7) |
|||||||
ê |
0 |
1 |
0 |
1 |
0 |
_ |
_ - |
ú |
||
|
ê |
1 |
|
|||||||
|
0 |
0 |
0 |
1 |
0 |
1 |
- - |
ú |
|
|
|
ê |
1ú |
|
|||||||
n1=4 |
ê |
1 |
0 |
0 |
0 |
1 |
0 |
1 - |
ú |
|
ê |
1ú |
|
||||||||
n1=5 |
ê |
1 |
1 |
0 |
0 |
0 |
1 |
0 1 1ú . |
|
|
|
ë |
|
|
|
|
|
|
|
û |
|
салгоритмом ПД:
1.Поскольку задан один проверочный треугольник, то k0=1, n0=k0+l=2, R= k0/n0 =1/n0;
2.Так как k0=l, то ССК задается одним порождающим полиномом, определяемым коэффициентами левого столбца и нижней строки проверочного треугольника.
3.Количество ненулевых членов порождающего полинома определяет число проверочных уравнений Ji, J=4. Следовательно, ССК может исправлять tисп ≤ J/2 =
4/2 = 2 ошибки и обнаруживать tобн≤ d0-1 = (J + 1) - 1 = 4 ошибки;
4. Строки проверочного треугольника, которые начинаются с ненулевых двоичных символов, формируют проверочные уравнения, размеры данных проверок и номера позиций информационных и проверочных символов, участвующих в формировании проверочных уравнений. Для данного примера имеем: s0=i0+ep.0, s1=i1+ep.3, s2=i0+i3+i6+ep.6, s3=i0+i2+i4+i7+ep.7.
Размеры проверок в проверочном треугольнике обозначены цифрами перед стрелками и определяются количеством ненулевых символов в строке;

5. Длина кодового ограничения nA и эффективная длина кодового ограничения ne СК равны соответственно,
nA =(m+1)n0=(7+1)2=16, двоичных символов
ne =1/2×J2+1/2×J+1=1/2×42+1/2×4+1=11 двоичных символов.
Так как проверочный треугольник позволяет определить практически все параметры ССК, то разработано много способов их построения. Однако на практике наибольшее применение получили два способа их построения, а именно с помощью нахождения разностных треугольников и совершенных разностных множеств. Сущность их состоит в следующем.
Разностный треугольник представляет собой совокупность целых, действительных и неповторяющихся чисел, записанных в форме треугольника. Для ССК с R = k0/n0 количество разностных треугольников равно числу k0. Для всех разностных треугольников общим числом является "0", который не указывается в совокупности чисел однако учитывается при выборе степеней ненулевых членов порождающих полиномов. Очевидно, что число "0" определяет нулевую степень первого ненулевого члена порождающих полиномов. Степени ненулевых членов порождающих полиномов по заданным или построенным разностным треугольникам можно найти путем выбора чисел: левого крайнего столбца разностного треугольника, считывая их сверху вниз и дополняя числом "0" или, верхней строки разностного треугольника в следующей последовательности: первое число - показатель степени второго ненулевого члена порождающего полинома, сумма первого и второго числа первой строки разностного треугольника определяют показатель степени третьего ненулевого члена порождающего полинома и т.д.
Рассмотрим пример определения параметров ССК с алгоритмом ПД при следующем разностном треугольнике:
2 |
4 |
1 |
6 |
5 |
|
7 |
|
|
1.Так как задан один разностный треугольник, то k0=l, n0= k0+l=2, R=k0/n0=1/2, код имеет один порождающий полином;
2.Выписывая числа левого крайнего столбца разностного треугольника, определяем показатели степеней порождающего полинома: (0,2,6,7). Следовательно, порождающий полином ССК имеет вид: gl=1+x2+x6+x7. При втором способе - 0; 2; 2+4=6; 2+4+1=7. Как правило, в литературе разностные треугольники табулированы и представлены, например, так ((2,4,1), (3,5,2)). Это
означает, что ССК имеет соответственно параметры: k0=2, n0=k0+l=3, R=k0/n0=2/3
и g1(x)=1+x2+x7 и g2(x)=l+x3+x8+x10.
Разностный треугольник ССК может быть построен, если задан проверочный треугольник и наоборот. Например, используя проверочный треугольник (6.7) можно построить разностный треугольник, следующим образом.
Числа крайнего левого столбца разностного треугольника определяются как результат операции вычитания порядковых номеров строк проверочного треугольника, которые начинаются с "1". Для первого столбца получаем следующие числа: 3-1=2 (3 - номер позиции третьей строки, 1 - номер позиции первой строки); 7-1=6 и 8-1=7. Для получения чисел второго столбца за вычитаемое берем номер позиции третьей строки: 7-3=4 и 8-3=5. Для получения чисел третьего столбца за вычитаемое берем номер позиции седьмой строки: 8-7= 1.
Как отмечалось выше, числа, входящие в разностные треугольники, должны быть целыми, действительными и неповторяющимися. Для получения совокупности таких чисел известно достаточно много способов их нахождений, но наиболее эффективным является способ основанный на теории совершенных разностных множеств.
Совершенное разностное множество — это совокупность целых,
действительных и неповторяющихся чисел d1, d2,... dξ, причем d1<d2<dξ и разности этих чисел di - dj, j>i, полученных по некоторому mod x, (x¹2) также образуют, совокупность целых, действительных и неповторяющихся чисел.

Данную совокупность полученных разностных чисел можно использовать в качестве исходных чисел для формирования разностных треугольников и выбора соответствующих порождающих полиномов ССК.
При выборе чисел для построения разностных треугольников необходимо выбирать числа с наименьшим их значением по номиналу, т.к. максимальное значение числа в построенных разностных треугольниках определяет максимальную степень m порождающих полиномов ССК.
Рассмотрим построение ССК с алгоритмом ПД с использованием совершенных разностных множеств[2]:
Пусть, например, имеется совокупность β=3-х целых, действительных и неповторяющихся чисел (β=1,2,3) и эта совокупность образует β2+β=32+3=12
разностей по модулю β2+β+1=32+3+1=13, которые равны следующим числам:
1-0≡1 |
12-8≡4 |
2-8≡7 |
0-3≡1 |
3-1≡2 |
0-8≡5 |
8-0≡8 |
1-3≡11 |
3-0≡3 |
8-2≡6 |
8-12≡9 |
0-1≡12. |
Полученную совокупность разностных чисел можно разбить на следующие подмножества:
|
1 |
2 |
6 |
4 |
|
i |
3 |
8 |
10 |
5 |
|
9 |
12 |
11 |
7 |
|
|
|
. |
||||
|
|
|
|
|
j
Каждый из столбцов данного множества можно использовать для построения разностного треугольника. Следовательно, можно построить k0=4 разностных треугольника, и четыре ССК с R=k0/n0=1/2;2/3;3/4;4/5 c J=4, и с
R=k0/n0=1/2;2/3;3/4 с J=5, разбив данное множество на три подмножества.
Отметим, что используя теорию совершенных разностных множеств были рассчитаны и табулированы показатели степеней ненулевых членов порождающих полиномов ССК с R=1/1000 …999/1000 для J=2 …16[1,2].