符號位

),那么就會產生k+1行部分積。 ),那么就會產生k+1行部分積。 在部分積中,有k行符號擴展位,符號擴展位陣列的最大寬度為2k個位。

設計快速乘法器,通常要重點處理三個關鍵問題:減少部分積產生、加速部分積累加和提高最終多位數相加速度。例如,用傳統的乘法運算模式處理16位×16位所用的時間為t總=t產生16行部分積+t16行部分積累加成最終積。若運用改進波茲(Booth)算法以後,可以減少部分積的產生。而基於改進波茲算法的乘法器設計,在後續部分積相加的過程中,無論採用哪種處理方式,如華萊氏樹結構等,都不可避免地要解決符號位擴展陣列問題。本文提出了一種新的基於改進波茲算法的邏輯設計來處理符號位部分:通過簡單地運用‘或門’、‘異或門’來最佳化乘法器的局部速度和面積兩方面的性能。
改進波茲算法
改進波茲算法MBA(Modified Booth′s Algorithm)[1]是建立在波茲算法[2]基礎上的。對乘數三位一組的劃分包含了一個重疊位,每一組的三位按表1編碼,並形成一個部分積。由此而產生5個係數:±1、±2、0。在部分積的累加過程中,減法也就是補碼相加。經過編碼以後,通過高低電平信號對符號位進行指示。n位乘數乘以m位被乘數會產生n+m位積。因此累加過程中由於對負數補碼的相加,每個部分積必須把符號位擴展到最高位(第n+m-1位),以此來保證後續運算的正確性。若以8位X×8位Y為例,產生的部分積陣列如圖1所示。由於部分積含有±2X,因此其字長為9位,即A0~A8,第10位A9為符號位。在做減法補碼運算時,其符號位應擴充至最高位(第15位),再加上相應每組最高位,即y1。B、C、D、E也按此規律產生。8位×8位最終產生16位積。
‘或’-‘異或’快速算法處理符號位部分
對符號位擴展陣列單獨處理,邏輯設計則按照下面順序來進行:
(1)若乘數有偶數個位即2k(k=1,2……n),那么就會產生k+1行部分積。在部分積中,有k行符號擴展位,符號擴展位陣列的最大寬度為2k-1個位;若乘數有奇數個位,即2k+1(k=0,1,2......n),那么就會產生k+1行部分積。在部分積中,有k行符號擴展位,符號擴展位陣列的最大寬度為2k個位。
(2) 若編碼結果為負數,那么產生該行的所有符號位都是1,否則都為0。
(3) 除了第0列,對符號位擴展陣列每一列進行奇偶劃分,即第1、3、5……為奇數列,第2、4、6……為偶數列。
(4) 符號位擴展陣列和的偶數位與該列上(從上至下)最後一位相關聯。該陣列和的奇數位等於該列上所涉及位的‘或’運算,偶數位等於與該位相關聯的那位與低一位的奇數列的和位的‘異或’運算,第0位等於第0行的編碼產生的符號信號。
以8位×8位的例子來說明:r0~r6是符號位陣列累加的和位,s0~s3表示陣列第0行到第3行,如圖2所示。

相關詞條

相關搜尋

熱門詞條

聯絡我們