數位電子/數學與邏輯運算/數字加法器
數字加法器是一種能夠對兩個數字n位二進位制數進行加法運算的數字裝置,其中n取決於電路的實現方式。數字加法器將兩個二進位制數A和B相加,產生一個和S和一個進位C。
半加器是一種用於對兩個二進位制位0和1進行加法的數字裝置。半加器輸出兩個輸入的和以及一個進位值。
- 0 + 0 = 和 0 進位 0
- 0 + 1 = 和 1 進位 0
- 1 + 0 = 和 1 進位 0
- 1 + 1 = 和 0 進位 1
0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
___________
A ------| |
| Half |-----
| Adder |
| |-----
B ------|___________|
半加器可以用與門和異或門構成,如下所示
全加器是一種邏輯電路,它對三個一位二進位制數執行加法運算。全加器產生兩個輸入的和以及進位值。它可以與其他全加器組合(見下文)或單獨工作。
輸入 輸出 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1
請注意,進位輸出之前的最終或門可以用異或門替換,而不會改變結果邏輯。這是因為或門和異或門之間的唯一區別發生在兩個輸入都為1時;對於此處顯示的加法器,這永遠不可能。如果希望使用常用積體電路晶片直接實現加法器,則僅使用兩種型別的門比較方便。
全加器可以透過兩個半加器來構造,將A和B連線到一個半加器的輸入,將該半加器的和連線到第二個加法器的輸入,將Ci連線到另一個輸入,並將兩個進位輸出進行或運算。等效地,S可以是A、B和Ci的三位異或,而Co可以是A、B和Ci的三位多數函式。
可以使用多個全加器建立一個邏輯電路來對N位數進行加法運算。每個全加器輸入一個Cin,它是前一個加法器的Cout。這種加法器是行波進位加法器,因為每個進位位都會“傳播”到下一個全加器。請注意,第一個(並且只有第一個)全加器可以用半加器替換。
行波進位加法器的佈局很簡單,這使得設計時間很快;然而,行波進位加法器相對較慢,因為每個全加器必須等待來自前一個全加器的進位位被計算出來。可以透過檢查全加器電路輕鬆計算出門延遲。每個全加器需要三個邏輯級。在一個32位的[行波進位]加法器中,有32個全加器,因此關鍵路徑(最壞情況)延遲為 個門延遲。
為了減少計算時間,工程師設計了更快的加法方法,透過使用先行進位加法器來將兩個二進位制數相加。它們的工作原理是為每個位元位置建立兩個訊號(P 和 G),基於是否從較低有效位位置傳播進位(至少一個輸入為'1'),在該位元位置生成進位(兩個輸入都為'1'),或者在該位元位置終止進位(兩個輸入都為'0')。在大多數情況下,P 只是半加器的和輸出,G 是相同加法的進位輸出。在生成P 和 G 之後,建立每個位元位置的進位。一些高階的先行進位架構包括曼徹斯特進位鏈、Brent-Kung 加法器和Kogge-Stone 加法器。

其他一些多位加法器架構將加法器分成多個塊。可以根據電路的傳播延遲改變這些塊的長度以最佳化計算時間。這些基於塊的加法器包括進位旁路加法器,它將為每個塊而不是每個位元確定P 和 G 值,以及進位選擇加法器,它預先生成塊的兩個可能的進位輸入的和與進位值。
其他加法器設計包括條件和加法器、進位跳過加法器和進位完成加法器。
透過組合多個先行進位加法器,可以建立更大的加法器。這可以在多個級別上使用以建立更大的加法器。例如,以下加法器是一個64位加法器,它使用四個16位CLA和兩級的LCU。
