基于Quartus II的FPGA/CPLD设计实例精解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 可编程器件开发

PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。

PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于20 世纪70年代单片机的出现和使用。可以毫不夸张地说,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74系列电路,都可以用PLD来实现。PLD如同一张白纸,工程师可以通过传统的原理图输入法,或是硬件描述语言,自由地设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。PLD的这些优点使得PLD技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。

如何使用PLD呢?其实PLD的使用很简单,学习PLD比学习单片机要简单得多,有数字电路基础,会使用计算机,就可以进行PLD的开发。不熟悉PLD的朋友,可以先看一看可编程逻辑器件的发展历程。开发PLD需要PLD开发软件和PLD芯片。

1.PLD开发软件

由于PLD软件已经发展得相当完善,用户甚至可以不用详细了解PLD的内部结构,就能用自己熟悉的方法,如原理图输入或HDL语言来完成相当优秀的PLD设计。所以对初学者来说,首先应了解PLD开发软件和开发流程。了解PLD的内部结构,将有助于提高我们设计的效率和可靠性。

获得PLD开发软件的途径非常多。许多PLD公司都提供免费试用版或演示版(当然商业版大都是收费的),例如可以免费从http://www.altera.com/ 上下载Altera公司的Maxplus II(Baseline版或E+MAX版),或向其代理商索取这套软件。Xilinx公司也提供免费软件:WebPack可以从Xilinx网站下载。Lattice、Actel等公司也都有类似的免费软件提供。以上免费软件都需要在网上注册申请License文件。通常这些免费软件已经能够满足一般设计的需要,要想软件功能更强大一些,只能购买商业版软件。

如果打算使用VHDL或Verilog HDL硬件描述语言来开发PLD/FPGA,通常还需要使用一些专业的HDL开发软件,这是因为FPGA厂商提供的软件的HDL综合能力一般都不是很强,需要其他软件来配合使用。

对于PLD产品,一般分为两类:

(1)基于乘积项(Product-Term)技术,一般用于EEPROM(或Flash)工艺的中小规模PLD。

(2)基于查找表(Look-Up Table)技术,一般用于SRAM工艺的大规模PLD/FPGA。

EEPROM工艺的PLD密度小,多用于5000门以下的小规模设计,适合做复杂的组合逻辑,如译码。SRAM工艺的PLD(FPGA),密度高,触发器多,多用于10000门以上的大规模设计,适合做复杂的时序逻辑,如数字信号处理和各种算法。

2.PLD开发

在PLD/FPGA开发软件中完成设计以后,软件会产生一个最终的编程文件(如.pof)。应如何将编程文件烧到PLD芯片中去呢?

对于基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的PLD(如Altera的MAX系列,Xilinx的XC9500系列),厂家提供编程电缆,如Altera公司的叫做Byteblaster。电缆一端装在计算机的并行打印口上,另一端接在PCB板上的一个十芯插头上,PLD芯片有4个引脚(编程脚)与插头相连,如图1-1所示。

图1-1 PLD芯片与插头相连

下载电缆向系统板上的器件提供配置或编程数据,这就是所谓的在线可编程(ISP)。下载电缆使用户能够独立地配置PLD器件,而不需要编程器或任何其他编程硬件。编程电缆可以向代理商购买,也可以根据厂家提供的编程电缆的原理图自己制作。早期的PLD是不支持ISP的,它们需要用编程器烧写。目前的PLD都可以用ISP在线编程,也可用编程器编程。这种PLD可以加密,并且很难解密。具体应用步骤如图1-2所示。

图1-2 应用步骤

对于基于查找表技术(Look-Up Table)的SRAM工艺的FPGA(如Altera的所有FLEX、ACEX、APEX系列,Xilinx的Spartan、Virtex),由于SRAM工艺的特点,断电后数据会消失,因此调试期间可以用下载电缆配置PLD器件,调试完成后,需要将数据固化在一个专用的EEPROM中(用通用编程器烧写),上电时,由这片配置EEPROM先对PLD加载数据,十几毫秒后,PLD即可正常工作(也可由CPU配置PLD)。但SRAM工艺的PLD一般不可以加密。

对于另一种反熔丝(Anti-fuse)技术的FPGA,如Actel、Quicklogic的部分产品就采用这种工艺,其用法与EEPOM的PLD一样,但这种PLD不能重复擦写,所以初期开发过程比较麻烦,费用也比较高昂。但反熔丝技术也有许多优点,例如,布线能力更强,系统速度更快,功耗更低,同时抗辐射能力强,耐高低温,可以加密,所以在一些有特殊要求的领域中运用较多,如军事及航空航天。

3.ISP技术与开发流程

20世纪90年代初,在系统可编程(In-System Programmability,ISP)技术首先应用于可编程逻辑器件,它改变了数字电子系统的设计和实现方法,为人们提供了更为方便的EDA手段。所谓“在系统可编程”,是指可编程器件在不脱离所在应用系统的情况下,能够通过计算机对其进行编程,而不需要专用的编程器。

进行ASIC与FPGA/CPLD电路设计,通常可将设计流程归纳为以下7个步骤。

第1步:设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自20世纪90年代初以后,Verilog、VHDL、AHDL等硬件描述语言的输入方法得到了广大工程设计人员的认可。

第2步:布线前仿真。所设计的电路必须在布局布线前进行验证,主要目的是在仿真时,验证电路功能是否有效。在ASIC设计中,这一步骤称为第一次Sign-off。

第3步:设计输入编译。设计输入之后就有一个从高层次系统行为设计向低层次门级逻辑电路的转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为底层软件能够识别的某种数据格式(网表),以求达到与其工艺无关。

第4步:设计输入的优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果替代一些复杂的单元,并与指定的库映射生成新的网表。

第5 步:布局布线。当初步的仿真被验证后,就开始布局布线。这一步可规划出ASIC和FPGA/CPLD设计。

第6步:后仿真。设计人员需要利用在布局布线中获得的更精确的RC参数再次验证电路的功能和时序。在ASIC设计中,这一步骤称为第二次Sign-off。

第7步:流片。在布局布线和后仿真完成之后,当需要大批量生产该芯片时,就可以开始ASIC芯片的投产了。