当前位置:首页 > EDA > 电子设计自动化
[导读]Artix-7作为Xilinx 7系列中的低成本主力器件,本身不含硬核处理器。要让它"跑程序",唯一的途径是例化MicroBlaze软核——这是Xilinx针对嵌入式应用优化的软处理器,具有免版税、低功耗、可配置的特性。在Artix-7 XC7A200T上,最精简的Microcontroller配置仅需约1900逻辑单元(占芯片1%),可运行在204MHz。本文以Digilent Arty A7-35T开发板为例,梳理从Vivado硬件搭建到Vitis软件调试的完整流程。


Artix-7作为Xilinx 7系列中的低成本主力器件,本身不含硬核处理器。要让它"跑程序",唯一的途径是例化MicroBlaze软核——这是Xilinx针对嵌入式应用优化的软处理器,具有免版税、低功耗、可配置的特性。在Artix-7 XC7A200T上,最精简的Microcontroller配置仅需约1900逻辑单元(占芯片1%),可运行在204MHz。本文以Digilent Arty A7-35T开发板为例,梳理从Vivado硬件搭建到Vitis软件调试的完整流程。

一、为什么需要Vivado+Vitis协同

MicroBlaze开发是一个硬件+软件的协同过程:Vivado负责搭建处理器系统(MicroBlaze核、时钟、存储器、UART等外设的AXI互联),生成比特流;Vitis则基于Vivado导出的XSA文件,创建板级支持包(BSP),编写和调试C程序。两者缺一不可,就像建筑师先搭框架、装修队再做内装。

二、Vivado硬件系统搭建

1. 创建工程与Block Design

新建RTL工程,选择Arty A7-35板卡。在IP Integrator中点击Create Block Design,命名design_1。

2. 添加MicroBlaze核

点击"+"添加IP,搜索MicroBlaze并双击。新手建议直接从Run Block Automation开始,Local Memory选择64KB,其余默认。Artix-7上MicroBlaze的三种典型配置:

配置 频率 逻辑单元 用途

Microcontroller 204MHz 1900 裸机确定性控制

Real-Time 172MHz 4000 FreeRTOS实时系统

Application 146MHz 7000 Linux等操作系统

3. 时钟配置(关键步骤)

Arty A7板载100MHz单端晶振。删除Block Design中默认的diff_clock_rtl差分时钟端口,双击clk_wiz_1,将CLK_IN1设置为板上的"sys clock"(即100MHz单端时钟)。再次运行Connection Automation完成时钟网络连线。

4. 添加UART外设

点击"+"搜索AXI Uartlite,双击添加。UART是调试信息的"生命线",务必添加。运行Connection Automation,工具会自动完成AXI总线互联、地址映射。

5. 生成顶层封装

在Sources选项卡中右击design_1.bd,选择Create HDL Wrapper。Vivado会自动生成一个Verilog顶层文件,把Block Design"包装"成可综合的传统HDL模块。

6. 生成比特流

点击Generate Bitstream,弹出框选择Yes运行综合与实现。根据CPU核心数设置并行任务数。Arty A7-35T上完整MicroBlaze系统综合实现约需5-10分钟。

三、导出硬件到Vitis

在Vivado菜单File → Export → Export Hardware,点击Next,务必勾选"Include bitstream",这将生成包含比特流、存储器映射、时钟配置的.xsa文件。这个XSA文件就是Vivado与Vitis之间的"桥梁"。

四、Vitis软件开发

1. 启动Vitis

Vivado菜单Tools → Launch Vitis IDE。Vitis启动后,指定工作空间路径。

2. 创建平台组件

Embedded Development → New Platform Component,浏览选择导出的.xsa文件,设置操作系统为standalone,处理器选择microblaze_0。平台组件相当于BSP,封装了所有硬件寄存器地址和驱动。

3. 创建应用工程

New → Application Project,选择上一步创建的平台组件。Vitis提供了丰富的模板,新手建议选择Hello World,它已经包含了基本的串口打印框架。

4. 编写和扩展代码

Hello World模板生成的main函数如下:

#include "xil_printf.h"


int main() {

   init_platform();

   print("Hello World\n\r");

   print("Successfully ran Hello World application");

   cleanup_platform();

   return 0;

}

可以在此基础上扩展,例如添加GPIO控制板载LED:

#include "xgpio.h"

#include "xparameters.h"


#define LED_CHANNEL 1

XGpio Gpio;


int main() {

   XGpio_Initialize(&Gpio, XPAR_AXI_GPIO_0_DEVICE_ID);

   XGpio_SetDataDirection(&Gpio, LED_CHANNEL, 0x00); // 设置为输出

   

   while(1) {

       XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0x01);

       usleep(500000);

       XGpio_DiscreteWrite(&Gpio, LED_CHANNEL, 0x00);

       usleep(500000);

   }

}

五、下载与调试

1. JTAG下载(开发阶段)

右击应用工程 → Debug As → Launch Hardware (Single Application Debug)。Vivado先下载.bit到FPGA,Vitis再下载.elf到MicroBlaze的指令存储器(通常是BRAM)。Vitis会自动在main函数第一行设置断点。

2. 串口观察

打开Vitis Serial Terminal,点击"+"连接Arty A7的串口(波特率9600,由Vivado中UART IP配置决定),即可看到"Hello World"输出。

3. 脱离JTAG的独立运行

若要从QSPI Flash独立启动,需要将比特流和应用程序固话到Flash。典型流程是:.bit中包含Bootloader并初始化到BRAM,上电后MicroBlaze从BRAM地址0x0执行Bootloader,Bootloader通过AXI总线读取QSPI Flash中存储的应用程序镜像(SREC或BIN格式),将其搬运到DDR的指定地址,最后跳转执行。这一过程可借助XSCT工具完成。

六、新手踩坑提醒

⚠️ 坑1:忘记勾选"Include bitstream"——导出的XSA不含比特流,Vitis无法下载硬件配置。

⚠️ 坑2:时钟配置错误——Artix-7 MIG等IP对参考时钟有严格要求(如DDR3 MIG的clk_ref_i必须200MHz),需通过Clocking Wizard正确生成。

⚠️ 坑3:复位极性——多数Artix-7开发板使用低电平复位,但部分板卡可能相反,需根据原理图确认。

⚠️ 坑4:地址映射冲突——运行Validate Design检查AXI互联,确保所有外设地址不重叠。

写在最后

Artix-7上运行MicroBlaze,本质是"用逻辑资源换处理器"——付出1900个LUT的代价,换来一个204MHz、可运行C程序的完整嵌入式系统。从Vivado的Block Design图形化搭建,到Vitis的C程序开发,整套流程已经高度自动化:Run Block Automation完成MicroBlaze核配置,Run Connection Automation完成AXI总线互联,Export Hardware打通软硬件桥梁,Vitis平台组件生成BSP——开发者真正需要手动关心的,只剩时钟方案、外设选择和应用程序逻辑。当你在串口终端看到"Hello World"的那一刻,一个全新的FPGA软核开发世界就此打开。接下来,无论是跑FreeRTOS、上DDR3大内存、还是挂载自定义AXI IP做硬件加速,都在这套基础架构上自然延伸。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在现代嵌入式系统设计中,Xilinx的Vivado工具链以其强大的功能和灵活性,成为了FPGA(现场可编程门阵列)开发的首选平台。其中,MicroBlaze作为一款基于FPGA的32位软核处理器,以其高性能和低功耗的特点...

关键字: MicroBlaze Vivado 嵌入式系统

前不久,Altera 正式推出了Nios II系列32位RSIC嵌入式处理器。Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPGA中实现仅需35美分...

关键字: 嵌入式 CPU 软核处理器

摘要:介绍了一种用FPGA实现的基于UDP协议的新型视频流传输系统;分析了系统中各个组成部分的设计方法;同时结合测试方案得出实际的测试结果,测试结果表明,本系统能达到设计需求的目标;最后对系统做出总结并给出一种改进型方案...

关键字: FPGA VLC UDP MicroBlaze

作者 :wcc149 软核处理器 SOPC技术,即软核处理器,最早是由Altera公司提出来的,它是基于FPGA的SOC片上系统设计技术。是使用FPGA的逻辑和资源搭建的一个软核CPU系统,由于是使用FPGA的通用逻辑搭...

关键字: FPGA 软核处理器 CPU ARM处理器

MicroBlaze™ 是 Xilinx 嵌入式产品系列的重要组件。MicroBlaze 是功能齐全的、更少指令集的 FPGA 优化型 32 位计算机 (RISC) 软处理器,可充分满足各种应用需求...

关键字: microblaze 嵌入式处理器 简介 软核处理器

0 引言Altera公司开发的Nios II是基于可编程片上系统SOPC(System on a Programmable Chip)技术的32 位嵌入式处理器软核。Altera 公司开发的Nios II软核,可以直...

关键字: niosii 嵌入式处理器 软核处理器 sd卡接口设

引言随着时代的发展,单核片上可编程系统SOPC(Systern On a Programmable Chip)解决复杂问题的能力与处理速度已很难满足用户的需求,面向多处理器SOPC系统的设计成为片上系

关键字: MICROBLAZE 系统设计 软核处理器 SOPC系统

2008年6月11号,为帮助系统级设计人员在FPGA软核处理器上有更多的选择,Altera公司宣布,Freescale将为SOPC Builder工具推出32位V1 ColdFire软核。为迅速方便的使用Altera

关键字: Altera BUILDER SOPC 软核处理器

近年来,基于FPGA的软核处理器以其高度的设计灵活性和低成本在嵌入式市场中得到重视并不断发展。其中具有代表性的软核处理器有Ahera的 NiosⅡ处理器和Xilinx的MicroBlaze处

关键字: 软核处理器 SD卡 NIOSⅡ 端口

摘要:设计了一款基于双MicroBlaze软核处理器、面向嵌入式领域的SOPC系统,在信息处理繁忙的情况下,实现两软核处理器之间的同步、通信和中断功能,提高信息吞吐率和系统灵活性,降低设备尺寸。两处理器之间通过Mute

关键字: MICROBLAZE 系统设计 软核处理器 SOPC系统
关闭