计算机组成原理课程设计报告.doc

上传人:wux****ua 文档编号:9271573 上传时间:2020-04-04 格式:DOC 页数:25 大小:472KB
返回 下载 相关 举报
计算机组成原理课程设计报告.doc_第1页
第1页 / 共25页
计算机组成原理课程设计报告.doc_第2页
第2页 / 共25页
计算机组成原理课程设计报告.doc_第3页
第3页 / 共25页
点击查看更多>>
资源描述
课 程 设 计 报 告课程设计名称: 计算机组成原理 系 : 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 开课时间: 学年 学期一设计题目计算机组成原理课程设计简单模型机的微程序设计二主要内容通过课程设计更清楚地理解下列基本概念:1.计算机的硬件基本组成;2.计算机中机器指令的设计3.计算机中机器指令的执行过程;4.微程序控制器的工作原理。5.微指令的格式设计原则;在此基础上设计可以运行一些基本机器指令的微程序的设计三具体要求数据传送指令 MOV RD,RS:(RS) (RD)减法指令 SUB RD,RS:(RS)减(RD)(RD)或指令 OR RD,(addr):(RD)或(addr)(RD)异或指令 XOR RD,(addr):(addr)异或(RD)(RD)与指令 AND RD,RS:(RS)与(RD)(RD)其中的RS、RD可以是R0、R1、R2中的任一个。四进度安排共1.5周11天的时间,具体安排如下:12天:对整个课程设计的内容做详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容;35天:学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统(原有的5条指令)和微程序设计方法;69天:在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。1011天:根据自己设计的微程序系统写出相应的课程设计实验报告五成绩评定正文一、模型机的CPU及系统硬件 基本模型机的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、时序电路、控制存储器及相应的译码电路组成。程序计数器PC的功能是存放下一条指令的地址,其输出是向地址寄存器提供要将执行的指令在存储器中的地址。在提供地址后立即加1,指向指令的下一个字节或下一条指令的地址。其控制微命令有三个。当LOAD=0而LDPC=1时,由T4的正跳变将数据总线上的数据装入PC;当当LOAD=1而LDPC=1时PC的内容加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、无条件转移指令JMP。指令格式如下: 助记符 机器指令码说明IN 0000 0000 ; 置数开关SW(KD0KD7)的状态R0ADD addr 0001 0000 ; (R0)+(addr)(R0)STA addr 0010 0000 ; (R0)(addr)OUT addr 0011 0000 ; (addr)输出设备LEDJMP addr 0100 0000 ;addrPC说明: 指令IN为单字节指令,其余均为双字节指令, 为要读写的主存储器单元的二进制地址码。根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令NADD、指令STA、输出到外设指令OUT、无条件转移指令JMP、数据传送指令 MOV、减法指令SUB、或指令 OR、异或指令 XOR、与指令AND。指令设计格式如下:00H:00110000 ; IN R0:(SW)(R0)01H:01000000 ; ADD R0,30:(R0)+(30)(R0)02H:0011000003H:01010000 ; 31,R0:(R0)(31)04H:0011000105H:01100000 ; OUT 31:(31)(LED)06H:0011000107H:10000100 ; MOV R0,R1:(R1)(R0)08H:10010001 ; SUB R1,R0:(R0)(R1)(R1)09H:10100000 ; OR R0,(addr):(R0)(addr)(R0)0AH:001101010BH:10110000 ; XOR R0,(addr):(addr)(R0)(R0)0CH:001101100DH:11000001 ; AND R0,R1:(R1)与(R0)(R0)0EH:01110000 ; JMP 00: 00(PC)0FH:0000000030H:0001000135H:0001000136H:00010001三、指令微流程分析 这十条指令的微流程图如图所示:0A0C2221201F1E1D1C1B1AROBUSBUSDR1DR1XORDR2R001ROBUSBUSDR1RAMBUSBUSDR2JMPANDXOR01R1BUSBUSDR2(DR1ANDR2)R0R0BUSBUSDR1RAMBUSBUSARRAMBUSBUSDR2PCARPC+10BDR1ORDR2R00119RAMBUSBUSARPCARPC+1OR18(DR1-DR2)R00117R1BUSBUSDR2R0BUSBUSDR109SUBMOV0108R1BUSBUSR001RAMBUSBUSPC16PCARPC+107INADDOUTSTA06PCARPC+113RAMBUSBUSAR14RAMBUSBUSDR115DR1LED010405PCARPC+111RAMBUSBUSAR12R0BUSBUSRAM010DRAMBUSBUSAR0ERAMBUSBUSDR20FR0DR11001(D1+DR2)R0PCARPC+101SWR0RAMBUSBUSIRP(1)测试PCARPC+1030102图3 用数据流表示的微程序流程该图是运行微程序的数据流图,实际上并没有分解到微命令一级。为了设计微程序,还应该根据此图进一步细化到微命令(微操作)一级。例如PCAR,实际上应该同时发出PCB、LDAR两个微命令;PC+1应该发出LDPC微命令;SWR0应该发出SWB、LDRi(与指令码中的相应位共同译码产生LDR0微命令)两个微命令;RAMBUS应该发出CE有效和读存储器两个微命令;BUSRAM应该发出CE有效和写存储器两个微命令;R0是指R0B微命令有效等等。据此可将该图改画成下图:01运行微程序PCBLDARLDPCCE有效W/R=0LOADALU做加LDRiALUBR0B有效LDDR1ALUBLEDBALU=AW/R=1CE有效W/R=0LDDR1CE有效W/R=0LDARR0BCE有效W/R=1CE有效W/R=0LDARCE有效W/R=0LDDR2CE有效W/R=0LDARPCBLDARLDPCSUBMOVJMPOUTSTAADDINR1BLDRiPCBLDARLDPCPCBLDARLDPCPCBLDARLDPCSWB有效LDRi02CE有效W/R=0LDIRP(1)测试ORANDXOR0C08030B0A0907060504R0B有效LDDR1PCBLDARLDPCALU做“与”LDRiALUBR1BLDDR2R0BLDDR1PCBLDARLDPC211D19171613110DR1B有效LDDR2CE有效W/R=0LDARCE有效W/R=0LDAR010114221E1A18120EALU做减法LDRiALUBCE有效W/R=0LDDR2CE有效W/R=0LDDR201150F1F1B01R0B有效LDDR1R0B有效LDDR10101201C100101ALU做异或LDRiALUB01ALU做或LDRiALUB01图4 用微命令表示的执行十条基本指令的微指令流程 该图中每个框上的数字表示该条微指令在控存中的地址(与指令格式有关,也与设计者的意愿有关)。如何在一条微指令中实现一个框中的微操作与微指令的格式密切相关。四、基本模型机的微指令格式 本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下: 其中,S3、S2、S1、S0、M、CN(A24A19位)为ALU运算类型的控制字段,其输出不需译码直接连接到ALU的对应控制信号即可。需要指出的是,该字段无论如何编码,ALU都要进行某种运算,但是只要不发出ALUB微命令,ALU的运算结果都不会送到数据总线上,也就是不会对其它部件的操作产生任何影响。在设计微程序时,只要不发ALUB微命令,该字段的编码可以任意设置。 A18位为输出设备(LED)和主存(RAM)的读写控制字段,该位为0,表示读;该位为1,表示写。 A17A16位(B1B0)字段用于选择外设和主存。B1B0=01选择主存(CE有效),B1B0=00选择输入数据开关(SWB有效),B1B0=10选择输出LED(LEDB有效)。B1B0=11对本模型机无效,即没有选中任何外设或主存。 对本模型机而言,上述三位可以看成一个字段,其编码的含义如下: A18A17A16=000或100 从输入开关SW读数据 A18A17A16=001 从主存读数据 A18A17A16=101 向主存写数据 A18A17A16=110 向LED写数据 其它组合无意义。 A6A1位为6位的预置后续微地址,“预置”的含义是该字段与微地址控制字段以及指令寄存器等部件的内容共同产生下一条微指令在控存中的微地址。 A、B、C 三个译码字段,分别由三组译码控制电路译码产生各种微命令。 A字段用于产生各寄存器的数据装入微命令,各种编码的含义如上表所示。 由于模型机有三个通用寄存器(R0、R1、R2),它们都有相应的数据装入微命令,为了不增加微指令的宽度,该字段只设计了一个LDRi命令。为了区分究竟是哪个寄存器装入数据,要根据指令寄存器的最低两位(I1I0)的状态而定:当I1I0=00时,发LDR0微命令;I1I0=01时,发LDR1微命令;I1I0=10时,发LDR2微命令;I1I0=11时,对本模型机无效; B字段中的RSB、RDB、RIB分别为源寄存器的内容送数据总线、目的寄存器送数据总线及变址寄存器送数据总线的微命令,其功能是根据机器指令来选通三个工作寄存器R0、R1及R2之一,将其内容送数据总线。 具体规则如下: 如果RDB有效,根据指令寄存器的最低两位(I1I0)的状态决定哪个寄存器的内容送数据总线:当I1I0=00时,发R0B微命令;I1I0=01时,发R1B微命令;I1I0=10时,发R2B微命令;I1I0=11时,对本模型机无效; 如果RSB有效,根据指令寄存器(I3I2)两位的状态决定哪个寄存器的内容送数据总线:当I3I2=00时,发R0B微命令;I3I2=01时,发R1B微命令;I3I2=10时,发R2B微命令;I3I2=11时,对本模型机无效; 本模型机的变址寄存器固定为R2,故RIB有效就是R2B有效。 基于上述字段的设计规则,在设计机器指令格式时,必须将目的寄存器的编码放在指令的第一个字节的I1I0位置,将源寄存器的编码放在指令的第一个字节的I3I2位置,且编码必须符合上述规则,即00代表寄存器R0,01代表寄存器R1,10代表寄存器R2。 B字段中的299B是移位运算装置的数据端与数据总线相连的微命令。该装置在图中没有画出。 C字段中的P(1)P(4)是四个测试字段。其功能是根据机器指令、A5A0字段及其它有关部件的内容,产生下一条微指令在控存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。AR为算术运算是否影响进位及判零标志控制位,低电平有效。LDPC为使PC+1的微命令。 P(1)P(4)的意义如下: P(1)测试的作用是次地址字段NA(41位)或指令寄存器IR(85位)产生下一条微指令在控存中的微地址的41位,下一条微指令在控存中的微地址的65位仍为NA字段的65位。 P(2)测试的作用是次地址字段NA(21位)或指令寄存器IR(43位)产生下一条微指令在控存中的微地址的21位,下一条微指令在控存中的微地址的63位仍为NA字段的63位。 P(3)测试的作用是次地址字段NA(4位)或进位或零标志产生下一条微指令在控存中的微地址的4位,下一条微指令在控存中的微地址的其它位仍为NA字段的相应位。 P(4)测试的作用是次地址字段NA(21位)或(SWC,SWA)产生下一条微指令在控存中的微地址的21位,下一条微指令在控存中的微地址的63位仍为NA字段的63位。五、编写微程序 在了解了微指令格式后,就可以开始编写微程序了。00:00000101100000010001000001:00000101111011011000001002:00000100110000000100000003:00000100000100000000000104:00000101111011011000110105:00000101111011011001000106:00000101111011011001001107:00000101111011011001011008:00000100000100100000000109:0000010110100010000101110A:0000010111101101100110010B:0000010111101101100111010C:0000010110100010001000010D:0000010011100000000011100E:0000010010110000000011110F:00000101101000100001000010:10010101100110100000000111:00000100111000000001001012:00000110100000100000000113:00000100111000000001010014:00000100101000000001010115:00000111000010100000000116:00000100110100011000000117:00000101101101000001100018:01100001100110100000000119:0000010011100000000110101A:0000010010110000000110111B:0000010110100100000111001C:0001010110011010000000011D:0000010011100000000111101E:0000010010110000000111111F:00000101101001000010000020:01101001100110100000000121:00000101101101000010001022:101110011001101000000001此后就可以手动地用开关将微程序输入机器的控存。然后将控存的启动地址置为0,运行微程序,将要执行的测试程序存入主存,也可从主存中读出指令,检查输入的指令是否正确。下面是利用该软件设计的微程序编码及各条微指令的功能分析。注意第一条微指令的微地址为01H,其它各条微指令的微地址都由上一行文字最后的数字(16进制)指定。微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:03微指令000001000001000000000001执行的操作是:输入开关SWB有效,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:04微指令000001011110110110001101执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:0D微指令000001001110000000001110执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:0E微指令000001001011000000001111执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:0F微指令000001011010001000010000执行的操作是:R0B,LDDR1,转微地址:10微指令100101011001101000000001执行的操作是:算术:A加B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:05微指令000001011110110110010001执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:11微指令000001001110000000010010执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:12微指令000001101000001000000001执行的操作是:存储器CE有效,写存储器,R0B,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:06微指令000001011110110110010011执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:13微指令000001001110000000010100执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:14微指令000001001010000000010101执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:15微指令000001110000101000000001执行的操作是:算术:A,数码管LEDB有效,写LED,ALUB,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:08微指令000001000001001000000001执行的操作是:输入开关SWB有效,R1B,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:09微指令000001011010001000010111执行的操作是:R0B,LDDR1,转微地址:17微指令000001011011010000011000执行的操作是:R1B,LDDR2,转微地址:18微指令011000011001101000000001执行的操作是:算术:A减B,ALUB,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0A微指令000001011110110110011001执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:19微指令000001001110000000011010执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:1A微指令000001001011000000011011执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:1B微指令000001011010010000011100执行的操作是:R0B,LDDR1,转微地址:1C微指令000101011001101000000001执行的操作是:算术:A+B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0B微指令000001011110110110011101执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:1D微指令000001001110000000011110执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:1E微指令000001001011000000011111执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:1F微指令000001011010010000100000执行的操作是:R0B,LDDR1,转微地址:20微指令011010011001101000000001执行的操作是:逻辑:A异或B,ALUB,LDR0,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:0C微指令000001011010001000100001执行的操作是:R0B,LDDR1,转微地址:21微指令000001011011010000100010执行的操作是:R1B,LDDR2,转微地址:22微指令101110011001101000000001执行的操作是:逻辑:AB,ALUB,LDR1,转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:07微指令000001011110110110010110执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:16微指令000001001101000110000001执行的操作是:存储器CE有效,存储器读,PCLOAD,允许PC加1(LDPC=1),转微地址:01微指令000001011110110110000010执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:02微指令000001001100000001000000执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(30)或(IR7IR4),转微地址:04微指令000001011110110110001101执行的操作是:PCB,LDAR,允许PC加1(LDPC=1),转微地址:0D不难看出,上面的文字说明和我们所画的用微命令表示的微程序流程图中各个框中所列的微命令是一一对应的。 这个微程序可以根据用微命令表示的微程序流程图在本仿真软件上很方便地设计出来。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!