DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 215|回复: 0
打印 上一主题 下一主题

PicoBlaze处理器的指令系统

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 19:17:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      PicoBlaze处理器采用精简指令系统(RISC),即具有固定的单指令长度和固定的指令执行周期,每一条指令的执行需要两个时钟周期,如图1所示。指令的长度PicoBlaze为18位,可寻址空间为1024字节。而CoolBlaze(基于CPLD的PicoBlaze)则为16位,可寻址空间为256个字节。我们以CoolBlaze来说明指令系统。




  图1 PicoBlaze处理器指令执行时序
  说明:在指令集中,“X”和“Y”用来定义相关寄存器“s”,其范围为0~7;“kk”用来表示范围在00~FF的一个常数值;“aa”用来表示范围在00~FF的地址;“pp”用来表示范围在00~FF的一个口地址;“C”和“D”表示指令的编码。
  1.程序控制组
  程序控制组(Program Control Group)由跳转指令JUMP、子程序调用指令CALL和子程序返回指令RETURN构成,如图2所示。
  (2) 跳转(JUMP)指令
  在正常条件下,程序计数器(PC)自动地将指针调整到下一条指令。由于程序计数器是8位宽度,寻址空间为256(十六进制为00~FF)。当计数器到FF时,将会自动地变成00。




  图2 程序控制组结构
  JUMP指令用所设定的新地址来改变程序执行顺序。另外,该指令也可以是条件转移。条件转移将根据进位标志(CARRY)和零标志(ZERO)的状态来执行,但条件转移指令本身不会影响这两个标志位。
  每一条JUMP指令都必须用两位十六进制数来指定8位地址,汇编程序将会编译成相应的代码。
  (2) 调用指令CALL
  调用指令CALL的操作类似于转移指令JUMP,也由所设定的新地址来改变程序执行顺序。CALL指令可以是无条件调用或条件调用,当执行该指令后,程序计数器将把当前的计数值压入堆栈,并用所设定的新地址替换。调用指令CALL不会影响标志位的状态,肖条件调用时需判断状态位。
  CoolBlaze的堆栈深度仅为4个字节,即只能嵌套4个调用指令,而FPGA型PicoBlaze的堆栈深度可以有31个字节。由于中断操作时也需要用到一个堆栈,因此通常情况下应保留一个堆栈;除非中断操作被禁止。
  堆栈用独立的缓冲器实现,当堆栈满后将会覆盖最前面的值。每一条CALL指令都必须用两位十六进制数来指定8位地址,汇编程序将会编译成相应的代码。
  (3) 子程序返回指令RETURN
  子程序返回指令与调用指令是相对应的,也分为无条件返回和条件返回。执行RETURN指令后,程序计数器将从堆栈中恢复计数指针。RETURN指令不会影响标志位的状态,当条件返回时需判断状态位。

  
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-28 22:51 , 耗时 0.156291 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表