跳轉到內容

數位電子學/數字加法器

來自華夏公益教科書,開放書籍,開放世界

數字加法器

[編輯 | 編輯原始碼]

數字加法器是一種能夠新增兩個數字 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 1 0
1 0 1 0
1 1 0 1
              ___________
     A ------|           |
             |   Half    |----- |
             |   Adder   |
             |           |----- 
     B ------|___________|


半加器可以使用 AND 門和 XOR 門來構建,如下所示

Half adder circuit diagram

全加器

[編輯 | 編輯原始碼]

全加器是一種邏輯電路,它對三個一位二進位制數執行加法運算。全加器產生三個輸入的和以及進位值。它可以與其他全加器組合(見下文)或獨立工作。

真值表

A B Cin Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Full adder circuit diagram Inputs: {A, B, CarryIn} → Outputs: {Sum, CarryOut}
Schematic symbol for a 1-bit full adder

注意,進位輸出前的最終 OR 門可以用 XOR 門替換,而不會改變結果邏輯。這是因為 OR 門和 XOR 門之間的唯一區別僅在兩個輸入都為 1 時才會出現;對於這裡所示的加法器,這是不可能的。如果希望直接使用常見的 IC 晶片實現加法器,使用兩種型別的門很方便。

全加器可以使用兩個半加器來構建,將AB 連線到一個半加器的輸入,將該半加器的和連線到第二個加法器的輸入,將Ci 連線到另一個輸入,並將兩個進位輸出進行 OR 運算。等效地,S 可以是ABCi 的三位 XOR,Co 可以是ABCi 的三位 多數函式

多位加法器

[編輯 | 編輯原始碼]

行波進位加法器

[編輯 | 編輯原始碼]

可以使用多個全加器建立一個邏輯電路來新增N 位數。每個全加器輸入一個Cin,它是前一個加法器的Cout。這種加法器被稱為行波進位加法器,因為每個進位位都“行波”到下一個全加器。注意,第一個(也是唯一的第一個)全加器可以用半加器代替。

行波進位加法器的佈局很簡單,這允許快速設計時間;然而,行波進位加法器比較慢,因為每個全加器必須等待來自前一個全加器的進位位被計算出來。門延遲可以透過檢查全加器電路很容易地計算出來。每個全加器需要三個邏輯級。在 32 位 [行波進位] 加法器中,有 32 個全加器,因此關鍵路徑(最壞情況)延遲為 門延遲。

先行進位加法器

[編輯 | 編輯原始碼]

為了減少計算時間,工程師們設計了更快的二進位制數加法方法,使用**超前進位加法器**。超前進位加法器透過為每個位元位建立兩個訊號(*P* 和 *G*)來工作,這兩個訊號基於以下情況:進位是否從低位傳播過來(至少一個輸入為 '1'),該位是否產生進位(兩個輸入都為 '1'),或者該位是否抑制進位(兩個輸入都為 '0')。在大多數情況下,*P* 只是半加器的求和輸出,而 *G* 是同一個加器的進位輸出。在生成 *P* 和 *G* 之後,就可以建立每個位元位的進位。一些先進的超前進位架構包括**曼徹斯特進位鏈**、**布倫特-孔加法器**和**科格-斯通加法器**。

帶超前進位的 4 位加法器

其他一些多位元加法器架構將加法器分解成多個塊。可以根據電路的傳播延遲來改變這些塊的長度,以最佳化計算時間。這些基於塊的加法器包括**進位旁路加法器**,它將為每個塊而不是每個位元確定 *P* 和 *G* 值,以及**進位選擇加法器**,它預先生成每個塊的兩個可能的進位輸入的和與進位值。

其他加法器設計包括**條件求和加法器**、**進位跳躍加法器**和**進位完全加法器**。

超前進位單元

[edit | edit source]

透過組合多個超前進位加法器,可以建立更大的加法器。這可以在多個級別上使用,以建立更大的加法器。例如,以下加法器是一個 32 位加法器,它使用四個 8 位 CLA 和兩級 LCU。

檔案:32-bit lookahead carry unit.svg
一個 64 位加法器

參考資料

[edit | edit source]
  1. 維基百科上的數字加法器
華夏公益教科書