基于Quartus Prime 的FPGACPLD 数字系统设计实例(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-08 10:34:18

点击下载

作者:周润景,南志贤,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于Quartus Prime 的FPGACPLD 数字系统设计实例

基于Quartus Prime 的FPGACPLD 数字系统设计实例试读:

前言

随着电子技术、计算机应用技术和EDA技术的不断发展,利用FPGA/CPLD进行数字系统的开发已经被广泛应用于通信、航天、医疗电子、工业控制等领域。与传统电路设计方法相比,FPGA/CPLD具有功能强大、开发过程投资少、周期短、便于修改及开发工具智能化等特点。近年来,FPGA/CPLD市场发展迅速,并且随着电子工艺的不断改进,低成本、高性能的FPGA/CPLD器件推陈出新,从而促使FPGA/CPLD成为当今硬件设计的首选方式之一。熟练掌握FPGA/CPLD设计技术已经是对电子工程师的基本要求。

VHDL语言是国际标准的硬件描述语言,本书实例中的文本编辑均采用VHDL语言编写,并且书中实例均通过仿真和硬件测试。

本书通过实例介绍Altera公司最新推出的以Quartus Prime16.1为设计平台的FPGA/CPLD数字系统设计,由浅入深地介绍数字系统开发的设计流程、设计思想和设计技巧。

Quartus Prime16.1是Altera公司最新推出的革命性的设计软件,其前端用户界面的使用与以前软件版本相比还是同样方便,而在后端增加了Spectra-Q引擎,采用一组更快、更易于扩展的新算法,前所未有地缩短了编译时间,提高了设计性能。这一引擎还具有分层数据库,保留了IP模块的布局布线,保证了设计的稳定性,同时避免了不必要的时序收敛投入。Quartus Prime设计软件还在多个Arria@10设计上展示了极高的设计性能和设计人员效能。

本书共分为12章。第1章介绍了利用Quartus Prime进行FPGA/CPLD设计的开发流程,包括设计输入、约束输入、综合、布局布线、仿真、编程与配置等。第2章介绍了Quartus Prime的使用,包括原理图编辑、文本编辑和混合编辑的设计方法。第3~7章介绍了VHDL硬件描述语言,以及简单的数字电路实例,包括门电路、组合逻辑电路、触发器、时序逻辑电路以及存储器的设计方法。第8章介绍了课程设计中涉及的数字系统设计实例,使读者熟练掌握Quartus Prime的使用方法和VHDL语言。第9章介绍了宏模块及IP核的使用方法和简单的应用实例。第10章介绍了ModelSim、TimeQuest、SignalTap Ⅱ与Quartus Prime的结合使用方法及简单的应用实例,VHDL硬件调试,以及在VHDL设计当中使用库模块的方法。第11章和第12章介绍了两个大型的数字系统的设计实例,使读者能更深入地掌握数字系统的设计方法。

本书由周润景、南志贤和张玉光编著。其中,南志贤编写了第1章和第2章,张玉光编写了第3章和第4章,周润景编写了第5~12章。全书由周润景负责统稿。参加本书编写的还有邵绪晨、李楠、邵盟、冯震、刘波、李艳、崔婧、陈萌、井探亮、丁岩、李志和任自鑫。

由于作者水平有限,书中难免存在错误和不足之处,敬请读者批评指正。编 著 者第1章数字集成电路概述与Altera Quartus Prime开发流程1.1 数字集成电路概述

近年来,电子设计的飞速发展使得数字电路的研究及应用出现了广阔的发展空间。使用现场可编程门阵列(Field Programmable Gate Array,FPGA)或复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)的设计软件可以将设计好的程序烧写入FPGA 器件中,如同自行设计集成电路一样,可节省电路开发的费用与时间。

1.1.1 数字集成电路的分类

尽管本书的学习目标是如何利用可编程逻辑器件实现要求的设计功能,但是考察可供选择的各种器件对数字系统的设计者来说还是有益的,因为它有助于我们更好地理解所有可供选择的方案,同时也可以意识到虽然描述数字系统和数字电路的方法及用来实现这些方法的技术在不断变化,但是基本原理并没有改变。

现代数字系统中所使用的数字电路几乎都是集成电路。使用集成电路实现系统功能比使用分立元件具有电路体积小、可靠性高等优点。从20世纪60年代开始,数字集成电路在集成度方面的发展经历了以下四个阶段:①包含数十到数百个逻辑门的小规模集成电路(Small Scale Integration,SSI);②包含数百到数千个逻辑门的中规模集成电路(Medium Scale Integration,MSI);③包含数千到数万个逻辑门的大规模集成电路(Large Scale Integration,LSI);④包含数万个以上逻辑门的超大规模集成电路(Very Large Scale Integration,VLSI)。在工作原理方面,数字集成电路又可以划分为标准逻辑器件、微处理器和专用集成电路。

1.标准逻辑器件

标准逻辑器件在集成度方面属于中小规模集成电路。它包括各种逻辑门、触发器、译码器、多路选择器、寄存器和计数器等器件。标准逻辑器件有三种主要类型:TTL、CMOS和ECL。TTL是一种成熟的技术,新的系统设计已经很少采用TTL逻辑器件,但是正在运行的系统中仍然包含这种器件。CMOS器件是当前最流行的标准逻辑器件,它的优点是功耗低。ECL器件主要用于高速系统中。

作为传统数字系统设计中使用的主要器件,标准逻辑器件已经使用了40多年。标准逻辑器件的产量很大,生产成本低廉,价格便宜。如果设计不很复杂,这些器件仍然是很实用的。标准逻辑器件对于研究数字系统基本构成模块的工作原理具有重要的意义,它在许多基础的理论和实验教学课程中仍然占据重要的位置。

标准逻辑器件由于集成度较低,采用它们设计数字系统需要较多的器件,这就使得电路连线复杂,系统的可靠性降低。由于用户无法修改这类器件的功能,修改系统设计必须通过对电路重新设计和组装来实现。

2.微处理器

数字技术已经进入众多的领域,其中数字计算机是最著名和应用最广泛的产品。尽管计算机影响了人类生活的许多方面,但是许多人并不完全知道计算机能干些什么。简单地说,计算机是一个能完成算术运算、逻辑运算、数据处理和做出判断的数字系统。个人计算机(PC)是最常见的计算机,它由一些数字集成电路芯片组成,这些芯片包括微处理器芯片、存储器芯片及输入/输出(I/O)接口芯片等。在大多数情况下,凡是人能做的,计算机都能做,而且计算机还能干得更快、更精确。尽管事实上计算机每次只能完成所有计算中的一步,但是计算机完成每一步的速度非常快,它的高速度弥补了它的低效率。

计算机依靠所运行的软件(程序)来完成工作。这个软件是人们给计算机的一组完整的指令,指令告诉计算机其操作的每一步应该干什么。这些指令以二进制代码的形式存储在计算机的存储器中,计算机从存储器中一次读取一条指令代码,并完成由指令代码指定的操作。

通过编写软件可以控制计算机完成不同的工作,这个特点使得设计灵活性得到提高。当修改系统设计时,设计者只需要改变软件,不需要或者较少需要修改电路连线。由于计算机一次只能执行一条指令,因此它的主要局限性是工作速度。采用硬件方案设计的数字系统总是比软件方案的数字系统的工作速度快。

集成电路制造工艺的发展使得在一个芯片上制造大量的数字电路成为可能,这也促进了计算机技术的发展。把计算机中的微处理器芯片、存储器芯片及输入/输出接口芯片等做在一块芯片上就形成单片机,有的文献上也将其称为微控制器。这种单芯片的微控制器的性能价格比非常高,它在工程中应用非常广泛,例如,仪表控制、数控机床、自动提款机、复印机、汽车的防抱死制动系统(ABS)、医疗设备等。

3.专用集成电路

专用集成电路(Application Specific Integrated Circuit,ASIC)的出现在一定程度上克服了上述两种逻辑器件的缺点。专用集成电路是为了满足一种或几种特定功能而专门设计和制作的集成电路芯片,它的集成度很高。一片专用集成电路芯片甚至可以构成一个完整的数字系统,因此,这使得系统的硬件规模进一步降低,可靠性进一步提高。

专用集成电路可以分为全定制(Full Custom)产品、半定制(Semi-custom)产品和可编程逻辑器件(Programmable Logic Device,PLD)。

1)全定制产品 全定制产品是指专为特定目的设计、制造的集成电路芯片,如电视机、电话等设备中大量使用的专用集成电路芯片。这类产品的设计从晶体管的版图尺寸、位置和相互连线开始进行,其目的是达到半导体芯片面积利用率高、工作速度快、功耗低的优良性能。专用集成电路芯片的制作过程包括电路设计、逻辑模拟、版图设计和集成电路的全部生产工序。全定制产品的性能优越,但是它的设计制造成本高、周期长,同时还具有较大的风险,因此该产品仅适用于需要进行特大批量生产的情况。

2)半定制产品 半定制产品内部包含基本逻辑门、触发器和具有特定功能的逻辑块所构成的标准单元。这些标准单元由器件生产厂家预先做好,但是标准单元之间的连线有待按用户要求进行连接。应用半定制产品时,用户需要根据设计要求选择合适的产品,再由产品的结构设计出连线版图,最后交给生产厂家完成各个标准单元之间的连线。

3)可编程逻辑器件 全定制产品和半定制产品的使用都离不开器件生产厂家的支持,这给用户带来很多麻烦。用户希望自己能设计专用集成电路芯片,并且能立即投入到实际应用之中,而且在使用中也能比较方便地对设计进行修改。可编程逻辑器件就是为满足这一需求而产生的。可编程逻辑器件内的电路和连线都是事先由器件生产厂家做好的,但是其逻辑功能并没有确定。逻辑功能的确定可以由设计者借助于开发工具,通过编写软件的方法来实现。可编程逻辑器件的工作速度与标准逻辑器件工作速度相当,但目前使用它们实现信号处理比使用微处理器要复杂,而且使用成本较高。

1.1.2 标准逻辑器件简介

标准逻辑器件是“数字电路逻辑设计”课程中用来组成数字电路系统的主要器件。“数字电路逻辑设计”课程中介绍的数字电路描述方法不仅适用于由标准逻辑器件组成的电路,而且也适用于在本书将要学习的由可编程逻辑器件组成的电路。

1.数字电路的描述

数字电路也称为逻辑电路。数字电路的任意一个I/O信号仅存在两种可能的状态:高电平或低电平。由于二进制数也只用两个数字(即0和1),因此它适合用来表示数字信号。布尔代数是一种描述逻辑关系的数学工具,利用这种数学工具,数字电路输入信号与输出信号之间的关系(简称I/O关系)可以用代数方程(布尔表达式)来描述。布尔代数中的数只有两种可能的取值,与普通代数相比,布尔代数容易计算。布尔代数仅有三种基本运算:与(AND)、或(OR)和非(NOT)。

布尔代数不仅可以作为分析和简化数字电路的工具,而且也可以作为数字电路的设计工具,用来设计满足给定I/O关系的逻辑电路。用于数字电路分析与设计的其他方法还包括真值表、电路图、时序图及本书将要讨论的硬件描述语言。如果对这些描述方法进行分类,则可以认为:布尔代数利用数学表达式来描述电路I/O关系;真值表利用数字来描述电路I/O关系;电路图利用符号来描述电路I/O关系;时序图利用信号波形来描述电路I/O关系;硬件描述语言利用文本来描述电路I/O关系。

布尔表达式可以通过化简获得一个比较简单的形式。简单的形式可用简单的电路来实现,这个简单电路与原电路在功能上等效,但是使用较少的器件,包含较少的连线。进一步来看,这样也提高了电路的可靠性,因为相互之间的连线减少,减少了可能的潜在电路故障。常用的化简方法有代数法和卡诺图法两种。

2.组合逻辑电路

当一个电路的逻辑功能用布尔表达式给出时,具体的逻辑电路图则可以直接由表达式画出。适用于简单例子的原理可以推广到复杂的电路。

在组合逻辑电路中,常用的中规模逻辑器件还有编码器、译码器、数据选择器、数据分配器及加法器等。这些中规模逻辑器件也由门电路构成,读者可以参考相关器件的数据手册。

布尔代数仅有三种基本运算,即与(AND)、或(OR)和非(NOT),由这三种布尔代数基本运算的组合就能获得需要的输出。

3.时序逻辑电路

有些逻辑电路被当作组合电路。组合电路是指在任何时刻,输出状态只取决于该时刻电路输入状态的组合,而与先前电路的状态无关的逻辑电路。无论是控制电路还是数据显示电路,它们的输出只与电路当时的输入有关,与电路先前的状态无关,因此它们都是组合逻辑电路。

但是,有些逻辑电路的输出不仅取决于当前时刻各输入状态的组合,而且还与先前电路的状态有关,即需要记忆功能。这样的逻辑电路称为时序逻辑电路。组合逻辑电路的输出只与电路当前的输入有关;时序逻辑电路的输出则不仅与电路当前的输入有关,而且还与电路上一个状态有关。

最基本的具有记忆功能的电路是触发器,它也由逻辑门组成。逻辑门本身没有记忆能力,但是几个逻辑门组合起来就具有了记忆能力。图1-1-1给出边沿触发的J-K触发器的内部电路及其电路符号,表1-1-1给出功能表。图1-1-1 边沿触发的J-K触发器的内部电路及其电路符号表1-1-1 边沿触发的J-K触发器的功能表

在表1-1-1的第2行,J=0,K=0,时钟跳变时触发器保持原有状态;在第3行,J=0,K=1,时钟跳变时无论前一个输出状态是什么,输出状态都清零;在第4行,J=1,K=0,时钟跳变时无论前一个输出状态是什么,输出状态都置位;在第5行,J=1,K=1,时钟跳变时输出状态发生翻转。

对于时序逻辑电路,常用的中规模逻辑器件还有其他形式的计数器和寄存器等器件。这些中规模逻辑器件也由门电路和触发器构成,读者可以参考相关器件的数据手册。

任意组合逻辑电路都可以由与门、或门和非门这样的逻辑门组成。逻辑门本身没有记忆能力,但是几个逻辑门组合起来可以组成触发器,就具有了记忆能力。把逻辑门和触发器结合起来就可以组成各种时序逻辑电路。综上所述,与门、或门和非门这样的逻辑门是数字电路或数字系统的最基本单元,换句话说,应用与门、或门和非门这样的逻辑门就可以实现所有逻辑功能。

1.1.3 可编程逻辑器件简介

1.可编程逻辑器件基础

在介绍可编程逻辑器件前,我们再次回顾一下基于标准逻辑器件的数字电路设计过程。首先定义I/O变量,即确定设计I/O信号,并指定变量名称。然后写出描述I/O关系的真值表。真值表是描述电路如何工作的方法之一,描述电路工作原理的另一种方法是布尔表达式。利用布尔表达式就可以用逻辑门符号画出电路图。最后是选择合适的数字集成电路器件组装实际电路。你也许有这样的体会,组装实际电路的过程最麻烦,既费时间又容易出错。如果需要修改电路功能,电路还必须重新组装。

可编程逻辑器件能使组装电路这个烦人的步骤借助计算机和相关的开发软件来完成,因此现在许多数字系统采用可编程逻辑器件实现以提高设计效率。为支持计算机的工作,可编程逻辑器件提供了硬件基础。由数字电路逻辑设计相关的知识,可以得到以下结论:与门、或门和非门这样的基本逻辑门能够组成任何组合逻辑电路;这样的基本逻辑门也能够组成触发器,使电路具有存储能力;组合电路加上存储元件就构成了时序逻辑电路。

可编程逻辑器件的基本原理结构图如图1-1-2所示。图1-1-2 可编程逻辑器件的基本原理结构图

输出缓冲电路中通常包括触发器,输出信号可以直接输出,也可以通过触发器输出。触发器的输出信号还可以反馈回来以实现时序电路。

图1-1-2也可以看作CPLD的原理结构图,这种“与—或”结构组成的可编程逻辑器件的功能比较简单。可编程逻辑器件还有一种基于查找表的逻辑形成方法。查找表的功能就像真值表,对于每一组输入组合存储0或1,从而产生所要求的组合函数。由于使用多个查找表构成一个查找表阵列,因此这种器件称为FPGA。

2.可编程逻辑器件内部电路描述

图1-1-3给出一个简单的可编程逻辑器件的内部电路图。这个器件具有两个输入端:A和B。两个同相缓冲器和两个反相缓冲器构成输入缓冲电路,输入信号A和B分别经过同相缓冲器和反相缓冲器产生原变量和反变量。这些原变量和反变量连接到与门阵列的输入线。与阵列由4个与门组成,它们能够产生两个输入信号的所有组合的与运算,为此每个与门分别连接到两条不同的输入线。与门的输出也称作乘积项线,它们把与运算的结果送到或阵列。

每条乘积项线通过熔丝与每个4输入或门的一个输入端相连。1个4输入或门能够实现一个布尔表达式,采用多个4输入或门能够实现多个布尔表达式。由于所有熔丝的原始状态是完好的,因此每个或门的输出为1。以或门1为例,未编程前它的输出为

烧断熔丝的或门输入端被认为是逻辑0,通过有选择地烧断熔丝,每一个或门的输出都能产生变量A 和B 的任意函数。例如,设计或门1的输入端1和输入端4 的熔丝被烧断,则或门4的输出为

又如,设计或门2的输入端1、输入端2和输入端3的熔丝被烧断,则或门2的输出为

图1-1-3给出的电路仅有两个输入信号,但是电路图已经很复杂了,具有许多连线。实际使用的可编程逻辑器件可能具有几十甚至上百个输入/输出引脚,如果画出其内部电路,将是非常复杂的,以致无法使用。为了简化电路的绘制,描述可编程逻辑器件内部电路时采用了不同于以前的基于标准逻辑器件电路绘制的特殊方法。图 1-1-4 所示为使用这种特殊方法重新绘制的可编程逻辑器件内部电路图。图1-1-3 可编程逻辑器件内部电路图(1)图1-1-4 可编程逻辑器件内部电路图(2)

对于图1-1-4所示的电路图,与基于标准逻辑器件电路绘制的区别为:一是用具有两个输出端的单个缓冲器代替原来的同相缓冲器和反相缓冲器,新缓冲器的两个输出端,一个表示同相,另一个表示反相;二是与门和或门虽然图上只画了一条输入线,但是它表示该逻辑门具有多个输入信号,行线和列线之间具有多少个交叉点,表示该逻辑门具有多少个输入端。

逻辑门的输入线上的交叉点表示该逻辑门的输入端,但是这些输入端的一些可能与输入信号相连接,另一些可能与输入信号不连接。如果在交叉点上具有“·”符号,则表示这个信号与逻辑门为固定连接;如果在交叉点上具有“×”符号,则表示这个信号与逻辑门为编程连接;如果在交叉点上既没有“·”符号也没有“×”符号,则表示这个信号与逻辑门不连接。以图1-1-4所示的电路图为例,它的与门输入端采用固定连接,或门输入端采用编程连接,4个或门的输出分别为

3.可编程逻辑器件内部电路的分类

可编程逻辑器件一直在发展之中,这个发展过程经历了可编程只读存储器(Programmable Read Only Memory,PROM)、可编程逻辑阵列(Programmable Logic Array,PLA)、通用阵列逻辑(Generic Array Logic,GAL),直到复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。可编程逻辑器件也可以按器件的编2程工艺来划分,编程工艺包括熔丝型、EPROM 型、EPROM型、Flash型和SRAM型。1.2 Quartus Prime软件综述

Quartus Prime16.1是Altera公司最新提供的可编程逻辑器件的集成开发软件,包括了从设计输入和综合直至优化、验证和仿真各个阶段设计Altera FPGA、SoC和CPLD所需的一切步骤。Quartus Prime软件提供三种版本:专业版、标准版和精简版。Quartus Prime集成开发软件支持可编程逻辑器件开发的整个过程,它提供一种与器件结构无关的设计环境,使设计者能方便地进行设计输入、设计处理和器件编程。Quartus Prime集成开发软件开发流程如图1-2-1所示。图1-2-1 Quartus Prime集成开发软件开发流程

Quartus Prime16.1集成开发软件要求的平台工作环境为Win7sp1、Win8.1、Win10及部分Linux的64位操作系统。它支持更多种类的可编程逻辑器件的开发,同时也提供在片可编程系统(System On a Programmable Chip,SOPC)设计的综合性环境和基本设计工具。另外,Quartus Prime集成开发软件也可以利用第三方软件的结果,并支持第三方软件的工作。

为加快应用系统的开发,Quartus Prime集成开发软件提供更多的知识产权模块(Intellectual Property,IP)。知识产权模块是一些预先设计好的电路功能模块,在设计中使用这些模块不仅可以加快设计进程,而且还可以提高系统性能。图1-2-2 Quartus Prime集成开发软件的开发流程

Quartus Prime集成开发软件的核心是模块化的编译器。编译器包括的功能模块有分析与综合器(Analysis & Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、设计辅助模块(Design Assistant)及EDA网表文件生成器(EDA Netlist Writer)等。可编程逻辑器件的开发流程为:设计输入、综合、布局和布线、时序分析、仿真,以及可编程逻辑器件的编程和配置。Quartus Prime集成开发软件的开发流程如图1-2-2所示。

Quartus Prime集成开发软件允许用户在开发过程中使用 Quartus Prime图形用户界面、EDA工具界面和命令行界面。用户可以在整个开发过程中使用这些界面中的任意一个,也可以在开发过程中的不同步骤使用不同的界面。

1.2.1 Quartus Prime16.1软件的特点及支持的器件

Quartus Prime16.1具有以下特点:

➢ 和以往的软件版本相比,新版本通过使用新的Hybrid Placer和Global Router算法,平均下来具有一个完整的速率等级优势。

➢ 使用新的BluePrint Platform Designer,可以比以往快10倍。

➢ 使用软件新的重新编译特性,编译时间可以比以往快4倍。

➢ 对扩展的硬件描述语言的支持,其中包括SystemVerilog-2005和VHDL-2008。

Quartus Prime16.1支持的器件:

➢ Quartus Prime软件专业版16.1支持以下器件系列:Arria 10。

➢ Quartus Prime 软件标准版16.1支持以下器件系列:Arria Ⅱ、Arria 10、Arria Ⅴ、ArriaⅤ GZ、Cyclone Ⅳ、Cyclone Ⅴ、MAX Ⅱ、MAX Ⅴ、MAX 10 FPGA、Stratix Ⅳ和Stratix Ⅴ。

➢ Quartus Prime软件精简版16.1支持以下器件系列:Arria Ⅱ、Cyclone Ⅳ、CycloneⅤ、MAX Ⅱ、MAX Ⅴ和MAX 10 FPGA。

1.2.2 Quartus Prime软件的集成工具及其功能简介

Quartus Prime软件允许用户在设计流程的每个阶段使用Quartus Prime软件图形用户界面、EDA工具界面或命令行方式,Quartus Prime软件集成的工具模块如图1-2-3所示。图1-2-3 Quartus Prime软件集成的工具模块

1)设计输入 设计输入即使用Quartus Prime软件的模块输入方式、文本输入方式、Core输入方式和EDA设计输入工具等表达用户的电路构思,同时使用分配编辑器(Assignment Editor)设定初始约束条件。

2)综合 综合是将HDL语言、原理图等设计输入翻译成由与门、或门、非门、RAM和触发器等基本逻辑单元组成的逻辑链接(网络表),并根据目标与要求(约束条件)优化所生成的逻辑链接,输出edf或vqm等标准格式的网络表文件,供布局布线器实现。除了用Quartus Prime软件的“Analysis & Synthesis”命令进行综合外,也可以使用第三方综合工具生成与Quartus Prime软件配合使用的edf网络表文件或vqm文件。

3)布局布线 布局布线输入文件是综合后的网络表文件,Quartus Prime软件中布局布线包含分析布局布线结果、优化布局布线、增量布局布线和通过反向标注分配等。

4)时序分析 允许用户分析设计中所有逻辑的时序性能,并协助引导布局布线以满足设计中的时序分析要求。默认情况下,时序分析作为全编译的一部分自动运行,它观察和报告时序信息,如建立时间、保持时间、时钟至输出延时、最大时钟频率,以及设计的其他时序特性,可以使用时序分析生成的信息分析,调试和验证设计的时序性能。

5)仿真 仿真分为功能仿真和时序仿真。功能仿真用来验证电路功能是否符合设计要求;时序仿真包含了延时信息,它能较好地反映芯片的工作情况。可以使用Quartus Prime集成的仿真工具进行仿真,也可以使用第三方工具对设计进行仿真,如ModelSim仿真工具。

6)编程和配置 在全编译成功后,对Altera器件进行编程和配置,包括Assemble(生成编程文件)、Programmer(建立包含设计所用器件名称和选项的链式文件)和转换编程文件等。

7)系统级设计 系统级设计包括SOPC Builder和DSP Builder。Quartus Prime与SOPC Builder一起为建立SOPC设计提供标准化的图形环境,其中SOPC由CPU、存储器接口、标准外围设备和用户自定义的外围设备等组成。SOPC Builder允许用户选择和自定义系统模块的各个组件和接口,它将这些组件组合起来,生成对这些组件进行实例化的单个系统模块,并自动生成必要的总线逻辑。DSP Builder是帮助用户在易于算法应用的开发环境中建立DSP设计的硬件表示,缩短了DSP设计周期。

8)软件开发 Software Builder是Quartus Prime软件的集成编程工具,它可以将软件源文件转换为用户配置Excalibur器件的闪存格式编程文件或无源格式编程文件。Software Builder在创建编程文件的同时自动生成仿真器初始化文件,仿真器初始化文件指定了存储单元的每个地址的初始值。

9)基于块的设计 LogicLock模块化设计流程支持对复杂设计的某个模块独立地进行设计、实现与优化,并将该模块的实现结果约束在规划好的FPGA区域内。

10)EDA界面 EDA界面中的EDA Netlist Writer生成时序仿真所需要的包含延迟信息的文件,如.vo、.sdo文件等。

11)时序逼近 时序逼近即通过控制综合和设计的布局布线来达到时序目标。使用时序逼近流程可以对复杂的设计进行更快的时序逼近,减少优化迭代次数并自动平衡多个设计约束。

12)调试 SignalTap Ⅱ逻辑分析器和SignalProbe功能可以分析内部器件节点和I/O引脚,同时在系统内以系统速度运行。SignalTap Ⅱ逻辑分析器可以捕获和显示FPGA内部的实时信号行为。SignalProbe可以在不影响设计现有布局布线的情况下将内部电路中特定的信号迅速布线到输出引脚,从而无须对整个设计另作一次全编译。

13)工程更改管理 工程更改管理即在全编译后对设计做的少量修改或调整。这种修改是直接在设计数据库上进行的,而不是修改源代码或配置文件,这样就无须重新运行全编译而快速地实施这些更改。

除了上述集成工具外,Quartus Prime软件还提供第三方工具的链接。第三方工具包括综合工具和仿真工具,其中综合工具有Synplify、SynplifyPro和LeonardoSpectrum;仿真工具有ModelSim和Aldec HDL等,它们都是业内公认的专业综合和仿真工具,以其功能强大、界面友好、易学易用而被广泛使用。

1.2.3 Quartus Prime软件的用户界面

Quartus Prime软件的默认启动界面如图1-2-4所示,由标题栏、菜单栏、工具栏、资源管理窗口、编译状态显示窗口、信息显示窗口和工程工作区等组成。图1-2-4 Quartus Prime软件的默认启动界面

1.标题栏

标题栏显示当前工程的路径和程序的名称。

2.菜单栏

菜单栏主要由文件(File)、编辑(Edit)、视图(View)、工程(Project)、资源分配(Assignments)、操作(Processing)、工具(Tools)、窗口(Window)和帮助(Help)下拉菜单组成。

其中工程(Project)、资源分配(Assignments)、操作(Processing)和工具(Tools)菜单集中了Quartus Prime软件核心的操作命令,下面分别介绍。(1)“Project”菜单主要是对工程的一些操作,包括以下几个命令。

· Add Current File to Project:添加当前文件到本工程。

· Add/Remove Files in Project:添加或移除文件。

· Revisions:创建或删除工程。

· Archive Project:为工程归档或备份。

· Restore Archived Project:恢复工程备份。

· Import Database/Export Database…:导入和导出数据库。

· Import Design Partition/Export Design Partition:导入和导出设计分区。

· Generate Design Partition Scripts:生成设计分区脚本。

· Generate Tcl File for Project:生成工程的Tcl脚本文件。

· Generate PowerPlay Early Power Estimator File:生成估算静态和动态功耗的表单。

· Upgrade IP Components:升级IP器件。

· Organize Quartus Prime Settings File:管理Quartus Prime的设置文件。

· Set as Top-Level Entity:把工程工作区打开的文件设定为顶层文件。

· Hierarchy:打开工程工作区显示的源文件的上一层或下一层的源文件及顶层文件。(2)“Assignments”菜单的主要功能是对工程的参数进行配置,如引脚分配、时序约束、参数设置等。

· Device:设置目标器件型号。

· Settings:打开参数设置页面,可以切换到使用Quartus Prime软件开发流程的每个步骤所需的参数设置页面。

· Assignment Editor:分配编辑器,用于分配引脚、设定引脚电平标准和设置时序约束等。

· Pin Planner:打开引脚分配对话框。

· Remove Assignments:删除设定类型的分配,如引脚分配、时序分配和SignalProbe分配等。

· Back-Annotate Assignments:允许用户在工程中反向标注引脚、逻辑单元、LogicLock区域、节点、布线分配等。

· Import Assignments/Export Assignments:为当前工程导入和导出分配文件。

· Assignment Groups:用于建立引脚分配组。

· LogicLock Regions Window:允许用户查看、创建和编辑LogicLock区域约束,以及导入和导出LogicLock区域约束文件。

· Design Partition Window:打开设计分区窗口。(3)“Processing”菜单包含了对当前工程执行各种设计流程,如综合、布局、布线、时序分析等。(4)“Tools”菜单用来调用Quartus Prime软件中集成的一些工具,如Generate Simulatior Setup Script for IP、Chip Editor、Programmer等。

3.工具栏

工具栏包含了常用命令的快捷图标。将光标移到相应图标时,在光标下方出现此图标对应的注释,而且每种图标在菜单栏均能找到相应的命令菜单。用户可以根据需要将自己常用的功能定制为工具栏上的图标,方便操作。

4.资源管理窗口

资源管理窗口用于显示当前工程中所有相关的资源文件。资源管理窗口左下角有5个标签,分别是结构层次(Hierarchy)、文件(Files)、设计单元(Design Units)、IP元件(IP components)和储量修正(Revisions)。结构层次窗口在工程编译之前只显示顶层模块名,工程编译一次后,此窗口按层次列出工程中所有的模块,并列出每个源文件所用资源的具体情况。顶层显示的可以是用户产生的文本文件,也可以是图形编辑文件。文件窗口列出了工程编译后的所有文件,文件类型有设计器件文件(Design Device Files)、软件文件(Software Files)和其他文件(Others Files)。设计单元窗口列出了工程编译后的所有单元,如AHDL单元、Verilog单元和VHDL单元等,一个设计器件文件对应生成一个设计单元,参数定义文件没有对应设计单元。

5.工程工作区

器件设置、定时约束设置、底层编辑器和编译报告等均显示在工程工作区中,当Quartus Prime实现不同功能时,此区域将打开相应的操作窗口。

6.编译状态显示窗口

编译状态显示窗口主要是显示模块综合、布局布线过程及时间。模块(Module)项列出工程模块;过程(Process)项显示综合、布局布线进度条;时间(Time)项显示综合、布局布线所耗费时间。

7.信息显示窗口

信息显示窗口(Messages)显示Quartus Prime软件综合、布局布线过程中的信息,如综合时调用源文件、库文件,综合布局布线过程中的定时、报警、错误等。如果是报警和错误,则会给出具体的引起报警和错误的原因,方便设计者查找及修改错误。1.3 设计输入

Quartus Prime软件中的工程由所有设计文件和与设计文件相关的设置组成。用户可以使用Quartus Prime原理图输入方式、文本输入方式、模块输入方式和EDA设计输入工具等表达电路构思。设计输入的流程如图1-3-1所示。图1-3-1 设计输入的流程

设计前需要创建新工程,单击“File”菜单中的“New Project Wizard”命令即可。建立工程时,指定工程工作目录,分配工程名称,指定顶层设计实体的名称。还可以指定在工程中使用的设计文件、其他源文件、用户库、EDA工具和目标器件等。

1.3.1 设计输入方式

创建好工程后,需要为其添加设计输入文件。设计输入文件可以是文本形式的文件(如VHDL、VerilogHDL、AHDL等)、存储数据文件(如HEX、MIF等)、原理图设计输入文件和第三方EDA工具产生的文件(如EDIF、HDL、VQM等)。同时,还可以混合使用以上几种设计输入文件进行设计。

1.Verilog HDL/VHDL硬件描述语言设计输入方式

HDL语言设计方法是大型模块化设计工程中最常用的设计方法。目前较为流行的HDL语言有VHDL、Verilog HDL等。它们的共同特点是易于使用自顶向下的设计方法,易于模块划分和复用,移植性强,通用性好,设计不因芯片工艺和结构的改变而变化,利于向ASIC的移植等。HDL语言是纯文本文件,用任何编辑器都可以编辑。有些编辑器集成了语言检查、语法辅助模板等功能,这些功能给HDL语言的设计和调试带来了很大的便利。

2.AHDL(Altera Hard Description Language)输入方式

AHDL是完全集成到Quartus Prime软件系统中的一种高级模块化语言。可以利用Quartus Prime软件文本编辑器或其他的文本编辑器产生AHDL文件。一个工程中可以全部使用AHDL语言,也可以和其他类型的设计文件混用。AHDL语言只能用于使用Altera器件的FPGA/CPLD设计,其代码不能移植到其他厂商器件上(如Xilinx、Lattice等)使用,通用性不强,所以较少使用。

3.模块/原理图输入方式

原理图输入方式是FPGA/CPLD设计的基本方法之一,几乎所有的设计环境都集成了原理图输入法。这种设计方法直观、易用,支撑它的是一个功能强大、分门别类的器件库。然而,由于器件库元件通用性差,导致其移植性差,如更换设计实现的芯片型号时,整个原理图需要进行很大修改甚至是全部重新设计。所以原理图设计方式主要是一种辅助设计方式,它更多应用于混合设计中个别模块设计。

1.3.2 设计方法

在建立设计时,必须考虑Quartus Prime软件提供的设计方法,如LogicLock提供的自顶向下、自底向上和基于块的设计方法。在自顶向下的设计方法中,整个设计只有一个输出网络表,用户可以对整个设计进行跨设计边界和结构层次的优化处理,且管理容易;在自底向上的设计方法中,每个设计模块具有单独的网络表,它允许用户单独编译每个模块,且单个模块的修改不会影响其他模块的优化;基于块的设计方法使用EDA工具和综合工具分别设计和综合各个模块,然后将各模块整合到Quartus Prime软件的最高层设计中。在设计时,用户可根据实际情况灵活使用这些设计方法。

本书第2章将以具体实例,详细地介绍几种常用的设计方法。1.4 约束输入

建立好工程和设计输入之后,需要进行分配引脚和设置时序约束的操作。可以使用分配编辑器、Settings对话框、TimeQuest分析器、引脚规划器、设计划分窗口和时序逼近平面布局来指定初始设计约束,如引脚分配、器件选项、逻辑选项和时序约束等。另外,还可以单击“Assignments”菜单的“Import Assignments”命令或者“Export Assignments”命令,导入和导出分配。Quartus Prime软件还提供时序向导,协助用户指定初始标准时序约束。还可以使用Tcl命令或脚本从其他 EDA 综合工具中导入分配。图1-4-1所示为约束和分配输入流程。图1-4-1 约束和分配输入流程

1)分配引脚 分配引脚是将设计文件的输入/输出信号指定到器件的某个引脚,设置此引脚的电平标准和电流强度等。

2)时序约束 时序约束是为了使高速数字电路的设计满足运行速率方面的要求,在综合和布局布线阶段附加的约束。时序分析工具是以用户的时序约束判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便得到正确的时序分析报告。附加约束还能提高设计的工作速率,它对于分析设计的时序是否满足设计要求非常重要,而且时序约束越全面,对于分析设计的时序就越有帮助。例如,设计中有几个时钟,有一个时钟没有约束,其余时钟都有约束,那么Quartus Prime软件的时序分析工具将不对没有约束的时钟路径作分析。此时设计者将不知道此部分时序是否满足,因此设计者在约束时序时一定要全面。

引脚分配和时序约束通常的做法是设计者编写约束文件并导入到综合和布局布线工具中,在FPGA/CPLD综合和布局布线时指导逻辑映射和布局布线。也可以使用Quartus Prime软件中集成的工具分配编辑器(Assignment Editor)、引脚规划器(Pin Planner)和“Settings”对话框等进行引脚分配和时序约束。

1.4.1 使用分配编辑器

分配编辑器用于建立节点、编辑节点和实体级分配。分配为逻辑指定各种选项和设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配。分配编辑器允许或者禁止单独分配功能,也可以为分配加入注释。使用分配编辑器可以进行标准格式时序分配。对于Synopsys设计约束,必须使用 TimeQuest 时序分析器。

下面介绍使用分配编辑器进行分配的基本流程。(1)选择“Processing”→“Start”→“Start Analysis & Elaboration”命令,分析设计,检查设计的语法和语义错误。(2)选择“Assignments”→“Assignment Editor”命令,弹出如图1-4-2所示的窗口。图1-4-2 分配编辑器(Assignment Editor)窗口(3)在“Category”栏选择相应的分配类别。它包含了当前器件所有分配类别,如Locations(位置)、I/O Standard(I/O标准)、Logic Options(区域约束)、Advanced(高级设置)、Fast Forward Compile(快速前向编译)、Global Signals(全局信号)、I/O Features(I/O特性)、I/O Timing(I/O时序)、Synthesis(综合)。(4)在“I/O Standard”栏里选择电压标准,如图1-4-3所示。图1-4-3 选择电压标准(5)在“Category”栏里选择“I/O Timing”进行时序约束,如图1-4-4所示。图1-4-4 分配编辑器(新建时序约束窗口)(6)在“Form”和“To”栏双击并从弹出的菜单中选择“Node Finder”命令,弹出“Node Finder”对话框,如图1-4-5所示。把需要约束的信号节点添加到选定节点中。图1-4-5 “Node Finder”对话框(7)在图1-4-4中的“Assignment Name”栏选择约束类型,在“Value”栏设置约束值。(8)依次设置其余的时序约束。(9)在“Category”栏选择“All”类别,显示全部约束信息,如图1-4-6所示。图1-4-6 设置约束后的全部信息

建立和编辑约束时,Quartus Prime软件对适用的约束信息进行动态验证。如果约束或约束值无效,Quartus Prime软件不会添加或更新数值,仍然使用当前值。

1.4.2 使用引脚规划器“Assignments”菜单下的可视化引脚规划器是分配引脚和引脚组的另一种工具。它包括了器件的封装视图,以不同的颜色和符号表示不同类型的引脚,并以其他符号表示I/O块。引脚规划器使用的符号与器件数据手册中的符号非常相似。它还包括已分配和未分配引脚的列表。图1-4-7所示为引脚规划器(Pin Planner)窗口。图1-4-7 引脚规划器(Pin Planner)窗口

默认状态下,引脚规划器显示Group列表、All Pins列表和器件封装视图。通过将Group列表和All Pins列表中的引脚拖至封装视图中的可用引脚或 I/O 块来进行引脚分配,也可以在“Location”栏里直接选择引脚。在All Pins列表中,可以滤除节点名称,改变I/O标准,指定保留引脚的选项;也可以过滤All Pins 列表,只显示未分配的引脚,改变节点名称和用户加入节点的方向。

引脚规化器还可以显示所选引脚的属性和可用资源,引脚所属的I/O块用不同的颜色来区分。

1.4.3 使用Settings对话框

单击“Assignments”菜单中的“Settings”命令,弹出“Settings”对话框,用来为工程指定分配和选项,还可以设置工程一般的选项及综合、适配、仿真和时序分析等选项,如图1-4-8所示。一般使用分配编辑器进行引脚分配和除时钟频率外的其他类型约束,而“Settings”对话框中的时序约束更多用于全局时序约束和时钟频率约束。图1-4-8 “Settings”对话框

在“Settings”对话框中可以执行以下任务。

· 修改工程设置(General、Files、Libraries):为工程和修订信息指定和查看当前顶层实体;从工程中添加和删除文件;指定自定义的用户库。

· IP设置(IP setting):进行IP搜索路径的添加和移除。

· 设计模板(Design Templates):进行设计模板搜索目录的添加和移除。

· 操作和运行条件设置(Operating Setting and Conditions):进行电压和温度的设置。

· 指定编译过程设置(Compilation Process Settings):智能编译选项,在编译过程中保留节点名称,运行 Assembler及渐进式编译或综合,并且保存节点级的网络表,导出版本兼容数据库,显示实体名称,允许或者禁止OpenCore Plus评估功能,还为生成早期时序估算提供设置选项。

· 指定EDA工具设置(EDA Tool Settings):为设计输入、综合、仿真、时序分析、板级验证、形式验证、物理综合和相关工具选项指定EDA工具。

· 编译器设置(Compiler Setting):进行VHDL输入、Verilog HDL输入以及默认参量的设置。

· 时序分析仪(TimeQuest Timing Analyzer):指定时序分析仪的选择项。

· 汇编程序(Assembler):指定汇编程序的选择项。

· 设计助手(Design Assistant):用于检查设计工程从而指定潜在的设计问题。

· 指定设计助手、SignalTapⅡ设置(Assembler、Design Assistant、SignalTapⅡLogic Analyzer、Logic Analyzer Interface):打开设计助手并选择规则;启动 SignalTapⅡ逻辑分析器,指定 SignalTapⅡ文件(.stp) 名称。

· 指定PowerPlay功耗分析器设置(PowerPlay Power Analyzer Settings):设置输入文件类型、输出文件类型和默认触发速率,以及结温、散热方案要求、器件特性等工作条件。

· SSN分析仪(SSN Analyzer):指定SSN分析仪选择项。1.5 综合

向工程中添加设计文件及设置引脚锁定后,下一步就是对工程进行综合了。随着FPGA/CPLD越来越复杂、性能要求越来越高,高级综合在设计流程中成为了一个重要的部分,综合结果的优劣直接影响了布局布线的结果。综合的主要功能是将HDL语言翻译成最基本的与门、或门、非门、RAM和触发器等基本逻辑单元的链接关系(网络表),并根据要求(约束条件)优化所生成的门级逻辑链接,输出网络表文件,供布局布线用。好的综合工具能够使设计占用芯片的物理面积更小,工作频率更快。

本节主要介绍Quartus Prime软件中集成的综合工具的使用方法和特点。

1.5.1 使用Quartus Prime软件集成综合

Quartus Prime集成综合工具Analysis & Synthesis完全支持VHDL和Verilog HDL语言,并提供控制综合过程的一些可选项。用户可以在“Settings”对话框中选择适用语言标准,同时还可以指定Quartus Prime软件将非Quartus Prime软件函数映射到Quartus Prime软件函数的库映射文件(.lmf)上。

Analysis & Synthesis的分析阶段将检查工程的逻辑完整性和一致性,并检查边界连接和语法错误。它使用多种算法减少门的数量,删除冗余逻辑及尽可能有效地利用器件体系结构。分析完后,构建工程数据库,此数据库中包含完全优化且合适的工程,该工程将用于为时序仿真、时序分析、器件编程等建立一个或多个文件。Quartus Prime的综合设计流程如图1-5-1所示。图1-5-1 Quartus Prime的综合设计流程

1.5.2 控制综合

本小节将介绍通过使用编译器指令和属性、Quartus Prime软件逻辑选项、Quartus Prime软件综合网络表优化选项来控制Analysis&Synthesis的方法和过程。

1.使用编译器指令和属性

Quartus Prime软件的Analysis&Synthesis工具支持编译器指令,这些指令也称为编译指令。例如,可以在Verilog HDL或VHDL代码中包括translate_on和translate_off等编译器指令,这些指令作为备注。这些指令不是Verilog HDL或VHDL的命令,但是,综合工具使用它们以特定方式推动综合过程。仿真器等其他工具则忽略这些指令,并将它们作为备注处理。

2.使用Quartus Prime软件逻辑选项

Quartus Prime软件除了支持一些编译器指令外,还允许用户在不编辑源代码的情况下设置属性。这些属性用于保留寄存器、指定上电时的逻辑电平、删除重复或冗余的逻辑、优化速度或区域、设置状态机的编码级别及控制其他选项,而Quartus Prime16.1版本当中的编译器设置页面可进行优化模式的选择和寄存器优化设置以及高级设置(当中包含“Analysis &Synthesis Settings”和“Fitter Settings”的高级设置选项,后面将详细介绍这两种选项设置),如图1-5-2所示。图1-5-2 综合的参数设置对话框

图1-5-2中包含了设置综合的逻辑选项,各个选项的含义如下:

· Optimization mode:有Balanced(平衡)、Performance(性能)、Power(功率)和Area(面积)4个选项。“面积”指的是一个设计所消耗的FPGA/CPLD的逻辑资源数量。默认选项“Balanced”指编译器综合的时候把设计的一部分综合成面积最小,一部分以速度为优化目标综合,综合后的结果比优化目标选择速度时的工作频率慢的情况下消耗资源要少。选项“Performance”主要涉及两项,一项是用于提高运行速度,另一项是用于提高运行速度和增大面积。选项“Power”也涉及两个选项,一项是提高运行速度,另一项是提高运行速度的同时降低相关性能。上面提到所谓的速度是指设计在芯片上可以稳定运行所需要的最低工作频率,这个频率由设计的时序状况决定,并且和设计要求的时钟周期、PAD to PAD Time、Clock Setup Time、Clock Hold Time、Clockto-Output Delay等众多时序特征量密切相关。这两个概念在FPGA/CPLD中是一对矛盾的统一体,要求一个设计既要工作频率高又要占用资源少是不现实的。一般来说,科学的目标是在满足要求的工作频率下使用尽量少的资源或是在规定面积下,使设计的时序余量更大,工作频率更高。但是当两者冲突时,满足时序要求,达到要求的工作频率更重要,即速度优先。用户可以根据需要和所选器件来选择优化目标。

· Prevent register optimizations:该选项下只有“Prevent register retiming”一个设置项,即勾选该项表示要执行阻止寄存器重新定时。

上述综合的逻辑选项设置好后,单击“Advanced Settings…”按钮,可以设置更多的综合参数。

3.使用Quartus Prime综合网络表优化选项

综合网络的优化选项对标准编译期间出现的优化进行补充,在全编译的Analysis & Synthesis阶段出现,通常有利于面积和速度的改善。

选中“Settings”对话框中的“Complier Settings”→“Advanced Setting(Synthesis) ”选项,进入“Advanced Analysis

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载