搭建一个通用MicroBlaze最小系统+一个外设

搭建一个通用MicroBlaze最小系统+一个外设,第1张

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

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

缩略词索引:

MB-MicroBlaze

环境平台

win10 vivado 2020

ViTIs 2020

搭建一个通用MicroBlaze最小系统+一个外设,a8c1302e-24e2-11ed-ba43-dac502259ad0.png,第2张

FPGA部分搭建

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

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

第1步

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

第2步

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

搭建一个通用MicroBlaze最小系统+一个外设,a8de68ba-24e2-11ed-ba43-dac502259ad0.png,第3张

第3步

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

搭建一个通用MicroBlaze最小系统+一个外设,a8fc3840-24e2-11ed-ba43-dac502259ad0.png,第4张

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

搭建一个通用MicroBlaze最小系统+一个外设,a91f7d82-24e2-11ed-ba43-dac502259ad0.png,第5张

第4步

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

搭建一个通用MicroBlaze最小系统+一个外设,a93a4cd4-24e2-11ed-ba43-dac502259ad0.png,第6张

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

第5步-此步可不加

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

搭建一个通用MicroBlaze最小系统+一个外设,a94e3154-24e2-11ed-ba43-dac502259ad0.png,第7张

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

搭建一个通用MicroBlaze最小系统+一个外设,a971d910-24e2-11ed-ba43-dac502259ad0.png,第8张

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

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

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

搭建一个通用MicroBlaze最小系统+一个外设,a98b37fc-24e2-11ed-ba43-dac502259ad0.png,第9张

第6步

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

搭建一个通用MicroBlaze最小系统+一个外设,a99720bc-24e2-11ed-ba43-dac502259ad0.png,第10张

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

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

搭建一个通用MicroBlaze最小系统+一个外设,a9b50b9a-24e2-11ed-ba43-dac502259ad0.png,第11张搭建一个通用MicroBlaze最小系统+一个外设,a9c278d4-24e2-11ed-ba43-dac502259ad0.png,第12张

界面默认,点击【Next】:

搭建一个通用MicroBlaze最小系统+一个外设,a9d25d9e-24e2-11ed-ba43-dac502259ad0.png,第13张

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

搭建一个通用MicroBlaze最小系统+一个外设,aa0c4216-24e2-11ed-ba43-dac502259ad0.png,第14张

界面默认,点击【Next】:

搭建一个通用MicroBlaze最小系统+一个外设,aa2fb20a-24e2-11ed-ba43-dac502259ad0.png,第15张

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

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

第7步

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

搭建一个通用MicroBlaze最小系统+一个外设,aa4d1afc-24e2-11ed-ba43-dac502259ad0.png,第16张

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

搭建一个通用MicroBlaze最小系统+一个外设,aa70193a-24e2-11ed-ba43-dac502259ad0.png,第17张

第8步

引出相关引脚。

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

第9步

验证目前设计的正确性:

搭建一个通用MicroBlaze最小系统+一个外设,aa7f655c-24e2-11ed-ba43-dac502259ad0.png,第18张

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

第10步

修改引脚名称。

搭建一个通用MicroBlaze最小系统+一个外设,aa8e1778-24e2-11ed-ba43-dac502259ad0.png,第19张搭建一个通用MicroBlaze最小系统+一个外设,aa9fb29e-24e2-11ed-ba43-dac502259ad0.png,第20张搭建一个通用MicroBlaze最小系统+一个外设,aabf86e6-24e2-11ed-ba43-dac502259ad0.png,第21张搭建一个通用MicroBlaze最小系统+一个外设,aaddc7dc-24e2-11ed-ba43-dac502259ad0.png,第22张

第11步

导出BD,按照下图位置:

搭建一个通用MicroBlaze最小系统+一个外设,aaf94124-24e2-11ed-ba43-dac502259ad0.png,第23张

设置路径,设置BD名称:

搭建一个通用MicroBlaze最小系统+一个外设,ab234168-24e2-11ed-ba43-dac502259ad0.png,第24张

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

write_bd_tcl [你的路径]/xxx_bd.tcl

第16步

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

带DDR的MB最小系统

第1步

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

第2步

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

搭建一个通用MicroBlaze最小系统+一个外设,a8de68ba-24e2-11ed-ba43-dac502259ad0.png,第3张

第3步

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

搭建一个通用MicroBlaze最小系统+一个外设,a8fc3840-24e2-11ed-ba43-dac502259ad0.png,第4张

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

搭建一个通用MicroBlaze最小系统+一个外设,a91f7d82-24e2-11ed-ba43-dac502259ad0.png,第5张

第4步

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

搭建一个通用MicroBlaze最小系统+一个外设,a93a4cd4-24e2-11ed-ba43-dac502259ad0.png,第6张

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

第5步

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

搭建一个通用MicroBlaze最小系统+一个外设,a94e3154-24e2-11ed-ba43-dac502259ad0.png,第7张

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

搭建一个通用MicroBlaze最小系统+一个外设,a971d910-24e2-11ed-ba43-dac502259ad0.png,第8张

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

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

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

搭建一个通用MicroBlaze最小系统+一个外设,a98b37fc-24e2-11ed-ba43-dac502259ad0.png,第9张

第6步

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

搭建一个通用MicroBlaze最小系统+一个外设,a99720bc-24e2-11ed-ba43-dac502259ad0.png,第10张

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

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

搭建一个通用MicroBlaze最小系统+一个外设,a9b50b9a-24e2-11ed-ba43-dac502259ad0.png,第11张搭建一个通用MicroBlaze最小系统+一个外设,a9c278d4-24e2-11ed-ba43-dac502259ad0.png,第12张

界面默认,点击【Next】:

搭建一个通用MicroBlaze最小系统+一个外设,a9d25d9e-24e2-11ed-ba43-dac502259ad0.png,第13张

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

搭建一个通用MicroBlaze最小系统+一个外设,aa0c4216-24e2-11ed-ba43-dac502259ad0.png,第14张

界面默认,点击【Next】:

搭建一个通用MicroBlaze最小系统+一个外设,aa2fb20a-24e2-11ed-ba43-dac502259ad0.png,第15张

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

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

第7步

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

搭建一个通用MicroBlaze最小系统+一个外设,aa4d1afc-24e2-11ed-ba43-dac502259ad0.png,第16张

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

搭建一个通用MicroBlaze最小系统+一个外设,ac3d4e5e-24e2-11ed-ba43-dac502259ad0.png,第39张

第8步

引出相关引脚。

搭建一个通用MicroBlaze最小系统+一个外设,ac6bde5e-24e2-11ed-ba43-dac502259ad0.png,第40张上图界面选择clk_in1,组合键 【Ctrl+T】 引出引脚:

搭建一个通用MicroBlaze最小系统+一个外设,ac94db74-24e2-11ed-ba43-dac502259ad0.png,第41张

第9步

验证目前设计的正确性:

搭建一个通用MicroBlaze最小系统+一个外设,acb8c4d0-24e2-11ed-ba43-dac502259ad0.png,第42张

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

第10步

添加DDR控制器:

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

搭建一个通用MicroBlaze最小系统+一个外设,acdf22d8-24e2-11ed-ba43-dac502259ad0.png,第43张

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

搭建一个通用MicroBlaze最小系统+一个外设,acfbc668-24e2-11ed-ba43-dac502259ad0.png,第44张

第11步

设置MIG IP。

双击 mig_7series_0,进行如下配置:

搭建一个通用MicroBlaze最小系统+一个外设,ad0a6de4-24e2-11ed-ba43-dac502259ad0.png,第45张搭建一个通用MicroBlaze最小系统+一个外设,ad1e7c08-24e2-11ed-ba43-dac502259ad0.png,第46张搭建一个通用MicroBlaze最小系统+一个外设,ad45a8be-24e2-11ed-ba43-dac502259ad0.png,第47张搭建一个通用MicroBlaze最小系统+一个外设,ad6eb09c-24e2-11ed-ba43-dac502259ad0.png,第48张搭建一个通用MicroBlaze最小系统+一个外设,ad82570a-24e2-11ed-ba43-dac502259ad0.png,第49张搭建一个通用MicroBlaze最小系统+一个外设,adb1ca08-24e2-11ed-ba43-dac502259ad0.png,第50张搭建一个通用MicroBlaze最小系统+一个外设,add4f96a-24e2-11ed-ba43-dac502259ad0.png,第51张搭建一个通用MicroBlaze最小系统+一个外设,ade9c732-24e2-11ed-ba43-dac502259ad0.png,第52张

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

搭建一个通用MicroBlaze最小系统+一个外设,ae17bb92-24e2-11ed-ba43-dac502259ad0.png,第53张搭建一个通用MicroBlaze最小系统+一个外设,ae3f0a62-24e2-11ed-ba43-dac502259ad0.png,第54张搭建一个通用MicroBlaze最小系统+一个外设,ae67c6a0-24e2-11ed-ba43-dac502259ad0.png,第55张搭建一个通用MicroBlaze最小系统+一个外设,ae756c24-24e2-11ed-ba43-dac502259ad0.png,第56张搭建一个通用MicroBlaze最小系统+一个外设,aea4efd0-24e2-11ed-ba43-dac502259ad0.png,第57张搭建一个通用MicroBlaze最小系统+一个外设,aedf3dfc-24e2-11ed-ba43-dac502259ad0.png,第58张

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

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

搭建一个通用MicroBlaze最小系统+一个外设,af11ebee-24e2-11ed-ba43-dac502259ad0.png,第59张

第12步

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

搭建一个通用MicroBlaze最小系统+一个外设,af315ce0-24e2-11ed-ba43-dac502259ad0.png,第60张

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

搭建一个通用MicroBlaze最小系统+一个外设,af3fb718-24e2-11ed-ba43-dac502259ad0.png,第61张

第13步

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

搭建一个通用MicroBlaze最小系统+一个外设,af4be31c-24e2-11ed-ba43-dac502259ad0.png,第62张

验证设计:

搭建一个通用MicroBlaze最小系统+一个外设,af6d3486-24e2-11ed-ba43-dac502259ad0.png,第63张

第14步

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

搭建一个通用MicroBlaze最小系统+一个外设,af95b32a-24e2-11ed-ba43-dac502259ad0.png,第64张搭建一个通用MicroBlaze最小系统+一个外设,afb6cf10-24e2-11ed-ba43-dac502259ad0.png,第65张

第15步

导出BD,按照下图位置:

搭建一个通用MicroBlaze最小系统+一个外设,aaf94124-24e2-11ed-ba43-dac502259ad0.png,第23张

设置路径,设置BD名称:

搭建一个通用MicroBlaze最小系统+一个外设,ab234168-24e2-11ed-ba43-dac502259ad0.png,第24张

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

write_bd_tcl [你的路径]/xxx_bd.tcl

测试及固化程序

第1步

建立一个新的Vivado工程。

第2步

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

搭建一个通用MicroBlaze最小系统+一个外设,b0110aac-24e2-11ed-ba43-dac502259ad0.png,第68张

选择tcl文件,确定即可

搭建一个通用MicroBlaze最小系统+一个外设,b02e9bc6-24e2-11ed-ba43-dac502259ad0.png,第69张

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

搭建一个通用MicroBlaze最小系统+一个外设,b0512204-24e2-11ed-ba43-dac502259ad0.png,第70张

第3步

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

搭建一个通用MicroBlaze最小系统+一个外设,b07a6376-24e2-11ed-ba43-dac502259ad0.png,第71张搭建一个通用MicroBlaze最小系统+一个外设,b08e1e48-24e2-11ed-ba43-dac502259ad0.png,第72张

第4步

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

搭建一个通用MicroBlaze最小系统+一个外设,b0b2911a-24e2-11ed-ba43-dac502259ad0.png,第73张

后面控制三个LED等。

第5步

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

搭建一个通用MicroBlaze最小系统+一个外设,b0d2e078-24e2-11ed-ba43-dac502259ad0.png,第74张

第6步

导出硬件

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

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

搭建一个通用MicroBlaze最小系统+一个外设,b0f3651e-24e2-11ed-ba43-dac502259ad0.png,第75张

第7步

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

搭建一个通用MicroBlaze最小系统+一个外设,b1029b10-24e2-11ed-ba43-dac502259ad0.png,第76张

第8步

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

搭建一个通用MicroBlaze最小系统+一个外设,b11110e6-24e2-11ed-ba43-dac502259ad0.png,第77张搭建一个通用MicroBlaze最小系统+一个外设,b11b7838-24e2-11ed-ba43-dac502259ad0.png,第78张

第9步

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

第12步

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

搭建一个通用MicroBlaze最小系统+一个外设,b13b6d14-24e2-11ed-ba43-dac502259ad0.png,第79张

第13步

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

搭建一个通用MicroBlaze最小系统+一个外设,b151f782-24e2-11ed-ba43-dac502259ad0.png,第80张

第14步

TOOLs-->Launch Vitis IDE

搭建一个通用MicroBlaze最小系统+一个外设,b170e494-24e2-11ed-ba43-dac502259ad0.png,第81张

选择工作文件夹。

搭建一个通用MicroBlaze最小系统+一个外设,b18a312e-24e2-11ed-ba43-dac502259ad0.png,第82张

创建Platform

搭建一个通用MicroBlaze最小系统+一个外设,b1aae6d0-24e2-11ed-ba43-dac502259ad0.png,第83张

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

搭建一个通用MicroBlaze最小系统+一个外设,b1bce272-24e2-11ed-ba43-dac502259ad0.png,第84张

右击,build project

搭建一个通用MicroBlaze最小系统+一个外设,b1db49b0-24e2-11ed-ba43-dac502259ad0.png,第85张

无问题后继续后面步骤。

第15步

创建App

搭建一个通用MicroBlaze最小系统+一个外设,b1e87e96-24e2-11ed-ba43-dac502259ad0.png,第86张

【NEXT】

搭建一个通用MicroBlaze最小系统+一个外设,b1f96706-24e2-11ed-ba43-dac502259ad0.png,第87张

【NEXT】

搭建一个通用MicroBlaze最小系统+一个外设,b2074cfe-24e2-11ed-ba43-dac502259ad0.png,第88张

输入App名称:

搭建一个通用MicroBlaze最小系统+一个外设,b231437e-24e2-11ed-ba43-dac502259ad0.png,第89张

【NEXT】

搭建一个通用MicroBlaze最小系统+一个外设,b24dbc34-24e2-11ed-ba43-dac502259ad0.png,第90张

选择Hello World模板。

搭建一个通用MicroBlaze最小系统+一个外设,b2690598-24e2-11ed-ba43-dac502259ad0.png,第91张

【FINISH】

搭建一个通用MicroBlaze最小系统+一个外设,b270fd98-24e2-11ed-ba43-dac502259ad0.png,第92张

第16步

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

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

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

搭建一个通用MicroBlaze最小系统+一个外设,b281169c-24e2-11ed-ba43-dac502259ad0.png,第93张

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

搭建一个通用MicroBlaze最小系统+一个外设,b2a2f604-24e2-11ed-ba43-dac502259ad0.png,第94张

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

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

下面说明固化过程。

第17步

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

搭建一个通用MicroBlaze最小系统+一个外设,b2c93f1c-24e2-11ed-ba43-dac502259ad0.png,第95张

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

搭建一个通用MicroBlaze最小系统+一个外设,b2f4b0ca-24e2-11ed-ba43-dac502259ad0.png,第96张

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

搭建一个通用MicroBlaze最小系统+一个外设,b31dd5fe-24e2-11ed-ba43-dac502259ad0.png,第97张

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

搭建一个通用MicroBlaze最小系统+一个外设,b3302d6c-24e2-11ed-ba43-dac502259ad0.png,第98张

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

总结

今天简单演示了一个MB小例子。




审核编辑:刘清

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2998614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存