Построение арифметико-логического устройства для выполнения операции умножения целых чисел
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
µво и регистры множителя тоже. Действия аналогично. Если анализируемая цифра множителя равна 1, то к текущему значению суммы частичных произведений добавляются содержимое регистра множимого. Выполняется сдвиг влево по разрядной сетке и содержимого сумматора и всё до окончания анализа всех разрядов множителя. В результате произведение размещается в сумматоре частичного произведения.
Сумматор частичных произведений и регистр множимого имеет двойную длину (двойную разрядность), регистр множителя цепи сдвига влево, регистр множимого вправо. Производится анализ старшего числового разряда множителя, если он равен 1, то к текущему значению суммы частичных произведений добавляется содержимое регистра множимого. Содержимое регистра множителя сдвигается влево, а регистр множимого вправо на один разряд. Процесс продолжается до анализа последнего младшего разряда множителя.
Достоинства I, II, IV возможность более эффективно реализовывать операцию деления. Кроме того II, IV варианты, имеющие неподвижную сумму частичных произведений позволяют параллельно выполнять операцию суммирования и сдвига, что есть производительнее.
Будем рассматривать I вариант.
Алгоритм операции умножения.
Будем считать, что операнды представлены прямым кодом, т.е. старший разряд знаковый, остальные числовые.
- Берутся модули от сомножителей;
- Сумма частичных произведений полагается равной нулю;
- Анализируется младший разряд множителя, если значение 1, то к текущему значению суммы частичных произведений добавляется множимое;
- Содержимое регистра множителя и сумматора частичных произведений сдвигается вправо на одно деление;
- п.3 и п.4 повторяются для всех разрядов множителя.
- Для окончательного размещения результата в двоичном виде производят сдвиг вправо на 1 разряд.
- Знак результата полагается 0, если сомножители имеют одинаковый знак и 1 (отрицательный результат), если сомножители имеют разные знаки. Операция не производится, если один из 0, и результат равен 0.
Основа для алгоритма является: Z=X(множимое)*Y(множитель)
Y представим как соответствующие степени
Y=yn-2 2n-2 + yn-32n-3+ y0 20, тогда
Z=x*(yn-2 2n-2 + yn-32n-3+y0 20) =x*2n-1(yn-2 2-1 + yn-32-2+ y0 2--(n--1))=
=2n-1((..(0+x* y0)z--1 + x* y1)* 2--1 +…+x*y n-1) 2-1 =A*2n-1.
Текущему значению суммы частичных произведений добавляется множимое, если соответствующий разряд равен 1 и далее суммы частичных произведений сдвигаются вправо и т.д. Перенеся условную точку вправо через (n-1) разряд мы получим результат.
Рг1 для приёма множимого; Рг2 для приёма множителя. Входной РгА сумматора для размещения в нём очередной добавляемой компоненты к сумме частичных произведений. Входной РгБ См используется для размещения текущего значения суммы частичных произведений. Рг2 используется для формирования сдвига множителя вправо по разрядной сетке. Выходной РгСм, в котором формируются текущее значение суммы частичных произведений. Счётчик циклов используется для отображения количества обрабатываемых разрядов множителя.
На 1-м этапе выполняется размещение множимого в Рг1. Множимое может передаваться в РгА в прямом или инверсном кодах. На 2-м этапе в Рг2 размещается множитель, поступающий по ШД. Обнуляется содержимое РгВ, используемое вы качестве начального значения суммы частичных произведений. Далее анализируется младшая цифра множителя в Рг2. Если она =1, то в РгА передаётся содержимое Рг1 и на выходе См формируется текущее значение суммы частичных произведений. Одновременно передают множитель для анализа очередной цифры. Для этого его содержимое передаётся в Рг2 с сдвигом вправо на 1 по разрядной сетке. В свободный разряд Рг2 помещается младший разряд со входа См. Остальные разряды См предаются в РгСм со сдвигом вправо на 1 разряд. После этого значение РгСм размещается в РгВ. Содержимое Рг2 размещается в Рг2 и значение СчЦ уменьшается на 1 по отношению к первоначальному значению, равному количеству числовых разрядов.
Процесс продолжается для следующей цифры множителя. Когда содержимое СчЦ становится =0, процесс анализа завершается с получением в РгСм старших разрядов и в Рг2 младших разрядов произведения. После этого выполняется ещё 1 цикл с 0 значением РгА для правилного размещения результата в разрядной сетке двойного слова.
До сих пор мы полагали, что перемножаем целые неотрицательные числа. Для умножения чисел со знаками, можно отдельно умножать модули чисел, если они записаны в прямом коде, и затем формировать знак результата. Если отрицательные числа представлены в обратном или дополнительном коде, то для взятия модулей используется дополнительная операция, связанная с добавлением 1. Поэтому для умножения чисел со знаками используется практически тот же алгоритм с некоторыми модификациями.
Алгоритм умножения целых чисел с использованием прямого кода для положительных чисел и дополнительного для отрицательных.
1.Фиксируется знак сомножителей в специальных триггерах.
2.Сумма частичных произведений полагается =0.
3.Анализируется младшая цифра множителя. Если она =1, то к сумме частичных произведений добавляется множимое в том коде, в котором оно представлено. Если она =0, то