移位和相加
乘法器的原理主要基於「移位和相加」的算法。在這個算法中,乘法器的每一個比特位都會產生一個局部乘積。第一個局部乘積由乘法器的最低有效位(LSB)產生,第二個乘積由乘法器的第二位產生,以此類推。如果相應的乘數比特位是1,那麼局部乘積就是被乘數的值,如果相應的乘數比特位是0,那麼局部乘積全為0。每次局部乘積都向左移動一位。
乘法器可以用更普遍的方式來表示。每個輸入,局部乘積數,以及結果都被賦予了一個邏輯名稱(如A1、A2、B1、B2),而這些名稱在電路原理圖中就作為了信號名稱。在原理圖的乘法例子中比較信號名稱,就可以找到乘法電路的行為特性。
在乘法器電路中,乘數中的每一位都要和被乘數的每一位相與,並產生其相應的乘積位。這些局部乘積要饋入到全加器的陣列中(合適的時候也可以用半加器),同時加法器向左移位並表示出乘法結果。最後得到的乘積項在CLA電路中相加。注意,某些全加器電路會將信號帶入到進位輸入端(用於替代鄰近位的進位)。這就是一種全加器電路的套用;全加器將其輸入端的任何三個比特相加。
隨著乘數和被乘數位數的增加,乘法器電路中的加法器位樹也要相應的增加。通過研究CLA電路的特性,也可以在乘法器中開發出更快的加法陣列。
在數位訊號處理算法中,乘法和累加是基本的大量運算。例如:在卷積運算、數字濾波、FFT、相關計算和矩陣運算等算法中,都有大量的類似於ΣA(k)B(n-k)的運算。DSPs中設定的硬體乘法器和MAC(乘法並累加)一類的指令,可以使這些運算速度大大提高。