1984年,Xilinx公司开发了一种新型的集成电路芯片FPGA。伴随EDA( Electronic Design Automation )技术的发展,FPGA的开发和使用越来越便利。 从理论角度理解EDA,可以认为EDA是以计算机和微电子技术为先导,汇集数据库、计算机图形学、图论与拓扑逻辑、计算数学、优化理论及微电子工艺结构学等学科成果的先进技术。
从技术应用角度理解EDA,可以认为EDA是以大规模集成电路为设计载体,以硬件描述语言为表达方式,以计算机为设计环境,利用软件开发工具自动完成设计系统的编译、化简、综合、仿真、布局布线、优化,完成对FPGA的适配、映射、编程下载,将系统集成到FPGA。
如果要完成FPGA设计,设计者需借助EDA技术,用硬件描述语言完成对系统的描述,其他工作都交给计算机及其软件工具完成。 本章首先将介绍EDA技术的相关问题,介绍如何选择开发工具,FPGA在一个实际电子系统中究竟承担什么任务,电子系统中如何使用FPGA。
第2章 FPGA设计综述 2.1 EDA技术发展 2.2 EDA系统构成 2.3 FPGA开发工具 2.4 FPGA设计资源
2.1 EDA技术发展 EDA技术伴随计算机、集成电路、电子系统设计发展,经历了三个发展阶段: 20世纪60年代中期~20世纪80年代初期:计算机辅助设计CAD(Computer Assist Design) 20世纪80年代初初期~20世纪90年代初期:计算机辅助工程设计CAED(Computer Assist Engineering Design) 20世纪90年代以来:电子系统设计自动化ESDA(Electronic System Design Automation)
1.CAD阶段 随着集成电路的出现和应用,电子系统设计进入到发展的初级阶段,人们选用大量中小规模标准集成电路,根据集成电路的摆放位置以及它们之间的连接关系进行布图布线,设计出PCB(Printed Circuit Board)板,再将这些器件焊接在PCB板上,做成电子系统,对电子系统的调试是在组装好的PCB板上进行的。人们将产品设计过程中高重复性的繁杂劳动,如布图布线工作用二维图形编辑与分析的CAD工具替代,CAD阶段最具代表性的产品就是美国ACCEL公司开发的Tango布线软件。
在EDA技术发展初期,PCB布图布线工具受到计算机工作平台的制约,能支持的设计工作有限且性能比较差。 20世纪80年代初,随着集成电路规模的增大,EDA技术有了较快的发展,许多软件公司,如:Mentor、Logic System等公司进入市场,开始出现带电路图编辑工具和逻辑模拟工具的EDA软件,每个软件只能完成其中的一项工作,在产品开发的不同阶段分别使用不同的开发软件,不能提供系统级的仿真与综合。
2.CAED阶段 CAD阶段的自动布局布线工具代替了设计工作中绘图的重复劳动,80年代CAED阶段的EDA工具则代替了设计师的部分设计工作,在电子系统的设计、制造最佳的电子产品起到关键作用。
80年代计算机的发展,使得以科学计算为主的计算机步入辅助工程设计的工作站阶段。工作站平台不单只是计算机计算能力的增强,更重要的是人机图形界面标准的发展,三维图形造型、窗口技术、UNIX操作系统、网络上的数据交换、数据库以及进程管理等一系列计算机科学最新成果的引入。80年代后期,EDA的相关工具已经可以进行设计描述、综合与优化和设计结果验证,由于采用了统一数据管理技术,因此,能将各个软件工具集成为一个CAED系统,实现从设计输入到版图输出的全程设计自动化。 CAED阶段的EDA工具不仅为成功开发电子产品创造了有利条件,而且为高级设计人员的创造性劳动提供了方便。但是,大部分从原理图出发的EDA工具仍然不能适应复杂电子系统设计的要求,而且具体化的元件图形制约着优化设计。
3.ESDA阶段 ESDA阶段的EDA工具为设计师提供了全线的系统设计工具,使电子系统工程师在不熟悉各种半导体厂家和各种半导体工艺的情况下,完成电子系统的设计。 20世纪90年代,设计师逐步从使用硬件转向设计硬件,从电路级电子产品开发转向系统级电子产品开发,EDA工具以系统级设计为核心,包括系统行为级描述与结构级综合,系统仿真与测试验证,系统划分与指标分配,系统决策与文件生成等一整套的电子系统设计自动化工具。EDA工具不仅具有电子系统设计的能力,而且能提供独立于工艺和厂家的系统级设计能力,具有高级抽象的设计构思手段。
ESDA阶段的EDA技术主要特征: (1)采用硬件描述语言,支持不同层次的描述,使设计描述更加规范化,便于传递、交流、保存、修改以及重复利用。 (2)采用高层次综合:设计层次提高到系统级,或称为行为级,并划分为逻辑综合与测试综合,保证系统设计结果稳定可靠地工作。 (3)建立并行设计框架:使用统一的数据库管理系统与完善的通信管理系统,共享数据库和知识库,并行进行设计。 (4)软硬件协调设计与验证:弥补了软件设计与硬件设计之间的空隙,保证了软硬件之间的同步协调工作。
2.2 EDA系统构成 EDA技术研究的对象是电子设计的全过程,有系统级、电路级和物理级各个层次的设计;涉及的电子系统从低频、高频到微波,从线性到非线性,从模拟到数字,从通用集成电路到专用集成电路构造的电子系统,因此EDA技术研究的范畴相当广泛。
(1) 设计输入子模块:该模块接受用户的设计描述,并进行语义正确性、语法规则的检查,检查通过后,将用户的设计描述数据转换为EDA软件系统的内部数据格式,存入设计数据库被其他子模块调用。设计输入子模块不仅能接受图形描述输入、硬件描述语言(HDL)描述输入,还能接受图文混合描述输入。该子模块一般包含针对不同描述方式的编辑器,如图形编辑器、文本编辑器等,同时包含对应的分析器。 (2) 设计数据库子模块:该模块存放系统提供的库单元以及用户的设计描述和中间设计结果。
(3) 分析验证子模块:该模块包括各个层次的模拟验证、设计规则的检查、故障诊断等。 (4) 综合仿真子模块:该模块包括各个层次的综合工具,理想的情况是:从高层次到低层次的综合仿真全部由EDA工具自动实现。
(5) 布局布线子模块:该模块实现由逻辑设计到物理实现的映射,因此与物理实现的方式密切相关。例如,最终的物理实现可以是门阵列、可编程逻辑器件等,由于对应的器件不同,因此各自的布局布线工具会有很大的差异。 近些年,许多生产可编程逻辑器件的公司都相继推出适于开发自己公司器件的EDA工具,这些工具一般都具有上面提到的各个模块,操作简单,对硬件环境要求低,运行平台是PC机和Windows或Windows NT操作系统。如Xilinx、Altera、Lattice、Actel、AMD等器件公司都有自己的EDA工具。
从FPGA开发与应用角度看,EDA系统应当包含以下五个子模块: 1设计输入子模块 2设计数据库子模块 3分析验证子模块 4综合仿真子模块 5布局布线子模块等。 全球提供EDA软件工具的厂商有近百家之多,可以分为两大类:一类是EDA专业软件公司开发的通用EDA软件工具,另一类是半导体器件厂商,为了销售公司产品开发的专用EDA软件工具。
通用EDA软件工具:具有良好的标准化和兼容性,与半导体器件厂商无关。通用EDA软件工具对硬件环境以及操作系统要求比较高,工具资金投入比较大。这些工具功能齐全、性能优良,涉及电子设计的许多领域,如数字电路设计、模拟电路设计、数模混合设计、通信系统设计、自动测试向量生成、仿真综合、仿真验证、电磁兼容设计、IC设计等。比较著名的EDA专业软件公司有:Cadence、Mentor 、Synopsys 等
专用EDA软件工具:世界上比较有名的PLD器件厂商有Altera、Xilinx、Lattice、Actel、AMD等。这些器件公司开发的EDA软件工具,只能用来开发本公司的PLD器件,这些工具一般都具有前面提到的5个基本模块,操作简单,对硬件环境要求低,资金投入小。专用EDA软件工具可以针对本公司器件的特点进行优化设计,在资源利用率、降低功耗、改善性能等方面都有优势。
软件设计工具
2.3 FPGA开发工具 全球专用EDA工具很多,这里只介绍目前设计师常用的针对FPGA开发的专用工具。 Altera公司工具:MAX+plusII和QuartusII,工具易学易用,具有可视化界面、集成设计环境、工业标准的工具接口等。设计人员无需精通器件的内部原理,只需运用自己熟悉的输入方法进行设计,通过MAX+plusII和QuartusII把设计转换为器件下载所需要的文件格式。
Xilinx公司工具:早期的Foundation和目前的ISE 。根据PLD的设计流程,这些集成软件开发系统包含设计流程所需要的各种开发工具,如项目管理器、设计输入工具、逻辑综合工具、布局布线工具、下载编程工具以及IP Core产生工具等。 Lattice公司工具:公司已推出第四代开发软件ispDesign EXPERT。在这之前,先后有pDS开发软件、ispSynario System 开发软件和ispEXPERT System开发软件,这些开发软件均可对该公司的所有ispLSI器件进行设计文件的输入、编译、仿真、下载。
2.4 FPGA设计资源 开始FPGA设计,首先面临的就是开发工具的选择。一般希望选择低成本或是免费开发工具和设计资源。根据FPGA芯片型号,可以选择该公司提供的FPGA设计工具。例如,选择Xilinx公司的FPGA芯片,可以使用该公司的开发工具ISE。选择Altera公司的FPGA芯片,可以使用该公司的开发工具QuartusII。 接着,是设计资源的选择。对于规模大且功能复杂的FPGA设计,如果所有的设计都从头开始不切实际,效率低。解决方法可以是:通用模块的设计可以选择已有的设计模块,而把精力放在系统中独特的设计部分。已有的通用设计模块称为IP(Intellectual Property)核。
IP核资源一般分为软核和硬核。软核指的是以硬件描述语言进行描述的设计模块,允许用户调用、或者重新定义性能参数的IP核。硬核指的是以版图形式描述的设计模块,由于硬核基于一定的设计工艺,设计者不能对其进行改动。目前,大量的IP产品已经开始销售和使用,各种微处理器、通用串行接口、中断控制器、并行输入输出接口、直接存储器存取、数字信号处理器、PCI总线以及各种存储器等等都有其商品化的IP核可供选用。基于IP复用的开发给设计者带来了诸多的便利:节省时间、缩短开发周期、避免重复劳动等。
FPGA设计过程中使用IP核的来源有三个方面:自行设计多年积累的IP核、FPGA厂商提供的IP核、第三方提供的IP核。 FPGA厂商提供的IP核有两类,一类免费,一类付费。免费资源已经集成在FPGA开发环境中,可以直接使用,设计者应当充分使用这类资源。付费资源可以从FPGA厂商网站上获得信息。 第三方提供的IP核也有免费和付费两类。免费IP核可以登录工业界的开源IP库网站:www.opencores.org,在Opencores网站中已经积累了算术单元、通信控制器、协处理器、密码处理器、数字信号处理器、嵌入式处理器等大量的免费资源。这些资源的合理使用可以有效地提高FPGA设计效率。
2.5 FPGA应用系统举例 多功能函数发生器:可以产生正弦波、三角波、方波和锯齿波等四种函数信号且频率可调。系统设置两个拨动开关A、B,实现四种函数信号的选择: (1)拨动开关AB=00时,产生方波信号; (2)拨动开关AB=01时,产生锯齿信号; (3)拨动开关AB=10时,产生三角波信号; (4)拨动开关AB=11时,产生正弦波信号。
多功能函数发生器系统框图:FPGA是大规模数字集成芯片,函数发生器要求产生的信号有模拟信号,因此除了需要FPGA,还需要数模转换器DAC芯片,将FPGA产生的数字信号转换成模拟信号输出,系统框图如图所示。 FPGA芯片提供两种功能:一是根据多功能函数发生器的设计要求,产生四种函数信号,根据拨动开关的位置,输出某种函数的数字信号。二是将函数数字信号送至数模转换器,根据数模转换器的信号时序要求,产生与模数转换器协调配合的控制信号,使模数转换器输出该函数的模拟信号。
数模转换器 FPGA 时钟信号 A B 函数信号输出 简易多功能函数发生器系统框图
数字系统的设计一般采用自顶向下、由粗到细、逐步求精的方法。自顶向下是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子系统关系合理,并便于逻辑电路级的设计和实现为止。采用该方法设计时,高层设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细的描述在下一设计层次说明,最底层的设计才涉及具体的寄存器和逻辑门电路等实现方式的描述。
对FPGA内部各模块进行调试,调试通过后下载到FPGA芯片中。连接 FPGA与DAC芯片,系统运行。用示波器测试DAC模拟电压端Vo,调整开关A、B,观察到的输出波形如图所示。