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

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

3天内不再提示

何为FPGA

星星科技指导员 来源:mouser 作者:Adam Taylor 2023-05-09 10:22 次阅读

我们生活在一个由模拟构成的世界中。不过,数字处理的出现,为我们体验这个世界并与之互动带来了全新的方式,包括卫星导航、自动驾驶汽车、增强现实,当然还有那永远都离不了身的手机

要想实时或者准实时地处理那么多信息,就必须要有强大的处理能力,这样的处理能力显然是受益于摩尔定律的。对于设计工程师而言,他们也可以从多种处理技术中来进行选择,以便将最合适的技术运用到手边的应用中。这些处理技术涵盖了传统处理器、图形处理单元 (GPU) 和可编程逻辑 (PL)。

在上述处理技术中,可编程逻辑恐怕是最鲜为人知的一种,人们也往往认为它是用起来最具挑战性的处理技术之一。

可编程逻辑的优势

可编程逻辑能够让用户在真正意义上并行实现其算法和应用,从而创造出更具有确定性、响应更加迅速的解决方案, 因而适用于需要实时处理和响应的场景, 例如视觉和信号处理以及雷达等。

传统意义上,可编程逻辑器件可分为复杂可编程逻辑器件 (CPLD) 与现场可编程门阵列 (FPGA) 两种类别,其中CPLD基于“门海”(sea-of-gate) 的方式提供由寄存器和逻辑函数构成的简单器件结构。

至于FPGA,它提供的结构要比CPLD更加复杂,通常还会包含多种专用硬件元件,例如存储块、数字信号处理、时钟管理、千兆串行收发器和IO块。

FPGA的构成要素

FPGA的基本构成要素是查找表 (LUT)、寄存器和灵活IO单元结构, 其中LUT能够实现逻辑方程式,而寄存器则为实现顺序逻辑设计提供了必要的存储元件。LUT和寄存器结合在一起,即可实现通常所说的“逻辑片”,其简单示例如(图1)所示。现代器件中的这些逻辑片包含诸多选项,以便实现组合逻辑电路或时序逻辑电路,这些选项包括本地分布式内存,以及可通过配置将LUT用作移位寄存器的功能。

pYYBAGRZriOAFujgAABMhCvlpe4342.png

图1:简单的LUT结构

在FPGA器件中,通常将两个逻辑片组合在一起,形成可配置逻辑块 (CLB)。这些CLB相互连接,以便通过路由和交换矩阵实现必要的功能,如(图2)所示。

poYBAGRZrh-ACZOHAAE6SMo5y98758.png

图2:可通过交换矩阵配置路由块和互连。

FPGA设计

FPGA通常使用硬件描述语言 (HDL) 设计,其中最常见的两种是Verilog和VHDL。和传统的软件语言相比,这些语言需要在更加低级的层面上定义设计,它们具体描述的是寄存器级别上的传输,例如实现状态机、计数器等。VHDL和Verilog都固有地支持并发的概念,这是对FPGA架构的并行架构进行建模所必需的。此外,通过高级综合 (HLS) 使用C、C++或OpenCL等高级语言开发FPGA IP块的做法也正变得越来越普遍。虽然这些语言并不支持并行,但工程师可以使用编译器指令来指示并行结构, 而使用更高级的语言有助于工程师更快地完成开发和验证。

FPGA器件的IO结构可以直接对接各种IO标准,包括LVCMOS等单端标准以及LVDS、TMDS等差分标准, 但这种IO结构的“技能”可远不止于此—— 现代化的IO结构还可以实现片上端接、精细PS延迟,甚至SerDes结构。也就是说,FPGA有效地提供了各种对接接口,连接起了各种标准、定制或传统接口。这种灵活性还使系统设计人员摆脱了引脚绑定的束缚,这与使用带固定IO引脚分配的专用标准产品 (ASSP) 有着显著区别。

因此,要设计出可编程逻辑设计解决方案,需要执行以下步骤:

合成 – 将HDL设计转换为一系列逻辑方程,然后将其映射到目标FPGA中可用的资源上。
放置 – 把合成工具确定的逻辑资源放置到目标器件中的可用位置。
路由 – 使用路由和交换矩阵将设计中放置的逻辑资源互连,以实现最终应用。
位文件 – 生成目标FPGA的最终编程文件。

通过仿真,工程师可以确保他们实现的设计在功能上符合设计要求。他们可以创建激发RTL(寄存器传输级别)模块的测试平台,这些平台可以提供输入并监视结果输出,然后通过查看仿真波形来验证这些模块的行为,如(图3)所示。或者,他们也可以编写更复杂的测试平台,用来检查和验证输出。

poYBAGRZrhqAVBzeAAEa_AzCYzE824.png

图3:RTL仿真输出

尽管FPGA在性能和接口上具有显著优势,但开发基于FPGA的解决方案可能会比开发传统软件更加复杂。不过,我们有现代化的设计工具,尤其是高级合成工具以及各种可以免费获取的知识产权,并且现代化器件的功能也更加强大,这些都让“FPGA更难开发”成为了历史。

器件产品系列

如果您还不熟悉FPGA的历史,这里就先简单地介绍一下。FPGA是Ross Freeman和Bernard Vonderschmitt于1985年随着XC2064的发布而发明的, 这款FPGA先驱产品具有64个可配置逻辑块。今天,Xilinx的现代化器件可为用户提供893.8万个系统逻辑单元、3840个DSP元件、76Mb块内存和90Mb的UltraRAM——这与最初的产品相比堪称巨大飞跃。

当然,上面提到的器件是Xilinx现阶段最大型的FPGA产品,对许多应用而言确实有点杀鸡用牛刀了。为了帮助指导工程师选择适合其应用的FPGA,Xilinx提供了一系列FPGA和片上系统器件,这些器件能够支持多个不同系列的各种解决方案。

Xilinx围绕28nm节点开发了一系列成本优化型产品,总共提供三个不同的器件系列,均针对不同的用户需求进行了优化。

Spartan-7 FPGA – 该系列是广受欢迎的Spartan-6系列器件的后继产品,可为开发人员提供比旧技术45nm节点更高的性能和更低的功耗。Spartan-7还经过了I/O优化,在成本优化的FPGA产品组合中是一个引脚数量非常高的系列。
Artix-7 FPGA – 这是Xilinx 7产品线中的全新系列,针对收发器进行优化,具有6.6Gbps高速收发器。
Zynq-7000 SoC – 该系列在初次亮相时颇具革新意义,它为业界带来了将硬核Arm Cortex-A9处理器与FPGA架构相结合的新型器件。这种新型器件可以提供集成系统解决方案,并且具有功耗更低、解决方案整体体积更小、EMI显著降低等优势。

该产品组合中的器件可以支持从传感器融合到精确控制、图像处理和云计算等一系列应用。

高端解决方案

对于超高性能和更专业的应用,Xilinx提供了28nm、20nm和16nm三个技术节点上的Kintex和Virtex系列。随着UltraScale和UltraScale+系列器件的不断发展,其性能和功能得到了显著提高。

Kintex器件在三个技术节点上提供了不断提升的性能、逻辑资源和收发器:从Kintex器件中的6.55万个逻辑单元到Kintex UltraScale+器件中的11.43万个逻辑单元。它们提供GTH和GTY千兆收发器,分别支持高达16.3Gbps和32.75Gbps的数据传输速率。

Virtex是Xilinx FPGA中性能最高的系列。这些器件不仅提供多达893.8万个系统逻辑单元和58Gbps高速收发器,而且还支持高带宽存储器 (HBM)。该系列产品具有4GB至16GB的片上DRAM和高达460Gbps的带宽,其内存性能是DDR4 DIMM的约20倍。Virtex HBM器件适用于为网络和存储加速的应用。

工具链

Xilinx开发工具支持从最小的Spartan-7到最大的Virtex UltraScale+的所有器件, 涵盖了设计生命周期中的各个方面,从RTL捕获直到仿真以及开发用于处理器核心的软件。

Vivado设计套件 – Vivado可以对设计、RTL仿真以及合成、放置、路由和生成位文件的实施过程进行捕获。
Vivado HLS – 高级合成工具,让工程师能够使用C或C++来开发IP。
Vitis一体化软件平台 – Vitis支持嵌入式处理器的软件开发,以及使用OpenCL进行加速。
PetaLinux工具 – PetaLinux是用于嵌入式处理器的嵌入式Linux解决方案。

当然,您还可以选用其他各种商业和开源软件工具,它们涵盖了从合成到仿真的各个阶段;此外,同时支持仿真和形式验证的验证工具正变得越来越多。

审核编辑:郭婷

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

    关注

    1625

    文章

    21640

    浏览量

    601385
  • cpld
    +关注

    关注

    32

    文章

    1247

    浏览量

    169167
  • 寄存器
    +关注

    关注

    31

    文章

    5304

    浏览量

    119885
收藏 人收藏

    评论

    相关推荐

    何为 FPGA 开发紧凑高效的电源解决方案

    现场可编程门阵列 (FPGA) 越来越多地用于支持视频和图像处理、医疗系统、汽车和航空航天应用以及人工智能 (AI) 和机器学习 (ML) 中的高性能计算。为 FPGA 供电是一项复杂而关键的功能
    的头像 发表于 01-03 21:32 2295次阅读
    如<b class='flag-5'>何为</b> <b class='flag-5'>FPGA</b> 开发紧凑高效的电源解决方案

    何为FPGA

    随着科技的发展,技术提高产品性能要求越来越高,近几年可编程的门阵列(FPGA)技术发展迅速,其高度的灵活性,使其在通信、数据处理、网络、仪器、工业控制、军事和航空航天等领域得到越来越广泛的应用。在数
    发表于 07-11 15:14

    何为fpga bank连接VREF引脚

    如果我使用MCB(存储器控制模块)且VCCO3为1.8 V,如何连接spartan 6的bank3上的VREF引脚?如果VCCO1为3.3V并且没有使用MCB,我将如何连接斯巴达6的bank1上的VREF引脚,仅用于简单的用户I / O目的?以上来自于谷歌翻译以下为原文How would I connect the VREF pins on bank3 of a spartan 6 if I was using the MCB (memory control block) and the VCCO3 is 1.8 V. How would I connect the VREF pins on bank1 of a spartan 6 if VCCO1 is 3.3V and no MCB is being used, just for simple user I/O purposes?
    发表于 05-21 12:11

    FPGA怎么编程?需要FPGA做些什么?

    与典型的微控制器相比,现场可编程门阵列FPGA是一种能够提供更强性能和灵活性的器件,本文通过解答几个有关FPGA的常见问题——什么是FPGA、为什么我会需要FPGA、如
    发表于 08-02 06:17

    何为FPGA提供多个输入并从中收集相应的输出

    嗨, 我的输入位大小为8位。我想给出8位的所有输入组合,并为每个输入组合收集相应的输出。我需要将我的设计转储到多个板上,每次手动提供所有组合变得越来越困难。请告诉我如何立即提供所有输入并在FPGA上立即收集所有输出。请做必要的事情。先谢谢你。问候,Sushma。
    发表于 08-06 10:39

    为什么需要FPGA,如何为FPGA编程?

    本文通过与GPU对比,来搞懂FPGA的一些难点,解答几个有关FPGA的常见问题——什么是FPGA、为什么我会需要FPGA、如何为
    发表于 10-29 07:27

    Nexar如何为FPGA设计提供一种全新的方法?

     本文概述了开发这种系统所必须面对的各种设计挑战,并讲解了Altium公司的最新电子设计环境Nexar如何为FPGA设计提供一种全新的方法。这种方法不仅可将处理器有效地集成入FPGA之中,而且成为一种挖掘现有以及未来大容量、低成
    发表于 05-08 06:02

    何为FPGA选择合适的电源管理方案呢

    何为FPGA选择合适的电源管理方案0背景 当项目中FPGA选型已确定,开始设计电路原理图时,硬件工程师面临的首要问题就是:如何为项目所使用的的FP
    发表于 10-29 06:36

    何为 FPGA 供电寻找最佳解决方案

    如果使用多个单独的电源,增加时序控制芯片便可实现所需的上电/关断顺序。一个例子是 LTC2924,它既能控制 DC-DC 转换器的使能引脚来打开和关闭电源,也能驱动高端 N 沟道 MOSFET 来将 FPGA 与某个电压轨连接和断开。
    发表于 05-28 11:32 3438次阅读
    如<b class='flag-5'>何为</b> <b class='flag-5'>FPGA</b> 供电寻找最佳解决方案

    FPGA究竟是什么?真的能代替CPU架构吗?

    你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了。今天笔者就和大家聊聊何为FPGAFPGA主要应用场景是什么?有人说FPGA
    发表于 07-28 11:26 1.5w次阅读

    EDA工具如何为FPGA设计提供便捷高效的设计环境

    如今FPGA已进入硅片融合时代,集成了DSP、ARM等,这种混合系统架构需要更好的开发环境,如嵌入式软件工具OS支持、DSP编程、基于C语言的编程工具、系统互联、综合和仿真以及时序分析。
    发表于 01-25 14:53 1034次阅读

    何为FPGA的应用和设计提供功能最合适的产品和解决方案

    各种应用的推动,使FPGA发展到了一个关键点,它正在逐步取代其他技术,进入新的市场领域,因此,我们面临的挑战是不断创新,提供功能最合适的产品和解决方案。在我们规划第三代产品时,目的就是要提高客户各种应用软件和市场的效用,发挥可编程解决方案的巨大潜力。
    发表于 11-13 11:14 1052次阅读

    何为FPGA编写可综合的代码?

    一、Verilog 编码风格 (本文的语法高亮因为浏览器的缘故,所以不准确) 1.1 使用“`include编译器指令” 文件包含“`include编译器指令”用于在合成过程中将源文件的全部内容插入到另一个文件中。它通常用于包括全局项目定义,而无需在多个文件中重复相同的代码。另一个用例是将代码的一部分插入模块,如以下示例所示: // file test_bench_top.v // top-level simulation testbench module test_bench_top; `include “test_case.v” endmodule // file test_case.v initial begin //… end task
    的头像 发表于 05-23 14:51 1732次阅读

    篇1:如何为FPGA选择合适的电源管理方案

    何为FPGA选择合适的电源管理方案0 背景 当项目中FPGA选型已确定,开始设计电路原理图时,硬件工程师面临的首要问题就是:如何为项目所使用的的
    发表于 10-23 11:06 18次下载
    篇1:如<b class='flag-5'>何为</b><b class='flag-5'>FPGA</b>选择合适的电源管理方案

    何为 FPGA 开发紧凑而高效的电源解决方案

    作者:Jeff Shepard 投稿人:DigiKey 北美编辑 现场可编程门阵列 (FPGA) 正越来越多地用于支持视频和图像处理、医疗系统、汽车和航空航天应用以及人工智能 (AI) 和机器学习
    的头像 发表于 02-13 15:54 823次阅读
    如<b class='flag-5'>何为</b> <b class='flag-5'>FPGA</b> 开发紧凑而高效的电源解决方案