計算機組成原理 乘法器和除法器課程設計_第1頁
計算機組成原理 乘法器和除法器課程設計_第2頁
計算機組成原理 乘法器和除法器課程設計_第3頁
計算機組成原理 乘法器和除法器課程設計_第4頁
計算機組成原理 乘法器和除法器課程設計_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、哈爾濱理工大學課程設計(計算機組成原理)題目: 簡單模型機指令系統的設計 班級: 姓名: 指導教師: 系主任: 2017年03月10日計算機組成原理(課程設計)設計過程情況表學生姓名 學號 班級 第一周遇到的問題及解決方法等情況(與同學討論、教師解答、查閱資料等)問題1 : 乘法指令如何設計循環語句解決方法:與老師討論模型機的原有的語句后,決定用減法和為零跳轉實現控制循環問題2:乘法指令如何取出每一位數字解決方法:查閱網上的資料,用乘數右移,與01B進行與運算,直到乘數為零第二周遇到的問題及解決方法等情況(與同學討論、教師解答、查閱資料等)問題1 : 除法指令如何判斷假除數和除數大小,假除數和

2、被除數大小解決方法:查閱資料后,決定自己設計指令,操作數兩組分別為寄存器和寄存器,寄存器和累加器問題2:除法指令如何控制除數的移位解決方法:查閱網上的資料和與同學討論后,決定除數固定位數,先左移四位,再逐一右移。 驗收教師提問、指出的問題及學生回答情況(必須按實驗室實際情況填寫)。問題1:如何判斷是八位數?回答:與FFH進行與運算問題2:除法實現第一步干什么?回答:固定除數的位數,先左移四位指出的問題:八位數的乘法,積的還是用一個寄存器保存會導致結果丟失 目 錄1.課程設計的目的 12.課程設計的任務13.課程設計所用設備及所需資料14.設計內容14.1設計原理14.1.1總體概述14.1.2

3、模型機的尋址方式24.1.3模型機微指令系統的特點34.2設計過程與步驟54.2.1. 模擬乘法除法的原理54.2.2對應算法分配硬件104.2.3設計全新的指/微指令系統124.3設計結果及分析144.3.1匯編語言程序144.3.2程序執行跟蹤165心得體會18 - 18-1.課程設計的目的1.在實驗機上設計機器指令及對應的微指令(微程序),從而進一步掌握微程序設計控制器的基本方法并了解指令系統與硬件結構的對應關系;2. 通過控制器的微程序設計,綜合理解計算機組成原理課程的核心知識并進一步建立整機系統的概念;3. 培養綜合實踐及獨立分析、解決問題的能力。2.課程設計的任務針對COP2000

4、實驗儀,首先通過綜合實驗了解該模型機微程序控制器原理(主要指熟悉該模型機指令/微指令系統的詳細情況),然后以實現二進制乘法和除法運算功能為應用目標,在COP2000的集成開發環境下,設計全新的指令系統并編寫對應的微程序;并編寫并運行實現乘法和除法的程序進行設計的驗證。3.課程設計所用設備及所需資料1. COP2000實驗系統2. PC機( COP2000仿真軟件)3. COP2000計算機組成原理實驗儀說明書4.設計內容4.1設計原理4.1.1總體概述COP2000模型機包括了一個標準CPU所具備所有部件,這些部件包括:運算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器

5、組R0-R3、程序計數器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲器EM、指令寄存器IR、微程序計數器uPC、微程序存儲器uM,以及中斷控制電路、跳轉控制電路。其中運算器和中斷控制電路以及跳轉控制電路用CPLD來實現,其它電路都是用離散的數字電路組成。微程序控制部分也可以用組合邏輯控制來代替。結構圖如圖1所示 模型機為8位機,數據總線、地址總線都為8位,但其工作原理與16位機相同。圖1 仿真結構圖模型機的指令碼為8位,根據指令類型的不同,可以有0到2個操作數。指令碼的最低兩位用來選擇R0-R3寄存器,在微程序控制方式中,用指令碼做為

6、微地址來尋址微程序存儲器,找到執行該指令的微程序。而在組合邏輯控制方式中,按時序用指令碼產生相應的控制位。在本模型機中,一條指令最多分四個狀態周期,一個狀態周期為一個時鐘脈沖,每個狀態周期產生不同的控制邏輯,實現模型機的各種功能。模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。模型機的缺省的指令集分幾大類: 算術運算指令、邏輯運算指令、移位指令、數據傳輸指令、跳轉指令、中斷返回指令、輸入/輸出指令。4.1.2模型機的尋址方式模型機的尋址方式分五種,具體說明如表1所示。 4.1.3模型機微指令系統的特點1. 模型機微指令系統格式模型機有24位控制位以控制寄存器的

7、輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。微程序控制器由微程序給出24位控制信號,而微程序的地址又是由指令碼提供的,也就是說24位控制信號是由指令碼確定的。該模型機的微指令的長度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。這24位操作控制信號的功能如表2所示:(按控制信號從左到右的順序依次說明)表1 模型機的尋址方式模型機的尋址方式尋址方式說明指令舉例指令說明累加器尋址操作數為累加器ACPL A將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址

8、參與運算的數據在R0R3的寄存器中ADD A,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存器間接尋址參與運算的數據在存儲器EM中,數據的地址在寄存器R0-R3中MOV A,R1將寄存器R1的值作為地址,把存儲器EM中該地址的內容送入累加器A中存儲器直接尋址參與運算的數據在存儲器EM中,數據的地址為指令的操作數。AND A,40H將存儲器EM中40H單元的數據與累加器A的值作邏輯與運算,結果存入累加器A立即數尋址參與運算的數據為指令的操作數。SUB A,#10H從累加器A中減去立即數10H,結果存入累加器ACOP2000中有7個寄存器可以向數據總線輸出數據, 但在某一特定時刻只能有

9、一個寄存器輸出數據. 由X2,X1,X0決定那一個寄存器輸出數據,如表3所示。表2 微指令控制信號的功能操作控制控 制 信 號 的 說 明XRD外部設備讀信號,當給出了外設的地址后,輸出此信號,從指定外設讀數據。EMWR程序存儲器EM寫信號。EMRD程序存儲器EM讀信號。PCOE將程序計數器PC的值送到地址總線ABUS上。EMEN將程序存儲器EM與數據總線DBUS接通,由EMWR和EMRD決定是將DBUS數據寫到EM中,還是從EM讀出數據送到DBUS。IREN將程序存儲器EM讀出的數據打入指令寄存器IR和微指令計數器PC。EINT中斷返回時清除中斷響應和中斷請求標志,便于下次中斷。ELPPC打

10、入允許,與指令寄存器的IR3、IR2位結合,控制程序跳轉。MAREN將數據總線DBUS上數據打入地址寄存器MAR。MAROE將地址寄存器MAR的值送到地址總線ABUS上。OUTEN將數據總線DBUS上數據送到輸出端口寄存器OUT里。STEN將數據總線DBUS上數據存入堆棧寄存器ST中。RRD讀寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。RWR寫寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。CN決定運算器是否帶進位移位,CN=1帶進位,CN=0不帶進位。FEN將標志位存入ALU內部的標志寄存器。X2X2、X1、X0三位組合來譯碼選擇將數據送到DBUS上的寄存器。X1X0WE

11、N將數據總線DBUS的值打入工作寄存器W中。AEN將數據總線DBUS的值打入累加器A中。S2S2、S1、S0三位組合決定ALU做何種運算。S1S0X2 X1 X0輸出寄存器0 0 0IN_OE 外部輸入門0 0 1IA_OE 中斷向量0 1 0ST_OE 堆棧寄存器0 1 1PC_OE PC寄存器1 0 0D_OE 直通門1 0 1R_OE 右移門1 1 0L_OE 左移門1 1 1沒有輸出COP2000中的運算器由一片EPLD實現. 有8種運算, 通過S2,S1,S0來選擇。運算數據由寄存器A及寄存器W給出, 運算結果輸出到直通門D,如表4所示。S2 S1 S0功能0 0 0A+W 加0 0

12、 1A-W 減0 1 0A|W 或0 1 1A&W 與1 0 0A+W+C 帶進位加1 0 1A-W-C 帶進位減1 1 0A A取反1 1 1A 輸出A表3.寄存器微指令 表4.運算器微指令4.2.1. 模擬乘法除法的原理1. 無符號乘法:(1)實例演示(列乘法具體例子演算的算式):乘數與被乘數假設為00010000(16)與00000110(6),結果應該為0101000(80)。運算圖示為表5所示。表5 乘法演示0 0 0 1 0 0 0 0被乘數 × 0 0 0 0 0 1 1 0乘數0 0 0 0 0 0 0 0 初始部分積 0 0 0 0 0 0 0 0 乘數最低

13、位為0,部分積加00 0 0 0 0 0 0 0部分積0 0 1 0 0 0 0 0被乘數左移一位 × 0 0 0 0 0 0 1 1乘數右移一位0 0 0 0 0 0 0 0部分積 0 0 1 0 0 0 0 0乘數最低位為1,部分積加被乘數0 0 1 0 0 0 0 0部分積0 1 0 0 0 0 0 0被乘數左移一位 × 0 0 0 0 0 0 0 1乘數右移一位0 0 1 0 0 0 0 0 部分積 0 1 0 0 0 0 0 0乘數最低位為1,部分積加被乘數(0) 0 1 1 0 0 0 0 0計算完畢,01100000(80),且無進位(2)硬件原理框圖:硬件原

14、理實現及分配如圖2所示。圖 2乘法實現硬件原理圖(3)算法流程圖:算法流程實現及順序如圖3所示。圖 3乘法實現流程圖2. 無符號除法(1)實例演示(即,列4位除法具體例子演算的算式):假設被除數和除數為01010111(87)和1010(10)結果商為1000(8)運算圖示為: 表6 除法演示0初始商1 0 1 0 0 1 0 1 0 1 1 1初始除數與被除數1 0 1 0 0 0 0 0由除數初始化假除數,將除數左移4位0 1 0 1 0 1 1 1判斷被除數與假除數的關系,小于假除數(0) 0 1 0 1 0 0 0 0 假除數右移一位,商左移一位 0 0 0 0 0 1 1 1被除數大

15、于假除數,相減產生新的被除數(01) 0 0 1 0 1 0 0 0 假除數右移一位,商左移一位并加一0 0 0 0 0 1 1 1被除數小于假除數(010) 0 0 0 1 0 1 0 0假除數右移一位,商左移一位 0 0 0 0 0 1 1 1被除數小于假除數(0100) 0 0 0 0 1 0 1 0 假除數右移一位,商左移一位0 0 0 0 1 0 1 0被除數小于假除數(01000) 0 0 0 0 0 1 0 1假除數右移一位,商左移一位此時此時商為01000余數為00000111。余數小于除數,算法結束(2)硬件原理框圖:硬件原理實現及分配如圖4所示。圖 4 除法實現硬件原理圖(

16、3)算法流程圖:算法流程實現及順序如圖5所示。圖 5 乘法實現流程圖4.2.2對應算法分配硬件1. 無符號乘法符號乘法對應于COP2000實驗儀的硬件具體分配使用情況如表7所示:表7 無符號乘法的硬件分配情況硬件名稱實現算法功能描述寄存器R0計算時用來存放部分積和最后的積寄存器R1 初始化時,用來存放被乘數; 在程序執行的過程中,用來存放向左移位后的被乘數。寄存器R2 初始化時,用來存放乘數; 在程序執行的過程中,用來存放向右移位后的乘數。累加器A執行ADD A,R?(加法)、SHL R?(左移一位)、SHR R?(右移一位)等命令時所必須使用的寄存器。寄存器W執行ADD A,R?(加法)、T

17、EST R?,#II(測試R2的末位)等雙操作數命令時所必須使用的寄存器。左移門L用來實現相應數據左移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。直通門D用來控制ALU的執行結果是否輸出到數據總線。右移門R用來實現相應數據右移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。程序計數器PC 控制程序按順序正常執行; 當執行轉移指令時,從數據線接收要跳轉的地址,使程序能夠按需要自動執行。 當要從EM中讀取數據時,由PC提供地址。存儲器EM存儲指令和數據。微程序計數器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令。輸出寄存器OUT可以將運算結果輸出到

18、輸出寄存器OUT(本實驗未用)。堆棧ST當存儲于累加器A的值將要受到破壞時,將其數據保存在堆棧ST中,使程序能夠正常地執行。2. 無符號除法無符號除法對應于COP2000實驗儀的硬件具體分配使用情況如表8所示:表8 無符號除法的硬件分配情況硬件名稱實現算法功能描述寄存器R0初始化時,用來存放除數在程序執行過程中,用來存放向右移位后的假除數寄存器R1初始化時,用來存放被除數;寄存器R2在程序執行過程中,用來保存當前算得的商。寄存器R3在程序執行過程中,用來保存除數的值。累加器A 計算時用來存放中間結果; 執行CMP R?,A(比較) SUB A,R?(減法)等命令時所必須使用的寄存器。寄存器W執

19、行SUB A,R?(減法)等雙操作數命令時所必須使用的寄存器。左移門L用來實現相應數據左移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。直通門D用來控制ALU的執行結果是否輸出到數據總線。右移門R用來實現相應數據右移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。程序計數器PC 控制程序按順序正常執行; 當執行轉移指令時,從數據線接收要跳轉的地址,使程序能夠按需要自動執行。 當要從EM中讀取數據時,由PC提供地址。存儲器EM存儲指令和數據。微程序計數器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令。輸出寄存器OUT可以將運算結果輸出到輸出寄存器O

20、UT(本實驗未用)。4.2.3設計全新的指/微指令系統1. 設計新的指令集,如圖6 所示圖6 指令系統2. 設計新的微指令集,如圖7 所示圖7-1 微指令系統圖7-2 微指令系統圖7-3 微指令系統4.3設計結果及分析4.3.1匯編語言程序1.無符號乘法匯編程序MOV R0,#00H 積初始化MOV R1,#10H 被乘數初始化MOV R2,#05H 乘數LOOP :AND R2,#0FFH 判斷乘數是否為零JZ LAST 為零,則結束計算AND R2,#01H 判斷乘數末尾是否為一JZ NEXT 為一跳轉MOV A,R1ADD R0,A 部分積更新JC IFYC 溢出判斷NEXT :SHL

21、R1 被乘數左移SHR R2 乘數左移JMP LOOPIFYC :MOV R3,#11HLAST :OVER2. 無符號除法匯編程序MOV R0,#0AHMOV R1,#57HMOV R2,#00HMOV R3,#0AHSHL R0SHL R0SHL R0SHL R0BEGIN :MOV A,R3CMP R0,AJC LASTMOV A,R0CMP R1,AJC SMALLJMP NEXTNEXT :MOV A,R0SUB R1,ASHL R2ADD R2,#01HSHR R0MOV A,R3CMP R0,AJC LASTJMP BEGINSMALL:SHL R2SHR R0MOV A,R3C

22、MP R0,AJC LAST 4.3.2程序執行跟蹤1. 乘法程序跟蹤,如表9所示表9 乘法程序跟蹤匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV R0,#00H000400初始化部分積E7FBFFCBFFFF01020405R0:00HMOV R1,#08H020508初始化被乘數E7FBFFCBFFFF03040405R1:08HMOV R2,#07H040607初始化乘數E7FBFFCBFFFF05060405R2:07HLOOP:AND R2,#0FFH060E0F乘數是否為0C7FFEFFFF7F7FFFE9BCBFFFF070808080C0D

23、0E0FA:07HW:0FHJZ LAST081414為0則跳轉結束C6FFFFCBFFFF090A1415EM:14HTEST R2,#01H0A0E01乘數末尾是否為0C7FFEFFFF7F7FFFE9BCBFFFF0B0C0C0C0C0D0E0FA:07HW:01HJZ NEXT0C1410為0跳轉C6FFFFCBFFFF0D0E1415EM:10HMOV A,R10E09將被乘數放到A寄存器中E7FBFFCBFFFF0F0F0405A:08HADD R0,A0F1C將部分積與被乘數相加FFF7EFFFFA98CBFFFF1010101C1D1ER0:08HNEXT:SHL R11025

24、被乘數左移FFF7F7FFF9DFCBFFFF111111242526R1:10HSHR R2112A乘數右移FFF7F7FFF9BFCBFFFF12121228292AR2:03HJMP LOOP121806進行循環C6FFFFCBFFFF13061819EM:18HEM:06HLAST:OVER142C結束CBFFFF152CEM:2CH2. 除法程序執行跟蹤,如表10所示。表10 除法程序跟蹤匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV R0,#1000040A初始化除數E7FBFFCBFFFF01020405R0:0AHMOV R1,#87020

25、557初始化被除數E7FBFFCBFFFF03040405R1:57HMOV R2,#0040600初始化商E7FBFFCBFFFF05060405R2:00HMOV A,R00608將R0放在寄存器A中E7FBFFCBFFFF07070405A:00HSHL R00824將原除數左移產生假除數FFF7F7FFF9DFCBFFFF090909242526A:0AHL:14HR0:14HSHL R00924將原除數左移產生假除數FFF7F7FFF9DFCBFFFF0A0A0A242526A:14HL:28HR0:28HSHL R00A24將原除數左移產生假除數FFF7F7FFF9DFCBFFFF

26、0B0B0B242526A:28HL:50HR0:50HSHL R00B24將原除數左移產生假除數FFF7F7FFF9DFCBFFFF0C0C0C242526A:50HL:A0HR0:A0HBEGIN:MOV A,R00C34將假除數放在A寄存器FFFF57CBFFFF0D0D3435A:0AHCMP R0,A0E3D比較除數與假除數FFFF8FFFF7F7FFFE99CBFFFF0F0F0F0F3C3D3E3FW:00HA:0AHD:4DHJC LAST0F1021假除數小于除數則跳轉結束C6FFFFCBFFFF10111011EM:10HEM:21HMOV A,R01108將假除數放到A寄

27、存器E7FBFFCBFFFF12120809A:A0HCMP R1,A123D比較余數與假除數的大小FFFF8FFFF7F7FFFE99CBFFFF131313133C3D3E3FA:57HW:A0HD:B7HJC SMALL13101D余數小于假除數跳轉C6FFFFCBFFFF141D1011E:10HE:1DHNEXT :JMP NEXT1418跳轉C6FFFFCBFFFF1E1E1112E:10HE:1DHMOV A,R01508將假除數放到A寄存器E7FBFFCBFFFF16160809R0:50HSUB R1,A1639用余數減去假除數FFFF8FFFF7F7FFFA99CBFFFF1717171738393A3BR1:07HSHL R21726將商左移一位FFF7F7FFF9DFCBFFFF181818242526R2:00HADD R2,#01182201將商加一FFF7F7C7FFEFFFFA98CBFFFF19191A1A20212223R2:01HSHR R01A28將假除數右移一位FFF7F

溫馨提示

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

評論

0/150

提交評論