摘要:现场可编程门阵列(FPGA——Field Programmable Gate Array)是上世纪80年代末发展起来的新型大规模集成逻辑器件。它采用高级计算机辅助设计技术进行器件的开发与设计,其优越性大大超过普通TTL集成门。重点介绍了FPGA的基本组成原理及设计方法。
关键词:现场可编程门阵列;可配置逻辑块;专用集成电路
1 引言
FPGA是上世纪80年代末开始使用的大规模可编程数字集成电路器件。它充分利用计算机辅助设计技术进行器件的开发与应用。用户借助于计算机不仅能自行设计专用集成电路芯片,还可在计算机上进行功能仿真和实时仿真,及时发现问题,调整电路,改进设计方案。这样,设计者不必动手搭接电路、调试验证,只须在计算机上操作很短的时间,即可设计出与实际系统相差无几的理想电路。而且,FPGA器件采用标准化结构,体积小、集成度高、功耗低、速度快,可无限次反复编程,因此,成为科研产品开发及其小型化的首选器件,其应用极为广泛。
2 FPGA的基本组成原理
FPGA的基本组成与生产厂家有关,不同厂家的器件其结构、工艺技术和编程方法各不相同。目前国内广泛使用Xilinx公司生产的FPGA器件。XilinxFPGA采用逻辑单元阵列(Logic Cell Array—简称LCA)结构,其示意图如图1所示。
图1 Xilinx公司FPGA结构图
由图1可知,XilinxFPGA由3个可编程基本单元阵列组成:输入/输出块(I/OBlock—简称I/OB)阵列,可配置逻辑块(Configurable LogicB lock—简称CLB)阵列及可编程互连网络(Programmable Interconnect—简称PI)。其中输入/输出块排列在芯片周围,它是可配置逻辑块与外部引脚的接口。可配置逻辑块是FPGA的核心,它以矩阵形式排列在芯片中心。每个CLB均可实现一个逻辑功能小单元。各CLB之间通过互连网络编程连接,以实现复杂的逻辑功能。
3 FPGA的开发过程
FPGA的开发过程依赖于它的软件开发系统,其设计流程如图2所示。
由图2可知,FPGA的基本设计流程分为3部分:设计输入,设计实现及设计验证。
图2FPGA的基本设计流程
3.1 设计输入
设计输入是将要实现的逻辑关系以开发系统所支持的方式输入计算机,这是设计FPGA的开始。有多种方法实现设计输入,最常用的是原理图编辑器。它允许用2种方式进行设计输入:
1)图形输入这种输入方式允许使用元件库中提供的各种常规门电路及逻辑部件(宏单元)设计电路,并以原理图的方式输入;
2)文本输入这种输入方式允许使用高级可编程逻辑设计语言,如VHDL,ABEL、CUPL语言等编写输入文件,也允许直接用布尔方程进行输入。
设计输入的目的是要产生一个XNF(Xilinx Netlist Format)文件,这是设计实现和设计验证的输入文件。如果同时采用图形输入和文本输入,则还需要进行归并(XNFMERGE)处理,以产生一个完整的XNF文件。
3.2 设计实现
设计实现是设计开发过程的核心,其主要任务是对归并后的XNF文件进行分割、布局和布线。分割是把XNF文件中的逻辑设计经过化简,分割成为以CLB及I/OB为基本单元的逻辑设计。布局是把分割后的逻辑设计分配到FPGA的相应CLB及I/OB位置。布线是对已布局好的CLB,I/OB进行连线。Xilinx开发软件具有自动布局、布线功能,它能在布局、布线过程中采用一系列优化程序,找出最佳布局、布线方案。设计实现的最终目的是产生符合设计要求的比特流文件。这是用来为FPGA芯片装载的二进制文件。
3.3 设计验证
设计验证主要是对电路进行仿真测试。仿真测试包括功能仿真和实时仿真。功能仿真假设信号通过每个逻辑门产生同样的延迟时间(0.1ns),而通过路径没有延时。这种仿真可测试系统功能是否满足设计要求。实时仿真是在布局布线后进行,它能按照所选器件的实际延迟时间进行模拟,主要用来验证系统的时序关系。
设计输入、设计实现和设计验证三个部分交替进行,最后得到完全满足设计要求的二进制文件。用该文件通过加载电缆或编程EPROM对FPGA加载,即可得到用户需要的专用集成电路芯片。
4 FPGA设计方法
4.1 时钟信号分配技术
时钟分配网络是FPGA芯片中的特殊布线资源,由特定的引脚和特定的驱动器驱动,只能驱动芯片上触发器的时钟输入端或除了时钟输入端外有限的一些负载,其反相功能一般可在可编程逻辑块(CLB)或可编程输入输出块(I/OB)内部实现,其目的是为设计提供小延迟偏差的时钟信号。因此,FPGA特别适合于同步电路设计技术,尽可能减少使用的时钟信号种类。而在TTL电路设计中经常采用的由组合逻辑生成多个时钟,然后分别驱动多个触发器以装入和保持数据的设计方法,对FPGA设计是不适用的。因为,这样做会使得时钟种类很多,不能利用专用的时钟驱动器和专用的时钟布线资源,时钟信号只能由通用的布线资源拼凑而成,各个负载点上的时钟延迟偏差很大,会引起数据保持时间问题,降低工作速度。
对FPGA设计而言,更有效的方法是使用一个时钟信号,而由组合逻辑生成多个时钟使能信号,分别驱动触发器的时钟使能端,所有触发器的数据装入都由同一个时钟控制,但只有时钟使能信号有效的触发器才会装入数据,时钟使能信号无效的触发器则保持数据。这种方法充分发挥了FPGA器件体系结构的优势,是设计者应该尽量使用的设计技巧。
4.2 人工干预自动布局布线
经过FPGA生产厂家的不断努力,FPGA自动设计工具逐渐趋于完善,可以获得较高的布通率和芯片资源利用率。对一般应用,使用自动设计工具往往就可以了。但对于一些性能要求较高或者逻辑功能比较复杂的设计来说,FPGA自动设计工具的自动布局、布线结果往往不能满足要求,此时比较有效的方法就是在原理图一级手工干预逻辑分割和布局布线,以及使用强迫文件(CST文件)干预自动布局布线。对于XC200,XC300系列FPGA设计,用户可使用CLBMAP机制控制逻辑分割,将某些功能映射到特定的可编程逻辑块(CLB)中;对于XC400系列的FPGA设计,可使用FMAP和HMAP机制实现逻辑分割。此外,可以通过元件符号定位机制(LOC=)控制触发器、三态驱动器、可编程逻辑块等在芯片中的指定位置。一般来说,使用三态驱动器构成内部三态总线和使用XC4000系列的硬宏单元时人工指定位置,否则自动布局布线的结果往往很差。
4.3采用冗余技术
重复设置相同的电路单元以尽可能地减轻信号负载和缩短互连延迟,是FPGA设计中获取高性能的一种常用方法。同时,在使用多片FPGA芯片时,重复设置相同的电路单元,可以减少对FPGA芯片引脚数量的需求。因为,随着FPGA芯片引脚数的增加,其成本也大幅度增加。在设计中采用此项技术,对降低成本取得了较好的效果。
5 结语
FPGA是一种非常有前途的新技术,很适合于科研工作中的样机、新产品及一些生产量不是特别大的产品。对于批量较大产品可以通过板图优化制成ASIC以降低成本。本文主要是针对XILINX公司的XC300,XC400系列FPGA及其开发工具来进行讨论的。正确使用FPGA的资源及其设计工具,使之适合FPGA体系结构的特点,对设计结果的影响非常大。
作者简介
聂涛(1973-),男,华南理工大学电力学院2000级电力电子与电力传动硕士研究生。