MicroBlaze软核开发(一):Hello World

news2025/2/25 20:59:33

实现功能:使用 MicroBlaze软核 串口打印 Hello World

Vivado版本:2018.3

目录

MicroBlaze介绍

vivado部分:

一、新建工程

二、配置MicroBlaze

三、添加Uart串口IP

四、生成HDL文件编译

SDK部分:

一、导出硬件启动SDK

二、新建应用程序工程

三、烧录

四、串口测试

MicroBlaze介绍

        MicroBlaze 是由 Xilinx 开发的一种可配置的 32 位 RISC 软处理器内核,是用 Vivado 进行FPGA 设计时可调用的IP核。MicroBlaze 使得开发人员可以使用 C/C++、汇编语言或 RTL 设计语言进行开发。将 MicroBlaze 应用于 FPGA 的整体思路是结合软硬件各自的优点,通过灵活的设计、快速的原型制作以及高效的资源利用,更好地实现和管理复杂的嵌入式系统。

       举个例子,FPGA不同于Zynq:Zynq 集成了 ARM 处理器作为硬核,可软硬件同时开发。而FPGA没有硬核,因此可以将 MicroBlaze 作为软核,用 Vivado 进行 FPGA 部分设计,用 SDK 开发框架作为软件开发环境。通过这种方式实现硬件和软件的协同设计。

        

vivado部分:

一、新建工程

        (1)新建工程,命名为 MicroBlaze_base ,Next

       (2)选择RTL工程,Next

        (3)选择芯片型号

二、配置MicroBlaze

        (1)创建设计块,命名后点OK(本例用默认名)

        (2)点击添加按钮,搜索MicroBlaze,双击添加

        (3)添加后会发现试图内已加载MicroBlazed模块,点击“Run Block Automation”进行配置,因为没有外设存储器所以内部存储器选大一点64KB,其他默认点OK

        (4)双击时钟模块“clk_wiz_1”进行配置:配置时钟(根据开发板时钟频率设置,我的是100MHz),再将时钟设为“single单端时钟”(默认是差分),将复位信号设置为“low低电平有效”,其他保持默认点OK

        (5)点击“自动布局”按钮,可将布局优化一下,看着清楚一点

        (6)添加时钟和复位管脚:

1:ctrl同时选中“clk_wiz_1”模块的时钟和复位信号输入脚后右键点击“Make External”添加管脚。

2:再将“rst_clk_wiz_1”模块的外部复位信号脚连接到“clk_wiz_1”的复位信号脚。

3:再点击自动布局(完成后如下图)。

三、添加Uart串口IP

        (1)点击添加ip,搜索“uart”,一般选择 AXI Uartlite,双击添加

        (2)配置 UART IP核:双击模块进行配置,时钟频率100MHz(要根据开发板设置)、波特率115200、8位数据位、无校验位。

        (3)点击 “运行自动连接”,全部勾选,会自动将uart管脚与MicroBlazed部分进行连接,再点击“自动布局”得到如下图二。

四、生成HDL文件编译

        (1)到src栏右键设计块,生成HDL包装文件,选择第二项进行生成。完成后会看见已经生成设计块的.v文件(如果后续对设计块有改动需要重新生成)

        (2)依次进行:Run Synthesis 综合、Run implementation 部署 

        (3)再配置管脚:需要配置的管脚如图所示,根据开发板情况自行配置

        (4)最后 Generate Bitstream 生成比特流文件   

SDK部分:

一、导出硬件启动SDK

       (1)导出硬件: “Export Hardware” 用于将设计中的硬件部分导出为一个可供其他工具(如 SDK 和 Vitis)或流程使用的硬件描述格式,按左图步骤,并注意勾选“Include bitstream包含比特流”导出硬件,右图启动SDK

       

        (2)启动SDK,保持默认点击OK。接下来将在SDK环境中进行软件部分的设计

         

二、新建应用程序工程

        (1)按照上面的步骤进入SDK后,自动加载相关文件

        (2)

1.新建 Application Project 应用程序工程。

2.将工程命名为 hello ,其他保持默认点击next。(默认c语言)

3.此时会提供工程模板,选择串口打印 hello world 的模板进行测试。(也可以生成空模板)

        (3)模板工程的.c文件位于hello工程的src目录下(helloworld.c),打开可以看到详细代码

三、烧录

        SDK左上方工具栏,点击烧录图标,选项保持默认点击烧录(也可以回到Vivado进行烧录)

四、串口测试

        (1)下方打开SDK终端,点击加号添加一个SDK自带的串口助手,选择窗口,设置波特率(需要和Vivado里面的uart IP的参数保持一致),OK。

        (2)按照图示步骤运行应用程序工程 hello (也可以在.c文件中直接右键Run As运行)

        (3)成功运行后,SDK串口接受到了 FPGA 发送的 Hello World ,串口功能测试成功!到此,使用Vivado 进行 MicroBlaze 软核开发的基础介绍结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZLMediaKit+wvp (ffmpeg+obs)推拉流测试

这里使用了两种方式: ffmpeg命令和 OBS OBS推流在网上找了些基本没有说明白的, 在ZLMediaKit的issues中看到了一个好大哥的提问在此记录一下 使用OBS推流,rtmp,报鉴权失败 推流 1. ffmpeg命令推流 官方说明文档地址: 推流规则 rtsp://192.168.1.4:10554…

微信小程序之简单的数据中心管理平台(1)

微信小程序之简单的数据中心管理平台(1) 引言 随着微信小程序的广泛应用,越来越多的企业开始探索如何利用这一技术开发高效、便捷的管理平台。数据中心管理作为信息化建设的重要组成部分,需要一个灵活、可扩展的界面来实现资源的…

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用,深入理解它们在网络通信中的重要性。通过实验,我将探讨端口号如何帮助区分不同的应用程序和服务,使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

接触人工智能的学习三个月了,每天与各种安装包作斗争,缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装,是时候总结一下踩过的坑和积累的经验了。 以一个典型的…

数组常见查找算法

文章目录 时间复杂度1. 顺序查找(Linear Search)2. 二分查找(Binary Search)3. 插值查找(Interpolation Search)4.分块查找5.哈希查找 时间复杂度 衡量算法执行时间随输入规模增长而增长的速度的一个概念。…

langgraph 多智能体 Multi-agent supervisor

1. 工具定义 1.1网络搜索工具 from typing import Annotated import os from langchain_community.tools.tavily_search import TavilySearchResults from langchain_core.tools import tool from langchain_experimental.utilities import PythonREPLos.environ["TAVIL…

【Maven系列】深入解析 Maven 镜像配置

前言 Maven 是一个流行的 Java 项目管理和构建工具,可以自动化构建项目、管理依赖、生成报告等。在Maven构建项目时,通常经常需要下载各种依赖。默认情况下,Maven 会从中央仓库下载这些依赖,但在某些情况下,这个过程可…

HTML 添加 文本水印

body,html {margin: 0;height: 100vh;width: 100vw;} // 自定义文案const setting {text: "水印文案", // 水印内容innerDate: true, // 在水印下方增加日期width: 110, // 水印宽度};// 自定义文字水印const watermark (function () {return {build: function (a…

华为HCIE-Datacom认证笔试+实验考试介绍

华为HCIE数通认证考试是面向那些希望成为数通网络领域专家的人员,考试通常两部分:笔试和实验考试。 考试科目: HCIE-Datacom笔试考试内容: HCIE-Datacom V1.0考试覆盖数据通信领域路由交换高阶技术、企业网络架构全景、园区网络…

PyCharm+Selenium+Pytest配置小记

1、下载ChromeDriver: Chrome130以后的Driver下载: Chrome for Testing availabilityhttps://googlechromelabs.github.io/chrome-for-testing/ (1)查看自己Crome浏览器的版本:设置-->关于 Chrome; &…

我们来学webservie - WSDL

WSDL 题记WSDL系列文章 题记 举个例子 酒桌上大领导们谈笑风生,把酒临风,其喜洋洋者矣老张说能签下xx项目,一来证明了集团在行业中的翘楚地位,二来感谢各位领导给予的大力支持接下来的一周,项目经理、业务顾问相继入场&#xff0…

weblogic开启https

JSK证书生成 生成密钥库和证书 使用Java的keytool命令来生成一个Java密钥库(Keystore)和证书。keytool是Java开发工具包(JDK)中用于管理密钥库和证书的命令行工具。 #创建证书存放目录 [weblogicosb1 jksHL]$ mkdir -p /home/w…

激活函数在神经网络中的应用与选择

目录 ​编辑 Sigmoid函数 代码示例与分析 Tanh函数 代码示例与分析 ReLU函数 代码示例与分析 Leaky ReLU函数 代码示例与分析 PReLU函数 代码示例与分析 ELU函数 代码示例与分析 SELU函数 代码示例与分析 Softmax函数 代码示例与分析 结论 在深度学习领域&am…

使用Tauri创建桌面应用

当前是在 Windows 环境下 1.准备 系统依赖项 Microsoft C 构建工具WebView2 (Windows10 v1803 以上版本不用下载,已经默认安装了) 下载安装 Rust下载安装 Rust 需要重启终端或者系统 重新打开cmd,键入rustc --version,出现 rust 版本号&…

2023年第十四届蓝桥杯Scratch国赛真题—推箱子

推箱子 程序演示及其源码解析,可前往: https://www.hixinao.com/scratch/creation/show-188.html 若需在线编程,在线测评模考,助力赛事可自行前往题库中心,按需查找: https://www.hixinao.com/ 题库涵盖…

[RabbitMQ] RabbitMQ常见应用问题

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

HarmonyOS 5.0应用开发——UIAbility生命周期

【高心星出品】 文章目录 UIAbility组件创建AbilityUIAbility的生命周期Create状态WindowStageCreate状态Foreground和Background状态WindowStageWillDestroy状态Destroy状态 UIAbility组件 UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 UIAbility组…

Coovally CPU版:用AI模型微调技术革新数据标注方式

文章目录 前言一、为什么选择Coovally CPU版?1.微调模型更懂你的数据2.省时省力的标注流程3.零GPU门槛,适配性强 二、教程:如何用Coovally CPU版完成高效数据标注?第一步:安装Coovally CPU版第二步:加载数据…

Lua元表和元方法的使用

元表是一个普通的 Lua 表,包含一组元方法,这些元方法与 Lua 中的事件相关联。事件发生在 Lua 执行某些操作时,例如加法、字符串连接、比较等。元方法是普通的 Lua 函数,在特定事件发生时被调用。 元表包含了以下元方法&#xff1…

【初阶数据结构与算法】二叉树链式结构的定义与实现万字笔记(附源码)

文章目录 一、二叉树链式结构的定义二、二叉树链式结构功能的基本实现1.链式二叉树的手动创建2.链式二叉树的前中后序遍历前序遍历中序遍历后序遍历 3.链式二叉树节点的个数4.链式二叉树叶子节点的个数5.链式二叉树的高度/深度6.链式二叉树第k层节点的个数7.链式二叉树的查找8.…