当前位置:文档之家› 计算机组成原理课程设计

计算机组成原理课程设计

课程设计报告课程设计名称:计算机组成原理系:学生姓名:班级:学号:成绩:指导教师:开课时间:2011-2012学年2 学期一、设计题目计算机组成原理课程设计——简单模型机的微程序设计二、主要内容通过课程设计更清楚地理解下列基本概念:1.计算机的硬件基本组成;2.计算机中机器指令的设计;3.计算机中机器指令的执行过程;4.微程序控制器的工作原理。

5.微指令的格式设计原则;在此基础上设计可以运行一些基本机器指令的微程序的设计三.具体要求1.通过使用作者开发的微程序分析和设计仿真软件,熟悉介绍的为基本模型机而设计的微程序的执行过程。

必须充分理解并正确解释下些问题:(1)微程序中的微指令的各个字段的作用。

哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。

(2)微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。

什么情况下,次地址字段才是将要执行的微指令的地址。

(3)在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解决与其它指令的微指令的微地址冲突。

(4)哪些微指令是执行所有指令都要用到的。

(5)解释一条机器指令的微程序的各条微指令的微地址是否连续?这些微指令的微地址的安排的严重原则是什么?(6)为什么读写一次内存总要用两条微指令完成?(7)机器程序中用到的寄存器是R0,是由机器指令中哪些位决定的?如果要用R1或R2,是否要改写微程序或改写机器指令?如果要,应如何改写?2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。

新增加的机器指令的功能是:求反指令NOT RS,RD :/(RS) →(RD)与指令AND RD,(addr):(RD)与(addr)→(RD)异或指令XOR RD,(addr):(addr)异或(RD)→(RD)或指令OR RD,(addr):(RD)或(addr)→(RD)减法指令SUB RD,RS :(RS)减(RD)→(RD)其中的RS、RD可以是R0、R1、R2中的任何一个。

四.进度安排共1.5周11天的时间,具体安排如下:1~2天:对整个课程设计的内容做详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容;3~5天:学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统(原有的5条指令)和微程序设计方法;6~9天:在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。

10~11天:根据自己设计的微程序系统写出相应的课程设计实验报告五.成绩评定正文一、模型机的CPU及系统硬件二、设计思想①实现分支:每一条机器指令执行完之后,就进行一次P(1)测试,根据P(1)测试跳到下一条机器指令的微地址。

机械指令执行中则是根据微指令的后六位来确定下一条微指令的地址。

②微地址的安排,将各条机械指令(IN、ADD、STA、OUT、JMP、NOT、AND、XOR、OR、SUB)通过P(1)测试,将每条机器指令的入口微地址的首位置为微指令01单元6~5位对应的数值。

如微指令02单元6~1位为000000,则每条机器指令的入口微地址的首位为0,IN对应的为03,ADD对应的为04,STA 对应的为05, OUT对应的为06,JMP对应的为07,NOT为08,AND对应的为09,XOR为0A,OR对应的为0B,SUB对应的为0C,然后将完成各条指令的其它微指令的微地址设置为连续的在指令寄存器IR中的8~5位的数值则由微指令02单元的后六位和对应的机械指令的入口微地址推出。

③模型机指令设计:该模型机共有十条机器指令:与指令AND、异或指令XOR、或指令OR、求反指令NOT、减法指令SUB、外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。

指令格式如下:助记符机器指令码AND 1001 0001 ××××××××XOR 1010 0001 ××××××××OR 1011 0001 ××××××××SUB 1100 0001NOT 1000 0001IN 0011 0000ADD 0100 0000 ××××××××STA 0101 0000 ××××××××OUT 0110 0000 ××××××××JMP 0111 0000 ××××××××说明:指令SUB、NOT、IN为单字节指令,其余均为双字节指令,××××××××为要读写的主存储器单元的二进制地址码。

④微指令的编码:先分析各条机器指令的功能,然后针对其功能将其用微指令表示的微指令流程图画好(如下所示),最后针对图中每条微指令要完成的功能设计好编码。

微流程图如下:细化微流程图如下:三、编写微程序基本模型机的微指令格式本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:1.编写的微指令代码如下:01:00000101111011011000001002:00000100110000000100000003:000001000001000000000001 ;IN04:000001011110110110001101 ;ADD05:000001011110110110010001 ;STA06:000001011110110110010011 ;OUT07:000001011110110110010110 ;JMP08:000001011010001000010111 ;NOT09:000001011110110110011000 ;AND0A:000001011110110110011100 ;XOR0B:000001011110110110100000 ;OR0C:000001011010001000100100 ;SUB0D:0000010011100000000011100E:0000010010110000000011110F:00000101101000100001000010:10010101100110100000000111:00000100111000000001001012:00000110100000100000000113:00000100111000000001010014:00000100101000000001010115:00000111000010100000000116:00000100110100011000000117:00001001100110100000000118:00000100111000000001100119:0000010010100000000110101A:0000010110110100000110111B:1011100110011010000000011C:0000010011100000000111011D:0000010010100000000111101E:0000010110110100000111111F:01101001100110100000000120:00000100111000000010000121:00000100101000000010001022:00000101101101000010001123:11101001100110100000000124:00000101101101000010010125:0110000110011010000000012.编写的机器指令代码如下:00H:10010001 ;AND R1,ADDR1→R101H:00010010 ;即00与14得00→R102H:10100001 ;XOR R1,ADDR1→R103H:00010011 ;即12异或00得12→R104H:10110001 ;OR R1,ADDR1→R105H:00010100 ;即08或12得1A→R106H:11000001 ;SUB (R0)-(R1)→R1即00-1A得E6→R1 07H:10000001 ;NOT R0求反→R1即00求反得FF→R108H:00110000 ;IN 置数开关SW→R009H:01000000 ;ADD (R0)+(0A)→R00AH:00010101 ;即00+17得17→R00BH:01010000 ;STA (R0) →(16H)0CH:00010110 ;即0DH:01100000 ;OUT (16H)→LED0EH:00010110 ;即输出为170FH:01110000 ;JMP 00→pc10H:0000000011H:12H:0000111013H:0001001014H:0000100015H:00010111测试过程具体分析:微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:09微指令000001011110110110011000执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:18微指令000001001110000000011001执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:19微指令000001001010000000011010执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:1A微指令000001011011010000011011执行的操作是:R1→B,LDDR2,转微地址:1B微指令101110011001101000000001执行的操作是:逻辑:AB,ALU→B,LDR1,转微地址:01执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:0A微指令000001011110110110011100执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:1C微指令000001001110000000011101执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:1D微指令000001001010000000011110执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:1E微指令000001011011010000011111执行的操作是:R1→B,LDDR2,转微地址:1F微指令011010011001101000000001执行的操作是:逻辑:A异或B,ALU→B,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:0B微指令000001011110110110100000执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:20微指令000001001110000000100001执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:21微指令000001001010000000100010执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:22微指令000001011011010000100011执行的操作是:R1→B,LDDR2,转微地址:23微指令111010011001101000000001执行的操作是:逻辑:A+B,ALU→B,LDR1,转微地址:01执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:0C微指令000001011010001000100100执行的操作是:R0→B,LDDR1,转微地址:24微指令000001011011010000100101执行的操作是:R1→B,LDDR2,转微地址:25微指令011000011001101000000001执行的操作是:算术:A减B,ALU→B,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:08微指令000001011010001000010111执行的操作是:R0→B,LDDR1,转微地址:17微指令000010011001101000000001执行的操作是:逻辑:/A,ALU→B,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:03微指令000001000001000000000001执行的操作是:输入开关SWB有效,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:04微指令000001011110110110001101执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:0D微指令000001001110000000001110执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:0E微指令000001001011000000001111执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:0F微指令000001011010001000010000执行的操作是:R0→B,LDDR1,转微地址:10微指令100101011001101000000001执行的操作是:算术:A加B,ALU→B,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:05微指令000001011110110110010001执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:11微指令000001001110000000010010执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:12微指令000001101000001000000001执行的操作是:存储器CE有效,写存储器,R0→B,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:06微指令000001011110110110010011执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:13微指令000001001110000000010100执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:14微指令000001001010000000010101执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:15微指令000001110000101000000001执行的操作是:算术:A,数码管LEDB有效,写LED,ALU→B,转微地址:01微指令000001011110110110000010执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),转微地址:07微指令000001011110110110010110执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:16微指令000001001101000110000001执行的操作是:存储器CE有效,存储器读,PCLOAD,允许PC加1(LDPC=1),转微地址:01四、问题回答(1)微程序中的微指令的各个字段的作用。

相关主题