СХЕМОТЕХНИКА ЭВМ_18.2.17 (855859), страница 24
Текст из файла (страница 24)
If K = K3 then
REG_A<=SHD; -- запись первого числа в регистр А
REG_B<=SHD; --запись второго числа в регистр В
REG_C <=(others=> ‘0’); REG_D <=(others=> ‘0’);
--запись нуля в регистры С и D
CT <= n -1; --запись числа циклов умножения
While CT /= 0 loop
If B(0) /= ‘0’ then
SM <= A +D ;--сложение в сумматоре
REG_C <= SM; --пересылка суммы в регистр C
End if;
REG_C<=shr (REG_C); REG_D<=shr (REG_D);
--сдвиг вправо на один разряд
CT <= CT – 1; --декремент числа в счетчике
End loop;
REG_C<=shr (REG_C); REG_D<=shr (REG_D);
--определение знака произведения в УУ}
REG_C(n – 1) <= --{знак произведения};
SHD <= Рег. С;
SHD <= Рег. В; --передача произведения на ШД
End if;
Выдача управляющих сигналов для выполнения умножения реализована в Устройстве управления АЛУ, которое является конечным автоматом со схемной или программированной логикой.
В результате умножения двух чисел, содержащих n – 1 цифровой разряд получаем произведение, содержащее 2(n – 1) цифровой разряд. Для правильного размещения знакового разряда это число необходимо сдвинуть на один разряд вправо. Таким образом произведение содержит 2(n – 1) + 1 разряд.
7.6. АЛУ для деления целых чисел
7.6.1. Алгоритм деления целых чисел
Операция деления целых чисел C = A/B проводится по методу последовательного вычитания делителя В из делимого А. На первом шаге алгоритма проводится вычитание делителя В из делимого А, что приводит к возникновению первого остатка R1. На втором шаге из первого остатка R1 вычитается делитель В, что приводит к возникновению остатка R2 и т.д. Операция деления проводится над модулями чисел, а знак результата вычисляется отдельно.
Рассмотрим алгоритм деления без восстановления остатка. Алгоритм включает ряд вспомогательных операций:
-
Анализ делимого и делителя на равенство нулю,
-
Вычисление знака частного при помощи логической операции "Исключающее ИЛИ".
-
Первый остаток R1 находим по следующей формуле
В этой формуле - модуль делимого. Умножение делимого на 2 обозначает сдвиг делимого на один разряд влево в регистре. Второе слагаемое
является дополнительным кодом делителя В, у которого предварительно изменили знак. Таким образом, здесь представлена удобная для схемотехнической реализации операция вычитания
Проводим анализ знака первого остатка R1. Если знак первого остатка отрицателен (R1 < 0), то операция деления выполнима, иначе возникает переполнение. Если R1 < 0, то старший разряд частного С1 равен 0 (С1 = 0).
-
Следующие остатки Ri находятся следующим образом
-
Знак остатка Ri определяет цифры в двоичных разрядах частного Ci, начиная со старшего разряда.
Процесс деления в АЛУ сопровождается сдвигом в регистре делимого А на один разряд влево на каждом шаге алгоритма. Поэтому регистр для делимого А имеет двойную длину.
Пример:
Провести деление числа A = 4910 . [A] = 0,01100012 на число B = –710 .
Вычисляем Это сдвиг делимого в регистре на один разряд влево. Далее вычисляем R1 [для понимания хорошо, но лучше все операции приводить на фоне в клетку]
+
В старшем знаковом разряде R1 находится 1. Это значит, что первый остаток отрицательный и деление возможно. Старший разряд частного С1 равен 0 (С1 = 0).
Д алее, на следующем шаге алгоритма, сдвигаем первый остаток R1 на один разряд влево (обозначаем 2R1) и складываем с модулем прямого кода делителя
.
Второй остаток R2 положителен, поэтому следующий разряд частного С2 = 1.
Далее, на следующем шаге алгоритма, сдвигаем второй остаток R2 на один разряд влево (обозначаем 2R2) и складываем с числом –В, представленным в дополнительном коде .
+
Третий остаток R3 положителен, поэтому следующий разряд частного С3 = 1.
Далее, на следующем шаге алгоритма, сдвигаем третий остаток R3 на один разряд влево (обозначаем 2R3) и складываем с числом –В, представленным в дополнительном коде .
+
Четвертый остаток R3 равен нулю, поэтому следующий разряд частного С4 = 1. Алгоритм деления по методу без восстановления остатка закончен.
В результате получили модуль частного
Знак частного Знак частного – отрицательный.
Поэтому частное от деления С = 1,11102 = –710.
7.6.2. Функциональная схема АЛУ для деления целых чисел.
Функциональная схема АЛУ для деления чисел с фиксированной запятой, использующая метод деления без восстановления остатка, представлена на следующем рисунке.
Рис. 7.7. АЛУ для деления чисел с фиксированной запятой
Делимое А записывается в прямом коде длиной 2n в регистры А и С, делитель В записывается в прямом коде в регистр В. В счетчик количества циклов СТ (в УУ) записывается число n – 1. Сумматор SM ( n разрядов) проводит сложение 8-ми разрядных чисел и передает результат в регистр А. Блок инвертирования ИНВ передает прямой код делителя В, если остаток Ri<0, иначе преобразует прямой код делителя в дополнительный код. Признаки результата деления вырабатывает блок ПР.
После записи делимого и делителя в регистры проводится анализ на равенство чисел нулю, а затем вырабатываются соответствующие признаки результата.
Проверяется возможность деления чисел. Для этого содержимое регистров А и С сдвигается влево на один разряд, а затем в сумматоре SM к содержимому регистра А прибавляется прямой код делителя В и результат записывается в регистр А. Остаток находится в регистрах А и С. Если остаток имеет отрицательный знак, то деление продолжается.
В освободившийся после сдвига младший разряд регистра С записывается старший разряд частного С1.
Таким образом, в регистрах А и С оказывается записанным первый остаток R1 от деления числа А на число В.
Если деление возможно, то проводится следующий цикл операций:
-
Содержимое регистров А и С сдвигается влево на один разряд, а затем к содержимому регистра А прибавляется прямой код делителя В (Ri<0) или дополнительный код делителя
(Ri ≥ 0). В освободившийся в результате сдвига младший разряд регистра С записывается очередной разряд частного.
Цикл заканчивается после того, как в счетчике количества циклов СТ окажется ноль.
В результате деления частное С находится в регистре С и может быть передано на шину данных ШД.
7.7. Матричные умножители
Матричная схема умножения чисел соответствует математической структуре операции умножения столбиком. Такая схема позволяет уменьшить время, необходимое для выполнения операции умножения.
Перемножим два четырехразрядных числа А = a3, a2, a1, a0 и B = b3, b2, b1, b0 столбиком. [не информативное представление матрицы]
Произведение П = АВ = M7, M6, M5, M4, M3, M2, M1, M0. [лучше сразу пример]
Процесс матричного умножения выполняется быстрее, чем умножение со сдвигом числа в регистрах, и схемотехнически может быть реализован на логических элементах без использования регистров сдвига. Двоичные произведения ai bj схемотехнически реализуется на двухвходовом логическом элементе "И". Суммирование по столбцам может быть реализовано при помощи обычных комбинационных сумматоров.
С хема двухразрядного матричного умножителя, выполненного на микросхемах средней степени интеграции, представлена на следующем рисунке
DD1 – DD4 – логические элементы КР****ЛИ1
DD5 – сумматор КР****ИМ5
Рис. 7.8. Двухразрядный матричный умножитель
На вход умножителя подаются числа А = а1, а0 и В = b1, b0. На выходах логических элементов появляются парные произведения.
Суммирование проводится в двух одноразрядных сумматорах. Результат умножения появляются на выходах М3, М2, М1 и М0.
Организация четырехразрядого матричного умножителя представлена на следующем рисунке [правильный пример матрицы]
б)
Рис. 7.9. Четырехразрядный матричный умножитель а) – одноразрядный сумматор, б) – схема множительно-суммирующего блока
Двухвходовые логические элементы "И" на этой схеме не показаны. Их выходы подключены к входам сумматоров. Частичные суммы произведений суммируются в вертикальных столбцах, по наклонным линиям передаются переносы. Входы di справа служат для подключения аналогичной схемы при расширении разрядности.
Время умножения определяется задержкой сигнала в двухвходовых логических элементах "И" и задержкой сигнала в наиболее длинной цепочке одноразрядных сумматоров.
7.8. Двоично – десятичные сумматоры
Двоично-десятичные сумматоры позволяют проводить операции непосредственно с кодами десятичных чисел, что в некоторых случаях позволяет сократить затраты и упростить схему вычислительного устройства.