2)摘自【正确原子】达芬奇的Microblaze开发指南
3)购买链接:/item.htm?id=624335496505
4)全套实验源码+说明书+视频下载地址:/docs/boards/fpga/zdyz_dafenqi.html
5)正点原子官方B站:/394620890
6)对正电Atom FPGA感兴趣的同学可以加入群讨论:905624739
第 1 章 MicroBlaze 简介
Vivado是Xilinx提供的集成设计环境,可用于构建复杂的嵌入式系统。 完成的系统将作为后续软件开发的硬件基础。 用户在嵌入式系统设计过程中,可以直接调用官方提供的IP核,如MicroBlaze软核嵌入式处理,从而大大加速系统设计; 他们还可以设计自己的IP核并定制满足其需求的硬件系统。 本章包括以下部分: 11.1 使用 MicroBlaze 的意义 1.2 什么是 MicroBlaze 1.3 什么是 Vitis 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.2 什么是MicroBaze? MicroBlaze是Xilinx公司提供的32/64位软核嵌入式处理器。 它是一个高度灵活且可配置且易于使用的处理器。 它可以利用FPGA内部通用资源和相关IP核来实现可编程芯片系统(SOPC)的设计。 该处理器采用32位RISC(精简指令系统计算机)优化结构和哈佛总线结构,广泛适用于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主接口):FSL主设备数据接口,提供点对点通信通道。 SFSL0..15(Fast Simple Link FSL从机接口):FSL从机接口,提供点对点通信通道。 IXCL(指令侧Xilinx Cache Link接口):指令侧高速缓存链接接口。 DXCL(数据端Xilinx Cache Link接口):数据端缓存链接接口。 MicroBlaze 处理器通常用于三种预设配置之一,如图 1.2.2 所示: 运行裸机应用程序的简单微控制器; 带缓存的实时处理器和嵌入式实时操作系统(FreeRTOS); 最后是带有运行 Linux 的内存管理单元的应用处理器(Application)。 下表是这些配置在Artix-7系列下的XC7A200T芯片上的性能和利用率(如果是达芬奇开发板的XC7A35T板载芯片,资源利用率会更大)。 MicroBlaze 可用作所有 Xilinx FPGA 中的独立处理器,或用作 Zynq SoC 系统中的协处理器。
图1.2.2 三种预设配置的性能和利用率
1.3 什么是Vitis? 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套件,软件设计使用Xilinx提供的Vitis统一软件平台。 在Vivado中,我们可以在Block Design中构建MicroBlaze处理系统,然后生成包含硬件信息的xsa(Xilinx Shell Archive)文件。 使用xsa文件在Vitis软件中搭建硬件平台,进行软件设计和调试。 图1.4.1是MicroBlaze的开发流程图:
图1.4.1 MicroBlaze开发流程图
步骤 1:配置 MicroBlaze 核、其他所需的 IP 核和外围设备。 步骤2:硬件设计执行综合、布局布线等。 步骤3:生成BIT流文件。 步骤4:导出包含硬件信息的xsa文件。 步骤5:启动Vitis并创建硬件平台项目和应用程序项目。 第六步:设计软件并调试。 第七步:编译工程,生成ELF文件。 步骤8:将bit和ELF文件合并到download.bit文件中并固化。 1.5 软件使用 Vitis的具体使用方法集成在下面的各个开发例程中。 有详细的使用步骤,这里不再解释。 1.6 代码调试 代码的具体调试方法将在第6章6.6节详细介绍,这里不再赘述。