一、microblaze软核处理器简介
MicroBlaze™ CPU 是嵌入式、可修改预置 32 位 RISC 微处理器配置系列。利用没有成本、基于 Eclipse 的 Xilinx 软件开发套件,系统设计人员可在没有任何 FPGA 经验的情况下,使用所选的评估套件立即启动 MicroBlaze 处理器的开发。MicroBlaze 处理器符合大量不同应用的需求,这些应用包括工业、医疗、汽车、消费类以及通信市场等。
MicroBlaze 处理器还包含三个用于模拟类似处理器类型的预置配置。
- 微控制器:适合运行裸机代码
- 实时处理器:RTOS 上的确定性实时处理
- 应用处理器:支持嵌入式 Linux 功能
二、microblaze ip核配置说明

当把鼠标放在选项上时,会出现一个提示,会告诉你它有什么作用。下面详细介绍这些选项。
—Select implemention to optimize area(with lower instruction throughput):使能面积优化功能。如果选了这个,implementation就会优化面积,尤其是减少流水线数量,从5条减少到3条。(推荐:建议在资源比较紧张的架构,如Artix-7,使能这个选项。然而,如果对性能有敏感的要求,就不要选这个选项,因为一些指令需要额外的时钟周期去执行。另外,对于MMU, Branch Target Cache, Instruction Cache Streams, Instruction Cache Victims, Data Cache Victims, ACE是不能进行面积优化的。)
—Enable MicroBlaze Debug Module Interface:使能调试功能。用Xilinx Microprocessor Debugger来下载、调试程序。(推荐:除非面积资源奇缺,否则不要禁止这个功能。)
—Use Instruction and Data Caches:当执行放在LMB之外的程序的时候,可以使用指令缓存来改善性能。指令缓存有如下特点:….当使用外部存储时,激活这个选项可以明显地改善性能,即使这个缓存很小。
—Enable Exceptions:当使用一个支持异常的操作系统时,需要激活这个选项。或者在一个单独的程序中添加异常回调函数。
—Use Memory Management:当使用一个支持虚拟内存保护的操作系统时(如Linux),需要激活。(当你使能面积优化或者堆栈保护功能时,内存管理单元是不可见的,自动禁止)
—Enable Discrete Ports:使能软核上的独立端口。

1、指令(Instructions)
—使能桶型移位器(Enable Barrel Shifter):使能软核中的筒形移位器硬件。激活这个参数,就可以使用如下指令(bsrl,bsra,…)使能这个可以提高应用的性能,但是会增大软核的尺寸。如果激活,编译器会自动使用筒形移位器指令。
—使能浮点单元(Enable Floating Point Unit):使能一个单精度浮点单元(FPU)。使用FPU可以明显地提高应用的单精度浮点性能,同时也会增大软核的尺寸。
—使能整形乘法器(Enable Integer Multiplier):使能一个整形乘法器硬件。若激活,则可以在给MUL32赋值时,使用mul和muli指令。当给MUL64赋值时,使用mulh,mulhu,mulhsu指令。这个参数可以设置为NONE,可以把MUL或者DSP48释放,用作其他用途。这样做对软核的面积影响很小。当使用这个选项,编译器自动使用mul指令。
—使能整形除法器(Enable Integer Divider):使能一个整形除法器硬件。若激活,可以使用idiv,iduvu指令。使能这个选项可以提高应用中的除法性能,但是增大了软核的尺寸。当使用这个选项,编译器自动使用idiv指令。
—使能额外机器状态寄存器指令(Enable Additional Machine Status Register Instructions):若激活,则可以读写MSR,使用msrset和msrclr命令。可以提高访问MSR的性能。
—使能模式比较器(Enable Pattern Comparator):如激活,则可以使用模式匹配指令pcmpbf,pcmpeq,pcmpne。模式匹配字节查找指令(pattern comparator byte find, pcmpbf)返回找到的第一个字节的位置,提高字符串和模式匹配操作的效率。若使能,SDK库会自动使用这个指令。pcmfeq和pcmpne指令根据两个字是否相同,返回1或者0。这些指令会提高setting flags的效率,编译器会自动使用它们。激活这个选项还可以count leading zeros指令,clz。clz指令能提高优先级编码的效率。
—使能保留的加载/保存和交换指令(Enable Reserved Load/Store and Swap Instructions):lbur,lhur,lwr,sbr,shr,swr,swapb,和swaph。这些指令能够以相对的字节序来读写数据,交换指令能交换字节或者半个字长。当用little-endian的MicroBlaze访问big-endian的网络时,可以提高效率。
—使能额外的流命令(Enable Additional Stream Instructions):当使用AXI4-Stream链接时,提供额外的功能。这包括动态访问指令GETD和PUTD,这两个指令用寄存器来选择接口。(重要:一定要激活流异常功能,才能使用这些指令,而且知道选择一个流链接)
2、优化
选择Implementation来优化面积(当指令吞吐量很低时):这个选项和欢迎页的选项功能相同。…
3、容错
—使能容错功能(Enable Fault Tolerance Support)
三、
关于双浮点数:
MB可以处理双浮点数,但是MB硬件本身不支持双浮点数,它是在软件上模拟双浮点数,如果要用printf输出双浮点数,那么MB需要更大的内存,但是可以不需要Cache。
与FPGA的通信:
可以使用BRAM,GPIO、AXI协议和FPGA通信,支持异步通信。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225761.html原文链接:https://javaforall.net
