首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载45:PicoBlaze 8 位微控制器
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
《Xilinx可编程逻辑器件设计与开发(基础篇)》连载45:PicoBlaze 8 位微控制器
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-10-23 20:58
|
显示全部帖子
《Xilinx可编程逻辑器件设计与开发(基础篇)》连载45:PicoBlaze 8 位微控制器
控制器
,
开发
,
连载
第12章 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:存在于堆栈顶的值。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
X86
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议