beat365·(中国)官方网站-手机版 Best App Store

/ EN
13922884048

技术交流

Technology Exchange
/
/

FPGA基础篇

发布时间:2024-02-17作者来源:beat365官方网站浏览:1194

图片

第1节 什么是FPGA

FPGA的全称为Field-ProgrammableGateArray,即现场可编程门阵列。

在开始学习FPGA之前,同学们首先应该清楚地了解FPGA的概念,明白FPGA到底是什么东西,可以用来做什么。FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。简而言之,FPGA就是一个可以通过编程来改变内部结构的芯片。直观来说,FPGA就是一个可以“改变”内部结构的芯片,而让这个芯片来实现怎样的功能,就需要通过编程即设计硬件描述语言,经过EDA工具编译、综合、布局布线成后转换为可烧录的文件,最终加载到FPGA器件中去,改变FPGA内部的连线,最终完成所实现的功能。此时的FPGA就可以认为是用来实现具体功能的一个粗糙的芯片。

稍微接触过硬件的人大概都听说过另一种集成电路芯片即单片机,那么FPGA与单片机在结构上有着怎样的差别呢?对于单片机而言,FPGA是一种微处理器,类似于电脑的CPU,一般是基于哈佛总线结构或者冯·诺依曼结构,前者将指令存储器与数据存储器分开,后者合并共同同一套存储器。(改进的哈佛结构使用两个独立的存储器模块(程序存储器和数据存储器),处理器只有一套总线,分时访问程序存储器和数据存储器,但是在处理器中有指令cache和数据cache将程序和数据分开(冯诺依曼结构中没有指令cache和数据cache),所以处理器仍然可以并步执行取指令和取数据,从这点看处理器仍然属于哈佛结构。

单片机用途广泛,多用于控制流水线上;FPGA的结构是查找表,它的结构比较复杂,相对应的它可以实现的功能也很强大,一般应用于通信接口设计、数字信号处理等比较高端的场合,而且FPGA还有一个特殊的应用场合,即ASIC的原型验证。

相较于专职专用的ASIC,FPGA工具在开发难度上降低了许多,并且大大缩短了开发周期,而且由于FPGA是可重复编程的,其研发成本与风险也要比ASIC减少许多,更适用于复杂多变的数据中心等应用。但是FPGA也不是[敏感词]的,优势有时候也是劣势。虽然FPGA相比于单片机、CPU等集成电路芯片拥有效率更高、功耗更低的特点,但是易于开发程度远远不如单片机、CPU;在数字芯片设计领域,FPGA虽然相比ASIC具有更短的开发周期与开发难度,但是其存在着成本过高、性能较差并且在资源的利用率上远不及ASIC等问题,不能真正的替代ASIC。

第2节 FPGA的结构

FPGA可编程的特性决定了其实现数字逻辑的结构不能像专用ASIC那样通过固定的逻辑门电路来完成,而只能采用一种可以重复配置的结构来实现,而查找表(LUT)可以很好地满足这一要求,目前主流的 FPGA 芯片仍是基于 SRAM 工艺的查找表结构。

在任意一款 FPGA 芯片说明书中可以查看到该器件具体的参数指标,其中包含可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式 RAM)的大小。当然仅仅依靠这些结构是构成不了 FPGA 的基本结构的,在芯片中还有其他众多部分,但是在比较 FPGA 时,上述结构是最重要的参考指标。在最底层的可配置逻辑模块(如片上的逻辑单元)上,存在着基本的两种部件:触发器和查找表(LUT),而触发器和查找表的组合方式不同,是各个 FPGA 家族之间区别的重要依据,并且查找表本身的结构也可能各不相同(有 4 输入或 6 输入或其他)。查找表(Look-Up-Table)简称为 LUT,其本质上就是一个 RAM。

目前 FPGA 内部中多使用 4输入的 LUT,每一个 LUT 可以看成一个有 4 位地址线的 RAM。当用户在 EDA 工具上通过原理图或硬件描述语言设计了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM 中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查找表操作,通过地址找到对应的 RAM 中的结果,最后将其输出。以实现数字逻辑 Y=A&B&C 的功能为例。如果是在专用 ASIC 中,为了实现该逻辑,逻辑门都已经事先确定好,Y 的输出值为两个逻辑与运算后的结果,其基本的实现结构如下图所示

图片

而在 FPGA 的结构中若要实现同样的逻辑功能,用户首先在 EDA 工具中使用硬件描述语言设计出“Y=A&B&C”逻辑代码,EDA 工具(QUARTUS 或其他开发工具)分析这一行代码,得出 A、B、C 在不同输入组合下(共 8 种),Y 的值分别是多少,其真值表如下表所示:

图片

然后软件工具将所有的结果写到查找表上,从而实现了该代码的功能。下图就是 FPGA 的实现基本结构。查找表就类似于一个 RAM,输入 A、B、C 则相当于地址,通过 A、B、C 的地址就得读到值赋给 Y 并输出

图片

第3节 更为复杂的FPGA架构

1985,赛灵思公司推出了[敏感词]块 FPGA 芯片—XC2064,最初的 FPGA 包含了 8×8=64 的逻辑块阵列和 85000 个晶体管,其门电路不超过 1000 个,且每个逻辑块由一个四输入的查找表和其它一些简单功能模块构成。FPGA 诞生之初由于其容量非常有限,因此只能用来执行一些相对简单的任务,如用来集中一些胶合逻辑或实现基本的状态机。

而在 22 年后,FPGA 行业两大巨头 Xilinx 和 Altera 公司纷纷推出了采用[敏感词] 65nm 工艺的 FPGA 产品,其门数量已经达到千万级,晶体管个数更是超过 10 亿个。在这 22 年间,FPGA 在紧跟半导体工艺进步的同时也推动了半导体的发展进程——2001 年采用 150nm 工艺、2002 年采用 130nm 工艺,2003 年采用 90nm 工艺,2006 年采用 65nm 工艺,而目前[敏感词]推出的 FPGA 产品更是已经使用上 10nm 工艺。随着技术的发展和工艺节点的进步,FPGA 的容量和性能在不断提高的同时,其功耗却不断的优化减少。2006 年以前四输入查找表一直被广泛使用,在一些高端器件可能会用上六输入、八输入或更多输入端口的查找表。而一个多输入的查找表又可以分解成较小输入的查找表,即能够分裂成许多更小的功能。例如一个八输入的查找表可以分解成两个四输入的查找表或分解成一个三输入加一个五输入的查找表。在实际的高端器件中,这种可编程构造可以描述相当于百万级(有时甚至千万级)的原始逻辑门。

在 FPGA 内部,有着“软内核”与“硬内核”之分。比如若利用 FPGA 的可编程性在芯片内部构造实现了一个计数器逻辑,那么在构造计数器逻辑过程中使用到的功能便可以被称为“软功能”,又称之为软内核。而如果某个功能若是直接利用芯片实现的,则是利用了芯片内部的“硬功能”,一般又称之为硬内核。==软内核与硬内核之间优势互补,软内核的优势在于可以在利用芯片资源的基础上利用编程设计让其完成需要实现的任何功能(注意是数字功能,不包括模拟功能)。而硬内核由于是实现固定功能的器件,因此其优势在于资源利用率高且功耗较低,占用硅片的面积也较小,并具有较高的性能。而两者最重要的区别在于:与软内核相比硬内核可用于实现模拟功能,例如锁相环的倍频功能,这个功能需要在模拟电路下实现,所以这一部分是在 FPGA 内部用硬件来实现的。

第4节 带嵌入式处理器的FPGA

在上文中提到“软内核”与“硬内核”的概念,而利用 FPGA 的可编程构造实现的事情之一即为使用其中的一部分数字逻辑资源制作一个或多个软处理器内核,当然,也可以实现不同规模的处理器。

举例来说,可以创建一个或多个 8 位的处理器加上一个或多个 16 位或 32 位的软处理器,而所有处理器都在同一器件中。而如果 FPGA 供应商希望提供一个占用较少硅片面积、消耗较低功率但性能更高的处理器,解决方案是将其实现为硬内核。如果需要高速、高性能的处理器,并且需要实现逻辑编程时,传统的方法是在电路板上放置处理器(如 ARM、DSP 等)和 FPGA,ARM 或者 DSP 工程师实现软件部分,FPGA 工程师实现可编程逻辑部分,两者协同合作。

现在[敏感词]的方案是使用 ZYNQ 一个芯片以更低的功耗、更高的速度实现以上功能。在 2010 年 4 月硅谷举行的嵌入式系统大会上,赛灵思发布了可扩展处理平台的架构详情,这款基于无处不在的 ARM 处理器的 SoC 可满足复杂嵌入式系统的高性能、低功耗和多核处理能力要求。赛灵思可扩展处理平台芯片硬件的核心本质就是将通用基础双 ARM Cortex-A9 MP Core 处理器系统作为“主系统”,结合低功耗 28nm 工艺技术,以实现高度的灵活性、强大的配置功能和高性能。由于该新型器件的可编程逻辑部分基于赛灵思 28nm 7 系列 FPGA,因此该系列产品的名称中添加了“7000”,以保持与 7 系列 FPGA 的一致性,同时也方便日后本系列新产品的命名。

考虑下面所示这个例子

图片

这个芯片完全以硬内核方式实现的双路 ARM Cortex-A9 微控制器子系统(运行时钟高达 1GHz,包含浮点引擎,片上缓存,计数器,定时器等)以及种类广泛的硬内核接口功能(SPI,I2C,CAN

等),还有一个硬内核的动态内存控制器,所有这些组件都利用大量传统的可编程构造和大量的通用输入输出(GPIO)引脚进行了性能增强。如果是 ZYNQ 单芯片方案,是不是意味着只需要软件工程师或者 FPGA 工程师独立工作就可以了呢?目前所了解的情况是:FPGA 工程师负责搭建周边电路,如 ARM 的接口、时钟配置等,还负责可编程逻辑部分的开发。而软件部分仍然还是软件工程师负责。其主要原因在于 FPGA 逻辑开发和软件开发都是专业性比较强的技能,非常少的工程师能同时掌握这两个技能。当然,这里说的掌握性能,是专业性的、能应用到企业项目的技能,只是接触一下的不算。

第5节 数据存储以及配置分方式

随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的[敏感词]区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

在 FPGA 内部存在着存储单元片内 RAM 块,数据是存放在 RAM 中并由其来设置工作状态的,若想要 FPGA 进行工作,就需要对片内 RAM 进行编程。而如果外部有大量数据交互时,就要通过增

加外设来对数据进行暂时性的存储,如 SDRAM 存储器或者 DDR3 存储器,暂存在外设中的数据最终也是要通过 FPGA 内部的 RAM 进行存储与处理。

当在 EDA 工具上将程序设计完成之后,便需要将软件上的程序烧录进 FPGA 内部。通过不同的配置模式,FPGA 便会有不同的编程方式。以下为常用的几种配置模式

1、并行模式:通过并行 PROM、Flash 配置 FPGA;(将文件放置到PROM以及Flash中去,然后在把数据放置到FPGA)

2、主从模式:使用一片 PROM 配置多片 FPGA;

3、串行模式:串行 PROM 配置 FPGA;

4、外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。

图片

对于外设模式,比如用一个CPU来作为中间缓冲的,从PROM中读取数据,然后再通过CPU传输到FPGA上去,比如可以实现加密功能,而直接通过并行模式则不能实现。

目前,主流的 FPGA 都是基于 SRAM 工艺的,在大部分的 FPGA 开发板上,使用的都是串行配置模式。由于 SRAM 掉电就会丢失内部数据,因此往往都会外接一个能够掉电保存数据的片外存储器以保存程序。这样一来,上电时 FPGA 便将外部存储器中的数据读入片内 RAM 以完成配置,对 FPGA 编程完成后便进入工作状态;掉电后 FPGA 内部 SRAM 中存储的数据丢失,逻辑清零。以这种方式配置 FPGA 不仅能反复使用,还无需重复的手动配置。完成一次主动配置之后每次上电便会自动的实现 FPGA 的内部编程。

*** ***

图片

FPGA 与 ASIC

(1)ASIC:即专用集成电路(Application Specific Integrated Circuit)的简称。电子产品中,它们无所不在,还真是比 FPGA 普及得多得多。但是 ASIC 的功能相对固定,它是为了专一功能或专一应用领域而生,希望对它进行任何的功能和性能的改善往往是无济于事的。

ASIC 是布满铅字的印刷品,那么 FPGA 就是可以自由发挥的白纸一张。

(2)FPGA:使用了 FPGA 器件的电子产品,在产品发布后仍然可以对产品设计作出修改,大大方便了产品的更新以及针对新的协议标准作出的相应改进,从而可以加速产品的上市时间,并降低产品的失败风险和维护成本。相对于无法对售后产品设计进行修改的 ASIC 来说,这是 FPGA特有的一个优势。由于 FPGA 可编程的灵活性以及近年来电子技术领域的快速发展,FPGA 也正在向高集成、高性能、低功耗、低价格的方向发展,并且逐渐具备了与 ASIC 相当的性能,使其被广泛地应用在各行各业的电子及通信设备中。

(3)相同点:当然,FPGA 与 ASIC 的开发过程有一些共通之处(当然并不完全一样,区别也是有的),例如它们都可以使用硬件编程语言 Verilog 或 VHDL,它们在时序设计、仿真验证方面的基本原理、方法或优化技巧基本是相通的。ASIC 开发通常分为前端和后端,前端是后端的输入,前端最终的产出是一个能够描述所实现功能的逻辑门电路及其连接的网表,FPGA 在综合后也是得到一个类似的网表;ASIC 设计后端的任务是把前端得到的网表通过布局布线(需要人工参与)映射到具体的物理结构上,而 FPGA 上与此类似的映射过程通常完全由开发工具包办了,它并不需要设计者太多的参与。当然了,从这样简单的开发对比也可以多少体会到 ASIC 和 FPGA 在成本、功耗或性能上为何存在差异。

FPGA、ARM 和 DSP

与 ASIC 相比,FPGA、ARM 和 DSP 都具备与生俱来的可编程特性。FPGA、ARM 和 DSP 都或多或少集成了一些 ASIC功能,正是这些 ASIC 功能,加上“可编程”特性,使得它们相互区别开了,并且各自独霸一方。

ARM:是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的 RISC 处理器、相关技术及软件。由 ARM 公司设计的处理器风靡全球,大有嵌入式系统无处不 ARM 的趋势。我们通常所说的 ARM,更多的是指 ARM 公司的处理器,即 ARM处理器。ARM 通常包含一颗强大的处理器内核,并且为这颗处理器量身配套了很多成熟的软件工具以及高级编程语言,这也是它倍受青睐的原因之一。当然了,ARM 不只是一颗处理器

而已,因为在 ARM 内核处理器周边,各种各样精于控制的外设比比皆是,什么 GPIO、PWM、AD/DA、UART、SPI、IIC……一列一箩筐。ARM 的长处在控制和管理,在很多工业自动化中大有用武之地。

DSP:即数字信号处理器,是一种独特的微处理器,有自己的完整指令系统,能够进行高速、高吞吐量的数字信号运算处理。它对各种语音、数据和视频做运算处理;DSP 是为各种数学运算量身打造的。

FPGA用于很多原型产品设计过程中,在一些灵活性要求高、定制化程度高、性能要求也特别高的场合,FPGA再合适不过了。FPGA 固然强大,但是它成本、功耗和开发复杂性都很高,而在这些方面,ARM 和 DSP 正好弥补了 FPGA 所带来的缺憾。

之所以会有 ARM、DSP 和 FPGA 的存在,和实际应用情景是非常相关的。对于 ARM,它的主要应用情景常常是有一些低速数据的采集、简单的处理和传输,也还需要一些人机交互手段的存在。前面提到,ARM处理器周边通常外设丰富,且它本身就精于控制,所以就很适合此类应用。对于DSP,有无人机交互就无所谓了,它的应用情景最主要的特点一定是高速数据的实时采集、较复杂的运算处理和传输。DSP对此作过专门优化。FPGA,可以这么说,它是可以补前面二者的“缺”和“漏”,FPGA 可以在 ARM 和 DSP 之外满足各种定制化的需求。ARM 和 DSP 在大批量、低成本的应用中较为常见;而 FPGA 则更多的在小批量、定制化、成本不敏感的行业中应用。

Verilog 与 VHDL

早期的 FPGA 开发通过绘制原理图(和现在的硬件工程师绘制原理图的方式大体相仿)完成。而随着 FPGA 规模和复杂性的不断攀升,这种落后的设计方式几乎已经被大家遗忘了,取而代之的是能够实现更好的编辑性和可移植性的代码输入方式。这两种语言都是通过一系列分层次的模块来表示复杂的数字系统,逐个模块的仿真验证后,再集成各个模块交由综合工具生成门级的网表,最后由布局布线工具将其映射到最终的 FPGA 器件上。

Verilog :是在 1983 年由 Gateway Automation 公司的 Philip Moorby 发明,此人也是目前 EDA 行业鼎鼎有名的 Cadence 公司的[敏感词]合伙人。时隔 10 年,1993 年,几乎所有的 ASIC厂商都开始支持 Verilog,当然 FPGA 厂商也不例外,此时,IEEE(电气和电子工程师协会)正式将当时的 Verilog2.0 作为标准的提案。1995 年,IEEE 制定了 Verilog 的标准 IEEE1364-1995,即称之为Verilog-95 的标准。2001 年,在进行了一番修正和扩展之后,发布了 IEEE 1364-2001 标准,即 Verilog-2001。2005 年,Verilog 再次做出了细微的修正,发布了IEEE1364-2005 标准,即 Verilog-2005。

VHDL :是 Very High Speed Integrated Circuit Hardware Description Language 的缩写,也是诞生于上世纪 80 年代初期,但它与 Verilog 的民间背景不同,VHDL 则是美国军方研发,且早在 1987 年就被 IEEE 和美国[敏感词]部确认为标准硬件描述语言,并公布了 VHDL 的标准版本 IEEE-1076-1987(简称 87 版)。1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993版本(简称 93 版)。

FPGA 发展概述

上世纪 60 年代中期,TI 公司设计制造了各式各样的实现基本逻辑门电路功能的芯片,相信今天很多的工程师仍然很熟悉这些主要面对[敏感词]应用的 54XX 和商业应用的 74XX 芯片。据说早期的工程师甚至能够单凭着这些芯片架构出一颗简单 CPU 的功能。

从 1971 年 Intel 公司的[敏感词]颗 4 位微处理器 Intel 4004 到上世纪 80 年代初被奉为经典的8051 单片机,再到今天各大嵌入式处理器厂商竞相使用的由 ARM 公司推出的各种 Cortex内核。深入处理器的底层结构,你会发现他们最本质的东西并没有太大的改变。而处理器再强大,一颗芯片尽可以将各种外设嵌入其中,但对于任何一颗已经批量出货的芯片而言,它的功能是固定的,若想在既有外设功能的基础上有任何的扩展,或许不是遇到电气特性不支持就是遇到 IO 太少的尴

尬,而这些问题也就催生了可编程逻辑器件的诞生。

今天的 CPU 周围已很难看见 54 或 74字样的 ASIC 了,取而代之的可能是管脚密集的 CPLD 或 FPGA。在系统的可扩展性和灵活性方面,FPGA/CPLD 有着得天独厚的优势。它更多的被应用到了通信、数据采集、网络、图像处理、算法实现等对数据传输吞吐量和处理速度有更高要求的场合。

[敏感词]款可编程逻辑器件(PLD)最初是在 1970 年以 PROM 的形式进入人们的视野,这种 PROM 结构的可编程逻辑器件可以实现简单的逻辑功能,很容易便可替代当时流行的 54 或 74 系列逻辑门电路。受限于 PROM 的结构,[敏感词]款可编程逻辑器件的输入接口相对较少。因此,可编程逻辑阵列(PAL)便孕育而生,PAL 由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL 器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM 技术和 EEPROM 技术。

PAL 的问题在于其实现方式使得信号通过可编程连线的时间相对较长。在 PAL 的基础上,又发展了一种通用阵列逻辑 GAL,它要比 PAL速度快许多,它采用了 EEPROM 工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。

这些早期的 PLD 器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。电子领域的发展趋势总是朝着速度更快、功能更强、体积更小、成本更廉价的方向迈进。复杂可编程逻辑器件(CPLD)的诞生也就顺理成章了。Altera 公司于 1984 年发明了基于CMOS 和 EPROM 技术相结合的 CPLD。CPLD 可实现的逻辑功能相比 PAL 和 GAL 有了大幅度的提升,已经可以胜任设计中复杂性较高、速度也较快的逻辑功能,尤其在接口转换、总线控制和扩展方面有着较多的应用。经过几十年的发展,今天的 CPLD 功能和性能也得到了进一步的提升,其基本结构由可编程 IO 单元、基本逻辑单元、布线池以及其他相关辅助功能块组成。Altera、Xilinx 和 Lattice 是主要的 CPLD 供应商。

创始人之一 Ross Freeman 发明了现场可编程门阵列(FPGA),Freeman 先生发明的 FPGA 是一块全部由“开放式门”组成的计算机芯片。采用该芯片,工程师可以根据需要进行灵活编程,添加各种新功能,以满足不断发展的协议标准或规范,工程师们甚至可以在设计的最后阶段对它进行修改和升级。Freeman 先生当时就推测低成本、高灵活性的 FPGA 将成为各种应用中定制芯片的替代品。

三十多年后的今天,伴随着制造工艺的不断进步,FPGA 在深亚微米甚至深亚纳米时代一直走在了创新[敏感词]线。如今的 FPGA 器件,其组成不仅限于基本的可编程逻辑单元、可编程 IO 单元、丰富的布线资源,而且还拥有灵活的时钟管理单元、嵌入式块 RAM 以及各种通用的内嵌功能单元,很多器件还顺应市场需求内嵌专用的硬件模块。

FPGA 的优势

1、在考虑是否使用 FPGA 技术来实现目标产品时,我们需要重点从以下几个方面进行评估。

● 可升级性——产生在设计过程中,甚至将来产品发布后,是否有较大的功能升级需求?是否应该选择具有易于更换的同等级、不同规模的 FPGA 器件?

● 开发周期——产品开发周期是否非常紧迫?若使用 FPGA 开发,是否比其他方案具有更高的开发难度,能否面对必须在最短的时间内开发出产品的挑战?

● 产品性能——产品的数据速率、吞吐量或处理能力上是否有特殊要求?是否应该选择性能更好或速度等级更快的 FPGA 器件?

● 实现成本——是否有基于其它 ASIC、ARM 或 DSP 的方案,能够以更低的成本实现设计?FPGA 开发所需的工具、技术支持、培训等额外的成本有哪些?通过开发可复用的设计,是否可以将开发成本分摊到多个项目中?是否有已经实现的参考设计或者IP 核可供使用?

● 可用性——器件的性能和尺寸的实现,是否可以赶上量产?是否有固定功能的器件可以代替?在产品及其衍生品的开发过程中,是否实现了固定功能?● 其它限制因素——产品是否要求低功耗设计?电路板面积是否大大受限?工程实现中是否还有其它的特殊限制?

2、基于以上的这些考虑因素,我们可以从如下三大方面总结出在产品的开发或产品的生命周期中,使用 FPGA 技术实现所能够带来的潜在优势。

● 灵活性:

可重编程,可定制。

易于维护,方便移植、升级或扩展。

降低 NRE 成本,加速产品上市时间。

支持丰富的外设接口,可根据需求配置。

● 并行性

更快的速度、更高的带宽。

满足实时处理的要求。

● 集成性

更多的接口和协议支持。

可将各种端接匹配元件整合到器件内部,有效降低 BOM 成本。

单片解决方案,可以替代很多数字芯片。

减少板级走线,有效降低布局布线难度。

3、以下这些方面看,选择 FPGA 技术来实现产品的开发设计有时并不是明智的决定。

● 在某些性能上,FPGA 可能比不上专用芯片;或者至少在稳定性方面,FPGA 可能要逊色一些。

● 如果设计不需要太多的灵活性,FPGA 的灵活性反而是一种浪费,会潜在的增加产品的成本。

● 相比特定功能、应用集中的 ASIC,使用 FPGA 实现相同功能可能产生更高的功耗。

● 在 FPGA 中除了实现专用标准器件(ASSP)所具有的复杂功能,还得添加一些额外的功能,实属一大挑战。FPGA 的设计复杂性和难度可能会给产品的开发带来一场噩梦。

图片

FPGA 应用领域

1、从技术角度来看,主要是有以下需求的应用场合。

● 逻辑粘合,如一些嵌入式处理常常需要地址或外设扩展,CPLD 器件尤其适合。今天已经少有项目会选择一颗 FPGA 器件专门用于逻辑粘合的应用,但是在已经使用的FPGA 器件中顺便做些逻辑粘合的工作倒是非常普遍。

● 实时控制,如液晶屏或电机等设备的驱动控制,此类应用也以 CPLD 或低端 FPGA 为主。

● 高速信号采集和处理,如高速 AD 前端或图像前端的采集和预处理,近年来持续升温的机器视觉应用也几乎是无一例外的都使用了 FPGA 器件。

● 协议实现,如更新较快的各种有线和无线通信标准、广播视频及其编解码算法、各种加密算法等,诸如此类小批量、定制化、更新换代频繁的应用使用FPGA 比 ASIC更有竞争力。

● 各种原型验证系统。由于工艺的提升,流片成本也不断攀升,而在流片前使用 FPGA做前期的验证已成为非常流行的做法。

● 并行计算。过去传统的 CPU 计算受限于其串行顺序处理的架构,已经很难适应今天的云计算和数据中心对大数据运算的需求了;而 GPU 虽然在并行处理以及所使用的高级编程语言上有不小的优势,也在过去一段时间内成为了此类应用的主流方案,但也受限于极高的成本和功耗代价;相比之下,单位功耗性能是 GPU的 3~4 倍的 FPGA则大有取而代之之势。

● 片上系统,如 Altera 公司的 Soc FPGA 和 Xilinx 公司的 Zynq,这类 FPGA 器件,既有成熟的 ARM 硬核处理器,又有丰富的 FPGA 资源,大有单芯片一统天下的架势。

2、若从具体的行业细分来看,FPGA 在电信、无线通信、有线通信、消费电子产品、视频和图像处理、车载、航空航天和[敏感词]、ASIC 原型开发、测试测量、存储、数据安全、医疗电子、高性能计算以及各种定制设计中都有涉猎。

图片

FPGA 开发流程

如图所示,这是一个基于 FPGA 开发工具的开发流程图。当然了,在此之前,从FPGA 项目的提上议程开始,设计者需要进行 FPGA功能的需求分析,然后进行模块的划分,比较复杂和庞大的设计,则会通过模块划分把工作交给一个团队的多人协作完成。各个模块的具体任务和功能划分完毕(通常各个模块间的通信和接口方式也同时被确定),则可以着手进行详细设计,其各个步骤包括设计输入、设计综合、约束输入、设计实现、分析实现结果(查看工具给出的各种报告结果)。为了保证设计达到预期要求,设计仿真以及设计优化则穿插其间。在EDA 工具上验证无误后,则可以生成下载配置文件烧录到实际器件中进行板 级的调试工作。从图中的箭头示意不难看出,设计的迭代性是 FPGA开发过程中的一个重要特点,这就要求设计者从一开始就要非常认真细致,否则后续的很多工作量可能就是不断的返工。

1、设计输入
设计输入阶段,设计者需要创建 FPGA 工程,并且创建或添加设计源文件到工程中。FPGA工程包含了各种不同类型的源文件和设计模块,比如HDL 文件、EDIF 或 NGC 网表文件、原理图、IP 核模块、嵌入式处理器以及数字信号处理器模块等。

2、设计综合
设计综合阶段,FPGA 开发工具的综合引擎将编译整个设计,并将 HDL 源文件转译为特定结构的设计网表。Vivado 设计工具内置 Synthesis 综合功能,也支持第三方综合工具,如 Synplify, Synplify Pro 和 Precision 等软件工具的使用。

3、约束输入
约束输入阶段,设计者可以指定时序、布局布线或者其它的设计要求。Vivado 工具支持专用的编辑器实现时序约束、I/O引脚约束和布局布线约束。

4、设计仿真
在整个开发过程的任意时刻,设计者都可以使用仿真工具对 FPGA 工程进行功能验证,比如 Vivado 内置的仿真器或者第三方工具

ModelSim 仿真器。

5、设计实现
设计综合之后,接着就需要设计实现,将逻辑设计进一步转译为可以被下载烧录到目标FPGA 器件中的特定物理文件格式。使用 Vivado的工程导航窗口中支持的目标和策略设置属性,可以控制设计实现以及结果优化。为了更快的达到设计目标,可以使用SmartXplorer进行不同的处理策略实现,达到多次的自动实现处理以完成设计目标。

6、分析实现结果
完成设计实现后,必须对设计约束、器件资源占用率、实现结果以及功耗等设计性能进行分析。既可以查看静态报告,也可以使用 Vivado中内置的工具动态的查看设计综合实现 的结果。对于时序结果和功耗结果,Vivado 内置工具中都可以进行查看。此外,在系统调试时也可以使用在线逻辑分析仪 ILA。

7、 设计优化
基于对设计结果的分析,设计者可以对设计源文件、编译属性或设计约束进行修改,然 后重新综合、实现以达到设计最优化。

8、板级调试
在生成下载配置文件后,设计者便可以对 FPGA 器件进行调试。在此过程中,既可以实现下载配置文件的快速在线烧录进行实时调试验证,也可以实现产品固化烧录使其可以离线 运行。

FPGA 开发流程是三个阶段

[敏感词]个阶段是概念阶段,或者也可以称之为架构阶段,这个阶段的任务是项目前期的立项准备,如需求的定义和分析、各个设计模块的划分;

第二个阶段是设计实现阶段,这个阶段包括编写 RTL代码、并对其进行初步的功能验证、逻辑综合和布局布线、时序验证,这一阶段是详细设计阶段;

第三个阶段是 FPGA 器件实现,除了器件烧录和板级调试外,其实这个阶段也应该包括第二个阶段的布局布线和时序验证,因为这两个步骤都是和FPGA 器件紧密相关的。

免责声明:本文采摘自“大印蓝海科技”公众号,本文仅代表作者个人观点,不代表beat365官方网站及行业观点,只为转载与分享,支持保护知识产权,转载请注明原出处及作者,如有侵权请联系我们删除。

服务热线

0755-83044319

霍尔元件咨询

肖特基二极管咨询

TVS/ESD咨询

获取产品资料

客服微信

微信服务号

XML 地图