您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 计算机系统结构实验 3.4 嵌套中断CPU 赖晓铮
计算机系统结构实验系列一、微程序版CPU二、硬布线版CPU三、流水线版CPU四、嵌套中断CPU赖晓铮博士华南理工大学laixz@scut.edu.cnQQ:68046508(四)嵌套中断CPU实验实验内容:●设计一个嵌套中断的多中断源CPU,在功能和结构上完全兼容前述的微程序版本CPU:数据通路相同,指令体系相同,不同之处在于用硬布线逻辑电路构建的堆栈代替“断点”寄存器,可以“先入后出”的保存指令地址PC和运算器标志位PSW,实现多级中断嵌套。实验目的:●理解堆栈的硬布线逻辑实现方法。●掌握基于堆栈的嵌套中断CPU设计原理。硬布线逻辑的堆栈电路入栈时序:信号push=1且pop=0,移位寄存器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出栈时序(push=0):pop上升沿,SP状态{S0,S1}={0,1},同时,SP输出锁存,刷新#OExT上升沿,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中断矢量地址电路(中断源对应)思考题:若在中断ISR3程序里继续触发中断,会出现什么情况?四级嵌套中断的时序图PC“断点”堆栈(INTR=push,IRET=pop)PSW“断点”堆栈(INTR=push,IRET=pop)初始化过程1)时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号#RESET=0;2)手动按钮MANUAL开关“010”,然后令信号#RESET=1.注:初始化完成后,若时钟信号CLK继续接开关MANUAL,则CPU进入手动模式,手动MANUAL开关,生成时钟信号CLK,程序单步执行;若时钟信号CLK接信号源AUTO-CLK(主频10Hz),则CPU进入自动模式,程序自动运行,直到HLT指令的“断点”处暂停。重启过程(跳出“断点”)1)时钟信号CLK接开关MANUAL,手动令复位信号端#RESET的状态“101”变化,即重启完成,跳出“断点”继续执行。注:跳出“断点”后,CPU进入HLT指令的后续下一条指令的取指周期。实验步骤1)编译、烧写、运行后页所示的nested_ISR源程序,随机触发中断源0或1,观察PC、IR、通用寄存器Rx及总线BUS的数据变化(编译和烧写asm文件方法参见“2.6存储器实验”)。2)在nested_ISR程序自动运行过程中,设置HLT指令“断点”,手动单步嵌套触发同一中断源或不同中断源。观察和记录进入各级中断时,程序计数器PC、标志位寄存器PSW、总线BUS以及BP_PC堆栈和BP_PSW堆栈的状态。3)中断源1子程序会对主程序的R0数值有影响么?中断源0子程序会对主程序或中断源1子程序的R0或R1数值有影响么?因为中断的出现是随机的,所以一般情况下,中断子程序禁止改变主程序的寄存器数值。请问采取什么软件方法能避免中断子程序影响主程序?汇编助记符(M地址:机器指令)JMP13H00H:0001000001H:0001001104H;vector002H:000001000CH;vector103H:00001100OUTR1,PORT0;sub004H:01010100SETR1,80H05H:0011010006H:10000000HLT07H:00000001OUTR0,PORT008H:01010000SETR0,80H09H:001100000AH:10000000IRET0BH:01110000nested_ISR汇编助记符(M地址:机器指令)SETR1,90H;sub10CH:001101000DH:10010000SUBIR1,01H0EH:110001000FH:00000001JS0EH10H:0001110011H:00001110IRET12H:01110000SETR0,90H;main13H:0011000014H:10010000SUBIR0,01H15H:1100000016H:00000001JS15H17H:0001110018H:00010101HLT19H:00000001思考题:●请把本实验的微程序版嵌套中断CPU电路改成相应的硬布线版本和流水线版本,并执行上述实验步骤的程序。请问程序是否需要修改?如果需要,修改的地方及原因?●嵌套中断CPU的两个中断源INT0和INT1可以彼此嵌套,没有优先级概念。请修改硬件,增添中断优先级判别电路,令中断源INT0的优先级比INT1高,即INT0中断可以在INT1中断子程序中触发,但是INT1中断不能在INT0中断子程序中触发。(提示:请参考“2.3比较器(仲裁器)实验”,采用“菊花链”结构设计中断优先级判别电路。注意:某一级中断即使当前不能执行,中断响应也不能撤销,必须挂起,等待优先级高的中断子程序结束后,继续执行。)(四)嵌套中断CPU实验思考题:●上述优先级电路的设计是固定不变的,但是我们可能需要调整中断源的优先级设计,假设要把上述中断电路改成可变优先级判别的的中断电路,该怎么设计?(提示:在嵌套中断的CPU中,设置中断屏蔽寄存器IMR(INT_MASK_REG),寄存器IMR的每个位(bit)对应固定的中断源,该位置1表示屏蔽相应的中断源,置0表示中断源允许中断。在每个中断源的中断子程序入口处,采用特定的指令SETI配置IMR寄存器,中断返回前则把IMR寄存器清零,取消所有中断屏蔽。SETI指令不但可以配置中断的优先级,还可以在主程序中实现软件禁止和重启中断的功能。值得注意的是,微程序版本CPU的微地址已经用完,要改造电路,精简寻址周期微指令,腾出微地址给SETI指令的微指令。)(四)嵌套中断CPU实验附录:CPU指令集OP码表OP码(I7I6I5I4)指令助记符OP码(I7I6I5I4)指令助记符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP(INC/DEC/NOT/THR)1010SHT(RLC/LLC/RRC/LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系统指令:汇编语言功能I7I6I5I4I3I2I1I0NOP;无操作(延时4个T)00000/0x/0HLT;停机(断点)00000/0x/1IRET;中断返回BP_PCPC;BP_PSWPSW01110/0x/x汇编语言注释I7I6I5I4I3I2I1I0MOVRA,RB;(RB)RA0110RARBSETRA,IMM;IMMRA0011RAx/xIMM二、寄存器及I/O操作指令:汇编语言功能I7I6I5I4I3I2I1I0INRA,PORTx;(PORTx)RA0100RAPORTxOUTRA,PORTx;(RA)PORTx0101RA0/PORTxOUTARA,PORTx;(RA)PORTx0101RA1/PORTx汇编语言功能I7I6I5I4I3I2I1I0LADRA,[ADDR];[ADDR]RA1000RA0/0ADDRPOPRA,[RB];[RB]RA1000RARBSTORA,[ADDR];(RA)[ADDR]1001RA0/0ADDRPUSHRA,[RB];(RA)[RB]1001RARB三、存储器及堆栈操作指令:汇编语言功能I7I6I5I4I3I2I1I0JMPADDR;ADDRPC00010/00/0ADDRJMPRRB;(RB)PC00010/0RBJCADDR;IFCF=1,ADDRPC00010/10/0ADDRJCRRB;IFCF=1,(RB)PC00010/1RBJZADDR;IFZF=1,ADDRPC00011/00/0ADDRJZRRB;IFZF=1,(RB)PC00011/0RBJSADDR;IFSF=1,ADDRPC00011/10/0ADDRJSRRB;IFSF=1,(RB)PC00011/1RB四、跳转系列指令:五、算术逻辑运算指令:汇编语言功能I7I6I5I4I3I2I1I0RLCRA;(RA)右逻辑移位1010RA0/0LLCRA;(RA)左逻辑移位1010RA1/0RRCRA;(RA)右循环移位1010RA0/1LRCRA;(RA)左循环移位1010RA1/1汇编语言功能I7I6I5I4I3I2I1I0INCRA;(RA)+1RA0010RA0/0DECRA;(RA)-1RA0010RA0/1NOTRA;#(RA)RA0010RA1/0THRRA;(RA)RA0010RA1/1五、算术逻辑运算指令:汇编语言格式功能I7I6I5I4I3I2I1I0ADDRA,RB;(RA)+(RB)RA1101RARBADDIRA,IMM;(RA)+IMMRA1101RA0/0IMMSUBRA,RB;(RA)-(RB)RA1100RARBSUBIRA,IMM;(RA)-IMMRA1100RA0/0IMMANDRA,RB;(RA)∧(RB)RA1110RARBANDIRA,IMM;(RA)∧IMMRA1110RA0/0IMMORRA.RB;(RA)∨(RB)RA1111RARBORIRA,IMM;(RA)∨IMMRA1111RA0/0IMMXORRA,RB;(RA)⊕(RB)RA1011RARBXORIRA,IMM;(RA)⊕IMMRA1011RA0/0IMM
本文标题:计算机系统结构实验 3.4 嵌套中断CPU 赖晓铮
链接地址:https://www.777doc.com/doc-3897818 .html