学习FPGA之四:FPGA开发方法

这篇具有很好参考价值的文章主要介绍了学习FPGA之四:FPGA开发方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        FPGA是一个很特殊的芯片,可能在2个月前,我还对它一无所知。我们熟知的芯片都是CPU,GPU,或者知道ASIC的概念。但实际上,FPGA已经走过了30个年头,它目前已经成为一个包含各种先进电路,逻辑单元,接口,芯片封装,制造等技术的“集大成者”。在硬件不断发展的同时,FPGA的开发软件和设计工具也在不断迭代和更新。基于硬件描述语言HDL,抽象出HLS(High-Level Synthesis)(翻译为高层次综合?怎么听起来都沉得别扭)技术,通过高层设计去隐藏很多底层逻辑和细节,让FPGA的开发更加简单。即使这样,FPGA的开发还是同CPU,GPU不一样,它需要设计者在一定程度上了解FPGA的内部架构,这样才能引导高层语言综合工具睡时到优化的系统性能。       

一:开发FPGA的痛点

        首先,FPGA的体量非常大,大得惊人,英特尔最新的Stratix10 GX 10M 有 433亿只晶体管,1020万个可编程逻辑单元,以及2304个可编程的I/O接口。这些数量庞大的晶体管组成了大量的可编程逻辑单元和查找表结构,大量运算单元,各种类型和大小的内存资源,高速串行I/O,多个嵌入式处理器,还有成百上午种不同功能的软核和硬核IP。因为可编程,可以通过定制实现极高吞吐量和极低的功耗。

        当这么多硬件资源都集成到了一个芯片上,用户如何对这些硬件进行编程呢?

通常来说,我们要解决一个复杂问题,常用的办法就是分解任务,我们需要划分清楚哪些是在硬件上完成,哪些通过软件完成。在FPGA,这种分解非常困难和复杂。例如:哪部分用编程逻辑(硬件),哪部分使用片上的芯片。如何合理分配片上内存,内不足时,如何优化……

        如何降低FPGA的开发难度,EDA软件一定要好用,所以,不管英特尔还是赛灵思,包括我了解的一个新创团队,都会在EDA软件团队上做大力投入,甚至做EDA软件开发的人员要多于FPGA本身的工程师数量。另外,业界也出现了大量的第三方公司,负责FPGA设计咨询公司,IP提供商,外包公司等……,业务已经发展产生了很多特定的分工。

        当前,FPGA还在进入更多的市场,比如:嵌入式应用,5G和汽车市场,这些领域中的大多数开发团队都没有FPGA相关的设计专业知识和经验。而且,他们更多是纯软件开发,更多依赖于人工智能技术。这些也使得FPGA的开发难度被放大。

二:HLS——让软件工程师开发FPGA

        HLS指的是通过EDA工具,将描述的逻辑结构转换成低抽象级语言描述的电路模型的过程。

        这里,我不得不再强调一下HLS的概念,因为记不住,搞不太懂。

        High-Level Synthesis 简称:HLS 指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。有点象我们软件领域讲的 Java 语法在运行时,根据不同的机器翻译成不同的机器字节码。所谓高层次语言,通常指的是 C,C++,SystemC等,通常有点较高的抽象度,并且往往不具有时钟或时序的概念,相比之下,诸如Verilog,VHDL,SystemVerilog等低层次语言,通常用来描述时钟周期精准的寄存器传输级电路模型,这也就是当前ASIC或者FPGA设计最为普遍使用的电路建模和描述方法。 

        为什么要使用HLS?

        1: 这是一个趋势。因为集成电路的复杂度太高,已经逐渐超过人类可以手工管理的范畴。使用RTL代码,代码行过多,不现实。而使用C,C++ 等高层语言,可以将代码缩至10%。

   根据NEC2004年发布的研究,一个拥有100万逻辑门的芯片设计通常要编写30万行RTL代码。

        2: 高层语言更善于复用,特别是对于IP的重用。

        因为传统的RTL的IP 往往需要定义固定的架构和接口标准,在IP重用时,需要大量的时间运行系统互联和接口验证。高层语言屏蔽了这些要求,转而由HLS工具具体来负责完成。现代FPGA有大量的IP单元,这些IP有固定功能,一定需要大量复用。

        3: HLS能帮到软件和算法工程师参与主导芯片设计,这是因为HLS能够屏蔽实现细节。对于硬件工程师,HLS也能帮助他们快速设计迭代,专注于性能,面积或功耗模块,不用关注上层的算法实现。

        我们在谈HLS前,先看看RTL的发展:

        通过描述寄存器到寄存器之间的逻辑功能描述电路的HDL层次。 RTL比门级更高的抽象层次,使用RTL级语言描述硬件电路一般比门级描述简单高效得多。这个时期,工程师们都在关注RTL。

        HLS经过发展,产生了以C++ 为主的目标语言,从而被很多不少不了解RTL的工程师所接受。而且,HLS在性能上也近似RTL的水平。

        到现在,英特尔,赛灵思,包括多伦多大学都推出了各自的HLS工具。

        其中比较成功的工具是AutoPilot,    

学习FPGA之四:FPGA开发方法

        前端,它使用了LLVM的编译器架构,能够使用C,C++,OSCI SystemC等语言,使用llvm-gcc编译器将高层语言模型转换为IR,优化后,再根据具体的硬件平台,生成RTL代码。

        AutoPilot在某些领域完胜人工优化RTL的结果。说明了HLS的潜力。

        HLS的主流优化方法有以下几种:

        1: 字长分析和优化。

        FPGA的一个最主要特点可以使用任意字长,所以 HLS工具也不需要拘泥于某种固定的长度。好处呢,对性能提升和面积缩减有帮助。

        2: 循环优化

学习FPGA之四:FPGA开发方法        

        可以使用多面体模型来达成循环优化,可以帮助实现性能和面积优化,同时也能帮助提升内存的使用效率。 

        3: 对并行的支持。

        RTL是可以直接实例化成多个运算单元并行执行的,C/C++ 一开始是顺序执行,但后面也引入的并行支持。如:pthreads和OpenMP等多线程并行编程方法,以及OpenCL等针对GPU异桅系统进行并行编程的扩展。

        作为HLS工具,一定要支持并行。比如:lgeup就整合了对pthead,OpenMP的支持。英特尔推出了OpenCL SDK,将其引和HLS,并生成FPGA硬件电路逻辑和CPU代码两部分,从而实现FPGA作为硬件加速模块的快速开发。        

        尽管如此,HLS要完全替代人工的RTL建模,还有很长的路要走。对于FPGA而言,内存瓶颈是制约性能的关键要素,所以,如何有效利用片上和片外的各类存储单元,是HLS的研究热点。

        P4 语言是实现SDN 的重要手段,所以,新型的FPGA开发工具,需要对P4进行编译和支持。

三:商业级的开发工具

3.1  赛灵思Vitis 开源开发工具

        Vitis花费了 1000人.年的开发工作量。

        Vitis的核心架构示意图如下:

学习FPGA之四:FPGA开发方法

3.2 英特尔oneAPI 

        OneAPI 可以针对英特尔的所有芯片进行编程。

        英特尔将旗下的芯片分成了SVMS四类:

        标量架构(Scalar):CPU

        矢量架构(Vector):GPU

        短阵架构(Matrix):AI芯片

        空间架构(Special):  FPGA.

四:业界看法

        业界普遍认为,GPU之所以在人工智能获得成功,很大程度上取决于对软件和算法工程师的友好。而FPGA虽然在不断扩展应用范围,在性能和功耗上也不比GPU差,但是,它的编程仍然是以RTL开发为主,这对开发者并不算友好。

        所以,FPGA在HLS上的发展和突破,可能是FPGA能否有更广泛应用的最后一块拼图。文章来源地址https://www.toymoban.com/news/detail-463530.html

到了这里,关于学习FPGA之四:FPGA开发方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA学习笔记-1 FPGA原理与开发流程

    注:笔记主要参考: B站 正点原子 教学视频“正点原子手把手教你学FPGA-基于达芬奇Pro开发板 Artix-7 XC7A35T/XC7A100T”。 小梅哥爱漂流 教学视频“【零基础轻松学习FPGA】小梅哥Xilinx FPGA基础入门到项目应用培训教程”。 B站搬运 “特权同学2020版《深入浅出玩转FPGA视频教程》

    2024年02月05日
    浏览(37)
  • FPGA 开发必备:从零开始学习 FPGA 设计

    FPGA 开发必备:从零开始学习 FPGA 设计 FPGA 是一种可编程逻辑器件,可以在不用重新设计硬件电路的情况下修改其功能。它是数字电路设计中最重要的组成部分之一。FPGA 的广泛应用领域包括通信、计算机、图像处理、音频处理等。 要想成为一名合格的 FPGA 工程师,你需要了

    2024年02月07日
    浏览(45)
  • Qt学习:Qt 进程和线程之四,线程实际应用

    为了让程序尽快响应用户操作,在开发应用程序时经常会使用到线程。 对于耗时操作如果不使用线程,UI 界面将会长时间处于停滞状态,这种情况是用户非常不愿意看到的,我们可以用线程来解决这个问题。 大多数情况下,多线程耗时操作会与 UI 进行交互,比如:显示进度

    2024年02月13日
    浏览(30)
  • C++学习笔记之四(标准库、标准模板库、vector类)

    C + + C++ C + + 标准库指的是标准程序库( S t a n d a r d Standard St an d a r d L i b a r a y Libaray L iba r a y ),它定义了十个大类,其中包括我们比较熟悉的 i o s t r e a m , s t r i n g iostream, string i os t re am , s t r in g 都是这十个大类的其中一个类中的一个小类。而 c + + c++ c + + 的标准模板库也

    2024年02月07日
    浏览(28)
  • FPGA/Verilog HDL/AC620零基础入门学习——第一个项目按键控制LED

    最近要考试了,所以我赶紧补习FPGA,我们用的是小梅哥的AC620开发板,软件是Quartus。推荐看这个视频教程:零基础轻松学习FPGA,小梅哥FPGA设计思想与验证方法视频教程 用按键控制LED灯的亮灭就是一个二选一多路器,两个IO,a、b,可以是高电平,也可以是低电平。 输入按键

    2024年02月05日
    浏览(43)
  • FPGA-DFPGL22学习2-开发平台学习

    @和原子哥一起学习FPGA 开发环境:正点原子 ATK-DFPGL22G 开发板 参考书籍: 《ATK-DFPGL22G之FPGA开发指南_V1.1.pdf》 个人学习笔记,欢迎讨论 新建一个文件夹用于存放自己的 PDS 工程 新建一个 Verilog 顶层文件,然后将设计的代码输入到新建的 Verilog 顶层文件中 关联了一下打开Veri

    2024年02月07日
    浏览(31)
  • [FPGA 学习记录] 快速开发的法宝——IP核

    快速开发的法宝——IP核 在本小节当中,我们来学习一下 IP 核的相关知识。 IP 核在 FPGA 开发当中应用十分广泛,它被称为快速开发的法宝。在本小节当中,我们将和各位朋友一起来学习了解 IP 核的相关知识、理解掌握 IP 核的调用方法。 我们分为以下几个部分进行 IP 核的学

    2024年02月05日
    浏览(34)
  • 云计算:从基础架构原理到最佳实践之四:云计算环境中负载均衡的实现方法

    作者:禅与计算机程序设计艺术 云计算(Cloud Computing)作为一种新的经济发展方式,颠覆了传统IT部门所承担的物理服务器、存储设备等基础设施的运营管理工作。借助网络的快速发展,云计算不断吸纳新型应用软件、数据服务等资源,迅速扩充服务器资源。同时,也催生了

    2024年02月08日
    浏览(27)
  • 在FPGA开发板上实现一个自适应滤波器,只需要输入于扰信号和期望信号(混合信号)即可得到滤波输出

    基于FPGA的自适应滤波器FIR IIR滤波器LMS NLMS RLS算法 FxLMS 分数阶 2023年H题 本设计是在FPGA开发板上实现一个自适应滤波器,只需要输入于扰信号和期望信号(混合信号)即可得到滤波输出,使用非常简单。 可以根据具体需要对滤波器进行定制,其他滤波器如FIR IIR滤波器等也可以制

    2024年03月18日
    浏览(61)
  • 【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之数码管静态显示(四)

      本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 适用于板卡型号: 紫光同创PGL22G开发平台(盘古22K) 一:盘古22K开发板(紫光同创PGL22G开发平台)简介 盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板

    2024年02月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包