计算机系统结构实验3.4嵌套中断CPU赖晓铮解读

上传人:我** 文档编号:112780412 上传时间:2019-11-07 格式:PPT 页数:24 大小:1.72MB
返回 下载 相关 举报
计算机系统结构实验3.4嵌套中断CPU赖晓铮解读_第1页
第1页 / 共24页
计算机系统结构实验3.4嵌套中断CPU赖晓铮解读_第2页
第2页 / 共24页
计算机系统结构实验3.4嵌套中断CPU赖晓铮解读_第3页
第3页 / 共24页
计算机系统结构实验3.4嵌套中断CPU赖晓铮解读_第4页
第4页 / 共24页
计算机系统结构实验3.4嵌套中断CPU赖晓铮解读_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《计算机系统结构实验3.4嵌套中断CPU赖晓铮解读》由会员分享,可在线阅读,更多相关《计算机系统结构实验3.4嵌套中断CPU赖晓铮解读(24页珍藏版)》请在金锄头文库上搜索。

1、计算机系统结构 实验系列,一、微程序版CPU 二、硬布线版CPU 三、流水线版CPU 四、嵌套中断CPU,赖晓铮 博士 华南理工大学 laixz QQ: 68046508,(四)嵌套中断CPU 实验,实验内容: 设计一个嵌套中断的多中断源CPU,在功能和结构上完全兼容前述的微程序版本CPU:数据通路相同,指令体系相同,不同之处在于用硬布线逻辑电路构建的堆栈代替“断点”寄存器,可以“先入后出”的保存指令地址PC和运算器标志位PSW,实现多级中断嵌套。,实验目的: 理解堆栈的硬布线逻辑实现方法。 掌握基于堆栈的嵌套中断CPU设计原理。,硬布线逻辑的堆栈电路,入栈时序: 信号push=1且pop=0

2、,移位寄存器74LS194状态S0,S1=1,0,进入右移模式 T上升沿时刻,SR(DIN)Q0且QiQi+1(i=0,1,2) 出栈时序: 信号push=0且pop=1,移位寄存器74LS194状态S0,S1=0,1,进入左移模式,Q0(DOUT)输出 T上升沿时刻,QiQi-1(i=1,2,3),位堆栈电路,初始化时序: 启动仿真,SP状态S0,S1=1,1, 第一个T上升沿时刻,SP输出端为Q0,Q1,Q2,Q3=0,0,0,1 入栈时序(pop=0): push上升沿,SP状态S0,S1=1,0 T上升沿,SP+1(QiQi+1) ,右移; push下降沿,SP输出锁存,刷新BPx 出

3、栈时序(push=0) : pop上升沿,SP状态S0,S1=0,1, 同时,SP输出锁存,刷新#OEx T上升沿,SP-1(QiQi+1) ,左移;,字节堆栈指针,入栈时序(pop=0) push上升沿,拨码开关数据锁存SIN总线; push下降沿, 刷新BPx产生的上升沿把SIN总线数据打入新BPx所对应的寄存器STACK_x; 出栈时序(push=0) pop上升沿,刷新的#OEx所对应的寄存器STACK_x输出数据到SOUT总线;同时,pop=1令SOUT总线导通到BUS总线(数码管显示),字节堆栈通路,嵌套中断CPU 电路图,多路中断源 电路 (无优先级),程序计数器PC,中断矢量地

4、址 电路 (中断源对应),思考题:若在中断ISR3程序里继续触发中断,会出现什么情况?,四级嵌套中断的时序图,PC“断点”堆栈 (INTR=push, IRET=pop),PSW“断点”堆栈(INTR=push, IRET=pop),初始化过程 时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号#RESET=0; 手动按钮MANUAL开关“010”,然后令信号#RESET=1. 注:初始化完成后,若时钟信号CLK继续接开关MANUAL,则CPU进入手动模式,手动MANUAL开关,生成时钟信号CLK,程序单步执行;若时钟信号CLK接信号源AUTO-CLK(主频10Hz),则CPU进入自

5、动模式,程序自动运行,直到HLT指令的“断点”处暂停。,重启过程(跳出“断点”) 时钟信号CLK接开关MANUAL,手动令复位信号端#RESET的状态“101”变化,即重启完成,跳出“断点”继续执行 。 注:跳出“断点”后,CPU进入HLT指令的后续下一条指令的取指周期。,实验步骤 1)编译、烧写、运行后页所示的nested_ISR源程序,随机触发中断源0或1,观察PC、IR、通用寄存器Rx及总线BUS的数据变化(编译和烧写asm文件方法参见“2.6存储器实验”)。 2)在nested_ISR程序自动运行过程中,设置HLT指令“断点”,手动单步嵌套触发同一中断源或不同中断源。观察和记录进入各级

6、中断时,程序计数器PC、标志位寄存器PSW、总线BUS以及BP_PC堆栈和BP_PSW堆栈的状态。 3)中断源1子程序会对主程序的R0数值有影响么?中断源0子程序会对主程序或中断源1子程序的R0或R1数值有影响么?因为中断的出现是随机的,所以一般情况下,中断子程序禁止改变主程序的寄存器数值。请问采取什么软件方法能避免中断子程序影响主程序?,nested_ISR,思考题: 请把本实验的微程序版嵌套中断CPU电路改成相应的硬布线版本和流水线版本,并执行上述实验步骤的程序。请问程序是否需要修改?如果需要,修改的地方及原因? 嵌套中断CPU的两个中断源INT0和INT1可以彼此嵌套,没有优先级概念。请

7、修改硬件,增添中断优先级判别电路,令中断源INT0的优先级比INT1高,即INT0中断可以在INT1中断子程序中触发,但是INT1中断不能在INT0中断子程序中触发。 (提示:请参考“2.3 比较器(仲裁器)实验”,采用“菊花链”结构设计中断优先级判别电路。注意:某一级中断即使当前不能执行,中断响应也不能撤销,必须挂起,等待优先级高的中断子程序结束后,继续执行。),(四)嵌套中断CPU 实验,思考题: 上述优先级电路的设计是固定不变的,但是我们可能需要调整中断源的优先级设计,假设要把上述中断电路改成可变优先级判别的的中断电路,该怎么设计? (提示:在嵌套中断的CPU中,设置中断屏蔽寄存器IMR

8、 (INT_MASK_REG),寄存器IMR的每个位(bit)对应固定的中断源,该位置1表示屏蔽相应的中断源,置0表示中断源允许中断。在每个中断源的中断子程序入口处,采用特定的指令SETI配置IMR寄存器,中断返回前则把IMR寄存器清零,取消所有中断屏蔽。SETI指令不但可以配置中断的优先级,还可以在主程序中实现软件禁止和重启中断的功能。值得注意的是,微程序版本CPU的微地址已经用完,要改造电路,精简寻址周期微指令,腾出微地址给SETI指令的微指令。),(四)嵌套中断CPU 实验,附录:CPU指令集OP码表,一、系统指令:,二、寄存器及I/O操作指令:,三、存储器及堆栈操作指令:,四、跳转系列指令:,五、算术逻辑运算指令:,五、算术逻辑运算指令:,The End !,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号