FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。1
简介FPGA设计不是简单的芯片研究,主要是利用 FPGA 的模式进行其他行业产品的设计。 与 ASIC 不同,FPGA在通信行业的应用比较广泛。通过对全球FPGA产品市场以及相关供应商的分析,结合当前我国的实际情况以及国内领先的FPGA产品可以发现相关技术在未来的发展方向,对我国科技水平的全面提高具有非常重要的推动作用。2
FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。
与传统模式的芯片设计进行对比,FPGA 芯片并非单纯局限于研究以及设计芯片,而是针对较多领域产品都能借助特定芯片模型予以优化设计。从芯片器件的角度讲,FPGA 本身构成 了半定制电路中的典型集成电路,其中含有数字管理模块、内嵌式单元、输出单元以及输入单元等。在此基础上,关于FPGA芯片有必要全面着眼于综合性的芯片优化设计,通过改进当前的芯片设计来增设全新的芯片功能,据此实现了芯片整体构造的简化与性能提升。3
发展历程1985年,当全球首款FPGA产品——XC2064诞生时,注定要使用大量芯片的PC机刚刚走出硅谷的实验室进入商业市场,因特网只是科学家和政府机构通信的神秘链路,无线电话笨重得像砖头,日后大红大紫的Bill Gates正在为生计而奋斗,创新的可编程产品似乎并没有什么用武之地。
最初,FPGA只是用于胶合逻辑(Glue Logic),从胶合逻辑到算法逻辑再到数字信号处理、高速串行收发器和嵌入式处理器,FPGA真正地从配角变成了主角。在以闪电般速度发展的半导体产业里,22年足够改变一切。“在未来十年内每一个电子设备都将有一个可编程逻辑芯片”的理想正成为现实。
1985年,Xilinx公司推出的全球第一款FPGA产品XC2064怎么看都像是一只“丑小鸭”——采用2μm工艺,包含64个逻辑模块和85000个晶体管,门数量不超过1000个。22年后的2007年,FPGA业界双雄Xilinx和Altera公司纷纷推出了采用最新65nm工艺的FPGA产品,其门数量已经达到千万级,晶体管个数更是超过10亿个。一路走来,FPGA在不断地紧跟并推动着半导体工艺的进步——2001年采用150nm工艺、2002年采用130nm工艺,2003年采用90nm工艺,2006年采用65nm工艺。
当1991年Xilinx公司推出其第三代FPGA产品——XC4000系列时,人们开始认真考虑可编程技术了。XC4003包含44万个晶体管,采用0.7μm工艺,FPGA开始被制造商认为是可以用于制造工艺开发测试过程的良好工具。事实证明,FPGA可为制造工业提供优异的测试能力,FPGA开始用来代替原先存储器所扮演的用来验证每一代新工艺的角色。也许从那时起,向最新制程半导体工艺的转变就已经不可阻挡了。最新工艺的采用为FPGA产业的发展提供了机遇。
工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
基本结构FPGA 器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。 FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块 RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。由于FPGA具有布线资源丰富,可重复编程和集成度高,投资较低的特点,在数字电路设计领域得到了广泛的应用。FPGA的设计流程包括算法设计、代码仿真以及设计、 板机调试,设计者以及实际需求建立算法架构,利用EDA建立设计方案或HD编写设计代码, 通过代码仿真保证设计方案符合实际要求,最后进行板机调试,利用配置电路将相关文件下载至FPGA芯片中,验证实际运行效果。2
芯片设计相比于其他种类的芯片设计,关于 FPGA芯片通常需要设置较高门槛并且拟定严格性较强的基本设计流程。具体在设计时,应当紧密结合 FPGA 的有关原理图,据此实现了规模较大的专门芯片设计。通过运用Matlab以及C语言的特殊设计算法,应当可以实现全方位的顺利转化,从而确保其符合当前的主流芯片设计思路。在此前提下,如果选择了上述设计思路那么通常需要着眼于有序整合各类元器件以及相应的设计语言,据此保证了可用性与可读性较强的芯片程序设计。运用 FPGA可以实现板机调试、代码仿真与其他有关的设计操作,确保当前的代码编写方式以及设计方案都能符合特定的设计需求。 除此以外,关于设计算法应当将合理性置于首要性的位置, 据此实现了优化的项目设计效果,并且优化了芯片运行的实效性。因此作为设计人员来讲,首先就是要构建特定的算法模块, 以此来完成与之有关的芯片代码设计。这是由于预先设计代码有助保证算法可靠性,对于整体上的芯片设计效果也能予以显著优化。在全面完成板机调试以及仿真测试的前提下,应当可以在根源上缩短设计整个芯片消耗的周期,同时也致力于优化当前现存的硬件整体结构。例如在涉及到开发非标准的某些硬件接口时,通常都会用到上述的新产品设计模式。3
FPGA设计的主要难点是熟悉硬件系统以及内部资源,保证设计的语言能够实现元器件之间的有效配合,提高程序的可读性以及利用率。这也对设计人员提出了比较高的要求,需要经过多个项目的经验积累才可以达到相关的要求。
在算法设计时需要重点考虑合理性,保证项目最终完成的效果,依据项目的实际情况提出解决问题的方案,提高FPGA的运行效率。确定算法后应当合理构建模块,方便后期进行代码设计。在代码设计时可以利用预先设计好的代码,提高工作效率,增强可靠性。编写测试平台,进行代码的仿真测试和班级调试,完成整个设计过程。FPGA同ASIC不同,开发的周期比较短,可以结合设计要求改变硬件的结构,在通信协议不成熟的情况下可以帮助企业迅速推出新产品,满足非标准接口开发的需求。2
设计语言及平台可编程逻辑器件是通过EDA技术将电子应用 系统的既定功能和技术指标具体实现的硬件载体,FPGA作为实现这一途径的主流器件之一,具有直接面向用户,灵活性和通用性极大,使用方便,硬 件测试和实现快捷等特点。4
硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言,常用的主要有VHDL、Verilog HDL、System Verilog 和 System C。
作为一种全方位的硬件描述语言,超高速集成电路硬件描述语言(VHDL)具有与具体硬件电路无关、与设计平台无关的特性,具有宽范围描述能力、不依赖于特定的器件、可将复杂控制逻辑的设计用严谨简洁的代码进行描述等优点,得到众多EDA公司的支持,在电子设计领域得到了广泛应用。4VHDL是一种用于电路设计的高级语言,与其他硬件描述语言相比,其具有语言简洁、灵活性强、不依赖于器件设计等特点,使其成为EDA技术通用的硬件描述语言,使EDA技术更便于设计者掌握。5
Verilog HDL是广泛应用的硬件描述语言,可以用于硬件设计流 程的建模、综合、模拟等多个阶段。
Verilog HDL 优点:类似C语言,上手容易,灵活。大小写敏感。在写激励和建模方面有优势。缺点:很多错误在编译的时候不能被发现。
VHDL 优点:语法严谨,层次结构清晰。缺点:熟悉时间长,不够灵活。
Quartus_Ⅱ软件是由Altera公司开发的完整多平台设计环境,能满足各种FPGA,CPLD的设计需要,是片上可编程系统设计的综合性环境。6
Vivado设计套件,是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。Xilinx Vivado设计套件中提供了FIFO IP核,可方便应用于设计中。7
主要应用视频分割系统近年来,大型的总控系统得到了日益广泛的应用,与之相关的视频分割技术水平也在逐步提高,该技术是把用多屏拼接显示的方式来显示一路视频信号,在一些需要使用大屏幕显示的场景应用广泛。
随着技术水平的进步, 视频分割技术逐步成熟,满足了人们对于清晰视频图像的基本需求、 FPGA 芯片硬件结构比较特殊,可以利用事先编辑的逻辑结构文件调整内部结构,利用约束的文件来调整不同逻辑单元的连接和位 置,妥善处理好数据线路径,其自身具有的灵活性和适应性方便用户的开发和应用。在处理视频信号时,FPGA芯片可以充分利用自身的速度和结构优势,实现兵乓技术和流水线技术。在对外连接的过程中,芯片采用数据并行连接的方式,使图像信息的位宽拓宽,利用内部的逻辑功能提高图像处理的速度。通过高速缓存结构以及时钟管理实现对图像处理以及其他设备的控制。在整体的设计结构中,FPGA芯片处于核心位置,复杂数据的插值处理以及提取和存储,还起到总体控制的作用,保证系统的稳定运行。另外,视频信息处理与其他数据处理不同,需要芯片具有特殊的逻辑单元以及RAM或者FIFO单元,保证提高足够的数据传输速度。2
数据延迟器和存储设计FPGA具有可编程的延迟数字单元,在通信系统和各类电子设备中有着比较广泛的应 用,比如同步通信系统,时间数值化系统等,主要的设计方法包括数控延迟线法,存储器法,计数器法等,其中存储器法主要是利用 FPGA的RAM或者FIFO实现的。
利用 FPGA 对SD卡相关数据进行读写可 以依据具体算法的需求低FPGA芯片开展编程,更加实际情况的变化实现读写操作的不断更新。这种模式之下只需要利用原有的芯片便可以实现对SD卡的有效控制,明显降低了系统的成本。2
通信行业通常情况下,通信行业综合考虑成本以及运营等各方面的因素,在终端设备数量比较多的位置,FPGA的用量比较大,基站最适合使用 FPGA,基站几乎每一块板子都需要使用FPGA芯片,而且型号比较高端,可以处理复杂的物理协议,实现逻辑控制。同时,由于基 站的逻辑链路层,物理层的协议部分需要定期更新,也比较适合采用FPGA技术。目前, FPGA主要在通信行业的建设初期和中期应用,后期逐步被ASIC替代。2
其它应用FPGA在安防,工业等领域也有着比较广泛的应用,比如安防领域的视频编码解码等协议在前端数据采集和逻辑控制的过程中可以利用FPGA处理。工业领域主要采用规模较小的FPGA,满足灵活性的需求。另外,由于 FPGA具有比较高的可靠性,因此在军工以及航天领域也有比较广泛的应用。未来,随着技术的不断完善,相关工艺将会完成升级改造, 在诸多新型行业比如大数据等,FPGA将会有更为广泛的应用前景。伴随5G网络的建设, 初期会大量应用FPGA,人工智能等新型的领域也会更多的用到FPGA。2
本词条内容贡献者为:
周红平 - 副研究员 - 合肥工业大学