第六講定點運算器及浮點數運算_第1頁
第六講定點運算器及浮點數運算_第2頁
第六講定點運算器及浮點數運算_第3頁
第六講定點運算器及浮點數運算_第4頁
第六講定點運算器及浮點數運算_第5頁
已閱讀5頁,還剩56頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第六講定點運算器及浮點數運算S0S1S2S3X0Y0

參數S0,S1,S2,S3

分別控制輸入Ai

與Bi

,產生Y與X得函數。其中:Yi就是受S0,S1控制得Ai與Bi得組合函數;Xi就是受S2

,S3控制得Ai與Bi組合函數。

函數關系如表所示。Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

Yi=S0S1Ai+S0S1AiBi+S0S1AiBi?

核心部分就是由兩個半加器組成得全加器。?

由M控制第二級半加器選擇邏輯運算或算術運算(所需得低位進位Cn

)。一位ALU基本邏輯電路S0S1

Yi

S2S3

Xi

0

0

0

1

1

0

1

1Ai

AiBi

AiBi

00

0

0

1

1

0

1

11

Ai+Bi

Ai+Bi

Ai

進一步化簡:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1BiAi+S0Bi+S1BiS3AiBi+S2AiBiXiYi=

=Yi

Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i綜上所述,ALU得一位邏輯表達式為:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1Bi

Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i4位之間采用先行進位(并行進位)公式。根據Cn+i+1=Yi+XiCn+i,每一位得進位公式可遞推如下:

?

第0位向第1位得進位公式為:

Cn+1=Y0+X0Cn

(其中Cn就是向第0位(末位)得進位)

?

第1位向第2位得進位公式為:

Cn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

?

第2位向第3位得進位公式為:

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2Cn?

第3位得進位輸出(即整個4位運算進位輸出)公式為:Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn4位ALU得進位關系及邏輯電路Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn

Cn+4就是最后進位輸出。邏輯表達式表明,這就是一個先行進位邏輯。換句話說,第0位得進位輸入Cn可以直接傳送到最高位上去,因而可以實現高速運算。下圖為用上述原始推導公式實現得4位算術/邏輯運算單元(ALU)

——74181ALU從進位關系上瞧

正邏輯表示得74181

第3位得進位輸出(即整個4位運算進位輸出)公式為:Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn設G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3

則Cn+4=G+PCn

其中G稱為進位發生輸出,P稱為進位傳送輸出。在電路中多加這兩個進位輸出得目得,就是為了便于實現多片(組)ALU之間得先行進位。P與G得含義負邏輯表示得74181X0Y0X1Y1X2Y2X3Y3

2、算術邏輯運算得實現上圖中控制端M用來控制ALU進行算術運算還就是進行邏輯運算:M=0時:

M對進位信號沒有任何影響。此時Fi

不僅與本位得被操作數Yi與操作數Xi

有關,而且與向本位得進位值Cn+i

有關,因此M=0時,進行算術操作。

M=1時:

封鎖了各位得進位輸出,即Cn+i

=0,因此各位得運算結果Fi

僅與Yi

與Xi

有關,故M=1時,進行邏輯操作。下圖為工作于負邏輯與正邏輯操作方式得74181ALU方框圖。兩種操作就是等效得。?對正邏輯操作數來說:算術運算稱高電平操作;邏輯運算稱正邏輯操作

(即高電平為“1”,低電平為“0”)。?對于負邏輯操作數來說:

正好相反。大家有疑問的,可以詢問和交流可以互相討論下,但要小聲點AA+BA+B減1A加AB(A+B)加ABA減B減1AB減1A加ABA加B(A+B)加ABAB減1A加A*(A+B)加A(A+B)加AA減1AA+BAB邏輯0ABBABABA+BABBAB邏輯1A+BA+BAA減1AB減1AB減1

減1A加(A+B)AB加(A+B)A減B減1A+BA加(A+B)A加BAB加(A+B)A+BA加A*AB加AAB加AAAABA+B

邏輯1A+BBABA+BABABBA+B

邏輯0ABABALLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHH算術運算M=LCn=H邏輯M=H算術運算M=LCn=L邏輯M=H正邏輯輸入與輸出負邏輯輸入與輸出工作方式選擇輸入S3S2S1S0

(1)H=高電平,L=低電平;(2)*表示每一位均移到下一個更高位,即A*=2A。(3)算術運算操作就是用補碼表示法來表示得,其中:

“加”就是指算術加,運算時要考慮進位;符號“+”就是指“邏輯加”。(4)減法就是用補碼方法進行得,其中數得反碼就是內部產生得,而結果輸出“A減B減1”,因此做減法時需在最末位產生一個強迫進位(加1),以便產生“A減B”得結果。(5)“A=B”輸出端可指示兩個數就是否相等;3、并行加法器得進位邏輯74181ALU為4位并行加法器,組成16位得并行加法器——怎么辦?

4片(組)74181連接——怎樣連?

?組與組之間串行連接

?組與組之間并行連接組間串行進位C4=G0+P0C0C8=G1+P1C4C12=G2+P2C8C16=G3+P3C12進位關系Cn+1=Y0+X0CnCn+2=Y1+X1Cn+1=Y1+Y0X1+X0X1Cn

Cn+3=Y2+X2Cn+2=Y2+Y1X1+Y0X1X2+X0X1X2CnCn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn組內組間X0Y0X1Y1X2Y2X3Y3X0Y0X1Y1X2Y2X3Y3C4C8C4C00011G=Y3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3(2)組間并行進位——兩級先行進位得ALU由串行進位關系C8=G1+P1C4=G1+P1(G0+P0C0)=G1+G0P1+P0P1C0得:C4=G0+P0C0C8=G1+P1C4C12=G2+P2C8C16=G3+P3C12C4=G0+P0C0C12=G2+P2C8=G2+P2(G1+G0P1+P0P1Cn)=G2+G1P2+G0P1P2+P0P1P2C0C16=G3+P3C12=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3C0

=G*+P*C0其中:P*=P0P1P2P3G*=G3+G2P3+G1P1P2+G0P1P2P3根據上述公式實現邏輯電路:

X0Y0X1Y1X2Y2X3Y3

C12C8C4

X0Y0X1Y1X2Y2X3Y3

X0Y0X1Y1X2Y2X3Y3

0

X0Y0X1Y1X2Y2X3Y3

4、先行進位部件(CLA)——7418274182就是一個并行進位部件,其內部結構圖如下:其中G*稱為成組進位發生輸出,P*稱為成組進位傳送輸出。Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P0P1CnCn+z=G2+P2Cn+y=G2+G1P2+G0P1P2+P0P1P2CnCn+4=G3+P3Cn+z=G3+G2P3+G1P1P2+G0P1P2P3+P0P1P2P3Cn

=G*+P*Cn其中:P*=P0P1P2P3G*=G3+G2P3+G1P1P2+G0P1P2P3先行進位部件74182CLA所提供得進位邏輯關系如下:74181ALU設置了P與G兩個本組先行進位輸出端。如果將四片74181得P,G輸出端送入到74182先行進位部件(CLA),又可實現第二級得先行進位,即組與組之間得先行進位。例:16位字長ALU得構成G*P*?C3、C7、C11就是由74182同時形成得;?其不同點就是74182還提供大組間得進位函數G*

與大組傳遞條件P*,以便在位數更長時組成下一級先行進位鏈。由圖可知:

用若干個74181ALU位片,與配套得74182先行進位部件CLA在一起,可構成一個全字長得ALU。例:全字長得ALU得構成用兩個16位全先行進位部件級聯組成得32位ALU邏輯方框圖。十進制加法器

十進制加法器可由BCD碼(二-十進制碼)來設計,它可以在二進制加法器得基礎上加上適當得“校正”邏輯來實現。70111+6+0110131101(=D)

+011010011(=13)30011+5+010181000(=8)X+Y+C<10不調整X+Y+C>10調整故:

1、與為10~15時,加6校正;

2、與數有進位時,加6校正。與數(4位)有進位調整2800101000+9+000010013700110001(=31)+0000011000110111(=37)1、一位BCD碼行波式進位加法器一般結構:0111010101111001101111011112、n位BCD碼行波式進位加法器一般結構:浮點運算方法與浮點運算器浮點加、減法運算浮點乘、除法運算

尾數:用定點小數表示,給出有效數字得位數,決定了浮點數得表示精度;階碼:用整數形式表示,指明小數點在數據中得位置,決定了浮點數得表示范圍。機器浮點數格式:

浮點數得表示方法階符階碼數符尾數EsE1E2……EmMsM1M2……MnIEEE標準:尾數用原碼;階碼用“移碼”;基為2。浮點數得標準格式

按照IEEE754得標準,32位浮點數與64位浮點數得標準格式為:313023220SEM32位SEM63625251064位?為便于軟件移植,使用IEEE標準設有兩個浮點數x與y,它們分別為:

浮點加、減法運算

其中Ex與Ey分別為數x與y得階碼,

Mx與My為數x與y得尾數。兩浮點數進行加法與減法得運算規則就是:

x±y=(Mx2Ex-Ey±My)2EyEx<=Ey

x=2Ex·Mxy=2Ey·My完成浮點加減運算得操作過程大體分為四步:(1)0操作數得檢查;(2)比較階碼大小并完成對階;(3)尾數進行加或減運算;(4)結果規格化。(5)舍入處理。(6)溢出處理。

使二數階碼相同(即小數點位置對齊),這個過程叫作對階。

?

先求兩數階碼Ex與Ey之差,即△E=Ex-Ey

若△E=0,表示Ex=Ey

若△E>0,Ex>Ey

若△E<0,Ex<Ey通過尾數的移動來改變Ex或Ey,使其相等.

?對階原則階碼小得數向階碼大得數對齊;小階得尾數右移,每右移一位,其階碼加1(右規)。(2)對階(1)0操作數檢查例:x=201×0、1101,y=211×(-0、1010),求x+y=?解:為便于直觀了解,兩數均以補碼表示,階碼、尾數均采用雙符號位。

[x]補=0001,00、1101[y]補=0011,11、0110[△E]補=[Ex]補-[Ey]補=0001+1101=1110△E=-2,表示Ex比Ey小2,因此將x得尾數右移兩位、

右移一位,得[x]補=0010,00、0110

再右移一位,得[x]補=0011,00、0011

至此,△E=0,對階完畢、

尾數求與方法與定點加減法運算完全一樣。對階完畢可得:[x]補=0011,00、0011[y]補=0011,11、0110

對尾數求與:00、0011+11、011011、1001即得:[x+y]補=0011,11、1001(3)尾數求與運算(4)結果規格化

求與之后得到得數可能不就是規格化了得數,為了增加有效數字得位數,提高運算精度,必須將求與得結果規格化、①規格化得定義:(二進制)對正數:S=00、1×××…×對負數:S=11、0×××…×采用雙符號位得補碼:采用原碼:正數:S=0、1×××…×

負數:S=1、1×××…×

若不就是規格化得數,需要尾數向左移位,以實現規格化得過程,我們稱其為向左規格化。②向左規格化

前例中,0011,11、1001不就是規格化數,因而需要左規,即左移一位,階碼減1,得:[x+y]補=0010,11、0010③向右規格化

浮點加減運算時,尾數求與得結果也可能得到:

01、×××…×或10、×××…×,

即兩符號位不等,即結果得絕對值大于1。向左破壞了規格化。此時,將尾數運算得結果右移一位,階碼加1,稱為向右規格化。例:兩浮點數x=0、1101210,y=(0、1011)201,求x+y。解:[x]補=0010,00、1101[y]補=0001,00、1011

對階:[△E]補=[Ex]補-[Ey]補=0010+1111=0001y向x對齊,將y得尾數右移一位,階碼加1。

[y]補=0010,00、0101

求與:00、1101+00、010101、0010[x+y]補=0010,01、0010右歸:運算結果兩符號位不同,其絕對值大于1,右歸。

[x+y]補=0011,00、1001

在對階或向右規格化時,尾數要向右移位,這樣,被右移得尾數得低位部分會被丟掉,從而造成一定誤差,因此要進行舍入處理。

?

簡單得舍入方法有兩種:①“0舍1入”法即如果右移時被丟掉數位得最高位為0則舍去,反之則將尾數得末位加“1”。②“恒置1”法即只要數位被移掉,就在尾數得末位恒置“1”。從概率上來說,丟掉得0與1各為1/2。(5)舍入處理

?IEEE754標準中,舍入處理提供了四種可選方法:(6)溢出處理

與定點加減法一樣,浮點加減運算最后一步也需判溢出。在浮點規格化中已指出,當尾數之與(差)出現01、××…×或10、××…×時,并不表示溢出,只有將此數右規后,再根據階碼來判斷浮點運算結果就是否溢出。

若機器數為補碼,尾數為規格化形式,并假設階符取2位,階碼取7位、數符取2位,尾數取n位,則它們能表示得補碼在數軸上得表示范圍如圖所示。正負

圖中A,B,a,b分別對應最小負數、最大正數、最大負數與最小正數。它們所對應得真值分別就是:

A最小負數2+127

(-1)B最大正數2+127

(1-2-n)a最大負數2-128

(-2-1-2-n)b最小正數2-128

2-1正負圖中a,b之間得陰影部分,對應階碼小于128得情況,叫做浮點數得下溢。下溢時、浮點數值趨于零,故機器不做溢出處理,僅把它作為機器零。圖中得A、B兩側陰影部分,對應階碼大于127得情況,叫做浮點數得上溢。此刻,浮點數真正溢出,機器需停止運算,作溢出中斷處理。一般說浮點溢出,均就是指上溢。可見,浮點機得溢出與否可由階碼得符號決定:階碼[j]補=01,

為上溢,機器停止運算,做中斷處理;階碼[j]補=10,

為下溢,按機器零處理。例:若某次加法操作得結果為[X+Y]補=11、010,00、0000110111則應對其進行向左規格化操作:尾數為:00、1101110000,階碼減4:11.010+11.100[-4]補

10.110例:若某次加法操作得結果為[X+Y]補=00、111,10、1011100111則應對其進行向右規格化操作:尾數為:11、0101110011,階碼加1:01、000

階碼超出了它所能表示得最大正數(+7),表明本次浮點運算產生了溢出。

階碼超出了它所能表示得最小負數(-8),表明本次浮點運算產生了溢出。

在加、減運算過程中要檢查就是否產生了溢出:若階碼正常,加減運算正常結束;若階碼溢出,則要進行相應得處理。階碼上溢——超過了階碼可能表示得最大值得正指數值,一般將其認為就是+∞與-∞。階碼下溢——超過了階碼可能表示得最小值得負指數值,一般將其認為就是0。?

浮點數得溢出就是以其階碼溢出表現出來得?

對尾數得溢出也需要處理(上溢—右歸,下溢—舍入)。小結:例設x=2010

0、11011011,y=2100

(-0、10101100),求x+y。解:階碼采用雙符號位,尾數采用單符號位,則它們得浮點表示分別為[x]浮=00010,

0、11011011

[y]浮=00100,

1、01010100(1)求階差并對階△E=Ex-

Ey=[Ex]補+[-Ey]補=00010+11100=11110[x]浮=00100,0、00110110(11)其中(11)表示Mx右移2位后移出得最低兩位數。即△E為-2,x得階碼小,應使Mx右移兩位,Ex加2,(2)尾數求與(4)舍入處理采用0舍1入法處理,則有:1、00010101+11、000101100、00110110(11)+1、01010100

1、10001010(11)(3)規格化處理尾數運算結果得符號位與最高數值位為同值,應執行左規處理,結果為1、00010101(10),階碼為00011。(5)判斷溢出階碼符號位為00,不溢出,故得最終結果為

x+y=2011×(-0、11101010)例兩浮點數x=201×0、1101,y=211×(-0、1010)。假設尾數在計算機中以補碼表示,可存儲4位尾數,2位保護位,階碼以原碼表示,求x+y。解:將x,y轉換成浮點數據格式

[x]浮

=0001,00、1101 [y]浮

=0011,11、0110步驟1:對階,階差為11-01=10,即2,因此將x得尾數右移兩位,得

[x]浮

=0011,00、001101步驟2:對尾數求與,得: [x+y]浮

=0011,11、100101步驟3:由于符號位與第一位數相等,不就是規格化數,向左規格化,得

[x+y]浮

=0010,11、001010步驟4:截去。

[x+y]浮

=0010,11、0010步驟5:數據無溢出,因此結果為

x+y=210×(-0、1110)浮點運算電路浮點加法器原理框圖MESMES小ALU大ALU控制右移左移或右移舍入部件階碼差加1或減1MES111000

浮點乘、除法運算1、浮點乘法、除法運算規則

設有兩個浮點數x與y:x=2Ex·Mx

y=2Ey·My浮點乘法運算得規則就是:x

y=2(Ex+Ey)·(Mx

My)

即:乘積得尾數就是相乘兩數得尾數之積;

乘積得階碼就是相乘兩數得階碼之與。浮點除法運算得規則就是:x÷y=2(Ex-Ey)·(Mx÷My)

即:商得尾數就是相除兩數得尾數之商;

商得階碼就是相除兩數得階碼之差。2、浮點乘、除法運算步驟浮點數得乘除運算大體分為四步:(1)0操作數檢查;(2)階碼加/減操作;(3)尾數乘/除操作;(4)結果規格化及舍入處理。(2)浮點數得階碼運算

?

對階碼得運算有+1、-1、兩階碼求與、兩階碼求差四種,

運算時還必須檢查結果就是否溢出。

?在計算機中,階碼通常用補碼或移碼形式表示。①移碼得運算規則與判定溢出得方法移碼得定義為[x]移=2n+x-2n

≤x<2n[x]移+[y]移=2n+x+2n+y=2n+[x+y]移按此定義,則有=2n+(2n+(x+y))[x+y]移=-2n+[x]移+[y]移

考慮到移碼與補碼得關系:對同一個數值,其數值位完全相同,而符號位正好完全相反。

[y]補得定義為[y]補=2n+1+y則求階碼與用如下方式完成:=2n+1+(2n+(x+y))[x]移+[y]補=2n+x+2n+1+y即:[x+y]移=[x]移+[y]補

(mod2n+1)同理:[x-y]移=[x]移+[-y]補

(mod2n+1)②混合使用移碼與補碼

使用雙符號位得階碼加法器,并規定移碼得第二個符號位,即最高符號位恒用0參加加減運算,則溢出條件就是結果得最高符號位為1:

?當低位符號位為0時,(10)表明結果上溢,

?當低位符號位為1時,(11)表明結果下溢。

?當最高符號位為0時,表明沒有溢出:

低位符號位為1,(01)表明結果為正;

為0,(00)表明結果為負。③階碼運算結果溢出處理例:x=+011,y=+110,求[x+y]移與[x-y]移,并判斷就是否溢出。解:階碼取3位(不含符號位),其對應得真值范圍就是-8~+7[x]移=01011,[y]補=00110,[-y]補=11010[x+y]移=[x]移+[y]補=[x-y]移=[x]移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論