什么是FPGA,有什么用处?

2018-05-30 17:02:08 来源:elecfans
标签:

什么是FPGA

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

 

FPGA和CPLD的主要区别

早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。


CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器组成。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。

 

CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。

 

CPLD和FPGA还有一个区别:CPLD下电之后,原有烧入的逻辑结构不会消失;而FPGA下电之后,再次上电时,需要重新加载FLASH里面的逻辑代码,需要一定的加载时间。

 

 

FPGA工作原理

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

 

与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16&TImes;1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。

 

FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

 

FPGA在下一代网络架构中的重要意义

这里将着重讨论FPGA在诸如NFV等虚拟网络架构中的作用和意义。

 

电信网络是NFV的一个主要应用场景,它出现的最直接的动因之一就是为了支持指数级的带宽增长。据预测,五年后全球的IP流量将较今日增长超过3倍。在万物互联的今天,尤其是5G、物联网、自动驾驶等技术已经成为各大公司争夺的焦点之时,各种设备和服务都需要电信网络及其数据中心进行处理和支持。然而,传统的电信基础架构和数据中心很难进行有效的扩展,其主要原因有以下两点:

 

硬件层面:传统电信网络基础架构使用的是各类专用硬件设备,如各类接入设备、各层交换机、路由器、防火墙、QoS等。这样做的问题有很多,例如,不同设备之间的兼容性差、维护升级困难、容易造成供应商垄断从而大幅提高成本、若需要加入新功能则要开发新硬件设备等等。

 

软件层面:不同设备都需要各自对应的软件进行配置和控制,从而难以在管理员层面进行大范围统一部署和配置,且需要学习来自不同供应商和规格的设备的软件配置方法。若某些网络功能通过软件实现,传统的实现方法中对服务器的有效利用率很低,且无法进行服务的动态迁移,等等。

 

因此,虚拟化技术 - 更具体而言,网络功能虚拟化NFV技术,逐渐成为各大运营商解决上述问题的有效途径。欧洲电信标准协会(ETSI)关于NFV比较有名的示意图如下所示。

 

总体而言,和传统方法相比,NFV利用通用的服务器(大多是基于英特尔x86处理器)、通用的存储设备、以及通用的高速以太网交换机,实现传统电信网络基础架构的各种网络功能。具体而言,就是将网络功能在通用服务器中用软件实现,数据使用通用的存储设备存储,网络流量通过通用的网卡和高速交换机进行转发。这样理论上能很好的解决上述硬件层面的问题:使用通用设备而非专用设备,提高了数据中心的可扩展能力,不会被某个供应商制约,反而会通过开放竞争减少硬件采购和部署的成本。

 

另外,借助虚拟化技术,将网络功能在不同虚拟机中实现,这样理论上能解决软件层面的问题:即某个特定应用不会占用服务器的全部资源,反之,一个服务器可以同时运行多个虚拟机或网络服务。同时,虚拟机在数据中心的扩展和迁移也更加方便,不会造成服务下线或中断。

 

NFV和另外一项技术:软件定义网络(Software Defined Network - SDN)经常一起出现。它们的一个主要的核心思想就是将网络的控制面和转发面进行分离。这样,所有的数据转发面设备都可以同时被控制、配置、管理,从而避免了管理员需要分别配置每个网络设备的低效情形。

 

引用一下《中国电信CTNet2025网络架构白皮书》的话:

“从更好的适应互联网应用的角度出发,未来网络架构必须要求网络能力接口的开放和标准化,通过软件定义网络技术,能够实现面向业务提供网络资源和能力的调度和定制化,同时为进一步加速网络能力的平台化,还需要提供网络可编程的能力,真正实现网络业务的深度开放。”

请注意,在之前的表述中我使用了很多“理论上”怎样怎样,这是由于上面关于NFV的优点很多都是人们美好的想象和愿景。在实际的工程实践中,设计实现有效的NFV架构面临着很多问题。例如,不同的应用场景中,网络负载的种类五花八门,而很多应用都需要进行线速的处理,如QoS和流量整形(之前的博文介绍过)、VPN、防火墙、网络地址转换、加密解密、实时监控、深度包检测(DPI)等等。即使有DPDK等专用的软件开发库,目前单纯使用软件实现这些网络服务的线速处理,在技术上存在很大困难,且用软件实现的网络功能在性能上很难和专有硬件相比。这样一来,人们会反过来质疑使用NFV的出发点和动机。同时,鉴于NFV仍处于方案探讨和摸索阶段,很多相关的协议和标准还没有确定,这也在一定程度上使很多企业犹豫是否要投入大量资源去进行前期的探究工作。

 

因此,如何有效的实现这些虚拟化的网络功能(Virtualized Network FuncTIon - VNF),是我们前阶段的主要工作和这篇白皮书主要探讨的问题。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
从FPGA到ACAP,“万能芯片” 的华丽转身
从FPGA到ACAP,“万能芯片” 的华丽转身

FPGA被誉为“万能芯片”,能量就只有这么一点?当然不是的,目前FPGA在数据中心领域已经得到认可,加速卡解决方案成为数据中心的首选。而人工智能通过深度学习算法在认知智能和推理智能上遇到难题,擅长推理的FPGA被寄予厚望。

基于SRAM工艺FPGA的保密性问题

在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。

如果使用FPGA配合DSP来提升安全能力?

对于基于数字信号处理器(DSP)的设计,如果DSP没有足够的安全能力,便特别容易受到入侵。在许多应用中,如果使用FPGA以作配合来卸载DSP的部分工作,便可以轻易实施先进的安全功能。

详细分析CORDIC算法的原理及其FPGA实现方法

在无线电接收机系统中,由于会受到发射机运动、接收机运动和标准频率随时间动态变化等因素的影响,其接收机接收信号往往会发生频率偏移,因而需要进行频偏校正。在扩频通信系统中,频偏校正电路能消除中频偏移对接收机扩频码的捕获以及数据解调性能的影响,从而提高接收机的性能。

SM3算法简介和SM3算法的FPGA设计与实现

在分析SM3算法的基础上详细介绍了目前Hash函数的4种硬件实现策略,同时给出了迭代方式和基于充分利用时钟周期的循环展开方式下的FPGA实现。该循环展开方式有效地减少了一半的工作时钟数和11%的运算时间,吞吐量提高了11%,且占用的硬件资源较少。

更多资讯
《深度强化学习》手稿开放

一年前,机器之心发布了加拿大阿尔伯塔大学计算机系博士 Yuxi Li 的深度强化学习综述论文,该论文概述了在深度强化学习(Deep Reinforcement Learning)方面喜人的进展。而这本刚上线的《深度强化学习》手稿对前面的版本《深度强化学习综述》做了大规模的改进;从一年多前的 70 页扩充到现在的 150 页。

GICv3架构中,对中断的分组解析

GICv3架构中,对中断进行了分组。分成了以下三个组

想要学好大数据需掌握这十二大技术

大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等,汇集了当前IT领域热门流行的IT技术。

35岁咋就成了某些工程师的坎儿?

在工程师这个“贵圈”有个不成文的观念,据说,如果过了35岁,还在吭哧吭哧地干技术,那就是人生的loser,以激进著称的华为甚至也貌似传出过淘汰34岁以上工程师的流言。本来嘛,靠着在百家讲坛上讲三国还清房贷并成功逆袭人生的易中天教授就曾经提到过,‘古人三十六岁就自称老夫’,按古人虚岁方式计算,现如今的35岁正好是古人的36岁。一位“老夫”,

C语言嵌入式系统编程

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论), C语言模块化程序设计需理解如下概念

Moore8直播课堂