微程序控制器综合设计Word文件下载.docx
《微程序控制器综合设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《微程序控制器综合设计Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
2013.6.17-2013.6.28
一、实验目的:
1、掌握程序控制器的组成,工作过程及调试方法;
2、明确微程序的概念,学会微指令及微程序的设计;
3、通过单步方式执行若干条微指令深入理解微程序控制器的工作原理。
二、实验线路器件和所需实验设备:
1、实验线路的主要器件:
数据输入开关SW(DIP);
二片74LS374(R4,R5);
二片74LS273(DR1,DR2);
二片74LS245;
二片74LS181(ALU);
一片6116静态存贮器(RAM);
二片74LS161(PC);
一片74LS273(AR);
4片2764(CM);
5片74LS273(UIR,IR);
三片74LS08;
一片74LS10;
一片74LS244。
2、实验设备:
(1)SACT3C计算机组成原理实验仪一台。
(2)双踪示波器一台。
(3)万用表一块。
三、实验原理线路:
1、数据通路部分原理线路图(图1);
图1
2、微程序控制器原理线路框图,如图2所示。
图2
四、实验原理
(一)数据通路的基本概念
数字系统中,各个子系统通过数据总线连接形成的数据传送路径称为数据通路。
数据通路的设计直接影响到控制器的设计,同时也影响到数字系统的速度指标和成本。
一般来说,处理速度快的数字系统,它的独立传送信息的通路较多。
但是独立数据传送通路一旦增加,控制器的设计也就复杂了。
因此,在满足速度指标的前提下,为使数字系统结构尽量简单,一般小型系统中多采用单一总线结构。
在较大系统中可采用双总线或三总线结构。
(二)微程序控制器的设计思想:
控制器在计算机中的分工是取指令,分析指令,执行指令,再取下一条指令,循环往复以完成程序设定的功能。
微程序控制器的设计思想是将每一条微指令用一段程序来描述,微程序由若干条微指令组成,而每一条微指令又由若干微命令及一条微指令地址组成,每一条微命令对应于逻辑电路的一个控制操作。
微程序放在控制存储器中,取指令和分析指令属公用的微程序段,执行指令则不同指令对应不同的微程序字段,到控制器的那个单元取指令,其地址在uPC中,而uPC的内容则由指令码结果或上条微指令的下地址字段决定,从控存取出的微指令放在微指令寄存器中。
微指令的基本格式
微操作码
微地址码
微操作码:
包含指令执行的一个步骤中所包含的全部微命令的编码,即一条微指令所需的全部控制信号的编码,用来发出操作控制信号。
微地址码:
用来产生下一条微指令的地址,指出下一条微指令代码在控制存储器中的存储位置。
(三)微程序控制单元
1、控制存储器:
存放实现计算机指令系统的所有微程序由ROM(EPROM)实现。
控制存储器的字长是微指令字的长度。
控制存储器的容量取决于指令的数量和每条指令的微程序长度,也取决于微指令代码的利用率。
2、微指令寄存器:
微指令寄存器(CMIR)存放由控制存储器读出的一条微指令信息
3、微地址寄存器(CMAR):
存放将要访问的下一条微指令的微地址。
4、微地址形成部件:
能测试执行中的状态信息,修改微地址寄存器的内容,以便按修改后的内容去读下一条指令。
(四)微程序控制单元的工作原理:
1、取指阶段
(1)将取指微程序首地址置于CMAR中。
(2)读微指令。
(3)产生微操作命令。
(4)形成下一条微指令地址。
(5)取下一条微指令。
…………重复
(1)~(4)过程,直到该机器指令送入IR为止。
2、执行阶段
(1)当指令存入IR后,由指令的OP部分送到微地址形成部件,形成该指令对应的微程序的首地址。
(2)读出微指令。
…………重复
(1)~(4)过程,直到该机器指令执行完为止。
五、实验任务
根据已知的微指令的操作码,自主设计微程序,按照设置好的微程序执行出来。
微程序控制器综合设计日志
2013年6月17日
由于微程序控制器设计这个实验是对以前做过实验的一个综合,需要回顾运算器组成原理、存储器原理、数据通路实验。
因此,首先我们再一次的完成了前三个实验的操作。
熟悉掌握了实验原理,为之后微程序控制器设计做初期准备。
随后,查找资料进一步了解微程序控制器的组成及工作原理。
1.微程序控制器的组成
微程序控制器原理框图如下图所示,它主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。
图3
控制存储器简称控存,用来存放实现全部指令系统的所有微程序,它是一种只读型存储器。
控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即取决于微程序的数量。
微指令寄存器用来存放由控制存储器读出的一条微指令信息,其中微地址寄存器决定将要访问的下一条微指令的微地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。
当P字段的取值不全为0,即需要进行判别或测试时,地址转移逻辑电路根据指令的操作码OP、寻址方式X、执行部件的“状态条件”反馈信息,去强制修改微地址寄存器的内容,并按修改好的微地址去读取下一条微指令,从而实现微程序的分支。
2.微程序控制器的工作原理
串行方式的微程序控制器工作过程如下图所示。
计算机开机时,一方面通过硬件设置程序计数器PC的初值,另一方面通过硬件设置微地址寄存器的初值。
PC的初值为系统初始化程序中第一条指令在ROMBIOS中的地址,微地址寄存器的初值为取指微指令在控制存储器中的微地址。
根据微地址寄存器的内容经地址译码后选中控制存储器的某一存储单元,从控制存储器中读出一条微指令,这条微指令便是取指微指令。
取指微指令的操作控制字段和P字段被送往微命令寄存器,在接下来的一个CPU周期内根据操作控制字段输出的微命令信号,控制执行部件完成取指操作。
取指过程为PC的内容经地址译码后选中指令Cache、二级Cache或主存储器中的某一存储单元,并将从内存中取出的指令代码送往指令寄存器IR,同时PC加1,形成下一条指令在内存中的地址。
取指微指令的直接微地址字段被送往微地址寄存器,由于微指令完成的是取指操作,不同的指令实现不同的功能,需用不同的微程序来解释,因此在取指微指令设计时,P字段中包含有对指令操作码测试的编码。
在执行该条微指令的最后一个T周期到来时,根据P字段和指令的操作码经地址转移逻辑电路强制修改微地址寄存器的内容,从而实现微程序的分支,不同的指令操作码将形成不同的分支微地址。
接着又按修改后的微地址从控制存储器中读取下一条微指令,又执行这一条微指令。
当读出的微指令中P字段的取值不全为0时,地址转移逻辑电路根据指令的寻址方式、执行部件的“状态条件”反馈信息,强制修改微地址寄存器的内容,并按修改好的微地址从控制存储器中读下一条微指令。
当读出的微指令中P字段的取值为全0,即不需要进行任何判别或测试时,直接根据微地址寄存器的内容,即当前微指令的直接微地址去读下一条微指令。
当实现一条机器指令功能的微程序执行完毕后,又返回取指微指令,如此反复。
图4
3.机器指令与微指令的关系
①一条机器指令的功能由若条微指令组成的序列来实现;
②机器指令存放在内存储器中,微指令固化在控制存储器中;
③每一个CPU周期对应一条微指令。
2013年6月18-20日
这次实验的主要任务是要自主设计微程序并执行。
因此从教材出发,寻找微程序设计实例。
根据实例分析从中获取信息设计自己的微程序。
1.微程序的设计步骤
①根据CPU结构图,设计微指令格式;
②根据CPU结构图、指令格式和功能,画出机器指令解释的微程序流程图,并确定每条微指令在控制存储器中的微地址,以及直接微地址;
③设计微程序。
2.微程序设计举例
微程序设计的步骤及具体的设计方法,这里在举例时写得非常详细,在实际解题时,只需写出微指令格式、微程序流程图及微地址分配和微程序即可。
[例1]以教材上图5.1所示的CPU结构图,设计条件转移指令“JNZaddr”的微程序,假设JNZ指令的操作码编码为0111,直接微地址为6位。
解:
①根据CPU结构图,设计微指令格式如下所示:
②根据CPU结构图、指令格式和功能,画出机器指令解释的微程序流程图如下所示:
由于在计算机开机时是由硬件设置微地址寄存器的初值,即取指微指令的微地址,因此在设计取指微指令的微地址时,考虑到为方便硬件实现,该微地址一般设置为全0,这里设计为000000。
取指微指令中直接微地址的确定与操作码的位数有关,这里题目中给出的操作码为4位二进制,则取指微指令中直接微地址至少有4位必须为0,以便于在P1测试,即指令操作码测试时,根据指令的操作码修改微地址寄存器的内容,形成分支微地址。
这里我们假定根据指令的操作码修改的是微地址寄存器中的低4位,并且取指微指令的直接微地址为000000,那么在P1测试后,JNZ指令在执行周期中第一条微指令的微地址为000111。
同样的道理,我们可以设计出其它微指令在控制存储器中的微地址和微指令的直接微地址。
设计微地址时要注意,第一条微指令的微地址和微程序中最后一条微指令的直接微地址相同,一般设计为全0。
菱形框前面一条微指令的直接微地址和菱形框后面一条微指令的微地址不能随便确定,它与测试的操作码位数、测试的状态条件位数、测试的寻址方式位数,以及它们将修改哪一位或哪几位微地址有关。
其它微指令的微地址只要不和上述微地址重复,可以任意设置。
③设计微程序。
在机器指令解释的微程序流程图描述中,一个方框表示一个CPU周期,一个CPU周期对应一条微指令。
只要清楚了每个方框完成的功能,以及微指令格式中各个控制信号的含义和高低电平的定义,就可以顺利地编写出每个框对应的微指令。
由JNZ指令的微程序流程图可知,JNZ指令的解释需要三个CPU周期,因此对JNZ指令的解释需要三条微指令,由这三条微指令组成了对JNZ指令解释的一段微程序。
第一条微指令为取指微指令,按微程序流程图确定的微地址,它存放在控制存储器的000000微地址,该条微指令的二进制编码为:
000000
1101001000111101
10
该条微指令完成的功能是根据程序计数器PC的值,访问指令Cache,从相应存储单元取出一条指令并送往指令寄存器IR,同时PC加1。
要实现上述功能,在微指令的操作控制字段中,对应的有效微命令依次为:
CS_I’为“0”,RD_I’为“1”完成读指令Cache功能;
LDIR’为“1”完成将指令总线IBUS上的指令代码打入指令寄存器IR的功能;
LOAD为“1”,LDPC’为“1”完成PC加1功能;
其它微命令信号均无效,即高电平有效的微命令编码为“0”,低电平有效的微命令编码为“1”。
由于ALU的输出控制信号ALU_B无效,S2、S1、S0的编码任意,这里编码为000,下面两条微指令中S2、S1、S0的编码与之相同。
在微程序设计时,微程序流程图的判别测试框(菱形框)完成的功能与它所在的前一个方框放在同一个CPU周期内执行,即判别测试操作与它所在的前一个方框完成的操作设计在同一条微指令内。
根据微程序流程图,由于要进行P1测试,因此该条微指令的P字段中P1的编码为“1”,P2的编码为“0”,微指令的直接微地址字段指明了下一条微指令的微地址是000000。
但是,由于要进行P1测试,因此000000并不是下一条微指令真正的微地址。
P1测试的是指令寄存器IR中的操作码字段,即根据操作码字段来形成下一条微指令的地址。
我们假定在地址转移逻辑电路