基于微程序控制器的《计算机系统综合设计》课程设计指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于微程序控制器的
《计算机系统综合设计》课程设计
指导书
计算机科学与技术学院
计科教研室
基于微程序控制器的简单机器指令的设计是在TEC-8实验箱上完成的,因此,要求学生必须深刻理解TEC-8实验箱所包含的主要硬件模块的工作原理:算术逻辑单元ALU、双端口寄存器组、数据开关SD7~SD0、双端口RAM、程序计数器PC、地址寄存器AR、指令寄存器IR、微程序控制器、控制信号切换电路、2选1选择器以及与这些模块相对应的指示灯等,详细内容参见TEC-8实验箱实验指导书。
下面就与课程设计相关的重点内容扼要介绍一下。
一、基于微程序控制器的机器指令的执行原理
指令周期:取指周期+执行周期,无论是取指周期还是执行周期,都包含了多个微操作,即多个微控制信号。
对所有指令来说,指令的取指周期所包含的控制信号是完全一样的,而执行周期中的控制信号,则因指令而异。
二、TEC-8实验箱电路逻辑图
三、指令格式
1、TEC-8实验箱原有的指令
2、课程设计拟新增加的指令
四、TEC-8实验箱的控制信号
根据机器指令功能、格式和数据通路所需的控制信号,TEC-8采用如上图所示的微指令格式。
微指令字长40位,顺序字段11位(判别字段P4~P0,后继微地址NµA5~NµA0),控制字段29位,微命令直接控制。
判别字段P4~P0的功能如下表。
下面分析根据后继微地址NµA5~NµA0、判别位P1和指令操作码如何实现微程序分支的。
微地址01H中的微指令是一条功能为取指令的微指令,在T3的上升沿,从双端口存储器中取出的指令写入指令寄存器IR。
在这条微指令中,后继微地址为20H,判别位P1为1、其他判别位均为0。
因此根据微地址转移逻辑,很容易就知道,下一条微指令的微地址是:
NµA5-T = NµA5
NµA4-T = NµA4
NµA3-T = NµA3 or P1 and IR7-I
NµA2-T = NµA2 or P1 and IR6-I
NµA1-T = NµA1 or P1 and IR5-I
NµA0-T = NµA0 or P1 and IR4-I
新产生的微地址NµA5-T~NµA0-T在T3的下降沿写入微地址寄存器µAR,实现了微程序流程图图所要求的根据指令操作码进行微程序分支。
1、首先连接导线
在微程序控制方式下,TEC-8实验箱平台里的指令寄存器IR的高4位IR7-IR4并没有直接与IR7-I、IR6-I、IR5-I、IR4-I连接,与IR7-IR4相对应的有4个输出端子,分别是IR7-o,IR6-o,IR5-o,IR4-o,因此在TEC-8实验箱上需要通过导线将IR7-o、IR6-o、IR5-o、IR4-o 分别与IR7-I、IR6-I、IR5-I、IR4-I相连。
2、计算微程序的入口地址
微地址01H中的微指令是一条功能为取指令的微指令,在这条微指令中,后继微地址为20H,判别位P1为1、其他判别位均为0。
因此根据微地址转移逻辑,下一条微指令的微地址是:
NµA5-T = NµA5
NµA4-T = NµA4
NµA3-T = NµA3 or P1 and IR7-I
NµA2-T = NµA2 or P1 and IR6-I
NµA1-T = NµA1 or P1 and IR5-I
NµA0-T = NµA0 or P1 and IR4-I
假设指令ADD Rd,Rs的操作码是0001,即IR7-IR4=0001,根据上面的逻辑关系,该指令执行周期微程序的首地址是21H。
六、微程序码表
TEC-8实验箱把40位长的微指令保存在由5片58C65构成的控制存储器中。
七、TEC-8实验箱计算机微程序流程图
这是TEC-8实验箱已经设置好的控制台操作和部分指令执行的微程序流程图,从图中可以看出,当操作模式开关SWC=0、SWB=0、SW A=0时,进入取指令周期微程序,入口地址是01H,在控制存储器01H单元中存放了一条微指令,包含了LIR=1、PCINC=1、P1=1共3个有效控制信号,其后继微地址NµA5 NµA4 NµA3 NµA2 NµA1 NµA0=100000B,即20H,结合前面的电路逻辑图、指令格式、控制信号、微程序入口地址的计算、控制信号码表,得到了上面的部分指令执行周期微程序的入口地址,最小是21H,最大是2EH。
为了确保TEC-8实验箱的基本正常实验功能,不影响《计算机组成原理》课程的实验教学环节,用TEC-8实验箱做计算机硬件系统课程设计的时候,一定要保证新设计指令的执行周期微程序入口地址在2AH、2BH、2CH、2DH、2FH这5个入口地址内选择,这一点务必做到。
八、指令周期包含的控制信号
从TEC-8实验箱计算机微程序流程图可以看到,所有指令的取指周期微程序的入口地址是01H,包含了3个控制信号:LIR、PCINC、P1。
不同指令的执行周期包含的控制信号有所差异,ADD指令执行周期微程序的入口地址是21H,包含了S3、S0、CIN、ABUS、DRW、LDZ、LDC和P4共8个控制信号。
九、微程序的修改及其下载
TEC-8实验箱将微程序划分为5个二进制文件CM4、CM3、CM2、CM1和CM0,保存在由5片58C65构成的控制存储器中。
根据指令的设计,可以修改二进制文件,然后通过PC机平台上的串口调试工具将修改后的部分或全部二进制文件写入到控制存储器中,从而达到重新设计新指令的目的。
TEC-8实验系统上使用的E2PROM的器件型号是HN58C65。
虽然1片HN58C65的容量是2048个字节,但是在TEC-8实验系统中作为控制存储器使用时,每片HN58C65都只使用了64个字节。
因此在改写控制存储器内容时,首先需要生成5个二进制文件,每个文件包含64个字节。
从PC机上下载微程序到TEC-8实验箱的操作步骤如下:
⑴连接编程电缆
在TEC-8关闭电源的情况下,用出厂时提供的编程电缆将PC机的串口COM1和TEC-8实验系统上的COM口相连。
将编程开关拨到“编程”位置,DZ11短路子拔下。
⑵打开串口调试助手
运行串口调试助手V2.2,打开如下对话框。
由于串口调试助手需要和TEC-8实验系统上的单片机通讯,因此它设置的串口参数需要和单片机内设置的参数一致,即波特率为2400波特,数据位8位,无校验位,停止位1位。
这些参数设置不正确将无法通讯。
窗口下部空白区为PC数据发送窗口,其上面较大的空白区为PC数据接收窗口。
⑶下载微代码文件
打开TEC-8实验箱电源,按一下单片机复位键。
串口调试助手的接收区此时会显示信息‘WAITING FOR COMMAND ...’,提示等待命令。
这个等待命令的提示信息是TEC-8实验系统发送给串口调试助手的,表示TEC-8实验系统已准备好接受命令。
一共有5个命令,分别是0、1、2、3和4,分别对应被编程的CM0、CM1、CM2、CM3和CM4。
如果准备修改CM0,则在数据发送区写入‘0’,按‘手动发送’按钮,将命令‘0’发送给TEC-8实验系统,通知它要写CM0文件了。
数据接收区会出现‘PLEASE CHOOSE A CM FILE’。
通过点击“选择发送文件”按钮选择要写入CM0的二进制文件。
然后点击“发送文件”按钮将文件发往TEC-8实验系统。
TEC-8实验系统接收数据并对CM0编程,然后它读出CM0的数据和从PC机接收到数据比较,不管正确与否,TEC-8实验系统都向串口调试助手发回结果信息,在数据接收窗口显示出来。
对一个E2PROM编程完成后,根据需要可再对其它E2PROM编程,全部完成后,按一次TEC-8实验系统上的“单片机复位”按钮结束编程。
最后将编程开关拨到“正常”位置,并且将DZ11短路子放置在左端。
注意:对CM0、CM1、CM2、CM3和CM4的编程顺序无规定,只要在发出器件号后紧跟着发送该器件的编程数据(文件)即可。
编程也可以只对一个或者几个E2PROM编程,不一定对5个E2PROM全部编程。
十、新指令设计举例
假设新设计1条指令如下:
1、根据该指令的功能,将源寄存器Rs的值与目标寄存器Rd的值逻辑或后再写入到目标寄存器Rd。
根据TEC-8实验箱的电路逻辑图,必须控制ALU做逻辑或运算,ALU的A端口数据是来自Rd,由IR指令寄存器的IR3IR2控制;ALU的B端口数据是来自Rs,由IR指令寄存器的IR1IR0控制;要做到这一点,控制信号SELCTL=0。
2、怎样控制ALU做逻辑或运算?由下面的ALU算术逻辑表得到,控制信号M=1、
S3S2S1S0=1110,就能控制ALU做逻辑或运算。
ALU算术逻辑表
3、ALU的输出如何写入到目标寄存器Rd?由TEC-8实验箱的电路逻辑图容易看出,只要控制信号ABUS=1、DRW=1、LDZ=1就能完成。
4、该指令执行完后怎样进入取指周期微程序?根据TEC-8模型计算机的微指令格式和微程序流程图,我们只要保证P4=1、后继微地址NµA5 NµA4 NµA3 NµA2 NµA1 NµA0=000001即可。
5、确定指令执行周期的微程序入口地址。
新设计指令的操作码是1100,即IR7-o、IR6-o、IR5-o、IR4-o=1100,连接线时我们将IR7-o、IR6-o、IR5-o、IR4-o分别与IR7-I、IR6-I、IR5-I、IR4-I相连接,另外,还需要将Z-o、C-o分别与Z-I、C-I相连接,我们知道微地址01H中
的微指令是一条功能为取指令的微指令,在这条微指令中,后继微地址为20H,判别位P1为1、其他判别位均为0。
所以,我们新设计的指令执行周期的微程序入口地址:
NµA5-T = NµA5=1
NµA4-T = NµA4=0
NµA3-T = NµA3 or P1 and IR7-I=1
NµA2-T = NµA2 o r P1 and IR6-I=1
NµA1-T = NµA1 or P1 and IR5-I=0
NµA0-T = NµA0 or P1 and IR4-I=0
转换为十六进制是2CH。
6、修改控制存储器的码表。
由前面分析我们得到的控制信号:M=1、S3=1、S2=1、S1=1、ABUS=1、DRW=1、LDZ=1、P4=1、NµA0=1。
微程序入口地址是2CH。
根据TEC-8实验箱控制信号与控制存储器码表的对应关系,CM4的码表不需要修改,需要修改CM3、CM2、CM1、CM0的码表,具体修改如下:
根据CM3、CM2、CM1、CM0的码表中的十六进制值,修改相应的4个二进制文件CM3、CM2、CM1、CM0,下载到TEC-8实验箱,然后运行指令,验证其正确性,如果实现了新指令的功能,说明新指令的微程序设计是正确的,否则,需要重新设计微程序,直到调试成功为止。
十一、程序段运行
当指令设计完成后,每条指令执行周期的微程序入口地址及其微指令也设置完毕,并且
下载更新了TEC-8实验箱上的微程序码表,下一步就要用设计的指令编写具有一定逻辑功能
的程序段,运行程序段,验证其正确性。
假设设计的指令是:ADD Rd, Rs、SUB Rd, Rs、INC Rd、LD Rd, [Rs]、ST Rs, [Rd] 、JZ addr、JC addr、STP、AND Rd, Rs,可以编写如下的程序段:
上面表中的地址0FH、10H、11H、12H里存放的不是指令,而是数据。
在验证这段程序
的功能前,需要下面几步:
1、在TEC-8实验箱的控制台模式下,将这段程序的机器码和数据输入到存储器中。
2、对寄存器R2、R3赋初始值,R2=12H,R3=0FH。
3、将操作模式开关设置为SWC=0、SWB=0、SW A=0
按复位按钮CLR,复位程序计数器PC为00H,即程序段中的第一条指令的地址是00H。
4、单拍运行。
将单拍开关DP设置为1,按一次QD按钮,进入程序运行。
每按一次QD按
钮,执行一条微指令,直到程序结束。
5、连续运行。
将单拍开关DP设置为0,按一次QD按钮,程序自动运行到STP指令。
通过
读寄存器操作检查4个寄存器的值。
通过读存储器操作检查存储单元12H的值。
根据这段程序的逻辑功能,最后的结果是:R0=02H,R1=23H,R2=12H,R3=11H,存储单元12H的值是62H。