1.FPGA概述
在数字化、信息化的时代,数字集成电路应用非常广泛。随着微电子技术与工艺的发展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路(very large scale integration circuit,VLSIC)逐步发展到今天的专用集成电路(application specific integra-tion circuit,ASIC)。ASIC的出现降低了产品的生产成本,提高了系统的可靠性,减少了产品的物理尺寸,推动了社会的数字化进程。但是ASIC有设计周期长、改版投资大、灵活性差等缺陷,其应用范围受到制约。人们希望有一种更灵活的设计方法,在实验室就能设计、更改大规模数字逻辑,这就是可编程逻辑器件提出的基本思想。从早期的可编程只读存储器(programmable read-only memory,PROM),到今天已经发展到可以完成超大规模的复杂组合逻辑与时序逻辑的现场可编程门阵列(field programmable gatearray,FPGA)和复杂可编程逻辑元器件(complex programmable logic device,CPLD)。随着工艺技术的发展与市场的需要,新一代的FPGA甚至集成了中央处理器(central processing unit,CPU)或数字信号处理器(digital signal processing,DSP)内核,在一片FPGA上进行软硬件协同设计,它可以为实现片上可编程系统(system on programmable chip,SOPC)提供强大的硬件支持。FPGA是可编程逻辑器件,它可以替代几十甚至几千块通用IC芯片,实际上就是一个子系统部件。
FPGA的结构主要有4部分:输入/输出模块、二维逻辑阵列模块、连线资源和内嵌存储器结构,如图8-1所示。输入/输出模块是芯片与外界的接口,可实现不同电气特性下的输入/输出功能要求;二维逻辑阵列模块是可编程逻辑的主体,可以根据设计灵活地改变连接与设置,完成不同的逻辑功能;连线资源连接所有的二维逻辑阵列模块和输入/输出模块,连线长度和工艺决定着信号在连线上的驱动能力和传输速度;内嵌存储器结构可以在芯片内部存储数据。
Spartan-Ⅱ系列的FPGA芯片主要包括可配置逻辑块(configurable logic blocks,CLB)、I/O块、RAM块和可编程连线。1个CLB包括2个薄片(Slice),每个薄片包括2个LUT、2个触发器和相关逻辑。薄片可以看成是Spartan-Ⅱ实现逻辑的最基本结构。每个薄片中包括2个查找表,查找表(look up table,LUT)本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16×1的RAM。当用户通过原理图或HDL(hardware description language)描述了一个逻辑电路以后,开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。Spartan-Ⅱ系列FP-GA芯片典型电路执行时间见表8-1。
图8-1 可编程门阵列(FPGA)的结构
表8-1 Spartan-Ⅱ系列FPGA芯片典型电路执行时间
FPGA既继承了ASIC的大规模、高集成度、高可靠性的优点,又克服了普通ASIC设计周期长、投资大、灵活性差的缺点,逐步成为复杂数字硬件电路设计的首选。FPGA具有以下特点:
1)规模越来越大。随着VLSIC工艺的不断提高,单一芯片内部可以容纳上百万个晶体管。FPGA芯片的规模也越来越大,单片逻辑门数已达百万级。芯片的规模越大,所能实现的功能就越强,同时也更适于实现片上系统(system on chip,SoC)。
2)开发过程投资小。FPGA芯片在出厂之前都做过百分之百的测试,而且FPGA设计灵活,发现错误时可直接更改设计,减少了投片风险,节省了许多潜在的花费。
3)用户可以反复地编程、擦除、使用,或者在外围电路不动的情况下用不同软件就可实现不同的功能。用FPGA试制样片,能以最快的速度占领市场。FPGA软件包中有各种输入工具和仿真工具,以及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGA的优势。电路设计人员使用FPGA进行电路设计时,不需要具备专门的集成电路(integrated circuit,IC)深层次的知识。FPGA软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。
4)新型FPGA内嵌CPU或DSP内核,支持软硬件协同设计,可以作为片上可编程系统(SOPC)的硬件平台。
2.VHDL语言
VHDL的英文全名是Very-High-Speed Intergrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本IEEE-1076(简称87版)之后,各EDA(electronic design automation)公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的应用,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL主要用于描述数字系统的结构、行为、功能和接口。除了包含有许多具有硬件结构特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体定义成有内、外部区分的概念是VHDL系统设计的基本点。
由于VHDL语言的通用性,它已经成为支持不同层次设计者要求的一种标准硬件描述语言。VHDL语言能够成为标准并且获得广泛的应用,有其自身的优势。
1)与其他的硬件语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。VHDL语言具有功能强大的语言结构,可以用简洁明确的程序来描述复杂的逻辑控制。为了有效控制设计的实现,它具有多层次的设计描述功能,支持设计库和可重复使用的元件生成;而且它还支持阶层设计和提供模块设计的创建。同时,VHDL语言还支持同步电路、异步电路和随机电路的设计,这是其他的硬件描述语言所不能比拟的。
2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。它的可移植功能是允许设计人员对需要综合的设计描述进行模拟,在综合前对一个数千门的设计描述进行模拟可以节约大量可观的时间。由于VHDL语言是一种标准化的硬件描述语言,因此同一个设计的VHDL语言描述可以被不同的EDA工具支持,从而使得VHDL语言程序可以很方便地在不同的模拟、综合工具之间或者工作平台之间移植。
3)VHDL丰富的仿真语句和库函数,使得在任何大系统设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。独立于器件的设计和可进行程序移植允许设计人员可以采用不同的器件结构和综合工具来对自己的设计进行模拟。设计人员可以进行一个完整的VHDL语言描述,并且可以对它进行综合,生成选定的器件结构的逻辑功能,然后再对设计结果进行仿真模拟,最后选用最适合该设计的逻辑器件。
4)VHDL对设计的描述具有相对独立性。设计人员采用VHDL语言进行设计时,并不需要首先选择完成此项设计的逻辑器件。这样,设计人员就可以集中时间来进行硬件电路系统的具体设计,而不需要考虑其他的问题。当采用VHDL语言完成硬件电路系统的功能描述后,可以使用不同的逻辑器件来实现其功能。
5)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变成门级网表。这样,当设计的产品数量达到相当的规模时,就可以很容易地帮助设计人员实现转成ASIC的设计,可以确保ASIC厂商生产高质量的器件产品。(www.xing528.com)
3.设计流程
一个完整的FPGA设计流程包括电路设计与输入、功能仿真、综合、综合后仿真、实现等主要步骤,如图8-2所示。
其中电路设计与输入是根据工程师的设计方法将所设计的功能描述给EDA软件。常用的设计输入方法有硬件描述语言(HDL语言)和原理图设计输入方法。波形输入和状态集输入是两种常用的辅助设计方法,但这两种方法只能在某些特殊情况下用于缓解设计者的工作量,并不适合所有的设计。
电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。常用的仿真工具有ModelTech公司的Model-sim、Synopsys公司的VCS、Cadence公司的NC-VHDL等。通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。
图8-2 FPGA设计流程
综合优化是指将HDL语言、原理图等设计输入翻译成由与门、或门、非门、RAM、寄存器等基本逻辑单元组成的连接(网表),并根据目标与要求(约束条件)优化所生成的连接,输出相关配置文件,供FPGA厂家的布局布线器进行实现。常用的专业综合优化工具有Synplicity公司的Synplify、Synopsys公司的FPGA CompilerII等。另外,FPGA/CPLD厂商的集成开发环境也带有一些综合工具,如XilinxISE等。
综合完成后需要检查综合结果是否与原设计一致,需要做综合后仿真。在仿真时,把综合生成的延时文件反标到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但与布线后的实际情况还有一定差距,并不十分准确。这种仿真的主要目的在于检查综合器的综合结果是否与设计输入一致。
综合结束以后,使用FPGA厂商提供的工具软件,根据所选芯片的型号,将综合后输出的逻辑网表适配到FPGA器件上,这个过程称为实现过程。以XILINX公司的器件为例,它就包括翻译、映射、布局布线3个步骤。
布局布线之后为时序仿真。时序仿真中应该将布局布线的延时文件反标到设计中,使仿真既包含门延时,又包含线延时信息。与前面各种仿真相比,这种后仿真包含的延时信息最为全面、准确,能较好地反映芯片的实际工作情况。
设计开发的最后步骤就是在线调试或者将生成的配置文件写入到芯片进行测试。
每个仿真步骤如果出现问题,需要根据错误的定位返回到相应的步骤更改或重新设计。
4.XILINX公司的Spartan-II系列FPGA
XILINX公司于1984年发明了FPGA,并连续推出一代又一代集成度高、速度更快的新型器件。从XC3000、XC4000到Spartan和VirtexFPGA,XILINX公司在FPGA产品的可编程逻辑性能及使用灵活性方面一直保持着领导地位,因此根据整个系统设计的特点以及数据采集系统所要达到的高速、多通道的功能,选择XILNX公司Spartan-II系列器件XS2S100- PQ208。此系列FPGA的一些主要性能特点如下:
1)多标准接口。通过使用不同的参考电压和内部电阻,Spartan-II系列芯片的I/O接口可以支持多种电压标准,便于和众多外部RAM及总线标准接口。
2)高性能。Spartan-II系列器件采用基于XC4000系列器件的流水线结构,并且提供高带宽的片内分布式RAM和块RAM,可以方便地配置为FIFO、双口RAM等,特别适合于需要高速存储器而容量要求不高的应用。
3)快速。Spartan-II系列器件系统速度超过80MHz,它具有专用的快速进位逻辑,可进行快速的数学运算。
4)在系统可编程。所有的Spartan-II系列的器件均含有JTAG测试接口电路,具有5V或3.3V在系统可编程能力,可进行无限次编程/擦除操作,而且具有完全的回读能力,以方便编程校验和观察内部节点。
5)驱动负载能力和抗干扰性能较强。Spatran-II系列器件的每个输入/输出口负载电流为12mA,且都具有单独可编程的输出摆率控制,从而减少了噪声。
6)丰富的内部互连资源。Spatran-II系列FPGA具有丰富的内部互连线,支持内部三态。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。