2016-12-06 67 views
0

這是我自己試着解決的一個家庭作業問題,但我做不到。作業是實現一個通過使用右移使兩個二進制數相乘的電路。我對Verilog沒有任何問題,我唯一的問題是如何總結算法,以便我可以自己實現它。如何執行右移二進制乘法?

This is the slide that explains the circuit

+0

當你做一個手動寫了兩個數字的二進制乘法 –

+0

@StefanHaustein手冊編寫的二進制乘法使用左移的算法將變得明顯,要求使用右移,如圖中所示。 – Ambitions

+0

產品進入64位字的高32位,所以你基本上只是從隱含的<< 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