您当前的位置:五五电子网电子知识单片机-工控设备综合-其它ADSP2116x的中断机制与应用 正文
ADSP2116x的中断机制与应用

ADSP2116x的中断机制与应用

点击数:7139 次   录入时间:03-04 11:38:45   整理:http://www.55dianzi.com   综合-其它

1引言
  
ADSP2116x是高性能的32 b浮点处理器,在一个单独的芯片上集成了具有强大浮点运算能力的微处理器内核、零等待SRAM、多种形式的外部接口和独立的I/O控制器,构成了一个完整的系统。超级哈佛结构(SHARC)的CPU和高速指令cache使得ADSP2116x的指令均为单周期指令;6套独立的总线分别用于程序存储区(PM)和数据存储区 (DM), 可以同时对PM和DM进行数据访问。具备经优化的DMA和中断的传输机制, 使得与外部的数据交换独立、并行于处理器内核的运算过程。
  此外,片内的主机接口和总线仲裁器可以使多片的处理器无需任何 附加资源即可构成多处理器阵列。这些特点使得该系列的芯片广泛应用于雷达信号处理,无线通信系统和个人医疗设备等诸多的场合。中断是DSP和外部设备进行信息交换的最重要的方式之一,因而中断处理在现代实时信号处理方面也占有举足轻重的地位。本文主要介绍了 ADSP2116x的中断机制,着重讨论了中断处理在实际工程的应用。

2ADSP2116x的中断机制
  
ADSP2116x系列芯片提供了32个中断源,其中有4个是系统保留的,有4个是用户软件中断 ,其余的24个均为系统预先定义好的中断。
  他们分为3个优先级,其中的2个不可屏蔽的中断具有最高的优先级,而其他的22个可屏蔽中断则为低的优先级。通过对相应的状态寄存器的设置,用户可以有选择地将中断源映射到这22个可屏蔽中断。通过查询相应的寄存器状态,用户可以查询中断是否发生,中断返回地址等状态信息。芯片为每个中断源分配了一个惟一的中断号,在中断向量表中,每个中断都对应有4条中断服务指令。
2.1中断源
  ADSP2116x系列芯片提供了丰富的中断源,主要包括:
  (1)评估板中断
  这个中断具有最高的优先级,当系统复位并且有外设通过引脚EMU发出请求时 中断发生,他是不可屏蔽中断。
  (2)系统复位中断
  这个中断具有第二高的优先级,当外设通过引脚RESET发出请求时中断发生,他也是不可屏蔽中断。
  (3)外设中断
  当外部设备通过引脚IRQ0~IRQ2发出请求时中断发生,他们是可屏蔽中断。
  (4)多处理器向量中断
  当多处理器系统中的某个DSP写VIRPT寄存器时中断发生,他是可屏蔽中断。
  (5)片内设置的其余中断
  如串行口中断、链路口中断、DMA通道中断、定时器中断等,他们都是可屏蔽中断。
2.2中断控制寄存器
  ADSP2116x利用各种状态寄存器来完成中断锁存、中断屏蔽等工作。具体地说,与中断控制有关的寄存器如表1所示。

2.3中断的触发
  
ADSP2116x支持2种中断触发方式即边缘触发和电平触发。用户可以通过设置寄存器MODE2 中的IRQ0E~IRQ2E来选择各个外设中断的触发方式。在电平触发的工作方式下,在时钟信号C LKIN的上跳沿如果DSP检测到输入信号的电平为低时,则中断发生。在处理器从中断服务程序返回之前输入信号电平应变为高,否则DSP会认为又发生另外一次中断。在边缘触发的工作方式下,在CLKIN的上跳沿如果输入信号为高电平,并且下一周期为低电平时,则中断发生。
  比较而言,边缘触发对外部硬件的要求更低,因为在中断之后不必翻转电平;电平触发 的优点则在于当线或逻辑时多个中断设备能够共享一根电平触发线,这更易于系统的扩展。
2.4中断的锁存
  当检测到一个中断之后,DSP通过设置中断锁存寄存器IRPTL或LIRPTL中的相应位来记录已 经发生的中断。中断发生之后,处理器进入中断服务程序,此时DSP每个周期都要对上述2 个寄存器中的相应位进行清零,以保证在执行中断服务程序的时候同一个中断不会被锁存。 直到中断结束后,DSP才结束对锁存位的清零。实际上,除了RESETEMU中断,其余的中断都是可屏蔽的,也即是锁存相应的中断,但是不执行中断服务程序 。如果一个被屏蔽的中断被锁存之后,DSP要等到这个中断开放之后才能执行相应的服务程序。
2.5中断的嵌套
  ADSP2116x支持中断的嵌套。在不允许中断嵌套时,高优先级的中断不能中断低优先级中断的服务程序。当高优先级的中断发生之后,DSP将此中断锁存,直到当前的中断服务程序执行完成之后才开始执行已经锁存的中断。在允许中断嵌套的情况下,高优先级的中断就可以随时中断低优先级中断的服务程序,此时,DSP锁存低优先级中断,直到嵌套结束之后才继续执行低优先级的中断服务程序。
  中断嵌套发生之后,DSP利用中断屏蔽指针寄存器IMASKP产生一个临时的中断屏蔽,他不能屏蔽比当前优先级更高的中断,但可以屏蔽其他所有同级和级别更低的中断。也就是说,只响应更高优先级的中断,否则要等当前的中断服务程序执行完成之后才响应。同时,临时的中断屏蔽并不影响中断屏蔽寄存器IMASK的值。
  在中断嵌套的情况下,如果低优先级中断发生之后立即又发生了更高优先级的中断,此时高优先级中断的服务程序要延迟一个周期才开始执行。这个延迟用来执行被中断的低优先级中断服务程序的第一条指令。这样,在高优先级中断服务程序返回之后才能正确地继续执行低优先级中断的服务程序。
2.6多处理器中断
  ADSP2116x系列芯片的并行工作能力很强,体现在中断机制中,就是他支持多处理器的向量中断,这个中断可用于多处理器系统中各个DSP之间的相互通信和同步。当外部处理器,包括主机或其他的DSP往向量中断寄存器VIRPT中写入一个新的地址时,中断发生。响应多处理器中断时,DSP自动将状态标志压栈,并且开始执行VIRPT寄存器中指定地址的中断服务程序。中断返回之后,DSP又自动恢复状态标志。DSP通过设置系统状态寄存器SYSTA中的VIPD 位来记录多处理器中断的发生。多处理器之间通信的程序必须随时监控VIPD位以确定DSP是否能接收一个新的VIRPT地址。要注意的是,DSP不能对本身的VIRPT寄存器进行操作。

3应用举例
  以DSP为核心的实时信号处理系统总是要不断地和外部设备进行数据和状态的通信,在基于ADSP2116x的DSP系统的开发过程中,最常用到的中断包括外部设备中断和DMA通道中断。下面分别详细讨论这两种类型的中断并给出具体的程序代码。
3.1外设中断的应用实例
  ADSP2116x提供了3个外设中断,他们是通过引脚IRQ0~IRQ2而引入,其中IRQ2的中断级别最高,而IRQ0的中断级别最低。假定DSP 所需的输入数据是从前端的FIFO得到,如果FIFO中数据满足计算要求后以中断的方式通知DSP,对应的中断源是IRQ1,那么下面的程序可以完成这一功能:
  
  对于任何中断处理来说首先都要定义中断向量表,每个中断源都有惟一的中断号,每个中断 号对应有4条服务程序指令,这4条指令完全由用户定义。每个中断号的向量地址也预先由芯片定义。例如在ADSP21161中,复位中断的中断号为2,中断向量地址为0x40004;IRQ1中断的中断号为7,中断向量地址为0x4001C。其余中断的中断号和中断向量地址可以参考文献[1,2]。寄存器MODE1中的IRPTEN位用于控制所有的可屏蔽中断使能,如果这 位为0,则芯片不响应任何的可屏蔽中断。
  当FIFO控制电路判断FIFO中数据已经满足要求之后,IRQ1输入电平由高变为低,此时IRQ1中断发生,经过上面程序的处理,DSP可以通过在中断服务程序中设置标志位等办法来查询FIFO中数据是否满足要求。这样利用中断的方式就完成了FIFO向DS P报告工作状态的通信过程。
3.2DMA通道中断的应用实例
  同样是上面的例子中,假定当DSP检测到FIFO中的数据已经满足要求之后,为了充分利用DSP数据传送和数据处理的并行性,DSP利用DMA的方式从FIFO中读取数据。假定需要传输的数据个数为32,所用的DMA通道为通道10。DMA传输完成之后,同样要以中断的方式通知DSP。 那么下面的程序能够完成这一功能。关于DMA设置的详细过程可以参考文献[3]。

[1] [2]  下一页


本文关键字:暂无联系方式综合-其它单片机-工控设备 - 综合-其它