0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA其实很简单?看完这篇文章你就明白了

454398 2023-02-02 14:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

FPGA 是一堆晶体管,你可以把它们连接(wire up)起来做出任何你想要的电路。它就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。

从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,它实际上是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。FPGA 可以模拟任意电路,但它们实际上只是在模仿,就像软件电路仿真器模拟电路一样。这个答案不恰当的地方在于,它过分简化了人们实际使用 FPGA 的方式。接下来的两个定义能更好地描述 FPGA。

电路模拟是 FPGA 的经典主流用例,这也是 FPGA 最早出现的原因。FPGA 的关键在于硬件设计是用 HDL 形式编码的,而且买一些便宜的硬件就可以得到和 ASIC 相同的效果。当然,你不可能在 FPGA 和真正的芯片上使用完全相同的 Verilog 代码,但至少它们的抽象范围是一样的。

这是与 ASIC 原型设计不同的一个用例。和电路仿真不同,计算加速是 FPGA 的新兴用例。这也是微软最近成功加速搜索和深度神经网络的原因。而且关键的是,计算实例并不依赖于 FPGA 和真正 ASIC 之间的关系:开发人员针对基于 FPGA 的加速编写的 Verilog 代码不需要与用来流片的 Verilog 代码有任何的相似性。

这两种实例在编程、编译器和抽象方面存在巨大差异。我比较关注后者,我将其称为「计算 FPGA 编程」(computaTIonal FPGA programming)。我的论点是,目前计算 FPGA 的编程方法都借鉴了传统的电路仿真编程模型,这是不对的。如果你想开发 ASIC 原型的话,Verilog 和 VHDL 都是正确的选择。但如果目标是计算的话,我们可以也应该重新思考整个堆栈。

让我们开门见山地说吧。FPGA 是一类很特殊的硬件,它用来高效执行模拟电路描述的特殊软件。FPGA 配置需要一些底层软件——它是为了 ISA 编写的程序。

可以用 GPU 做类比

深度学习区块链盛行之前,有一段时间 GPU 是用来处理图形的。在 21 世纪初,人们意识到他们在处理没有图形数据的计算密集型任务时,也会大量使用 GPU 作为加速器:GPU 设计师们已经构建了更通用的机器,3D 渲染只是其中一个应用而已。

FPGA 的定义以及和 GPU 的类比

计算 FPGA 遵循了相同的轨迹。我们的想法是要多多使用这一时兴的硬件,当然不是为了电路仿真,而是利用适合电路执行的计算模式,用类比的形式来看 GPU 和 FPGA。

为了让 GPU 发展成今天的数据并行加速器,人们不得不重新定义 GPU 输入的概念。我们过去常常认为 GPU 接受奇特的、强烈的、特定领域的视觉效果描述。我们实现了 GPU 执行程序,从而解锁了它们真正的潜力。这样的实现让 GPU 的目标从单个应用域发展为整个计算域。

我认为计算 FPGA 正处于类似的转变中,现在还没有针对 FPGA 擅长的基本计算模式的简洁描述。但它和潜在的不规则并行性、数据重用以及大多数静态的数据流有关。

和 GPU 一样,FPGA 也需要能够体现这种计算模式的硬件抽象,Verilog 用于计算 FPGA 的问题在于它在低级硬件抽象中效果不好,在高级编程抽象中的效果也不好。让我们通过反证法想象一下,如果用 RTL(寄存器传输级)取代这些角色会是什么样。

甚至 RTL 专家可能也无法相信 Verilog 是可以高效开发主流 FPGA 的方式。它不会把编程逻辑推向主流。对于经验丰富的硬件黑客来说,RTL 设计似乎是友好而熟悉的,但它与软件语言之间的生产力差距是不可估量的。

事实上,对现在的计算 FPGA 来说,Verilog 实际上就是 ISA。主要的 FPGA 供应商工具链会将 Verilog 作为输入,而高级语言的编译器则将 Verilog 作为输出。供应商一般会对比特流格式保密,因此 Verilog 在抽象层次结构中会处于尽可能低的位置。

把 Verilog 当做 ISA 的问题是它和硬件之间的距离太远了。RTL 和 FPGA 硬件之间的抽象差距是巨大的,从传统角度讲它至少要包含合成、技术映射以及布局布线——每一个都是复杂而缓慢的过程。因此,FPGA 上 RTL 编程的编译 / 编辑 / 运行周期需要数小时或数天,更糟糕的是,这是一个无法预测的过程,工具链的深层堆栈可能会掩盖 RTL 中的改变,这可能会影响设计性能和能源特性。

好的 ISA 应该直接展示底层硬件未经修饰的真实情况。像汇编语言一样,它其实不需要很方便编程。但也像汇编语言一样,它的编译速度需要非常快,而且结果可预测。如果想要构建更高级的抽象和编译器,就需要一个不会出现意外的低级目标。而 RTL 不是这样的目标。

如果计算 FPGA 是特定类算法模式的加速器,那当前的 FPGA 并不能理想地实现这一目标。在这个游戏规则下能够击败 FPGA 的新硬件类型,才可能带来全新的抽象层次结构。新的软件栈应该摒弃 FPGA 在电路仿真方面的遗留问题,以及 RTL 抽象。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1663

    文章

    22494

    浏览量

    638984
  • 芯片
    +关注

    关注

    463

    文章

    54389

    浏览量

    469045
  • 电路
    +关注

    关注

    173

    文章

    6086

    浏览量

    178814
  • RTL
    RTL
    +关注

    关注

    1

    文章

    395

    浏览量

    62866
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PCB别人包地包地,但别人的隔离度比你好10dB不止

    地的场景,其实做的东西倒很简单,就是在两根高频单端线挪到一定的距离后(15H左右的gap距离),看看包地和不包地对隔离度的影响。不包地是这样的: 包地是这样的: 再强调一次,包地和不包地的两根高频线
    发表于 04-13 11:21

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 204次阅读
    使用Python/MyHDL创建自定义<b class='flag-5'>FPGA</b> IP

    气密性检测仪选购指南:直压、差压、容积法的本质区别与实战选择

    选型很多工程师在选购气密性检测设备时都会困惑:同样是测泄漏,为什么常用的就有三种检漏方法?到底哪一种最适配自己的产品?今天我们一次性把这个问题讲明白。选型的核心逻辑其实很简单:•有孔产品→直压法
    的头像 发表于 04-02 12:03 1137次阅读
    气密性检测仪选购指南:直压、差压、容积法的本质区别与实战选择

    高速PCB谐振威力,不容小觑

    平面谐振的关键就是这个铜环! 验证的方法也很简单:在原设计的基础上,仅切掉信号孔周边电源平面环,其它不变。 仿真结果显示,插损的下冲再次消失,问题精确定位。 为了大家能看的更明白,我们还对比了铜环
    发表于 02-03 14:36

    系统调用和API有什么区别呢?

    使用这些功能。 从这个角度讲菜单就是餐厅给你提供的“API”,有菜单后能开始点菜,至于这些菜是怎么炒出来的根本就不需要关心;手柄就是游戏给你提供的“API”,只需要
    发表于 12-03 06:52

    Linux 下交叉编译实战:跑起来的第一个 STM32 程序

    很多开发者第一次接触STM32,总会被“交叉编译”、“烧录程序”等概念绕晕。其实方法很简单:在Linux下配置交叉编译环境,编写简单程序,然后烧录到STM32,就可以看到成果。本文带
    的头像 发表于 11-24 19:04 1037次阅读
    Linux 下交叉编译实战:跑起来<b class='flag-5'>你</b>的第一个 STM32 程序

    嵌入式与FPGA的区别

    \"嵌入式开发门槛低、就业广,适合转行;FPGA技术深、薪资高,但要求学历和数学功底。选哪个?看你的基础和职业目标。\" ⭕我们先来明白下两者区别在哪? ✅1、嵌入式:分两部分
    发表于 11-20 07:12

    广州邮科模拟量光端机,到底是啥神器?一篇文章给你讲明白

    ? 广州邮科模拟量光端机 别急,今天咱们就来聊聊解决这个难题的“专业选手”—— 广州邮科模拟量光端机 。这名字听着挺技术,但其实理解起来很简单,它就是信号传输界的“超级快递员”! 首先,咱得弄明白:模拟量光端机是干
    的头像 发表于 10-30 09:38 411次阅读
    广州邮科模拟量光端机,到底是啥神器?一篇文章给你讲<b class='flag-5'>明白</b>!

    小白也能秒懂!迈威通信教你分清网络二层和三层

    还在为网络里的二层、三层概念头大?其实就像送快递那么简单!今天迈威通信用最接地气的方式给你讲明白
    的头像 发表于 09-04 20:07 1253次阅读
    小白也能秒懂!迈威通信教你分清网络二层和三层

    FPGA技术为什么越来越牛,这是有原因的

    最近几年,FPGA这个概念越来越多地出现。例如,比特币挖矿,就有使用基于FPGA的矿机。还有,之前微软表示,将在数据中心里,使用FPGA“代替”CPU,等等。其实,对于专业人士来说,
    的头像 发表于 08-22 11:39 5198次阅读
    <b class='flag-5'>FPGA</b>技术为什么越来越牛,这是有原因的

    AI狂飙, FPGA会掉队吗? (下)

    ;新工艺新接口:视频接口,测试测量等。有那么多的机会,FPGA怎么不上天呢?其实FPGA真上天,在每一台火星车上,几乎都有宇航级FPGA
    的头像 发表于 08-11 09:25 4137次阅读
    AI狂飙, <b class='flag-5'>FPGA</b>会掉队吗? (下)

    养生壶主板用的是阻容降压,拆一个养生壶,自己画了电路图,解释不通,没看明白原理?

    养生壶主板用的是阻容降压,拆一个养生壶,自己画了电路图,解释不通,没看明白原理?
    发表于 08-01 00:29

    FPGA调试方式之VIO/ILA的使用

    在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供
    的头像 发表于 06-09 09:32 4331次阅读
    <b class='flag-5'>FPGA</b>调试方式之VIO/ILA的使用

    FPGA从0到1学习资料集锦

    附开发指南+电路图集+例程源码 本文叙述概括 FPGA 应用设计中的要点,包括,时钟树、FSM、latch、逻辑仿真四个部分。 FPGA 的用处比我们平时想象的用处更广泛,原因在于其中集成的模块
    发表于 05-13 15:41

    使用gpif designer fx2lp在CTL0中生成波形来连接FPGA 以便从FPGA获取数据,为什么不能正常工作?

    我想使用gpif designer fx2lp 在CTL0 中生成波形来连接FPGA 以便从FPGA 获取数据。 它在 CTL0 的下降沿逐帧获取数据。 每帧有 32 个脉冲,但是当我这样配置时,它不能正常工作。 我不明白。 我
    发表于 05-06 13:01