
1
5.2.4. Техника построения группового систематического кода
Блок-схема алгоритма построения ГСК представлена на рис. 5.1. Приведенный обобщенный алгоритм синтеза операторов кодирова-
ния пригоден для любого алгебраического кода с точностью до раскрытия ряда операторов. Ниже алгоритм рассматривается для ГСК и оговариваются некоторые особенности его применения для других типов кодов:
1.Исходные данные. Ими являются: число информационных символов кода (m) либо множество передаваемых сообщений (М); модель канала связи; допустимая вероятность правильной либо искаженной передачи сообщения (вероятность правильной передачи или вероятность трансформации). Пусть задан канал связи с независимыми ошибками, описываемый биномиальным распределением ошибок с вероятностью ошибки на символ, равной (p).
2.Выбор типа кода, оптимального для заданной модели канала связи. Для каналов связи с независимыми ошибками оптимальными являются групповые коды и циклические (БЧХ) коды. Если бы канал описывался моделью канала с памятью, то необходимо было бы выбрать коды, оптимальные в каналах с пакетирующими ошибками, например циклические коды Файра, Абрамсона, перемежающиеся и др. Итак, мы выбрали ГСК.
3.На данном шаге алгоритма реализуются операторы 3, 4 и 5, связанные с выбором методом перебора параметров кода: корректирующей способности (s), числа избыточных символов (k), которые обеспечивают требуемые характеристики достоверности передачи информации. Для ГСК выбор параметров кода осуществляется с помощью верхней границы Хемминга. Для БЧХ-кодов аналогичная задача решается с помощью границы существования кода БЧХ. Итак, из границы Хемминга для фиксированных значений m и последовательно перебираемых значений s определяются длины кодовых слов n = m + k. Для каждых n и s находится вероятность правильной передачи сообщения Pпр = P(m):
s |
n |
− p)n−i . |
(5.12) |
|
P(m) = ∑ |
|
pi (1 |
||
i=0 |
|
|
|
|
i |
|
|
1

2
1.Исходные
данные
2.Выбор типа кода
3.S = 0
4.S = S + 1
5.Выбор параметров кода
Нет |
Да |
pпр. > [pд]
6. Выбор ближайшего табл. кода
7. Выбор укороченного кода
8. Построение операторов кодирования
Рис. 5.1. Обобщенная блок-схема алгоритма построения алгебраического (ГСК) кода
Далее значение Pпр сравнивается с [Pд], допустимой вероятностью правильной передачи кодового слова (сообщения). Если Pпр < [Pд], то кратность исправляемых ошибок увеличивается на единицу и расчет повторяется, иначе переходим к оператору 6.
4. Выбор ближайшего табличного кода [14]. Граница Хемминга не является границей существования кода и потому не гарантирует существования ГСК с параметрами, определенными на предыдущих шагах алго-
2
3
ритма. Поэтому обращаемся к табличным ГСК и находим ближайший код (nT, mT, dT), удовлетворяющий условию dT ≥ d, т. е. sT ≥ s, mT ≥ m .
5. Выбор укороченного кода. Отыскиваем число i = mТ −m , на кото-
рое укорачиваем число информационных символов кода, т.е. реализуем переход от параметров табличного кода к укороченному коду: (nТ, mТ, dТ) i →(nT −i, mT −i, d) = (n, m, d) . Найденный укороченный код и является искомым кодом, т. к. удовлетворяет всем исходным данным. В принципе после этого шага можно уточнить значение P(m) (5.12), которое должно измениться за счет уменьшения длины кода на величину i .
6. Построение операторов кодирования. Операторы кодирования (5.10,а) табличных кодов приводятся в стандартных таблицах ГСК [14]. Для построения операторов кодирования укороченного ГСК необходимо в операторах кодирования табличных кодов зачеркнуть i первых информационных символов (a1 , a2 ,..., ai ) .
Пример 5.8. Проиллюстрируем приведенный алгоритм на примере построения ГСК, исправляющего однократную ошибку, т. е. кода Хеммин-
га с dmin = 3 и dmin = 4. Выберем в качестве исходных данных m = 4, s = 1. Следует отметить, что в данном примере из методических соображений
опущена переборная часть алгоритма, связанная с анализом логического условия, т.к. это чисто вычислительная процедура, загромождающая пример. Напомним, что из границы Хемминга отыскиваются параметры кодов с нечетным кодовым расстоянием. Далее будет показано, как переходить от кодов с нечетным кодовым расстоянием dH, исправляющих ошибку кратности s, к кодам с ближайшим большим четным кодовым расстоянием (dЧ = dH + 1), исправляющим s-кратные ошибки и обнаруживающим ошибки кратности r = s +1.
С учетом изложенного в данном примере отыскиваем операторы кодирования для ГСК Хемминга с dmin = 3 и m = 4:
2m ≤ |
2n |
; 24 ≤ |
2n |
. |
|
1 + n |
1 + n |
||||
|
|
|
Перебором устанавливаем параметры кода: n = 7, m = 4, k = 3, т.е. (7,4,3)-код. Такой код существует, и операторы кодирования можно выписать из стандартной кодовой таблицы ГСК. Ниже покажем, как можно самостоятельно строить операторы кодирования по проверочной матрице ГСК. Для этого рассмотрим построение проверочной матрицы Н. Несложно показать, что столбцами матрицы являются k-разрядные ненулевые двоичные векторы, образующие линейно-независимые множества из r = d −1 векторов. Данное утверждение основано на следующем. Если ГСК обнаруживает ошибки кратности r и меньше, то синдром, определяе-
3

4
мый из (7.7), должен быть ненулевым при умножении вектора ошибки веса r и меньше на Н.
Для построения матрицы Н размерности [k ×n] ГСК Хемминга достаточно в качестве n столбцов выписать различные k-разрядные ненулевые двоичные векторы. В рассматриваемом примере построим проверочную матрицу H′ размерности [3 ×7]:
0 |
0 |
0 |
1 |
1 |
1 |
1 |
H ′ = 0 1 1 |
0 |
0 |
1 |
1 . |
||
|
0 |
1 |
0 |
1 |
0 |
|
1 |
1 |
|||||
|
|
|
|
|
|
|
Далее с помощью эквивалентного преобразования (перестановка столбцов) приведем матрицу H′ в приведенно-ступенчатую форму Н вида
(5.11):
1 |
1 |
0 |
1 |
1 |
0 |
0 |
H = 1 1 1 |
0 0 |
1 |
0 . |
|||
|
0 |
1 |
1 |
0 |
0 |
|
1 |
1 |
|||||
|
|
|
|
|
|
|
Из (5.3) и (5.3,а) следует |
|
|
|
|
|
|
|
|
|
|
||||
(a , a |
|
, a , a |
|
, c , c |
|
, c ) |
|
hT |
|
= 0 , (i = |
|
j = |
|
|
2 |
4 |
2 |
|
|
1,7; |
1,3). |
||||||||
1 |
3 |
1 |
3 |
|
ij |
|
|
|
|
|
|
Откуда и получаются искомые операторы кодирования: c1 = a1 a2 a4 ;
c2 |
= a1 a2 a4 ; |
(6.13) |
c3 = a1 a3 a4. |
|
Пусть u = (a1 , a2 , a3 , a4 ) = (1101) , тогда с учетом (6.13)
V = (a1 , a2 , a3 , a4 , c1 , c2 , c3 ) = (1101100) .
Пусть потребовалось укоротить построенный код (7,4,3) на i = 2 информационных символа, т. е. перейти к укороченному коду (5,2,3):
(7,4,3) i=2→(5,2,3). Тогда операторы кодирования (5,2,3)-кода можно построить по операторам кодирования (5.13), используя правило, сформулированное в п.6 алгоритма:
4

5
c1 = a4;
c2 |
= a3; |
(5.13,а) |
c3 |
= a3 a4. |
|
Вектор укороченного (5,2,3)-кода имеет вид
V =(a3 ,a4 ,c1,c2 ,c3 ) = = (01101).
Рассмотрим переход от кода с нечетным кодовым расстоянием dH к коду с ближайшим четным кодовым расстоянием dЧ = dH + 1. Для такого перехода достаточно ввести еще один дополнительный избыточный разряд ck+1, значение которого определяется из общей проверки на четность:
m |
k |
|
ck +1 = ∑ai ∑c j . |
(5.14) |
|
i=1 |
j =1 |
|
Таким образом, если параметры исходного кода (n, m, dH), то параметры кода с dЧ = dH + 1 таковы: n+1, m, dЧ, т. е. число информационных символов сохранилось, а число избыточных символов увеличилось на один.
Пример 5.9. Для кода (7,4,3) из примера 5.8 код (8,4,4) будет кодом с ближайшим большим четным кодовым расстоянием. При этом дополнительный избыточный разряд общей проверки на четность
4 |
3 |
c4 = ∑ai ∑c j . |
|
i=1 |
j =1 |
Если в (5.14) подставить выражения для cj из (5.10,а), то уравнение (5.14) упростится. Можно предложить следующее правило вычисления сk+1 через информационные символы исходного (n, m, dH)-кода.
Правило. Если информационный символ входит четное число раз в операторы кодирования (n, m, dH)-кода (5.10,а), то он сохраняется в (5.14), если же информационный символ входит нечетное число раз, то он не сохраняется в выражении (5.14).
С учетом сформулированного правила и операторов кодирования кода (7,4,3) в выражении (5.13) уравнение для c4 имеет следующий вид: c4 = a2 a3 a4. Тогда вектор кода (8,4,4)
V=(a1,a2 ,a3 ,a4 ,c1,c2 ,c3 ,c4 ) =(11011000).
5.2.5.Декодирование группового систематического кода
Декодер ГСК реализует синдромное декодирование, суть которого основана на вычислении синдрома в соответствии с уравнениями (5.5),
5

6
(5.6) и (5.7). Итак, синдромное декодирование состоит из следующих этапов:
1. По принятому кодовому вектору V ′=V e находим синдром
S= (s1, s2 ,..., s j ,..., sk ).
2.С учетом (5.6) и (5.7) по вычисленному значению синдрома однозначно отыскиваем вектор ошибок e = (e1,e2 ,...,e j ,...,en ).
3.Производим исправление ошибок и выдачу скорректированного кодового слова (сообщения) получателю: V =V ′ e, либо стирание полу-
ченного кодового слова, если кратность ошибок в кодовом слове s′ удовлетворяет соотношению s < s′ ≤ r, где r − кратность обнаруживаемых ошибок.
Пример 5.10. Проиллюстрируем синдромное декодирование на примере кода (8,4,4) из примера 5.9. В процессе данного примера будет сделан ряд замечаний общего характера, связанных с реализацией корректирующих возможностей кода с четным кодовым расстоянием. Итак, для кода (8,4,4) уравнение (5.5) с учетом (5.13) имеет вид
s1 = a1′ a2′ |
a4′ |
' |
|
|
|
|
|||
c1; |
|
|
|
||||||
s2 = a1′ a2′ |
a3′ |
|
|
|
|
|
|||
c2' ; (7,4,3) |
|
||||||||
|
|
′ |
′ |
′ |
' |
|
|
|
(5.15) |
|
|
|
(8,4,4) |
||||||
s3 = a1 |
a3 |
a4 |
c3 |
; |
|
|
|||
|
|
|
|
|
|
|
|
|
|
s |
|
4 |
|
4 |
|
|
|
|
|
4 |
= ∑a′ |
∑c′. |
|
|
|
|
|||
|
|
i |
j |
|
|
|
|
||
|
|
i=1 |
j =1 |
|
|
|
|
|
Отметим, что (5.15) согласно (5.6) и (5.7) можно записать и через
вектор ошибок: e = (e1, e2 , e3,e4 , e5 ,e6 , e7 , e8 ) . Синдром кода (8,4,4) − это четырехразрядный вектор: s = (s1, s2 , s3, s4 ) , у которого первые три разряда
(в общем случае |
k-разрядов) вычисляются |
согласно |
уравнениям кода |
|||
(n, m, dH ) −(7,4,3), |
а последний |
четвертый |
разряд s4 |
(в общем случае |
||
(k+1)-й разряд) − согласно общей проверке на четность, |
|
|||||
|
S |
|
m |
k +1 |
|
(5.16) |
|
k +1 |
= ∑a′ ∑c′ . |
||||
|
|
i=1 |
i |
j |
|
|
|
|
|
j =1 |
|
|
При этом минимизация выражения (5.16) недопустима. Таким образом, общая структура синдрома кода (n + 1, m, dЧ = dH + 1) такова: S = (s1,..., s j ,..., sk , sk +1). При этом первые k-разрядов вычисляются по (5.5),
(5.6) для кода (n, m, dH), а последний (k + 1)-й разряд – по (5.16) для кода (n+1, m, dЧ). При декодировании кода Хемминга с dmin = 4, исправляющего
6

7
одну и обнаруживающего две ошибки, анализ кратности ошибок в кодовом векторе V ′ на входе декодера производится в соответствии с табл. 5.1.
|
|
|
Таблица 5.1 |
||
|
|
|
|
|
|
№ |
S1, S2,…, Sj,…, Sk |
Sk+1 |
Кратность ошибок в векторе V |
′ |
|
п/п |
|
|
|
|
|
1 |
0 |
0 |
Ошибок нет |
||
|
|
|
|
||
2 |
≠0 |
1 |
Ошибки нечетной кратности, в частно- |
||
|
|
|
сти однократная ошибка |
||
3 |
≠0 |
0 |
Ошибки четной кратности, в частности |
||
|
|
|
двукратная ошибка |
||
4 |
0 |
1 |
Ошибки в символе c |
||
|
|
|
k+1 |
Вданной таблице символ «0» означает, что все координаты вектора нулевые; символ «≠0» показывает, что хотя бы одна координата вектора ненулевая.
Таким образом, декодер исправляет однократную ошибку в ситуациях 2 и 4 и стирает сообщение при двукратной ошибке (ситуация 3).
Врассматриваемом примере для кода (8,4,4) при исправлении однократной ошибки таблица соответствия значений синдрома и места ошиб-
ки − это табл. 5.2.
Таблица 5.2
S1 S2 S3 |
S4 |
{ej} |
||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
e7 (c3) |
0 |
1 |
0 |
1 |
e6 (c2) |
0 |
1 |
1 |
1 |
e3 (а3) |
1 |
0 |
0 |
1 |
e5 (c1) |
1 |
0 |
1 |
1 |
e4 (а4) |
1 |
1 |
0 |
1 |
e2 (а2) |
1 |
1 |
1 |
1 |
e1 (а1) |
0 |
0 |
0 |
1 |
e8 (c4) |
|
≠0 |
0 |
2кр |
7

8
Значения (S1, S2, S3) совпадают с соответствующим столбцом матрицы Н кода (7, 4, 3) в примере 5.8.
Комбинационная схема для обнаружения двукратной ошибки и стирания сообщения при аппаратной реализации строки 3 табл. 5.1 представлена на рис. 5.2,а. На рис. 5.2,б показана реализация схемы стирания для кода (8, 4, 4).
|
S1 |
|
S1 |
|
||||||||
|
Sj |
|
S2 |
|
||||||||
|
Sk |
|
S3 |
|
||||||||
|
|
|
|
S4 |
|
|||||||
Sk+1 |
|
|
||||||||||
|
|
|
|
|
|
|
k |
|
|
|
|
3 |
|
|
ε = |
S |
k +1 |
V S j |
ε = |
S |
4 |
V S j |
|||
|
|
|
|
|
|
|
j =1 |
|
|
|
|
j =1 |
|
|
|
а |
|
|
|
б |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 5.2. Комбинационная схема, реализующая стирание кодовой комбинации с двукратной ошибкой для
(n+1, m, 4)-кода (а) и для (8, 4, 4)-кода (б)
Аппаратная реализация кодеров и декодеров ГСК и оценка сложности будут рассмотрены более подробно в последующих параграфах.
Программная реализация синдромного декодирования сводится
к суммированию хранящихся в памяти столбцов проверочной матрицы Н
сномерами, соответствующими единицам принятого вектора, что равносильно реализации уравнения (5.5). Вектор ошибок выбирается из таблицы
ошибок, подобной табл. 5.2, содержащей 2k строк. Таким образом, затраты ячеек памяти для аппаратно-программной реализации в микропроцессорном базисе синдромного декодирования также определяются величиной 2k.
8