Файл: Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования.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)A—1, |
{к + \)А+кл—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