半加器、全加器是組合電路中的基本元器件,也是CPU中處理加法運算的核心,理解、掌握并熟練應用是硬件課程的最基本要求。本文簡單介紹半加器、全加器,重點對如何構造高效率的加法器進行分析。
半加器和全加器
所謂半加器,是指對兩位二進制數實施加法操作的元器件。其真值表、電路圖和邏輯符號分別如下圖所示:
根據真值表,其輸入輸出之間的對應關系為:
S = A!B + !AB (!號表示邏輯非)
C = AB
從半加器的真值表、電路圖可以看出,半加器只能對單個二進制數進行加法操作,只有兩個輸入,無法接受低位的進位,因此稱為半加器。
對此,全加器則解決了這個問題,全加器有三個輸入(包括來自低位的進位),兩個輸出,其對應的真值表、電路圖和邏輯符號如下所示:
加法器的構造
有了全加器,構造加法器就非常容易了,假設有A3A2A1A0和B3B2B1B0,利用全加器構造A3A2A1A0+B3B2B1B0的串行進位加法器電路圖如下圖所示:
圖中的C-1=0,因為已是最低位,沒有進位。這種串聯方法只是完成了基本功能,從效率上則完全不可行。
分析:假設全加器中每個元器件的時延為t,則全加器的時延為2t(見全加器電路圖),對于4位加法器,按照這種串聯方法,加法器構造方法1中圖中最右邊(最低位)全加器計算完成后,才能計算右二個全加器,以此類推。因此,4位加法器至少需要4*2t=8t的時延;如果是32位,則是64t的時延。顯然,這種加法器的效率與參與計算的二進數長度成正比,數越長,時延越長。在現代計算機中,是不可能采用如此低效的加法器的。
那如何做呢?其實方法挺簡單的,只需要把Ci和參與運算的兩個4位二進制數之間的關系梳理清楚就行了。直接用代入法展開得:
設Gi= AiBi, Pi = !AiBi + Ai!Bi
C0 = Cin
C1=G0 + P0·C0
C2=G1 + P1·C1 = G1 + P1·G0 + P1·P0 ·C0
C3=G2 + P2·C2 = G2 + P2·G1 + P2·P1·G0 + ·P1·P0·C0
C4=G3 + P3·C3 = G3 + P3·G2 + P3·P2·G1 + P3·P2·P1·G0 + P3·P2·P1·P0·C0
Cout=C4
在這個關系式里,直接列出了4位二進制加法的最終進位,不用等待低位計算完了,再計算高位,而是直接進行計算,最終得到的超前進位加法器電路圖如下所示:
假設超前進位加法器中的每個門時延是t,對于4位加法,最多經過4t的時延,而且,即使增加更多的位數,其時延也是4t。
對比串行進位加法器和超前進位加法器,前者線路簡單,時延與參與計算的二進制串長度成正比,而后者則是線路復雜,時延是固定值。通常,對于32的二進制串,可以對其進行分組,每8位一組,組內加法用超前進位加法器,組間進位則用串行進位。采用這種折中方法,既保證了效率,又降低了內部線路復雜度。