MicroBlaze Processor hello world实验

这篇具有很好参考价值的文章主要介绍了MicroBlaze Processor hello world实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MicroBlaze Processor hello world实验

实验目的

搭建microblaze工程,通过串口打印hello world,了解microblaze的使用,加深对FPGA硬件和软件开发的理解。

实验原理

MicroBlaze Processor hello world实验

MicroBlaze Processor是xilinx提供的一个软核处理器(使用FPGA资源实现的处理器,类似的arm也开源了一些单片机的软核如M3),支持32位或者64位,同时也有许多其他的配置。在使用软软核的情况下,fpga可以简单理解为软核处理器和FPGA两部分(类似ZYNQ),软核处理器运行C语言编写的程序,fpga依旧是硬件工程的功能。在要求不是特别严格的情况下,使用软核可以减轻fpga的硬件设计,优化系统结构。

实际上,实验开发流程和ZYNQ开发极为相似,软核也可以在ZYNQ上搭建,实现一个软核+硬核+FPGA的架构。简单的说,实验就是搭硬件平台,建软件工程,整个过程在vitis平台下进行,比较简单。

实验流程大致为:

  1. 设计硬件平台,搭建有一个物理串口的MicroBlaze的硬件平台(vivado)
  2. 创建软件hello world工程,并上板执行(SDK或者vitis)

实验环境

Vivado v2023.1 (64-bit)
开发板:AXU4EV-P (ALINX的,ZYNQ 4ev)

实验内容

  1. vivado新建工程,根据自己的开发板型号设置就行。
  2. 创建一个block design,根据需要命名。
  3. 搜索并添加MicroBlaze IP核。
    MicroBlaze Processor hello world实验
  4. 点击“Run Block Automation”,可以把内存设置大一些,这里选择64KB,点击ok,会自动加入必须的IP,复位、时钟、片上存储、调试。
    MicroBlaze Processor hello world实验
  5. 根据实际情况设置时钟,使用的开发板是200M的差分时钟,然后复位选择一个按键来设置,由于按键按下时为低电平,时钟复位改为低复位。
    MicroBlaze Processor hello world实验
    MicroBlaze Processor hello world实验
  6. 添加外设,这里只添加一个串口,添加一个AXI Uartlite并将波特率设置为115200。点击“Run Connection Automation”,会自动连线。
  7. 添加管脚约束和时序约束,时钟、复位和串口(外部硬件接的),可以使用图形界面也可以使用代码。
    MicroBlaze Processor hello world实验
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]
  1. 点击“√”进行检验设计。
    MicroBlaze Processor hello world实验
    MicroBlaze Processor hello world实验
  2. 选择bd文件,点击Create HDL Wrapper,生成顶层文件,相当于把前面的搭建的平台实例化,会生成.v文件。选择“generate output product”。 点击“generate bitstream”走完fpga的开发流程。
    MicroBlaze Processor hello world实验
  3. 导出硬件平台,是一个xsa后缀的文件,后面需要用来创建软件的工程。
    MicroBlaze Processor hello world实验
  4. 到目前为止,硬件搭建完成。
  5. 打开VITIS IDE,进行软件工程的创建。
    MicroBlaze Processor hello world实验
  6. 新建平台工程,选择之前生成的xsa文件。

MicroBlaze Processor hello world实验MicroBlaze Processor hello world实验

  1. 新建应用程序,需要先选择平台,可以看到我们刚刚创建的平台工程名,后面直接从模版hello world创建即可。
    MicroBlaze Processor hello world实验
    MicroBlaze Processor hello world实验
  2. 分别点击平台和应用工程名,右键build编译工程,也可以点击小锤子图标。
    MicroBlaze Processor hello world实验
  3. 上板运行,也可以使用类似播放的按钮运行,左边的虫子图标是进行调试的,可以单步执行。串口调试助手就使用自带的终端,需要先手动调出来,在windows的show view里面。运行程序,可以看到串口终端有打印hello world的信息。可以修改打印内容进行验证,也可以学习下串口裸驱程序的编写。
    MicroBlaze Processor hello world实验
    MicroBlaze Processor hello world实验

MicroBlaze Processor hello world实验
MicroBlaze Processor hello world实验

实验总结

虽然实验过程比较简单,但是整个流程还是比较全面,包含了硬件开发和软件开发的流程,展示了二者之间的关系。硬件设计和构建平台,软件在前者平台的基础上进行程序开发。文章来源地址https://www.toymoban.com/news/detail-500856.html

参考资料

  1. 创建最简单的MicroBlaze工程
  2. MicroBlaze 串口发送 Hello World 实验
  3. vitis打开自带的串口调试

到了这里,关于MicroBlaze Processor hello world实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】“Hello World!“

    🦄 个人主页 :修修修也 🎏 所属专栏 :C++ ⚙️ 操作环境 : Visual Studio 2022 ​ 纪念一下自己编写的 第一个C++程序 运行结果: ​ 1. include :包含。 #include 是一个预处理命令,用来引入头文件。 2. iostream :iostream是一个 标准库 ,它与C语言的stdio库不同,它从一开始就是 用多重继承与虚

    2024年01月19日
    浏览(31)
  • Dart 入门Hello world

    1、下载Dart sdk IntelliJ Android Studio | Dart 2、安装Dart 插件 3、安装后重启IDEA,创建Dart项目   4、创建dart文件 5、编写函数:    6、运行:   官网学习:Dart 语言开发文档 | Dart

    2024年02月12日
    浏览(42)
  • C++输出Hello,World

    在 C 语言中输出 \\\"Hello, World\\\" 可以使用下面的代码: #include stdio.h int main() { printf(\\\"Hello, Worldn\\\"); return 0; } 代码的意思是:首先使用 #include stdio.h 告诉编译器我们要使用输入/输出函数,然后定义一个名为 main 的函数,在函数中使用 printf 函数来输出字符串 \\\"Hello, World\\\",最后使用

    2024年02月07日
    浏览(35)
  • C++打印hello world

    首先我们要知道: C++中有一个很重要的东西,那就是面向对象,其中,C++中的打印和输入都是一个对象,而不是像C一样是一个函数,所以打印和输入都有一定的区别 打印是C++最基础的东西,下面我们先放代码,再逐条分析 首先是程序的入口:主函数。他先对于C有一定的区别

    2024年02月02日
    浏览(52)
  • java 输出hello world

    在 Java 中,可以使用 System.out.println 来输出 \\\"hello world\\\"。 例如: 在这段代码中, System.out.println 会将字符串 \\\"hello world\\\" 输出到控制台。 注意: 在 Java 中,类名的首字母必须大写。 main 方法是程序的入口点,必须要有这个方法才能运行程序。 `

    2024年02月10日
    浏览(30)
  • 【03】第一行代码Hello World

    01.下载 地址:http://www.android-studio.org 下载完成后,先傻瓜式安装即可 02.创建第一行代码 打开Android Studio  选择Next  点击Finish,进入页面  启用模拟器:  选择Next后  选择系统版本号  选择Finish  运行 遇到的问题 1. 解决方法:  网上办法不可解决,后重新下载Android Studio即

    2024年02月16日
    浏览(35)
  • 自学Spark,又是Hello World?

    在18年初刚开始接触学习spark的时候,买了一本《Spark大数据处理技术》的书,虽然后来一些Spark开发的知识都是从官网和实践中得来的,但是这本书对我来说是启蒙和领路的作用。 还记得这本书编程的开篇就是Spark程序”Hello World“!果然,这辈子是摆脱不了”Hello World“了。

    2024年03月13日
    浏览(33)
  • 用Rust打印hello world!

    桌面新建1个名为 rustDemo 的文件夹(文件夹名字随便取) 打开新建的文件夹,在地址输入栏输入 cmd  按回车键进入命令行窗口 打开编译器,按 Ctrl + S ,保存文件到 rustDemo 文件夹中,保存的文件我取名为 hello_world.rs 。文件名是随便取的,但是后缀一定要是 .rs 回到编译器中,

    2024年02月10日
    浏览(37)
  • 【Express.js】Hello World

    本节我们将创建并运行我们的第一个express.js项目,并使用最简单的请求响应 本书系统环境为 windows10 64Bit 请事先在你的开发环境中安装 Node.js ,本书使用的是 node v16.17.1 推荐使用 VsCode 作为开发工具,有良好的代码提示功能 事先安装一个api调试工具,如 postman , apipost 等 创建

    2024年02月09日
    浏览(54)
  • vue学习之hello world

    给节点定义id,这样组件可以和指定节点进行绑定 Vue对象中的data节点,是对此实例数据的说明 其中div中获取对象实例中定义的msg的值通过 {{}} 来获取,这个叫做插值表达式 效果展示 通过点击按钮获取输入框中的值,添加到todo列表中 定义按钮、绑定方法 input 为输入框,需要

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包