FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

学FPGA(从Verilog到hls)

二牛学FPGA二牛学FPGA
技术分享
10个月前
0
0
358

hls,全称为high level synthesis。也就是说从更高一级的语言来完成电路的综合。从前,编写fpga只有一个方法,都是编写verilog类似的硬件语言。但是如何用c、c++编写可综合的逻辑,这就变得很重要了,毕竟c、c++工程师比fpga的工程师要多得多。

1、hls的重要性

从某种意义上,hls会极大拓展目前fpga的应用领域。相比较mcu、arm soc来说,fpga目前还是集中于信号采样、数字信号处理、模数转换这些场景。但是在目前比较兴起的人工智能领域,fpga着墨不多,一个相反的例子就是gpu。从前gpu只是一个图形加速器,后来连续在游戏和人工领域不断发力,使得gpu的应用领域越来越多,关联公司的规模也越来越大。

2、c语言和并发的悖论

c语言本身是一个串行代码,它和并发并不完全一致,从这方面来说,可以看成一个周期为1的特殊fpga代码。所以,在设计的过程中,难点不在于语言本身,而是在于并行的思维。c语言本身不直接变成网表,也是先变成verilog语言,再转成网表的。要实现这一步,就要在c语言上做一些修改和限制,这就是hls的初衷。

3、verilog和waveform不能丢

此外,hls改造后,如何判断hls是不是想要的效果,除了看综合效果后,也需要看对应的waveform,这点无可取代。不要指望代码编写好,就有一个立马的性能改善效果。

4、先编写c代码,再优化hls

对于软件工程师来说,先保证c逻辑没问题,再一步一步优化。优化的方法基本就是添加各种directive,也就是pragma标志。基本方法是三种,1、边收集数据边处理;2、并发;3、流水线。本质上都是各种串行限制,减少算法的latency。

5、hls仍然需要时序图、波形图设计

hls一般都是默认做串行处理,比如下面一段代码,

for(int i = 0; i < 10; i++)
{
b[i] = a[i] + c + d;
}

如果没有任何的说明,那基本上就是loop body里面的运算代码顺序执行10次。如果需要进行显式的加速,可以把循环打开、用pipeline,这样基本就可以加速处理。加速不是没有代价的,基本的方法都是空间换时间,这中间有一个权衡,算法可能快了,但是资源也可能不够了。一个巧妙的办法,就是先设计图形,等testbench的时候,把测试的图形和设计的图形进行对比,这样就可以达到事半功倍的效果,不过度优化也是很重要的。

6、注意接口、内存、hls提供的函数

hls怎么和bus接口沟通,函数里面的内存怎么映射,这里面hls都提供了很好的方法。此外,对于一般的函数功能,hls也提供了对应的优化,尤其是opencv提供的一些函数,hls都有对应的版本。

7、学习hls的另一个思路

如果需要把fpga应用到更多的场合,那么hls至少从目前来说还是必由之路。

ps:

很多人可能很难理解,既然fpga做算法这么烦,为什么还要用。我想主要还是因为低频的fpga算法性能可以和数倍于自己的soc一样好,电路相对还简单一点,成本、供应链也没那么紧张。尤其是对于非标产品来说,特别合适。

标签:
本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/9598.html
分享:
2024年夏令营学员项目代码展示(基于FPGA的广告点阵屏)
2024年夏令营学员项目代码展示(基于FPGA的广告点阵屏)上一篇
FPGA - 基于FPGA的HDMI显示下一篇
FPGA - 基于FPGA的HDMI显示
相关文章
总数:1.22K

基于FPGA的SPI Flash控制器:2026年高速读写时序设计

QuickStart步骤1:准备硬件平台(如XilinxArtix-7/Zynq-7000系列开发板,板载SPIFlash型号如W25…
二牛学FPGA二牛学FPGA
技术分享
22天前
0
0
58
0

FPGA学习路径指南:从时序图理解到独立调试的实践方法

QuickStart:最短路径从时序图到独立调试FPGA学习的关键在于理解时序图并能够独立调试。以下步骤可以帮助你快速入门:准备一台装有Vi…
二牛学FPGA二牛学FPGA
技术分享
1个月前
0
0
59
0

从零搭建FPGA开发环境:Vivado与开源工具链对比实践指南

QuickStart(快速上手)步骤一:选择目标平台。若使用Xilinx/AMD7系列或UltraScale+器件,选择Vivado;若使用…
二牛学FPGA二牛学FPGA
技术分享
11天前
0
0
33
0

Vivado 中 set_max_delay 约束的设计与实施指南

QuickStart(快速上手)打开Vivado工程,确保已完成综合或实现,并加载了设计网表(.dcp)。在TclConsole中输…
FPGA小白FPGA小白
技术分享
22天前
0
0
32
0

FPGA仿真调试技巧:使用Modelsim高效定位Bug

QuickStart准备环境:安装ModelSim(SE/DE版)或QuestaSim,确认已添加至系统PATH。创建仿真目录:在工程根目录下…
二牛学FPGA二牛学FPGA
技术分享
26天前
0
0
36
0
FPGA竞赛通关指南:从选题到获奖,学长学姐的实战心得

FPGA竞赛通关指南:从选题到获奖,学长学姐的实战心得

一、竞赛认知:为什么说FPGA竞赛是大学里的“黄金跳板”?全国大学生集成电路创新创业大赛(集创赛)、FPGA创新设计邀请赛……这些名字…
FPGA小白FPGA小白
技术分享
2个月前
0
0
123
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
没有相关内容