Меню

Что такое однократная ошибка

Циклический код относится к классу
систематических кодов. Ранее было
показано, что при обнаружении одиночной
ошибки минимальное кодовое расстояние
равно
.
Это значит, достаточно одного
дополнительного разряда в кодовой
комбинации, содержащего информационные
символы, чтобы обнаружить однократную
ошибку.

Код однократной ошибки
представляет
полином вида,
где.
Код ошибки суммируется по модулю два с
одним из символовn-разрядной
кодовой комбинации:

.
(5.17)

Среди всех неприводимых полиномов
полином видаобладает наименьшей степенью. Двоичный
код, соответствующий этому полиному,
записывается как 11. При делении любого
полинома степенина
полиномимеется единственный остаток, равный
«0» или «1». Остаток, равный «1» — это
признак ошибки в кодовой комбинации, и
это свойство легло в основу создания и
обнаружения однократной ошибки.

Образование кода. Положим— код, проверочный символ которогонеизвестен. Разделим кодовую комбинациюна код 11 неприводимого полинома.
В результате деления получится остаток.
Проверочный символзаменяется остатком.

1

0

0

0

1

1

1

1

1

1

0

1

0

1

1

0

1

0

1

1

Оста-

ток

0

1

Рис. 5.7 Процедура обнаружения однократной
ошибки

1

0

1

1

1

1

1

1

1

0

1

1

1

1

00

Рис. 5.6 Процедура
определение значения символа
.

Например, пусть кодовая комбинация
101 представляет информационные символы.
На рисунке 5.6 представлена процедура
определения значения символа.
Последняя строка на этом рисунке –
остаток, равный нулю, поэтому символ=0.

На рисунке 5.7 представлена процедура
обнаружения однократной ошибки. Ошибка
в коде обозначена жирным шрифтом. В
результате деления кода с ошибкой на
неприводимый полином
образовался остаток, равный «1» — признак
ошибки.

5.2.2 Исправление однократной ошибки

Исправление одиночной ошибки связано
с определением разряда, в котором
произошла ошибка. Это производится на
основании анализа остатков от деления
многочленов ошибок
на неприводимый полином.
Каждому остатку соответствует один из
разрядов кодовой комбинации, в которой
произошла ошибка. Чем больше остатков,
тем больше ошибок можно исправить.
Наибольшее число остатков дает
неприводимый полином,
так как он не содержит ни одного
сомножителя кроме самого себя.

Боузом и Чоудхури доказано[20],
что существует циклический код разрядности

,
(5.18)

где m= 1, 2, 3, …,

с кодовым расстоянием

.
(5.19)

При этом число проверочных символов
удовлетворяет соотношению

.
(5.20)

Питерсеном [Коды, исправляющие
ошибки] доказано, что полином вида

(5.21)

может быть представлен в виде произведения
неприводимых многочленов, степени
которых являются делителями числа mот 1 доmвключительно
[Березюк].

Соотношение между числом исправляемых
ошибок s, числом информационных
символов и числом проверочных символов
регулируется формулой (5.6).

В таблице 5.4 приведены значения числа
символов nв кодовой
последовательности в зависимости от
величиныm,обеспечивающие кодовое расстояниеd=3

Таблица 5.4

m

2

3

4

5

n

3

7

15

31

r

2

3

4

5

k

1

4

11

26

при исправлении одиночной ошибки.
Для значенийn= 3, 7, 15 по
формуле (5.21) получены множества
неприводимых многочленов

,

,

.

Не
каждый многочлен даёт необходимое число
остатков. Например, при исправлении
однократной ошибки в 15-разрядном коде
необходимо 15 остатков , полученных от
деления кода ошибки на неприводимый
полином. Однако, если выбран полином будет всего шесть остатков. В то же время
полиномдаёт 15 остатков. Двоичное значение
полинома11001.

Образование циклического кода.n-разрядная кодовая
комбинация имеет вид,.
Положим, определеныk,rиn. Тогда известны неприводимый многочлени многочлен,
соответствующийk-разрядной
комбинации информационных символов.
Необходимо определить проверочные
символы.
Один из методов образования кода
заключается в следующем.

Многочлен
умножается на.
Это соответствует приписываниюrнулей справа в кодовой последовательности.
Произведениеделится на неприводимый полиноми получается
разрядный остаток.
Все символыв кодовой последовательностизамещаются символами остатка. В результате
имеем многочлен

.

Полученный многочлен делится без остатка
на неприводимый многочлен. Действительно,

,

где
частное от деления,
остаток отсутствует.

Если в одном из разрядов символ изменил
своё значение, остаток от деления
не равен нулю. Каждому ошибочному символу
в кодовой комбинациисоответствует свой остаток (синдром).

Пусть n= 7,k= 4,r= 3. Выберем полином1011,
который дает 7 остатков. Положим,.
Неизвестными являются проверочные
символы.

Определим полиномы и соответствующие
им коды
1110000,1011. Остаток от деления полиномана
полиномравен100.

Заменим нули проверочной части кода
1110000 кодом остатка и получим закодированную
кодовую комбинацию 1110100, которому
соответствует полином вида
.
Разделив полиномна
полином,
получим полином000.

Исправление однократной ошибки. Для
исправления однократных ошибок определим
коды ошибок, соответствующие каждому
разряду кодовой комбинации. Заменяя
исправный символ в коде 1110100 ошибочным
и деля полученный код на код неприводимого
многочлена, получим код ошибки (синдром)
для соответствующего разряда. В результате
получится таблица 5.5. Если искажён
символ, скажем,
то после деления кода с искажённым
символом на код неприводимого многочлена
получим синдром 011, что позволит
инвертировать символ.

Таблица 5.5

Код сообщения

Синдром S

101

111

110

011

100

010

001

Исправление однократной ошибки возможно
несколькими методами. Используя методы
исправление однократной ошибки
систематическими кодами можно так же
создать проверочную матрицу, а по ней
записать проверочные уравнения. Другим
методом является метод, основанный на
свойствах записи циклических кодов и
весе однократной ошибки, равный единице.

Считается, множество кодов, составляющие
разрешённые комбинации , образовано с
помощью выбранного неприводимого
полинома и он остается неизменным во
время исправления однократной ошибки.
В зафиксированной кодовой комбинации
содержится однократная ошибка.При делении зафиксированной кодовой
комбинации на код образующего полинома
получается остаток. Если все разряды
кода не искажены, остаток равен нулю.
Искажение одного из символов приводит
к остатку, отличного от нуля. Анализ
остатка позволяет определить искажённый
символ. Ввиду того, что ошибка однократная
и надо найти разряд, в котором произошла
ошибка, то вес остаткадолжен быть равен единице. Чтобы проверить
каждый разряд кода на наличие ошибки
производится поэтапно циклический
сдвиг влево на один разряд кодовой
комбинации. На каждом этапе осуществляется
деление сдвинутого кода на неприводимый
полином и определяется вес остатка.
Процедура циклических сдвигов
останавливается, если вес остатка=1.
Этот остаток служит индикатором того,
что последний разряд в сдвинутом коде
ошибочный и его надо инвертировать.
Инвертирование достигается суммированием
по модулю 2 сдвинутого кода с кодом
остатка.

Чтобы восстановить неискажённую кодовую
комбинацию производятся циклические
сдвиги вправо столько раз, сколько
производились циклические сдвиги влево.

Пример 5.6 Пустьn= 7,k= 4,r= 3. Выберем полином

1011, который дает 7 остатков. Выберем из
множества разрешённых кодовых комбинаций
код 1110100 и внесём ошибку в 4-ый разряд
1111100. На рисунке 5.8 показана процедура
определения искажённого символа.
Разделив кодовую комбинацию с ошибкой
на неприводимый полином, убедимся, что
вес остаткаw

Сдвига нет

1111100

1011

1011

1101

1001

1011

1000

1011

11

w> 1

а

1-ый сдвиг влево

1111001

1011

1011

1101

1000

1011

1101

1011

110

w> 1

б

а б
в

3-ий сдвиг влево

1100111

1011

1011

111

1111

1011

1001

1011

101

w> 1

2-ой сдвиг влево

1110011

1011

1011

110

1010

1011

111

w> 1

в

4-ый сдвиг влево

1001111

1011

1011

101

1011

1011

1

w= 1

д

г д
е

Рис. 5.8 Процедура определения искажённого
символа

Исправление ошибки

1001111

1

1001110

больше 1, рисунок 5.8 а. На рисунках 5.8 б,
5.8 в, 5.8 г показаны процедуры циклического
сдвига и получения остатков, больших
единицы. На рисунке 5.8.д демонстрируется,
после очередного циклического сдвига
и деления полученного кода на неприводимый
полином остаток равен единице,
следовательно вес остатка w=1.
Это значит последний сдвинутый символ
ошибочный. Чтобы исправить ошибочный
символ, последнюю кодовую комбинацию
сложим по модулю 2 с остатком, рисунок
5.8.е. Произведя последовательно 4 раза
циклический перенос вправо кодовой
комбинации с исправленным символом,
получим безошибочную кодовую комбинацию:

1001110
0
100111, 1010011, 1101001,1110100.

Оглавление

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Однократная ошибка в цифровом сигнале данных

Однократная ошибка в цифровом сигнале данных
1. Ошибка в цифровом сигнале данных, при которой перед ошибочным единичным элементом и после него имеется, по крайней мере, по одному правильному единичному элементу

Употребляется в документе:

ГОСТ 17657-79

Передача данных. Термины и определения

Телекоммуникационный словарь.
2013.

Смотреть что такое «Однократная ошибка в цифровом сигнале данных» в других словарях:

  • однократная ошибка в цифровом сигнале данных — однократная ошибка Ошибка в цифровом сигнале данных, при которой перед ошибочным единичным элементом и после него имеется, по крайней мере, по одному правильному единичному элементу. [ГОСТ 17657 79 ] Тематики передача данных Обобщающие термины… …   Справочник технического переводчика

  • Однократная ошибка в цифровом сигнале данных — 77. Однократная ошибка в цифровом сигнале данных Однократная ошибка Е. One fold error Ошибка в цифровом сигнале данных, при которой перед ошибочным единичным элементом и после него имеется, по крайней мере, по одному правильному единичному… …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ 17657-79: Передача данных. Термины и определения — Терминология ГОСТ 17657 79: Передача данных. Термины и определения оригинал документа: 78. n кратная ошибка в цифровом сигнале данных n кратная ошибка Е. n fold error Группа из и ошибок в цифровом сигнале данных, при которой ошибочные единичные… …   Словарь-справочник терминов нормативно-технической документации

Однократная ошибка

Cтраница 1

Однократная ошибка в этом случае может быть пропущена только тогда, когда она одновременно возникла в двух одноименных разрядах двоичного числа в течение времени сравнения tcp кодов при помощи устройства контроля.
 [1]

Код позволяет обнаруживать однократные ошибки и все ошибки нечетной кратности, так как только в этих случаях количество единиц в комбинации станет нечетным. Не обнаруживаются ошибки четной кратности.
 [2]

Код позволяет обнаруживать однократные ошибки нечетной кратности, так как только в этих случаях количество единиц в комбинации станет нечетным. Не обнаруживаются ошибки четной кратности.
 [3]

Он способен исправлять однократную ошибку и обнаруживать тройную ошибку.
 [4]

Он способен исправлять все однократные ошибки.
 [6]

Наибольшее практическое значение имеет обнаружение однократных ошибок, не связанное с введением большой избыточности.
 [7]

Параметр А для исправления всех однократных ошибок выбирают точно так же, как и в случае обнаружения всех двухкратных ошибок, в частности приемлемы все данные, приведенные выше.
 [8]

Если в процессе преобразования информации возникнет любая однократная ошибка ( в информационных или проверочных символах), то условие (7.40) нарушается и ошибка обнаруживается при проверке. Обнаруживаются также ошибки и более высокой кратности, если кратность эта нечетна. Размещение проверочного символа в кодовом слове роли не играет. Обычно его ставят в конце слова после всех информационных символов. Для построения кода, исправляющего одиночные ошибки, необходимо организовать проверки на четность так, чтобы непосредственно получить число, указывающее номер позиции искаженного символа. Это число называют контрольным.
 [9]

Следовательно, этот код способен исправлять однократную ошибку или обнаруживать однократную и двойную.
 [10]

Эта же схема кодирования способна исправлять однократную ошибку, потому что любые два кодовых слова отличаются по меньшей мере в трех позициях. Из того, что d ( b bj) 3 при Ь Ф bj, следует, что однократная ошибка приведет к приему слова, которое находится на расстоянии 1 от единственного кодового слова, которое и было передано.
 [11]

Пусть теперь необходимо построить код, обеспечивающий устранение однократных ошибок. Выбираем в качестве первой разрешенной комбинации А.
 [12]

К этим кодам обычно относят коды с исправлением однократных ошибок и коды с исправлением однократных и обнаружением двукратных ошибок.
 [13]

Простейшим циклическим кодом является код, обеспечивающий обнаружение однократных ошибок.
 [14]

В первом варианте ( рис. 5.33 — защита от однократной ошибки) элементы, реализующие память триггера, располагаются на двух логических уровнях.
 [15]

Страницы:  

   1

   2

   3

   4

Продолжаем цикл занятий, посвященный
темам технологий беспроводной связи.
Сегодняшнее занятие посвящено такой
актуальной теме, как линейные блочные
коды, кодирование. Мы посмотрим, какие
есть варианты, какие способы кодирования
информации используются в работе.

Начнем с простых кодов. Простые коды ⏤
линейные блочные коды — некоторые
информационные сообщения разбиваются
на блоки, и каждый блок по-отдельности
кодируется, по-отдельности принимается
и декодируется. То есть каждый блок ⏤
некая независимая единица
.

Примером линейного блочного кода,
который мы уже рассматривали, является
код Хемминга. Мы рассматривали, как он
устроен на примере кода Хемминга (7,4) —
где 7 бит ⏤ это длина блока, из них 4 бита
⏤ информационные, а 3 бита ⏤ контрольные.

Рассмотрим код Хемминга (n,k), где под n ⏤
общее количество бит в блоке и k ⏤
количество информационных бит в блоке.

Линейные коды достаточно распространены,
их много разнообразных вариаций. Вы
можете сами придумать какой-либо свой
линейный блочный код и
использовать его. Коды Хемминга в свое
время были очень популярны ввиду простоты
их реализации, что очень немаловажно,
когда вы придумываете свой код, и,
соответственно, они решают свою задачу.
А именно, код Хемминга (7,4) исправляет
однократную ошибку
.

Давайте разберемся,
почему он исправляет однократную ошибку?

Вернемся к коду Хемминга (n,k), где

  • k ⏤ количество информационных бит,

  • n ⏤ это общая длина блока,

  • r = n – k ⏤ это количество проверочных, или
    контрольных бит.

Таким образом, у нас k=4, 4 информационных
бита.

Вообще говоря, Код Хемминга ⏤ двоичный
код, он работает на алфавите, алфавит в
нашем случае ⏤ это множество {0; 1}.
Поэтому количество возможных вариантов
так называемых входных слов 2k,
при k=4 количество возможных вариантов
входных слов будет 24 = 16.

Что делает кодер?
Поступает некоторый блок из k бит,
далее есть устройство или программа,
которая называется кодер. Она кодирует
ваше входное сообщение, то есть добавляет
в него некоторые дополнительные
проверочные символы. Фактически кодер
удлиняет сообщение на количество
проверочных символов r, и возвращает
некоторое закодированное слово длиной
уже n бит
. Так работает любой кодер,
какой бы мы не смотрели, блочный он или
нет.

Таким образом, в случае кодирования
кода Хемминга (7,4) на входе есть таблица
шестнадцати вариантов: 0000, 0001, …, 1111, а
на выходе те же самые 16 вариантов, но
они снабжены еще проверочными символами.
Множество выходных слов отличается
друг от друга попарно всегда на 3
контрольных бита.

Рассмотрим пример. Пусть k=1, то есть
вы хотите передать 1 бит, но так, чтобы
при возникновении ошибки его можно было
бы поправить. Сколько потребуется
дополнительных бит, чтобы можно было
восстановить сообщение?

Пусть отправляемый бит: 0.

Если вы предположите, что достаточно
одного проверочного бита, значит,
количество единичек должно быть четным,
то есть вы добавляете в данном случае
0, тогда во время движения по каналу
связи сообщение может исказиться:

00 ➞ 10 —
четность изменилась (однократная ошибка)

01 — четность изменилась
(однократная ошибка)

00 — в этом случае понимаем,
что сообщение не исказилось

В случае с комбинациями (10 и 01) непонятно
какой символ был передан: 1 или 0? В данном
случае эти варианты равноправны, поэтому
одного проверочного символа никак не
хватает. Следовательно, нужно использовать
два проверочных символа.

И если вы передаете один бит данных (D)
и у вас два контрольных бита (Kи K2), то в
зависимости от того, какой на входе бит,
будут определяться контрольные символы.

D кодируется ➞ DK1K2

0 кодируется ➞ 000 ➞ при
возникновении ошибки на выходе получим
следующие варианты: 100, 010, 001.

Отсюда легко понять, что был передан
именно 0.

Рассмотрим первый вариант — 100. Проверяем
контрольные суммы.

D + K1 = 1 (mod 2) — значит,
ошибка либо в первом (D), либо во втором
бите (K1), далее приемник сравнивает данные
и второй контрольный бит

D + K2 = 1 ( mod 2) — значит,
ошибка либо в первом (D), либо в третьем
бите (K2),

две ошибки в переданном сигнале быть
не может, поэтому ошибка в данных.

Далее рассуждаем аналогично. Для сигнала
010:

D + K1 = 1 (mod 2) — значит,
ошибка либо в первом бите (D), либо во
втором бите (K1)

D + K2 = 0 (mod 2) — значит,
ошибка именно в первом бите (D)

И продолжая рассуждение, мы можем
определить, что ошибка в данном случае
в во втором контрольном бите.

Те же самые рассуждения можно привести
и для случая, если вы передаете три
единички.

D кодируется ➞ DK1K2

1 кодируется ➞ 111 ➞ при
возникновении ошибки на выходе получим
следующие варианты: 011, 101, 110.

При передаче трех нулей в случае, когда
в канале может быть ошибка, на выходе
может прийти три различных варианта.
При передаче трех единиц в случае, когда
в канале может быть ошибка, на выходе
тоже может прийти три различных варианта.
И нужно помнить о том, что могут быть
приняты сообщения без ошибок: 000, 111.

Всего два варианта на стороне передатчика,
которые могут быть переданы, 111 и 000. А
различных вариантов, которые могут быть
приняты, с ошибками и без ошибок, восемь.
При этом какой бы вариант вам не пришел,
вы всегда можете определить, что конкретно
было на стороне передатчика. Зная, как
устроен кодер, программа кодера, которая
таким образом закодировала сигнал, вы
может разобраться, что было на входе, 0
или 1.

Обратите внимание, что мы обнаружили и
исправили однократную ошибку благодаря
тому, что исходные варианты, которые
сформировал кодер, отличаются именно
на три бита (000 и 111), если бы они отличались
на два бита, тогда было бы непонятно, с
какой стороны сигнала находится ошибка.
В данном примере расстояние Хемминга
будет равно 3. Под
расстоянием Хемминга подразумевается
количество бит, на которые отличаются
два сравниваемых числа.

Давайте попробуем разобраться, на какое
количество бит наши кодовые комбинации
должны отличаться, если мы хотим исправить
двукратную ошибку
.

Пусть,

  • квадратик — разрешенная комбинация,
    то есть та комбинация, которую выдает
    кодер,

  • крестик — комбинация, которая содержит
    в себе ошибки, то есть это те коды,
    которые наш кодер никак не мог выдать
    нам; это комбинации, которые появились
    в процессе приема, уже на стороне
    приемника.

Итак, если принятый код имеет вид ◻ХХХ◻,
то комбинации,
которые содержат в себе ошибки — Х —
говорят о том, что на самом деле были
переданы ближние к ним разрешенные
комбинации — ◻, была допущена однократная
ошибка.

Если мы получили
вариант, где стоит средний Х, это означает,
что мы фиксируем ошибку, что такая
комбинация не может быть, ее нет в
перечне, и это двукратная ошибка.

Что привело к возникновению этой
двукратной ошибки, откуда она, мы не
знаем.

Мы можем только обнаружить ее, а исправить
не можем.

Теперь возвращаясь
к вопросу: как исправить двукратную
ошибку?

Рассмотрим ситуацию, изображенную на
рисунке.

Принятый код имеет вид ◻ХХХХХ◻. Если
мы принимаем эту комбинацию, то стрелками
покажем с какими разрешенными комбинациями
будут отождествляться комбинации с
ошибками. Почему именно так? Потому что
мы ищем ближайший разрешенный код. Но
мы не знаем откуда произошла ошибка,
которая находится в середине комбинации.
Ошибка обнаружена, мы не можем её
исправить. Таким образом, чтобы исправить
двукратную ошибку, нужно, чтобы ближайшие
кодовые слова отличались на минимум
пять бит.

Такую схему рассуждения можно применить,
если вы хотите сгенерировать код, который
исправляет трехкратную или четырехкратную
ошибку в вашем коде и так далее. Эти
несложные рассуждения позволяют
разобраться, сколько нужно проверочных
символов, и как должны быть устроены
слова, которые выдает кодер. Как слова
должны отличаться друг от друга.

Мы поговорили про кодирование в случае,
когда мы хотим разработать код, который
исправляет однократную, двукратную,
трехкратную ошибку. Это так называемые
общие принципы. Возвратимся к нашему
коду Хемминга 7,4.

Код Хемминга 7,4 является совершенным
кодом.
Почему? Потому что все комбинации,
которые возвращает ваш кодер, отличаются
друг от друга ровно на 3 бита, то есть
нет никакой избыточности, кодовое
пространство заполняется максимально
плотно. Количество комбинаций, которое
может принять пользователь в случае,
если вы работаете с кодом Хемминга 7,4,
равно 27 = 128.

Поэтому, когда вы работаете с кодом
Хемминга 7,4, его можно использовать как
некоторый табличный код. Вообще говоря,
табличный код — это самый простой в
реализации код, когда вы четко ставите
в соответствии с входом — выход. Когда
вы декодируете, соответственно, тот
код, который вы приняли (принятый сигнал)
вы сравниваете с одним из 16 вариантов.
Там, где он ближе всего — где расстояние
по коду
будет 1 или 0, будет сигнал,
который был на входе. Удалив контрольные
символы, получаете ту посылку, которую
передали.

В случае, когда вы кодируете 1 бит данных,
то есть утраиваете ваш код, получается
очень высокая избыточность. В этом
случае можно использовать таблицы. То
есть у вас будет таблица на стороне
кодера и декодера, и кодер по номеру
входного сигнала сразу возвращает
выходной, при этом декодер действует
также. Поэтому написать код Хемминга
7,4 можно, просто перечислив в массиве
все возможные варианты
.

На практике коды используются длинные.
Код должен спасать вас не только от
однократной ошибки, но и от многократной
ошибки (от двух-, трехкратной). Он должен
вас защищать, чтобы повысить надежность
канала связи. Поэтому используются коды
длиной 100, 200. А теперь представьте,
например, 2100 — это количество
вариантов, которые нужно закодировать
или найти, то есть это 1,267·1030
вариантов. Это, скажем, такой жесткий
вариант, когда вы простым перебором,
методом грубой силы декодируете сигнал?
Конечно, в современных устройствах так
не делают, то есть если в таком, простом
варианте это можно было сделать, то в
современных системах нет.

Для кодирования слов линейными блочными
кодами используется генерирующая
матрица или матрица-генератор.
Это
более простой подход, который позволяет
кодировать намного быстрее.

Матрица-генератор как раз имеет размер
(n*k), и в этом случае вам не надо хранить
всю таблицу 2n, а достаточно всего
n умножить на k чисел, что намного меньше.
Теперь посмотрим, как устроен кодер,
как устроена генерирующая таблица для
кода 7,4. Посмотрим, как она работает. То,
что мы рассмотрим, можно будет использовать
на более длинные коды.

Генерирующая матрица обозначается
буквой G, и для кода 7,4 она может быть
построена на основе тех контрольных
сумм, которые вы захотите сформулировать,
то есть то, как сейчас она будет выглядеть,
не означает, что это жесткий вариант,
который мы будем использовать. Возможен
другой вариант. Он может быть сформирован
вами самостоятельно, в зависимости от
того, на какие биты вы делаете ставку.

У нас 4 бита данных, поскольку мы
рассматриваем код 7,4: d1 d2 d3 d4.

Контрольные суммы P1P2P3
устроим следующим образом:

P1 = d4 + d3 + d2 (mod 2)

P2 = d4 + d3 + d1 (mod 2)

P3 = d4 + d2 + d1 (mod 2)

Если формировать контрольные суммы
иначе, например, вместо d4 поставить
и от них все отписать, это нисколько не
помешает нашей работе.

Матрица-генератор составляется следующим
образом.

Первый столбец: смотрим на первую
контрольную сумму, сюда не входил d1,
поэтому на ее месте — 0, а входили
d2d3d4,
на их место ставим 1, 1, 1 соответственно.
Второй столбец: во
вторую контрольную сумму входил d1,
поэтому на его месте — 1, не входил d2
— на его месте 0, d3d4
— входит — 1, 1. Аналогично, строим третий
столбец.

Следующая часть соответствует битам
данных.

Теперь попробуем закодировать какое-то
сообщение с помощью матрицы-генератора.
Сообщение, которое мы хотим передать
состоит из нескольких 1 и 0, это двоичные
коды.

Сообщение: 1010. Мы хотим его передать.

Сообщение-слово будем обозначать w.

Кодовое слово, которое мы закодируем
Cw = w * G

Обратите внимание w — строка, G
— матрица

Поэлементно умножаем строку на столбец.
В результате получим строку из 7 элементов.
Первый элемент будет следующий: 1 × 0 + 0
× 1 + 1 × 1 + 0 × 1 (mod 2) = 1. Второй элемент:
умножаем эту же строчку на следующий
столбик и так далее.

Таким образом, в результате кодирования
мы получили следующее:

(1010)→ G(кодер)→ (1011010).

Обратите внимание на следующий интересный
момент: в последовательности 1011010
последние 4 символа — это наши данные, а
первые 3 символа — это контрольные биты.
И именно эта посылка уже уезжает дальше.

Для размышления

Закодируйте сообщение 1100 с помощью матрицы-генератора.

Материалы

  • Сагалович Ю.Л. Введение в алгебраические коды (глава 4)
  • Видео об Алгоритме кодирования и обнаружения ошибки кодом Хемминга
  • Королев А.И.
    Коды и устройства помехоустойчивого кодирования информации. Мн.: 2002. — 286 с. (объёмный материал о кодировании за исключением глав 4 и 6)

В практических схемах вместо МЭ
используют пороговый элемент ПЭ, который не фиксирует появление неисправляемой
ошибки.

Рисунок 6.

Для проверки остальных символов
кода достаточно произвести циклическую перестановку записанной кодограммы. С
этой целью переключатель 2 устанавливается в положение 1 и подается импульс
сдвига. На рис.6      приведен  результат такого сдвига на один такт. Теперь
декодер реализует следующие соотношения: . Сравнив
их с (12), можно убедиться, что декодер осуществляет проверки относительно
символа . Таким образом, для проверки и исправления
информационных символов потребуется k тактов работы.

В рассмотренном примере имеется 4
соотношения проверки. Нетрудно заметить, что любая однократная ошибка нарушает
только одну контрольную проверку. Следовательно. МЭ исправит однократную
ошибку. Двукратные ошибки (ошибки в двух символах кодограммы) не могут быть
исправлены (голоса разделяются поровну), но будут обнаружены.

В проверках (12) каждый символ , участвует один раз. Такие проверки, называют
разделенными. Следует иметь в виду, что разделенные проверки получаются
не всегда, т.е. один или несколько символов могут входить в проверки не один
раз. В этом случае и однократная ошибка может нарушать более чем одну проверку.

Мажоритарный декодер МД-2
использует тот факт, что элементы синдрома есть суммы по mod2
определенных символов принимаемой комбинации. Действительно, пусть для некоторого
циклического кода генератор синдрома представлен на рис.7.  Формирование
синдрома при поступлении кодограммы отображается в табл.4.

На 7-м такте работы схема
образует синдром (S1,S2,S3).

Рисунок
7.

Таблица 4.

ЯП

Такт

1

2

3

Вых

3

0

Причем согласно таблице 4 имеем:

,

,

.

Если ошибок нет, то очевидно, что
эти суммы равны нулю (нулевой синдром – основной признак отсутствия ошибок).
Значит равны нулю суммы:

,

.

Наличие ошибки только в старшем
разряде приводит к тому, что последние  4 суммы  оказываются равными единице ( S1=0 т.к. в нее  не входит).

Если же имеет место ошибка в
любом другом разряде, то равными единице оказываются только две суммы из
четырех. Это обстоятельство можно использовать для исправления ошибки с помощью
схемы, приведенной на рис.8. На вход ПЭ подаются четыре суммы: , ,, Если, проверяемый
первым 7-й разряд ошибочен, то все эти суммы равны единице и на выходе ПЭ
появится «1» (4>3).

Рисунок 8.

Таким образом, на 8-м такте
ошибка 6удет исправлена. При этом синдром должен стать, очевидно, нулевым (так
как ошибка однократная и исправлена). Анализируя 8-ю строку табл.4, можно
видеть, что содержимое только первой ячейки генератора синдрома отлично от нуля
(зависит от , а  и от  не зависят). Суммирование , с “1” на выходе ПЭ (осуществляется связью, показанной на рис. 8 пунктиром) переводит первую ячейку в состояние «0».
Вывод остальных символов из БР теперь уже не будет сопровождаться коррекцией.

Если однократная ошибка имеет
место в 6-м разряде, то на 8-м такте ПЭ даст отклик «0» и поэтому 7-й
символ кодограммы покинет БР без исправления. Синдром также не корректируется,
и, следовательно, содержимое генератора синдрома определяется 8-й строкой табл.4.

Ошибочный 6-й разряд обращает
все четыре суммы в “1”, а ошибка в любом другом разряде —  только две из них.
Следовательно. ПЭ распознает ошибку в 6-м разряде. На последующих тактах работы
аналогичным образом проверяются остальные разряды комбинации. 

3. ОПИСАНИЕ МАКЕТА КОДИРУЮЩЕГО
УСТРОЙСТВА

Уважаемый посетитель!

Чтобы распечатать файл, скачайте его (в формате Word).

Ссылка на скачивание — внизу страницы.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Что такое общая ошибка ввода вывода
  • Что такое обработчик ошибок