Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第11 16章 第16章.ppt

Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第11 16章 第16章.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
 16.1 PicoBlaze中断处理机制 16.1.1 软件中断处理过程   与中断相关的指令在13.2.9节中讨论过。enable interrupt和disable interrupt指令使能和禁止中断请求,对应地,还有两个返回中断指令:returni enable和returni disable指令,用来返回到原来的中断点。   典型的带有中断服务程序流程的软件执行过程如图16-1所示。它主要包括如下几个部分:   (1) 初始化enable interrupt指令:用来允许中断服务请求。由于中断请求默认是禁止的,所以在初始化时需要打开。   (2) 跳转(jump)到指令存储器最后一条指令(如3FF):跳转到中断服务子程序。   (3) 中断服务子程序:执行中断请求服务,中断服务程序必须以returni指令结束。   假设正在执行add s0, s3指令时,有外部I/O有效中断发生,则PicoBlaze执行中断的步骤如下:   (1) 完成当前执行指令;   (2) 保存程序计数器内容,清除中断标志i(置为0),保存零标志和进位标志,程序计数器置为3FF;   (3) 在3FF地址执行jump isr指令;   (4) 执行中断服务子程序;   (5) 执行returni指令,恢复程序计数器和标志位;   (6) 重新开始执行sub s5,01指令。 图16-1 中断流程图 16.1.2 中断时序描述   中断程序执行详细的时序参数的描述如图16-2所示。按照如图16-2所示时序标注时间点描述基本时序如下:   (1) 在t1时刻,外部中断接口置位中断信号,PicoBlaze此时继续正常操作,执行完当前add s0,s3指令。   (2) 在t2时刻,PicoBlaze发现有中断信号来了,所以放弃执行下一条指令(sub s5,01),而去执行call 3FF指令。   (3) 在t3时刻,PicoBlaze置位中断响应信号,表示要对中断请求进行处理,同时保存sub s5,01指令的地址以及清零标志和进位标志,清除中断。   (4) 在t4时刻,PicoBlaze装载并执行地址3FF的跳转指令jump isr,外部中断接口电路响应中断响应信号并撤销中断信号。   (5) 在t5时刻,PicoBlaze开始执行中断服务程序。 图16-2 PicoBlaze中断时序描述图 16.2 外部中断接口 16.2.1 单个中断请求   如果在PicoBlaze系统外设中仅有一个I/O接口能够产生中断请求,中断接口电路仅需要一个标志寄存器,如图16-3所示。当中断请求后,外部I/O接口电路置位中断请求信号一个时钟周期,置位中断标志寄存器激活PicoBlaze的中断输入。如果PicoBlaze中断允许,则它便通过置位中断响应信号一个时钟周期来响应中断并清零中断标志位。 图16-3 单个请求中断接口图 16.2.2 多个中断请求   在PicoBlaze系统中处理两个或者多个中断请求比较复杂。PicoBlaze必须决定处理哪个中断请求,然后在接收中断请求后清零对应的中断标志寄存器,这就需要协调硬件接口和中断服务子程序。   带有两个中断请求的中断接口如图16-4所示。两个独立的中断请求int request0和int request1连接两个中断标志触发器。中断标志触发器的输出通过一个或门产生最终的中断请求信号。除此之外,这两个信号同时连接到一个2选1选择器的输入端。当PicoBlaze发现中断请求时,它不知道是哪个外设发出请求或者是否是两个外设同时发出请求,中断服务子程序必须首先输入两个请求信号,检查其中断优先级值,然后执行对应的服务程序。 图16-4 多个中断请求接口图   除此之外,PicoBlaze还需要清零对应的中断标志触发器。interrupt_ack信号不能直接用来清零中断标志触发器,因为它不知道哪一个外设请求刚才被PicoBlaze接受了。需要采用特殊的输出逻辑译码电路产生一个清零脉冲信号clr。每个中断标志触发器的清零信号对应唯一的端口id号。在中断服务子程序中,在决定接受哪一个中断请求后,增加一条output指令。该指令实际上并不输出任何数据,而是产生一个周期的脉冲信号,用来清零对应的中断标志触发器。 16.3 软 件 开 发 16.3.1 中断处理主程序   基于微处理器的应用通常都采用下面软件结构:    call 初始化程序   forever:    call 子程序任务1;    call 子程序任务2;    ...    call 子程序任务n;    jump forever;   一些任务有可能包

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档