一、课程设计的目的通过课程设计更清楚地理解下列基本概念:1.计算机的硬件基本组成;2.计算机中机器指令的设计;3.计算机中机器指令的执行过程;4.微程序控制器的工作原理。5.微指令的格式设计原则;在此基础上设计可以运行一些基本机器指令的微程序的设计。二、课程设计的内容和要求1.通过使用作者开发的微程序分析和设计仿真软件,熟悉本文介绍的为基本模型机而设计的微程序的执行过程。必须充分理解并正确解释下列问题:⑴微程序中的微指令的各个字段的作用。哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。⑵微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。什么情况下,次地址字段才是将要执行的微指令的地址。⑶在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解释其它指令的微指令的微地址冲突。⑷哪些微指令是执行所有指令都要用到的。⑸解释一条机器指令的微程序的各条微指令的微地址是否连续?这些微指令的微地址的安排的严重原则是什么?⑹为什么读写一次内存总要用两条微指令完成?⑺机器程序中的用到的寄存器是R0,是由机器指令中哪些位决定的?如果要用R1或R2,是否要改写微程序或改写机器指令?如果要,应如何改写?2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。新增加的机器指令的功能是:寄存器间的数据传送指令MOVRD,RS:(RS)→(RD)减法指令SUBR0,(ADDR):(R0)-(addr)→(R0)与指令ANDRD,RS:(RS)AND(RD)→(RD)或指令ORRD,RS:(RS)OR(RD)→(RD)异或指令XORRD,RS:(RS)异或(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、时序电路、控制存储器及相应的译码电路组成。程序计数器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时,数据总线上的数据送到数码管显示。图274LS181功能表四、指令系统设计助记符机器指令码说明IN0000××RD;置数开关SW(KD0~KD7)的状态→RDADDaddr0001××RD××××××××;(RD)+(addr)→(RD)STAaddr0010RS××××××××××;(RS)→(addr)OUTaddr0011××××××××××××;(addr)→输出设备LEDMOV0101RSRD;(RS)→(RD)SUBaddr0110××RD××××××××;(RD)-(addr)→(RD)AND0111RSRD;ANDRD,RS:(RD)AND(RS)→(RD)OR1000RSRD;ANDRD,RS:(RD)AND(RS)→(RD)XOR1001RSRD;ANDRD,RS:(RD)AND(RS)→(RD)JMPaddr0100××××××××××××;addr→PC说明:指令IN为单字节指令,其余均为双字节指令,第二字节的××××××××为要读写的主存储器单元的二进制地址码。前三条指令第一字节的最后两位××表示通用寄存器编码。××=00,RX=R0;××=01,RX=R1;××=10,RX=R2;××不允许等于11。五、微程序设计1.用微命令表示的读写主存及十条指令的执行流程为了能够连续的读写内存,编写相应的P(4)测试微程序,微程序流程图如下:2.模型机的微指令格式本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:其中,S3、S2、S1、S0、M、CN(μA24~μA19位)为ALU运算类型的控制字段,其输出不需译码直接连接到ALU的对应控制信号即可。需要指出的是,该字段无论如何编码,ALU都要进行某种运算,但是只要不发出ALUB微命令,ALU的运算结果都不会送到数据总线上,也就是不会对其它部件的操作产生任何影响。在设计微程序时,只要不发ALUB微命令,该字段的编码可以任意设置。μA18位为输出设备(LED)和主存(RAM)的读写控制字段,该位为0,表示读;该位为1,表示写。μA17~μA16位(B1B0)字段用于选择外设和主存。B1B0=01选择主存(CE有效),B1B0=00选择输入数据开关(SWB有效),B1B0=10选择输出LED(LEDB有效)。B1B0=11对本模型机无效,即没有选中任何外设或主存。对本模型机而言,上述三位可以看成一个字段,其编码的含义如下:μA18μA17μA16=000或100从输入开关SW读数据μA18μA17μA16=001从主存读数据μA18μA17μA16=101向主存写数据μA18μA17μA16=110向LED写数据其它组合无意义。ΜA6~μA1位为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)是四个测试字段。其功能是根据机器指令、μA5~μA0字段及其它有关部件的内容,产生下一条微指令在控存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。AR为算术运算是否影响进位及判零标志控制位,低电平有效。LDPC为使PC+1的微命令。P(1)~P(4)的意义如下:P(1)测试的作用是次地址字段NA(3~0位)或指令寄存器IR(7~4位)产生下一条微指令在控存中的微地址的3~0位,下一条微指令在控存中的微地址的5~4位仍为NA字段的5~4位。P(2)测试的作用是次地址字段NA(1~0位)或指令寄存器IR(3~2位)产生下一条微指令在控存中的微地址的1~0位,下一条微指令在控存中的微地址的5~2位仍为NA字段的5~2位。P(3)测试的作用是次地址字段NA(4位)或进位或零标志产生下一条微指令在控存中的微地址的4位,下一条微指令在控存中的微地址的其它位仍为NA字段的相应位。P(4)测试的作用是次地址字段NA(1~0位)或(SWC,SWA)产生下一条微指令在控存中的微地址的1~0位,下一条微指令在控存中的微地址的5~2位仍为NA字段的5~2位。3.可以读写主存并可执行十条机器指令的微程序设计00:00000101100000010001000001:00000101111011011000001002:00000100110000000110000003:00000100111000000000101104:00000100111000000000110005:00000100111000000000110106:00000100111000000000111007:00000101101101000000111108:00000101101101000001010109:0000010110110100000101100A:0000010011010000000000010B:0000010010110000000110010C:0000011010000010000000010D:0000010010100000001010100E:0000010010110000001010110F:01111101100110100000000110:00000101111011011001001011:00000101111011011001010012:00000100101000000001011113:00000101100000000000000114:00000100001000000001100015:11101101100110100000000116:01101101100110100000000117:00000111000010100001000018:00000110100010100001000119:000001011010010