計算機(jī)組成原理 第二章 數(shù)據(jù)的運(yùn)算2_第1頁
計算機(jī)組成原理 第二章 數(shù)據(jù)的運(yùn)算2_第2頁
計算機(jī)組成原理 第二章 數(shù)據(jù)的運(yùn)算2_第3頁
計算機(jī)組成原理 第二章 數(shù)據(jù)的運(yùn)算2_第4頁
計算機(jī)組成原理 第二章 數(shù)據(jù)的運(yùn)算2_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

tl

(二)定點數(shù)的表示和運(yùn)算

考綱要求的內(nèi)容如下:

lo定點數(shù)的表示

無符號數(shù)的表示;有符號數(shù)的表示。

2o定點數(shù)的運(yùn)算

定點數(shù)的位移運(yùn)算;

原碼、補(bǔ)碼定點數(shù)的加/減運(yùn)算;

定點數(shù)的乘/除運(yùn)算;

溢出概念和判別方法。

定點數(shù)的移位運(yùn)算

移位運(yùn)算包括算術(shù)移位和邏輯移位。

算術(shù)移位時,最高符號位不變;

邏輯移位時,最高符號位可變。

lo機(jī)器數(shù)為正時,不論左移右移,用0添補(bǔ)。

2O負(fù)數(shù)的原碼,不論左移右移,空位用0添補(bǔ)。

3o負(fù)數(shù)的反碼,不論左移右移,空位用1添補(bǔ)。

4。負(fù)數(shù)的補(bǔ)碼,左移時,空位用0添補(bǔ);

負(fù)數(shù)的補(bǔ)碼,右移時,空位用1添補(bǔ)。

邏輯移位時:

左移位時,低位補(bǔ)0,高位移丟;

右移位時,高位補(bǔ)0,低位移丟;

游圉規(guī)阻屈原囹

定點運(yùn)算器定點加減法

補(bǔ)碼的加法運(yùn)算

任意兩個數(shù)的補(bǔ)碼之和,等于該兩數(shù)

和的補(bǔ)碼。

X補(bǔ)+[丫]補(bǔ)=[X+Y]補(bǔ)

兩個數(shù)不管正負(fù),均用補(bǔ)碼表示,符

號位應(yīng)當(dāng)作為數(shù)值位參加運(yùn)算,符號位相

加所產(chǎn)生的進(jìn)位要丟掉,結(jié)果為補(bǔ)碼。

加法公式的證明

現(xiàn)分四種情況來證明。假設(shè)采用定點小數(shù)

表示,因此證明的先決條件是

Ix|<1,IyI<1,Ix+yI<lo

(1)x>0,y>0,貝I」y>0o

(2)x>0,y<0,貝I」x+y>0或x+y<0o

⑶xvO,y>0,貝llx+y>0或x+y<0o

(4)x<0,y<0,貝Ux+y<0o

定點運(yùn)算器-----溢出及判別

溢出及其判別方法:

在計算機(jī)中數(shù)的表示范圍是有限的,若兩

數(shù)進(jìn)行加減運(yùn)算的結(jié)果超出了給定的取值范圍,

就稱為溢出。一旦出現(xiàn)溢出,必須及時處理,

否則會出現(xiàn)錯誤。

可以采用兩種方法來判別是否產(chǎn)生溢出:

①單符號位法

②雙符號位法

定點運(yùn)算器------溢出及判別

采用單符號位的判斷方法

兩異號數(shù)相加或兩同號數(shù)相減決不

會產(chǎn)生溢出,僅當(dāng)兩同號數(shù)相加或兩異

號數(shù)相減時才有可能產(chǎn)生溢出。

兩同號數(shù)相加時,如果結(jié)果的符號

與參與運(yùn)算的操作數(shù)符號相反,則表明

有溢出;兩異號數(shù)相減舟,如果結(jié)巢的

符號與被減數(shù)的符號相反,則表明有溢

出。

^^湖S3感圓國

定點運(yùn)算器-----溢出及判別

利用進(jìn)位值的判斷方法

兩補(bǔ)碼數(shù)進(jìn)行加減運(yùn)算時,若最高數(shù)值

位產(chǎn)生向符號的進(jìn)位而符號位不產(chǎn)生進(jìn)位

時,發(fā)生正溢出,若最高數(shù)值位無進(jìn)位而

符號位有進(jìn)位時,發(fā)生負(fù)溢出

溢出判別的邏輯表達(dá)式為:

V=Cf十c0

在電路上用一個異或門實現(xiàn)。

定點運(yùn)算器------溢出及判別

例:X=-0,100Y=-0,101,求X+Y=?

解:

[X]補(bǔ)=1.100

+[Y]補(bǔ)=1.0)1__________

111

「丟到「

兩負(fù)數(shù)相加,結(jié)果應(yīng)為負(fù)數(shù),但運(yùn)

算結(jié)果為正數(shù),表明有溢出發(fā)生

定點運(yùn)算器-----溢出及判別

例:X=100,Y=-110,求X-Y=?

解:

[X]補(bǔ)=0100

+[-Y]補(bǔ)=0)10___________

1010

一個正數(shù)減去一個負(fù)數(shù),結(jié)果為正數(shù),但計算

結(jié)果為負(fù)數(shù),表明有溢出發(fā)生,出錯

定點運(yùn)算器-----溢出及判別

采用雙符號位的判斷方法

每個操作數(shù)的補(bǔ)碼符號用兩個二進(jìn)制數(shù)表示,

稱為變形補(bǔ)碼,用“00”表示正數(shù),“11”表示負(fù)

數(shù),左邊第一位叫第一符號位,右邊第一位稱為

第二符號位,兩個符號位同時參加運(yùn)算,如果運(yùn)

算結(jié)果兩符號位相同,則沒有溢出發(fā)生。如果運(yùn)

算結(jié)果兩符號位不同,則表明產(chǎn)生了溢出。“10”

表示負(fù)溢出,說明運(yùn)算結(jié)果為負(fù)數(shù),"01”表示

正溢出,說明運(yùn)算結(jié)果為正數(shù)。

溢出判別的邏輯表達(dá)式為:

f十SR

溢出及判別舉例

[例]x=+0.1100,y+0.1000,求x+y。

[解:]

[X]補(bǔ)=00.1100,[月補(bǔ)=00.1000

[X]補(bǔ)00.1100

+[月補(bǔ)00.1000

01.0100

兩個符號位出現(xiàn)“01\表示已溢出,即結(jié)果

大于,1。

溢出及判別舉例

[例]x=—0.1100,y=-0,1000,求x+y。

[解:]

補(bǔ)=

[*]11.0100,[y]#=11.1000

[*]補(bǔ)11.0100

+|>]補(bǔ)11.1000

10.1100

兩個符號位出現(xiàn)“10、表示已溢出,即結(jié)果小

于一1。

(四)算術(shù)邏輯單元ALU

考綱要求:

lo串行加法器和并行加法器

2o算術(shù)邏輯單元ALU的功能和機(jī)構(gòu)

根據(jù)真值表,可以寫一位全加器的真值表

出一位全加器的邏輯

方程:輸入輸Hi

AiB.C.s.Cj+]

Sj=Aj?Bj?Cj00000

00110

q+1=AjBj+BjCj+CjAj

01010

按此表達(dá)式組成的一位01101

10010

全加器如下圖所示:10101

11001

11111

基本的二進(jìn)制加法/減法器

一位全加器的邏輯實現(xiàn)

Sj=AjaBj十Ci的推導(dǎo)顯而易見。

下面推導(dǎo)Ci+i=AiBi+BiCi+CjAi

將用到如下定律:

1。摩根定律:ABC=A+B+C

A+B+C=ABC

2o吸收律:_

A+A-C=A+C

^^就S3房房混

串行進(jìn)位的補(bǔ)碼加法/減法器

P35圖2.2的串行進(jìn)位的補(bǔ)碼加法/減法器,

講清楚..\?.\第2章圖形\2.2.swf

①為什么叫串行進(jìn)位

a3a2a1a。

+b3b2b]b0

-S3S2SlS0

②如何完成減法運(yùn)算

A-B運(yùn)算轉(zhuǎn)化成[A]補(bǔ)+[-B]補(bǔ)運(yùn)算,

求補(bǔ)過程由B變反+1來實現(xiàn)。

游園儂811就屬超

串行進(jìn)位的補(bǔ)碼加法/減法器

③如何進(jìn)行溢出檢測處理?請思考!

④延遲時間的計算

考慮溢出:ta=n-2T+9T

不考慮溢出時ta=(n-1)-2T+9T

2T即每一位的進(jìn)位延遲

9T包括:溢出的異或門為3T,最下的一

排異或門為3T;FA內(nèi)部Aj和房輸入的異或

門為3T,故共9T。

十進(jìn)制加法器

主要講清楚P36圖2.3的兩個問題:

①為什么要進(jìn)行加6調(diào)整。

在十進(jìn)制運(yùn)算時,當(dāng)相加兩數(shù)之和大于9時,

便產(chǎn)生進(jìn)位。可是四位二進(jìn)制數(shù)能表示的范

圍是0—15。兩者相差為6。

因此,當(dāng)和數(shù)大于9時,必須對和數(shù)進(jìn)行加6

修正。

②如何實現(xiàn)加6調(diào)整。

I

另三L若

二對

寧R

s

三s

i

一g

S在、

a

(

E

雕二

米U

口二三

0占

+

定點運(yùn)算器——定點原碼一位乘法

定點原碼一位乘法

設(shè)被乘數(shù)[X]原=XfXn_]Xn_2........XjX。

乘數(shù)[丫]原=丫£丫「丫廣2…丫1丫0

乘積[X]原=ZfZzn-Z2n.2.........

運(yùn)算原則:同號相乘為正,異號相乘為負(fù),

符號可按:異或運(yùn)算得到,數(shù)值部分的運(yùn)算方法

與普通的十進(jìn)制乘數(shù)相類似。不論真值的正負(fù),

尾數(shù)都用正數(shù)參加運(yùn)算。

N尸=

KTf企Yf

瘠僧如國就愿超

定點運(yùn)算器--定J一位乘法

手工算法

?兩個n位數(shù)相乘,其積

為2n位,則需要2n位長

0.1101

的加法器,這不適用于

X0.1011

1101定點機(jī)的形式。

1101

0000

1101?機(jī)器一次只能進(jìn)行兩

個數(shù)的相加,不能進(jìn)行

0.10001111

多個數(shù)據(jù)的加法。

定點運(yùn)算器——定點原碼一位乘法

定點原碼一位乘法

運(yùn)算法則:

計算機(jī)中執(zhí)行乘法時,積的符號位由被乘

數(shù)和乘數(shù)的符號位通過一個異或門實現(xiàn);

數(shù)值部分的運(yùn)算規(guī)則是:從最低位丫0開始,

當(dāng)乘數(shù)Yi為1時,將上次部分積加上被乘數(shù)的絕對

值,然后右移一位,得到新的部分積;當(dāng)Yj為。時,

將部分直接右移一位,得到新的部分積。重復(fù)

“加一右移”操作N次,可得到最后的乘積。

定點運(yùn)算器——定點原碼一位乘法

例:X=0.1101,Y=0.1011,求X*Y=?

解:部分積乘數(shù)說明

00.0000Yfl011Zo=O

+00.1101Y0=l,+X

00.1101

一00.01101Yfl01右移,得4

+00.1101丫1=1,+x

01.0011

右移,得馬

f00.100111Yf10丫

+00.00002=0,+tf

00.1001

右移,得Z3

f00.0100111Yf1

+00.1101丫3=1,+X

01.0001

f00.10001111Yf右移,得Z4=X*Y

定點運(yùn)算器—定點原碼一位乘法

結(jié)果:

X*Y=0.10001111

定點運(yùn)算器——定點原碼一位乘法

原碼一位乘法的邏輯電路圖

圖2.5原碼一位乘法邏輯結(jié)構(gòu)原理圖

定點運(yùn)算器——定點原碼一位乘法

R0存放部分積,R2存放被乘數(shù),R1存放乘數(shù)。

一、Ro清零,R2存放被乘數(shù),R1存放乘數(shù)。乘法開始時,

“啟動”信號時控制Cx置1,于是開啟時序脈沖T,

當(dāng)乘數(shù)寄存其Ri最末位為“1”時,部分積Z和

被乘數(shù)X在加法器中相加,其結(jié)果輸出至R0的輸入端o

一旦打入控制脈沖T至4來,控制信號LDR°使部分積

右移1位,與此同時,乘數(shù)寄存其R1也在控制信號L

DR1作用下右移一位,且計數(shù)器I記數(shù)一次,

二、上述步驟重復(fù)執(zhí)行N次

三、當(dāng)計數(shù)器I=n時,計數(shù)器I的溢出信號使控制觸法

器Cx置0,關(guān)閉時序脈沖T,乘法宣告結(jié)束。

瘠飄輟國就愿超

定點運(yùn)算器——一定點原碼一位乘法

原碼算法存在的缺點:

一是符號位需要單獨運(yùn)算,最后給

出運(yùn)算結(jié)果的正確符號;

二是對于采用補(bǔ)碼存儲的數(shù),從存儲

器中取出的是操作數(shù)的補(bǔ)碼,需先將其

轉(zhuǎn)換成原碼,這樣很不方便,而且影響

速度。

定點運(yùn)算器——定點補(bǔ)碼一位乘法

定點一位補(bǔ)碼乘法:

補(bǔ)碼乘法的特點是乘數(shù)、被乘數(shù)用補(bǔ)碼表

示,符號位參加運(yùn)算,希望得到的結(jié)果就

是乘積的補(bǔ)碼,符號位在運(yùn)算中形成。但是

與補(bǔ)碼加減法不同,兩數(shù)的補(bǔ)碼如果直接相

乘,結(jié)果不是乘積的補(bǔ)碼。

設(shè)被乘數(shù)[X]補(bǔ)=x°.X1X2X3……XR和

乘數(shù)[丫]補(bǔ)=丫0.Y]丫2Yn均為住意

符號,則有8碼乘法登式,這就是有名的布

斯公式。

定點運(yùn)算器——定點補(bǔ)碼一位乘法

[X*Y]補(bǔ)

二兇補(bǔ)*丫

n

=兇補(bǔ)[地+丫12-1+丫2*2-2+...+Yn2-]

=[X]補(bǔ)[-Ys+(Yi-Y[2T)+(丫22工丫22-2)+…+(丫>小1)-丫“2?%

=[X]補(bǔ)[(丫1-丫。+(丫2-丫1)2-1+...+(丫廣丫『1)2"1)+(0-丫/2力

=[X]補(bǔ)(Yi-Ys)+2」([X]補(bǔ)(丫2-丫1)+2-1([刈補(bǔ)(丫3-丫2)...+2-1([刈補(bǔ)

(Yn-YQ+2T(兇補(bǔ)(Yn+1-Yn)))...))(Yn+1=0)

n_.

z

=[x]?x(r.+1-r)2-

i=0

定點運(yùn)算器一一定點補(bǔ)碼一位乘法

遞推公式為:

[P。]補(bǔ)=。

[Pl]#="(IP。]補(bǔ)+(Y用-丫口)兇補(bǔ))

(間補(bǔ)兇補(bǔ))

[P2]#=2T+(Yn-Yn-1)

???

舊]補(bǔ)="([PH補(bǔ)+(丫n-i+2-^n-i+l)[X]補(bǔ))

???

補(bǔ)丫兇補(bǔ))

[Pn]#=2T([P=]+(Y2-1)

補(bǔ)兇補(bǔ)補(bǔ)

[Pn+1]#=[Pn]+(Y1-YS)=[X*Y]

游園就SU屈原囹

定點運(yùn)算器—定點補(bǔ)碼一位乘法

補(bǔ)碼一位乘法的運(yùn)算規(guī)則如下(開始時ya=0);

(1)如果丫口=yn+1,部分積[zj加0,再右移1位

(2)如果丫0日二01,部分積加[x]補(bǔ),再右移1位

(3)如果yjn+1=1°,部分積加[—x]補(bǔ),再右移1位

這樣重復(fù)n+1步,最后一步不移位。

定點運(yùn)算器——定點補(bǔ)碼一位乘法

例:[X]補(bǔ)=0.1101,[Y]補(bǔ)=0.1011,求X*Y二?

解:部分積乘數(shù)說明

00.00000.10110Y?+1=O「

+11.00CCYnYn+l=10,加[-X]補(bǔ)

11.0011

一11,10011.01011右移一位

匕丫用=11,加0

+010.000o0

±■

fX1o

+■1o110101右移一位

■±YnYn+i=01,加[X]補(bǔ)

00.1001

-00.0100111010右移一位

YnYn+i=10,力M-X]補(bǔ)

+111.0o01111

X■

fx1iO1

+■l1O1111。1右移一位

■YnYn+l=0l,加兇補(bǔ)

00.1000111101最后一次不移位

定點運(yùn)算器----定點補(bǔ)碼一位乘法

結(jié)果:

[X*Y]補(bǔ)=0.10001111

游困的山就匾滔

定點運(yùn)算器定點補(bǔ)碼一位乘法

被乘數(shù)”

圖2.7補(bǔ)碼一位乘法邏輯原理圖

定點運(yùn)算器定點補(bǔ)碼一位乘法

0被乘數(shù)的符號X0和乘數(shù)的符號Y0都參加運(yùn)算。

0乘數(shù)寄存器R1有附加位Yn+1,其初始狀態(tài)為

“0”。當(dāng)乘數(shù)和部分積每次右移時,部分積最低為移至R

1的首位位置,故R1必須是具有右移功能的寄存器。

0被乘數(shù)寄存器R2的每一位用原碼或反碼經(jīng)多路開關(guān)傳

送到加法器對應(yīng)位的一個輸入端,而開關(guān)的控制信號由Y口

丫一1的輸出譯碼器產(chǎn)生。當(dāng)丫「丫11+1=01時,送[X]

補(bǔ);當(dāng)YnYn+1=10時,送[-X]補(bǔ),即送R2的反

碼且在加法器最末位加上“1”。

0R0保存部分積,它也是具有右移功能的移位寄存器,

其符號位與加法器符號位始終一致。

當(dāng)計數(shù)器i=n+1時,封鎖LDR1和LDR0控制信號,

澇僧豳步不移位。

定點運(yùn)算器原碼并行乘法

前面講到的硬件

乘法器是常采用

“串行移位”和

“并行加法”相

結(jié)合的方法,雖

然所需器件不多,

但速度太慢,隨

著大規(guī)律集成電

路的高速發(fā)展,

高速的單元陣列

乘法器應(yīng)運(yùn)而生。

L不帶符號位的

陣列乘法器

瘠飄輟國就愿超

定點運(yùn)算器——一原碼并行乘法

[例]已知兩個不帶符號的二進(jìn)制整數(shù)A

=11011,5=10101,用原碼并行乘法求

4即值。(參見P39圖2.5)

第2章圖形\22swf

[110I1=A&7io)

X1011O01l1=B(21io)

4

ooOo

111I

Oo0uAo

十X11o1X1

1000110111=P

定點運(yùn)算器原碼并行乘法

①陣列乘法器之所以快速,因為陣列當(dāng)中的行加

法器不是串行進(jìn)位,進(jìn)位位移到了下一行運(yùn)算,

因而提高了運(yùn)算速度,但最后一行是行波進(jìn)位。

②實現(xiàn)n位xn時,要n?(n-1)個全加器和ri"與"

門。

③延遲時間:

tm=Ta+[(n-l)+(n-l)]XTf=(4n-2)T

其中丁己對應(yīng)圖2.8的上半部“與”門延遲時間

2TO

(n-1)對應(yīng)斜線的FA進(jìn)行延遲,單個為2T。

(n-1)對應(yīng)虛線框內(nèi)的行波進(jìn)位延遲。

定點運(yùn)算器——一原碼并行乘法

2,帶符號位的陣列乘法器

①對2求補(bǔ)器的電路圖(教材P40圖2.6)

..\?.\第2章圖形\23swf

E=l,對輸入的數(shù)求補(bǔ);

E=0,不求補(bǔ),輸出等于輸入。

求補(bǔ)的方法是按位掃描技術(shù)。

②帶求補(bǔ)電路的陣列乘法器

(教材P41圖2.7)

?.\..\第2章圖形\24swf

定點運(yùn)算器——一原碼并行乘法

[例]設(shè)X=+15,y=—13,用帶求補(bǔ)器的原碼陣

列乘法器求出乘積木?y=?

[解:]

設(shè)最高位為符號位,則輸入數(shù)據(jù)為

[*]原-01111[力原=11101

符號位單獨考慮,算前求補(bǔ)級后

|x|=1111,|y|=1101

1111

乂1101符號位運(yùn)算:0+1=1

1111

1111

+1111__________

11l:ll:l1:1011

定點運(yùn)算器——一原碼并行乘法

算后經(jīng)求補(bǔ)級輸出并加上乘積符號位1,則

原碼乘積值為111000011。

換算成二進(jìn)制數(shù)真值是

x?y=(—11000011)2=(-195)io

十進(jìn)制數(shù)驗證:xXy=15義(-13)

=—195相等。

定點運(yùn)算器補(bǔ)碼并行乘法

補(bǔ)碼乘法因符號位參與運(yùn)算,可以完成補(bǔ)碼

數(shù)的“直接”乘法,而不需要求補(bǔ)級。這種直接

的方法排除了較慢的對2求補(bǔ)操作,因而大大加

速了乘法過程。

常規(guī)的一位全加器可假定它的3個輸入和

2個輸出都是正權(quán)。這種加法器通過把正權(quán)或

負(fù)權(quán)加到輸入/輸出端,可以歸納出四類加法

定點運(yùn)算器補(bǔ)碼并行乘法

[例20]設(shè)⑷補(bǔ)=(01101)〃網(wǎng)補(bǔ)=(11011)〃求[/X司補(bǔ)=?

[解:]

(0)1101=+13

⑴1011O11=-5

(0)1o1

(0)11O

(0)000

(0)1101

Q__aiwIQ1W

11

0(1)0111

1165

(1)10111=

驗證:

-1X27+OX26+1X25+1X24+1X23+

1X22+1X21+1X2°

=—128+(32+16+8+4+2+1)

=—65

定點運(yùn)算器——一補(bǔ)碼并行乘法

補(bǔ)碼陣列乘法器參見P44圖2.8

1:\第2章圖形形5swf

在/X立乘/X立的一般情況下,該乘法器需要(〃

—2尸個0類全加器,(〃一2)個1類全加

器,(2/7—3)個2類全加器,1個3類全加器,

總共是"/7—1)個全加器。故所需的總乘

法時間是:

Tp=Ta+2(n-l)Tf=2T+(2n-2)2T=(4n-2)T

定點運(yùn)算器一定點原碼一位除法

定點原碼一位除法

在定點計算機(jī)中,完成兩個原碼表示的數(shù)相除時,

商的符號由兩數(shù)的符號位按位異或得到,而商的數(shù)值

部分則是兩個正數(shù)相除得到。

設(shè)

被除數(shù)[X].=XfX1X2...Xn

除數(shù)[丫]原=丫「丫1丫2..工

商9]原=(X—f).(X1X2...Xn/Y1Y2...Yn)

定點除法一一定點原碼一位除法

計算機(jī)中執(zhí)行除法時,商的符號位由

被除數(shù)和除數(shù)的符號位通過一個半加器實

現(xiàn),對于數(shù)值部分,由于定點數(shù)的絕對值

小于1,如果被除數(shù)大于或等于除數(shù),則商

就大于或等于1,因而會產(chǎn)生溢出,這是不

允許的。因此在執(zhí)行除法以前,先要判別

是否溢出,不溢出時才執(zhí)行除法運(yùn)算。判

別溢出的方法是被除數(shù)減去除數(shù),若差為

正,就表示溢出。

原碼一位除法一加減交替法

加減交替法的規(guī)則:

首先作X-Y,余數(shù)為正,表明產(chǎn)生溢出,應(yīng)

終止除法運(yùn)算;余數(shù)為負(fù),上商為0(作為商的

符號位),然后重復(fù)下述操作n次,可得商的Mi

數(shù)值

余數(shù)為正時,商為1,余數(shù)左移一位,減除數(shù);

余數(shù)為負(fù)時,商為0,余數(shù)左移一位,加除數(shù)。

由于運(yùn)算中余數(shù)共左移了n次,相當(dāng)于乘2%

故最后得余數(shù)應(yīng)乘上25才是真正的正確余數(shù)。

原碼一位除法一加減交替法

解:兇原=兇補(bǔ)=X=0.1001,[Y]補(bǔ)=0?1011,[-丫]補(bǔ)=1.0101

被除數(shù)X/余數(shù)r商數(shù)q說明

00.1001

+[-丫]補(bǔ)11.0101X減Y

11.1110余數(shù)s為負(fù)

+[丫]補(bǔ)”11.11000商0,r粕q左移一位

00.1011加Y

00.0111余數(shù)口為正

呼l,r和q左移一位

+『丫]補(bǔ)-00.11100.1

11.0101

00.0011余數(shù)上為正

國和左移一位

+[-丫]補(bǔ)-00.01100.11yq

11.0101

11.1011余數(shù)口為負(fù)

+[丫]補(bǔ)*11,01100.110冏0,屈lq左移一位

00.1011加Y

00.0001余數(shù)Q為正

瘠飄輟國就向超0.1101商1,僅q左移一位

原碼一位除法_加減交替法

?結(jié)果:

Q=0.1101

R=2-4*0,0001

原碼一位除法_加減交替法

被除效力余效r寄存器

,?n

際/寄N湍

Ro----Riq「--《—一

LDR0

LDR1

計數(shù)加

R2

除數(shù)y寄存器

錯題

原碼一位除法一加減交替法

Ri寄存器為n位,是雙向移位寄存器,琮為雙向移位寄

存器。

除法開始前R1可存放被除數(shù)的低n位,R。保存被除數(shù)

或者余數(shù)。

在進(jìn)商左移的過程中,被除數(shù)(余數(shù))的低位部分

由Ri串行移至R。。經(jīng)n+1步后,求得n+1位商。

每次進(jìn)商置于用的最末位,由加法器符號位Ef來

設(shè)置,

運(yùn)算結(jié)束后凡存放n位的商,琮中存放余數(shù)。

補(bǔ)碼一位除法_加減交替法

補(bǔ)碼加減交替除法的算法規(guī)則如下:

(1)被除數(shù)與除數(shù)同號,被除數(shù)減去除數(shù);被除數(shù)

與除數(shù)異號,被除數(shù)加除數(shù);

(2)余數(shù)和除數(shù)同號,商上1,余數(shù)左移一位,下

次減除數(shù);當(dāng)余數(shù)和除數(shù)異號,商上0,余數(shù)左移

一位,下次加除數(shù)。

(3)重復(fù)步驟(2),包括符號位在內(nèi),共做n+1步。

為了統(tǒng)一并簡化控制線路,一開始上一次假商,

如果果]補(bǔ)和[y]補(bǔ)同號,假商上1,正好控制下一次

做減法;如果[x]補(bǔ)和[y]補(bǔ)異號,假商上0,正好控

制下一次做加法。

補(bǔ)碼一位除法_加減交替法

商的校正

在沒有特殊精度要求的情況下,一般就采用商的未

位“恒置「的方式進(jìn)行舍入,這樣簡單,便于實現(xiàn)。

如果要提高精度要求,可采用如下校正方法對商進(jìn)

行處理:

(1)剛好解除盡時,如果除數(shù)為正,商不必校正;

如果除數(shù)為負(fù),則商加2-((最低位加1)

(2)不能除盡時,如果商為正,則不必校正;如

果商為負(fù),則商加25。

補(bǔ)碼一位除法_加減交替法

?補(bǔ)碼一位除法的流程圖

圖2.13補(bǔ)碼加減交替除法算法流程圖

補(bǔ)碼一位除法一加減交管法

例:X=0.1001,Y=0.1011,求[X/Y]補(bǔ)

解:

兇補(bǔ)=0.1001

[Y]#=0.1011

[-Y]補(bǔ)=1.0101

補(bǔ)碼一位除法_加減交替法

解:[X]補(bǔ)=0?1001,[丫]補(bǔ)=0.1011,[-丫]補(bǔ)=1.0101

被除數(shù)/余數(shù)商數(shù)說明

00.10011融臚澗號,5

+[一丫]補(bǔ)11.0101

X1O余數(shù)和除數(shù)異號

+rY7左移1位,商0

、k

LJ不

—加除數(shù)

00.0111余數(shù)和除數(shù)同號

00.1110101左移1位,商1

+[-丫]補(bǔ)11.0101減除數(shù)

00.0011余數(shù)和除數(shù)同號

00.01101011左移1位,商1

+[一丫]補(bǔ)11.0101減除數(shù)

余數(shù)和除數(shù)異號

rYU10110左移1位,商0

、k

L不

—加除數(shù)

00.0001余數(shù)和除數(shù)同號

00.00010.1101左移1位,商0

補(bǔ)碼?位除法

加減交替法

?結(jié)果:

澇闌如國就匾逋

定點運(yùn)算器并行設(shè)法

L可控加法/減法(CAS)單元

見教材P42圖2.9(a)

它有四個輸出端和四個輸入端。

當(dāng)輸入線P=0時,CAS作加法運(yùn)算;

當(dāng)蛹入線P=1時,CAS作減法運(yùn)算。

CAS單元的輸入與輸出的關(guān)系可用如下一組邏輯方程來

表示:

Si=A十(Bj十P)十q

G+]=(A+G)?但十P)+A£

當(dāng)P=0時,即得我們熟悉的一位全加器(FA)的公式

當(dāng)P=1時,即得求差公式

瘠翼的國就屬超

定點運(yùn)算器—外行除法

不恢復(fù)余數(shù)的陣列除法器0x2y5匕

在不恢復(fù)余數(shù)的除法陣列中,每

一行所執(zhí)行的操作究竟是加法

還是減法,取決于前一行輸出的

符號與被除數(shù)的符號是否一致。

①當(dāng)出現(xiàn)不夠減時,部分余數(shù)

相對于被除數(shù)來說要改變符

號。這時應(yīng)該產(chǎn)生一個商位

“0”,除數(shù)首先沿對角線右移,

然后加到下一行的部分余數(shù)

CASnCASHCASnCAS□

上。

②當(dāng)部分余數(shù)不改變它的符

號時,即產(chǎn)生商位“1”,下一行的余數(shù)r=3q日%

操作應(yīng)該是減法。(b)4位除4位陣列除法器遺較結(jié)構(gòu)圖

一個(n+1)位除(n+1)位的加減交替除法陣列由(n+l)2個CAS單元組成。

船僧如國就愿超除法執(zhí)行時間為Td=3(n+1)2T

定點運(yùn)算器—外行除法

[例]*=0.101001,y=0.111,求xfy。

[解:]Ly]補(bǔ)=1.001

被除數(shù)X0.101001

減-11.010l1o__o______O

■X-

余數(shù)為負(fù)11oOO1

■xX

余數(shù)左移o1l1

加尸■X

Oo1lo1>o1

■±X-X

余數(shù)為正O11o1

■X

余數(shù)左移Iol

減尸■

余數(shù)為負(fù)L1111<0%=0

余數(shù)左移LI11

加y0.111____________

余數(shù)為正0,110>0%=1

故得商q=%,%/%=0.101

澇園湖血居康徽r=(0.000^^)=0.000110

補(bǔ)充兩種加快除法運(yùn)算的算法

-O跳0跳1除法

這是一種對規(guī)格化小數(shù)絕對值相除的除法加速算法。

基本思想:當(dāng)余數(shù)的絕對值很小時,可根據(jù)余數(shù)前幾

位代碼值再次求得幾位同為1或0的商。

基本規(guī)則:

lo如果余數(shù)R大于等于0,且R的高K個數(shù)位均為0,

則本次的商為1后跟K-1個0,R左移K位后,減去除數(shù)D,

得新余數(shù)。

2o如果余數(shù)R小于0,且R的高K個數(shù)位均為1,則

本次商為0后跟K-1個1,R左移K位后,加上除數(shù)D,得

新余數(shù)。

例題:M=0.1010000D=0.1100011

[-D]補(bǔ)=10011101

0.1010000

1.0011101M-D

1.1101101R<0,符號后有2位1,商為01

1.0110100左移兩位

0.1100011+D

0.0010111R>0,符號后有2位0,商為10

0.1011100左移兩位

1.0011101-D

1.1111001R<0,符號后有4位1,商為0111

最后得商Q=0.1100111(接下去可左移4位,+D繼續(xù)求

商)

二.用快速乘法器實現(xiàn)快速除法

按下式完成M/D:

M="X尸。X尸1X戶2X…XFr

DQX產(chǎn)0X尸?X產(chǎn)2X…xFr

由上式可知:遞乘幾次之后,可以使

-X-。X/X尸2X…XFrf1

則商應(yīng)為:MXFXFXFX???XF

ot?

若M和D為規(guī)格化正的二進(jìn)制小數(shù)代碼時,可寫成:

D=\-61ovsw—>|

那么可取Fj的值如下:

-1+6

Z)o=Qx尸0=(1—b)(l+b)=l—/

々=1+b2

—尸)(1+尸)=1—尸

可見,當(dāng)i增大時,Dj將很快趨近于1,其誤差為日?…

松園覦餌屈原囹

定點運(yùn)算器的組成

運(yùn)算器主要由算術(shù)邏輯部件,通用寄存器和狀態(tài)

寄存器組成。

前面講到的行波進(jìn)位加法器存在兩個大問題:

①由于串行進(jìn)位,所以它的運(yùn)算時間較長。

②只能完成算術(shù)運(yùn)算,不能進(jìn)行邏輯運(yùn)算。

多功能算術(shù)/邏輯運(yùn)算單元

1.基本思想

一位全加器(FA)的邏輯表達(dá)式為:

Fj=Aj④B*G

Ci”二AiBi+BjCj+QAi

為了將全加器的功能進(jìn)行擴(kuò)展以完成多種算術(shù)邏輯

運(yùn)算,我們先不將輸入%和以和下一位的進(jìn)位。直接進(jìn)

行全加,而是將Aj和瓦先組合成由控制參數(shù)S。,SPS2,

S3控制的組合函數(shù)4和Yj然后再將4,Yj和下一位進(jìn)

位數(shù)通過全加器進(jìn)行全加,這樣,不同的控制參數(shù)可以

得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運(yùn)算和邏

輯運(yùn)算。

多功能算術(shù)/邏輯運(yùn)算單元

介Fi

Cn+i+lr------------------------.「

1n+i

——全加器--------

A/\

s、「Xi、Yi與控制參數(shù)和輸入量的關(guān)系

1---------?SOSIYiS2S3Xi

2A函數(shù)發(fā)生器

3?

AA00001

A1.

01A.B.01

1I.+B.

AiBiii

1010

A.1BI.4.i+Bi.

11011

A.1

多功能算術(shù)/邏海運(yùn)算單元

ALU的某一位邏輯表達(dá)式如下:

X^SOA.B.+SOA.K

J.O_L_L乙_LJL

Yi=Aj+SoBi+sH

Fi=Y@X@Cn+i

多功能算術(shù)/邏輯運(yùn)算單元

■每一位的進(jìn)位公式可遞推如下:

Cn+l=Yo+X()Cn

cm二-1=Y1+YoXi+XoX?

Cn+3=Y2+X2Cn+2=Y2+X2Y1+Y0X1X2+X0X1X2Cn

Ce=丫3+*3。(+3

=Y3+X3Y2+X2X3Y1+Y0X1X2X3+X0XxX2X3Cn

多功能算術(shù)/邏輯運(yùn)舁單兀

■設(shè):

G=Y3+X3丫2+X2X3Y1+XiX2X3Y0

P=X0X]X2X3

則:

=

Cn+4G+PCn

其中:G稱為進(jìn)位發(fā)生輸出

--------------------------------------------------------------------------

該式表明,第0位的進(jìn)位輸入可以直接傳送到最局進(jìn)

位位上主向而可以實現(xiàn)高萼晝—.

--------------------------

多功能算術(shù)/邏輯運(yùn)算單元

3.算術(shù)邏輯運(yùn)算的實現(xiàn)(74181ALU)

見教材P48圖2.11

M=1時,進(jìn)行邏輯操作,因為封鎖了各

位的進(jìn)位輸出,即Cn+產(chǎn)。

M=0時,M對進(jìn)位信號無影響,進(jìn)行算

術(shù)運(yùn)算。

多功能算術(shù)/邏輯運(yùn)算單元

74181ALU方框圖如下:

74181ALU的功能表見P49表2,5

A1IO

2kLJ

/

o

d

7

/

S

v

多功能算術(shù)/邏輯運(yùn)算單元

4,兩級先行進(jìn)位的ALU

前面說過,74181ALU設(shè)置了P和G兩個本組先行

進(jìn)位輸出端。如果將四片74181的P,G輸出端送

入到74182先行進(jìn)位部件(CLA),又可實現(xiàn)第

二級的先行進(jìn)位,即組與組之間的先行進(jìn)位。

假設(shè)4片(組)74181的先行進(jìn)位輸出依次

為為,603卬1尸2?2/3?3,那么參考式(2.37)

的進(jìn)位邏輯表達(dá)式,先行進(jìn)位部件74182CLA所

提供的進(jìn)位邏輯關(guān)系如下:

多功能算術(shù)/邏輯運(yùn)算單元

Cn+x=Go+PoCn

Cn+y=Gi+P]Cn+*=Gi+GoPi+PoPiCn

Cn+Z-+P2Cn.|_y—G2+GXP2+G0P1P2+PoPiP2^n

Cn+4—G3+P3Cn+z=Gs+G2P3+GFF2+G°PiP2P3+

P°PF2P3。1

=G*+P*C;

其中P*=P0PiP2P3

G*=G3+G2P3+GFF2+G0P1P2P3

根據(jù)以上表達(dá)式,用TTL器件實現(xiàn)的成組先行進(jìn)位部件

74182的邏輯電路圖如教材P50圖2.12所示

其中G*稱為成組進(jìn)位發(fā)生輸出,P*稱為成組進(jìn)位傳送輸出。

多功能算術(shù)/邏輯運(yùn)

溫馨提示

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

最新文檔

評論

0/150

提交評論