《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第3章_第1頁(yè)
《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第3章_第2頁(yè)
《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第3章_第3頁(yè)
《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第3章_第4頁(yè)
《計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)》課件第3章_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章運(yùn)算方法與運(yùn)算器3.1定點(diǎn)數(shù)運(yùn)算3.2算術(shù)邏輯運(yùn)算部件3.3浮點(diǎn)運(yùn)算

3.1定點(diǎn)數(shù)運(yùn)算

3.1.1加減運(yùn)算

1.加減運(yùn)算方法

補(bǔ)碼加減運(yùn)算過(guò)程中,參加運(yùn)算的操作數(shù)及運(yùn)算結(jié)果均用補(bǔ)碼表示。

1)補(bǔ)碼加法

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

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

(3-1)

由式(3-1)可以看到,兩數(shù)和的補(bǔ)碼就等于兩數(shù)補(bǔ)碼之和。利用補(bǔ)碼求兩數(shù)之和十分方便。

例3.1有兩個(gè)定點(diǎn)整數(shù)63和35,利用補(bǔ)碼加法求63+35=?

解根據(jù)題意,用8位二進(jìn)制補(bǔ)碼表示63和35:

[63]補(bǔ)=00111111

[35]補(bǔ)=00100011

[63+35]補(bǔ)=01100010

例3.2有兩個(gè)定點(diǎn)整數(shù)-63和-35,利用補(bǔ)碼加法求-63+(-35)=?

解根據(jù)題意,用8位二進(jìn)制補(bǔ)碼表示-63和-35:

[-63]補(bǔ)=11000001

[-35]補(bǔ)=11011101

[-63+(-35)]補(bǔ)=10011110

2)補(bǔ)碼減法

在數(shù)值的補(bǔ)碼表示法中,我們注意到,對(duì)一個(gè)正數(shù)求補(bǔ)——對(duì)該數(shù)包括符號(hào)位在內(nèi)各位取反再加1,即可得到該數(shù)的負(fù)數(shù);若對(duì)該負(fù)數(shù)再求補(bǔ)又可得到原來(lái)的正數(shù)。也就是說(shuō)[[X]補(bǔ)]求補(bǔ)=[-X]補(bǔ);[[-X]補(bǔ)]求補(bǔ)=[X]補(bǔ)。

補(bǔ)碼減法的運(yùn)算法則為

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

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

(3-2)

例3.3有兩個(gè)定點(diǎn)整數(shù)63和35,利用補(bǔ)碼減法求

63-35=?

解根據(jù)題意,用8位二進(jìn)制補(bǔ)碼表示63和35:

[63]補(bǔ)=00111111

[35]補(bǔ)=00100011

而[63-35]補(bǔ)=[63]補(bǔ)+[-35]補(bǔ)

;同時(shí),[-35]補(bǔ)=[[35]補(bǔ)]求補(bǔ)=11011101,從而求出:

得到[63-35]補(bǔ)=00011100。由于是8位二進(jìn)制運(yùn)算,在相加過(guò)程中有進(jìn)位1被丟棄不用,所得的結(jié)果仍是正確的。綜上所述,補(bǔ)碼加減運(yùn)算的規(guī)則是:

(1)參加運(yùn)算的操作數(shù)用補(bǔ)碼表示。

(2)符號(hào)位參加運(yùn)算。

(3)若相加,則兩個(gè)數(shù)的補(bǔ)碼直接相加;若進(jìn)行相減運(yùn)算,則將減數(shù)連同符號(hào)位一起變反加1后與被減數(shù)相加。

(4)運(yùn)算結(jié)果為補(bǔ)碼表示。

2.溢出判斷

1)溢出的概念

例3.4有兩個(gè)定點(diǎn)整數(shù)63和85,利用補(bǔ)碼加法求63+85=?

解根據(jù)題意,用8位二進(jìn)制補(bǔ)碼表示63和85:

例3.5設(shè)正整數(shù)X=+1000001,Y=+1000011,若用8位補(bǔ)碼表示,則[X]補(bǔ)=01000001,[Y]補(bǔ)=01000011,求[X+Y]補(bǔ)。

解計(jì)算[X]補(bǔ)+[Y]補(bǔ):

例3.6設(shè)負(fù)整數(shù)X=-1111000,Y=-10010,若用8位

補(bǔ)碼表示,則[X]補(bǔ)=10001000,[Y]補(bǔ)=11101110,求[X+Y]補(bǔ)。

解計(jì)算[X]補(bǔ)+[Y]補(bǔ):

兩個(gè)負(fù)數(shù)相加,結(jié)果為一個(gè)正數(shù),顯然也是錯(cuò)誤的。

2)溢出的判定

(1)雙符號(hào)位(變形碼)判決法。

第2章中曾提到變形補(bǔ)碼,采用兩位表示符號(hào),即00表示正號(hào)、11表示負(fù)號(hào),一旦發(fā)生溢出,則兩個(gè)符號(hào)位就一定不一致,利用判別兩個(gè)符號(hào)位是否一致便可以判定是否發(fā)生了溢出。

若運(yùn)算結(jié)果兩符號(hào)分別用S2、S1表示,則判別溢出的邏輯表達(dá)式為

OF=S2⊕S1

(3-3)

例3.7設(shè)兩正整數(shù)X=+1000001,Y=+1000011,若用雙符號(hào)位的8位補(bǔ)碼表示,則[X]補(bǔ)=001000001,[Y]補(bǔ)=

001000011,求[X+Y]補(bǔ)。

解計(jì)算[X]補(bǔ)+[Y]補(bǔ):

式中,由于結(jié)果的S2和S1

不一致,OF=S2⊕S1=1,因此發(fā)生了溢出。

(2)進(jìn)位判決法。若Cn-1為最高數(shù)值位向最高位(符號(hào)位)的進(jìn)位,Cn表示符號(hào)位的進(jìn)位(即進(jìn)位標(biāo)志CF),則判別溢

出的邏輯表達(dá)式為

OF=Cn-1⊕Cn

(3-4)

溢出判定如表3.1所示。在例3.6的運(yùn)算過(guò)程中,Cn-1為0而Cn為1,故Cn-1⊕Cn=1,表示運(yùn)算結(jié)果有溢出。

(3)根據(jù)運(yùn)算結(jié)果的符號(hào)位和進(jìn)位標(biāo)志判別。

該方法適用于兩同號(hào)數(shù)求和或異號(hào)數(shù)求差時(shí)判別溢出。溢出的邏輯表達(dá)式為

OF=SF⊕CF

(3-5)

式(3-5)中SF和CF分別是運(yùn)算結(jié)果的符號(hào)標(biāo)志和進(jìn)位標(biāo)志。

(4)根據(jù)運(yùn)算前后的符號(hào)位進(jìn)行判別。若用XS、YS、ZS分別表示兩個(gè)操作數(shù)及運(yùn)算結(jié)果的符號(hào)位,當(dāng)兩同號(hào)數(shù)求和或異號(hào)數(shù)求差時(shí),就有可能發(fā)生溢出。根據(jù)運(yùn)算前后的符號(hào)位進(jìn)行溢出判別的邏輯表達(dá)式為

(3-6)

3.一位全加器的實(shí)現(xiàn)

設(shè)一位全加器的輸入分別為Xi和Yi,低一位對(duì)該位的進(jìn)位為Ci,全加器的結(jié)果和向高一位的進(jìn)位分別用Zi和Ci+1表示,則一位全加器所實(shí)現(xiàn)的邏輯表達(dá)式如下:

(3-7)

(3-8)實(shí)現(xiàn)上述邏輯功能的一位全加器的邏輯電路及其框圖分別如圖3.1(a)和(b)所示。

若令Gi=Xi·Yi,Pi=Xi+Yi

,則式(3-8)可寫為

Ci+1=Gi+Pi·Ci

(3-9)

其中,Gi稱為進(jìn)位產(chǎn)生函數(shù),Pi稱為進(jìn)位傳遞函數(shù)。圖

3.1一位全加器邏輯電路及其框圖

4.n位加法器的實(shí)現(xiàn)

1)行波進(jìn)位加法器

利用上述n個(gè)一位全加器串在一起工作,便可以構(gòu)成n位加法器。同時(shí),補(bǔ)碼減法運(yùn)算用加法器便可實(shí)現(xiàn)。圖3.2給出的就是用n個(gè)一位全加器及門電路構(gòu)成n位補(bǔ)碼加法/減法器的電路圖。圖3.2行波進(jìn)位的n位加法/減法器

2)先行進(jìn)位加法器

首先,分析式(3-9),其表達(dá)式為Ci+1=Gi+Pi·Ci

。從式中可知,只要有輸入Xi和Yi

就能求出Gi和Pi,在已知輸入Ci的情況下,便可以獲得Ci+1。那么,在有輸入Xi+1、Yi+1和Xi、Yi、Ci的情況下,便可以獲得Ci+2。依次類推,便可以求出Ci+3、Ci+4、……。下面僅列出四個(gè)進(jìn)位生成邏輯表達(dá)式:

(3-10)

(3-11)

(3-12)

(3-13)式(3-13)中,根據(jù)上面的分析,具體地用與或組合邏輯構(gòu)成的四位先行進(jìn)位產(chǎn)生電路如圖3.3所示,圖中下方是輸入信號(hào)Xi、Xi+1、Xi+2、Xi+3和Yi、Yi+1、Yi+2、Yi+3以及Ci,這些信號(hào)經(jīng)過(guò)三級(jí)門便可以得到所有四位加法器所需要的進(jìn)位信號(hào)Ci+1、Ci+2、Ci+3、Ci+4。三級(jí)門的延時(shí)要比多級(jí)行波進(jìn)位小得多。圖3.3四位先行進(jìn)位鏈電路

5.BCD數(shù)加法器

1)8421BCD碼

第2章中已詳細(xì)地介紹了BCD碼。在所描述的幾種BCD碼中,計(jì)算機(jī)中應(yīng)用最廣泛的是8421BCD碼。8421BCD碼只利用了四位二進(jìn)制編碼的0000~1001這十種來(lái)表示十進(jìn)制數(shù)的0~9,剩余的六種編碼1010、1011、1100、1101、1110、1111是非法的。一旦在BCD運(yùn)算中出現(xiàn)這六種編碼,結(jié)果一定是錯(cuò)誤的。

2)加法運(yùn)算

8421BCD碼加法運(yùn)算也可以用多位加法器實(shí)現(xiàn),在運(yùn)算過(guò)程中有可能產(chǎn)生非法BCD碼的錯(cuò)誤結(jié)果。下面舉例說(shuō)明這一問(wèn)題。

例3.8

(1)計(jì)算壓縮BCD數(shù)46+32=?

(2)計(jì)算壓縮BCD數(shù)46+67=?

解兩題分別相加如下:

由該例可以看到,在(1)的情況下,兩BCD數(shù)相加結(jié)果是正確的;在(2)的情況下,兩BCD數(shù)相加結(jié)果是錯(cuò)誤的。

3)校正

為了保證BCD數(shù)加法運(yùn)算結(jié)果的正確性,必須進(jìn)行校正。對(duì)于一個(gè)字節(jié)的壓縮BCD數(shù)加法進(jìn)行校正的法則是:

(1)運(yùn)算中低四位相加的結(jié)果大于9或有bit3向bit4的進(jìn)位,則結(jié)果加06H。

(2)運(yùn)算中高四位相加(包括由bit3向bit4的進(jìn)位)的結(jié)果大于9或有bit7向更高位的進(jìn)位,則結(jié)果加60H,同時(shí)進(jìn)位為1且將其看做是相加結(jié)果的最高位。

(3)若高低四位均不滿足上述條件,如例3.8中的(1)式,則在校正時(shí)加00H;若同時(shí)滿足(1)、(2)兩項(xiàng)條件,則在校正時(shí)結(jié)果加66H。

4)BCD碼加法器

8421BCD加法及其校正也可以用硬件實(shí)現(xiàn),圖3.4(a)所示即為帶有硬件校正電路的一位8421BCD碼加法器,圖3.4(b)所示為一位BCD加法器的框圖。圖3.4一位8421碼BCD加法器同樣,將多個(gè)一位BCD加法器串聯(lián)起來(lái),可構(gòu)成多位行波進(jìn)位的BCD加法器,其框圖如圖3.5所示。圖3.5

n位行波進(jìn)位BCD加法器框圖

6.移碼加減運(yùn)算

1)運(yùn)算法則

關(guān)于移碼的定義及其特點(diǎn),在第2章中已經(jīng)做了介紹。由于移碼多用在浮點(diǎn)數(shù)中表示階碼,因此,在這里僅就定點(diǎn)整數(shù)移碼的加減運(yùn)算加以說(shuō)明。

例3.9用8位移碼表示十進(jìn)制數(shù)57和-35,并且求移碼的和與差。

解十進(jìn)制數(shù)57和-35用移碼表示如下:

[57]移=10111001

[-35]移=01011101求兩者之和:

①先求

[57]移+[-35]移=10111001+01011101

=00010110

②再將符號(hào)位取反,得到

[57+(-35)]移=10010110求兩者之差:

①先求

[57]移-[-35]移=[57]移+[[-35]移]求補(bǔ)

=10111001+10100011

=01011100

②再將符號(hào)位取反,從而得到

[57-(-35)]移=11011100

2)移碼運(yùn)算應(yīng)注意的問(wèn)題

①對(duì)移碼運(yùn)算的結(jié)果需要加以修正,n位數(shù)的修正量為2n-1

,即對(duì)結(jié)果的符號(hào)位取反后才是移碼形式的正確結(jié)果。

②移碼表示中,0有唯一的編碼為1000…00。3.1.2乘法運(yùn)算

1.原碼一位乘法運(yùn)算

1)原碼一位乘法的法則

假定被乘數(shù)X和乘數(shù)Y為用原碼表示的純小數(shù)(下面的討論同樣適合于純整數(shù)),分別為

其中x0

、y0

是它們的符號(hào)位。同時(shí),假定乘積為

原碼一位乘法的法則是:

(1)乘積的符號(hào)為被乘數(shù)的符號(hào)位與乘數(shù)的符號(hào)位相異或。

(2)乘積的絕對(duì)值為被乘數(shù)的絕對(duì)值與乘數(shù)的絕對(duì)值之積,即

(3-14)

可見(jiàn),原碼一位乘法可以分別求出積的符號(hào)和兩乘數(shù)絕對(duì)值之積,然后拼接在一起,構(gòu)成乘積。

2)原碼一位乘法的實(shí)現(xiàn)思路

(1)手工乘法運(yùn)算。

為了求得絕對(duì)值之積,先舉例討論手算過(guò)程。

例3.10若[X]原=0.1101,[Y]原=1.1011,求兩者之積。

解乘積的符號(hào)為0⊕1=1。絕對(duì)值之積的手算過(guò)程如下:

(2)思路流程。根據(jù)上述分析,可用圖3.6所示的流程來(lái)描述求絕對(duì)值之積的思路。圖3.6絕對(duì)值乘法思路流程

3)原碼一位乘法的具體過(guò)程

下面仍以例3.10中的數(shù)據(jù)為例說(shuō)明原碼一位乘法的運(yùn)算過(guò)程。

例3.11[X]原=0.1101,[Y]原=1.1011,求兩者之積。

解第一步是利用被乘數(shù)與乘數(shù)的符號(hào),求出乘積的符號(hào)為0⊕1=1。

第二步是求兩乘數(shù)絕對(duì)值之積,其過(guò)程如圖3.7所示。圖3.7例3.11的乘法過(guò)程

4)原碼一位乘法器框圖

根據(jù)以上對(duì)原碼一位乘法的描述,可以相應(yīng)地畫出原碼數(shù)值一位乘法器框圖如圖3.8所示。圖3.8原碼數(shù)值一位乘法器框圖

5)原碼二位乘法

在上述一位乘法中,每次只考慮一位乘數(shù)位,對(duì)于n位乘數(shù)(包括一位符號(hào)),則需進(jìn)行n-1次加法和右移。為了提高運(yùn)算速度,可以考慮一次處理二位乘數(shù)位,每次右移兩

位。原碼二位乘法的法則描述如下。若仍假定被乘數(shù)X和乘數(shù)Y為用原碼表示的純小數(shù)(下面的討論同樣適合于純整數(shù)),分別為

其中x0、y0是它們的符號(hào)位。兩位乘數(shù)位有四種組合:解決問(wèn)題的辦法是:

(1)由于二位乘法的運(yùn)算過(guò)程中部分積每次右移兩位,右移后加|X|相當(dāng)于右移兩位前加4|X|。

(2)在二位乘法的運(yùn)算過(guò)程中,若遇到y(tǒng)i+1yi=11時(shí),

可在部分積中減|X|,并使觸發(fā)器C=1。而后,部分積右移兩位,若發(fā)現(xiàn)觸發(fā)器C=1,則需在部分積上加|X|(相當(dāng)于右移前加4|X|)。因右移前已做了減|X|,與右移后加|X|綜合在一起,實(shí)現(xiàn)了4|X|-|X|=3|X|的目的。

經(jīng)上述分析,現(xiàn)將原碼二位乘法的法則列于表3.2中。

例3.12設(shè)X=+0.100111,Y=-0.100111,利用原碼求積。

解寫出[X]原=0.100111,[Y]原=1.100111。同時(shí),需要注意盡管是絕對(duì)值乘,但在實(shí)現(xiàn)中是用加減來(lái)完成的。為了實(shí)現(xiàn)減法,在運(yùn)算過(guò)程中需用補(bǔ)碼做加法。由于一次右移兩位,因此需用三個(gè)符號(hào)位。具體過(guò)程如圖3.9所示。圖3.9例3.12的乘法過(guò)程

2.補(bǔ)碼一位乘法運(yùn)算

1)布斯算法法則

假定被乘數(shù)X和乘數(shù)Y均為用補(bǔ)碼表示的純小數(shù),分別為

其中x0、y0是它們的符號(hào)位,則布斯法補(bǔ)碼一位乘算法公式為

(3-15)根據(jù)以上分析,布斯法的運(yùn)算法則描述如下:

(1)乘數(shù)與被乘數(shù)均用補(bǔ)碼表示,連同符號(hào)位一起參加運(yùn)算。

(2)乘數(shù)最低位后增加一個(gè)附加位(可用A-1表示),初始設(shè)定為0。

(3)從附加位開始,依據(jù)表3.3所示的操作規(guī)律,完成式(3-15)的運(yùn)算。圖3.10布斯補(bǔ)碼一位乘法流程圖

2)運(yùn)算過(guò)程

例3.13已知X=0.1010,Y=-0.1101。利用布斯法補(bǔ)碼一位乘法求積。

解首先將兩數(shù)用補(bǔ)碼表示:[X]補(bǔ)=00.1010,[Y]補(bǔ)=11.0011,而[-X]補(bǔ)=11.0110。圖3.11是布斯法求解的過(guò)程。圖3.11例3.13布斯法補(bǔ)碼一位乘法過(guò)程

3)補(bǔ)碼一位乘法器(布斯法)框圖

根據(jù)對(duì)布斯法補(bǔ)碼一位乘法的描述,可以設(shè)計(jì)出乘法器如圖3.12所示。圖3.12補(bǔ)碼一位乘法器(Booth算法)框圖

3.補(bǔ)碼二位乘法運(yùn)算

為了提高運(yùn)算速度,補(bǔ)碼也可以采用二位乘。根據(jù)補(bǔ)碼一位乘法的法則,運(yùn)算過(guò)程中是對(duì)yi與yi-1的狀態(tài)進(jìn)行差值運(yùn)算。而二位乘法是將yi與yi-1的狀態(tài)差和yi-1與yi-2的狀態(tài)差

合并在一起進(jìn)行的。由于乘數(shù)各位權(quán)值不一樣,將一位乘法的兩步合成一步,就有:

(3-16)

根據(jù)式(3-16),可以得出補(bǔ)碼二位乘法的運(yùn)算規(guī)律如表3.4所示。由上述分析可以得出補(bǔ)碼二位乘法的法則如下:

(1)乘數(shù)與被乘數(shù)均用補(bǔ)碼表示,連同符號(hào)位一起參加運(yùn)算。

(2)乘數(shù)最低位后增加一個(gè)附加位(可用A-1表示),初始設(shè)定為0。

(3)從附加位開始,依據(jù)表3.4所示的操作規(guī)律,一次檢測(cè)相鄰3位來(lái)決定具體的操作,且每次D、A、A-1聯(lián)合做算術(shù)右移2位。

(4)當(dāng)乘數(shù)位數(shù)(包括符號(hào)位)為偶數(shù)n時(shí),右移2位的次數(shù)為n/2次,最后一次只右移1位。

(5)當(dāng)乘數(shù)位數(shù)(包括符號(hào)位)為奇數(shù)n時(shí),可在乘數(shù)最后一位之后添加一個(gè)0,使乘數(shù)變?yōu)榕紨?shù)(n+1),右移次數(shù)為(n+1)/2,且最后一次只右移1位。此時(shí),也可以將乘數(shù)增加

一個(gè)符號(hào)位,使乘數(shù)變?yōu)榕紨?shù)(n+1),右移次數(shù)為[(n+1)/2

-1]。

4.陣列乘法器

1)手算及單元電路

在上述乘法運(yùn)算中,是利用簡(jiǎn)單的硬件進(jìn)行多次加法和多次移位來(lái)實(shí)現(xiàn)乘法,顯然,這難以獲得高的運(yùn)算速度。為了提高運(yùn)算速度,可以采取類似人工手算的方法。從上式中可以看到,其中XiYj

是與運(yùn)算,而結(jié)果Zi則是與結(jié)果的求和。每一對(duì)相與求和操作可以用圖3.13所示的稱為基本乘加單元的電路來(lái)實(shí)現(xiàn)。圖3.13基本乘加單元框圖

2)絕對(duì)值(無(wú)符號(hào)數(shù))陣列乘法器

利用手算算式的結(jié)構(gòu)及乘加單元電路可以方便地實(shí)現(xiàn)絕對(duì)值(無(wú)符號(hào)數(shù))陣列乘法器,這種陣列乘法器的結(jié)構(gòu)如圖3.14所示。圖3.14定點(diǎn)無(wú)符號(hào)數(shù)陣列乘法器

3)帶符號(hào)數(shù)的陣列乘法器

在絕對(duì)值陣列乘法器的基礎(chǔ)上,很容易實(shí)現(xiàn)帶符號(hào)數(shù)的陣列乘法器,其基本思路是先求被乘數(shù)與乘數(shù)的絕對(duì)值,然后進(jìn)行絕對(duì)值乘法,最后再根據(jù)被乘數(shù)與乘數(shù)的符號(hào),決定

最后乘積的符號(hào)。

為了實(shí)現(xiàn)帶符號(hào)數(shù)的陣列乘法器,圖3.15先給出一簡(jiǎn)單求補(bǔ)電路。圖3.15求補(bǔ)電路帶符號(hào)數(shù)的陣列乘法器的框圖如圖3.16所示,在進(jìn)行帶符號(hào)數(shù)乘法運(yùn)算之前,先將被乘數(shù)和乘數(shù)求絕對(duì)值(也就是對(duì)負(fù)數(shù)求補(bǔ)),再進(jìn)行絕對(duì)值陣列乘,最后要利用被乘數(shù)和乘數(shù)的符號(hào)位做異或運(yùn)算得到的乘積符號(hào),來(lái)控制對(duì)絕對(duì)值乘積的求補(bǔ)。這樣,便可獲得正確的結(jié)果。圖3.16

n+1位帶符號(hào)數(shù)陣列乘法器框圖

5.適于流水線工作的陣列乘法器

1)基本原理

觀察前述的乘法手算算式,可以看到,如果兩個(gè)乘數(shù)

X=X3X2X1X0和Y=Y(jié)3Y2Y1Y0已知,則X3Y3、X2Y3、X1Y3、

X0Y3、X3Y2、X2Y2、X1Y2、X0Y2、X3Y1、X2Y1、X1Y1、X0Y1、X3Y0、X2Y0、X1Y0、X0Y0

各項(xiàng)便可以用與門獲得。圖3.17乘法算法的計(jì)算步驟

2)實(shí)現(xiàn)

為了說(shuō)明這種乘法的實(shí)現(xiàn),仍以兩個(gè)四位乘數(shù)

X=X3X2X1X0和Y=Y(jié)3Y2Y1Y0為例,畫出實(shí)現(xiàn)該方式

的陣列乘法器如圖3.18所示。圖3.18利用保留進(jìn)位加法器實(shí)現(xiàn)陣列乘法3.1.3除法運(yùn)算

1.原碼除法運(yùn)算

1)原碼除法的法則

原碼除法的法則包括:

(1)除數(shù)≠0;定點(diǎn)純小數(shù)時(shí),|被除數(shù)|<|除數(shù)|;定點(diǎn)純整數(shù)時(shí),|被除數(shù)|≥|除數(shù)|。

(2)與原碼乘法類似的是,原碼除法商的符號(hào)和商的值也是分別處理的,商的符號(hào)等于被除數(shù)的符號(hào)與除數(shù)的符號(hào)相異或。

(3)商的值等于被除數(shù)的絕對(duì)值除以除數(shù)的絕對(duì)值。

(4)將商符與商值拼接在一起即可得到原碼除法的商。

例3.14設(shè)X=0.1011,Y=0.1101,求X÷Y=?

解假定被除數(shù)X和除數(shù)Y均為正數(shù),則未來(lái)商的符號(hào)也為正。

兩數(shù)絕對(duì)值除法的手算過(guò)程如圖3.19所示。圖3.19除法的手算過(guò)程

2)恢復(fù)余數(shù)法

利用恢復(fù)余數(shù)法實(shí)現(xiàn)原碼除法遵從上述除法法則。對(duì)于定點(diǎn)純小數(shù),符號(hào)位單獨(dú)處理。被除數(shù)左移一位,減除數(shù),若夠減,上商為1;若不夠減,上商為0,同時(shí)加除數(shù)——恢復(fù)余數(shù)。余數(shù)左移一位,減除數(shù),若夠減,上商為1;若不夠減,上商為0,同時(shí)加除數(shù)——恢復(fù)余數(shù)。重復(fù)此過(guò)程,直到除盡或精度達(dá)到要求。最后,拼接商符得到商,即可獲得除法的結(jié)果。

例3.15若被除數(shù)X=-0.10001011,除數(shù)Y=0.1110,試?yán)迷a求商及余數(shù)。

解該例滿足|X|<|Y|,且|Y|≠0。寫出

[X]原=1.10001011,[Y]原=0.1110。商符=1⊕0=1。

絕對(duì)值除法過(guò)程如圖3.20所示。圖3.20例3.15恢復(fù)余數(shù)法實(shí)現(xiàn)除法的過(guò)程

3)加減交替法

(1)加減交替法的運(yùn)算法則。

(2)加減交替法的運(yùn)算過(guò)程。

例3.16若X=-0.10001011,Y=0.1110,試?yán)迷a加減交替法求商及余數(shù)。

解寫出[X]原=1.10001011,[Y]原=0.1110。商符=1⊕0=1。絕對(duì)值除法過(guò)程如圖3.21所示。圖3.21例3.16加減交替法實(shí)現(xiàn)除法的過(guò)程

(3)加減交替法除法器框圖。

原碼加減交替法做除法是符號(hào)與數(shù)值運(yùn)算分別進(jìn)行,圖3.22給出了絕對(duì)值(或無(wú)符號(hào)數(shù))除法的硬件框圖。圖3.22加減交替法除法器框圖

2.補(bǔ)碼除法運(yùn)算

與乘法運(yùn)算的情況類似,有時(shí)也會(huì)遇到補(bǔ)碼除法。

1)補(bǔ)碼除法法則

同樣,假設(shè)進(jìn)行定點(diǎn)純小數(shù)的補(bǔ)碼除法運(yùn)算,其先決條件是除數(shù)不等于0且被除數(shù)的絕對(duì)值小于除數(shù)的絕對(duì)值。

2)補(bǔ)碼除法的思路

補(bǔ)碼除法的思路如圖3.23所示,該流程圖很好地體現(xiàn)了補(bǔ)碼除法的運(yùn)算法則。從比較被除數(shù)及除數(shù)開始,利用加減交替的方法求得余數(shù),通過(guò)余數(shù)與除數(shù)符號(hào)的比較來(lái)決定上商為0還是為1。最后將末位置1進(jìn)行商的修正。圖3.23補(bǔ)碼除法流程圖

3.陣列除法器

1)基本概念

在介紹陣列除法器之前,首先說(shuō)明兩個(gè)問(wèn)題。

(1)補(bǔ)碼運(yùn)算的進(jìn)位。

在無(wú)符號(hào)數(shù)做減法時(shí),是用被減數(shù)加上負(fù)減數(shù)的補(bǔ)碼來(lái)實(shí)現(xiàn)的。這就存在著:當(dāng)被減數(shù)小而減數(shù)大時(shí),沒(méi)有進(jìn)位(或者說(shuō)沒(méi)有借位);而當(dāng)被減數(shù)大而減數(shù)小時(shí),反而有進(jìn)位(或者說(shuō)有借位)。

例3.17比較無(wú)符號(hào)數(shù)65-32和32-65兩者運(yùn)算結(jié)果的進(jìn)位情況。

解無(wú)符號(hào)數(shù)65和32用8位二進(jìn)制數(shù)表示,分別為

65=010000012

32=001000002

在進(jìn)行減法運(yùn)算時(shí),可用加負(fù)數(shù)補(bǔ)碼的方法來(lái)實(shí)現(xiàn),它們的負(fù)數(shù)補(bǔ)碼為

[-65]補(bǔ)=10111111

[-32]補(bǔ)=11100000

65-32及32-65的運(yùn)算過(guò)程如下:

(2)可控加減單元CAS??煽丶訙p單元CAS如圖3.24所示,主要由兩部分硬件組成。一是異或電路,在外部控制信號(hào)P的控制下,當(dāng)P=0時(shí),其輸出為Y′=Yi;當(dāng)P=1時(shí),其輸出為Y′=

(將輸入Yi取反)。在下述陣列除法器中,Y作為除數(shù),若將其取反再加1,即可對(duì)其求補(bǔ)。二是一位全加器,實(shí)現(xiàn)輸入Y′、Xi及低級(jí)進(jìn)位Ci的全加。圖3.24可控加減單元CAS

2)無(wú)符號(hào)數(shù)陣列除法器

無(wú)符號(hào)數(shù)陣列除法器如圖3.25所示。被除數(shù)加在除法器的X6~X0端,并使最高位X6=0以保證結(jié)果正確;除數(shù)加在Y3~Y0端,且使Y3=0。圖3.25由可控加減單元CAS構(gòu)成的陣列除法器

3.2算術(shù)邏輯運(yùn)算部件

3.2.1單元電路

1.寄存器

在計(jì)算機(jī)系統(tǒng)中或在構(gòu)成CPU時(shí),都會(huì)用到寄存器。前人已為我們提供了多種寄存器,工程上經(jīng)常用鎖存器作為寄存器。

1)8D鎖存器

8D鎖存器有多種型號(hào),這里僅以74LS273為例。

74LS273由8個(gè)D觸發(fā)器集成在一塊芯片中構(gòu)成,其引線及功能分別如圖3.26及表3.5所示。圖3.26

74LS273鎖存器的引線

2)帶有三態(tài)輸出的鎖存器

帶有三態(tài)輸出的鎖存器也有多種。這里介紹一種具有三態(tài)輸出的鎖存器芯片74LS374,其引線及功能分別如圖3.27及表3.6所示。圖3.27

74LS374鎖存器的引線

2.移位寄存器

有多種型號(hào)的移位寄存器可供人們選用。圖3.28所給出的是移位寄存器74198的引線,其功能如表3.7所示。圖3.28移位寄存器74198的引線3.2.2算術(shù)邏輯單元集成芯片

1.74181的引線

74181的引線如圖3.29所示。74181有正邏輯工作的芯片,也有負(fù)邏輯工作的芯片,圖3.29所示的是正邏輯工作芯片。74181的運(yùn)算功能列于表3.8中。圖3.29

4位ALU74181的引線

2.級(jí)聯(lián)工作

單獨(dú)一片74181只能實(shí)現(xiàn)4位的算術(shù)或邏輯運(yùn)算,顯然,4位運(yùn)算的精度太低。74181可以級(jí)聯(lián)工作,用2片74181可以構(gòu)成8位的ALU,3片74181可以構(gòu)成12位的ALU。圖3.30示出了用4片74181構(gòu)成的片間串行進(jìn)位的16位ALU。圖3.30由74181構(gòu)成組間串行進(jìn)位的16位ALU為了提高級(jí)聯(lián)ALU的運(yùn)算速度,人們已研制出并(先)行進(jìn)位鏈集成電路74182。74182利用C0及74181提供的G和P便能先行產(chǎn)生圖3.30連接所需要的進(jìn)位信號(hào),從而提高整個(gè)ALU的速度。利用74182構(gòu)成的片(組)內(nèi)、片(組)間均并行進(jìn)位的ALU如圖3.31所示。圖3.31由74181和74182構(gòu)成組內(nèi)組間均并行進(jìn)位的16位ALU3.2.3運(yùn)算器的結(jié)構(gòu)

1.三種基本結(jié)構(gòu)

根據(jù)運(yùn)算器內(nèi)部總線與構(gòu)成運(yùn)算器的基本部件的連接情況,運(yùn)算器有三種基本結(jié)構(gòu)形式,即單總線結(jié)構(gòu)、雙總線結(jié)構(gòu)及三總線結(jié)構(gòu),它們分別如圖3.32(a)、(b)、(c)所示。圖3.32運(yùn)算器的三種基本結(jié)構(gòu)

2.計(jì)算機(jī)簡(jiǎn)化框圖

圖3.33所示為一種簡(jiǎn)化的計(jì)算機(jī)框圖。圖3.33某計(jì)算機(jī)簡(jiǎn)化框圖

3.3浮點(diǎn)運(yùn)算

3.3.1加減運(yùn)算

1.浮點(diǎn)數(shù)加減法的運(yùn)算法則

設(shè)兩個(gè)規(guī)格化浮點(diǎn)數(shù)X=Mx×2Ex和Y=My×2Ey,實(shí)現(xiàn)X±Y運(yùn)算的法則及過(guò)程如下。

1)對(duì)階

一般情況下,兩浮點(diǎn)數(shù)的階碼不會(huì)相同,也就是說(shuō)兩數(shù)的小數(shù)點(diǎn)沒(méi)有對(duì)齊。和我們所熟悉的十進(jìn)制小數(shù)加減一樣,在進(jìn)行浮點(diǎn)數(shù)加減運(yùn)算前需將小數(shù)點(diǎn)對(duì)齊,這就是對(duì)階。只有當(dāng)兩者的階碼相同時(shí)才能進(jìn)行尾數(shù)的加減運(yùn)算。

2)尾數(shù)加(減)運(yùn)算

在對(duì)階之后,尾數(shù)進(jìn)行加(減)運(yùn)算。實(shí)際上只做加法就可以了,因?yàn)闇p法可以用加法來(lái)實(shí)現(xiàn)。在做減法時(shí),只要先將減數(shù)求補(bǔ),然后與被減數(shù)相加即可。

3)規(guī)格化

在進(jìn)行加減運(yùn)算后,其結(jié)果有可能是一個(gè)非規(guī)格化數(shù)。如果結(jié)果是非規(guī)格化數(shù),則需要規(guī)格化。這時(shí)可能會(huì)出現(xiàn)如下兩種情況:

(1)左規(guī)。

(2)右規(guī)。

4)舍入處理

在對(duì)階及規(guī)格化時(shí)需要將尾數(shù)右移,右移將丟掉尾數(shù)的最低位,這就出現(xiàn)了舍入的問(wèn)題。

2.浮點(diǎn)數(shù)加(減)法流程

假定兩浮點(diǎn)數(shù)X、Y相加(或相減)的結(jié)果為浮點(diǎn)數(shù)Z,浮點(diǎn)數(shù)加(減)法流程如圖3.34所示。圖3.34浮點(diǎn)加(減)法運(yùn)算流程

3.浮點(diǎn)運(yùn)算實(shí)例

下面舉例說(shuō)明浮點(diǎn)加法的過(guò)程。

例3.18兩浮點(diǎn)數(shù)為

X=0.110101×2-010

溫馨提示

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

評(píng)論

0/150

提交評(píng)論