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-1 PicoBlaze 微控制器框图 16 个8 位的通用数据寄存器。指令空间:1K(18 位)片上存储器,上电自动装入。ALU:字节宽度,具有进位carry 及零zero 标志位。64 个字节的片上暂存器Scratchpad RAM。最多可以扩展256 个输入口和256 个输出口。31(10 位)个可供CALL/RETURN 调用的堆栈。每条指令在两个时钟周期内完成,在Virtex2-Pro、Virtex-4、Virtex-5、Virtex 6高性能FPGA中,可以达到200MHz(100MIPS)。快速中断响应,最差为5个时钟周期。在Spartan、Virtex2、Virtex-II Pro、Virtex4/5/6中,仅需要大约96个SLICE和一个BRAM。支持汇编和指令集仿真。

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 PicoBlaze 微控制器接口连接 IN_PORT[7:0]:数据输入。在执行INPUT 指令期间,有效的输入数据将出现在此端口。INTERRUPT:中断输入。如果中断使能位被应用程序置位,那么,当此中断输入口有一个持续至少2 个时钟周期的高电平,则PicoBlaze 会进入中断服务程序。如果中断使能标志位清零,则PicoBlaze 会忽略中断引脚上的信号。RESET:复位输入。为了复位微控制器,产生一个复位事件,只需要使RESET口输入一个至少一个时钟宽度的高电平。随着FPGA配置的完成,会自动产生一个复位信号。CLK:时钟输入。CLK最高频率由ISE综合结果决定。没有占空比的要求。OUT_PORT[7:0]:数据输出。在执行OUTPUT指令期间,输出数据出现在此端口,并持续两个时钟周期。FPGA内部逻辑可以在CLK上升沿当WRITE_STROBE为高时采样该数据。PORT_ID[7:0]:输出端口地址。在执行INPUT/OUTPUT指令期间,此端口信号保持两个时钟周期。READ_STROBE:读控制信号。此信号为高,在执行INPUT指令期间,表明IN_PORT[7:0]已经被采样到指定的数据寄存器中。该信号在双周期输入指令INPUT的第二个时钟周期有效。该信号常被用来作为读FIFO操作的握手信号。WRITE_STROBE:写控制信号。在执行OUTPUT指令期间,此信号为高时OUT_PORT[7:0]数据有效。此信号在OUTPUT指令的第二个CLK周期有效。在FPGA内,当WRITE_STROBE有效时在CLK上升沿采样OUT_PORT[7:0]数据。INTERRUPT_ACK:中断响应输出。此信号为高时,响应中断事件。在双周期的中断事件的第二个时钟周期此信号有效。它经常被用来清除中断源INTERRUPT的输入。

12.2.3 PicoBlaze指令集

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

图12-3 PicoBlaze指令集 子程序调用和返回支持深度为31的堆栈。x和y表示寄存器,范围是0~F。kk代表立即数,范围是00~FF。aaa代表地址,范围是000~3FF。pp代表端口地址,范围是00~FF。ss代表暂存器地址,范围是00~3F。
表12-1是PicoBlaze微控制器各指令操作的简要说明。这些指令都是按照KCPSM3的语法(括号中为pBlazIDE的语法)进行说明,每条指令包括了基本描述、功能描述以及对进位位和零标志位的影响。

表12-1 PicoBlaze指令列表

sX:16个通用寄存器中的任何一个,s0~sF。sY:16个通用寄存器中的任何一个,s0~sF。aaa:10 位地址,为立即数,或者为一个三位的16 进制数000~3FF,或者为标号。kk:8 位端口地址,或者为立即数,或者为两位16 进制数00~FF。pp:8 位端口地址,或者为立即数,或者为两位16 进制数00~FF。ss:6 位暂存器地址,或者为立即数,或者为两位16 进制数00~3F。RAM[n]:地址为n 的暂存器内容。TOS:存在于堆栈顶的值。

PicoBlaze 8 位微控制器相关推荐

  1. 意法半导体STM32 ARM Cortex 32位微控制器

    STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度.它包括一系列产品,集高性能.实时功能.数字信号处理.低功耗/低电压操作.连接性等特性于一身,同时 ...

  2. CH579 Cortex-M0 内核低功耗蓝牙 MCU 集成 ARM 内核 32 位微控制器

    概述 CH579 是集成 BLE 无线通讯的 ARM 内核 32 位微控制器.片上集成低功耗蓝牙 BLE 通讯模块.以太网控制器及收发器.全速 USB 主机和设备控制器及收发器.段式 LCD 驱动模块 ...

  3. PIC16F648A-E/SS PIC16 8位 微控制器,7KB(4Kx14)

    PIC16F648A 是基于闪存的 8 位 CMOS 微控制器.PIC16F627A/628A/648A 可以直接或间接寻址其寄存器文件或数据存储器. 所有特殊功能寄存器 (SFR),包括程序计数器, ...

  4. 32位微控制器 (MCU)STM32G081KBU6 128KB 闪存 32QFN

    STM32G0 32位微控制器 (MCU) 适合用于消费.工业和家电领域的应用,并可随时用于物联网 (IoT) 解决方案.这些微控制器具有很高的集成度,基于高性能ARM® Cortex®-M0+ 32 ...

  5. R5F100AAA100SP#V0低功耗16位微控制器MCU RENESAS

    描述 R5F100AAA100SP#V0 R5F100AAA Renesas 16位微控制器 - MCU RL78 / G13 RENESAS MCU 真正的低功耗平台(低至66μA/ MHz,RTC ...

  6. R5F1006CASP#X0 16位微控制器MCU RL78 / G13 MCU低功耗 通用应用RENESAS

    描述 R5F1006CASP#X0 16位微控制器 - MCU RL78 / G13 MCU 32 + 4/2 20pin SSOP T&R RL78 / G13 RENESAS MCU 真正 ...

  7. R5F102A8ASP#V0 16位微控制器 - MCU RL78G12 8+2/768B 30SSOP R5F102A8ASP#30

    16位微控制器 - MCU RL78G12 8+2/768B 30SSOP R5F102A8ASP#30 核心:RL78 数据总线宽度:16位 最大时钟频率:24 MHz 程序存储器大小:8 kB 数 ...

  8. 64位 linux 32位连接器,意法半导体为 32 位微控制器发布了一款自由的 Linux 集成开发环境...

    32 位微控制器世界向 Linux 敞开大门.前一段时间,领先的 ARM Cortex-M 供应商意法半导体(ST)发布了 一款自由的 Linux 桌面版开发程序,该软件面向其旗下的 STM32 微控 ...

  9. CH573/CH571低功耗集成BLE 32位微控制器MCU

    目录 简介 1. 系统框图 2. 芯片特性 3. CH57系列选型参考 应用领域 简介 CH573是集成BLE无线通讯的32位RISC微控制器.片上集成低功耗蓝牙BLE 通讯模块.全速USB主机和设备 ...

最新文章

  1. Scala协变与Java泛型
  2. 例题2-1 在屏幕上显示一个短句。
  3. Delphi - 对象构造浅析后续
  4. AQO.NET实现数据操作封装
  5. 监控组策略应用----组策略结果
  6. 【英语学习】【Daily English】U10 Education L03 She's planning to study abroad
  7. 移动web开发-------meta
  8. Thinking in Java 11.10 Map
  9. 数学建模——怎样学习数学建模
  10. 程序员自编的中华古诗词数据库在GitHub上火了!
  11. 表格列宽怎么设置?(excel表格)
  12. python怎么读write_python怎么读
  13. 多个category实现同一个方法调用的顺序
  14. JAVA输入任意一个数,判断是否是回文数
  15. 送给80、90后的人生经典语录,别再孩子气了
  16. 计算机二级是wpsoffice高级应用吗,考计算机二级ms office高级应用但是自己电脑上office软件都是wps 这和word ppt excel 软件有区别吗...
  17. 《HTML5 2D游戏编程核心技术》——第1章,第1.5节开始Snail Bait游戏编程
  18. 马云背后的计算机天才,马云背后的女强人,只用了1年时间身价就高达百亿,...
  19. ondrive网盘php,IT之家学院:利用OneIndex + OneDrive搭建私人网盘(可对外公开) - IT之家...
  20. 常用邮箱POP3 STMP服务器与端口号设置:

热门文章

  1. Linux系统开机过程详细分析
  2. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
  3. redis在容器里连接不上_Redis服务器被劫持风波,服务器相关知识共享学习
  4. excel随机数_Excel使用函数生成1100的不重复随机数 2种方法
  5. linux 加密可逆,RSA加密是可逆的吗
  6. php 降序 保留索引,PHP asort():对数组排序(升序),并保持索引关系
  7. 一文帮你了解小型直流有刷电机内部结构
  8. 2021年春季学期-信号与系统-第八次作业参考答案-第六小题
  9. 高校竞赛排行榜主办方数据上传 操作手册
  10. 华工智能车队--这里有一群热爱智能车的人