PicoBlaze中断

举报
李锐博恩 发表于 2021/07/15 07:23:47 2021/07/15
【摘要】  PicoBlaze中断 我们知道,PicoBlaze微控制器只提供一个中断输入口,如果设计中需要多个中断,可以在FPGA中用逻辑实现。图12-4 所示为一个简单的中断连接图,当有中断发生时,触发器的2端输出一个高电平, 当PicoBlaze响应中断信号INTERRUPT_ACK有效时,触发器3端为高电平,其输出被清零,外部中断被撤消。 图12-4...

 PicoBlaze中断

我们知道,PicoBlaze微控制器只提供一个中断输入口,如果设计中需要多个中断,可以在FPGA中用逻辑实现。图12-4 所示为一个简单的中断连接图,当有中断发生时,触发器的2端输出一个高电平, 当PicoBlaze响应中断信号INTERRUPT_ACK有效时,触发器3端为高电平,其输出被清零,外部中断被撤消。

图12-4 实现简单的中断

接下来,我们结合图12-5和图12-6来讨论中断的执行过程。

图12-5 所示为一段中断程序例程,程序中首先用ENABLE INTERRUPT 指令使能中断。一旦中断使能,中断信号必须持续至少2 个时钟周期才能确保被PicoBlaze 识别。当产生中断事件时,有效的中断使PicoBlaze 在执行完毕当前正在执行的指令(INPUT s1,01)后立即跳转到3FF 处继续执行指令。通常,3FF 处是一个跳转指令(JUMP isr),跳转到中断服务程序。中断服务程序会自动禁止中断,保存当前PC值、ZERO 和CARRY 标志。当执行完毕中断服务程序,退出中断服务程序之前,执行RETURNI 指令,暂存于CALL/RETURN 堆栈中的PC 值自动装入PC 寄存器中,同时,恢复ZERO 和CARRY 标志,程序回到进入中断前的指令处执行。

中断流程

图12-5 中断流程<./center>

从图12-6 中可以清楚地看到此中断的执行过程。

中断时序图

图12-6 中断时序图

如果应用程序不需要中断,则可以使INTERRUPT 连接到低电平,所有1024个指令空间均可以被访问到。

在应用PicoBlaze的中断时,有以下几点需要注意。
 如果指令空间不是1K,则中断发生时,PC会跳转到程序空间的最后一条指令处执行。
 当程序进入中断服务程序时,微控制器会自动禁止所有中断,当退出中断服务程序时,用RETURNI ENABLE指令使能中断。
 在对时间要求很严格的设计中,需要用DISABLE INTERRUPT和ENABLE INTERRUPT配合使用,以避免不必要的中断,如图12-5所示的critical_timing子程序。

12.2.5 PicoBlaze Scratchpad RAM──暂存器

PicoBlaze微控制器包含64字节的暂存器,通过STORE和FETCH指令访问,可以在数据寄存器和暂存器之间进行数据传输。支持直接和间接寻址。暂存器仅被Spartan-3/3E/3A/3AN、Virtex-II、Virtex-II Pro FPGA和Virtex-4/5/6支持。复位不会对暂存器产生影响。

一、 寻址模式

(1) 直接寻址。

立即数就是暂存器的地址,如图12-7所示,寄存器sX直接读/写暂存器。

直接寻址暂存器

图12-7 直接寻址暂存器

(2) 间接寻址。

暂存器的地址为某个指定的寄存器的值。图12-8所示代码的作用是用0填充所有64个暂存器空间。

间接寻址暂存器

图12-8 间接寻址暂存器

二、 用暂存器实现查找表

这个例子是用暂存器实现一个查找表,将4位2进制输入转换为等效的16进制字符显示在7段LED上。这段代码读入外部4位开关量,产生一个2进制结果0000~1111,把它转换为16进制字符显示在7段LED上。暂存器中前16个位置存放LED字符表,输入的开关量作为暂存器的地址。如图12-9所示。

暂存器实现查找表

图12-9 暂存器实现查找表

三、 用暂存器实现堆栈

在PicoBlaze中,虽然有CALL/RETURN程序堆栈,但是没有数据堆栈,如果在程序调用或中断处理过程中需要暂存一些数据,则需要数据堆栈,这时,可以用暂存器来实现这个功能,如图12-10所示。

暂存器实现数据堆栈

图12-10 暂存器实现数据堆栈

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/80354778

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。