位置:51电子网 » 技术资料 » 嵌入式系统

PicoBlaze处理器的指令系统

发布时间:2008/9/19 0:00:00 访问次数:547

  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指令不会影响标志位的状态,当条件返回时需判断状态位。

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



  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指令不会影响标志位的状态,当条件返回时需判断状态位。

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!