BOOTH 算法的簡單理解


      學習FPGA時,對於乘法的運算,尤其是對於有符號的乘法運算,也許最熟悉不過的就是 BOOTH算法了。

這里講解一下BOOTH算法的計算過程,方便大家對BOOTH的理解。

image       上圖是BOOTH算法的數學表達。由於FPGA擅長進行並行移位計算,所以BOOTH算法倒也好實現。

       image

       上圖是對乘數的加碼過程,具體可以見下面的例子。

       7 x (-3),其中R1表示被乘數 7, R2 表示乘數 -3,那么二者對應的補碼,為 R1 0111,R2 1101,

P代碼最終結果容量,應該為 2x 4 + 1 = 9位,其中一位作為輔助位。計算過程如下:

      imageimage

        上述的計算過程需要注意,在進行右移時,需要將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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM