VIVADO下的Microblaze系统搭建:永远的Hello World

目前,xilinx的zynq系列FPGA炒的火热,SOC成为FPGA发展的必然趋势。可见所有功能均用硬件描述语言设计是不科学的。硬件逻辑独有的并行性使其在实时处理和并行算法中占尽优势,但当执行串行操作时却需要使用笨重的状态机来完成。因此,要实现对实时性要求不高的串行操作,对各类IP核的总体控制调度,亦或是快速移植软件协议栈时,利用FPGA内部CPU是个比较好的选择。

硬核CPU只在特定系列FPGA芯片中,性能当然没的说,占用的资源也非常少。但相比硬核,microblaze可移植性较强,性能要求不高的场合下还是非常灵活的。本文依然以经典的串口打印字符串“hello,world”为例,搭建基于microblaze的简单嵌入式系统。

create block design,添加microblaze软核后点击Run Block Automation。
在这里插入图片描述

这里暂时不使用DDR之类的缓存设备,利用片内Memory存储代码,因此将Local Memory容量增大。

在这里插入图片描述

点击OK后工具自动生成CPU系统所需要的所有必要硬件模块,包括:时钟管理单元,复位逻辑,调试模块,microblaze CPU,以及local memory。

在这里插入图片描述

双击clk_wiz_1模块,根据开发板对其进行配置。本例中开发板上使用200MHz差分晶振作为时钟源,做如下改动。
在这里插入图片描述

开发板上复位按键低电平有效,改为Active low。
在这里插入图片描述

实现串口打印字符串功能,首先得有串口模块提供硬件支持,添加uartlite IP核。串口IP核同样可以根据需求重配置,这里保持默认设置:波特率9600,数据位是8bit,无校验位。

在这里插入图片描述

IP核添加并配置完毕,同样利用工具自动连接。点击Run Connection Automation,选中所有可连接选项。重新布局后嵌入式硬件系统结构如下:

在这里插入图片描述

点击左侧竖排工具栏中的Validate Design,保证系统没有连接错误。

在这里插入图片描述

右击Source窗口中block design名称,依次选中Generate Output Products和Generate HDL Wrapper。前者生成可综合,布局布线的.v文件,后者产生工程顶层封装。

在这里插入图片描述

需要注意的是,生成顶层文件时,可以选择顶层文件自动更新或手动编辑。当需要手动添加硬件模块到顶层文件时选择可手动编辑方式,这里保持默认。
在这里插入图片描述

之后添加XDC文件,给出引脚号及电平标准即可。

在这里插入图片描述

此时与HDL设计流程相同,综合、布局布线和生成比特流。点击vivado界面上侧主选项栏File->Export->Export Hardware。这里要选中Include bitstream,否则SDK中无法识别硬件系统。最后点击File->Lanch SDK启动软件开发工具,开始软件设计流程。建立第一个软件工程时会自动生成BSP包,相当于硬件系统中物理约束了的映射,之后可重复利用,还是比较方便的。

在这里插入图片描述

打开HelloWorld工程中.c文件,其中有三个函数,其实是对串口一些操作的封装。

在这里插入图片描述

这了为了方便观察现象,将串口打印函数放置在while循环中,使其连续打印字符串。保存后代码自动编译。
在这里插入图片描述

选中工具栏Xilinx Tools->Program FPGA下载代码。此处在下方选择生成的HelloWorld.elf可执行文件,将硬件比特流和软件代码同时下载到FPGA中。

在这里插入图片描述

打开串口调试助手,设置好波特率以及显示格式,可以看到不断打印“Hello World”字符串。
在这里插入图片描述

本文搭建了基于Microblaze的最简单的嵌入式系统,对IP Integrator和SDK环境有了初步的认识。在后续的博文中,会进一步阐述自定义总线形式IP核的生成,调用以及与CPU之间的数据交互。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vivado中使用MicroBlaze,可以按照以下步骤进行操作: 1. 打开Vivado软件,点击工作流导向面板中的IP Integrator,然后点击Create Block Design,开始构建带有IP核的框图。[1] 2. 在Block Design中,点击Add IP,然后找到MicroBlaze,并将其添加到Block中。你也可以使用tcl命令来添加MicroBlaze IP核,命令为:create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:9.3 microblaze_0。[1] 3. 双击MicroBlaze的Block,开始配置软核。在MicroBlaze配置窗口中,你可以进行各种设置和选项配置。[1] 一般来说,你可以根据项目需求进行选项配置。以下是一些常见的配置选项的说明: - Select implementation to optimize area (with lower instruction throughput):启用面积优化功能。如果选择了这个选项,实现过程将优化面积,尤其是减少流水线的数量。但需要注意的是,一些指令可能需要额外的时钟周期来执行,因此对性能有敏感要求的情况下不建议选择此选项。[3] - Enable MicroBlaze Debug Module Interface:启用调试功能。可以使用Xilinx Microprocessor Debugger来下载和调试程序。除非面积资源非常紧张,否则建议不要禁用此功能。[3] - Use Instruction and Data Caches:当执行存储在LMB之外的程序时,可以使用指令缓存来提高性能。指令缓存可以明显改善性能,即使缓存的大小很小。特别是在使用外部存储时,激活此选项可以获得更好的性能。[3] 这些是一些常见的配置选项,你可以根据具体需求进行选择和配置。希望这些信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值