文獻標識碼: A
文章編號: 0258-7998(2012)05-0049-03
溢出現象的判斷是固定字長有符號加法運算中必須要進行的操作,傳統溢出現象的判斷要等到加法運算結果產生以后才能進行,本文電路設計能夠在加法運算開始之前通過對操作數的判斷而進行溢出預判,從而減少了整個加法/減法運算的時間。
溢出現象有可能出現在有符號數的加法或減法運算中,在進行固定字長的有符號數加法或減法運算時,如果出現以下四種情況:正數與正數相加得到負數、正數減負數得到負數、負數減正數得到正數、負數加負數得到正數,則認為有溢出現象產生。
1 傳統溢出判斷電路的設計[1]
傳統溢出判斷電路的設計是建立在加法或減法運算已經產生結果的基礎上,如果用Overflag表示當前的運算方式,當Overflag取值為“1”時表示的是進行有符號數的加法或減法運算,當Overflag取值為“0”時表示的是進行無符號數的加法或減法運算。用Adder表示當前的運算方式是加法或者減法運算。當Adder取值為“1”時表示進行加法運算,當Adder取值為“0”時表示進行減法運算。用A[3]、B[3]和R[3]分別表示兩個操作數和加減法運算結果的最高位即符號位。用Overflow表示溢出結果,如果Overflow取值為“1”則表示產生了溢出;如果Overflow取值為“0”則表示沒有產生溢出。如果利用Carry-Lookahead Adder[2]算法來產生R[3],則結合對溢出產生條件的分析,可以得到溢出判斷電路圖如圖1所示。
2 具有預判功能的改進溢出判斷電路的設計
具有預判功能的溢出判斷電路設計的原理是將Carry-Lookahead Adder[2]的算法與傳統溢出邏輯判斷邏輯算法相結合。如果將可能產生溢出的四種運算都轉換為加法運算,則在有可能產生溢出的四種運算情況下只要數值位向符號位產生進位或者符號位本身相加產生進位就可以判斷有溢出產生。因此在電路實現上需要有兩部分功能塊,一部分是判斷當前的運算是否為可能產生溢出的四種運算,將這部分功能塊稱為初步判斷功能塊;另一部分是判斷數值位的最高位有無向符號位產生進位或符號位本身相加有無進位產生,將這部分功能塊稱為進位判斷功能塊。最后需要將兩部分功能塊結合在一起成為完整的溢出預判電路。
2.2 進位判斷功能塊[2]
在對溢出現象進行分析的過程中發現,可能產生溢出的四種情況的運算最后都可以轉換為加法運算,具體分析如下:
正數與正數相加,原本就是加法運算,所以毋須進行轉換。
正數減負數相當于正數與同負數有相同絕對取值的正數進行相加。即只要將被減數轉換成與其本身有相同絕對取值的正數即可。
負數減正數相當于負數與同正數有相同絕對取值的負數進行相加。即只要將被減數轉換成與其本身有相同絕對取值的負數即可。
負數加負數本身就是加法運算,毋須進行轉換。
假設A為加法或減法運算中的第一個操作數(被加數或被減數),B為第二個操作數(加數或減數),由以上分析可以發現,A不需要做任何變換,而B要根據需要進行變換,變換后的數字用D進行表示。對B進行變換的算法為:首先判斷條件“A[3]=0且B[3]=1且Adder=0”或“A[3]=1且B[3]=0且Adder=0”是否成立,如果條件成立,則D的值等于對B做減1運算后再取反的數值,否則D=B。
操作數B做了變換后,A與B的運算就轉換成A與D的加法運算,運算結果用R表示。通過前面的分析可以發現在可能產生溢出的四種運算情況下(即:正數與正數相加、負數與負數相加、正數與負數相減、負數與正數相減),只要A與D的加法運算的結果中符號位的符號與操作數符號相反就標志著產生了溢出。用Ci+1表示第i位向第i+1位產生的進位,則C3=1或C4=1且C3 和C4不能同時為1時標志著溢出的產生。
通過對Carry-Lookahead Adder[2-3]的分析可以發現進位的產生不必等到加法運算結束,即:
完整的電路圖如圖3所示。
通過比較圖3與圖1的電路結構發現,改進的溢出判斷邏輯電路圖在結構上要精簡許多。
2.4 邏輯驗證
電路的功能驗證利用TSPICE實現,仿真得到的波形如圖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組驗證數據與輸出信號Overflow的關系可以證明該電路能夠正確判斷溢出的產生情況。
2.5 延時比較
Adder到Overflow的路徑為溢出判斷電路的關鍵路徑,通過仿真工具TSPICE分別計算兩種電路結構中關鍵路徑的延時,在相同的仿真條件下,改進溢出判斷電路中從Adder到Overflow的延時為11.697 ns,傳統溢出判斷電路中從Adder到Overflow的延時為12.232 ns。
本文在傳統溢出判斷電路的基礎上,提出一種改進的電路結構,在這種改進結構中,不必等到加減法運算結果的產生就能預先判斷有無溢出現象的發生。通過仿真發現,這種結構在能夠實現所需的邏輯功能的基礎上減少了電路規模,并減少了傳輸延遲。
參考文獻
[1] 王穎.數字芯片溢出邏輯電路的設計與仿真研究[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加數并行加法器及擴展接口的研究[J].微電子學與計算機,2009,12(12):27-30.