Теория автоматов Лекции ЛЕКЦИЯ 14 УМНОЖЕНИЕ ЧИСЕЛ НА ДВОИЧНЫХ СУММАТОРАХ МЕТОДЫ УМНОЖЕНИЯ ДВОИЧНЫХ ЧИСЕЛ Применительно к двоичной системе счисления наиболее известны следующие основные способы выполнения операции умножения: умножение начиная с младших разрядов множителя: В обоих случаях операция умножения состоит из ряда последовательных операций сложения частных произведений. Операциями сложения управляют разряды множителя: если в каком-то разряде множителя находится единица, то к сумме частных произведений добавляется множимое с соответствующим сдвигом; если в разряде множителя — нуль, то множимое не прибавляется. Таким образом, кроме операции сложения чисел для получения произведения необходима операция сдвига чисел. При этом появляется возможность сдвигать множимое или сумму частных произведений, что дает основание для разных методов реализации операции умножения. Метод 1. Пусть А — множимое (A>0), В — множитель (В>0), С — произведение. Тогда в случае представления чисел в форме с фиксированной запятой получаем: A = 0, а1а2...ап; B=0, b1b2...bn= = b1*2-1+b2*2-2+…+bn*2-n Отсюда С=АВ=0, a1 a2...an(b1*2-1 + b2-2+...+bn*2-n)= =(2-1 *0, a1a2...ап)*b1+(2-2*0, а1а2...аn)b2+...+(2-n-0, а1а2...аn)bn. Умножение на 2-n означает сдвиг на п разрядов вправо числа, которое заключено в скобки, т. е. в данном случае сдвигается вправо множимое и умножение начинается со старших разрядов. Структурная схема множительных устройств (рис 5.1) а) б) Множимое К Множимое Множитель Множитель Суммматор К Суммматор г) Множимое Множимое в) Множитель К Суммматор К Суммматор Множитель М е т о д 2. Пусть А =0, а1а2...аn— множимое и B = 0, b1b2...bn — множитель. Множитель можно легко преобразовать, используя метод Горнера: В=(...((bn*2-l +bn-1)2-1+...+b2)2-1+b2)2-' Тогда С=AB=(...((bn*0,а1а2...аn)2-1 + Bn-1*0,а1а2...аn)2-1+ +...+b1*0,а1а2...аn)2-1. (5.2) Здесь умножение начинается с младших разрядов и сдвигается вправо сумма частных произведений. Структурная схема множительного устройства, реализующего этот метод, представлена на рис. 5.1, б. Метод 3. Пусть A = 0, a1,a2...an — множимое и B = 0, b1b2...bn — множитель. Множитель, используя метод Горнера, можно записать так: В = 2-n(b1*2n-1 + b2*2n-2 +...+bn-1*21 + bn*20)==2n(...(b1*2l+b2)21+...+ bn-12l+bn). В этом случае С=АВ=2-nbn*0, а,а2...аn+(21 *0, а1а2...аn)bn-1 + + ...+(2n-1*0,а1а2...аn)*b1), (5.3) что означает: умножение начинается с младших разрядов, и множимое сдвигается влево на один разряд в каждом такте. Схема множительного устройства представлена на рис. 5.1, в. Метод 4. Пусть A =0,a1a2...аn — множимое и В = 0, b1b2....bn — множитель. Если множитель В записать по методу Горнера: С=AВ=2-"((...(21(b1*0, a1a2...an)+ b2*0, a1a2...an)21 +...+bn-1*0,a1a2...an)21+bn*0, aia2...an), (5.4) то умножение начинается со старшего разряда и в каждом такте сдвигается влево сумма частных произведений. Схема множительного устройства представлена на рис. 5.1,г. Таким образом, для реализации операции умножения необходимо иметь сумматор, регистры для хранения, множимого и множителя и схему анализа разрядов множителя. Сумматор и регистры должны иметь цепи сдвига содержимого в ту или иную сторону в соответствии с принятым методом умножения. Анализ формул (5.1) — (5.4) показывает, что с формальной точки зрения процесс умножения двух чисел может быть представлен: при последовательном выполнении — в виде многократно повторяющегося по количеству разрядов цикла Si=Si-1+Abi,(5.5) где Si-1, Si — суммы частных произведений на (i—1)-м и i-м шагах соответственно; при параллельном выполнении — суммой членов диагональной матрицы, для которой заданы по строкам А*2i, а по столбцам — bn где i — текущий номер разряда. В дальнейшем основное внимание будет уделено последовательному принципу выполнения операции умножения. При точном умножении двух чисел количество цифр в произведении превышает количество цифр сомножителей не более чем в два раза. При умножении нескольких чисел количество цифр произведения может оказаться еще больше. Конечное число разрядов в устройствах цифрового автомата вынуждает ограничиваться максимально удвоенным количеством разрядов сумматоров. При ограничении количества разрядов сумматора в произведение вносится погрешность. В случае большого объема вычислений погрешности одного знака накладываются друг на друга, в результате чего общая погрешность сильно возрастает. Поэтому существенное значение имеет округление результатов умножения, что дает возможность сделать погрешность произведения знакопеременной, а математическое ожидание погрешности округления при условии, что отброшенные младшие разряды могут с одинаковой вероятностью иметь любое из возможных значений — равным нулю. При этом предельное по абсолютной величине значение погрешности будет наименьшим из возможных при заданном количестве значащих цифр, т. е. равным половине значения младшего разряда. При выполнении операции умножения чисел возможен выход за пределы разрядной сетки только со стороны младших разрядов е силу ограничения, которое было наложено на числа, представленные в ферме с фиксированной запятой. Точное произведение получается во всех четырех методах умножения, однако при этом требуется разное количество оборудования. УМНОЖЕНИЕ ЧИСЕЛ, ПРЕДСТАВЛЕННЫХ В ФОРМЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ, НА ДВОИЧНОМ СУММАТОРЕ ПРЯМОГО КОДА Пусть заданы машинные изображения двух чисел: [A]пp = SgA,a1a2...an, [B]пр, = SgB, b1b2...Ьn. Тогда их произведение Cпp — Sgc, с1,c2...cn, где Sgc=SgA ФSgB; Ф — знак сложения по модулю 2. При выполнении этой операции должны быть заданы структурная схема устройства, на котором производится операция, и метод умножения. УмножитьМестное управлениеРегистр АРегистр ВСхема анализаСумматор Пример 5.1. Умножить числа [А]пр= 1,11010 и [В]пр = 0,11001. При умножении будут использованы метод 2 и устройство, показанное на рис. 5.2. Запись всех действий, выполняемых устройством, осуществляется с помощью условных обозначений, т.е.: = — оператор присваивания означает, что блоку, который указан слева от оператора, присваивается, значение, указанное справа от оператора; [PrA) — сдвиг содержимого регистра Рг пправо на один разряд; |СМ| — содержимое сумматора СМ; И.П. — исходное положение Решение. Знак произведения определяем отдельно от цифровой части в соответствии с уравнением Ssp=SgAФSgB=1Ф0=1. Получение цифровой части можно показать в виде следующей записи. Пусть сумматор имеет 10 разрядов без учета знака, а регистры — 5 разрядов без знака. Введем обозначения соответственно изображения цифровой части множимого и цифровой части множителя. Последовательность действий в процессе выполнения операции умножения представлена в виде табл. 5.1. Ответ: [С]пр = 1,1010001010. Регистр А Умножить Местное управление Схема анализа Регистр В Сумматор Рис. 5.2. Структурная схема множительного устройства * Если в процессе выполнения умножения возникает единица переноса из старшего разряда, то ее надо сохранять. Чтобы процесс умножения происходил правильно, необходимо предусмотреть блокировку выработки сигнала переполнения, так как возможно временное переполнение на каком-то шаге умножения (см. пример 5.1). Пример показывает, что в данном случае не обязательно иметь сумматор длиной 2л разрядов. Хранение «хвостов» произведения можно осуществлять в освобождающихся разрядах регистра множителя. Для этого достаточно обеспечить цепь передачи информации из младшего разряда сумматора п старший разряд регистра^ множителя. Во всех приведенных ниже примерах будет применяться рассмотренный способ.