Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程

前面已经有一篇博客介绍了MB的基本情况,这里将深入介绍MB的设置,最终实现可以用printf打印出双浮点数并操作BRAM。首先创建Block Design,如下图:

 Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第1张图片

然后跳出新的界面,中间有个加号,添加MicroBlaze,然后双击,按下图分别对CPU架构、性能、调试功能、总线等进行配置:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第2张图片

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第3张图片

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第4张图片

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第5张图片

其中AXI数据接口是与外围接口交互的总线,之后所有模块都挂在这个总线上。然后选择Run Block Automation添加内存,如下图所示:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第6张图片

然后按照下面配置,注意,内存比较足够大才能够使用printf函数打印出双浮点数:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第7张图片

配置后将会生成下图的各模块,之后将时钟按照自己板子的要求进行配置,也可以修改各模块的名字。

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第8张图片

然后依次添加AXI UARTlite、BRAM(包括了AXI控制器和Block memory generator)、GPIO等,还可以直接添加AXI-Lite接口(右键选择Create Interface Port,选择协议),从而和自己写的支持AXI-Lite协议的模块进行交互,最后如下图所示,此时点击Run Connection Automation就可以完成自动布线的功能了。

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第9张图片

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第10张图片

然后选择保存,然后如下图选择菜单栏Tools的Validate Design检查整个block设计是否有问题。

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第11张图片

如果没有问题,那么就可以生成CPU顶层文件调用,如下图所示:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第12张图片

这样就生成了顶层HDL文件,可以被其他模块调用。

当工程综合后,点击菜单栏File/Export/Export Hardware生成hdf文件,生成成功后,就可以在菜单栏File/Launch SDK上点击 启动SDK。

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第13张图片

在启动SDK后,生成新的工程,如下图所示,选择File/Application Project

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第14张图片

然后输入工程名,再点击Next,选择工程模板,这里推荐选择Hello World模板,如下图:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第15张图片

在编写代码过程中,操作BRAM等模块可以按照官方提供的高级API函数,也可以直接使用Xil_Out32和Xil_In32等函数进行操作,例如:

value = Xil_In32(XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR+addr*4);

Xil_Out32(XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR+addr*4, Value);

其中XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR是存储器的基地址,需要注意的是,由于AXI协议都是32比特4个字节进行操作,所以地址后两位是用来选择操作对应地址32比特的4个字节。

GPIO的基地址是XPAR_GPIO_0_DEVICE_ID,AXI接口的基地址是XPAR_(接口名)_BASEADDR。

该工程可以直接用printf函数打印出双浮点数。

另外,如果运行代码时申请内存空间失败(比较推荐使用静态变量和全局变量的方法,避免内存泄漏),可能是堆内存分配太小了,可以配置堆内存变大,打开lscript.ld,设置Heap Size的数值即可,如下图:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第16张图片

完成代码后,可以选择直接运行或者调试模式,如下图:

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第17张图片

选择直接运行

Microblaze工程实例:生成一个可以输出双浮点数的工程配置全过程_第18张图片

选择调试模式

你可能感兴趣的:(Vivado,FPGA)