47488 (588485), страница 2
Текст из файла (страница 2)
.
2. Определим комбинации корректирующего кода.
Для заданного числа информационных разрядов k = 4,число кодовых комбинаций равно N = 2k = 24 = 16.
1) 0000 5) 0010 9) 0001 13) 0011
2) 1000 6) 1010 10) 1001 14) 1011
3) 0100 7) 0110 11) 0101 15) 0111
4) 1100 8) 1110 12) 1101 16) 1111
Старшинство разрядов принимаем слева на право, в соответствии с их поступлением на вход декодера.
Находим корректирующие разряды для каждого информационного слова, как результат суммирования по модулю два строк проверочной матрицы номера, которых совпадают с номерами единиц в информационных разрядах кода.
Например, для информационного слова I= [1001] кодовое слово имеет вид
.
Передаваемые в канал кодовые комбинации имеют вид:
1) 0000 000 5) 0010 110 9) 0001 101 13) 0011 011
2) 1000 111 6) 1010 001 10) 1001 010 14) 1011 100
3) 0100 011 7) 0110 101 11) 0101 110 15) 0111 000
4) 1100 100 8) 1110 010 12) 1101 101 16) 1111 111
Процесс декодирования состоит в определении соответствия принятого кодового слова, переданному информационному и осуществляется с помощью проверочной матрицы H(7, 4).
Для построенного (7, 4)-кода проверочная матрица имеет вид
.
Строки проверочной матрицы определяют правила формирования проверок, позволяющие определить синдром ошибки.
Пусть в процессе передачи произошла ошибка во 2-м информационном разряде 1 1 0 1 1 0 0 1
В соответствии с проверочной матрицей составляем проверочные векторы
p1a1a2a4 =S1 = 0110 = 0;
p2a1a2a3 =S2 = 0111 = 1 ;
p3a1a3a4 =S3 = 1101 = 1.
Синдром 011 показывает, что ошибка произошла во 2-м информационном разряде, который необходимо проинвертировать.
Пример 2. Построить образующую матрицу группового кода, для передачи 100 различных сообщений и способную исправлять возмож-но большее число ошибок.
Решение: Объем кода равен N = 2k. При 100 сообщениях: 100 N 2k , откуда k = 7. По заданной длине информационного слова, используя соотношения:
n = k+m, 2n (n+1)2k и 2m n+1
вычислим основные параметры кода n и m.
m=[log2 {(k+1)+ [log2(k+1)]}]=[log2 {(7+1)+ [log2(7+1)]}]=4.
Откуда n = 11, т. е. получили (11, 7)-код.
В качестве информационной матрицы выбираем единичную матрицу I(7x7).Проверочная матрица содержит 4 столбца и 7 строк, которые содержат r1 d0-1 единиц в четырехразрядном коде (2, 3, 4-единицы).
.
3. КОД ХЭММИНГА
Код Хэмминга относится к классу линейных кодов и представляет собой систематический код – код, в котором информационные и контрольные биты расположены на строго определенных местах в кодовой комбинации.
Код Хэмминга, как и любой (n, k)- код, содержит к информационных и m = n-k избыточных (проверочных) бит.
Избыточная часть кода строится т. о. чтобы можно было при декодировании не только установить наличие ошибки но, и указать номер позиции в которой произошла ошибка , а значит и исправить ее, инвертировав значение соответствующего бита.
Существуют различные методы реализации кода Хэмминга и кодов которые являются модификацией кода Хэмминга. Рассмотрим алгоритм построения кода для исправления одиночной ошибки.
1. По заданному количеству информационных символов - k, либо информационных комбинаций N = 2k , используя соотношения:
n = k+m, 2n (n+1)2k и 2m n+1 (14)
m = [log2 {(k+1)+ [log2(k+1)]}]
вычисляют основные параметры кода n и m.
2. Определяем рабочие и контрольные позиции кодовой комбинации. Номера контрольных позиций определяются по закону 2i, где i=1, 2, 3,... т.е. они равны 1, 2, 4, 8, 16,… а остальные позиции являются рабочими.
3. Определяем значения контрольных разрядов (0 или 1 ) при помощи многократных проверок кодовой комбинации на четность. Количество проверок равно m = n-k. В каждую проверку включается один контро-льный и определенные проверочные биты. Если результат проверки дает четное число, то контрольному биту присваивается значение -0, в противном случае - 1. Номера информационных бит, включаемых в каждую проверку, определяются по двоичному коду натуральных n –чисел разрядностью – m (табл. 1, для m = 4) или при помощи проверочной матрицы H(mn), столбцы которой представляют запись в двоичной системе всех целых чисел от 1 до 2k –1 перечисленных в возрастающем порядке. Для m = 3 проверочная матрица имеет вид
. (15 )
Количество разрядов m - определяет количество проверок.
В первую проверку включают коэффициенты, содержащие 1 в младшем (первом) разряде, т. е. b1, b3, b5 и т. д.
Во вторую проверку включают коэффициенты, содержащие 1 во втором разряде, т. е. b2, b3, b6 и т. д.
В третью проверку - коэффициенты которые содержат 1 в третьем разряде и т. д.
Таблица 1
Десятичные числа (номера разрядов кодовой комбинации) | Двоичные числа и их разряды | ||
3 | 2 | 1 | |
1 2 3 4 5 6 7 | 0 0 0 1 1 1 1 | 0 1 1 0 0 1 1 | 1 0 1 0 1 0 1 |
Для обнаружения и исправления ошибки составляются аналогичные проверки на четность контрольных сумм, результатом которых является двоичное (n-k) -разрядное число, называемое синдромом и указывающим на положение ошибки, т. е. номер ошибочной позиции, который определяется по двоичной записи числа, либо по проверочной матрице.
Для исправления ошибки необходимо проинвертировать бит в ошибочной позиции. Для исправления одиночной ошибки и обнаружения двойной используют дополнительную проверку на четность. Если при исправлении ошибки контроль на четность фиксирует ошибку, то значит в кодовой комбинации две ошибки.
Схема кодера и декодера для кода Хэмминга приведена на рис. 1.
Пример 1. Построить код Хемминга для передачи сообщений в виде последовательности десятичных цифр, представленных в виде 4 –х разрярных двоичных слов. Показать процесс кодирования, декодирования и исправления одиночной ошибки на примере информационного слова 0101.
Решение:
1. По заданной длине информационного слова (k = 4), определим количество контрольных разрядов m, используя соотношение:
m = [log2 {(k+1)+ [log2(k+1)]}]=[log2 {(4+1)+ [log2(4+1)]}]=3,
при этом n = k+m = 7, т. е. получили (7, 4) -код.
2. Определяем номера рабочих и контрольных позиции кодовой комбинации. Номера контрольных позиций выбираем по закону 2i .
Для рассматриваемой задачи (при n = 7) номера контрольных позиций равны 1, 2, 4. При этом кодовая комбинация имеет вид:
b1 b2 b3 b4 b5 b6 b7
к1 к2 0 к3 1 0 1
3. Определяем значения контрольных разрядов (0 или 1), используя проверочную матрицу (5).
Первая проверка:
k1 b3 b5 b7 = k1011 будет четной при k1 = 0.
Вторая проверка:
k2 b3 b6 b7 = k2001 будет четной при k2 = 1.
Третья проверка:
k3 b5 b6 b7 = k3101 будет четной при k3 = 0.
1 2 3 4 5 6 7
Передаваемая кодовая комбинация: 0 1 0 0 1 0 1
Допустим принято: 0 1 1 0 1 0 1
Для обнаружения и исправления ошибки составим аналогичные про-верки на четность контрольных сумм, в соответствии с проверочной матрицей результатом которых является двоичное (n-k) -разрядное число, называемое синдромом и указывающим на положение ошибки, т. е, номер ошибочной позиции.
1) k1 b3 b5 b7 = 0111 = 1.
2) k2 b3 b6 b7 = 1101 = 1.
-
k3 b5 b6 b7 = 0101 = 0.
Сравнивая синдром ошибки со столбцами проверочной матрицы, определяем номер ошибочного бита. Синдрому 011 соответствует третий столбец, т. е. ошибка в третьем разряде кодовой комбинации. Символ в 3 -й позиции необходимо изменить на обратный.
Пример 2. Построить код Хэмминга для передачи кодовой комбинации 1 1 0 1 1 0 1 1. Показать процесс обнаружения и исправления ошибки в соответствующем разряде кодовой комбинации.
Решение: Рассмотрим алгоритм построения кода для исправления одиночной ошибки.
1. По заданной длине информационного слова (k = 8) , используя соотношения вычислим основные параметры кода n и m.
m = [log2 {(k+1)+ [log2(k+1)]}]=[log2 {(9+1)+ [log2(9+1)]}]=4,
при этом n = k+m = 12, т. е. получили (12, 8)-код.
2. Определяем номера рабочих и контрольных позиции кодовой комбинации. Номера контрольных позиций выбираем по закону 2i .
Для рассматриваемой задачи (при n = 12) номера контрольных позиций равны 1, 4, 8.
При этом кодовая комбинация имеет вид:
b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12
к1 к2 1 к3 1 0 1 к4 1 0 1 1
3. Определяем значения контрольных разрядов (0 или 1) путем много-кратных проверок кодовой комбинации на четность. Количество проверок равно m = n-k. В каждую проверку включается один контрольный и определенные проверочные биты.
Номера информационных бит, включаемых в каждую проверку определяется по двоичному коду натуральных n-чисел разрядностью - m.
0001 b1 Количество разрядов m - определяет количество прове-
0010 b2 верок.
0011 b3 1) к1 b3 b5 b7 b9 а11 = к111111 =>
0100 b4 четная при к1=1
0101 b5 2) к2 b3 b6 b7 b10 b11= к210101 =>
0110 b6 четная при к2=1
0111 b7 3) к3 b5 b6 b7 b12 = к31011=>
1000 b8 четная при к3=1
1001 b9 4) к4 b9 b10 b11 b12 = к11011 =>
1010 b10 четная при к4=1
1011 b11
1100 b12
Передаваемая кодовая комбинация: 1 2 3 4 5 6 7 8 9 10 11 12
1 1 1 1 1 0 1 1 1 0 1 1
Допустим, принято: 1 1 1 1 0 0 1 1 1 0 1 1