0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx Vivado创建MicroBlaze工程运行Hello World C语言程序

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

阅读本文前,请先阅读:

(1)【教程】Xilinx Vivado/Vitis 2020.1创建最简单的MicroBlaze工程运行Hello World C语言程序(不使用外部DDR3内存),并固化到SPI Flash

https://blog.csdn.net/ZLK1214/article/details/111824576

(2)Xilinx 2020.1 MIG核读写DDR3内存,新建工程时配置MIG核的完整步骤

https://blog.csdn.net/ZLK1214/article/details/111349678

添加了DDR3内存以后,程序既可以运行在BRAM里面,也可以运行在DDR3内存里面。但如果运行在DDR3内存里面,固化起来会比较麻烦,需要借助SREC SPI Bootloader。

建立带DDR3内存的MicroBlaze工程的方法很简单:以不带DDR3的工程(1)为基础,只需要在Clocking Wizard和Processor System Reset之间插入一个MIG IP核就可以了。

poYBAGIMpkCARqygAAKR15cvwcw769.png

原本,Clocking Wizard输出的时钟是100MHz,是直接接到Processor System Reset上的。
修改后,两者中间插入了一个MIG。Clocking Wizard的时钟输出变成了200MHz,给MIG提供时钟。在MIG的内部由PLL倍频到400MHz驱动外部DDR3内存,然后再分频到100MHz从ui_clk引脚输出出来,给Processor System Reset提供时钟。
修改后,MicroBlaze的运行频率没有变,仍然是100MHz。

建立工程的时候一定要小心使用Vivado的自动连线的功能,操作不当的话很容易产生两个Processor System Reset。

下面详细说明一下工程的建立步骤。

首先在空白Block Design里面添加Clocking Wizard和MIG IP核:

poYBAGIMpkGAR328AABGZ1HHdO0264.png

修改Clocking Wizard的配置:

pYYBAGIMpkOAU62sAAEQHRPvHsY680.png

MIG的详细配置请参考上面的文章(2),关键配置单独挑出来说明一下:

poYBAGIMpkWACjr5AAIa-A20Ydk009.png

pYYBAGIMpkaAc_EBAACgta7GR24335.png

现在可以添加MicroBlaze核了,添加后点击Run Block Automation,请注意时钟的选择:

pYYBAGIMpkiAe9bNAAINzfM07EA633.png

poYBAGIMpkqAFY2JAAFqNTj8Z-Y373.png

点击Run Connection Automation,通过一个新建的AXI SmartConnect将MIG的S_AXI和MicroBlaze连接起来:

pYYBAGIMpk2AQK7LAAFIsfmJ1No020.png

自动连接剩余的接口

poYBAGIMplGAcAI9AAFbT5hAWDU717.png

pYYBAGIMplSAGFXkAAGkJ3l4nd4042.png

添加AXI Uartlite串口,用于printf打印:

pYYBAGIMplWAJaSOAAG6n8o5fIc509.png

Run Connection Automation,将Uartlite与MicroBlaze连在一起:

poYBAGIMpleAL18mAAD-3WnCWCA451.png

最终连线结果:

pYYBAGIMplqAAR57AAHvKU1DdII940.png

地址分配:

poYBAGIMplyAXOkKAAEWpxuS6kQ525.png

引脚配置:

pYYBAGIMpl2AYcRsAAEADikOE14680.png

综合时会提示BANKBONE错误:

poYBAGIMpl-AUdDVAAFdeUMQX44786.png

[Place 30-575] Sub-optimal placement for a clock-capable IO pin and MMCM pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.

design_1_i/clk_wiz_0/inst/clkin1_ibufg (IBUF.O) is locked to IOB_X1Y26
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKIN1) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1

The above error could possibly be related to other connected instances. Following is a list of
all the related clock rules and their respective instances.

Clock Rule: rule_mmcm_bufg
Status: PASS
Rule Description: An MMCM driving a BUFG must be placed on the same half side (top/bottom) of the device
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKFBOUT) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
and design_1_i/clk_wiz_0/inst/clkf_buf (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y31

将错误信息中提示的代码加入xdc文件就可以屏蔽掉此错误:

pYYBAGIMpmCAfqu5AAFFEFvOfBo501.png

poYBAGIMpmKAQiV3AAKlWVadyVw422.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR3
    +关注

    关注

    2

    文章

    287

    浏览量

    43929
  • MicroBlaze
    +关注

    关注

    3

    文章

    68

    浏览量

    22225
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VS Code运行 pytest_hello_world.py

    VS Code运行 pytest_hello_world.py
    的头像 发表于 11-24 00:33 339次阅读

    根据书上教程在eclipse环境下hello_world程序编译成功,但是烧写报错,是什么原因?

    根据书上教程在eclipse环境下hello_world程序编译成功,但是烧写报错,请有理解的大神指点一下。
    发表于 11-07 06:21

    蜂鸟E203能够仿真运行C语言程序吗?

    我看那两本书里面都是说怎么在FPGA上运行C语言程序和Benchmark程序,它提供仿真器下如何编译运行
    发表于 11-06 06:21

    在Windows10上运行vivado使用tcl文件创建E203项目路径错误的问题

    先按照官方给的开源项目,e203_hbirdv2-masterfpgamcu200t目录下的Makefile内容手动创建vivado工程。 在调用.tcl文件的过程中,每次进行到
    发表于 10-28 07:19

    ddr200t开发板运行hello world

    进入hello world目录进行交叉编译 下载驱动,板子和电脑连接后,驱动正常的时候,查看设备管理器发现增加了一个com4,数字可能不一样,说明驱动正常。 下载程序 该错误,是连接问题。在前面我们
    发表于 10-27 08:34

    飞凌嵌入式ElfBoard-Vim编辑器之GCC的基本使用

    我们现在以我们学习语言的经典的hello.c的编译为例,对gcc的基本用法做一个了解。已编译hello.c文件为例。创建测试例程路径/home/elf/work/example/
    发表于 10-16 09:05

    创建stm32f103c8工程后为什么终端没有打印Hello RT_Thread?

    创建stm32f103c8工程后为什么终端没有打印Hello RT_Thread!,程序好像也没有下载进去
    发表于 09-26 08:24

    【Milk-V Duo S 开发板免费体验】2 - 安装编译环境并测试Hello world!

    Hello, World! [root@milkv]~# ./helloworld Hello, World! 结论 至此已经配置应用程序
    发表于 07-07 21:18

    【润开鸿HH-SCDAYU800A开发板试用体验】Hello World

    \\\\\\\\toolchains Hello World 编写第一个应用程序 :最简单的Hello World 文件->新建项目,
    发表于 07-01 00:52

    Vivado HLS设计流程

    为了尽快把新产品推向市场,数字系统的设计者需要考虑如何加速设计开发的周期。设计加速主要可以从“设计的重用”和“抽象层级的提升”这两个方面来考虑。Xilinx 推出的 Vivado HLS 工具可以
    的头像 发表于 04-16 10:43 1347次阅读
    <b class='flag-5'>Vivado</b> HLS设计流程

    C语言的历史及程序介绍

    电子发烧友网站提供《C语言的历史及程序介绍.pdf》资料免费下载
    发表于 04-09 16:10 0次下载

    创建stm32f103c8工程后为什么终端没有打印Hello RT_Thread?

    创建stm32f103c8工程后为什么终端没有打印Hello RT_Thread!,程序好像也没有下载进去
    发表于 04-01 06:55

    如何在 树莓派 上编写和运行 C 语言程序

    在本教程中,我将讨论C编程语言是什么,C编程的用途,以及如何在RaspberryPi上编写和运行C程序
    的头像 发表于 03-25 09:28 936次阅读
    如何在 树莓派 上编写和<b class='flag-5'>运行</b> <b class='flag-5'>C</b> <b class='flag-5'>语言</b><b class='flag-5'>程序</b>?

    在mimxrt1170_evk调试hello_world出现硬件传输错误怎么解决?

    我按照视频在 cm7 中调试hello_world示例,我的链接服务器正在运行, debug prove 的 FW 也是最新的。 但是我仍然收到这个错误。 16:status-poll 中的目标
    发表于 03-25 07:31

    使用MCUXpresso for VS Code插件开发Zephyr的hello world

    本期来到Zephyr实战经验演练,小编带着大家一起使用MCUXpresso for VS Code插件来开发一个属于Zephyr的hello world
    的头像 发表于 01-03 09:21 1780次阅读
    使用MCUXpresso for VS Code插件开发Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>