第11周作业---HLS编程环境入门

HLS

HLS是高层综合(High level Synthesis),是将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言。
Vivado的HLS工具的前世今生可以从AutoESL与Xilinx那些人和事中看到,这篇文章写得很有趣。HLS是高层次综合的的简称,“综合”即“Synthesis”,在ug627《XST User Guide》中解释综合是将程序代码翻译为称为NGC的特殊网表文件中,这样才能够对其进行实现。

至于“层次”,或许可以这样理解。书中一般把FPGA设计分为以下几个级别(对于这个分级实际上没有一个特定的说法,可以参考第13章抽象级别的描述):

系统级
算法级
RTL级
门级、开关级
一般认为RTL级及以下设计是可用的,“层次”即从什么角度去描述想要实现的功能。譬如,a xor b采用门级描述就是a,b是一个异或门的输入;而采用高一点层次描述就是a+b。显然,越低层次的描述越困难,后文例子中也能发现这一点。

HLS就是从高层次描述,之后综合成可用的网表文件的技术。这里的“高”指采用C、C++等编写程序,而不是传统的HDL语言。然而,实际上Vivado套件中是预先采用Vivado HLS这个软件将C程序转换成为Verilog HDL或者VHDL代码,之后进行下一步操作的,并不是直接综合C代码。

HLS与VHDL/Verilog有什么关系?

经常听人说,Verilog或VHDL与HLS相比,就好比是几十年前的汇编语言与C语言,HDL迟早会被HLS取代的。这些话已经讲了有一二十年了,还是没有看到HLS取代HDL。
随着FPGA密度随着工艺几何尺寸的缩小而不断增长,设计复杂性使得继续使用传统的HDL设计流程变得越来越困难。尽管HDL语言和工具已经发展,但是设计周期仍然长得令人讨厌,因此使用HLS可以加速FPGA的设计。

大降低了软件工程师处理硬件项目的门槛。也就是说,为了获得最佳结果,在使用HLS时,硬件专业知识仍然有用。
参考链接:HLS编程环境入门

HLS目前存在什么技术局限性?

1.HLS编译器问题
HLS编译器是静态工具,对理解代码的动态特性没有任何帮助。==HLS编译器的行为通常难以预测最终的性能和资源利用率。==因此,设计人员必须通过对相应的代码部分应用各种编译指示及其相关的参数设置,来手动探索设计空间,直到达到设计目标。
2.对于一些简单的逻辑,HLS实现结果较为臃肿。
一些简单的逻辑,用HDL实现只需要数十行代码,而HLS的实现结果却相当复杂。
3.HLS对开发人员的要求比较高。
HLS使用的语言显然不是标准C/C++语言,应该是扩展类C/C++语言。例如可以使用int1、int7等类型定义位宽为1、7的变量。HLS开发对从业人员的要求还是比较高的,需要软硬兼通才比较好。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值