可编程逻辑器件的设计过程可编程逻辑器件的设计流程主要包括设计准备、设计输入、设计处理和器件编程四个步骤,同时包括相应的功能仿真、时序仿真和器件测试三个设计验证过程。
1.设计准备 采用有效的设计方案是PLD设计成功的关键,因此在设计输入之前首先要考虑两个问题:一是选择系统方案,进行抽象的逻辑设计;二是选择合适的器件,满足设计的要求。 对于低密度PLD,一般可以进行书面逻辑设计,将电路的逻辑功能直接用逻辑方程、真值表状态图或原理图等方式进行描述,然后根据整个电路输入、输出端数以及所需要的资源(门、触发器数目)选择能满足设计要求的器件系列和型号。器件的选择除了应考虑器件的引脚数、资源外,还要考虑其速度、功耗以及结构特点。 对于高密度PLD,系统方案的选择通常采用“自顶向下”的设计方法。首先在顶层进行功能框图的划分和结构设计,然后再逐级设计低层的结构。一般,描述系统总功能的模块放在最上层,称为顶层设计;描述系统某一部分功能的模块放在下层,称为底层设计。底层模块还可以再向下分层。这种“自顶向下”和分层次的设计方法使整个系统设计变得简洁和方便,并且有利于提高设计的成功率。目前系统方案的设计工作和器件的选择都可以在计算机上完成,设计者可以采用国际标准的两种硬件描述语言-VHDL或Verilog-对系统级进行功能描述,并选用各种不同的芯片进行平衡、比较,选择最佳结果。 2.设计输入 设计者将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程,称为设计输入。它通常有原理图输入、硬件描述语言输入及波形输入等多种方式。 原理图输入是一种最直接的输入方式,它大多数用于对系统或电路结构很熟悉的场合。但系统较大时,这种方法的相对输入效率较低。 硬件描述语言是用文本方式描述设计,它分为普通的硬件描述语言和行为描述语言。行为描述语言是指高层硬件描述语言VHDL和Verilog,它们有许多突出的优点:语言的公开可利用性、便于组织大规模系统的设计、具有很强的逻辑描述和仿真功能,而且输入效率高、在不同的设计输入库之间转换也非常方便。 普通硬件描述语言有ABEL-HDL、CUPL等,它们支持逻辑方程、真值表、状态机等逻辑表达方式。 3.设计处理 从设计输入完成以后到编程文件产生的整个编译、适配过程,通常称为设计处理或设计实现。它是器件设计中的核心环节,是由计算机自动完成的,设计者只能通过设置参数来控制其处理过程。在编译过程中,编译软件对设计输入文件进行逻辑化简、综合和优化,并适当地选用一个或多个器件自动进行适配和布局、布线,最后产生编程用的编程文件。 编程文件是可供器件编程使用的数据文件。对于阵列型PLD来说,是产生熔丝图文件(简称JED)文件,它是电子器件工程联合会制定的标准格式;对于FPGA来说,是生成位流数据文件。 4.设计校验 设计校验过程包括功能仿真和时序仿真,这两项工作是在设计输入和设计处理过程中同时进行的。功能仿真是在设计输入完成以后的逻辑功能检证,又称前仿真,它没有延时信息,对于初步功能检测非常方便。时序仿真在选择好器件并完成布局、布线之后进行,又称后仿真或定时仿真,它可以用来分析系统中各部分的时序关系以及仿真设计性能。 5.器件编程 编程是指将编程数据放到具体的PLD中去。对阵列型PLD来说,是将JED文件“下载”到PLD中去;对FPGA来说,是将位流数据文件“配置”到器件中去。 器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。普通的PLD和一次性编程的FPGA需要专用的编程器完成器件的编程工作;基于SRAM的FPGA可以由EPROM或微处理器进行配置;ISP在系统编程器件则不需要专门的编程器,只要一根下载编程电缆就可以了。