FPGA是什么?FPGA入门基础知识
扫描二维码
随时随地手机看文章
FPGA是个什么玩意?
首先来说:
FPGA是一种器件。其英文名 feild programable gate arry 。很长,但不通俗。通俗来说,是一种功能强大似乎无所不能的器件。通常用于通信、网络、图像处理、工业控制等不同领域的器件。就像ARM、DSP等嵌入式器件一样,成为无数码农码工们情感倾泻而出的代码真正获得生命的地方。只不过,一样的编程,却是不一样的思想。嵌入式软件人员看到的是C。而FPGA工程师看到是硬件描述语言,verilog或VHDL。软件看到是函数、对象、重构。FPGA工程师则是模块、流水、复用。从现象上看,都是代码到下载程序再到硬件上运行。不能只看现象而忽略本质。FPGA 开发本质上是设计一颗IC,“**的身子,丫鬟的命”不是所有verilog/VHDL代码,都能获得青睐去流片成为真正的芯片,而更多的则成为运行在FPGA器件上,成为完成相同功能的替代品。其实现的功能却一点也不逊色于百万身价流片的近亲。从而成为独树一帜的行业。
FPGA开发的流程,是通过verilog/VHDL等硬件描述语言通过EDA工具编译、综合、布局布线成为下载文件,最终加载到FPGA器件中去,完成所实现的功能。那硬件描述语言描述的是什么?这里描述的就是组合逻辑电路和时序逻辑电路。组合逻辑电路就是大家所熟知的 与门、或门、非门。时序逻辑电路则是触发器。数字芯片上绝大部分逻辑都是这两种逻辑实现的。也就是基本上每个电子行业的人所学过的数字电路。顺便说一下,感谢香农大师,在其硕士毕业论文<继电器与开关电路的符号分析>就奠定了数字电路的的根基。只不过在FPGA中,与或非的操作变成了查找表的操作。于是所有的数字电路变成了查找表和寄存器,这就构成了FPGA的基础。查找表负责逻辑实现,寄存器存储电路状态。二者配合,双剑合璧,天衣无缝。这是最初的FPGA的雏形。 现代FPGA内部出了查找表和寄存器之外,还有RAM块,用于存储大量的数据块,这是因为RAM块较寄存器来存储大量数据更能节省芯片实现的面积。FPGA内部的时序电路则需要时钟的输入,通常FPGA内部需要时钟种类较多,因此需要在片内产生所需的的相关的时钟,如不同频率,不同相位的时钟,因此时钟管理单元DCM/PLL也是必不可少的内部部件。除此之外,FPGA内部还包括接口I/O,I/O分为普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用于实现XAUI,PCIE等高速接口,这些接口动辄几Gbps到10Gbps以上。此外种类多种多样的硬核IP也是各FPGA厂商差异化竞争利器,例如POWERPC、ARM等硬核IP。从而构成CPU+FPGA于一体的集可编程性和可重构的处理平台。因此,相对来所,FPGA虽然发展有二三十年的历史,其基本架构一直不变不大。
回到问题开始的地方,FPGA的英文翻译过来是现场可编程门阵列。这是相对ASIC来说的,ASIC的硬件也可看做是门阵列,但是其是非可编程的器件。流片完成其功能就固化了,而FPGA的可编程性就在其能够重新下载配置文件,来改变其内在的功能,这就是其可编程性的由来。从前端开发流程来说,FPGA和ASIC开发并无二至。由于ASIC开发一次性投入成本较高,FPGA无疑是一种经济的替代方案,用于实现的高速的数据并行处理。如业务能够支撑大规模应用并且协议固化,则能够分摊成本的ASIC实现就有成本的优势。
FPGA作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头ALTERA和XILINX。除此之外还有一些份额相对较小的公司,例如ACTEL和LATTICE。不止是FPGA的硬件芯片,其配套的EDA工具技术壁垒更高。因此相对于CPU来说,FPGA的国产化更不乐观,不过已经有国内的厂商来从事这一行业,例如国微和京微雅格等,也在一些细分市场上推出自己的FPGA产品。