文獻標(biāo)識碼: A
文章編號: 0258-7998(2012)05-0049-03
溢出現(xiàn)象的判斷是固定字長有符號加法運算中必須要進行的操作,,傳統(tǒng)溢出現(xiàn)象的判斷要等到加法運算結(jié)果產(chǎn)生以后才能進行,,本文電路設(shè)計能夠在加法運算開始之前通過對操作數(shù)的判斷而進行溢出預(yù)判,從而減少了整個加法/減法運算的時間,。
溢出現(xiàn)象有可能出現(xiàn)在有符號數(shù)的加法或減法運算中,,在進行固定字長的有符號數(shù)加法或減法運算時,如果出現(xiàn)以下四種情況:正數(shù)與正數(shù)相加得到負數(shù),、正數(shù)減負數(shù)得到負數(shù),、負數(shù)減正數(shù)得到正數(shù)、負數(shù)加負數(shù)得到正數(shù),,則認為有溢出現(xiàn)象產(chǎn)生,。
1 傳統(tǒng)溢出判斷電路的設(shè)計[1]
傳統(tǒng)溢出判斷電路的設(shè)計是建立在加法或減法運算已經(jīng)產(chǎn)生結(jié)果的基礎(chǔ)上,,如果用Overflag表示當(dāng)前的運算方式,當(dāng)Overflag取值為“1”時表示的是進行有符號數(shù)的加法或減法運算,,當(dāng)Overflag取值為“0”時表示的是進行無符號數(shù)的加法或減法運算,。用Adder表示當(dāng)前的運算方式是加法或者減法運算。當(dāng)Adder取值為“1”時表示進行加法運算,,當(dāng)Adder取值為“0”時表示進行減法運算,。用A[3]、B[3]和R[3]分別表示兩個操作數(shù)和加減法運算結(jié)果的最高位即符號位,。用Overflow表示溢出結(jié)果,,如果Overflow取值為“1”則表示產(chǎn)生了溢出;如果Overflow取值為“0”則表示沒有產(chǎn)生溢出,。如果利用Carry-Lookahead Adder[2]算法來產(chǎn)生R[3],,則結(jié)合對溢出產(chǎn)生條件的分析,可以得到溢出判斷電路圖如圖1所示,。
2 具有預(yù)判功能的改進溢出判斷電路的設(shè)計
具有預(yù)判功能的溢出判斷電路設(shè)計的原理是將Carry-Lookahead Adder[2]的算法與傳統(tǒng)溢出邏輯判斷邏輯算法相結(jié)合,。如果將可能產(chǎn)生溢出的四種運算都轉(zhuǎn)換為加法運算,,則在有可能產(chǎn)生溢出的四種運算情況下只要數(shù)值位向符號位產(chǎn)生進位或者符號位本身相加產(chǎn)生進位就可以判斷有溢出產(chǎn)生,。因此在電路實現(xiàn)上需要有兩部分功能塊,一部分是判斷當(dāng)前的運算是否為可能產(chǎn)生溢出的四種運算,,將這部分功能塊稱為初步判斷功能塊,;另一部分是判斷數(shù)值位的最高位有無向符號位產(chǎn)生進位或符號位本身相加有無進位產(chǎn)生,將這部分功能塊稱為進位判斷功能塊,。最后需要將兩部分功能塊結(jié)合在一起成為完整的溢出預(yù)判電路,。
2.2 進位判斷功能塊[2]
在對溢出現(xiàn)象進行分析的過程中發(fā)現(xiàn),可能產(chǎn)生溢出的四種情況的運算最后都可以轉(zhuǎn)換為加法運算,,具體分析如下:
正數(shù)與正數(shù)相加,原本就是加法運算,,所以毋須進行轉(zhuǎn)換,。
正數(shù)減負數(shù)相當(dāng)于正數(shù)與同負數(shù)有相同絕對取值的正數(shù)進行相加。即只要將被減數(shù)轉(zhuǎn)換成與其本身有相同絕對取值的正數(shù)即可,。
負數(shù)減正數(shù)相當(dāng)于負數(shù)與同正數(shù)有相同絕對取值的負數(shù)進行相加,。即只要將被減數(shù)轉(zhuǎn)換成與其本身有相同絕對取值的負數(shù)即可。
負數(shù)加負數(shù)本身就是加法運算,,毋須進行轉(zhuǎn)換,。
假設(shè)A為加法或減法運算中的第一個操作數(shù)(被加數(shù)或被減數(shù)),B為第二個操作數(shù)(加數(shù)或減數(shù)),,由以上分析可以發(fā)現(xiàn),,A不需要做任何變換,,而B要根據(jù)需要進行變換,變換后的數(shù)字用D進行表示,。對B進行變換的算法為:首先判斷條件“A[3]=0且B[3]=1且Adder=0”或“A[3]=1且B[3]=0且Adder=0”是否成立,,如果條件成立,則D的值等于對B做減1運算后再取反的數(shù)值,,否則D=B,。
操作數(shù)B做了變換后,A與B的運算就轉(zhuǎn)換成A與D的加法運算,,運算結(jié)果用R表示,。通過前面的分析可以發(fā)現(xiàn)在可能產(chǎn)生溢出的四種運算情況下(即:正數(shù)與正數(shù)相加、負數(shù)與負數(shù)相加,、正數(shù)與負數(shù)相減,、負數(shù)與正數(shù)相減),只要A與D的加法運算的結(jié)果中符號位的符號與操作數(shù)符號相反就標(biāo)志著產(chǎn)生了溢出,。用Ci+1表示第i位向第i+1位產(chǎn)生的進位,,則C3=1或C4=1且C3 和C4不能同時為1時標(biāo)志著溢出的產(chǎn)生。
通過對Carry-Lookahead Adder[2-3]的分析可以發(fā)現(xiàn)進位的產(chǎn)生不必等到加法運算結(jié)束,,即:
完整的電路圖如圖3所示,。
通過比較圖3與圖1的電路結(jié)構(gòu)發(fā)現(xiàn),改進的溢出判斷邏輯電路圖在結(jié)構(gòu)上要精簡許多,。
2.4 邏輯驗證
電路的功能驗證利用TSPICE實現(xiàn),,仿真得到的波形如圖4所示。在仿真波形圖中,,從上至下信號名依次為Overflag,,Adder,A[3],,A[2],,A[1],A[0],,B[3],,B[2],B[1],,B[0]和Overflow,。通過分析仿真波形圖中輸入的A、B,、Adder,、Overflag共17組驗證數(shù)據(jù)與輸出信號Overflow的關(guān)系可以證明該電路能夠正確判斷溢出的產(chǎn)生情況。
2.5 延時比較
Adder到Overflow的路徑為溢出判斷電路的關(guān)鍵路徑,,通過仿真工具TSPICE分別計算兩種電路結(jié)構(gòu)中關(guān)鍵路徑的延時,,在相同的仿真條件下,,改進溢出判斷電路中從Adder到Overflow的延時為11.697 ns,傳統(tǒng)溢出判斷電路中從Adder到Overflow的延時為12.232 ns,。
本文在傳統(tǒng)溢出判斷電路的基礎(chǔ)上,,提出一種改進的電路結(jié)構(gòu),在這種改進結(jié)構(gòu)中,,不必等到加減法運算結(jié)果的產(chǎn)生就能預(yù)先判斷有無溢出現(xiàn)象的發(fā)生,。通過仿真發(fā)現(xiàn),這種結(jié)構(gòu)在能夠?qū)崿F(xiàn)所需的邏輯功能的基礎(chǔ)上減少了電路規(guī)模,,并減少了傳輸延遲,。
參考文獻
[1] 王穎.數(shù)字芯片溢出邏輯電路的設(shè)計與仿真研究[J].微計算機信息,2010,,02(26):160-163.
[2] OMONDI A R.Computer arithematic systems-algorithms, architecture and implementation[M].Prentice-Hall,,1994.
[3] PARHAMI B.Computer arithmetic-algorithms and hardware designs[M].Oxford University Press,2000.
[4] 劉杰,,易茂祥.6加數(shù)并行加法器及擴展接口的研究[J].微電子學(xué)與計算機,,2009,12(12):27-30.