文章目录
一、关于HLS
HLS是什么?与VHDL/Verilog编程技术有什么关系?
HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。
传统的FPGA开发,开发周期比较漫长,使用HLS,用高级语言开发可以提高效率。
Verilog可以精准的控制电路实现,但实现起来需要较长的周期,而HLS虽然可快速迭代,但其从软件到硬件翻译无论是面积还是资源均难以控制。
HLS有哪些关键技术问题?目前存在什么技术局限性?
关键技术:
输入语言采用了类 C语言而非前两代的 HDL 语言,如 C、C++、SystemC 以及 SpecC、HandelC 等,这能够使得系统模型得到复用,进行进一步的软硬件实现。
实现了对时序(timing)比较精确的评估和调度。
实现了对验证环境的重复使用,通过 TLM 建模技术可以将系统验证环境复用于 RTL 级验证,降低了验证的复杂度。
局限性:
没有早期的性能估计以及任何违反设计和平台限制的行为;
没有利用所有可能的数据通信方式;
没有功能概述,也没有对用户代码进行优化转换
支持代码报告得太晚了;
在某些情况下,工具的高效实施是不可能的,例如当必须将太多的加速器映射到硬件部分时。 HLS工具无法预先检测到这种情况,也无法在用户坚持的情况下尽量减轻其影响。
二、HLS完成LED灯闪烁
2.1 新建HLS工程
先点击创建工程
选择创建位置,输入项目名
点击next到下面的界面,选择元器件
导航栏如下所示:
2.2 添加源文件
右键 Source,点击 New file,新建一个 led.cpp 文件
再添加一个头文件led.h
代码如下:
led.h:
#ifndef _SHIFT_LED_H_