【原创】Vivado HLS初体验
1赞Vivado HLS初体验
1、前言
该笔记主要是Vivado HLS开发流程的学习心得,掌握HLS开发的全流程:从工程创建到算法仿真到综合再到设计实现,由于截图较多,暂时只写到前两部分。
2、目标
1)熟悉Vivado HLS GUI的使用
2)如何进行C/C++算法仿真
关于入门的例子,比较出名的是官网上一个矩阵乘法的工程,讲了使用HLS建立工程的全流程,但是我看了之后有点晕乎,不知道为什么这么做、那么做,只能机械地跟着文档操作,没办法思考,这也是没办法的事,毕竟是第一次使用HLS工具。
怎么办呢,找了一个non-project方式的example,把用到的.c、.h、测试数据都copy出来,新建空工程,然后手动把资源添加进去。这样反复几次,排除过程中遇到的错误,自己摸索摸索,对整个流程有了一定的理解,就没那么拙计了。
3、准备工作:
将工程用到的.c、.h、测试数据等文件准备好,放在src文件夹下。建好工程之后,把src放到工程文件夹下。
4、新建工程:
双击Vivado HLS 2014.2打开HLS,初始界面如图1所示。
图1 HLS初始界面
单击“Create New Project”,打开新建工程向导,第一个界面如图2所示。
图2 指定工程名和路径
谨慎起见,我把工程名和我们设计的模块名保持一致,主要是看了几个例子,都是把工程名和模块名保持一致的,等熟练了再研究能不能改吧。设置完毕后,点击Next按钮,进入图3所示的界面。
图3 添加设计资源
我们这里是建立空工程,先不添加,以后我们自行开发的时候,这里估计也是直接跳过,进了工程之后再自行新建设计文件。点击Next,进入图4所示的测试文件添加界面。
图4 添加测试用文件
这个界面和图3所示的界面很像,不过是用来添加测试文件的,这里仍旧跳过,直接Next,进入下一界面,如图5所示。
图5 设置解决方案的属性
这里需要设置了,否则Finish按钮一直是灰化的,没法生成工程。红色方框内的提示可以看出,这里是选择所使用的芯片型号的。点击绿色椭圆内的按钮,进入芯片选择对话框,如图6所示。
图6 器件选择对话框
这里不用多说,两种方式,一种是逐一选择Family,Package,Speed Grade等参数,直到定位到你想要的呃芯片,如图7所示。
图7 利用Filter定位器件
另一种方法是选择开发板,如图8所示。
图8 通过开发板定位器件
选择完毕后,点击OK,返回,发现Part发生变化,已选中ZedBoard,Finish按钮可用。
图9 最后一步
点击Finish按钮,完成向导,进入HLS主界面,如图10所示。
图10 HLS主界面
典型的Eclipse框架,细节就不介绍了,搞软件的对这个界面不陌生。
5、添加资源:
5.1、添加设计文件
选中左侧Explorer子窗体下Source目录,右键,弹出Add Files菜单,如图11所示。
图11 Add Files菜单
点击Add Files,进入文件选择对话框,如图12所示。
图12 添加文件对话框
在我们准备好的src文件夹中找到yuv_filter.c,点击“打开”,将之添加进工程。
注意:.h文件是不用添加的,HLS会自动包含相应的.h,但是路径要正确。
5.2、添加测试文件和数据
方法和5.1小节相同,不同之处在于添加到testbench目录中,添加文件夹时,需要选择“Add Folder…”选项。添加资源也费了一点功夫,刚开始没有仔细看代码,把image_aux.c添加到Source目录中去了,编译会有问题。添加完毕的目录结构如图13所示。
图13 添加资源完毕
5.3设定工程属性
选中yuv_filter文件夹,右击,弹出如图14所示的菜单。
图14 Project Settings
点击Project Settings,进入设置界面,如图15所示。
图15 工程设置界面
点击Synthesis,进入图16所示的界面。
图16 指定顶层
此时,Top Function:一栏是空的,OK按钮是灰化的。在Top Function一栏,输入yuv_filter,指定Top Function的名称,这里具体意思还不是太确定,猜测是对应于verilog中的module,最终是要把yuv_filter这个函数综合成yuv_filter这个module。设置完毕,点击OK,回到主界面。
6、C代码验证和仿真
资源添加完毕后,需要对所设计的算法或者函数的正确性进行验证和仿真。
6.1、查看yuv_filter_test.c
展开Test Bench文件夹,双击yuv_filter_test.c,该文件会被打开,如图17所示。可以看到入口函数main在该文件内,该文件调用yuv_filter函数,将结果与预先计算好的golden.dat进行对比,如果一致,则测试通过,yuv_filter功能正确实现。
图17
6.2、C代码仿真
在菜单栏中找到Project > Run C Simulation命令,或者直接单击工具栏中的按钮(图18所示),编译和执行C程序。
图18
点击按钮后,会弹出图19所示的界面,直接点击OK即可。
图19
6.3、结果
编译过程以及执行结果会在主界面下方的Console自选项卡中打印显示,如图20所示。
图20 C代码编译、执行结果
从图20的打印结果可以看出,代码测试通过。
先到这吧,图太多,又变成长文,接下来的部分放在下一篇吧。
版权声明:
本文由博主“cuter”发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和版权声明。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。
博客官方地址:
ChinaAET:http://blog.chinaaet.com/cuter521