计算机组成原理中断实验报告.docx
- 文档编号:27994963
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:15
- 大小:89.25KB
计算机组成原理中断实验报告.docx
《计算机组成原理中断实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理中断实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
计算机组成原理中断实验报告
北京建筑大学
2015/2016学年第二学期
课程设计
课程名称计算机组成原理综合实验
设计题目微程序控制器设计与实现
系别电信学院计算机系
班级计141
学生姓名艾尼瓦尔·阿布力米提
学号
完成日期二〇一六年七月八日星期五
成绩
指导教师
(签名)
计算机组成综合实验任务书
指导教师姓名
王怀秀
系
计算机
任务
微程序控制器的设计与实现
人数
32
学时
1周
实验目的
1.融合贯通计算机组成原理课程,加深对计算机系统各模块的工作原理及相互联系(寄存器堆、运算器、存储器、控制台、微程序控制器)。
2.理解并掌握微程序控制器的设计方法和实现原理,具备初步的独立设计能力;3.掌握较复杂微程序控制器的设计、调试等基本技能;提高综合运用所学理论知识独立分析和解决问题的能力。
实验任务
•基于TEC-9教学实验平台基于原有指令集的基础上设计或扩展4~8条指令。
首先在原微程序控制器指令系统的基础上进行原指令集的微指令编码的测试,然后利用上端软件,编写用户设计的微指令,实现指令预定的功能。
实验步骤
•1、进行原实验平台指令集的微程序控制器下指令运行测试;
•2、记录每一条机器指令的指令的执行流程和微命令编码;
•3、画出每一条指令的指令微程序执行流程图;
•4、在原有指令集基础上自行设计或扩展4~8条指令。
画出扩展指令的指令执行流程图;
•5、利用上端软件,把所编写的微程序控制器内容写入实验台中控制器中。
•6、利用单拍测试控制器与编程的要求是否一致。
如果有错误重新修改后再写入控制器中。
7、编写一段测试程序,测试控制器运行是否正确。
Ø实验目的
1.融合贯通计算机组成原理课程,加深对计算机系统各模块的工作原理及相互联系(寄存器堆、运算器、存储器、控制台、微程序控制器)。
2.理解并掌握微程序控制器的设计方法和实现原理,具备初步的独立设计能力;3.掌握较复杂微程序控制器的设计、调试等基本技能;提高综合运用所学理论知识独立分析和解决问题的能力。
Ø实验电路
1.微指令格式与微程序控制器电路
2.微程序控制器组成
仍然使用前面的CPU组成与机器指令执行实验的电路图,但本次实验加入中断系统。
这是一个简单的中断系统模型,只支持单级中断、单个中断请求,有中断屏蔽功能,旨在说明最基本的原理。
中断屏蔽控制逻辑分别集成在2片GAL22V10(TIMER1和TIMER2)中。
其ABEL语言表达式如下:
INTR1:
=INTR;
INTR1.CLK=CLK1;
IE:
=CLR&INTS#CLR&IE&!
INTC;
IE.CLK=MF;
INTQ=IE&INTR1;
其中,CLK1是TIMER1产生的时钟信号,它主要是作为W1—W4的时钟脉冲,这里作为INTR1的时钟信号,INTE的时钟信号是晶振产生的MF。
INTS微指令位是INTS机器指令执行过程中从控制存储器读出的,INTC微指令位是INTC机器指令执行过程中从控制存储器读出的。
INTE是中断允许标志,控制台有一个指示灯IE显示其状态,它为1时,允许中断,为0时,禁止中断。
当INTS=1时,在下一个MF的上升沿IE变1,当INTC=1时,在下一个MF的上升沿IE变0。
CLR信号实际是控制台产生的复位信号CLR#。
当CLR=0时,在下一个CLK1的上升沿IE变0。
当CLR=1且INTS=0且INTC=0时,IE保持不变。
INTR是外部中断源,接控制台按钮INTR。
按一次INTR按钮,产生一个中断请求正脉冲INTR。
INTR1是INTR经时钟CLK1同步后产生的,目的是保持INTR1与实验台的时序信号同步。
INTR脉冲信号的上升沿代表有外部中断请求到达中断控制器。
INTQ是中断屏蔽控制逻辑传递给CPU的中断信号,接到微程序控制器上。
当收到INTR脉冲信号时,若中断允许位INTE=0,则中断被屏蔽,INTQ仍然为0;若INTE=1,则INTQ=1。
为保存中断的断点地址,以便中断返回,设置了一个中断地址寄存器IAR。
第二节图4中的IAR(U19)就是这个中断地址寄存器,它是一片74HC374,有LDIAR和IAR_BUS#两个信号输入端,均连接至微程序控制器。
LDIAR信号的上升沿到达时,来自程序计数器PC的地址会置入IAR中。
IAR_BUS#为0时,保存在IAR中的断点地址会输出到数据总线DBUS上。
由于本实验系统只有一个断点寄存器而无堆栈,因此仅支持一级中断而不支持多级中断。
中断向量即中断服务程序的入口地址,在本实验仪中由8位数码开关SW7—SW0提供。
3.中断的检测、执行和返回过程
微程序控制器每执行一条机器指令之后,执行下一条机器指令之前,先转到微地址0F处(见图12微程序流程图),在条件位P1=1时判断是否有中断请求INTQ。
如果没有INTQ,则继续正常的机器指令执行。
若检测到中断请求INTQ,首先发出关中断信号INTC、保存断点信号LDIAR,并且发出停机信号TJ,等待手动设置中断向量。
设置好SW7—SW0后,按QD按钮启动,机器将中断向量读入程序计数器PC中,从而转到中断服务子程序去执行。
执行一条机器指令IRET,从中断服务子程序返回时,发出IAR_BUS#信号,从中断地址寄存器IAR向数据总线DBUS输出断点地址,再从DBUS依次写入到R4、PC中,恢复执行被中断的程序。
发生中断时,关中断由硬件负责,而中断现场(寄存器堆中的寄存器,进位标志C)的保存和恢复由中断服务程序来处理。
Ø实验任务
(1)了解中断系统中每个信号的意义和变化条件,并将下面的主程序和中断服务程序手工汇编成十六进制机器代码,此项任务应在预习时完成。
主程序:
地址
指令
机器代码
20H
INTS
21H
LDAR0,[R2]
22H
ADDR0,R0
23H
ADDR0,R0
24H
ADDR0,R0
25H
ADDR0,R0
26H
ADDR0,R0
27H
ADDR0,R0
28H
ADDR0,R0
29H
JMP[R1]
中断服务程序:
地址
指令
机器代码
0A0H
ANDR0,R0
0A1H
IRET
(2)参考CPU组成与机器指令执行实验,再加上中断系统,完成本次实验的线路连接。
接通电源之前应仔细检查接线,确认无误。
(3)将上述任务
(1)的程序代码存入内存中,并根据需要设置通用寄存器组和内存相关单元的数据。
其中,寄存器R1的值应置为21H,以便程序循环执行。
(4)从地址20H执行程序,在程序运行中,按一次控制台的INTR。
进入中断后,用单拍(DP)方式执行,直到返回主程序为止。
列表记录中断系统中有关信号的变化情况,特别要纪录好断点地址和R0的值。
(5)重复执行(4)两次。
(一共执行3次)
(6)将RAM中20H单元的内容由指令INTS改为INTC,重作(4),记录发生的现象。
六、实验步骤和实验结果
1、实验程序
主程序:
地址
指令
机器代码
20H
INTS
0BH
21H
LDAR0,[R2]
58H
22H
ADDR0,R0
00H
23H
ADDR0,R0
00H
24H
ADDR0,R0
00H
25H
ADDR0,R0
00H
26H
ADDR0,R0
00H
27H
ADDR0,R0
00H
28H
ADDR0,R0
00H
29H
JMP[R1]
84H
中断服务程序:
地址
指令
机器代码
0A0H
ANDR0,R0
30H
0A1H
IRET
0A0H
2、接线
微程序控制器与数据通路之间的线可以通过选择开关直接选择。
将开关设置为“微程序”。
只需连接数据通路部分的线。
a、数据通路的LDIR接CER、LDPC接LDR4、LDDR1接LDDR2、M1接M2、LDAR1接LDAR2。
b、指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,IR3接RS1。
C、单脉冲DMC接中断INTR
选择开关拔至“微程序”
3、存程序机器代码,设置通用寄存器R1、R2及内存相关单元的数据。
(1)、设置寄存器R1、R2的值
根据要求,设置R1=21H,R2的值由实验者自定,假定为10H。
1)、令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。
令SWB=1,SWA=1,使实验系统处于寄存器加载工作方式KLD。
按CLR#按钮,使实验系统处于初始状态。
1)、在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。
该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。
例如可将该地址设置为0FFH。
按一次QD按钮,将0FFH写入AR1和AR2。
2)在SW7—SW0上设置01H,作为通用寄存器R1的寄存器号。
按一次QD按钮,将01H写入IR。
3)在SW7—SW0设置21H,按一次QD按钮,将21H写入IR指定的R1寄存器。
4)在SW7—SW0上设置02H,作为通用寄存器R2的寄存器号。
按一次QD按钮,将02H写入IR。
5)在SW7—SW0设置10H,作为R2的值。
按一次QD按钮,将10H写入IR指定的R2寄存器。
6)设置R1、R2结束,按CLR#按钮,使实验系统恢复到初始状态。
(2)、存程序机器代码。
本操作中,我们在10H单元存入01H(也可以是其他值),从20地址开始存10个机器代码:
0B0H,58H,00H,00H,00H,00H,00H,00H,00H,84H。
从0A0H存入2个机器代码:
30H,0A0H。
1)令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。
令SWB=1,SWA=0,使实验系统处于写双端口存储器工作方式KWRD。
按CLR#按钮,使实验系统处于初始状态。
2)置SW7—SW0为10H,按QD按钮,将10H写入AR1。
3)置SW7—SW0为01H,按QD按钮,将01H写入存储器10H单元。
写主程序
1)按CLR#按钮,使实验系统恢复初始状态。
2)置SW7—SW0为20H,按QD按钮,将20H写入AR1。
3)置SW7—SW0为0B0H,按QD按钮,将0B0H写入存储器20H单元。
AR1自动加1,变为21H。
4)置SW7—SW0为58H,按QD按钮,将58H写入存储器21H单元。
AR1自动加1,变为22H。
5)重复进行下去,一直到将84H写入存储器29H单元。
按CLR#按钮,使实验系统恢复到初始状态。
写中断程序
1)置SW7—SW0为0A0H,按QD按钮,将0A0H写入AR1。
2)置SW7—SW0为30H,按QD按钮,将30H写入存储器0A0H单元。
3)置SW7—SW00A0H,按QD按钮,将0A0H写入存储器0A1H单元。
4)按CLR#按钮,使实验系统恢复到初始状态。
或用实验台监控系统或系统上端软件直接写入内容
(3)从地址20H连续执行程序
从地址20H连续执行程序,在程序运行中,按一次控制台的INTR。
进入中断后,用单拍(DP)方式执行,直到返回主程序为止。
列表记录中断系统中有关信号的变化情况,特别要纪录好断点地址和R0的值。
1)令DP=0,DZ=0,DB=0,使实验系统处于连续运行状态。
2)置SW7—SW0为20H,作为程序的起始地址。
按QD按钮,启动程序从20H地址运行。
中断允许指示灯亮。
3)按INTR按钮,发出一个INTR中断脉冲,请求中断。
中断后硬件自动将中断地址存入中断地址寄存器IAR。
微程序地址应为25H。
4)置SW7—SW0为0A0H,这是中断程序的入口地址。
将DP由置0改为置1。
按一次QD按钮,将0A0H送入程序计数器PC。
微程序地址应为26H。
5)按一次QD按钮,进行取指微操作。
微程序地址应为05H。
6)按一次QD按钮,进行置数微操作。
微程序地址应为13H。
7)按一次QD按钮,进行R0&R0操作,这时微程序地址应为38H。
观察DBUS总线的值,即为R0的值。
8)按一次QD按钮,进行写回微操作。
微程序地址应为34H。
9)按一次QD按钮,进行判定有无中断请求INTQ微操作。
微程序地址应为0FH。
10)按一次QD按钮,进行取指微操作。
微程序地址应为05H。
11)按一次QD按钮,进行从中断程序返回主程序微操作。
微程序地址应为1AH。
这时观察PC地址,即中断地址。
12)按一次QD按钮,进行判有无新的中断操作。
微程序地址为0FH。
13)按一次QD按钮,进行取指微操作。
微程序地址为05H。
此刻,程序已返回主程序。
由于按下INTR按钮的时间对主程序而言,是随机的,具有不确定性,因此各次中断地址、R0会具有不同的值。
将RAM中20H单元的内容由指令INTS改为INTC,重作(4),记录发生的现象。
由于INTC是关中断指令,因此将不会发生中断。
(4)控制存储器代码表
1.微程序控制器信号表
指令
当前指令
CM4
CM3
CM2
CM1
CM0
LDAR0,[R2]
07H
10H
00H
81H
20H
05H
05H
10H
00H
04H
91H
10H
15H
10H
01H
04H
00H
36H
36H
10H
0CH
20H
00H
34H
34H
00H
12H
00H
00H
0FH
LDAR1,[R3]
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
15H
10H
01H
04H
00H
36H
36H
10H
0CH
20H
00H
34H
34H
00H
12H
00H
00H
0FH
ADDR0,R1
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
10H
10H
20H
00H
00H
3BH
3BH
14H
82H
20H
00H
34H
34H
00H
12H
00H
00H
0FH
JC+5
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
19H
10H
00H
00H
00H
0FH
ANDR2,R3
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
13H
10H
20H
00H
00H
38H
38H
0DH
82H
20H
00H
34H
34H
00H
12H
00H
00H
0FH
SUBR3,R2
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
11H
10H
20H
00H
00H
3AH
3AH
03H
02H
20H
00H
34H
34H
00H
12H
00H
00H
0FH
STAR3,[R2]
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
14H
10H
21H
04H
00H
35H
35H
10H
06H
00H
00H
0FH
STP
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
16H
30H
00H
00H
00H
0FH
JMP[R1]
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
18H
10H
01H
01H
20H
0FH
INTS
00H
30H
00H
02H
08H
26H
07H
10H
00H
81H
20H
05H
05H
10H
00H
04H
91H
10H
1AH
10H
20H
00H
00H
3AH
3AH
03H
02H
20H
00H
34H
34H
00H
12H
00H
00H
0FH
IRET
07H
10H
00H
04H
00H
05H
05H
10H
00H
04H
91H
10H
1BH
10H
00H
41H
20H
0FH
2.拓展控制器信号表
指令
CM4
CM3
CM2
CM1
CM0
XORRd,Rs
10H
10H
04H
00H
05H
10H
00H
04H
91H
10H
10H
20H
00H
00H
31H
0BH
02H
20H
00H
34H
00H
12H
00H
00H
0FH
INCRd,Rs
10H
00H
04H
00H
05H
10H
00H
04H
91H
10H
10H
20H
00H
00H
32H
00H
02H
20H
00H
34H
00H
12H
00H
00H
0FH
DECRd,Rs
10H
00H
04H
00H
05H
10H
00H
04H
91H
10H
10H
20H
00H
00H
33H
17H
82H
20H
00H
34H
00H
12H
00H
00H
0FH
F=A+BRd,Rs
10H
00H
04H
00H
05H
10H
00H
04H
91H
10H
10H
20H
00H
00H
24H
0EH
02H
20H
00H
34H
00H
12H
00H
00H
0FH
Ø
流程图
1.微程序流程图
2.拓展程序流程图
10H
XORRd,RsINCRdDECRdF=1
21H22H23H24H
Ø实验结果
1、单拍执行程序(SWC=0,SWB=0,SWA==0;DP=1,DZ=0,DB=0)初值:
R1=11H,R2=22H
a、XORR1,R2执行结果R1=33H、R2=02H
b、INCR1,R2执行结果R1=34H、R2=02H
c、DECR1,R2执行结果R1=33H、R2=02H
d、F=A+BR1,R2执行结果R1=FFH、R2=02H
7、实验分析与总结
通过这次实验,首先我懂得了什么叫中断,同时学会了中断的调用。
通过亲自动手,能更好的理解本次实验的原理。
在做实验的过程中遇到了各种问题,在此过程中,我通过请教老师,还有班里的同学(特别感谢拍子古,周瑞奇,喀斯等同学)最终成功的的做出来了。
这次实验提高了我的动手操作的能力。
通过这几天的课程设计,使我对计算机组成原理知识有了更加深刻的认识和理解,对计算机的工作流程有了更具体的了解和认识。
非常感谢这次的课程设计给我带来的知识和学习经验,我真正意识到了实践是理论所不能及的。
在今后我一定会更加努力学习专业知识和技术。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 中断 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)