книги из ГПНТБ / Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования
.pdf
|
|
|
Т а б л и ц а 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)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
Значение 'произведения мантисс после округления бу
дет представлено разрядами (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