Студентам > Курсовые > Многофункциональный контроллер ВЗУ
Многофункциональный контроллер ВЗУСтраница: 4/6
Имея один избыточных символ, можно обнаружить только нечетное количество
ошибок. Поэтому используют другой метод. Объясним на примере:
Пусть
должно прийти 9-разрядное число. Расположим приходящие разряды следующим
образом:
В1
|
В2
|
В3
|
С1
|
Пусть
|
|
В1Å В4Å В7 =
С4
|
В4
|
В5
|
В6
|
С2
|
|
В4Å В5Å В6 =
С2
|
В2Å В5Å В8 =
С5
|
В7
|
В8
|
В9
|
С3
|
|
В7Å В8Å В9 =
С3
|
В3Å В6Å В9 =
С6
|
С4
|
С5
|
С6
|
С7
|
|
С1 Å С2 Å С3 Å С4 Å С5 Å С6= С7
|
Пусть
приходит число 011010001. Пусть произошла ошибка в 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 в столбце
Следовательно,
ошибочный разряд локализован можно исправить.
Но
это был случай единичной ошибки, а с двойной ошибкой этот метод не справляется,
то есть определить может, но исправить - нет.
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).
Циклические коды
Циклическими
кодами называются такие коды, которые с любым своим вектором содержит также его
циклический сдвиг. Циклические коды основаны на представлении передаваемых
данных в виде полинома (многочлена) и используются при последовательной
передаче информации между Процессором и ВЗУ.
а(х)= а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
Схема умножения на многочлен.
|
Вначале все ячейки содержа
0. Пусть требуется умножить x4 Å x2 Å1 на x3 Å x2 Å1
|
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)
|
|