Операция деления в дополнительных кодах
Особенности алгоритма:
1) Делимое и делитель хранятся в памяти в дополнительных кодах
и в этом же виде принимаются в АЛУ;
2) Операция вычитание выполняется по алгоритму ДД в дополни-
тельном модифицированном коде;
3) Цифры знака частного получаются автоматически в процессе деления на нулевом и первом тактах сравнения;
4) Переполнение разрядной сетки определяется по несовпадению
цифр в знаковых разрядах.
5) Результат записывается в память без всяких преобразований.
6) Правила формирования очередной цифры частного и остатка более сложные, чем в рассмотренном выше алгоритме деления в прямых кодах. Кроме того, эти правила различны на нулевом шаге сравнения и на всех последующих шагах.
7) Вычисляем C=A / B.
Правила на нулевом такте сравнения:
если ЗНА = ЗНВ , то С0 =0 R1 = А – В,
если ЗНА ¹ ЗНВ , то С0 = 1 R1 = А + В.
Правила на всех последующих i – тых тактах сравнения
если ЗНRi = ЗНВ , то Сi = 1 R i+1 = R i • 2 - В
если ЗНRi ¹ ЗНВ , то Сi = 0 R i+1 = Ri • 2 + В
Рассмотрим пример деления чисел, представленных в дополни
тельном коде, в соответствии с приведенным алгоритмом.
Зададим исходные данные для наглядности в десятичном коде.
С= А / В А= 15 / 32 В= - 24 / 32 очевидно С = -5 / 8.
Представим эти числа в двоичном дополнительном коде, то есть
в том виде, в котором они хранятся в ОЗУ и вводятся в регистры АЛУ.
[РГА]пм := [А]дм =00.01111 [РГВ]пм :=[В]дм = 11.01000
|
|
( Условная точка отделяет знаковые разряды.)
Так как в соответствии с алгоритмом делитель должен либо складываться с остатком, либо вычитаться из остатка, то заготовим прямой и дополнительный коды делителя.
Итак, в первом случае будем прибавлять [РГВ]мп = 11.01000,
во втором - будем использовать [РГВ]мд = 00.11000
Процесс вычислений представим в виде табл. 1.7.
В нашем примере вычисления выполняются с точностью до 5-ти двоичных разрядов после запятой. В столбце Ci последовательно получаем цифры частного, начиная со старших разрядов в дополнительном модифицированном коде.
[C]мд =11.01011
для проверки запишем результат в прямом коде
[C]п = 1.10101
Переведем результат в десятичный код:
С = - 21/32 ~ -5/8
Как видно из таблицы, произведение отрицательное, получилось сразу в дополнительном коде и равно значению, которое было вычислено для контроля перед началом умножения по рассматриваемому алгоритму.
Таблица 1.7
Такт | Сравнение знаков | Вычисления | Пояснение | Сi |
0 | ЗНА ¹ ЗНВ | 00.01111 +11.01000 РГВ 11.10111 | A R1 | С0 = 1 |
1 | 3НR1 = 3НВ | 11.01110 + 00.11000 00.00110 | R1 * 2 R2 | C1 = 1 |
2 | 3НR2 ¹ 3HB | 00.01100 + 11.01000 11.10100 | R2 * 2 R3 | C2 = 0 |
3 | 3HR3 = 3HB | 11.01000 + 00.11000 00.00000 | R3 * 2 R4 | C3 = 1 |
4 | 3HR4 ¹ 3HB | 00.00000 + 11.01000 11.01000 | R4 * 2 R5 | C4 = 0 |
5 | 3HR5 = 3HB | 10.10000 + 00.11000 11.01000 | R5 * 2 R6 | C5 = 1 |
6 | 3HR6 = 3HB | 10.10000 | R6 * 2 | C6 = 1 |
Логические операции
|
|
Кроме рассмотренных выше вычислительных операций, в состав системы команд ЭВМ включаются различные логические операции, например, логическое сложение, логическое умножение, сумма по модулю 2 и т.д.
Все эти операции поразрядные, т.е. результат в каждом разряде определяется только цифрами в соответствующих разрядах исходных операндов.
Например, логическое сложение:
S[1:n]=A[1:n]VB[1:n];
для каждого разряда находится
S[i] = A[i] V B[i].
Аналогично, для всех логических операций.
Методы контроля правильности выполнения операций
При поиске неисправностей в работе ЭВМ, контролируются , в основном, следующие операции:
- передача информации между устройствами, особенно между АЛУ и ОЗУ;
-сдвиг;
-инвертирование;
-сложение.
Если в системе имеются аппаратные средства контроля указанных операций, то на их основе организуется контроль и более сложных арифметических процессов.
|
|
Контроль передачи информации
Наиболее простым и распространенным способом проверки правильности передачи и хранения информации является так называемый принцип контроля по четности (нечетности), основанный на получении свертки по модулю 2 (суммы по мод.2) многоразрядного двоичного кода (∑M2).
В соответствии с этим принципом передаваемый, например, из АЛУ в ОЗУ код данных размером ``n`` разрядов А [0:n} дополняется ``n+1`` - контрольным. При этом цифра в (n+1) разряде устанавливается по следующим правилам:
если принят контроль по- четности, то ∑M2 (A [0 : n+1]) = 0,
если принят контроль по- нечетности, то ∑M2( A [0 : n+1]) = 1.
В момент приема из ОЗУ в АЛУ кода А[0 : n+1] выполняется проверка его правильности на основе принятого метода контроля.
Контроль по- четности обнаруживает одиночные или нечетные ошибки.
Существуют различные более сложные контролирующие и корректирующие коды, которые находят ошибку и исправляют ее.
Для подсчета четности или нечетности количества единиц в многоразрядном коде используются логические элементы - сумматоры по модулю 2 (полусумматоры).
Возможно построение полусумматоров двух типов : комбинационного и накапливающего .
|
|
Многоразрядный сумматор по модулю 2 – функциональный узел, предназначенный для определения суммы по мод2 количества единиц в многоразрядном коде. Например , имеем двоичный код
А = 1 0 1 1 0 0 1 1 ;
Сумма по модулю 2 этого числа: Smod2 = M2 ( A) = 1.
Иногда сумму по мод 2 многоразрядного кода называют ``остатком по мод 2`` или ``свёрткой по мод 2``.
Многоразрядные сумматоры по модулю 2 используются в цифровых устройствах в системах контроля правильности выполнения операций передачи , хранения и приема информации , а также и вычислительных операций.
Пусть имеется некоторый многоразрядный двоичный код :
X = { X1 X2 X3… XN } , тогда сумма по модулю 2
M2 (X) = X1 Å X2 Å X3 Å…Å XN (1.10)
Способы получения М2(Х) последовательного и параллельного многоразрядных кодов различны.
Для последовательного многоразрядного кода М2(Х) получается с помощью триггера со счетным входом.
Получение суммы по модулю 2 для многоразрядного параллельного кода осуществляется с помощью комбинационных схем. Существует две основные комбинационные схемы многоразрядных сумматоров по модулю 2: последовательная и пирамидальная. Принцип построения обеих схем удобно пояснить посредством введения скобок в выражении (1.10). Сумматор по модулю 2 последовательного действия строится в соответствии с логическим выражением:
M2 (X) = (…( ( ( X1 Å X2 ) Å X3 ) Å X4 ) … Å XN ) (1.11)
В схеме используется (N-1) одноразрядных сумматоров по модулю 2 . Если через t1 обозначить задержку одноразрядного сумматора по модулю 2 , то время срабатывания для этой схемы
ТМ2 посл = t1 (N-1)
Многоразрядный сумматор по модулю 2 пирамидального типа строится в соответствии с логическим выражением (1.12).
М2 (Х) = ( ( Х1 Å Х2 ) Å ( Х3 Å Х4 ) ) Å ( ( Х5 Å Х6 ) Å … (1.12)
Время срабатывания для пирамидального сумматора M2:
TM2пир = t1 × lg2N
Пирамидальная схема многоразрядного сумматора по М2 обладает более высоким быстродействием и применяется чаще. В настоящее время выпускаются специальные интегральные микросхемы, реализующие операции суммирования по М2 многоразрядного кода.
Контроль сдвига
Операция сдвига проверяется также с помощью схем контроля по четности. Для этой цели на выходе регистра сдвига РГА[0:n] устанавливается триггер со счетным входом, который представляет собой сумматор по М 2 накапливающего типа. Триггер контроля перебросится столько раз, сколько единиц будет в коде. На прямом выходе триггера будет значение, соответствующее М2 (РГА[0:n]).
1.11.3. Контроль сложения на основе остатков по М 2
Рассмотрим математическую постановку задачи. Ищем
S = A + B.
Представим слагаемые и сумму в векторной записи как последовательность двоичных коэффициентов:
S = { Sn , Sn-1, … S1 , S0 }
A = { an , an-1, … a1 , a0 }
B = { bn , bn-1, … b1 , b0 }
C = { cn , cn-1, … c1 , c0 } – перенос
Si = ai Å bi Å ci
S1 = a1 Å b1 Å c1
………….
Sk = ak Å bk Å ck
Sn Å Sn-1 Å … S1 Å S0 = (an Å an-1 Å … a1 Å a0) Å (bn Å bn-1 Å … b1 Å b0) Å (cn Å cn-1 Å … c1 Å c0)
Приведем это соотношение к более компактной записи
M2 (S) = M2 (A) Å M2 (B) Å M2 (C) (1.13)
В соответствии с этими выражениями построена схема контроля по четности , обеспечивающая обнаружение ошибки при выполнении операции сложения. Как следует из (9.5), необходимо также предусмотреть суммирование по мод 2 цифр переносов, которые возникают между разрядами при суммировании.
Однако, как отмечалось выше, данный метод контроля, основанный на использовании операций с остатками суммирования по мод2, обеспечивает обнаружение лишь нечетных ошибок.
1.11.4. Контроль сложения на основе остатков по мод 3
Идея этого способа состоит в том , что каждому слагаемому ставится в соответствие некоторый контрольный код, который представляет собой остаток этого числа по модулю 3. Одновременно с суммированием, выполняется суммирование контрольных кодов, которое позволяет обнаружить ошибку (это же относится и к любой другой арифметической операции).
S = A+B; A + B = 3 ( a + b ) + R (A) + R (B) (1.14)
R(A) – остаток числа А по мод 3.
R(A) – остаток числа В по мод 3.
A = a × 3 + R (A)
B = b × 3 + R (B) a,b - целые числа или 0
R ( A+B ) = R (A) + R (B) = g × 3 + R [ R (A) + R (B) ] , где
R (A) и R(B) Î { 0,1,2 } , g Î { 0,1 }, R (A) + R (B) = [0..4] подставив в (9.6) получим A + B = 3 (a + b + g ) + R [ R)A) + R(B) ] и
R ( A+B ) = R [ R)A) + R(B) ] (1.15)
Соотношение (1.15) является математическим решением задачи контроля и на ее основе строится логическая схема контроля.
Из теории известно, что контроль по модулю 3 обнаруживает все одиночные и часть двойных ошибок.
Дата добавления: 2018-05-12; просмотров: 574; Мы поможем в написании вашей работы! |

Мы поможем в написании ваших работ!