0
這是我自己試着解決的一個家庭作業問題,但我做不到。作業是實現一個通過使用右移使兩個二進制數相乘的電路。我對Verilog沒有任何問題,我唯一的問題是如何總結算法,以便我可以自己實現它。如何執行右移二進制乘法?
這是我自己試着解決的一個家庭作業問題,但我做不到。作業是實現一個通過使用右移使兩個二進制數相乘的電路。我對Verilog沒有任何問題,我唯一的問題是如何總結算法,以便我可以自己實現它。如何執行右移二進制乘法?
例乘法。注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
當你做一個手動寫了兩個數字的二進制乘法 –
@StefanHaustein手冊編寫的二進制乘法使用左移的算法將變得明顯,要求使用右移,如圖中所示。 – Ambitions
產品進入64位字的高32位,所以你基本上只是從隱含的<< 32開始,然後是<< 31等。 –