您的位置 首页 嵌入式

给MCU工程师详解FPGA硬件特点

我的许多朋友都是经验丰富的嵌入式设计工程师,但他们都是微控制器(MCU)背景,因此对于FPGA是什么以及FPGA能做什么只有一个模糊的概念。如果问急了,他

我的许多朋友都是经验丰富的嵌入式规划工程师,但他们都是微控制器(MCU)布景,因而关于FPGA是什么以及FPGA能做什么只要一个含糊的概念。假如问急了,他们会说“你能够经过装备FPGA让它做不同的工作”诸如此类的话,但他们真的不是很清楚FPGA里边有什么,或许如安在规划中运用FPGA。

事实上,MCU对有些使命来说是很合适的,但对其它一些使命来说或许做的并不好。举例来说,当需求并行履行很多核算使命时,FPGA或许会让你喜不自禁。在本文中咱们将评论FPGA的硬件特点。

简略的FPGA结构

在集成电路范畴人们常常会听到结构(fabric)这个术语,它指的是FPGA器材的底层根底结构。(作为一个爱好点,单词“结构”来自中世纪英语fabryke,意思是“制作的某些东西”)。下面让咱们从FPGA中的内核可编程结构开端吧……

假如咱们仔细观察FPGA封装的内部,咱们将看到硅片(技能术语裸片)。可编程结构表现为可编程逻辑块阵列,如下图所示。假如咱们用扩大镜“扩大检查”,咱们能够看到这种结构由沉浸于可编程互连“海洋”中的许多逻辑“岛”(可编程逻辑块)组成。

图1:简略的FPGA结构。

根本FPGA可编程结构的一般性表明。

是啊,我确实是用自己的双手亲身创造的这幅图片,我因而感到十分骄傲呢,十分感谢你加以重视。假如咱们进一步扩大,咱们能够看到,每个可编程模块都包括有许多数字功用。在这个比方中,咱们能够见到一个三输入的查找表(LUT)、一个复用器和一个触发器,但重要的是咱们要认识到,这些功用的数量和类型对不同系列的FPGA来说是会改动的。

触发器能够被装备(编程)为寄存器或锁存器;复用器能够被装备为挑选一个到逻辑块的输入或LUT的输出;LUT能够被装备为代表任何所要求的逻辑功用。

更具体地了解LUT

上面所示的简略比方包括一个三输入的查找表(LUT)。在实践运用中,即便最简略的FPGA都会运用四输入LUT,而一些更大更杂乱的器材乃至会声称运用六、七或八输入的LUT,但为了简略起见,咱们仍是评论三输入版别。

咱们会在今后的文章中评论各品种型的FPGA完结技能。现在咱们只需求知道,FPGA内部的可编程单元能够用反熔丝、闪存单元或SRAM内存单元来完结。先让咱们看一个用反熔丝技能创立的FPGA吧。这是一种一次性可编程(OTP)技能,这意味着一旦你编程了这个FPGA,它将永久坚持这个状况而不再改动。

形象化介绍这种技能的最简略办法是用下图所示级联的2:1复用器(MUX)。对根据反熔丝技能的FPGA来说,编程器材相当于经过“硬件连线”将榜首组复用器的输入衔接到完结方针逻辑功用所需的正确0或1值。下图中所示的值反映的实践结果是,咱们运用这个LUT完结了前面那张图隐含的公式y=(a b)|c。在实践运用中,复用器能够用场效应管的分支“树”来完结,但咱们在这儿真的不必忧虑最底层的完结细节。

图2:输入值经“硬件衔接的”反熔丝型LUT(左),输入从SRAM单元馈入的SRAM型LUT(右)。

别的一种十分常见的FPGA完结技能是运用SRAM装备单元。相同,咱们会在今后的文章中评论更多的细节。这儿咱们所要知道的仅是当电路板榜首次上电时,根据SRAM的FPGA会加载装备信息(咱们能够把这个进程想像为器材的编程)。作为这种装备的一部分,用作LUT复用器输入的SRAM单元会被加载进上图所示的方针0或1值。

我没有显现0和1被加载进SRAM单元的那种机制,因为我不想让问题变得杂乱。出于这次评论的意图,咱们真的无需忧虑这种“戏法”是怎么产生的。我在这儿唯一要提的事(给你考虑的空间)是—运用一种被称为部分再装备的技能—FPGA的一部分能够建议对另一部分进行再装备(当然反过来也行)。关于具有微控制器和/或软件布景的读者来说,咱们能够将这种技能幻想为相当于自我修正代码的硬件。这意味着这种技能是十分十分强壮的,但也会带来很难阻隔和调试的问题。

通用的输入和输出

FPGA器材还包括有通用的输入/输出(GPIO)引脚和焊盘(图1中没有显现)。经过装备单元,FPGA器材内的互连部分能够被编程为这样:将器材的主输入衔接到一个或多个可编程逻辑块的输入。任何逻辑块的输出也能够用来驱动任何其它逻辑块的输入和/或FPGA器材的主输出。别的,GPIO引脚能够被装备为支撑品种广泛的I/O规范,包括电压、终端阻抗、摆率等。

国际上榜首块FPGA与本文中评论的架构十分相似。这块FPGA便是赛灵思公司在1985年推出的XC2064(是用2um工艺节点制作的),它包括有8×8=64的逻辑块阵列,每个逻辑块包括一个四输入LUT和其它一些简略功用。从那今后,FPGA开展势不可挡,正像咱们看到的那样……

更为杂乱的FPGA架构

正如咱们在前面说的那样,赛灵思公司在1985年推出的榜首块FPGA—XC2064包括8×8=64的逻辑块阵列,每个逻辑块包括一个四输入查找表及其它一些简略功用。因为它们的容量十分有限,因而前期的FPGA只用来履行一些相对简略的使命,比方会集一些胶合逻辑,或完结根本的状况机。但是跟着时刻的推移,工作开端改动……

跟着时刻的推移和工艺节点的前进,FPGA的容量和功用不断得到进步,功耗却不断的下降。直到大约2006年曾经广泛运用的一直是四输入查找表。事实上,在写这篇文章之时,较小的FPGA系列器材仍在运用四输入的查找表,但一些高端器材或许运用六、七或八输入的查找表。这些大家伙或许被用作一个大的查找表,或分裂成许多更小的功用,比方两个四输入的查找表或一个三输入一个五输入的查找表。在实践的高端器材中,这种可编程结构能够描绘相当于百万级(有时乃至千万级)的原始逻辑门。

假如某个逻辑功用(比方说计数器)是用FPGA的可编程结构完结的,那么这个功用能够被说成“软功用”。比较之下,假如某个功用是直接用芯片完结的,则被说成“硬功用”。(跟着这些功用变得越来越大越来越杂乱,咱们一般称它们为内核)。软内核的优势在于,你能够让它们做你想让它们做的任何事。硬内核的优势是它们占用较少的硅片面积,具有较高的功用,并且功耗较低。最优的解决方案是混合运用软内核(用可编程结构完结)和硬内核(直接用硅片完结)。这样,除了根据查找表的可编程结构外,今日的FPGA能够运用以下介绍的各种硬内核进行功用增强:

图3:更杂乱的FPGA架构。

举例来说,该器材或许包括数千个加法器、乘法器和数字信号处理(DSP)功用;数兆位的片上内存,很多的高速串行互连(SERDES)收发器模块,以及很多的其它功用。

带嵌入式处理器的FPGA

这是真实让人振奋的工作……你能够用FPGA中的一般可编程结构做的工作之一是,运用其间的一部分完结一个或多个软处理器内核。当然,你能够完结不同规划的处理器。举例来说,你能够创立一个或多个8位的处理器,加上一个或多个16位或32位的软处理器—一切处理器都在同一器材中。

假如FPGA供货商期望供给一个占用较少硅片面积、耗费较低功率但功用更高的处理器,解决方案是将它完结为硬内核。一个十分令人振奋的开发效果是Altera和赛灵思等公司最近推出的SoC FPGA。考虑下面所示这个比方:

图4:一种新的SoC FPGA

这个美丽的小东西整合了一个彻底以硬内核方法完结的双路ARM Cortex-A9微控制器子体系(运转时钟高达1GHz,包括浮点引擎,片上缓存,计数器,定时器等),以及品种广泛的硬内核接口功用(SPI,I2C,CAN等),还有一个硬内核的动态内存控制器,一切这些组件都运用很多传统的可编程结构和很多的通用输入输出(GPIO)引脚进行了功用增强。(即将在16nm节点推出的一款SoC FPGA据称包括四内核的64位ARM Cortex-A53处理器,双内核32位ARM Cortex-R5实时处理器,以及一个ARM Mali-400MP图形处理器。这些可不是你祖母时分的FPGA哦!)

传统的嵌入式体系架构师或许将其间一个器材放置在电路板上,并将它用作传统的高功用双内核ARM Cortex-A9微控制器。当电路板上电时,硬微控制器内核当即发动,并在任何可编程结构完结装备之前就可用了。这样能够节省时刻和精力,并让软件开发人员和硬件规划师一起开端开发。

一种景象是软件开发人员捕获他们的代码,在SoC FPGA的Cortex-A9处理器上运转这些代码,然后经过剖析辨认任何或许严重影响功用并成为瓶颈的功用。这些功用随后或许就转交给硬件规划工程师用可编程结构来完结,它们(这些功用,不是规划工程师)将运用较低的时钟频率供给显着更高的功用,并且功耗更低。

前面咱们说过,硬内核完结的功用(图4所示的ARM Cortex-A9便是一种硬内核)与等效的软内核比较具有更高的功用和更低的功耗。但现在咱们又说假如在硬内核处理器上运转的软件功用是个瓶颈,咱们能够用可编程结构来完结,这样它就能……你了解的没错,供给更高的功用和更低的功耗。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/144280.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部