1. 程式人生 > >半加器、全加器及其應用

半加器、全加器及其應用

半加器、全加器是組合電路中的基本元器件,也是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位一組,組內加法用超前進位加法器,組間進位則用序列進位。採用這種折中方法,既保證了效率,又降低了內部線路複雜度。