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

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

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

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

Добавлен: 19.10.2024

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

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

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

 

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

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

обозначим

наименьший

положи­

тельный вычет числа 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