首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Vivado高效设计案例分享大赛---14. 体验HLS的高效

Vivado高效设计案例分享大赛---14. 体验HLS的高效

高层次综合HLS是Vivado套件中十分强大,具有前瞻性的工具,它能够基于现有的C/C++的代码编写的算法,按照Vivado HLS编译工具的规范进行简单修改后,就可以快速、直接地生成IP核或者综合后的结果(.dcp文件)。对于嵌入式系统的开发者来说,这样就可以快速地完成现有算法到FPGA中的移植,既能显著缩短开发时间,又能利用FPGA的性能几十倍上百倍地提高算法性能。这里用了一个小程序,还是那个控制系统里常用的PI调节器,对使用HDL手动编写和直接使用C代码生成RTL的过程进行对比。这里的C代码和HDL代码实现了完全相同的功能,使用了同样的数据类型,并且都是经过测试的。

       首先,对比一下代码长度,不考虑注释、换行等与算法本身无关的内容的话:
       Vivado HLS中的C代码:35行
       Vivado中的Verilog HDL:231行
       显然C相比HDL要简洁的多,输入这几十行C代码所花的时间和输入几百行HDL相比,显然要节省大量时间。
       其次,对比一下程序的测试:
       Vivado HLS中可以直接用C语言写测试代码,并且如果是现有的算法,基本都是已经充分测试验证过的,可以节省大量的测试时间。
       Vivado中使用HDL进行testbench的编写,还要人为考虑使用什么样的测试时钟信号、复位信号等等,如果不是可以使用一些不可综合的HDL语句的话,写起来将更花时间。
       然后对比综合过程中占用的资源:
       Vivado HLS:Elapsed time: 3.676 seconds; current memory usage: 37.9 MB. 因为Vivado HLS在编译时能够自动识别一些变量的特征,并在综合时自动用BRAM、SRL等进行替换,所以它对C代码的转换效率也是极高的。
    Vivado:elapsed = 00:00:00.051 . Memory (MB): peak = 960.336,画的时间慢了不少,占用的资源也要多一些。
    最后对比一下综合后的PL资源占用情况(这里的硬件使用的是MicroZed),如下图所示。



可以看出,Vivado HLS综合后的资源占用甚至比手动写的HDL还要好一些,虽然个人的书写风格当然也有一定的影响,但是这也足以说明HLS的高效了。如果考虑到Vivado相比传统开发工具和竞争对手的工具而言已经极大地提高了效率,那Vivado HLS更是一种效率的飞跃了。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表