
- •3.Ошибка опознана и исправлена неверно.
- •5. Ошибка только обнаруживается
- •Примеры неоптимального кодирования
- •2. Ошибка опознана и исправлена верно.
- •3. Ошибка опознана но исправлена неверно.
- •4.Ошибка не обнаруживается.
- •5.Ошибка только обнаруживается
- •2.Передача кодового слова с искажением помехой в пределах корректирующей способности кода (однократная ошибка обнаруживается и исправляется)
- •5. Ошибка не обнаруживается.
- •6 Ошибка только обнаруживается.
Концептуальное описание объекта.
Цель и суть любого кодирования представление сообщений в форме удобной для их последующей обработки, а также для передачи хранения и выполнения арифметических и логических операций. Сообщения могут быть представлены в форме кодовых слов.
Идея помехоустойчивого кодирования состоит в том ,что кодер вносит избыточную информациию в виде правил кодирования добавляя дополнительные разряды помехоустойчивого кодового слова с последующей проверкой.
Помехоустойчивые коды – одно из наиболее эффективных средств обеспечения высокой верности передачи дискретной информации.
Большое развитие теория помехоустойчивого кодирования получила с внедрением автоматизированных систем, у которых обработка принимаемой информации осуществляется без участия человека. Использовние для обработки информации электронных цифровых вычислительных машин предъявляет очень высокие требования к верности передачи информации.
Под помехоустойчивыми или корректирующими кодами понимают коды, позволяющие обнаружить и устранить ошибки, происходящие при передаче из-за влияния помех.
Кодирование, с формальной точки зрения, является описанем данных в форме, удобной для использования в информационных системах и сетях. Оно осуществляется на каком-нибудь формальном языке. Этот процесс выполняется с участием программистов либо автоматически. Кодирование, при котором используется код, состоящий из букв, чисел и других знаков алфавита, именуется буквенно-цифровым кодированием. Кодирование может быть побуквеным, пословным. Для кодирования информации, представленной аналоговым сигналом, осуществить необходимо квантование и Аналого-Цифровое Преобразование (АЦП). Благодаря этому, получается дискретный сигнал, который представляется кодовыми комбинациями согласно некоторым правилам, называемым системой кодирования. Используемый код зависит от того, какая выполняется задача и какие требования поставлены перед способом представления информации. Кодирование широко применяется в информационных сетях. Оно должно быть таким, чтобы обеспечивать максимально возможную скорость обработки данных и передачи данных, защищенность от искажений. С этой целью особо выделяют помехоустойчивое кодирование. Широкую известность в сетях получило манчестерское кодирование, обеспечивающее не только передачу данных, но и синхронизацию этой передачи. Процесс, обратный кодированию, именуют декодированием. Изменение кодов осуществляется благодаря перекодированию данных. Кодирование в сети осуществляется на различных уровнях. На физическом уровне оно необходимо потому, что абонентские системы работают с двоичными кодами, а в каналах и моноканалах часто используется троичный код. В результате кодирования физический уровень, часто, преобразует два физически раздельных сигнала: данных и синхронизации в единый самосинхронизирующийся поток битов. Для обеспечения безопасности данных осуществляется специальное кодирование, именуемое шифрованием.
Построение оптимального помехоустойчивого кода
Исходная информация для построения кода:
Тип исправляемых ошибок –некореллированные
Кратность исправляемых ошибок – S =1 ;
Объем кода (число кодируемых сообщений) - Q = 35;
Расчет числа информационных и избыточных разрядов.
Число информационных и избыточных разрядов определяется из соотношений
2k – 1 ≥ Q ;
2n – k – 1 ≥ n ;
n – k ;
где k – число информационных разрядов ;
n - число разрядов помехоустойчивого слова;
(n – k) – число избыточных разрядов;
отсюда k = 6; n =10; n – k = 4;
2.Построение таблицы опознавателей ошибок.
Из таблицы видно, что каждой ошибке соответствует свой опознаватель. В таблице не используются двоичные числа, которые соответствуют номерам поврежденных разрядов,
так как тогда у нас получится код Хэмминга.
-
Векторы ошибок
Опознаватели ошибок
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
0
0
0
0
0
0
0
0
0
1
1010
1
0
0
0
0
0
0
0
0
1
0
0001
2
0
0
0
0
0
0
0
1
0
0
0011
3
0
0
0
0
0
0
1
0
0
0
1000
4
0
0
0
0
0
1
0
0
0
0
0101
5
0
0
0
0
1
0
0
0
0
0
0100
6
0
0
0
1
0
0
0
0
0
0
1011
7
0
0
1
0
0
0
0
0
0
0
0111
8
0
1
0
0
0
0
0
0
0
0
0010
9
1
0
0
0
0
0
0
0
0
0
1001
10
2.Построение проверочных равенств.
Проверочное равенство представляет собой одно из преобразованных уравнений алгоритма кодирования . Если при проверке дешифратором уравнений, определяющих данные избыточные разряды, произошло нарушение четности, то опознаватель окажется равным 1.
Разряды опознавателя определяются следующими проверочными равенствами:
a2 a3 a5 a7 a8 a10
a1 a3 a7 a8 a9
a5 a6 a8
a1 a4 a7 a10
Запишем проверочные равенства в виде системы уравнений:
a2 a3 a5 a7 a8 a10 = 0;
a1 a3 a7 a8 a9 = 0;
a5 a6 a8 = 0;
a1 a4 a7 a10 = 0;
4. Построение алгоритма кодирования
Из системы уравнений приведенной выше составим следующее правило кодирования.
Избыточными разрядами будем считать такие разряды ,которые в проверочных равенствах встречаются по одному разу.
a2 = a3 a5 a7 a8 a10
a4 = a1 a7 a10
a6 = a5 a8
a9 = a1 a3 a7 a8
5. Таблица кодирования.
Вход кодера |
Выход кодера |
000001 000010 000011 000100 000101 000110 000111 001000 001001 001010 001011 001100 001101 001110 001111 010000 010001 010010 010011 010100 010101 010110 010111 011000 011001 011010 011011 011100 011101 011110 011111 100000 100001 100010 100011 |
0100001001 0100000110 0000001111 0000110010 0100111011 0100110100 0000111101 0101001010 0001000011 0001001100 0101000101 0101111000 0001110001 0001111110 0101110111 0110100010 0010101011 0010100100 0110101101 0110010000 0010011001 0010010110 0110011111 0011101000 0111100001 0111101110 0011100111 0011011010 0111010011 0111011100 0011010101 1000001010 1100100011 1100101100 1000000101 |
Таблица декодирования
0100001001 0100000110 0000001111 0000110010 0100111011 0100110100 0000111101 0101001010 0001000011 0101000101 0101111000 0001110001 0001111110 0101110111 0110100010 0010101011 0010100100 0110101101 0110010000 0010011001 0010010110 0110011111 0011101000 0111100001 0111101110 0011100111 0011011010 0111010011 0111011100 0011010101 1000001010 1100100011 1100101100 1000000101 |
00000000000
|
0100001000 0100000111 0000001110 0000110011 0100111010 0100110101 0000111100 0101001011 0001000010 0101000100 0101111001 0001110000 0001111111 0101110110 0110100011 0010101010 0010100101 0110101100 0110010001 0010011000 0010010111 0110011110 0011101001 0111100000 0111101111 0011100110 0011011011 0111010010 0111011101 0011010100 1000001011 1100100010 1100101101 1000000100 |
00000000001 |
0100001011 0100000100 0000001101 0000110000 0100111001 0100110110 0000111111 0101001000 0001000001 0101000111 0101111010 0001110011 0001111100 0101110101 0110100000 0010101001 0010100110 0110101111 0110010010 0010011011 0010010100 0110011101 0011101010 0111100011 0111101100 0011100101 0011011000 0111010001 0111011110 0011010111 1000001000 1100100001 1100101110 1000000111 |
00000000010 |
0100001001 0100000010 0000001011 0000110110 0100111111 0100110000 0000111001 0101001110 0001000111 0101000001 0101111100 0001110101 0001111010 0101110011 0110100110 0010101111 0010100000 0110101001 0110010100 0010011101 0010010010 0110011011 0011101100 0111100101 0111101010 0011100011 0011011110 0111010111 0111011000 0011010001 1000001110 1100100111 1100101000 1000000001 |
00000000100
|
0100101001 0100100110 0000101111 0000010010 0100011011 0100010100 0000011101 0101101010 0001100011 0101100101 0101011000 0001010001 0001011110 0101010111 0110000010 0010001011 0010000100 0110001101 0110110000 0010111001 0010110110 0110111111 0011001000 0111000001 0111001110 0011000111 0011111010 0111110011 0111111100 0011110101 1000101010 1100000011 1100001100 1000100101 |
00001000000 |
0110001001 0110000110 0010001111 0010110010 0110111011 0110110100 0010111101 0111001010 0011000011 0111000101 0111111000 0011110001 0011111110 0111110111 0100100010 0000101011 0000100100 0100101101 0100010000 0000011001 0000010110 0100011111 0001101000 0101100001 0101101110 0001100111 0001011010 0101010011 0101011100 0001010101 1010001010 1110100011 1110101100 1010000101 |
0010000000 |
1. Отсутствие ошибок в канале связи.
а) 010000 [ КОДЕР ] 0110100010 [КАНАЛ СВЯЗИ] 0110100010 [ ДЕКОДЕР ] 010000
б) 001001 [КОДЕР] 0001000011 [КАНАЛ СВЯЗИ] 0001000011 [ДЕКОДЕР] 001001
2. Ошибка опознана и исправлена верно.
а) 001011 [ КОДЕР ] 0101000101 [КАНАЛ СВЯЗИ] 0101000001 [ ДЕКОДЕР ] 001011
Кодирование: находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 0000000100
Декодирование:
0 0 0 1 0 0 =1
0 0 1 0 =1
0 0 0 =0
0 0 1 0 1=0
Опознаватель 0011 => вектор ошибки 0000000100
Восстановление
0101000001
0000000100
0101000100
Выделение содержимого информационных разрядов 001011
б) 001010 [ КОДЕР ] 0001001100 [КАНАЛ СВЯЗИ] 0001011100 [ ДЕКОДЕР ] 001010
Кодирование: находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 0000010000
Декодирование:
0 1 1 1 0 0 = 1
0 1 1 0 = 0
1 0 0 = 1
0 1 1 0 0= 0
Опознаватель 0101 => вектор ошибки 0000010000
Восстановление
0001011100
0000010000
0001001100
Выделение содержимого информационных разрядов 001010
3.Ошибка опознана и исправлена неверно.
а) 010001 [ КОДЕР ] 0010101011 [КАНАЛ СВЯЗИ] 0110101111 [ ДЕКОДЕР ] 0110101101
Кодирование : находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 0100000100
Декодирование:
1 1 0 0 1 0 =1
1 1 0 0=0
0 1 1 = 0
1 1 0 1 1=0
Опознаватель 0001 => вектор ошибки 0000000010
Восстановление
0110101111
0000000010
0110101101
Выделение содержимого информационных разрядов 010011
б) 011100 [ КОДЕР ] 0011011010 [КАНАЛ СВЯЗИ] 1000100000 [ ДЕКОДЕР ] 1001111010
Кодирование : находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 1000100000
Декодирование:
1 0 1 1 1 1 = 1
0 0 1 0=1
0 0 0 =0
0 0 1 0 1=0
Опознаватель 0011 => вектор ошибки 0000000100
Восстановление
0101000001
0000000100
0101000100
Выделение содержимого информационных разрядов 011100
4.Ошибка не опознана.
а) 000110 [ КОДЕР ] 0100110100 [КАНАЛ СВЯЗИ] 1110010101 [ ДЕКОДЕР ] 111011
Кодирование: находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 1010100001
Декодирование:
0 1 1 0 1 1=0
1 0 0 1= 0
1 0 1 = 0
1 1 0 11= 0
Опознаватель 0000 => вектор ошибки 0000000000
Восстановление не требуется.
Выделение содержимого информационных разрядов 111011
б) 011010 [ КОДЕР ] 0111101110 [КАНАЛ СВЯЗИ] 0110010000 [ ДЕКОДЕР ] 011100
Кодирование: находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 0110010000
Декодирование:
11 1 1 0 = 0
0 11 0 = 0
1 1 0 = 0
0 1 1 0 0 = 0
Опознаватель 0000 => вектор ошибки 0000000000
Восстановление не требуется.
Выделение содержимого информационных разрядов 011100
5. Ошибка только обнаруживается
а) 011101 [ Кодер ]0111010011 [ канал связи ] 1110111111[дешифратор] ошибка
Кодирование : находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 1001111111
Декодирование:
111 0 1 1=1
1 1 0 1=1
1 1 1=1
11 10=1
Опознаватель 1111 => вектор ошибки отсутствует
Восстановление не требуется.
На выходе дешифратора сигнал ошибки.
б) 000111 [ Кодер ]0000111101 [ канал связи ] 000010100[дешифратор] ошибка
Кодирование : находим в таблице кодирования кодовое слово соответствующее входному.
Искажение помехой: 0000010101
Декодирование:
0 0 0 0 0=0
0 1 0 0=1
0 1 0 =1
0 0 0 0 0=0
Опознаватель 0110 => вектор ошибки отсутствует
Восстановление не требуется.
На выходе дешифратора сигнал ошибки.
Построение неоптимального помехоустойчивого кода.
Исходная информация для построения кода:
Тип исправляемых ошибок –некореллированные
Кратность исправляемых ошибок – S =1 ;
Объем кода (число кодируемых сообщений) - Q =17;
n’-n=2
Расчет числа информационных и избыточных разрядов.
Число информационных и избыточныхразрядов определяется из соотношений
2k – 1 ≥ Q ;
2n – k – 1 ≥ n ;
n – k ;
где k – число информационных разрядов ;
n - число разрядов помехоустойчивого слова;
(n – k) – число избыточных разрядов;
отсюда k = 5; n =9; n – k = 4;
2.Построение таблицы опознавателей ошибок.
Из таблицы видно, что каждой ошибке соответствует свой опознаватель. В таблице не используются двоичные числа, которые соответствуют номерам поврежденных разрядов,
так как тогда у нас получится код Хэмминга
А11 |
А10 |
A9 |
A8 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
Опознаватели |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
000001 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
010100 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
101010 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
000010 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
001001 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
000100 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
011010 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
001000 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
010000 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
100000 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
010001 |
3.Построение проверочных равенств
Проверочное равенство представляет собой одно из преобразованных уравнений алгоритма кодирования . Если при проверке дешифратором уравнений, определяющих данные избыточные разряды, произошло нарушение четности, то опознаватель окажется равным 1.
Разряды опознавателя определяются следующими проверочными равенствами
а1 а5а11
а3 а4а7
а2 а6
а3 а5а7а8
а2 а7а9а11
а3 а10
Запишем проверочные равенства в виде системы уравнений:
а1 а5а11
а3 а4а7
а2 а6
а3 а5а7а8
а2 а7а9а11
а3 а10
4.Построение правила кодирования.
Из системы уравнений приведенной выше составим следующее правило кодирования.
Избыточными разрядами будем считать такие разряды ,которые в проверочных равенствах встречаются по одному разу.
а1 = а5 а11
а4 = а3 а7
а6 = а2
а8 = а3 а5а7
а9 = а2 а7а11
а10 = а3
5.Построение кодирующей таблицы.
000001 |
00100100010 |
000010 |
01010001100 |
000011 |
01110101110 |
000100 |
00010010001 |
000101 |
00110110011 |
000110 |
01000011101 |
000111 |
01100111111 |
001000 |
00111001000 |
001001 |
00011101010 |
001010 |
01101000100 |
001011 |
01001100110 |
001100 |
00101011001 |
001101 |
00001111011 |
001110 |
01111010101 |
001111 |
01011110111 |
010000 |
10100000001 |
010001 |
10000100011 |
6.Построение таблицы декодирования.
00100100010 01010001100 01110101110 00010010001 00110110011 01000011101 01100111111 00111001000 00011101010 01101000100 01001100110 00101011001 00001111011 01111010101 01011110111 10100000001 10000100011 |
00000000000 |
00100100011 01010001101 01110101111 00010010000 00110110010 01000011100 01100111110 00111001001 00011101011 01101000101 01001100111 00101011000 00001111010 01111010100 01011110110 10100000000 10000100010 |
00000000001 |
00100100000 01010001110 01110101100 00010010011 00110110001 01000011111 01100111101 00111001010 00011101000 01101000110 01001100100 00101011011 00001111001 01111010111 01011110101 10100000011 10000100001 |
00000000010 |
00100100110 01010001000 01110101010 00010010101 00110110111 01000011001 01100111011 00111001100 00011101110 01101000000 01001100010 00101011101 00001111111 01111010001 01011110011 10100000101 10000100111 |
00000000100 |
00100101010 01010000100 01110100110 00010011001 00110111011 01000010101 01100110111 00111000000 00011100010 01101001100 01001101110 00101010001 00001110011 01111011101 01011111111 10100001001 10000101011 |
00000001000 |
00100110010 01010011100 01110111110 00010000001 00110100011 01000001101 01100101111 00111011000 00011111010 01101010100 01001110110 00101001001 00001101011 01111000101 01011100111 10100010001 10000110011 |
00000010000 |
00100000010 01010101100 01110001110 00010110001 00110010011 01000111101 01100011111 00111101000 00011001010 01101100100 01001000110 00101111001 00001011011 01111110101 01011010111 10100100001 10000000011 |
00000100000
|
00101100010 01011001100 01111101110 00011010001 00111110011 01001011101 01101111111 00110001000 00010101010 01100000100 01000100110 00100011001 00000111011 01110010101 01010110111 10101000001 10001100011 |
00001000000 |
00110100010 01000001100 01100101110 00000010001 00100110011 01010011101 01110111111 00101001000 00001101010 01111000100 01011100110 00111011001 00011111011 01101010101 01001110111 10110000001 10010100011 |
00010000000 |
00000100010 01110001100 01010101110 00110010001 00010110011 01100011101 01000111111 00011001000 00111101010 01001000100 01101100110 00001011001 00101111011 01011010101 01111110111 10000000001 10000100011 |
00100000000 |
01100100010 00010001100 00110101110 01010010001 01110110011 00000011101 00100111111 01111001000 01011101010 00101000100 00001100110 01101011001 01001111011 00111010101 00011110111 11100000001 11000100011 |
01000000000
|
10100100010 11010001100 11110101110 10010010001 10110110011 11000011101 11100111111 10111001000 10011101010 11101000100 11001100110 10101011001 10001111011 11111010101 11011110111 00100000001 00000100011 |
10000000000 |