查詢表乘法器

2021-07-26 23:12:35 字數 3217 閱讀 7681

查詢表乘法器先將乘法的所有可能結果儲存起來,然後將兩個相乘的資料組合起來作為「位址」找到相應的結果。例如:

設 a,b 為兩個 2 位二進位制數,則 a,b 各有 4 種取值可能,乘積有 4*4=16 種可能(排除重複的其實只有 8 種可能),我們先將對應的 16 種可能結果儲存起來,然後對於每一特點的輸入組合,找到對應的輸出即可。該方式速度很快,只取決於讀取儲存器的速度,但是預存結果要占用較多資源,因此是面積換取速度思想的體現。同時,隨著乘數字寬的增加,需要儲存的結果迅速增加,不利於實現,因此該方式適用於位寬很小的情況。但是我們可以將高位寬的資料分解成低位寬的資料再呼叫查詢表乘法器。

例如:設 a,b 為兩個 8 位資料,可將 a 分解為 a=a1×16+a2,其中 a1 為高 4 位,a2 為低 4 位;

同理 b=b1×16+b2,然後

a×b=(a1×16+a2)×(b1×16+b2)=a1*b1*16*16 + a1*b2*16 + a2*b1*16 + a2*b2(此處

可以用左移來表示)

這樣就將兩個 8 位數的相乘轉化為 4 組 4 位數相乘,然後再相加,其中乘以常數可以通

過移位運算實現。對於 2n 位資料 a,可分解為 a=a1×2^n+a2

以下是具體例子,有兩個4位的數進行查詢表乘積

根據公式

a=a1×2^n+a2

可得知 n=2;最後得到式子:

a*b=(a1*4+a2)*(b1*4+b2)=a1*b1*4*4+a1*b2*4+a2*b1*4+a2*b3

a【3:0】×b【3:0】 = a【3:2】×b【3:2】+ a【1:0】×b【3:2】 +

a【3:2】×b【1:0】 + a【1:0】×b【1:0】 = (outa *16) + (outb *4)

+ (outc *4) + outd= (outa << 4) + (outb << 2) + (outc << 2) + outd;

模組圖:

源**:

布魯斯乘法器

布魯斯乘法器演算法 1 字母定義 a,0000 q,乘數 q 1,0 m被乘數 2 乘數的最低位補零 3 從乘數的最低兩位開始迴圈判斷,如果是00或11,則不進行加減運算,但a q需要右移一位 如果是01,則和被乘數進行加法運算,a q右移一位 如果是10,則和被乘數進行減法運算,a q右移一位 4...

Booth乘法器設計

1.乘法器原理 在計算兩個補碼相乘時,可以通過booth演算法來實現定點補碼一位乘的功能。布斯 booth 演算法採用相加和相減的操作計算補碼資料的乘積,booth演算法對乘數從低位開始判斷,根據後兩個資料位的情況決定進行加法 減法還是僅僅進行移位操作。討論當相乘的兩個數中有乙個或二個為負數的情況,...

乘法器 硬體設計

人們日常習慣的乘法是十進位制,但計算機實現起來不方便。首先,需要記錄9x9乘法表,每次相乘去表中找結果 其次,將豎式相加也不方便。但二進位制卻十分方便,馮 諾伊曼在 關於endvac的報告草案 中說 二進位制可以極大簡化乘法和除法運算。尤其是對於乘法,不再需要十進位制乘法表,也不需要兩輪的加法 二進...