MicroBlaze Processor hello world实验
实验目的
搭建microblaze工程,通过串口打印hello world,了解microblaze的使用,加深对FPGA硬件和软件开发的理解。
实验原理
MicroBlaze Processor是xilinx提供的一个软核处理器(使用FPGA资源实现的处理器,类似的arm也开源了一些单片机的软核如M3),支持32位或者64位,同时也有许多其他的配置。在使用软软核的情况下,fpga可以简单理解为软核处理器和FPGA两部分(类似ZYNQ),软核处理器运行C语言编写的程序,fpga依旧是硬件工程的功能。在要求不是特别严格的情况下,使用软核可以减轻fpga的硬件设计,优化系统结构。
实际上,实验开发流程和ZYNQ开发极为相似,软核也可以在ZYNQ上搭建,实现一个软核+硬核+FPGA的架构。简单的说,实验就是搭硬件平台,建软件工程,整个过程在vitis平台下进行,比较简单。
实验流程大致为:
- 设计硬件平台,搭建有一个物理串口的MicroBlaze的硬件平台(vivado)
- 创建软件hello world工程,并上板执行(SDK或者vitis)
实验环境
Vivado v2023.1 (64-bit)
开发板:AXU4EV-P (ALINX的,ZYNQ 4ev)
实验内容
- vivado新建工程,根据自己的开发板型号设置就行。
- 创建一个block design,根据需要命名。
- 搜索并添加MicroBlaze IP核。
- 点击“Run Block Automation”,可以把内存设置大一些,这里选择64KB,点击ok,会自动加入必须的IP,复位、时钟、片上存储、调试。
- 根据实际情况设置时钟,使用的开发板是200M的差分时钟,然后复位选择一个按键来设置,由于按键按下时为低电平,时钟复位改为低复位。
- 添加外设,这里只添加一个串口,添加一个AXI Uartlite并将波特率设置为115200。点击“Run Connection Automation”,会自动连线。
- 添加管脚约束和时序约束,时钟、复位和串口(外部硬件接的),可以使用图形界面也可以使用代码。
create_clock -period 5 [get_ports diff_clock_rtl_0_clk_p]
set_property PACKAGE_PIN AE5 [get_ports diff_clock_rtl_0_clk_p]
set_property IOSTANDARD DIFF_SSTL12 [get_ports diff_clock_rtl_0_clk_p]
set_property PACKAGE_PIN AE14 [get_ports reset_rtl_0]
set_property IOSTANDARD LVCMOS33 [get_ports reset_rtl_0]
set_property IOSTANDARD LVCMOS33 [get_ports uart_rtl_0_rxd]
set_property IOSTANDARD LVCMOS33 [get_ports uart_rtl_0_txd]
set_property PACKAGE_PIN AA10 [get_ports uart_rtl_0_rxd]
set_property PACKAGE_PIN AA11 [get_ports uart_rtl_0_txd]
- 点击“√”进行检验设计。
- 选择bd文件,点击Create HDL Wrapper,生成顶层文件,相当于把前面的搭建的平台实例化,会生成.v文件。选择“generate output product”。 点击“generate bitstream”走完fpga的开发流程。
- 导出硬件平台,是一个xsa后缀的文件,后面需要用来创建软件的工程。
- 到目前为止,硬件搭建完成。
- 打开VITIS IDE,进行软件工程的创建。
- 新建平台工程,选择之前生成的xsa文件。
- 新建应用程序,需要先选择平台,可以看到我们刚刚创建的平台工程名,后面直接从模版hello world创建即可。
- 分别点击平台和应用工程名,右键build编译工程,也可以点击小锤子图标。
- 上板运行,也可以使用类似播放的按钮运行,左边的虫子图标是进行调试的,可以单步执行。串口调试助手就使用自带的终端,需要先手动调出来,在windows的show view里面。运行程序,可以看到串口终端有打印hello world的信息。可以修改打印内容进行验证,也可以学习下串口裸驱程序的编写。
实验总结
虽然实验过程比较简单,但是整个流程还是比较全面,包含了硬件开发和软件开发的流程,展示了二者之间的关系。硬件设计和构建平台,软件在前者平台的基础上进行程序开发。
参考资料
- 创建最简单的MicroBlaze工程
- MicroBlaze 串口发送 Hello World 实验
- vitis打开自带的串口调试