學習FPGA時,對于乘法的運算,尤其是對于有符號的乘法運算,也許最熟悉不過的就是 BOOTH算法了。
這里講解一下BOOTH算法的計算過程,方便大家對BOOTH的理解。
上圖是BOOTH算法的數學表達。由于FPGA擅長進行并行移位計算,所以BOOTH算法倒也好實現。
上圖是對乘數的加碼過程,具體可以見下面的例子。
7 x (-3),其中R1表示被乘數 7, R2 表示乘數 -3,那么二者對應的補碼,為 R1 0111,R2 1101,
P代碼最終結果容量,應該為 2x 4 + 1 = 9位,其中一位作為輔助位。計算過程如下:
上述的計算過程需要注意,在進行右移時,需要將P = {R0,R2},當作整體看待,若P[8]最高位為0,則
移位之后的結果R0的最高位就補0,若是1就補1,由上圖的第7步到第8步的變換,{R0,R2} =
{1001,,0001},那么P的最高位是1,則以后之后,R0的高位需要補1,所以得到移位之后的結果{R0,R2} =
{1100,1000},并且輔助位由于乘數的低位是1,所以輔助位為1,輔助位和乘數的移調的位的邏輯值有關,比
如乘數是0010,則四次操作的輔助為 0, 1, 0, 0。
-
FPGA
+關注
關注
1630文章
21759瀏覽量
604297 -
算法
+關注
關注
23文章
4622瀏覽量
93057
發布評論請先 登錄
相關推薦
評論