FPGA/CPLD应用技术(Verilog语言版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 EDA技术

知识分部网络

1.3.1 电子系统设计方法

随着可编程逻辑器件的不断发展,特别是20世纪90年代以后,电子设计自动化EDA技术的发展和普及,使数字电子系统的设计方法和设计手段发生了革命性的变化。由传统的基于电路板的自底向上(Bottom-Up)的设计方法,逐渐转变成基于芯片的自顶向下(Top-Down)的设计方法。

1.传统的电子系统设计方法

传统的电子系统设计一般基于电路板设计,采用自底向上的设计方法。系统硬件的设计从选择具体逻辑元器件开始,再用这些元器件进行逻辑电路设计,完成系统各独立功能模块设计,然后将各功能模块连接起来,完成整个系统的硬件设计,如图1.59所示。

从最低层设计开始,到最高层设计完毕,因而称为自底向上的设计方法。这种设计方法的主要特征是:

图1.59 自底向上设计方法示意图

(1)采用通用的逻辑元器件;

(2)仿真和调试在系统设计后期进行;

(3)主要设计文件是电原理图。

采用传统的设计方法,熟悉硬件的设计人员凭借其设计经验,可以在很短的时间内完成各个子电路模块的设计。而由于一般的设计人员对系统的整体功能把握不足,使得将各个子模块进行组合构建完成系统调试实现整个系统的功能所需的时间比较长,并且使用这种方法对设计人员之间相互协作有比较高的要求。

2.现代电子系统设计方法

20世纪80年代初,在硬件电路设计中开始采用计算机辅助设计技术CAD(Computer Aided Design)。最初仅仅是利用计算机软件来实现印制板的布线,之后实现了插件板级规模的电子电路的设计和仿真。

随着大规模可编程逻辑器件FPGA/CPLD的发展,各种新兴EDA工具的出现,传统的电路板设计开始转向基于芯片的设计。基于芯片的设计不仅可以通过芯片设计实现多种数字逻辑系统功能,而且由于管脚定义的灵活性,大大减少了电路图设计和电路板设计的工作量,提高了设计效率,增强了设计的灵活性;同时减少了芯片的数量,缩小了系统体积,提高了系统的可靠性。因此,基于芯片的设计方法目前正在成为现代电子系统设计的主流。

小提示

从前面的实践中我们知道,基于芯片设计必需的工具和器件有:计算机、可编程逻辑器件FPGA/CPLD以及EDA工具软件。具备了以上条件,在实验室就可以完成数字系统的设计和生产了。

新的基于芯片的设计采用自顶向下(Top-down)的设计方法,就是从系统总体要求出发,自上而下地逐步将设计内容细化,最后完成系统硬件的整体设计,如图1.60所示。

图1.60 自顶向下设计示意图

这种设计方法的主要特征是:

(1)采用FPGA/CPLD,电路设计更加合理,具有开放性和标准化;

(2)采用系统设计早期仿真;

(3)主要设计文件是用硬件描述语言HDL(Hardware Description Language)编写的源程序。

采用这种设计方法,在设计周期伊始就做好了系统分析、系统方案的总体论证,将系统划分为若干个可操作模块,进行任务和指标分配,对较高层次模块进行功能仿真和调试,所以能够早期发现结构设计上的错误,避免设计工作的浪费,帮助设计人员避免不必要的重复设计,提高了设计的一次成功率。

1.3.2 FPGA/CPLD进行电路设计的一般流程

FPGA/CPLD进行电路设计的过程是指在计算机上利用EDA工具软件对FPGA/CPLD器件进行开发设计的过程,一般包括设计准备、设计输入、功能仿真、设计实现、时序仿真、下载编程和器件测试七个步骤,如图1.61所示。

图1.61 FPGA/CPLD进行电路设计的一般流程

1.设计准备

设计准备阶段是FPGA/CPLD进行电路设计的第一步,包括方案论证、系统设计、器件选择等工作。

2.设计输入

设计输入阶段就是设计者将设计电路以某种方式输入到计算机中。设计输入通常有以下几种方式:原理图输入方式、HDL硬件描述语言输入方式、波形输入方式、层次设计输入方式、状态机图表输入方式,等等。前两种是比较常用的输入方式。

(1)原理图输入方式,与传统的原理图设计类似,用最直接的图形化的方式描述设计电路,使用工具软件提供的元件库中的符号,用连线画出原理图。这种输入方式是大家最习惯的方式,直观简单,便于仿真,但原理图设计效率低,对设计人员要求高。

(2)HDL硬件描述语言输入方式,用文本方式输入设计电路,是EDA设计的基本特征之一。目前常用的硬件描述语言有VHDL(Very High speed Description Language)、Verilog-HDL等。因为语言与工艺无关,采用这种方式输入设计电路,设计人员对底层电路和PLD结构不必太熟悉,而且便于实现大规模系统的设计;缺点是硬件描述语言必须依赖综合器,综合器的好坏直接影响到生成电路的质量。

3.功能仿真

功能仿真也称为前仿真。在编译之前对设计的电路进行逻辑功能验证,初步检测电路功能是否正确。仿真时首先要建立波形文件或测试向量,仿真结果一般是输出信号波形和报告文件等。

4.设计实现

设计电路的逻辑功能验证正确后,就可以进入电路的设计实现环节了。设计实现是FPGA/CPLD 进行电路设计的关键步骤,工具软件将对设计输入文件(原理图或文本等)进行逻辑化简、综合优化和适配,最后产生编程下载需要的编程文件。

5.时序仿真

时序仿真一般称为后仿真,是把设计电路与具体实现器件(FPGA/CPLD)结合起来的仿真。因为不同的器件内部延时不一样,不同的布局布线方案也会产生不同的延时。因此,时序仿真是增加了延时信息后对设计电路的仿真,是仿真电路在器件中实现后,作为真实器件工作时的情况。

6.下载编程

下载编程是将设计实现阶段生成的编程文件装入到目标器件FPGA/CPLD中,也就是将设计电路在具体器件中实现。

7.器件测试

器件测试就是指器件在编程实现后,可以用编译产生的文件对器件进行校验、加密等工作,当然,利用实验板对器件的性能进行现场测试也是十分必要的。

知识梳理与总结

本章从简单的数字系统设计任务入手,介绍了现代数字系统设计的软硬件环境及基本设计流程,并在实践中逐渐熟悉Quatus Ⅱ软件的使用方法,对可编程逻辑器件建立了从外部到内部、从直观到抽象的认识过程,为后面章节的学习打下基础。

本章重点内容如下:

  • 数字系统设计开发环境
  • Quatus Ⅱ软件的使用
  • Quatus Ⅱ软件设计流程
  • 可编程逻辑器件基本概念
  • 可编程逻辑器件基本结构
  • EDA基本概念
  • 现代数字系统设计基本方法

习题1

一、填空题

1.进位数制之间的转换。

(1)(25)10=( )2=( )16

(2)(101101)2=( )10=( )16

(3)(3F)16=( )2=( )10

2.任务1中的设计步骤包括以下5步:_____、_____、_____、_____和_____。

3.Quartus Ⅱ是_____公司新一代的EDA设计工具,由该公司早先的MAXPLUS Ⅱ演变而来。

4.按照时间顺序,可编程逻辑器件大致经历了以下发展阶段:_____、_____、_____、_____、_____、_____、_____。

5.可编程逻辑器件从集成密度上分类,可分为_____和_____。

6.可编程逻辑器件从结构上将其分为两大类:_____和_____;简单可编程逻辑器件都是_____结构器件。

7.简单可编程逻辑器件的基本结构包括_____、_____、_____和_____。

8.复杂可编程逻辑器件的基本资源包括四部分_____、_____、_____和_____。

9.EDA的中文意思是_______________,是由以下三个英文单词_____、_____和_____的首字母组合而成的。

10.HDL的中文意思是_______________,是由以下三个英文单词_____、_____和_____的首字母组合而成的。

11.写出下列英语缩写词的完整英语单词及中文翻译。

PROM__________ PLA__________

PAL__________ GAL__________

EPLD__________ CPLD__________

FPGA__________ VHDL__________

ISP__________ LUT__________

PLD__________ LAB__________

CAD__________

12.写出下列英文单词的中文意思。

(1)project__________ (2)wizard__________

(3)device__________ (4)package__________

(5)pin__________ (6)family__________

(7)schematic__________ (8)diagram__________

(9)block__________ (10)symbol__________

(11)input__________ (12)output__________

(13)compilation__________ (14)message__________

(15)analysis__________ (16)synthesis__________

(17)fitter__________ (18)assembler__________

(19)report__________ (20)waveform__________

(21)node__________ (22)simulator__________

(23)functional__________ (24)timing__________

(25)assignment__________ (26)fuse__________

(27)Interconnect__________ (28)macrocell__________

(29)Product Terms__________ (30)carry__________

二、问答题

1.画出Quartus Ⅱ软件的完整设计流程。

2.简述任务1中的设计步骤。

3.用图示说明简单可编程逻辑器件的基本结构。

4.画出4选1数据选择器的输入/输出结构及真值表。

5.简述FPGA的一般设计流程。