FPGA由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。
每个单元简介如下:
目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。
FPGA的基本可编程逻辑单元是由查找表(LUT)和寄存器(Register)组成的,查找表完成纯组合逻辑功能。FPGA内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。
学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或者是DLL,专用的Hard IP Core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。
目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。
CAM,即为内容地址存储器。写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单的说,RAM是一种写地址,读数据的存储单元;CAM与RAM恰恰相反。
除了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。
布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分:
1)全局性的专用布线资源:以完成器件内部的全局时钟和全局复位/置位的布线;
2)长线资源:用以完成器件Bank间的一些高速信号和一些第二全局时钟信号的布线(这里不懂什么是“第二全局时钟信号”);
3)短线资源:用来完成基本逻辑单元间的逻辑互连与布线;
4)其他:在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。
由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。其实布线资源的优化与使用和实现结果有直接关系。
底层嵌入功能单元(书上举了很多例子,不过这些东东要看具体哪个厂商的哪种型号的芯片上嵌有什么资源决定)
内嵌专用硬核:与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱,不是所有FPGA器件都包含硬核。
在芯片应用行业,计算机和通讯是最大的两个领域,而对于FPGA来说,应用的第一大领域是通讯而不是计算机。PC机虽然数量及其巨大,但PC机里面没有FPGA芯片,原因是PC机是一个高度标准化的产品,因此PC机里面所有芯片用ASIC实现不仅可行,而且是经济的。而服务器、大型机里面开始逐步在使用FPGA,主要用于大数据的协处理,目前量还不大,远远无法和通信产品使用的FPGA相比,但未来潜力很大,后面会做进一步介绍。
通信产品可以从云、管、端层面来划分,端不大适合使用FPGA,如前所述,因为FPGA功耗相对ASIC偏大,至于前段时间吵得沸沸扬扬的lattice FPGA芯片用于三星和苹果7的手机案例,实属特例,千万不要认为未来FPGA能大规模进军消费电子,从而使得FPGA市场规模将成倍甚至数十倍的增加,至少短期内可能性不大。
通信行业讲的云主要包括核心网及各种服务器中心,在大数据和云计算没有规模应用之前,核心网设备里面基本没有FPGA,因为核心网所处理的协议其实非常标准化,变化不是太大,我们常见的2G-3G-4G以及即将到来的5G,其标准的核心部分实际上主要体现在物理层和逻辑层,而这些功能主要在管道(基站、基站控制、承载、传输等产品)中实现,这些标准变化快,各设备厂家为了抢占产品和技术的制高点,甚至在标准还未冻结之前就推出原型样机甚至小批量,而这只有FPGA能做到。一般来讲越往终端侧靠近,设备的数量越多,用的FPGA量也越多,越靠近核心网侧用的FPGA数量越少,但FPGA芯片的型号越高端,单片更贵。考虑量、价因素,最终还是基站侧用的FPGA总价高。
为什么是基站(也可以说是管道)最适合用FPGA,而且总价最高。首先因为基站的量非常大,基站虽然和手机的量没法比,但远多于核心网数量,据不完全统计,全球存量基站有数千万(5G部署后,可能会轻松破亿),每个基站里面有数块到10数块板子(根据配置不同而不同),除了电源和风扇板子没有FPGA芯片外,几乎每块板子都有FPGA芯片,有的还不止一颗。其次,基站里面用的FPGA型号也不会太低端,因为要处理复杂的物理协议、部分算法和逻辑控制,接口速率更是一个重要的考虑。一般来讲,基站中的芯片价格在一百到数千元人民币不等。价格过高比如几千甚至上万人民币的芯片,最多在初期原型验证用,不会大规模发货。最后,基站主要负责实现通信协议中物理层、逻辑链路层的协议部分,这部分内容每年都在升级,而且也比较适合FPGA来实现,尤其是协议未完全冻结时,最适合FPGA来处理,因为可以通过升级FPGA版本来应对协议变动,待协议完全冻结后,各设备厂家会逐步以ASIC来替代之前的FPGA,因为量达到一定程度后,ASIC的成本和功耗优势就体现出来了,而且大型设备商的ASIC化能力又非常强,因此FPGA在通信领域主要在初、中期应用比例高,后期能被替代的都被ASIC替代了,只留下一些接口类的FPGA,这也是FPGA厂商必须要面对的一个现实。
除了通信领域,FPGA在安防和工业领域也存在大量应用。在安防领域,视频的编解码比如MPEG和H.26x等协议基本由专用ASIC实现,但是前端的数据采集处理及部分控制逻辑可以由FPGA来处理,因为安防也是一个巨大的产业,因此,FPGA的用量也是非常可观的。工业领域主要用FPGA的灵活性来做控制,而且主要是规模比较小的FPGA。此外,军工和航天也是FPGA应用的一个重要领域,军工和航天对FPGA的可靠性要求更高,除了xilinx和altera有军工产品外,microsemi(前actel)的anti-fuse工艺(一次编程,可以更好的抗干扰和抗辐射等)FPGA因其高可靠性,主要用于军工航天产品。