FPGA Vivado系统搭建(二)
在完成了FIFO的搭建后,我开始了用自己生成的IP Core进行搭建网络。这就需要我们将之前学习的知识串起来,先用Vivado HLS生成我们需要的IP Core,然后再通过Vivado对相关网络进行搭建。
一、用vivado HLS生成IP Core
大致流程在我前面的博客中已经有介绍,这里我们生成的IP Core能够完成最基本的二维卷积运算,为我们最终的目的——在FPGA上实现卷积神经网络打下基础。
1、我们在vivado HLS里面创建工程完成,在source中添加卷积运算的C代码,在testbench中添加测试文件
2、在Directive窗口,我们进行接口设置,以防止后面出现接口过多的错误,这里我们对输入和输出进行了设置,点击右键,出现Insert Directive
点击进入之后,我们在Directive里面选择INTERFACE接口选项
我们在数据传输的时候运用的是AXIS,在mode里面选则AXIS
点击OK即可,对于输出接口也进行同样的设置。
3、进行C simulation仿真,顶层函数设置以后,我们点击activate solution
4、完成以后就可以进行Export RTL了 完成之后,会看到IP文件夹里面生成了我们需要的IP Core
二、运用生成的IP Core搭建网络
我们需要运用vivado进行网络搭建,关于vivado搭建的流程前面博客有讲,对于生成的IP Core,我们可以在vivado里面添加进入进行运用。
1、在vivado里创建工程完成以后,我们点击 来搭建网络。首先要把我们在vivado HLS里面生成的IP Core加到IP Catalog中,这样我们在后面进行搜索添加IP Core的时候才能将之前生成的IP Core添加进来。
点击Project settings->IP->Repository Manager->+
2、点击➕找到自己生成的IP Core的位置,添加完成后点击OK,这样之前在Vivado HLS上生成的IP Core就添加进来了。添加完成后,我们点击 在搜索框里搜索我们之前生成的IP Core,会发现它已经在目录中
双击添加进来,我们就可以看到我们之前生成的IP Core。之前觉得IP Core很抽象,看不见摸不着,现在可以很清楚的看到,IP Core就是能够实现一些功能的模块。
3、添加进来以后,我们仿照着之前创建FIFO的时候,添加进来处理器和DMA,点击自动连接,处理器和DMA之间会自动连接,并且添加上其他需要的IP Core。和FIFO相同,Conv2d的输入和DMA的M_AXIS_MM2S相连接,而Conv2d的输出和DMA的S_AXIS_S2MM相连。然后将这些IP Core的时钟和处理器时钟连接到一起,连接结果如下图所示
上面一些引脚的处理和优化自己掌握的还不是很好,后面会继续学习提升。
4、接下来和之前一样 ,create HDL wrapper,生成比特流
到这里生成完成,生成过程中间还有很多瑕疵,如果有不妥之处欢迎指正,同时要继续学习相关方面的知识。