正点原子 发表于 2020-10-10 11:49:49

【正点原子FPGA连载】第一章MicroBlaze简介--摘自【正点原子】达芬奇之Microblaze 开发指南

本帖最后由 正点原子 于 2020-10-16 16:23 编辑

1)实验平台:正点原子达芬奇FPGA开发板
2)购买链接:https://detail.tmall.com/item.htm?id=624335496505
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_dafenqi.html
4) 正点原子官方B站:https://space.bilibili.com/394620890
5)对正点原子FPGA感兴趣的同学可以加群讨论:876744900 点击加入:                                                                                                                   
6)关注正点原子公众号,获取最新资料





第一章MicroBlaze简介


Vivado是Xilinx公司提供的一个集成设计环境,可用于搭建复杂的嵌入式系统,搭建完成后的系统将作为后续软件开发的硬件基础。在嵌入式系统设计的过程中,用户可直接调用官方所提供的IP核,比如MicroBlaze软核嵌入式处理,从而大大加速系统设计;也可以设计自己的IP核,定制符合需求的硬件系统。
本章包括以下几个部分:
11.1使用MicroBlaze的意义
1.2MicroBlaze是什么
1.3Vitis是什么
1.4使用MicroBlaze的设计流程



1.1使用MicroBlaze的意义
嵌入式系统至今已有40多年的历史,嵌入式处理器是嵌入式系统的核心部件,是控制、辅助系统运行的硬件单元。嵌入式处理器范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位嵌入式CPU。世界上具有嵌入式功能特点的处理器已经超过1000种,流行的体系结构包括MCU,MPU等30多个系列。鉴于嵌入式系统广阔的发展前景,很多半导体制造商都大规模生产嵌入式处理器,并且公司自主设计处理器也已经成为了未来嵌入式领域的一大趋势,从单片机、DSP到FPGA有着各式各样的品种,同品种的产品相比速度越来越快,性能越来越强,价格也越来越低。
与传统的独立CPU相比,软核嵌入式处理器同样有较高的处理能力,并且在可构建多核系统、可定制取舍等方面均优于传统CPU,如Xilinx公司推出的MicroBlaze。由于MicroBlaze在FPGA内部实现,它利用FPGA内部通用的资源和相关IP核,能够实现可编程片上系统(SOPC)的设计,所以能够有效地提高可靠性、减少芯片数量、减少连线、缩小电路板面积,在体积、重量、功耗、成本等各方面有较大的优势。因此,软核嵌入处理器技术在某些特殊领域有着重要的应用意义和前景。传统系统架构与SOPC架构对比如下所示:

图 1.1.1 传统的系统架构

图 1.1.2 SOPC架构
在进行系统设计时,倘若系统非常复杂,采用传统FPGA单独用Verilog/VHDL语言进行开发的方式,工作量无疑是巨大的,这时调用MicroBlaze软核嵌入式处理器IP核,将会大大减少开发人员的工作量,从而对于提升工作效率,节约项目成本具有重大意义。采用FPGA和MicroBlaze进行嵌入式系统设计,可实现多片专用芯片的功能,有利于系统实现小型化、集成化。
由于使用MicroBlaze软核进行系统搭建时需要利用FPGA内部通用资源和相关IP核,会占用一定的资源,因此当所要实现的功能较为简单时,则没有必要使用Microblaze来实现,传统的FPGA设计更具有优势;而当实现的功能较为复杂时(如GUI界面的实现),则使用Microblaze更具有优势,可以大大提升工作效率。
1.2MicroBaze是什么
MicroBlaze是Xilinx公司提供的一款32/64位软核嵌入式处理器,是一款高度灵活可配置的易用型处理器,它能够利用FPGA内部通用资源和相关IP核,实现可编程片上系统(SOPC)的设计。该处理器采用32位RISC(Reduced Insrtction System Computer)优化结构和Harvard总线结构,广泛适用于Spartan、Virtex和Artix等系列的FPGA。
MicroBlaze软核嵌入式处理器是高度可定制的IP核,支持70多个配置选项,有32个32位通用寄存器以及2个32位特殊寄存器—PC指针寄存器和MSR状态标志寄存器。另外MicroBlaze软核处理器还配有指令和数据缓存、浮点单元、内存管理单元和许多其他选项,从而大大提高其运算性能。MicroBlaze软核嵌入式处理器的所有指令字长都是32位,具有3个操作数和两种寻址模式,指令按功能可划分为:逻辑运算、算术运算、分支、存储器读/写和特殊指令等等。指令以并行流水线的方式执行,其流水线可分为取指、译码和执行。
图 1.2.1是MicroBlaze的框图,展示了固定的硬件特性模块和可配置选项,如指令和数据缓存。

图 1.2.1 MicroBlaze框图
图中MicroBlaze处理器的外部接口定义如下:
DPLB(Data Processor Local Bus):数据接口,处理器本地总线。
DOPB(Data On-chip Peripheral Bus):数据接口,片上外设总线,该接口实现CPU与片内外设的数据交换。
DLMB(Data Local Memory Bus):数据接口,本地存储器总线,该总线为CPU与本地块存储器间的数据交换通道。
IPLB(Instruction Processor Local Bus):指令接口,处理器本地总线。
IOPB(Instruction On-Chip Peripheral Bus):指令接口,片上外设总线,CPU通过此总线读取外部存储器的程序代码。
ILMB(Instruction Local Memory Bus):指令接口,本地存储器总线,该总线与内部块存储器相连,提供高速指令的提取。
MFSL0..15 (Fast Simple Link FSL master interface):FSL主设备数据接口,提供点对点的通信通道。
SFSL0..15 (Fast Simple Link FSL slave interface):FSL从接口,提供点对点的通信通道。
IXCL(Instruction side Xilinx Cache Link interface):指令侧高速缓存链接接口。
DXCL(Data side Xilinx Cache Link interface):数据侧高速缓存链接接口。
MicroBlaze处理器通常用于如图 1.2.2所示的三种预设配置之一:运行裸机应用程序的简单微控制器(Microcontroller);具有高速缓存和与运行嵌入式实时操作系统的实时处理器(FreeRTOS);最后是带有运行Linux的内存管理单元的应用处理器(Application)。下表显示了在Artix-7系列下的XC7A200T芯片上这些配置的性能和利用率(如果是达芬奇开发板板载芯片XC7A35T,资源利用率会更大一些)。MicroBlaze可以在所有Xilinx FPGA中用作独立处理器,也可以在Zynq SoC系统中用作协处理器。

图 1.2.2 三种预设配置的性能和利用率
1.3Vitis是什么
Vitis统一软件平台的前身为Xilinx SDK,从Vivado 2019.2版本开始,Xilinx SDK开发环境已统一整合到全功能一体化的Vitis中。Vitis可以采用C、C++或Python开发以MicroBlaze处理器为核心的嵌入式系统,可实现在Xilinx异构平台(包括FPGA、SoC和Versal ACAP)上开发嵌入式软件和加速应用。它可为边缘、云和混合计算应用加速提供统一编程模型。Vitis是应用IDE(集成开发环境),可实现真正的同质及异构多处理器设计、调试和性能分析。
1.4使用MicroBlaze的设计流程
使用MicroBlaze进行嵌入式设计包括两部分,分别是硬件设计和软件设计。硬件设计使用到的工具是Xilinx提供的Vivado套件,软件设计使用Xilix提供的Vitis统一软件平台。
在Vivado中我们可以在Block Design中搭建MicroBlaze处理系统,然后生成包含硬件信息的xsa(Xilinx Shell Archive)文件。利用xsa文件在Vitis软件中搭建硬件平台,进行软件设计和调试。
图 1.4.1是MicroBlaze的开发流程图:

图 1.4.1 MicroBlaze的开发流程图
第一步:配置MicroBlaze核、其他需要的IP核以及外围设备。
第二步:硬件设计执行综合、布局布线等。
第三步:生成BIT流文件。
第四步:导出包含硬件信息的xsa文件。
第五步:启动Vitis,创建硬件平台工程和应用工程。
第六步:设计软件并调试。
第七步:编译工程生成ELF文件。
第八步:将bit和ELF文件合并为download.bit文件并固化。
1.5软件使用
Vitis具体使用方法是结合到下面的每个开发例程之中的,有详细的使用步骤,这里不再说明。
1.6代码调试
代码的具体调试方法会在第六章的6.6小节中详细讲述,这里不再说明。





页: [1]
查看完整版本: 【正点原子FPGA连载】第一章MicroBlaze简介--摘自【正点原子】达芬奇之Microblaze 开发指南