2016-12-06 3 views
0

Это домашняя проблема, которую я пытался решить самостоятельно, но я не мог. Домашнее задание - реализовать схему, которая умножает два двоичных числа, используя правое смещение. У меня нет никаких проблем с Verilog, моя единственная проблема заключается в том, как завершить алгоритм, чтобы я мог реализовать его сам.Как выполнить двоичное умножение с правой стороны?

This is the slide that explains the circuit

+0

Алгоритм станет очевидным, когда вы делаете вручную написано бинарное умножение двух чисел –

+0

@StefanHaustein Руководство написано бинарное умножение использует левый сдвиг, требование заключается в использовании сдвигают вправо, как показано на рисунке. – Ambitions

+0

Продукт входит в 32-разрядное 64-битное слово, поэтому вы в основном начинаете с подразумеваемых << 32, затем << 31 и т. Д. –

ответ

1

Пример умножает. Примечание. 4-разрядный сумматор генерирует 5-битную сумму (верхний бит переносится). Ввод в сумматор - это умножитель плюс бит 3-6 регистра продукта, сумма, включающая перенос, переходит на бит 3-7 регистра продукта.

multiplicand 1100, multiplier 0101 

7 6 5 4 3 2 1 0   product bit index 

0 0 0 0 0 1 0 1   initial 8 bit register 

0 0 0 0 0 0 1 0 1 shift right, 1 bit shifted out 
    1 1 0 0    add multiplicand 
0 1 1 0 0 0 1 0   
0 0 1 1 0 0 0 1 0 shift right, 0 bit shifted out 
    0 0 0 0    no add 
0 0 1 1 0 0 0 1 
0 0 0 1 1 0 0 0 1 shift right, 1 bit shifted out 
    1 1 0 0    add multiplicand 
0 1 1 1 1 0 0 0 
0 0 1 1 1 1 0 0 0 shift right, 0 bit shifted out 
    0 0 0 0    no add 
0 0 1 1 1 1 0 0 

multiplicand 1111, multiplier 1111 

0 0 0 0 1 1 1 1   initial 8 bit register 

0 0 0 0 0 1 1 1 1 shift right, 1 bit shifted out 
    1 1 1 1    add multiplicand 
0 1 1 1 1 1 1 1 
0 0 1 1 1 1 1 1 1 shift right, 1 bit shifted out 
    1 1 1 1    add multiplicand 
1 0 1 1 0 1 1 1 
0 1 0 1 1 0 1 1 1 shift right, 1 bit shifted out 
    1 1 1 1    add multiplicand 
1 1 0 1 0 0 1 1 
0 1 1 0 1 0 0 1 1 shift right, 1 bit shifted out 
    1 1 1 1    add multiplicand 
1 1 1 0 0 0 0 1 
Смежные вопросы