2 FPGA技术及硬件描述语言
2.1 FPGA的介绍
2.1.1 可编程逻辑器件发展简史
随着微电子设计技术与工艺的发展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路逐步发展到今天的专用集成电路(ASIC)。ASIC的出现降低了产品的生产成本,提高了系统的可靠性,缩小了设计的物理尺寸,推动了社会的数字化进程。但是ASIC因其设计周期长,改版投资大,灵活性差等缺陷制约着它的应用范围。硬件工程师希望有一种更灵活的设计方法,根据需要,在实验室就能设计、更改大规模数字逻辑,研制自己的ASIC并马上投入使用,这是提出可编程逻辑器件的基本思想。可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。从早期的只能存储少量数据,完成简单逻辑功能的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM),发展到能完成中大规模的数字逻辑功能的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL),今天已经发展成为可以完成超大规模的复杂组合逻辑与时序逻辑的复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。随着工艺技术的发展与市场的需要,超大规模、高速、低功耗的新型FPGA/CPLD不断推陈出新。新一代的FPGA甚至集成了中央处理器(CPU)或数字处理器(DSP)内核,在一片FPGA上进行软硬件协同设计,为实现片上可编程系统(SOPC, System On Programmable Chip)提供了强大的硬件支持。 2.1.2 可编程逻辑器件的基本结构
可编程逻辑器件的基木结构如图2.1所示。由输入控制电路、与阵列、或阵列以及输出控制电路组成。在输入控制电路中,输入信号经过输入缓冲单元产生每个输入变量的原变量和反变量,并作为与阵列的输入项。与阵列由若干个与门组成,输入缓冲单元提供的各输入项被有选择地连接到各个与门输入端,每个与门的输出则是部分输入变量的乘积项。各与门输出又作为或阵列的输入,这样或阵列的输出就是输入变量的与或形式。输出控制电路将或阵列输出的与或式通过三态门、寄存器等电路,一方面产生输出信号,另一方面作为反馈信号送回输入端,以便实现更复杂的逻辑功能。因此,利用可编程逻
3
辑器件可以方便地实现各种逻辑功能。
输入 输入控制输出2.1.3 可编程逻辑器件分类
广义上讲,可编程逻辑器件是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。目前常用的可编程逻辑器件主要有简单的逻辑阵列(PAL/GAL)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)等3大类。 1、PAL/GAL
PAL是Programmable Array Logic的缩写,即可编程阵列逻辑;GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。PAL/GAL是早期可编程逻辑器件的发展形式,其特点是大多基于E2CMOS工艺,结构较为简单,可编程逻辑单元多为与、或阵列,可编程逻辑单元密度较低,仅能使用于某些简单的数字逻辑电路。虽然PAL/GAL密度较低,但是它们一出现即以其低功耗,低成本、高可靠性、软件可编程、可重复更改等特点引发了数字电路领域的巨大震动。虽然目前较复杂的逻辑电路一般使用CPLD甚至FPGA 完成,但是对应很多简单的数字逻辑电路,GAL等简单的可编程逻辑器件仍然被大量使用。目前,国内外很多对成本十分敏感的设计都在使用GAL等低成本可编程逻辑器件,越来越多的74系列逻辑电路被GAL取代。GAL等器件发展至今已经近20年了,新一代的GAL以功能灵活,小封装、低成本、重复可编程、应用灵活等特点依然在数字电路领域扮演着重要的角色。目前比较大的GAL器件供应商主要是Lattice半导体。 2、CPLD
CPLD是Complex Programmable Logic Device的缩写,即复杂的可编程逻辑器件。CPLD是在PAL、GAL的基础上发展起来的,一般也采用称为E2CMOS工艺,也有少数厂商采用Flash工艺,其基本结构由可编程I/O单元、基本逻辑单元、布线池和其他辅助
4
…… 与阵列或阵列输出控制…… 图2.1 可编程逻辑器件的基木结构
功能模块构成。CPLD可实现的逻辑功能比PAL、GAL有了大幅度的提升,一般可以完成设计中较复杂、较高速度的逻辑功能,如接口转换、总线控制等。CPLD的主要器件供应商有Altera、Lattice 和Xilinx等。 3、FPGA
FPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列。FPGA是在CPLD的基础上发展起来的新型高性能可编程逻辑器件,它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。FPGA的基本组成部分有可编程输入/输出单元,基本可编程逻辑单元、嵌入式RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。FPGA的主要器件供应商有Xilinx、Altera、Lattice、Actel和Atmel等。
2.1.4 Altera Cyclone Ⅱ系列器件介绍
Altera Cyclone Ⅱ采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMC成功的90nm工艺技术为基础,Cyclone Ⅱ器件提供了4,608到68,416个逻辑单元(LE),并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。
Cyclone Ⅱ器件扩展了FPGA在成本敏感性、大批量应用领域的影响力,延续了第一代Cyclone器件系列的成功。Cyclone Ⅱ器件包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装,这些都为诸如视频显示、数字电视DTV)、机顶盒STB)、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进行了优化。本设计正是采用Cyclone Ⅱ系列的芯片EP2C35672C6。该芯片的空间足够应付该系统所需要的资源。
2.1.5 FPGA的开发流程
FPGA开发基本流程包括:设计输入、设计仿真、设计综合、布局布线等,它们的连接关系如图2.2所示。图2.2中FPGA开发流程图设计综合是整个FPGA设计流程中一个
5
重要的步骤,它将HDL代码生成用于布局布线的网表和相应的约束。而且随着新一代FPGA芯片频率和密度的增长,时序收敛问题越来越严重,综合已经成为整个设计成败的关键。通常芯片供应商的FPGA软件中都包含综合功能,但它相对简单,不能适应新一代FPGA芯片的发展,需要更加专业的综合工具。
图2.2 Altera FPGA的开发流程
2.2 FPGA设计方法
在FPGA设计中,有许多重要的原则和规律可循,掌握这些原则和规律,人们可以设计出许多高性能的电子系统。
6