12.2.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 中断流程
从图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直接读/写暂存器。
(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 暂存器实现数据堆栈
[图文]9018做的无线话筒
2019.随笔1
骁龙835版Win10电脑开造:性能超棒,预计下半年开售
MCU和基于STM32超低功耗器件的分立解决参考方案
华为P10或用麒麟960,而麒麟970或不上市
Xilinx可编程逻辑器件设计与开发(基础篇)连载46:Spartan
iPhone 7能重振苹果吗?苹果大中华区营收剧降30%!
采用LPC2138微处理器和TA8409驱动芯片实现机器人手臂控制系统的设计
DTS音效和HiFi谁更强_DTS音效和HiFi详细介绍
韩企发明新型电池,充电十分钟续航800公里
传感技术常见的应用场景
魅族Pro7什么时候上市?魅族Pro7最新消息:魅族Pro7真机图赏,双屏幕双摄像头+联发科X30加持
贴片电阻在电路中的作用
小米6明日发布 真机跑分却已曝光:不输三星S8
关于RFID/NFC标签的低成本测试设计浅析
用碳化硅MOSFET设计双向降压-升压转换器
智能手机的触摸声音定位技术:家居都能是触摸输入工具
TCL公开Mini LED方面的最新研发成果
H2S传感器基于电化学的安培法原理
传统汽车电子MCU企业升级自己的产品来满足汽车企业的诉求