【原创】如何把Vivado HLS生成的IP用作PS的外设并验证
0赞前面的博文(请参考http://blog.chinaaet.com/detail/37142)里,我们已经学习了如何把Vivado HLS生成的IP用于Vivado IPI集成开发流程里。作为面向IP的设计流程的一部分,我们生成的IP自然也可以作为ZYNQ SOC中PS的一个外设进行使用,这里我们就来看一下是如何使用的。
首先,按照前面博文的流程,用Vivado HLS新建一个IP工程(主要用途是从PL向PS发送中断请求),并导出为IP Catalog类型的IP,然后新建Vivado的RTL工程,把刚刚生成的IP导出到Vivado IPI中,然后新建模块设计,把刚刚导入的IP以及一个PS的IP拖入模块设计文件中,其中PS部分的配置如图1所示。
图1 PS部分的中断配置
在模块设计文件中有PS相关的IP出现时,IPI会出现自动连接的提示,如图2所示。
图2自动连接的提示
点击图2中的Run Connection Automation,Vivado IPI便可帮助我们智能地完成连续工作,点击Run Block Automation,则会把相关的外设端口进行连接,连续配置的结果如图3所示。
图3自动连线的配置结果
然后确认我们在HLS生成并导入IPI的IP作为PS的外设,已经分配了相应的内存空间,如图4所示。
图4 PS的外设分配的地址
然后按照上一博文里同样的方法,依次完成验证设计、生成输出文件、产生HDL打包文件的步骤,全部完成之后点击Vivado设计流程管理中Program and Debug下面的Generate Bitstream,把Vivado工程编译为比特流文件。
接下来就可以把PL中实现的IP导入SDK中,作为PS的一个外设进行开发配置了。点击Vivado菜单栏上的File---Export---Export Hardware for SDK,选择导出包含比特流文件的IP到SDK中,如图5所示。
图5导出硬件配置到SDK中
接下来还要做的一个步骤是把Vivado HLS中生成的IP信息也加入到SDK的“IP仓库”中,点击SDK工具栏Xilinx Tools下面的Reference,切换到Repositories进行配置,如图6所示。
图6配置SDK中的IP路径
然后点击SDK工具栏的File---New---Application Project,新建一个SDK测试工程,如图7所示,工程的模版则可以使用“hello world”之类的,方便我们进行快速的测试。
图7新建SDK测试工程
点击SDK菜单栏Xilinx Tools下面的Program FPGA,把基于“hello world”模版创建的简单工程先烧写到FPGA中,然后点击SDK窗口中Terminal下面的connection,配置一个串口连接,如图8所示。
图8配置SDK中终端的连接
然后还需要配置串口的调试功能,才能把在调试功能中使用窗口,配置方法为在图7中新建的工程上点击右键,选择其属性,如图9所示。
图9配置串口的调试
然后在图9中所示test工程上点击右键,选择在硬件上运行程序,如图10所示。
图10运行程序
此时在SDK中的控制台里,程序的运行结果便通过串口发生上来了,如图11所示。
图11运行结果
在“hello world”模版上创建的工程已经能够正确运行了,说明我们的硬件配置等都是正确的。接下来便是在SDK中进行和我们的外设有关的编程,对其进行控制了。因为这里用的IP生成的外设实际是在Vivado HLS中的C代码生成的,所以这里的测试思路是把同样的C代码也放入SDK的这个工程里,然后把外设的运算结果和C代码直接运行的结果进行对比。用图10同样的方法运行代码,运行结果如图12所示。
图12运行结果