
轻松学会DSP——第8章中断和流水线.ppt
32页第八章 中断和流水线根据信号源,中断分两类:1. 硬件中断 (1) 受外部中断信号触发的外部硬件中断,如NMI,INT0,INT1等 (2) 受片内功能器件信号触发的内部硬件中断,如Timer,DMA,McBSP,HPI口 等 2. 软件中断 指令INTR,TRAP,RESET产生的软件中断 一、中断概述根据IMR寄存器,中断可分为:1.可屏蔽中断:IMR(Interrupt Mask Register)寄存器中定义的中断为可屏蔽中断;受状态寄存器ST1中INTM位影响,即INTM 1,关闭; INTM 0,开启 SSBX INTM; 禁止中断 RSBX INTM; 开启中断2.不可屏蔽中断:CPU总能响应此中断,包括所有软中断和RS、NMI外部中断中断标志寄存器IFR各种中断的关系w VC54X有16个可屏蔽中断,不同型号的DSP,只有其中的一部分才有意义他们都是所有外设中断和部分外部管脚中断(INT0,INT1.)w 不可屏蔽中断包括所有软件中断和两个硬件中断软件中断一定是内部中断,而这两个硬件中断是外部中断,即RS和NMI两个硬件中断是通过管脚产生的w 中断之间存在优先级,1级最高。
w 中断同流水之间也有竞争关系二、中断处理步骤w 接受请求中断:在有软件或硬件的中断时暂停主程序的执行,IFR相应位被置位w 响应中断:对于可屏蔽中断,当满足条件时,开放中断;对于非可屏蔽中断,可立即响应w 执行中断:跳到中断服务程序(ISR)的入口地址开始执行1、接受请求中断w 中断产生后,不管是否执行中断程序,首先修改标志位,即IFR对应中断比特为由0变为1w 我们可以通过CCS人工修改IFR1IFR对于比特清零方法:w 硬件或者软件复位w 中断服务程序被执行w 向对应比特写如1w INTR指令执行对应中断2、中断响应1)软件中断和非屏蔽的硬件中断可立即被响应 2)可屏蔽中断响应要满足下列条件:w 该中断的优先级是最高的一个wST1寄存器中的INTM位是0,它用于控制所以可屏蔽中断是否使能下面指令用于修改它 RSBX INTM(置0):允许 SSBX INTM(置1):禁止 w寄存器IMR中,相应可屏蔽中断控制位是使能(置1)的,表示允许中断 4、中断执行中断执行过程:注:只有TRAP在中断执行中不把INTM置1,而其他软件和硬件中断都有把INTM置1,中断在返回主程序时,INTM是否被置0,看使用RET(不置0)还是RETE(置0)指令中断矢量表w 它是一个长度为128word的程序段;w 必须位于程序空间一个128word的页中;w 每4个word代表一个中断的执行代码;w 中断矢量表的首地址决定于IPTR, IPTR根据命令文件在程序中赋值;w 每一个中断对应于中断矢量表中的偏移地址是固定的;w IPTR默认值为1FF,系统自己有一个中断矢量表,位于FF80地址;4、中断保护现场w 寄存器的值要在程序中手工进行保护;w 保护的方法就是压栈和弹栈:如保存CPU寄存器和外设寄存器,可用PSHM或POPM压入或弹出堆栈;采用PSHD或POPD将数据存储器的值压入或弹出堆栈。
w 堆栈大小可以在命令文件中设置,SP为其指针,默认大小为1k5、中断延时 中断有时候不是一旦产生就马上有响应,有许多原因会导致中断的延时流水线是其中一个原因 由于流水线的作用,有些中断不打断程序的正常执行,必须等流水线达到一定条件才可以执行中断6、中断总结w可屏蔽中断w非屏蔽中断中断例子定时器三、流水线介绍指令占有的周期w 我们把六个CPU时钟周期称为一个指令周期;w 一条指令是单周期还是双周期不是看执行花费的CPU时钟周期,而是占用的指令周期个数;w 一条指令的执行不是每个CPU时钟周期里都要使用资源,即使使用,也是一部分资源,这是流水的产生根源流水线及其例子中断返回指令与流水5、流水线冲突w 流水线冲突产生的原因是同一个时刻不同的指令在各自不同的阶段使用相同的资源或者访问相同的地址;w 系统的流水线冲突通常系统会自己解决,如访问程序和数据空间的单访问或者双访问存储器时;w 系统不可以自己解决的冲突,我们在程序中加以解决,解决的方法就是在产生冲突的两条语句间,加上NOP指令;。












