計算機組成原理課程設(shè)計報告,乘法,除法,_第1頁
計算機組成原理課程設(shè)計報告,乘法,除法,_第2頁
計算機組成原理課程設(shè)計報告,乘法,除法,_第3頁
計算機組成原理課程設(shè)計報告,乘法,除法,_第4頁
計算機組成原理課程設(shè)計報告,乘法,除法,_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成績:課程設(shè)計報告課程名稱:計算機組成原理課程設(shè)計實驗項目:用微指令實現(xiàn)乘法和除法的程序姓 名:專 業(yè):計算機科學(xué)與技術(shù)班 級:計算機14-6班學(xué) 號:計算機科學(xué)與技術(shù)學(xué)院實驗教學(xué)中心 2016年 9 月 1 日哈爾濱理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院 課程設(shè)計報告設(shè)計項目名稱:用微指令實現(xiàn)乘法和除法的程序 (2 學(xué)時)一.設(shè)計目的1、通過學(xué)習(xí)用微指令實現(xiàn)乘法和除法的程序,鞏固課本知識,加深對所學(xué)知識的理解,綜合理解計算機組成原理課程的核心知識并進(jìn)一步建立整機系統(tǒng)的概念。 2、通過實際上機動手操作和親自設(shè)計,鍛煉自身的動手能力和實踐能力,將課本的理論知識運用于實踐,培養(yǎng)綜合實踐及獨立分析、解決問題的

2、能力,充分發(fā)揮理論聯(lián)系實踐的教學(xué)理念。3、通過上機學(xué)習(xí)對微指令的設(shè)計,為以后走上工作崗位奠定一定的基礎(chǔ),同時也為以后學(xué)習(xí)其他相關(guān)的內(nèi)容做鋪墊。4.在實驗機上設(shè)計實現(xiàn)機器指令及對應(yīng)的微指令(微程序)并驗證,從而進(jìn)一步掌握微程序設(shè)計控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對應(yīng)關(guān)系。二.設(shè)計內(nèi)容 針對COP2000實驗儀,從詳細(xì)了解該模型機的指令微指令系統(tǒng)入手,以實現(xiàn)乘法和除法運算功能為應(yīng)用目標(biāo),在COP2000的集成開發(fā)環(huán)境下,設(shè)計全新的指令系統(tǒng)并編寫對應(yīng)的微程序,之后編寫實現(xiàn)乘法和除法的程序進(jìn)行設(shè)計的驗證。三.使用儀器 cop2000計算機組成原理 實驗系統(tǒng)。四.設(shè)計步驟1、理解試驗系統(tǒng)自帶的

3、每一條微指令的含義和具體工作流程。2、根據(jù)原有的微指令自己設(shè)計微指令。3、微指令設(shè)計完成后調(diào)試所有的微指令確保沒有錯誤。4、用自己設(shè)計的微指令編寫實現(xiàn)乘法和除法運算的程序。5、編寫程序完畢后調(diào)試并運行代碼,觀察是否能夠滿足需求。五.微程序設(shè)計指令原理 1.在微指令的控制字段中,每一位代表一個微命令,在設(shè)計微指令時,是否發(fā)出某個微命令,只要將控制字段中相應(yīng)位置成"1"或"0",這樣就可打開或關(guān)閉某個控制門。2. 詳細(xì)了解并掌握COP 2000模型機的微程序控制器原理,通過綜合實驗來實現(xiàn)(1)該模型機指令系統(tǒng)的特點: 總體概述:COP2000模型機包括了一個

4、標(biāo)準(zhǔn)CPU所具備所有部件,這些部件包括:運算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器組R0-R3、程序計數(shù)器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲器EM、指令寄存器IR、微程序計數(shù)器uPC、微程序存儲器uM,以及中斷控制電路、跳轉(zhuǎn)控制電路。其中運算器和中斷控制電路以及跳轉(zhuǎn)控制電路用CPLD來實現(xiàn),其它電路都是用離散的數(shù)字電路組成。微程序控制部分也可以用組合邏輯控制來代替。模型機為8位機,數(shù)據(jù)總線、地址總線都為8位,但其工作原理與16位機相同。相比而言8位機實驗減少了煩瑣的連線,但其原理卻更容易被學(xué)生

5、理解、吸收。模型機的指令碼為8位,根據(jù)指令類型的不同,可以有0到2個操作數(shù)。指令碼的最低兩位用來選擇R0-R3寄存器,在微程序控制方式中,用指令碼做為微地址來尋址微程序存儲器,找到執(zhí)行該指令的微程序。而在組合邏輯控制方式中,按時序用指令碼產(chǎn)生相應(yīng)的控制位。在本模型機中,一條指令最多分四個狀態(tài)周期,一個狀態(tài)周期為一個時鐘脈沖,每個狀態(tài)周期產(chǎn)生不同的控制邏輯,實現(xiàn)模型機的各種功能。模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。 模型機的缺省的指令集分幾大類: 算術(shù)運算指令、邏輯運算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入/輸出指令。 模型機的尋

6、址方式模型機的尋址方式 尋址方式說明 指令舉例 指令說明 累加器尋址 操作數(shù)為累加器A CPL A 將累加器A的值取反 隱含尋址累加器A OUT 將累加器A的值輸出到 輸出端口寄存器OUT 寄存器尋址 參與運算的數(shù)據(jù)在 將寄存器R0的值加上累加 R0R3的寄存器中 ADD A,R0 器A的值,再存入累加器A中 寄存器間接尋址 參與運算的數(shù)據(jù)在存 將寄存器R1的值作為地址,把存 儲器EM中,數(shù)據(jù)的地址 儲器EM中該地址的內(nèi)容送入累加 在寄存器R0-R3中 MOV A,R1 A中 存儲器直接尋址 參與運算的數(shù)據(jù)在存 將存儲器EM中40H單元的數(shù)據(jù) 儲器EM中,數(shù)據(jù)的地 與累加器A的值作邏輯與運算,

7、 址為指令的操作數(shù)。 AND A,40H 結(jié)果存入累加器A 立即數(shù)尋址 參與運算的數(shù)據(jù) 從累加器A中減去立即 為指令的操作數(shù)。 SUB A,#10H 數(shù)10H,結(jié)果存入累加器A (2) 該模型機微指令系統(tǒng)的特點(包括其微指令格式的說明等): 總體概述 該模型機的微命令是以直接表示法進(jìn)行編碼的,其特點是操作控制字段中的每一位代表一個微命令。這種方法的優(yōu)點是簡單直觀,其輸出直接用于控制。缺點是微指令字較長,因而使控制存儲器容量較大。 微指令格式的說明模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。微程序控制器由微程序給出24位控制信號,而微程序的地址又是由指令碼提

8、供的,也就是說24位控制信號是由指令碼確定的。該模型機的微指令的長度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。 微指令控制信號的功能以及控制信號的說明 XRD 外部設(shè)備讀信號,當(dāng)給出了外設(shè)的地址后,輸出此信號,從指定外設(shè)讀數(shù) 據(jù) EMWR 程序存儲器EM寫信號。 EMRD 程序存儲器EM讀信號。 PCOE 將程序計數(shù)器PC的值送到地址總線ABUS上。 EMEN 將程序存儲器EM與數(shù)據(jù)總線DBUS接通,由EMWR和EMRD決定是將DBUS數(shù)據(jù)寫到EM中,還是從EM讀出數(shù)據(jù)送到DBUS。 I

9、REN 將程序存儲器EM讀出的數(shù)據(jù)打入指令寄存器IR和微指令計數(shù)器PC。 EINT 中斷返回時清除中斷響應(yīng)和中斷請求標(biāo)志,便于下次中斷。 ELP PC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。 MAREN 將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。 MAROE 將地址寄存器MAR的值送到地址總線ABUS上。 OUTEN 將數(shù)據(jù)總線DBUS上數(shù)據(jù)送到輸出端口寄存器OUT里。 STEN 將數(shù)據(jù)總線DBUS上數(shù)據(jù)存入堆棧寄存器ST中。 RRD 讀寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。 RWR 寫寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。 CN 決

10、定運算器是否帶進(jìn)位移位,CN=1帶進(jìn)位,CN=0不帶進(jìn)位。 FEN 將標(biāo)志位存入ALU內(nèi)部的標(biāo)志寄存器。 X2、X1、X0 X2、X1、X0三位組合來譯碼選擇將數(shù)據(jù)送到DBUS上的寄存器。 WEN 將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。 AEN 將數(shù)據(jù)總線DBUS的值打入累加器A中。 S2、S1、S0 S2、S1、S0三位組合決定ALU做何種運算。 COP2000中有7個寄存器可以向數(shù)據(jù)總線輸出數(shù)據(jù), 但在某一特定時刻只能有一個寄存器輸出數(shù)據(jù). 由X2,X1,X0決定那一個寄存器輸出數(shù)據(jù)。X2 X1 X0 輸出寄存器 0 0 0 IN_OE 外部輸入門 0 0 1 IA_OE 中斷向量 0

11、 1 0 ST_OE 堆棧寄存器 0 1 1 PC_OE PC寄存器 1 0 0 D_OE 直通門 1 0 1 R_OE 右移門 1 1 0 L_OE 左移門 1 1 1 沒有輸出 COP2000中的運算器由一片EPLD實現(xiàn). 有8種運算, 通過S2,S1,S0來選擇。運算數(shù)據(jù)由寄存器A及寄存器W給出, 運算結(jié)果輸出到直通門D。 S2 S1 S0 功能 0 0 0 A+W 加 0 0 1 A-W 減 0 1 0 A|W 或 0 1 1 A&W 與 1 0 0 A+W+C 帶進(jìn)位加 1 0 1 A-W-C 帶進(jìn)位減 1 1 0 A A取反 1 1 1 A 輸出A 6. 設(shè)計具體過程1、理

12、解試驗系統(tǒng)自帶的每一條微指令的含義和具體工作流程。 2、根據(jù)原有的微指令自己設(shè)計微指令系統(tǒng)。 根據(jù)所設(shè)計的每條微指令的工作原理,選擇相應(yīng)的控制功能,下面以微指令 ADD A, R?為例說明: 第一個周期T3,實現(xiàn)將寄存器R中的內(nèi)容送到寄存器W中,控制信號RRD和WEN有效,控制信號選擇如下: 第二個周期T1,實現(xiàn)將累加器A中的內(nèi)容與寄存器W中的內(nèi)容相加后送到累加器A中,控制信號FEN有效,影響標(biāo)志位,不帶進(jìn)位加法S2、S1、S0為000,AEN有效,ALU直通,X2、X1、X0為100??刂菩盘栠x擇如下: 第三個周期T0,實現(xiàn)獲得下一條微指令的入口地址,控制信號EMRD、PCOE和IREN有效

13、??刂菩盘栠x擇如下: 通過結(jié)構(gòu)圖檢驗自己所設(shè)計的微指令是否正確。結(jié)構(gòu)圖如下: 3、微指令設(shè)計完成后調(diào)試所有的微指令確保沒有錯誤。 4、用自己設(shè)計的微指令編寫實現(xiàn)乘法和除法運算的程序。 乘法原理: 本實驗采取原碼一位乘計算,控制流程如下: 乘法運算前,將A寄存器清零,作為初始部分積,被乘數(shù)原碼放在X中,乘數(shù)放在Q中,計數(shù)器C存放乘數(shù)的位數(shù)n。乘法開始后,首先通過異或運算,求出乘積符號并存在S,接著將被乘數(shù)和乘數(shù)從原碼形式變?yōu)榻^對值。然后根據(jù)Qn的狀態(tài)決定部分積是否加上被乘數(shù),在邏輯右移一次,重復(fù)n次,即得運算結(jié)果。 除法原理: 本實驗采用累減法實現(xiàn)除法運算,其控制流程如下: 將被除數(shù)保存在累加器

14、A中,將除數(shù)保存在存儲器M中的某一位置,同時用寄存器R1,R0存放商和余數(shù)。每次進(jìn)行運算前,先判斷累加器A中的內(nèi)容是否大于存儲器M中的內(nèi)容,若大于,則將A的內(nèi)容減去存儲器M中的內(nèi)容,并將寄存器R1加1,,否則直接將A存入R0中,結(jié)束運算。 5、編寫程序完畢后調(diào)試并運行代碼,觀察是否能夠滿足需求。7. 運行結(jié)果 1、乘法:計算兩個16進(jìn)制的數(shù)8fh(143d)和0dh(13d)的乘積。通過筆算可知 143 * 13 = 1859(0743h),通過微程序計算的結(jié)果跟筆算結(jié)果一樣,計算結(jié)果保存在EM存儲器中,高位保存在33h號單元中,低位保存在34h號單元中,筆算結(jié)果和程序運算結(jié)果一致,證明所設(shè)計

15、的乘法運算程序在一定數(shù)據(jù)范圍內(nèi)是正確的。2、除法:整除時的情況:計算兩個16進(jìn)制的數(shù)8fh(143d)和0dh(13d)的商通過筆算可知 143 / 13 = 11······0,通過微程序計算的結(jié)果跟筆算結(jié)果一樣,計算結(jié)果保存在EM存儲器中,商保存在33h號單元中,余數(shù)保存在34h單元中。筆算結(jié)果和程序運算結(jié)果一致,證明所設(shè)計的除法運算程序在一定數(shù)據(jù)范圍內(nèi)是正確的。非整除時的情況:計算兩個16進(jìn)制的數(shù)0efh(239d)和1ah(26d)的商通過筆算可知 239 / 26 = 9····

16、83;·5,通過微程序計算的結(jié)果也如此。計算結(jié)果保存在EM存儲器中,商保存在33h號單元中,余數(shù)保存在34h單元中。筆算結(jié)果和程序運算結(jié)果一致,證明所設(shè)計的除法運算程序在一定數(shù)據(jù)范圍內(nèi)是正確的。八.程序代碼 1.源程序代碼 乘法:move a, #8fhmove 30h, amove r0, amove a, #0dhmove 31h, amove r1, amove r2, #08hmove a, #00hmove r3, amul: move a, r2 subnc a, #01h move r2, a jumpc return move a, r3 rrc a move r3,

17、 a move a, r1 rrc a move r1, a jumpc jia jump muljia: move a, r3 addnc a, r0 move r3, a jump mulreturn: move a, #00h rrc a move a, r3 rrc a move 33h, a move a, r1 rrc a move 34h, a 除法:move a, #0efhmove 30h, amove 34h, amove a, #1ahmove 31h, amove a, #00hmove 33h, aloop: move a, 34h subisc a, 31h jum

18、pc return move 34h, a move a, 33h addisc a, #01h move 33h, a move a, 34h subisc a, #00h jumpz return1 jump loopreturn: addisc a, 31hreturn1: move 34h, a 2.微指令系統(tǒng)指令系統(tǒng)表 ADDNC A, R? 不帶進(jìn)位實現(xiàn)累加器A和寄存器R之間的加法,結(jié)果保存到累加器A中。 ADDISC A, R? 帶進(jìn)位實現(xiàn)累加器A和寄存器R之間的加法,結(jié)果保存到累加器A中。 ADDNC A, R? 不帶進(jìn)位實現(xiàn)累加器A和以寄存器R中的內(nèi)容為地址的數(shù)據(jù)之間的加法,

19、結(jié)果保存到累加器A中。 ADDNC A, MM 不帶進(jìn)位實現(xiàn)累加器A和存儲器MM之間的加法,結(jié)果保存到累加器A中。 ADDISC A, MM 帶進(jìn)位實現(xiàn)累加器A和存儲器MM之間的加法,結(jié)果保存到累加器A中。 ADDNC A, #II 不帶進(jìn)位實現(xiàn)累加器A和立即數(shù)II之間的加法,結(jié)果保存到累加器A中。 ADDISC A, #II 帶進(jìn)位實現(xiàn)累加器A和立即數(shù)II之間的加法,結(jié)果保存到累加器A中。 SUBNC A, R? 不帶進(jìn)位實現(xiàn)累加器A和寄存器R之間的減法,結(jié)果保存到累加器A中。 SUBISC A, R? 帶進(jìn)位實現(xiàn)累加器A和寄存器R之間的減法,結(jié)果保存到累加器A中。 SUBNC A, MM

20、不帶進(jìn)位實現(xiàn)累加器A和存儲器MM之間的減法,結(jié)果保存到累加器A中。 SUBISC A, MM 帶進(jìn)位實現(xiàn)累加器A和存儲器MM之間的減法,結(jié)果保存到累加器A中。 SUBNC A, #II 帶進(jìn)位實現(xiàn)累加器A和立即數(shù)II之間的減法,結(jié)果保存到累加器A中。 SUBISC A, #II 帶進(jìn)位實現(xiàn)累加器A和立即數(shù)II之間的減法,結(jié)果保存到累加器A中。 AND A R? 將累加器A中的內(nèi)容與寄存器R中的內(nèi)容進(jìn)行與運算,并將結(jié)果保存到累加器A中。 AND A R? 將累加器A中的內(nèi)容與以寄存器R中的內(nèi)容為地址的存儲器數(shù)據(jù)進(jìn)行與運算,并將結(jié)果保存到累加器A中。 AND A MM 將累加器A中的內(nèi)容與存儲器M

21、M中的內(nèi)容進(jìn)行與運算,并將結(jié)果保存到累加器A中。 AND A #II 將累加器A中的內(nèi)容與立即數(shù)II進(jìn)行與運算,并將結(jié)果保存到累加器A中。OR A R? 將累加器A中的內(nèi)容與寄存器R中的內(nèi)容進(jìn)行按位或運算,并將結(jié)果保存到累加器A中。 OR A R? 將累加器A中的內(nèi)容與以寄存器R中的內(nèi)容為地址的存儲器數(shù)據(jù)進(jìn)行按位或運算,并將結(jié)果保存到累加器A中。 OR A MM 將累加器A中的內(nèi)容與存儲器MM中的內(nèi)容進(jìn)行按位或運算,并將結(jié)果保存到累加器A中。 OR A #II 將累加器A中的內(nèi)容與立即數(shù)II進(jìn)行按位或運算,并將結(jié)果保存到累加器A中。 RRC A 累加器A帶進(jìn)位右移 JUMPC MM 有借位跳轉(zhuǎn)

22、到MM JUMPZ MM 為零跳轉(zhuǎn)到MM JUMP MM 無條件跳轉(zhuǎn)到MM MOVE A, #II 將立即數(shù)II傳送到累加器A中 MOVE A, MM 將存儲器MM中的內(nèi)容傳送到累加器A中 MOVE MM, A 將累加器A中的內(nèi)容傳送到存儲器MM中 MOVE R?, A 將累加器A中的內(nèi)容傳送到寄存器R中 MOVE A, R? 將寄存器R中的內(nèi)容傳送到累加器A中 MOVERPOS R? 將寄存器R中的內(nèi)容右移一位 MOVELPOS L? 將寄存器R中的內(nèi)容左移一位 TEST R?, #II 將寄存器R中的內(nèi)容和立即數(shù)II進(jìn)行與運算,結(jié)果不保存到寄存器R中,只改變標(biāo)志位。 CMP R? 將累加器A中的內(nèi)容減去寄存器R中的內(nèi)容,結(jié)果不保存到累加器A中,只改變標(biāo)志位。 9. 設(shè)計總結(jié)通過這次對微指令系統(tǒng)的設(shè)計以及對乘法和除法運算程序的設(shè)計,使我受益匪淺。在最初接觸到微指令時,對這些微指令的實際工作流程不是

溫馨提示

  • 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

提交評論