Файл: Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 154

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Значение 'произведения мантисс после округления бу­

дет представлено разрядами (S2 ;f _i, £2/1-2, .. •,

S/O-

Учи­

тывая,

что S =

s*i,

из выражения (7-11)

'.получаем:

 

 

 

 

 

 

 

s*, =

kAs, + s0

 

 

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

КА

 

 

 

 

 

 

где

SQ

— контрольный код, соответствующий

младшим k

разрядам произведения. Целесообразно

количество

ин­

формационных

разрядов

k

выбирать

таким

образом,

чтобы £ А = 1 . Наконец, учитывая, что знак

произведения

равен Cfc+i © 6ft+i,

получаем

выражение

для

контрольно­

го кода s с учетом знака

(&л=1):

 

 

 

 

 

 

s =

s, +

2* ( с й + 1

ф

bk+i)

=

s*, — s0

+

 

©

bk+l)

 

или

с учетом (7-9)

и

(7-10)

 

 

 

 

 

 

 

S 5

= а р + ( k

-

\ ) А -

 

[abh+1

+

pck + i -

( с й

+ 1 0 bh+1)\

+

 

 

 

 

 

 

 

 

+ c f t + 1 6 f e + 1 - s 0 .

 

 

 

(7-12)

Из (7-12) следует, что при выполнении умножения

необходимо

предусмотреть

вычисление

контрольного

ко­

да s0

от младших

k

разрядов

произведения,

которые от­

брасываются.

Пример:

хС = 1,101001

В= 0,001110

000000

101001

101001

101001

000000

 

000000

 

 

 

1,001000111110

 

+

1

 

единица округления

 

. — > — • — I

 

1,001001 I 011110 }

отбрасываемая часть произведения.

Контрольный

код от отбрасываемой части So=0. Так как

 

о = 0, р = 2, с „ + , = 1, 6 h + 1 = 0 , 6 h + 1 c h + 1 = 0 ,

 

Cb+i&bh+1

=

l, ( 6 - 1 ) ^ = 3 = 2, ( / е + 1 ) ^ 3 = 2,

218


то из (7-12) следует, что

s = 0 + 2(0 + 2 — 1 ) + 0 — 0 = 2 — 1 = 1 по модулю 3.

Действительно, контрольный код числа 1,001001 равен 1 (в двоич­ ном представлении 01).

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

деление выполняется над мантиссами чисел С и В, причем делитель В должен быть больше делимого С во избежание переполнения;

при делении вычисляется ( £ + 1 ) разрядов частного, к младшему разряду добавляется единица округления и в качестве частного выбираются старшие k разрядов;

обычно остаток R от деления С на В не равен нулю. Обозначим мантиссы делимого и делителя через С м и Вм соответствено, а мантиссу частного — через L M . Имеет

место равенство

См=fi M L i 4 I + R .

Так как числа См и Вм

меньше

1 и содержат

k раз­

рядов после запятой, а частное L M

содержит (k+\)

раз­

рядов, то ВМЬМ

и R содержат по (2k + l) разрядов

после

запятой. Чтобы

избавиться

от чисел, меньших единицы,

умножим левую и правую части равенства на 2 2 F E + 1 :

2 * + * С ' „ = £ ' Ы 1 ' И + # ' .

В последнем равенстве С'м , В'м, L ' u и R' обозначают целые числа. Из этого равенства получаем сравнение:

+ 1)А(Х* = Р*/* + Г,

 

(7-13)

где а*, |5*, /* и г — контрольные коды,

соответствующие

С'кш В'ы, L ' M И R'.

 

 

Сравнение (7-13) является основным контрольным

соотношением. Однако оно не учитывает процесс

округ­

ления и знак частного. Чтобы учесть эти факторы,

выра­

зим значение частного с учетом знакового разряда

L че­

рез L M :

 

 

L = [ L M + I - (1 0 L , ) ] -L + (cu+10

2*

(7-14)

где Li — значение младшего разряда L M . В квадратных скобках записана следующая процедура: прибавление единицы округления в младший разряд и отбрасывание

219


полученного значения младшего разряда. Умножение на 1/2 соответствует сдвигу числа, записанного в квад­ ратных скобках, на один разряд вправо. После соответ­

ствующих преобразований из (7-14)

получаем сравне­

ние:

 

 

1*^21-1-

(ch+l 0 b k + l ) (k +

\ ) л + (1J0L,), (7-15)

где / — контрольный

код частного

после округления

с учетом знака. Подставляя правую часть (7-15) в (7-13)

получаем искомое контрольное

соотношение

при kA = l-

(k+ 1)„ (а - с„+ 1 )=^(Р -

bk+1) [21 - 1

-

-© Ьк+1) (к + 1)„ + (1 0 L,)] + г. (7-16)

Например, пусть С=0,001110, 5 = 1,101001, Л = 3 ; тогда

а = 2 , р = 0, c f t + 1 = 0 , 6 „ + 1 = 1, с Л + 1 ф й Л + 1 = 1 , й „ = 1 , ( А + 1 ) д = 2 .

Выполняем деление:

 

 

001110

101001

 

—101001

0,010101I

частное LK

001111

 

\

- 101001

V

 

010011

 

101001

 

100011

101001

 

011101

остаток.

 

 

 

Производим

округление

частного и приписываем

ему

знак:

L_=_1_.010U0, L = / = 102 = 2 l o по модулю 3. Остаток

011101

и R ^ r = 102 =

2JO по модулю 3. Проверяем сравнение

(7-16):

2(2—0) — (0—1) (2-2—1—1 - 2+0) — 2 = 4 + 1 — 2 = 3 = 0

по

модулю 3,

т. е. контрольное соотношение выполняется и операция деления про- в'едена без ошибок (с некоторой вероятностью).

Сдвиг логический (знаковый разряд сдвигается). При сдвиге влево на один разряд числа С и заполнения осво­ бождающегося разряда нулем получаем:

С с д в = = 2 с 7

2't + 1 Cjl ^.l ,

где Cfc+ i значение (А + 1)-го разряда числа С. Отсюда

а е д в = 2 а — ( А + 1 ) А < ? к + 1 .

220



Если освобождающийся разряд заполняется едини­ цей, то

и

 

 

 

 

 

 

 

 

 

 

 

а с д в =

2а -

-f- l)Ach+l

-f- 1.

 

 

При сдвиге на

один

разряд

вправо и

заполнении

освобождающегося

разряда

нулем, получаем:

 

и

С С Д В =

(С - 0 / 2

или г С е д ^ С - с ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 а е д в

=

а с,.

 

 

 

Чтобы определить выражение для вычисления кон-

трольного

кода

сдвинутого числа <хСдв, умножим левую

и правую

части

последнего

сравнения на 2 е - 1 ,

где е —

порядок 2 по модулю А. В результате

получаем

искомое

выражение:

 

 

 

 

 

 

 

 

 

В частности,

если Л = 3, то е=2 и

 

 

 

 

 

 

<*едв =

 

(а — с,)

2.

 

 

 

Например, если

С — 1,101001,

/1 =

3, то с г = 1 , <*=0 и а С д В =

= — 2 = 1 .

Действительно, С с

д п

=

0,110100 =

1.

 

 

Если освобождающийся

(знаковый) разряд при сдви­

ге вправо

заполняется единицей, то

 

 

 

 

а з д в = 5 ( а - с , ) 2 « ~ ' - Н е ­

 

 

циклический

и

арифметический

сдвиг.

Напомним,

что при арифметическом

сдвиге знак

числа

не сдвигает­

ся. Читателю предлагается самостоятельно доказать сле­ дующие сравнения, с помощью которых вычисляются

контрольные коды.

При циклическом сдвиге влево или вправо на один разряд

о ц = 2 а - с * + 1 [ ( А - И ) л + 1 ] ;

ац=(а-с1)2'-1 +ClkA.

221