PicoBlaze 8 位微控制器
PicoBlaze 8 位微控制器
PicoBlaze 是一个8 位的微控制器,非常适合于Spartan 系列及Virtex 系列FPGA。还可以用于CPLD,但是需要外部加SRAM 存储器以运行程序。它又被称为常数化的可编程状态机KCPSM((K)constant Coded Programmable State Machine),之所以这样称呼它,是因为PicoBlaze 非常适合实现复杂的、实时性要求不高的状态机。
一般情况下,实现一个PicoBlaze 微控制器,仅仅需要96 个SLICE(192 逻辑单元)和一个BRAM(Block RAM),最大可以寻址1K 指令空间(每条指令18 位宽)。其性能可以达到44~76DMIPS,取决于其所用的FPGA 及速度等级。
PicoBlaze 可以扩展最多256 个8 位的输入口和256 个8 位的输出口,可以通过这些输入/输出口方便地实现与用户逻辑的连接。另外,它还具有一个中断输入。
PicoBlaze 以VHDL/Verilog 源码提供给用户,占用非常少的资源,不会像51 核等CPU一样停产。而且它完全采用同步设计,容易在各种FPGA 中实现。
12.1 PicoBlaze 特性
PicoBlaze 微控制器框图如图12-1 所示,它的特性介绍如下。
12.2 PicoBlaze硬件基本结构
接下来介绍PicoBlaze微控制器的硬件基本结构,包括控制器各功能模块、信号、中断、暂存器、输入输出端口以及指令存储器的不同配置结构。
12.2.1 PicoBlaze功能模块说明
下面对图12-1中所示PicoBlaze的各功能模块进行简要说明。
(1) 通用寄存器(General Purpose Register):PicoBlaze有16个通用寄存器,被定义为s0~sF,为方便程序的编写,这些寄存器可以用汇编命令重新命名。各寄存器用途一样,没有优先级,也没有专用的累加器。
(2) 1K寻址空间:每条指令都是18位宽,这些指令与FPGA其他逻辑设计一同编译,程序在配置过程中自动装入BRAM运行。
(3) 算术逻辑单元(ALU):ALU单元执行所有微控制器运算,内容如下。
所有具有一个操作数的操作,操作数被置于一个指定的寄存器中(sX),结果也被存放在此寄存器中。如果某条指令需要两个操作数,则第二个操作数被置于另外一个寄存器sY或者是一个立即数kk中。
(4) 标志位(Flag):ALU的操作会影响标志位RO和CARRY。ZERO表示最后一个操作结果为零,CARRY的结果预示着各种各样的情况,取决于最后一条指令的执行结果。
(5) 中断使能标志(Interrupt_Enable):使能中断输入Interrupt。
(6) 64字节暂存器(Scratchpad RAM):PicoBlaze微控制器提供64字节的片上数据暂存空间,通过STORE和FETCH指令直接或间接寻址。STORE指令将通用寄存器sX中的内容写到64个空间中的某个地址,FETCH的操作与STORE相反,读出64个空间中某个数到寄存器sX中。此RAM的6位地址可以用立即数指定,也可以通过一个通用寄存器指定,仅低6位有效,地址范围00~3F。
(7) 输入/输出(Input/Output):PORT_ID指定输入/输出的地址,它为8位,因此可以扩展256个输入口和256个输出口。输入时,PicoBlaze从输入口IN_PORT 读数据存入sX 中; 输出时, PicoBlaze 将sX 中数据送到OUT_PORT。
(8) 程序计数器(Program Counter,PC):PC 指向下一条将要执行的指令。默认情况下,PC 自动指向下一条指令所存储的位置。仅JUMP 、CALL、RETURN、RETURNI、中断和复位指令会改变这种默认行为。PC 不会直接被
应用程序改变。PC 为10 位宽,因此最大寻址空间为1024,当PC 达到3FF hex 时,会返回到00 地址。
(9) 程序流控制(Program Flow Control):程序的默认执行顺序可以通过改变条件或非条件流控指令来改变。JUMP 可以跳转到1024 个空间的任何位置。
CALL 指令指定了子程序的起始地址, 同时返回地址被保存在CALL/RETURN 堆栈中。如果程序中使能了中断,那么,当中断发生时,程序的返回地址也会保存在CALL/RETURN 堆栈中,同时中断向量3FF(Hex)装入PC。中断用RETURNI 返回,而不是RETURN。
(10) 堆栈(CALL/RETURN):CALL/RETURN 堆栈最大可以存储31 个指令地址,允许31 级子程序嵌套。由于中断也会占用此堆栈,因此,如果程序中使能了中断,则至少需要保留一级空间给中断用。此堆栈是一个轮转型的结
构,如果堆栈满,再装入地址时,最早进入的地址就会溢出。没有指令可以控制堆栈或堆栈的指针,也没有程序空间供堆栈应用。
(11) 中断(Interrupt):PicoBlaze 提供一个中断输入,且这个中断是异步的,它可以发生在指令周期的任何时候。然而,一般的设计规则建议用时钟同步PicoBlaze 的所有输入。中断响应时间小于5 个时钟周期。
(12) 复位(Reset):PicoBlaze 在FPGA 配置完成后立即自动复位。复位强制PicoBlaze 器进入初始状态,PC=0,标志位清零,中断禁止,CALL/RETURN堆栈也被复位。但是数据寄存器和Scrachpad RAM 不受复位的影响。
12.2.2 PicoBlaze 接口信号
本节介绍PicoBlaze 微控制器的接口信号,如图12-2 所示。
12.2.3 PicoBlaze指令集
PicoBlaze微控制器的指令包括程序控制指令、算术指令、逻辑指令、移位和旋转指令、中断指令、存储指令和输入/输出指令等,如图12-3所示。
表12-1 PicoBlaze指令列表
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/80354770
- 点赞
- 收藏
- 关注作者
评论(0)