PicoBlaze 8 位微控制器

举报
李锐博恩 发表于 2021/07/15 08:51:11 2021/07/15
【摘要】 PicoBlaze 8 位微控制器 PicoBlaze 是一个8 位的微控制器,非常适合于Spartan 系列及Virtex 系列FPGA。还可以用于CPLD,但是需要外部加SRAM 存储器以运行程序。它又被称为常数化的可编程状态机KCPSM((K)constant Coded Programmable State Machine),之所以这样称呼它,是因为PicoBlaze...

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 所示,它的特性介绍如下。

PicoBlaze 微控制器框图

图12-1 PicoBlaze 微控制器框图

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 所示。

PicoBlaze 微控制器接口连接

图12-2 PicoBlaze 微控制器接口连接

12.2.3 PicoBlaze指令集

PicoBlaze微控制器的指令包括程序控制指令、算术指令、逻辑指令、移位和旋转指令、中断指令、存储指令和输入/输出指令等,如图12-3所示。

PicoBlaze指令集

图12-3 PicoBlaze指令集


表12-1 PicoBlaze指令列表

PicoBlaze指令列表

PicoBlaze指令列表

PicoBlaze指令列表

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/80354770

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。