Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan.doc

上传人:白大夫 文档编号:3275357 上传时间:2019-08-07 格式:DOC 页数:3 大小:15.50KB
返回 下载 相关 举报
Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan.doc_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan.doc》由会员分享,可在线阅读,更多相关《Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan.doc(3页珍藏版)》请在三一文库上搜索。

1、Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan12.2.4 PicoBlaze中断我们知道,PicoBlaze微控制器只提供一个中断输入口,如果设计中需要多个中断,可以在FPGA中用逻辑实现。图12-4 所示为一个简单的中断连接图,当有中断发生时,触发器的2端输出一个高电平, 当PicoBlaze响应中断信号INTERRUPT_ACK有效时,触发器3端为高电平,其输出被清零,外部中断被撤消。图12-4 实现简单的中断接下来,我们结合图12-5和图12-6来讨论中断的执行过程。图12-5 所示为一段中断程序例程,程序中首先用ENABLE INTERRUPT 指令使能中断。

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

3、流程./center从图12-6 中可以清楚地看到此中断的执行过程。图12-6 中断时序图如果应用程序不需要中断,则可以使INTERRUPT 连接到低电平,所有1024个指令空间均可以被访问到。在应用PicoBlaze的中断时,有以下几点需要注意。? 如果指令空间不是1K,则中断发生时,PC会跳转到程序空间的最后一条指令处执行。? 当程序进入中断服务程序时,微控制器会自动禁止所有中断,当退出中断服务程序时,用RETURNI ENABLE指令使能中断。? 在对时间要求很严格的设计中,需要用DISABLE INTERRUPT和ENABLE INTERRUPT配合使用,以避免不必要的中断,如图12-

4、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直接读/写暂存器。(2) 间接寻址。暂存器的地址为某个指定的寄存器的值。图12-8所示代码的

5、作用是用0填充所有64个暂存器空间。图12-8 间接寻址暂存器二、 用暂存器实现查找表这个例子是用暂存器实现一个查找表,将4位2进制输入转换为等效的16进制字符显示在7段LED上。这段代码读入外部4位开关量,产生一个2进制结果00001111,把它转换为16进制字符显示在7段LED上。暂存器中前16个位置存放LED字符表,输入的开关量作为暂存器的地址。如图12-9所示。图12-9 暂存器实现查找表三、 用暂存器实现堆栈在PicoBlaze中,虽然有CALL/RETURN程序堆栈,但是没有数据堆栈,如果在程序调用或中断处理过程中需要暂存一些数据,则需要数据堆栈,这时,可以用暂存器来实现这个功能,如图12-10所示。图12-10 暂存器实现数据堆栈

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1