【HDL系列】乘法器(5)——Radix-2 Booth乘法器
?
一、Booth乘法器原理
Booth算法可以減少乘法運算中加法/減法次數,是二進制乘法補碼運算的高效算法。
我們已經很熟悉,在乘法運算中包含2部分:(1):生成部分和;(2)部分和累積
而Booth算法可以減少部分和個數和加速累積,在連續比特“0”或“1”將產生更少的部分和。
在介紹Booth算法前,我們來重新回憶下往期中數的表示:
N比特數B,將其展開,其中B-1=0:
將A與B相乘,則:
對于B的第n位和第n-1位,從上式可以發現,B可以通過相鄰比特的減法和2的n次方相乘而得。
如果AB兩數相乘,從B的-1和0位逐次向高位檢查,累積A*B的結果的話:
當Bn=Bn-1,則可以省去B與A相乘和加法,只需要進行移位即可。
如果Bn=1,Bn-1=0,則為-A*2的n次;
如果Bn=0,Bn-1=1,則為+A*2的n次。
?
通過以上A*B兩數的認識,結合以上原理,我們來看Booth算法的基本過程,下文的A為累積寄存器,與上文示例不同。
Booth算法的基本過程為:
1. 被乘數和乘數分別存入M和Q寄存器;
2. 中間結果存入A和Q寄存器;
3. A和Q-1寄存器初始為0;Q-1為1比特寄存器,索引為“-1”;
4. Q-1寄存器放置于Q寄存器最低比特Q0比特的右方;
5. 在每個周期,檢查Q0和Q-1:
? ? 5.1. 如果Q0Q-1 = 00 或 11, {A,Q,Q-1}將直接右移1比特。
? ? 5.2. 如果Q0Q-1 = 01,則被乘數M與A相加,{A,Q,Q-1}右移1比特。
? ? 5.3. 如果Q0Q-1 = 10,則A減去M,{A,Q,Q-1}右移1比特。
?
Booth算法的流程圖如下,其中M為被乘數,Q為乘數,N為M和Q的M的比特位數,A為與M位寬相等的寄存器:
Booth算法流程圖?
以上是Radix-2 Booth算法,姑且翻譯為基2布什算法,以下是一個例子:
7*(-5)= -35 ;
如果設計一個面積小,性能要求不高的乘法器,可以采用迭代的方法,根據流程圖描述即可。
因在實際中基2 Booth算法使用較少,此處不特別展示基2 Booth算法的功能性Verilog設計,下期Radix-4 Booth再見。
?
原創不易,如果對您有幫助,記得點贊關注哦。歡迎批評指正,謝謝鼓勵!
一起“紙上談芯”,共同學習:
總結
以上是生活随笔為你收集整理的【HDL系列】乘法器(5)——Radix-2 Booth乘法器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适用于渗透测试不同阶段的工具收集整理(转
- 下一篇: FPGA与CPLD之区别