Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования

.pdf
Скачиваний:
4
Добавлен:
21.10.2023
Размер:
8.92 Mб
Скачать

 

 

 

Т а б л и ц а 7-6

Число состояний

 

 

Реализуемое полиномом

Полином G(A')

Полином 0'(<)

О'(х) кодовое

счетчика

 

 

 

расстояние 5

31

45

31

3

 

 

53

4

 

 

721

5

 

 

1471

.6

 

 

2467

7

63

103

31

3

 

 

53

4

 

 

721

5

127

 

1471

6

211

31

3

 

 

53

4

255

 

721

5

435

31

3

 

 

53

4

 

 

1513

6

 

 

2325

6

511

1021

31

3

 

 

53

4

 

 

2325

6

1023

2011

31

3

 

 

53

4

 

 

2325

6

2047

4005

31

3

 

 

2325

6

налы счета поступают одновременно на вход контроли­ руемого счетчика и вход дополнительного счетчика по модулю А (рис. 7-17). С помощью схемы свертки про­ изводится вычисление контрольного кода, т. е. вычета по модулю А от содержимого основного счетчика. Затем

Схема свертки

Схема

сравнения

 

Счетчик

Счетчик па

модулю А

 

Ошибка

Правильно

Вход Установка в 0

Рис.

7-17. Структурная схема счетчика с контролем

 

с помощью арифметического кода.

14*

211

производится сравнение вычисленного схемой свертки контрольного кода и содержимого дополнительного счет­

чика. Такой метод

контроля

широко

используется

на

практике.

Обычно

значение

А

выбирается равным

3

в случае двоичных

счетчиков

или

9 — в

случае двоично-

десятичных

счетчиков.

 

 

 

 

Если в рассматриваемую схему включить два допол­ нительных счетчика, один из которых будет считать по модулю А\, а второй — по модулю А2 (значения Л4 и А2 можно выбрать из табл. 5-6), то можно получить кон­ трольный код, позволяющий исправить любую одиноч­ ную ошибку. Однако для исправления ошибки, вызван­ ной отказом какого-либо элемента в основном счетчике, необходимо иметь специальный сумматор. Таким обра­ зом, автоматическая коррекция ошибок сопряжена с очень большими затратами аппаратуры, но получае­

мая с помощью модулей Ai и

А2 информация может

быть использована для решения

задачи диагностики.

7-2. ПОВЫШЕНИЕ НАДЕЖНОСТИ АРИФМЕТИЧЕСКИХ УСТРОЙСТВ

Для повышения надежности блоков АУ могут быть использованы методы, изложенные в § 7-1. Однако наи­ более широко в АУ применяются арифметические разде­ лимые коды, порождаемые модулем А, в качестве кото­ рого обычно выбираются числа 3 или 7 [Л. 14—16, 49]. В этом случае обычно говорят о контроле арифметиче­ ских и логических операций по модулю. Контроль по модулю А арифметических операций основан на следую­

щих

известных тождествах. Если Сг=а по модулю А и

5 =

0 по модулю

А, то

CztВ =

а-±$

по модулю А;

CB==afl

по модулю А.

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

Рассмотрим процедуру получения контрольных соот­ ношений для основных арифметических и логических операций, выполняемых в ЦВМ с фиксированной заня­ той. Знаковый разряд будем рассматривать как старший

разряд числа, что позволяет охватить контролем знак.

212

 

Пусть разделимый арифметический код порождается

модулем Л. Через хА

обозначим

наименьший

положи­

тельный вычет числа 2х

по модулю А,

другими

словами,

если 2 * = р по

модулю

А, то хА=р.

Величину

ХА назы­

вают весовой функцией разрядов числа. Пусть

2 е = 1 по

модулю Л (т. е. е — порядок

двойки)

и х=А

по

моду­

лю

е, тогда

 

 

 

 

 

 

 

 

2* =5 24 =

хА по

модулю

Л.

 

 

 

В табл. 7-7 приведены некоторые значения

константы

ХА.

Количество

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

разрядов (без

учета

знакового разряда) обозначим через k. Тогда знаковый

разряд

имеет

вес

2h.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

7-7

Модуль А

 

 

 

Значение

*

 

 

 

 

 

 

 

 

 

 

 

 

 

22

23

24

25

26

27

28

29

30

31

3

1

2

1

2

1

2

1

2

1

2

7

2

4

1

2

4

1

2

4

1

2

Инвертирование кода. Пусть С==а (в дальнейшем, если нет специальной оговорки, все сравнения рассма­ триваются по модулю Л) . При выполнении инвертиро­ вания (k+ 1)-разрядного кода С, т. е. инвертирования и знакового разряда, получаем известное соотношение

С + С и н в = 2 " + 1 - 1 ,

 

 

 

где С и п в — инверсный код, полученный

из

С.

Аналогичное соотношение

справедливо

для вычетов

а + а и н в = з ( £ + 1 ) д — 1;

 

 

отсюда

{k +

 

 

 

 

 

«иав =

1 ) А — 1 — а.

 

(7-5)

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

1,101001,

модуль

/1 =

3, т о С = <х=0,

С и н „ = 0,010110 и о с и в в = ( 7 ) , —

1 — 0 = 2 —

1 =

1.

 

Выражение (7-5) упрощается, если число информа­ ционных разрядов кода k и модуль Л выбраны таким образом, что (k+ 1 ) А = 1 . Например, если Л = 3 и исполь­ зуется только один разряд для представления знака, то этому условию удовлетворяют нечетные значения k (11, 13, 15, 17, 19, 21, 23, 25...). В этом случае

213

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

C + C 0 6p = 2 " + 1 + 2f t —1,

отсюда

 

 

 

 

 

 

 

 

 

 

< х о 6 р = в ( 6 + l)A + k A - \ - а .

 

 

 

(7-6)

В частности, если ( £ + 1 ) А = 1 ,

то

 

 

 

 

 

 

 

а о б р = = kA

— а.

 

 

 

 

 

Например, пусть

Л = 3 , С=

1,101001,

тогда

а = 0 0

десятичной

системе счисления

а = 0 ) , £ = 6 .

Находим,

что

2 ° = 1 и

2 7

= 2 по

мо­

дулю А, т. е. £ 3 = 1

и

(6+1)3=2. В соответствии с выражением

(7-6)

получаем:

 

 

 

 

 

 

 

 

 

 

а о в р =

2 + 1 — 1 —0 =

2 по модулю

3.

 

 

 

Непосредственным вычислением убеждаемся, что вычет от С0 ор =

= 1,010110 по модулю 3 равен 2.

 

 

 

 

 

 

 

Получение

дополнительного

кода.

Известно,

что

С + С д о п = 2 h + i + 2 k

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

да), отсюда следует сравнение

 

 

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

Выражения

 

(7-5) — (7-7)

устанавливают

 

взаимную

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

представлению

одного

и

того

же отрицательного

числа.

3 частности, из

(7-6)

и

(7-7)

следует, что

 

 

а

д о а = а о

б р - { - 1 .

(7"8)

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

214

ветствует одной

операции, так

как значения

{k + i)A1,

{к + \)А+кл1,

(/г+1)л + /гл

вычисляются

заранее и

в дальнейшем используются как одна константа. Напри­ мер, для наиболее широко иопользуемого модуля Л = 3 веса разрядов представляют собой периодическую функ­

цию 1, 2, 1, 2, 1, 2, . . . и поэтому для

любого

k

( 6 + l ) , + A ,

s 3 ^ 0

по

модулю

Л = 3.

 

 

 

Переходим к рассмотрению контрольных соотноше­ ний для арифметических операций, выполняемых в АУ.

Сложение. Эта операция в АУ, как правило, выпол­ няется над модифицированными кодами, т. е. кодами, для представления знака которых используется два дво­ ичных разряда. В знаковых разрядах записывается код 11, если число отрицательное, и код 00, если число поло­ жительное. С другой стороны, в ЗУ числа хранятся в немодифицированном виде, т. е. с одним знаковым разря­ дом.

Поэтому, чтобы не преобразовывать контрольный код немодифицированного числа в контрольный код модифи­ цированного числа с целью охвата контролем по модулю обоих знаковых разрядов, поступают часто следующим образом. Несмотря на использование модифицированно­ го кода выполнение операций в АУ контролируют с од­ ним знаковым разрядом, а ошибку в старшем разряде знака обнаруживают по сигналу переполнения. Однако такой подход является неприемлемым, если переполне­ ния в сумматоре допускаются. Например, при сложении чисел с удвоенной разрядностью допускается переполне­ ние при сложении младших частей чисел. Аналогичные ситуации возникают при потактовом контроле длинных операций, таких, как умножение, деление и др. В этих случаях контролем по модулю желательно охватывать оба знаковых разряда.

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

215

Пусть контрольные коды а и

В всегда вычисляются

для чисел С и В, представленных

в прямом коде. Рас­

смотрим контрольные соотношения при различных соче­

таниях знаков

слагаемых

в сумме S = C + B.

 

 

1. С>О, В>0.

Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

s==,a

+ p,

 

 

 

 

 

где s — контрольный код суммы.

 

 

 

 

 

2.

С > 0 , В<0.

Тогда

 

 

 

 

 

 

 

 

 

5 = С + 50 бр,

если применяется

обратный код,

 

 

5 = 'С + 5 Я 0 П ,

если применяется

дополнительный

код.

Учитывая, что сигнал

 

переноса Я из знакового раз­

ряда

сумматора

«уносит»

вес

(k+l)A

и

при

наличии

циклического переноса «приносит» вес

1, получаем:

 

 

 

^ а + р о б / - [ ( 6 + 1 ) л - 1 ] Л ;

 

 

 

 

 

 

5 = з а ; + р Д 0 В - ( А + 1 ) д Я .

 

 

 

В

частности,

если

 

разрядность

k

такова,

чте>

( £ + 1 ) А = 1 ,

то

контрольные

соотношения принимают

вид:

 

 

 

 

 

 

 

 

 

 

 

 

 

s = a -J- р о б р

для обратного

кода;

 

 

 

 

 

 

s=aa-f-Рдоп —Л

 

Д л я дополнительного

кода.

 

 

3.

С < 0 ,

5 > 0 .

Этот

случай

полностью

аналогичен

рассмотренному выше.

 

 

 

 

 

 

 

 

 

4.

С < 0 , 5 < 0 .

Тогда

 

 

 

 

 

 

 

 

 

 

 

5 = Собр 'бобр

 

или

5 =

С д о п ^ д о п -

 

 

Отсюда

следует:

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

-

ЦП;

 

 

 

 

 

 

s == а д о п +

р д о п

 

(k+l)A!7.

 

 

 

Полученные выражения свидетельствуют о том, что

контрольные соотношения

для

обратного

кода

проще,

чем для дополнительного,

если

(к+1)^=1-

Однако

не

следует делать вывод о том, что в АУ поэтому надо при­ менять обратный код. Операция в основном сумматоре АУ может выполняться в дополнительном коде, а опе­ рация над контрольными кодами — в обратном. Но опе­ рация сравнения контрольного кода с выхода схемы

216

свертки и вычисленного должна проводиться с учетом выражения (7-8) 1 .

Вычитание в современных ЦВМ выполняется сложе­ нием соответствующих кодов чисел, контрольные соот­ ношения получаются аналогичными соотношениям опе­ рации сложения.

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

перемножаются только мантиссы чисел С и В, а зна­ ковые разряды складываются;

при умножении двух /г-разрядных мантисс получаем

код длиной 2/г разрядов, поэтому

возникает необходи­

мость

округления и единица округления прибавляется

в k-м

разряд (нумерация разрядов

производится справа

налево);

контрольные коды а и (5, соответствующие сомножи­ телям С и В, получены с учетом знаковых разрядов.

Учет этих обстоятельств начнем с последнего. Кон­ трольные коды, соответствующие мантиссам сомножите­ лей, равны:

a* = a — kAch+l;

где ci,+b bh+i-—значения знаковых разрядов. Тогда кон­ трольный код, соответствующий 2/г-разрядному произве­ дению мантисс, равен:

s*ma*$*^a$~akAbk+t-$kACb+1

+ k2Ack+1bk+>.

(7-9)

При добавлении единицы округления к k-му разряду получаем:

 

s*

=ц s* + 2*-1 = s*'-\-'(k

- 1 ) л .

(7-10)

2k

разрядов

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

мантисс

S=(S2k-i,

S211-2, • • •, Si,

S0)

разобьем на две группы по k

разрядов

в каждой. Тогда значение S можно представить в сле­

дующем

виде:

 

 

 

 

S = 2452 f t _1 -2"-1 + ...-f-5h.2°) + (Sf e _l -2"-1 4-...+

+S0-2°). (7-11)

1 Насколько известно авторам, эта возможность наиболее полно была исследована В. С. Пономаревым.

217

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

дет представлено разрядами (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

Соседние файлы в папке книги из ГПНТБ