FPGA Vivado系统搭建(二)

在完成了FIFO的搭建后,我开始了用自己生成的IP Core进行搭建网络。这就需要我们将之前学习的知识串起来,先用Vivado HLS生成我们需要的IP Core,然后再通过Vivado对相关网络进行搭建。

一、用vivado HLS生成IP Core

大致流程在我前面的博客中已经有介绍,这里我们生成的IP Core能够完成最基本的二维卷积运算,为我们最终的目的——在FPGA上实现卷积神经网络打下基础。

1、我们在vivado HLS里面创建工程完成,在source中添加卷积运算的C代码,在testbench中添加测试文件
FPGA Vivado系统搭建(二)
2、在Directive窗口,我们进行接口设置,以防止后面出现接口过多的错误,这里我们对输入和输出进行了设置,点击右键,出现Insert Directive
FPGA Vivado系统搭建(二)
点击进入之后,我们在Directive里面选择INTERFACE接口选项
FPGA Vivado系统搭建(二)
我们在数据传输的时候运用的是AXIS,在mode里面选则AXIS
FPGA Vivado系统搭建(二)
点击OK即可,对于输出接口也进行同样的设置。
3、进行C simulationFPGA Vivado系统搭建(二)仿真,顶层函数设置以后,我们点击activate solution
FPGA Vivado系统搭建(二)
4、完成以后就可以进行Export RTL了FPGA Vivado系统搭建(二) 完成之后,会看到IP文件夹里面生成了我们需要的IP Core
FPGA Vivado系统搭建(二)

二、运用生成的IP Core搭建网络

我们需要运用vivado进行网络搭建,关于vivado搭建的流程前面博客有讲,对于生成的IP Core,我们可以在vivado里面添加进入进行运用。
1、在vivado里创建工程完成以后,我们点击FPGA Vivado系统搭建(二) 来搭建网络。首先要把我们在vivado HLS里面生成的IP Core加到IP Catalog中,这样我们在后面进行搜索添加IP Core的时候才能将之前生成的IP Core添加进来。
点击Project settings->IP->Repository Manager->+
FPGA Vivado系统搭建(二)
FPGA Vivado系统搭建(二)
FPGA Vivado系统搭建(二)
2、点击➕找到自己生成的IP Core的位置,添加完成后点击OK,这样之前在Vivado HLS上生成的IP Core就添加进来了。添加完成后,我们点击FPGA Vivado系统搭建(二) 在搜索框里搜索我们之前生成的IP Core,会发现它已经在目录中
FPGA Vivado系统搭建(二)
双击添加进来,我们就可以看到我们之前生成的IP Core。之前觉得IP Core很抽象,看不见摸不着,现在可以很清楚的看到,IP Core就是能够实现一些功能的模块。
FPGA Vivado系统搭建(二)
3、添加进来以后,我们仿照着之前创建FIFO的时候,添加进来处理器和DMA,点击自动连接,处理器和DMA之间会自动连接,并且添加上其他需要的IP Core。和FIFO相同,Conv2d的输入和DMA的M_AXIS_MM2S相连接,而Conv2d的输出和DMA的S_AXIS_S2MM相连。然后将这些IP Core的时钟和处理器时钟连接到一起,连接结果如下图所示
FPGA Vivado系统搭建(二)
上面一些引脚的处理和优化自己掌握的还不是很好,后面会继续学习提升。
4、接下来和之前一样 ,create HDL wrapper,生成比特流
FPGA Vivado系统搭建(二)
到这里生成完成,生成过程中间还有很多瑕疵,如果有不妥之处欢迎指正,同时要继续学习相关方面的知识。