打印

GSM和您讨论MicroBlaze那些事

[复制链接]
12929|82
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 GoldSunMonkey 于 2011-10-23 21:53 编辑

这个贴子为我学习MicroBlaze的一个学习记录,希望大家能一起讨论。
MicroBlaze是一个高度灵活可以配置的软核。你可以根据你设计的需要,对MicroBlaze进行裁减,用最少的资源完成设计的需要。
MicroBlaze的基本特性:
1. 32个32位的通用寄存器
2. 32位指令,3个操作数和两种地址模式
3. 32位地址
4. 单流水线
除了这些固定的特性以外,MicroBlaze还提供一系列的可选的特性以适应客户不同的设计需要。这些特性在不同版本的MicroBlaze
中是不同的。 目前最新版本的MicroBlaze可以支持所有这些可选的特性。下表就列出了MicroBlaze各版本的特性。
表 不同版本MicroBlaze的性能
评分
参与人数 4威望 +4 收起 理由
logiclimit + 1
lxAPP + 1 精品文章
星星之火红 + 1
xuehua230 + 1

相关帖子

沙发
AutoESL| | 2011-10-23 21:40 | 只看该作者
:L空的,还没完成,我来早了

使用特权

评论回复
板凳
AutoESL| | 2011-10-23 21:40 | 只看该作者
提前顶啦

使用特权

评论回复
地板
GoldSunMonkey|  楼主 | 2011-10-23 21:44 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-23 21:52 编辑

MicroBlaze系统及内部结构MicroBlaze采用 32 位哈佛RISC 架构,32位独立的地址总线和数据总线。在采用缓存模式下,
独立的指令和数据可以缓存并通过XCL(Xilinx CacheLink)接口连接到内存。在不采用缓存的
机制下,地址和数据总线直接通过PLB访问内存。MicroBlaze没有区分数据接口为I/O和
存储,所以处理器存储的接口是PLB和LMB,且LMB存储地址空间不和PLB重合。MicroBlaze
还提供最大256K的片上本地内存接口和片上BRAM连接,对于简单的设计,可以将代码直接放入
片上BRAM;也可以将复杂设计的BOOTLOADER放在片上的BRAM中。用户IP可以通过PLB46
总线或快速点对点连接(FSL)接入系统。一般而言:PLB比较适合基于总线形式的用户IP 开发;
FSL比较适合基于简单点对点输入输出或协处理器的用户IP开发。

MicroBlaze系统架构图

MicroBlaze的内部结构图

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
星星之火红 + 1
5
GoldSunMonkey|  楼主 | 2011-10-23 21:51 | 只看该作者
:L空的,还没完成,我来早了
AutoESL 发表于 2011-10-23 21:40

这个边学习边写

使用特权

评论回复
6
GoldSunMonkey|  楼主 | 2011-10-23 21:56 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-23 21:58 编辑

MicroBlaze的数据储存结构和指令
MicroBlaze支持8位(字节)、16位(半字)和32位(字)的数据形式 并采用大字序方式. 其具体的形式如下表所示:
字节的储存类型

半字的储存类型

字的储存类型

使用特权

评论回复
7
GoldSunMonkey|  楼主 | 2011-10-23 21:58 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-23 22:03 编辑

MicroBlaze的所有指令都是32位的,且有两种定义模式。A型指令有至多2个寄存器源操作数和1个寄存器目
的操作数;而B型指令有1个寄存器源操作数,1个16位立即数以及1个寄存器目的操作数。该立即数可以通过
使用IMM指令将之扩展为32位。所有指令被分成下列5种指令类型:算术指令,逻辑指令,程序流控制指令,
读取/存储指令和特殊指令类型。表1和表2各自列出了MicroBlaze指令集的语法定义和参考实例。
表1 MicroBlaze指令集的语法定义

表 2 MicroBlaze指令集的参考实例

使用特权

评论回复
8
宁江| | 2011-10-24 08:47 | 只看该作者
猴哥,MicroBlaze是不是只支持汇编啊?

使用特权

评论回复
9
leafing| | 2011-10-24 09:27 | 只看该作者
8# 宁江 只支持汇编那就没法用了

使用特权

评论回复
10
AutoESL| | 2011-10-24 10:57 | 只看该作者
:D

使用特权

评论回复
11
GoldSunMonkey|  楼主 | 2011-10-24 12:48 | 只看该作者
猴哥,MicroBlaze是不是只支持汇编啊?
宁江 发表于 2011-10-24 08:47

VHDL VERILOG C C++ 汇编都能使用。

使用特权

评论回复
12
GoldSunMonkey|  楼主 | 2011-10-24 12:49 | 只看该作者
8# 宁江 只支持汇编那就没法用了
leafing 发表于 2011-10-24 09:27

是呀是呀:)

使用特权

评论回复
13
GoldSunMonkey|  楼主 | 2011-10-24 14:34 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-24 14:36 编辑

MicroBlaze的流水线结构
MicroBlaze 的指令采用流水线的结构执行。在大多数的情况下,一条指令在一个时钟周期内完成。 一些指令需要
不止一个时钟周期才能完成(比如除法指令),那么流水线就会停住并等待这个指令的完成。
当指令储存在片外的慢速度的内存时, 取指令的操作可能要占用很多个时钟周期。 为了提高性能, MicroBlaze内
含一个取指令的缓存来减小指令存储器读取速度对处理器的影响。 当MicroBlaze在执行一个多周期的指令时, 预取
指的缓存区就会持续地按顺序取指令。 当流水线继续执行的时候,MicroBlaze 就从内部的指令缓存直接得到指令而
不是从片外的存储器得到指令。 注意这个指令缓存处于MicroBlaze内部并一直有效。其不等同于可以MicroBlaze可
以配置的指令和数据Cache。
MicroBlaze可以配置成2种流水线深度,3级流水线和5级流水线。
三级流水线:
当面积优化使能后,MicroBlaze配置成3级流水线,三级分别是取指、译码和执行:

图  三级流水线

使用特权

评论回复
14
GoldSunMonkey|  楼主 | 2011-10-24 14:39 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-24 15:09 编辑

五级流水线:
当不使用面积优化使能,MicroBlaze配置成5级流水线以取得最大的性能,五级分别是取指、译码、执行、读取和写回。

图五级流水线
取指(IF), 译码 (OF), 执行 (EX), 读取 (MEM), and 回写 (WB).
跳转:
通常当跳转发生的时候,流水线的取指令和译码都在是流水运行的。跳转指令使得流水线必须重新启动并在新的地址取指令。
MicroBlaze需要3个时钟周期去完成跳转。其中2个周期是用于重新使流水正常工作。MicroBlaze的中断机制
MicroBlaze支持重置、硬件异常、中断、用户异常、暂停等机制。它们的优先级排序如下(标号越小,优先级越高
重置
硬件异常
不可掩饰暂停
暂停
中断
用户异常

使用特权

评论回复
15
nongfuxu| | 2011-10-24 14:45 | 只看该作者
排排座,也来听课学习.:)
请教这个软核的性能与现有ARM中哪一款,在性能上比较接近一些?

使用特权

评论回复
16
GoldSunMonkey|  楼主 | 2011-10-24 15:08 | 只看该作者
排排座,也来听课学习.:)
请教这个软核的性能与现有ARM中哪一款,在性能上比较接近一些?
nongfuxu 发表于 2011-10-24 14:45

  这个我不清楚,你可以参考ZYNQ的设计。

使用特权

评论回复
17
宁江| | 2011-10-24 15:10 | 只看该作者
VHDL VERILOG C C++ 汇编都能使用。
GoldSunMonkey 发表于 2011-10-24 12:48

那我得好好学学。有个初步想法,准备把当前产品改成双核,一个硬核一个软核,软核由硬核来配置。顺被问一下猴哥,双核之间的海量数据通讯用什么来实现比较好?异步fifo?有没有比较成熟的方案可以借鉴啊?

使用特权

评论回复
18
GoldSunMonkey|  楼主 | 2011-10-24 15:11 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-10-24 15:16 编辑

MicroBlaze支持一个外接中断源(与中断入口相连)。处理器只有在状态寄存器中的中断允许(IE)被置1时才
能对中断反应。在中断时,在执行阶段的指令完成而在编译阶段的指令被指向中断向量的地址(地址0x10)的分
支代替。中断返回地址(在中断的时候与在编译阶段的指令联合的PC[Program Counter])自动载入到通用寄存
器R14。而且,处理器也通过清理MSR中的IE位禁止其它中断。当执行RTID指令时,IE位又自动置1。
如果在MSR中的进程中断(BIP)位或进程例外(EIP)位任一被置1,中断将被处理器忽略掉。
从一个中断产生到进入中断服务程序(ISR)的MicroBlaze所花费的时间取决于处理器的配置和存储中断向量的内存
控制器的反应时间。如果MicroBlaze配置有一个硬件除法器,当在执行除法指令时产生中断,反应时间就会很大。
用户例外向量在地址0x8上。用户例外是通过在软件数据流插入BRALID Rx指令产生的。
虽然Rx可以是任意通用寄存器,Xilinx推荐使用R15来存储用户例外返回地址,并且使用RTSD指令从用户例外处理器返回。

使用特权

评论回复
19
nongfuxu| | 2011-10-24 15:11 | 只看该作者
请教,"ZYNQ"是指ZYNQ-7000嘛?

使用特权

评论回复
20
GoldSunMonkey|  楼主 | 2011-10-24 15:15 | 只看该作者
那我得好好学学。有个初步想法,准备把当前产品改成双核,一个硬核一个软核,软核由硬核来配置。顺被问一下猴哥,双核之间的海量数据通讯用什么来实现比较好?异步fifo?有没有比较成熟的方案可以借鉴啊? ...
宁江 发表于 2011-10-24 15:10

没用过,不清楚。但是RadpidIO现在用的比较多。
等ZYNQ出来了,你的问题将不是问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:                     2014, 追逐梦想

264

主题

17215

帖子

523

粉丝