【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

这篇具有很好参考价值的文章主要介绍了【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

MicroBlaze是AMD-Xilinx提供的一个可以在FPGA中运行的嵌入式软核IP,其本质是一个32位RISC处理器软核,可以在150MHz时钟下,提供125 D-MIPS性能,具有运行速度快、占用资源少、可配置性强等优点。

今天主要是搭建一个通用MicroBlaze最小系统+一个外设,最后固化程序到FPGA。

整体难度★不到

缩略词索引:

MB-MicroBlaze

环境平台

  • win10 vivado 2020

  • Vitis 2020

  • 【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

FPGA部分搭建

一个完整的MB系统,包括四个方面:CPU、时钟、 DDR 和外设,其中CPU不用说就是MB,DDR不是必须的,根据硬件选择,如果没有DDR时候选择内部RAM使用需要选择大一点,所以下面分成两种情况建立最小系统。

不带DDR的MB最小系统-通用系统

第1步

搭建Vivado系统,不过多赘述了!

第2步

点击 Create Block Design,创建一个 BD 文件,并命名为MB_block。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第3步

单击添加 IP 图标,然后输入关键字 MicroBlaze。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击将MB添加到 BD 文件中:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第4步

添加时钟,在添加IP图标位置输入关键字Clocking Wizard。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击将Clocking Wizard添加到BD文件中。

第5步-此步可不加

时钟设置,双击Clocking Wizard对时钟进行配置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

输入时钟根据硬件进行选择,我的硬件是一个单端50MHz时钟,输出时钟参数如下:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

clk_out1作为MB的运行时钟,这里设置为100MHz,而clk_out2的200MHz是作为DDR控制器的运行时钟。

勾选locked作为后续电路的复位信号。

其他页面默认即可,点击【OK】完成设置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第6步

MB设置,在 BD 文件中,双击 MB 图标,对其进行配置,第一页配置参数如下图所示:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

注意图中圆圈是需要勾选的,允许外部存储 BRAM 作为程序运行缓冲区,方框部分是软核的频率、面积和性能三方面的综合结果(三方不可同时兼得)。

点击【Next】,进行下一界面进行设置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

界面默认,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

按照上图设置,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

界面默认,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

按照上图设置,允许 AXI 数据流。修改完成之后点击 【OK】  即可。

上面主要修改三个部分:第一页允许外部存储 BRAM 作为程序运行缓冲区;第三页设置Cache基地址和长度;第五页是允许AXI数据流,用来访问外部DDR。

第7步

让BD自动完成设置,点击Run Block Automation完成剩下的设置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

弹出的界面默认即可,时钟使我们上面第4步Clocking Wizard生成的,Local Memory 选择 32KB,因为没有外部存储器。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第8步

引出相关引脚。

组合键 【Ctrl+T】 引出引脚。

第9步

验证目前设计的正确性:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

目前这一步已经完成了最小系统设计。

第10步

修改引脚名称。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第11步

导出BD,按照下图位置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

设置路径,设置BD名称:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

路径下就生成了一个tcl文件,同理也可以使用下面命令实现相同功能:

write_bd_tcl [你的路径]/xxx_bd.tcl

第16步

上面就完成了整个最小系统搭建,接下来搭建带带DDR的MB最小系统,然后我们以这个最小系统为例说明其为什么具有通用性。

带DDR的MB最小系统

第1步

搭建Vivado系统,不过多赘述了!

第2步

点击 Create Block Design,创建一个 BD 文件,并命名为MB_block。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第3步

单击添加 IP 图标,然后输入关键字 MicroBlaze。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击将MB添加到 BD 文件中:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第4步

添加时钟,在添加IP图标位置输入关键字Clocking Wizard。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击将Clocking Wizard添加到BD文件中。

第5步

时钟设置,双击Clocking Wizard对时钟进行配置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

输入时钟根据硬件进行选择,我的硬件是一个单端50MHz时钟,输出时钟参数如下:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

clk_out1作为MB的运行时钟,这里设置为100MHz,而clk_out2的200MHz是作为DDR控制器的运行时钟。

勾选locked作为后续电路的复位信号。

其他页面默认即可,点击【OK】完成设置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第6步

MB设置,在 BD 文件中,双击 MB 图标,对其进行配置,第一页配置参数如下图所示:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

注意图中圆圈是需要勾选的,允许外部存储 BRAM 作为程序运行缓冲区,方框部分是软核的频率、面积和性能三方面的综合结果(三方不可同时兼得)。

点击【Next】,进行下一界面进行设置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

界面默认,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

按照上图设置,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

界面默认,点击【Next】:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

按照上图设置,允许 AXI 数据流。修改完成之后点击 【OK】  即可。

上面主要修改三个部分:第一页允许外部存储 BRAM 作为程序运行缓冲区;第三页设置Cache基地址和长度;第五页是允许AXI数据流,用来访问外部DDR。

第7步

让BD自动完成设置,点击Run Block Automation完成剩下的设置。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

弹出的界面默认即可,时钟使我们上面第4步Clocking Wizard生成的。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第8步

引出相关引脚。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化上图界面选择clk_in1,组合键 【Ctrl+T】 引出引脚:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第9步

验证目前设计的正确性:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

目前这一步已经完成了最小系统设计,下面开始DDR设计。

第10步

添加DDR控制器:

添加IP界面,输入关键字memory interface generator

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击memory interface generator后再BD中添加MIG:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第11步

设置MIG IP。

双击 mig_7series_0,进行如下配置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

注:如果system clock的频率在199-201MHz之间,这里会出现一个use system clock 的选项,意思就是用系统时钟作为参考时钟

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

后面全部默认点击【NEXT】即可。

将MIG的线按照下图进行连接:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第12步

添加外设,我们主要添加串口,负责调试。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

双击 UART,将波特率改为 115200:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第13步

再点击 Run connection Automation,再弹出来的窗口中把所有选项勾选上,再点击【OK】 即可。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

验证设计:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第14步

修改引脚名称,因为这部分将作为一个最小系统供后续使用。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第15步

导出BD,按照下图位置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

设置路径,设置BD名称:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

路径下就生成了一个tcl文件,同理也可以使用下面命令实现相同功能:

write_bd_tcl [你的路径]/xxx_bd.tcl

测试及固化程序

第1步

建立一个新的Vivado工程。

第2步

导入上一节生成的最小系统:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

选择tcl文件,确定即可

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

这样就生成了一个最小系统:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第3步

添加Clocking Wiard,按照下图进行设置

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第4步

添加一个AXI-GPIO,按照下图设置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

后面控制三个LED等。

第5步

点击 Run connection Automation,再弹出来的窗口中把所有选项勾选上,再点击【OK】 即可。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第6步

导出硬件

将 bd 文件导出为 tcl 脚本之后,继续对工程进行完善。

选中 xxx.bd,右单击然后选择 Generate Output Products。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第7步

在弹出来的窗口中,如下图所示,然后单击【OK】。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第8步

选中 XXX.bd,右单击然后选择 Create HDL Wrapper,在弹出来的窗口中直接点击【OK】。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第9步

添加一个名为 mb_test.xdc 的约束文件,并添加约束(物理约束需要根据自己硬件选择)。

第12步

单击下列图标产生 Bit 文件。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第13步

生成 Bit 文件之后,单击 File-Export-Export Platform...

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第14步

TOOLs-->Launch Vitis IDE

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

选择工作文件夹。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

创建Platform

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

选择上一步生成的Platform(XSA文件)

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

右击,build project

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

无问题后继续后面步骤。

第15步

创建App

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

【NEXT】

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

【NEXT】

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

输入App名称:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

【NEXT】

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

选择Hello World模板。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

【FINISH】

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

第16步

helloworld.c源码我们先不修改。

右击 HelloWorld-->Debug As-->Debug Configurations

设置好参数,使用Vitis自带的串口工具,运行后即可看到打印信息。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

接下来就是添加GPIO驱动,和上面操作一样,这里有个小技巧,在建立完App后,点击下图位置:

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

导入官方提供的历程就可以了。

同样HelloWorld-->Debug As-->Debug Configurations后进行调试即可。

下面说明固化过程。

第17步

固化第一步,生成bit文件,点击XIlinx-->Program Device

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

记住箭头部分生成的bit文件,同时选择方框内编译出的elf文件。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

固化第二步,下载固化FLASH,点击XIlinx-->Program Flash

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

箭头选择板卡上FLASH的FLASH,方框选择上一步生成的bit文件(默认dowload.bit)。

【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化

点击【Program】,完成后重新上电即可。

总结

今天简单演示了一个MB小例子。文章来源地址https://www.toymoban.com/news/detail-430356.html

到了这里,关于【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 小程序内嵌H5那些事儿

    小程序内嵌H5是指将一个H5页面嵌入到小程序中的一种方式 小程序内嵌H5可以让用户在小程序中直接浏览和使用H5网页 同时也可以让开发者在小程序中使用H5网页的某些功能。 当原有的H5转相似业务逻辑的小程序时 除了内嵌H5以外 还可以采用 多端编译 的方案 但是这样做 api兼

    2024年02月13日
    浏览(42)
  • 【Linux】文件系统软硬链接的那些事儿

    作者:დ旧言~ 座右铭:松树千年终是朽,槿花一日自为荣。 目标:理解什么是软硬链接,并且能创建软硬链接。 毒鸡汤:再小的事,别人做了是情分,不做是本分。可是有些人,永远只要求他人付出,不懂得感恩。 专栏选自:Linux初阶 望小伙伴们点赞👍收藏✨加关注哟💕💕

    2024年04月22日
    浏览(49)
  • taro 支付宝/微信小程序/h5 上传 - base64的那些事儿

    支付宝小程序临时path转base64 - 基础库2.0以下 支付宝小程序临时path转base64 - 基础库2.0及以上 微信小程序临时path转base64 h5临时file转base64 h5 base64转file 获取base64大小 h5 压缩base64

    2024年02月10日
    浏览(45)
  • 微信小程序第五节——登录那些事儿(超详细的前后端完整流程)

    📌 微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。 📌 微信小程序第二节 —— 自定义组件 📌 微信小程序第三节 —— 页面跳转的那些事儿 📌 微信小程序第四节—— 网络请求那些事儿 😜 作           者 :是江迪呀 ✒️ 本文 : 微

    2024年02月09日
    浏览(43)
  • FPGA 学习笔记:Vivado 2018.2 MicroBlaze 启动 SDK

    Vivado 2018.2,配置好 MicroBlaze Uartlite等Block Design后,生成了 bin、bin文件,此时烧写到FPGA板子上,发现没有任何动静,所以需要 SDK的支持 这里使用的Vivado 2018.2,最新的 Vivado版本,如 Vivado 2020.2,启动的SDK 是 :Vitis,启动方式稍微有点不同,后面补充 Vivado 2020.2版本的操作方法

    2024年02月12日
    浏览(51)
  • Xilinx Vivado bit文件和Microblaze elf文件合并的两种方法

            Xilinx使用Microblaze软核进行功能开发时,需要将Vivado生成的硬件bit文件和Vitis生成的软件elf文件进行合并,生成软硬结合的bit文件,然后可以选择将该bit文件烧进FPGA、或者将该bit文件转换成mcs文件/bin文件然后烧录至Flash中。         目前使用到了两种合并Vivado bit文件

    2024年02月11日
    浏览(57)
  • 【物联网那些事儿】18 大物联网操作系统,Raspbian Pi、Ubuntu Core、Windows 10 IoT、Micropython、OpenWrt ....你用过哪几个?

    如果您查看我们周围所有连接的嵌入式系统,您会意识到物联网操作系统是确保安全、连接、互操作性、网络和存储等一系列任务的关键。 Raspbian Pi、Ubuntu Core、FreeRTOS、RIOT、Tizen、Micropython 是一些最流行的物联网设备操作系统。下面让我们看看具体他们都有什么特点。 操作

    2024年01月20日
    浏览(46)
  • [apue] 进程控制那些事儿

    在介绍进程的创建、启动与终止之前,首先了解一下进程的唯一标识——进程 ID,它是一个非负整数,在系统范围内唯一,不过这种唯一是相对的,当一个进程消亡后,它的 ID 可能被重用。不过大多数 Unix 系统实现延迟重用算法,防止将新进程误认为是使用同一 ID 的某个已

    2024年04月08日
    浏览(49)
  • HTTP的那些事儿

    超文本传输协议(Hyper Text Transfer Protocol,HTTP),它是 在计算机世界中的两个点之间传递文本,图片,多媒体等超文本文件的协议 。HTTP处在 数据链路层,网络层,传输层,应用层 中的应用层,基于TCP之上。 应用广泛,各大网站,APP都离不开HTTP的身影 无状态,和TCP不同,

    2023年04月15日
    浏览(53)
  • Redis那些事儿(一)

            说到redis大家都不陌生,其中包括:共有16个数据库,默认为第0个数据库;数据以key-value键值的形式存储;数据类型包括String、List、Hash、Set等,其中最常用的是字符串;是单线程的、基于内存的,主要受内存和网络带宽的影响… 这些都是基于Redis的基础理论知识

    2024年02月05日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包