DSPIC30F系列芯片内部指令停止技术
来源:kaiyun平台官网登录 可能会在第二条指令执行时发生。 在这种情况下,允许第二条指令和附加的停止周期在ISR 前执行。 这样,与第二条指令关联的停止周期会正常执行。 但是,停止周期实际上会被嵌入到异常过程时序内。 如果一个正常的双周期指令被中断,异常过程将会继续。三、指令停止周期和流程更改指令
CALL和RCALL指令使用W15写入堆栈,并且如果下一条指令读取的源使用W15,可能会因此在下一条指令前强制执行指令停止。RETFIE和RETURN指令永远不能在下一条指令前强制执行指令停止,因为这些指令都只能执行读操作。 但是,用户应该注意RETLW 指令能强制执行停止,因为它会在最后一个周期写入W 寄存器。因为GOTO 和转移指令不执行写操作,所以永远不能强制执行指令停止。
四、指令停止以及DO 和REPEAT 循环
除了增加指令停止周期外, RAW 数据相依性不会影响DO 或REPEAT 循环的工作。REPEAT循环中预取的指令在循环完成或发生异常前不会改变。 虽然寄存器相关性检查会跨指令边界进行,在REPEAT 循环中dsPIC30F 实际上会比较同一个指令的源和目标地址。DO 循环的最后一条指令会预取循环起始地址处的指令或下一条指令(循环外)。 指令停止的决定是由循环的最后一条指令和预取指令的内容做出的。
五、指令停止和程序空间可视性(PSV)
当通过使能PSV (CORCON<2>)位将程序空间(PS)映射到数据空间,并且X 空间EA 处于可见程序空间范围时,读或写周期会被重新定向到程序空间中的地址。 从程序空间访问数据最多需要花费3 个指令周期。PSV地址空间的指令操作与任何其他指令一样,会受到RAW数据相关性和后续指令停止的影响。