HLS入门实践

一、HLS简介

1、HLS是什么

高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。所谓的高层次语言,包括C、C++、SystemC等,通常有着较高的抽象度,并且往往不具有时钟或时序的概念。相比之下,诸如Verilog、VHDL、SystemVerilog等低层次语言,通常用来描述时钟周期精确(cycle-accurate)的寄存器传输级电路模型,这也是当前ASIC或FPGA设计最为普遍使用的电路建模和描述方法。

2、HLS与VHDL/Verilog编程技术有什么关系

HLS 是一个很好的研究方向,涉及的技能知识和研究点都非常多,需要懂得编译、OS和数字电路等等,每个都是大头,但我不觉得HLS会是未来硬件描述的最佳解决方案。合适的方案应该提供一个抽象层次更高的硬件描述语言。verilog 适合于RTL 级别的硬件描述,但是RTL 级别的硬件描述其实还是过于底层,因此这也带来了很多繁重的编码和设计工作,类似于汇编程序一样,合适的解决方案类似于软件编程中从汇编走向C/C++的过程,提供一个更高层次的抽象描述,并提供一些基本的微结构组件,用于快速搭建数字系统。像blue spec/ chisel就给我有这种感觉。

无论是HLS还是Verilog,两者代表了两个“极端”的方向。Verilog可以精准的控制电路实现,但实现起来需要较长的周期,而HLS虽然可快速迭代,但其从软件到硬件翻译无论是面积还是资源均难以控制。目前我们的算法加速设计采用SpinalHDL,在保持电路本身特性的同时,借助scala语法能够快速的做电路实现。

二、HLS技术

1、HLS关键技术问题

1、将高级语言转化为RTL电路
2、循环优化,并行处理

2、技术局限性

1、与Verilog相比,能做到的优化十分有限
2、HLS编译器是静态工具,对理解代码的动态特性没有任何帮助
3、对于一些简单的逻辑,HLS实现结果较为臃肿
4、HLS对开发人员的要求比较高。

三、HLS开发环境搭建

工具选择:
quartus 18.1;
Visual Studio 2010.

1、初始化

打开系统命令管理器cmd,定位到init_hls.bat的路径,并运行

d:
cd D:\intelFPGA\18.1\hls
init_hls.bat

在这里插入图片描述

2、编写测试文件

在桌面新建项目hls_prj,创建temp.cpp,编写如下乘法器代码:

#include “HLS/hls.h”
#include “stdio.h”

component int mul(int a,int b)
{
int c =0;
c = a*b;
return c;
}
int main()
{
int a=0,b=0,c=0,i=0;
for(i=0;i<5;i++)
{
a= i+1;
b= i+2;
c = mul(a,b);
printf("%d * %d = %d\n",a,b,c);
}
return 0;
}

3、编辑测试文件

切换到刚刚新建的工程目录

cd D:\Desktop\hls_prj\temp\temp
i++ -march=x86-64 -o mul.exe temp.cpp 

运行mul.exe文件

mul.exe

在这里插入图片描述
生成镜像文件

i++ -march=CycloneV -o mul test.cpp -ghdl

在这里插入图片描述
继续运行mul.exe文件,产生波形文件vsim.wlf

mul.exe

在这里插入图片描述
查看报告
在这里插入图片描述
报告内容如下
在这里插入图片描述
打开波形文件
在这里插入图片描述
在这里插入图片描述

4、HLS-IP核的工程建立

4.1、新建quartus项目

在这里插入图片描述

4.2、导入自编辑IP核

Tools–>Options–>IP Setting–>IP Catalog Search Locations

在这里插入图片描述

4.3、HLS-IP核的添加

添加生成的qsy文件
在这里插入图片描述
找到已经添加的IP核
在这里插入图片描述
双击mul IP核,在弹出的框中,点击generate HDL
在这里插入图片描述
在弹出新的对话框,点击generate,一直点击退出,直到最后一层,点击finish。
在这里插入图片描述

5、模块实例化

在之前创建的工程中,新建Verilog文件,命名为hls
双击之前打开的qsy文件
点击generate->Show instantination Template
在这里插入图片描述
copy其中的内容加入到编写的hls.v文件中,并进行实例化
在这里插入图片描述

编译测试代码:双击Analysis & Synthesis,编译成功后,生成测试文件。
在这里插入图片描述
在这里插入图片描述
此时HLS工程创建完毕。

参考链接
https://blog.csdn.net/weixin_45888898/article/details/117372276
https://blog.csdn.net/u010835747/article/details/112141781

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值