| Пусть приходит число 011010001. Пусть произошла ошибка в 7-ом разряде Таблица 7. | Передано | Принято | | | | | | | | | | | | | 0 | 1 | 1 | 0 | | 0 | 1 | 1 | 0 | | | 0 | 1 | 0 | 1 | | 0 | 1 | 0 | 1 | | | 0 | 0 | 1 | 1 | | 1 | 0 | 1 | 1 | | | 0 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 | | При сравнении В7 В8 В9 = С3 в строке В1 В4 В7 = С4 в столбце Следовательно, ошибочный разряд локализован можно исправить. Но это был случай единичной ошибки, а с двойной ошибкой этот метод не справляется, то есть определить может, но исправить - нет. Таблица 8. | 0 | 1 | 0 | 0 | | 0 | 1 | 0 | 1 | | 0 | 1 | 1 | 1 | | 0 | 0 | 0 | 0 |
На рисунке видно, что, используя этот метод, нельзя понять, где произошла ошибка (В2 , В3 , В8 , В9). Для дальнейшего объяснения d(x,y) между двумя кодовыми словами х и у называется число несовпадающих позиций. Пример: х=01101, у=00111 d(x,y)=2. Это расстояние называется кодовым расстояние Хемминга. Итак, код способен исправить любые комбинации из q или меньшего числа ошибок тогда и только тогда, когда его кодовое расстояние > 2q. В настоящее время только для кодов с dmin получено такое соотношение между числом проверочных символов r и длиной кода n: r>= log2 (n+1). Циклические коды Циклическими кодами называются такие коды, которые с любым своим вектором содержит также его циклический сдвиг. Циклические коды основаны на представлении передаваемых данных в виде полинома (многочлена) и используются при последовательной передаче информации между Процессором и ВЗУ. | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 11 | | Изм | Лит | № докум | Подпись | Дата | | а(х)= а0+а1 х+а2 х2+...+ аn-1 хn-1 Для вектора а(а0, а1, ..., аn-1). Циклический сдвиг а’(х)= аn-1 +а0x +а1 х2+...+ аn-2 хn-1 . С помощью этих кодов можно обнаруживать: -
Ошибки в 1 бите, если порождающий многочлен содержит > 1 члена, -
Ошибки в 2 битах, если порождающий многочлен содержит 3 члена, -
Ошибки в нечетном количестве битов, если порождающий многочлен содержит множитель (х+1), -
Пакеты ошибок длиной менее к+1 бит, если порождающий многочлен содержит множитель (х+1), и один множитель с 3мя членами и более (к+1 - число бит порождающего многочлена). Принцип построения циклических кодов Каждая кодовая комбинация Q(x) умножается на одночлен xr , а затем делится на многочлен. Степень каждого одночлена, входящего в Q(x), повышается на r. При делении получается С(х) такой же степени, что и Q(x), и остаток Р(х) степени не более r-1, наибольшее число разрядов которого <=r. Q(x) xr / g(x) = C(x)+ P(x)/g(x) ..............................(1) В ЭВМ используется метод умножения кодовой комбинации Q(x) на одночлен xr и прибавлением к этому произведению остатка Р(х) на порождающий многочлен g(x). Реально умножается на фиксированный многочлен типа x3 x2 1 Рис.2. Схема умножения на многочлен. Таблица 9. | | Вначале все ячейки содержа 0. Пусть требуется умножить x4 x2на x3 x2 | | 1 такт | На вход поступает единичный коэффициент при старшей степени x4 , запоминается в 1-й ячейке памяти и передается на выход. | | 2 такт | На вход поступает 0-й коэффициент при x3. Содержимое первой ячейки приходит во вторую, на выходе сумматора появляется 1, которая, суммируясь с выходом 3-й ячейки, появляется на выходе 2-го сумматора | | 3 такт | На вход поступает коэффициент при x2. Он запоминается в 1-й ячейке памяти и передается на выход. | | 4 такт | На вход поступает 0-й коэффициент при x1. Первый сумматор имеет на выходе 1, а второй - 0. | | 5 такт | На вход сумматора поступает 1 - коэффициент при x0. | | 6-8 такты | Учитывая, что после умножения многочленов старший коэффициент имеет 7-ю степень, необходимо сдвинуть на 3 разряда (убираются разряды, содержащие 0) | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 12 | | Изм | Лит | № докум | Подпись | Дата | | | Такт | Вх. символ | Содержимое регистра после очередного сдвига | Вых. символ | | 0 | -- | 000 | -- | | 1 | 1 | 100 | 1 | | 2 | 0 | 010 | 1 | | 3 | 1 | 101 | 1 | | 4 | 0 | 010 | 0 | | 5 | 1 | 101 | 1 | | 6 | 0 | 010 | 0 | | 7 | 0 | 001 | 0 | | 8 | 0 | 000 | 1 | Таблица 10. Рис. 3. Схема деления на многочлен На вход со старших степеней коэффициенты, а на выход - коэффициенты частного. По окончании деления в регистре сдвига слева направо оказываются записанными коэффициенты остатка, начиная с младших степеней. Пример - разделить x5 x4 x3 x2на x3 x2 Таблица 11. | Такт | Вх. символ | Содержимое регистра после очередного сдвига | Вых. символ | | 0 | -- | 000 | -- | | 1 | 1 | 100 | 0 | | 2 | 1 | 110 | 0 | | 3 | 1 | 111 | 1 | | 4 | 0 | 110 | 0 | | 5 | 1 | 111 | 1 | | 6 | 1 | 010 | -- | Рассмотрим процесс обнаружения и исправления ошибок. Пусть n=7 и необходимо исправить q=1. Из формул n=2c-1 c кодовым расстоянием dmin>=2q+1 и r<=cqc=3 и r=3. Так как 3 делится без остатка на 1 и 3, то сомножителями двучлена будут все неприводимые многочлены степени 1 и 3. Пусть имеется кодовое слово x3 x2 | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 13 | | Изм | Лит | № докум | Подпись | Дата | | Рис. 4. Запись Первые 4 такта Клапан 1 закрыт и информационные символы кодового слова поступают через комбинационную схему на выход и одновременно на схему, которая в соответствии с формулой 1 умножает кодовое слово на х3 и делит на g(x). В регистре получается остаток от деления. Далее клапан 1 открывается, производит 3 сдвига и остаток в виде контрольных символов выводится из регистра. В результате формируется кодовое слово с контрольными символами х6+х4+х3+х2 -> 1011100 Чтение После приема всей информации проверяется содержимое всех разрядов регистра, и если все нули, то ошибок нет. | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 14 | | Изм | Лит | № докум | Подпись | Дата | Дерево функций многофункционального контроллера Таблица 12. | 1 Уровень | | | F0 | Управление ВЗУ | | 2 Уровень | | | F1 | Организация сопряжения с ЦП | | F0 | F2 | Промежуточная обработка информации | | | F3 | Организация сопряжения с ВЗУ | | 3 Уровень | | | F11 | Обмен параллельной информацией | | F1 | F12 | Формирование и хранение слова состояния канала (СКК) | | | F13 | Управление обменом | | | | | | F2 | F21 | Хранение параллельной информации | | | F22 | Обработка принимаемой информации | | | | F3 | F31 | Управление приводом | | | F32 | Обработка последовательной информации | | 4 Уровень | | | F11.1 | Прием параллельной информации из ЦП | | F11 | F11.2 | Передача параллельной информации в ЦП | | | F11.3 | Хранение передаваемой информации | | | | | | F12 | F12.1 | Прием СКК | | | F12.2 | Передача СКК | | | | F13 | F13.1 | Анализ поступающих сигналов | | | F13.2 | Выдача управляющих сигналов | | | | | F21.1 | Прием передаваемых данных | | F21 | F21.2 | Хранение передаваемых данных | | | F21.3 | Прием служебной информации | | | F21.4 | Хранение служебной информации | | | | | F22.1 | Анализ слова состояния ВЗУ | | F22 | F22.2 | Формирование управляющего слова ВЗУ | | | F22.3 | Анализ информации, передаваемой из ВЗУ | | | | F31 | F31.1 | Передача управляющего слова в ВЗУ | | | F31.2 | Прием слова состояния ВЗУ | | | | | F32.1 | Кодирование информации | | | F32.2 | Декодирование информации | | F32 | F32.3 | Формирование циклического кода контроля (CRC) | | | F32.4 | Опознавание маркеров | | | F32.5 | Параллельно-последовательные преобразования информации | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 15 | | Изм | Лит | № докум | Подпись | Дата | | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 16 | | Изм | Лит | № докум | Подпись | Дата | | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 17 | | Изм | Лит | № докум | Подпись | Дата | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 18 | | Изм | Лит | № докум | Подпись | Дата | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 19 | | Изм | Лит | № докум | Подпись | Дата | | | | | | | | АПЗ.38.098424.003 ПЗ | Лист | | | | | | | 20 | | Изм | Лит | № докум | Подпись | Дата | |