目錄
一、實驗目的
二、實驗內容
三、實驗器件
四、實驗原理
4.1 行波進位加法器
4.2 先行進位加法器
4.3 選擇進位加法器(嘗試猜測原理)
五、實驗步驟與思考題
一、實驗目的
1、了解半加器和全加器的電路結構。
2、掌握串行進位加法器和并行進位加法器的原理及設計方法。
二、實驗內容
1、設計擁有共同輸入端——2個4位二進制數輸入的串行加法器(行波進位加法器)和并行加法器(先行進位加法器),深入理解兩種加法器的實現邏輯和區別。
2、探討針對輸入二進制數在有符號和無符號情況下,兩種加法器如何改造成輸入是4位有符號數,輸出是4位有符號數;輸入是4位無符號數,輸出是4位無符號數或者5位有符號數的。
三、實驗器件
1、2/3/4 與門(74LS08/74LS11/74LS21)、非門(74LS04)、或門(74LS32)、異或門(74LS86) 等邏輯門。
2、三態門(74LS244)、LED指示燈及數碼顯示管。
3、單刀雙擲開關(SW_SPDT)、撥碼開關(DIPSWC_8)。
四、實驗原理
4.1 行波進位加法器
特點:第i個FA全加器的準確輸入進位ci-1需要經過(i-1)個二級與或門的門延遲之后才能獲得,因此在計算時間上花費較多,但是硬件連接十分簡單,只需要把第(i-1)個FA的進出位連接到第i個FA的進入位,把第i個FA的進出位連接到第(i+1)個FA的進入位,如果是第一個全加器,進入位連接行波進位加法器輸入c0
;如果是第(n-1)個(最后一個)全加器,進出位輸出cn
,用于溢出校驗。
4.2 先行進位加法器
特點:采取空間換時間的方法,優點是在計算效率上高于行波進位加法器,但是缺點是在硬件電路方面設計更復雜,對于n位輸入的先行進位加法器,最大需要用到fan_in=(n+1)的與門和或門,考慮到連接的復雜度和器件的功率和供電情況,一般來說這種加法器用在4位輸入較多,如果是8位或者16位、32位的加法器,可以采用4.1行波進位加法器的方法連接2個、4個或8個先行進位加法器,把圖中的FA換成4位輸入的先行進位加法器即可。
下面是對于兩個32位(n=32)二進制數的加法(減法轉換增加一個延遲單位T),行波進位加法器和先行進位加法器的計算延遲比較(不包括溢出校驗),對于先行進位,溢出校驗的最短時間(因為有兩種校驗方法,進位校驗與和位校驗)和生成的時間一致;而對于行波進位,溢出校驗的時間(兩種校驗時間幾乎一致,微小差異在三輸入或門兩輸入與門組合——最終進位產生VS兩輸入或門三輸入與門組合——溢出判斷,二輸入異或操作都有只不過次序不同)需要在?
產生的基礎上再加1T。
當n趨向于正無窮時,行波進位加法器的有效輸出延遲(筆者認為最好包括溢出校驗)漸近線為t=2nT,而先行進位加法器的漸進延遲線為t=(n/2)*T,所以計算速度大約是4倍左右。
事實上,硬件工程師在設計先行進位加法器的時候還設計了一個Carry-lookahead Logic,用于更多位加法擴展的時候可以進一步縮短運算時間,4組全加器的G和P壓縮成了一組G和P,可以形成2層-16個全加器的邏輯塊;而不是像前文講述的簡單的直接前后串聯。串聯就像是數學里的等差數列,而這種邏輯就像是等比數列,比例系數q=1/4。
輸入操作數位數n趨近于無窮大時,想要設計一個大加法器完成加減法操作,這個時候漸近線或者說運算效率就會有很大的區別(然而只存在于理論之中,因為實際不存在操作數無窮多位的情況,一般64位就已經是極限了)——
只嵌套一層,漸進延遲線就是t=(n/2)*T,嵌套m層,漸進延遲線就是t=(2n/)*T。其實這不僅僅是一個空間換時間的問題,也涉及到布局和設計,包括對門電路的理解,體現了人類的智慧。
4.3 選擇進位加法器(嘗試猜測原理)
這種加法器也擁有類似等比數列縮小的漸進延遲,硬件開銷近似指數增長。由于筆者沒有具體查閱資料去了解選擇進位加法器,所以只是猜測可能用到了2路、4路、8路等路選擇器,基本原理猜測如下圖。
上圖列舉的是把輸入二進制數劃分成三段的情況,所以相當于使用了(2^3-1)/3=7/3倍于行波進位加法器數量的全加器,計算速度提升了3倍。當分成4段的時候,使用了(2^4-1)/4=3.75倍于行波進位加法器數量的全加器;當分成8段的時候,使用了(2^8-1)/8≈32倍于行波進位加法器數量的全加器。
圖 1?????? 全加器使用6個門(其中或門是唯一的三輸入門)
下面看一看輸入是64位二進制數(比如long int類型)時,需要多多少硬件才能換取多少時間,延遲計算不包括減法的補碼處理。
一個FA全加器使用了6個門,一個4位Carry-lookahead Adder使用了4x6+14=38個門。
圖 2?????? 4位先行進位加法器多出的14個門(包含三四五輸入門)
圖 3?????? 64位操作數輸入,三種加法器的硬件開銷與計算延遲
可以發現,先行進位加法器的硬件開銷和計算延遲綜合起來是最優秀的。如果想要在先行進位加法器的基礎上把時間進一步壓縮,那么需要使用選擇進位加法器并且把硬件數量翻20倍。
圖 4?????? Proteus仿真軟件-兩種加法器的電路實現
五、實驗步驟與思考題
使用7段數碼管顯示運算結果,LED燈判定溢出(筆者沒有實現這一功能)。
1.請問本實驗的運算器是補碼運算器、原碼運算器還是無符號數運算器?與串行進位加法器相比,并行進位加法器的優勢是什么?所謂的“并行”體現在哪里?
本實驗的運算器既是補碼運算器也是無符號數運算器,根據所需用途的不同也不同,因為補碼運算器也是把有符號數當作無符號數輸入全加器運算的。
優勢就是運算效率高、運算速度快,并行體現在所有進位(除了c0)的產生延遲是一致的。
2.本實驗中,運算器可以表示的數值范圍是多少?請把運算器電路分別修改為四位無 符號數運算器和五位補碼運算器(一位符號位),并分別寫出各自新的數值范圍。
見下圖。
圖 5?????? 思考題2
對于4位有符號輸入-4位有符號輸出的情況,第五位(進出位)也存在但是不發揮作用。