程序设计—计算机组成原理课程设计.doc_第1页
程序设计—计算机组成原理课程设计.doc_第2页
程序设计—计算机组成原理课程设计.doc_第3页
程序设计—计算机组成原理课程设计.doc_第4页
程序设计—计算机组成原理课程设计.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理课程设计简单模型机的微程序设计 姓名 毛 晨 班级 08计本二班 学号 080303219 指导老师 卞 利 二一年六月目录一、课程设计的目的3二、课程设计的内容和要求3三、基本模型机的硬件结构3四、指令系统设计5五、微程序设计5六、心得体会13一、 课程设计的目的 通过课程设计更清楚地理解下列基本概念:1 计算机的硬件基本组成;2 计算机中机器指令的设计;3 计算机中机器指令的执行过程;4 微程序控制器的工作原理;5 微指令的格式设计原则。在此基础上设计可以运行一些基本机器指令的微程序的设计二、 课程设计的内容和要求1通过使用蒋君老师开发的微程序分析和设计仿真软件,熟悉本文介绍的为基本模型机而设计的微程序的执行过程。必须充分理解并正确解释下列问题: 微程序中的微指令的各个字段的作用。哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。 微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。什么情况下,次地址字段才是将要执行的微指令的地址。 在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。 哪些微指令是执行所有指令都要用到的。 解释一条机器指令的微程序的各条微指令的微地址是否连续?在设计微程序时,要注意尽可能使整个微程序的地址空间连续,如何实现? 为什么读写一次内存总要用两条微指令完成?机器程序中的用到的寄存器是R0,是由机器指令中哪些位决定的?如果要用R1或R2,是否要改写微程序或改写机器指令?如果要,应如何改写? 2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。新增加的机器指令的功能是:寄存器间的数据传送指令MOV RD,RS:(RS)(RD)减法指令 SUB R0,(ADDR):(R0)-(addr)(R0)与指令 AND RD,RS:(RS)AND(RD)(RD)或指令 OR RD,RS:(RS)OR(RD)(RD)异或指令 XOR RD,RS:(RS)XOR(RD)(RD)其中的RS、RD可以是R0、R1、R2中的任何一个。3写出课程设计报告,解释自己的设计思想,比如,如何实现各指令的分支,如何重新安排各指令对应的微程序中的微指令的微地址,如何设计各微指令的编码。要求画出用微命令表示的微流程图并适当加以解释。三、 基本模型机的硬件结构基本模型机的CPU及系统硬件组成如图1所示:图1 模型机的CPU及系统硬件组成各部件的功能及控制信号如下: 运算器由算逻部件ALU(8位)、暂存器DR1、DR2及通用寄存器等组成。ALU的功能控制信号为S3、S2、S1、S0、M、CN,可以实现48种算术和逻辑运算功能,如图2所示。运算器为单总线结构,其输入端分别连接到暂存器DR1和DR2,其装入数据的微命令分别为LDDR1和LDDR2,当它们为1电平时由节拍脉冲T4将数据总线上的数据装入相应的暂存器。R0、R1、R2为通用寄存器。R0的装入数据的微命令为LDR0,R1的装入数据的微命令为LDR1,R2的装入数据的微命令为LDR2。299为实现移位运算的装置,当299B微命令有效时,其数据端和数据总线连接。控制器由程序计数器PC、指令寄存器IR、地址寄存器AR、时序电路、控制存储器及相应的译码电路组成。图2 74LS181功能表程序计数器PC的功能是存放下一条指令的地址,其输出是向地址寄存器提供要将执行的指令在存储器中的地址。在提供地址后立即加1,指向指令的下一个字节或下一条指令的地址。其控制微命令有三个。当LOAD=0而LDPC=1时,由T4的正跳变将数据总线上的数据装入PC;当当LOAD=1而LDPC=1时P1的内容加1;当PCB=1时,PC中的地址信息送到数据总线上。指令寄存器IR用于存放当前执行的指令。当微命令LDIR=1时,由节拍脉冲T3将数据总线上的数据装入。 地址寄存器AR存放要从存储器中读出的数据或指令的地址或要向存储器写入数据或指令的地址。当微命令LDAR=1时,由节拍脉冲T3将数据总线上的数据装入。存储器RAM用于存放程序和数据。当片选信号CE=0时,如果W/R为0,则根据AR中的地址,从存储器中读出数据并送到数据总线上;如果W/R为1,则根据AR中的地址,向存储器中写入数据总线上的数据。片选信号CE是由微指令中的有关字段(B1B0)译码产生的。模型机有两个外部设备:输入设备是置数开关SW,用于设置数据或地址,当微命令SWB=0时,设置的数据送到数据总线上;SWB也是由微指令中的有关字段(B1B0)译码产生的。输出设备是两位LED数码管,当微命令LEDB=1时,数据总线上的数据送到数码管显示。四、 指令系统设计 根据基本模型机的硬件设计机器指令:外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、寄存器间的数据传送指令MOV、减法指令SUB、与指令AND、或指令OR、异指令XOR、无条件转移指令JMP。指令格式如下:助记符 机器指令码说明IN 0000 R0 ; 置数开关SW(KD0KD7)的状态R0ADD addr 0100 RSRD ; (RS)+(addr)(RD)STA addr 0110 RS ; (RS)(addr)OUTaddr 0111 ; (addr)输出设备LEDMOV 0010 RSRD ;(RS)(RD)SUB addr 1001 RSRD ; (RS)-(addr)(RD)AND 1000 RSRD ; (RS)AND(RD)(RD)OR 1001 RSRD ; (RS)OR(RD)(RD)XOR 1010 RSRD ; (RS)XOR(RD)(RD)JMP addr 1100 ; addrPC说明: 指令IN、MOV、AND、OR、XOR为单字节指令,其余均为双字节指令, 为要读写的主存储器单元的二进制地址码。机器指令码的前四位为各自不同的四位二进制码,可通过P1测试产生十个不同的地址。机器指令的后四位用于指定具体的寄存器,如00表示寄存器R0,01表示寄存器R1,10表示寄存器R2;机器指令的23位表示的是源寄存器,而机器指令的01位则表示的是目的寄存器。五、 微程序设计1.用微命令表示的读写主存及十一条指令的执行流程05010208ADDIN01SWB有效LDRiCE有效WR=0LDIRP(1)测试 PCB LDAR LDPC0104MOVOUTSTAXORJMPSUB0C07090A0B080B06RSB有效LDRiPCBLDARLDPCRSB有效LDDR1PCBLDARLDPCPCBLDARLDPCPCBLDARLDPCPCBLDARLDPC1814191B1E1203RDB有效LDRiCE有效WR=0LDARRDB有效LDDR2CE有效WR=0LDARCE有效WR=0LDARCE有效WR=0LDADCE有效WR=0LDAR0115131A1C01RDB有效LDDR1XORLDRiALUBRSB有效CE有效WR=1CE有效WR=0LDDR1CE有效WR=0LDDR2161DRDB有效LDDR1RDCE有效WR=0LDDR20101ALUBLEDBALU=AWR=1101117ADDLDRiALUBSUBLDRiALUB0101ORANDPCBLDARLDPC0E0DPCBLDARLDPCRSB有效LDDR10F25231FSW有效LDARRDB有效LDDR2CE有效WR=0LDAR26R0BCE有效WR=12420ORLDRiALUBRDB有效LDDR1210111CE有效WR=0LDDR20122ANDLDRiALUB01测试指令00H:00000000 ;IN RO:SW-RO01H:00010000 ;ADD RO+99-R0=9902H:0001001103H:00100000 ;STA R0-18H04H:0001100005H:01010001 ;MOV RO-R1=9906H:00100001 ;STA R1-19H=9907H:0001100108H:00011010 ;ADD R2+0F-R2=OF09H:00010100 ;14H0AH:01100000 ;SUB R0-72=270BH:00010101 ;15H0CH:01111001 ;AND R2&R1-R1=090DH:10000100 ;OR R1orR0-R0=2F0EH:10010010 ;ROxorR2=200FH:00110000 ;27-LED10H:00010110 ;16H11H:01000000 ;JMP-0012H:0000000013H:1001100114H:0000111115H:0111001016H:00100111微指令00:00000101111011011000001001:00000100110000000100010102:00000100000100000000000103:00000101111011011000001004:00000100110000000100010105:00000101111011011000001106:00000100111000000000010007:00000100101100000000010108:00000101101001000000011009:0001010110011010000000010A:0000010111101101100000100B:0000010011000000010001010C:0000010110100010000110000D:0000010110110100000110010E:0110110110011010000000010F:00000101111011011000001010:00000101111011011000011111:00000100111000000001000012:00000100101100000001000113:00000101101001000001001014:01100001100110100000000115:00000101111011011000001016:00000101100100100001101117:00000101100100100001101118:00000101100101000000000119:0000010111101101100000101A:0000010111101101100100111B:0000010011100000000101001C:0000011010000010000000011D:0000010111101101100000101E:0000010011000000010001011F:00000101111011011001010120:00000100111000000001011021:00000100101000000001011122:00000111000010100000000123:00000101111011011000001024:00000100110000000100010125:00000101111011011001101026:00000100110100000000000127:00000101111011011000001028:00000100110000000100010129:0000010110100010000110002A:0000010110110100000110012B:1011110110011010000000012C:0000010111101101100000102D:0000010011000000010001012E:0000010110100010000110002F:00000101101101000001100130:11101101100110100000000131:00000101111011011000001032:00000101111011011010010133:00000100111000000001010034:00000110100000100010011035:0000010111101101100000102.微指令的逐条分析微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:05微指令000001000001000000000001执行的操作是:输入开关SWB有效,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:06微指令000001011110110110000011执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:03微指令000001001110000000000100执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:04微指令000001001011000000000101执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:05微指令000001011010010000000110执行的操作是:R0B,LDDR1,转微地址:06微指令000101011001101000000001执行的操作是:算术:A+B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:07微指令000001011010001000011000执行的操作是:R0B,LDDR1,转微地址:18微指令000001011011010000011001执行的操作是:R1B,LDDR2,转微地址:19微指令011011011001101000000001执行的操作是:逻辑:A异或B,ALUB,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:08微指令000001011110110110000111执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:07微指令000001001110000000010000执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:10微指令000001001011000000010001执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:11微指令000001011010010000010010执行的操作是:R0B,LDDR1,转微地址:12微指令011000011001101000000001执行的操作是:算术:A减B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:09微指令000001011001001000011011执行的操作是:R0B,LDR1,转微地址:1B微指令000001011001010000000001执行的操作是:R1B,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0A微指令000001011110110110010011执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:13微指令000001001110000000010100执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:14微指令000001101000001000000001执行的操作是:存储器CE有效,写存储器,R0B,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0B微指令000001011110110110010101执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:15微指令000001001110000000010110执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:16微指令000001001010000000010111执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:17微指令000001110000101000000001执行的操作是:算术:A,数码管LEDB有效,写LED,ALUB,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0C微指令000001011110110110011010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:1A微指令000001001101000000000001执行的操作是:存储器CE有效,存储器读,PCLOAD,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000101执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0D微指令000001011010001000011000执行的操作是:R0B,LDDR1,转微地址:18微指令000001011011010000011001执行的操作是:R1B,LDDR2,转微地址:19微指令101111011001101000000001执行的操作是:逻辑:A与B,ALUB,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论