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


发布时间:2020-07-21 01:11:20

点击下载

作者:周润景

出版社:电子工业出版社

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

基于Quartus Prime的FPGA CPLD数字系统设计实例(第3版)

基于Quartus Prime的FPGA CPLD数字系统设计实例(第3版)试读:

前言

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

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

本书主要以实例为主来介绍以 Altera 公司推出的 Quartus Prime 15.1为设计平台的FPGA/CPLD数字系统设计。书中的例子包含简单的数字逻辑电路实例、数字系统设计实例及复杂数字系统设计实例,由浅入深地介绍了采用Quartus Prime进行数字系统开发的设计流程、设计思想和设计技巧。

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

®Arria10设计上展示了极高的设计性能和设计人员效能。

本书共分为12章,第1章介绍了使用可编程逻辑器件进行数字系统设计的基本概念,包括数字集成电路、标准逻辑器件、可编程逻辑器件、CPLD和FPGA等的基本概念;第2章介绍了Quartus Prime的使用方法,包括原理图编辑、文本编辑和混合编辑的设计方法;第3~7章介绍了简单的数字电路实例,包括门电路、组合逻辑电路、触发器、时序逻辑电路及存储器的设计方法;第8章介绍了课程设计中涉及的数字系统设计范例,使读者能够熟练地掌握Quartus Prime的使用方法和熟练运用VHDL语言;第9章介绍了宏功能模块及IP核的使用方法和简单的应用实例;第10章介绍了ModelSim、TimeQuest、SignalTapⅡ与Quartus Prime的结合使用方法及简单的应用实例,VHDL硬件调试,以及在VHDL设计当中使用库模块的方法;第11~12章介绍了两个大型数字系统的设计实例,使读者更深入地掌握数字系统的设计方法。

本书共12章,其中第1章由李志负责编写,第9章由刘艳珍负责编写,其余由周润景教授负责编写。全书由周润景统稿、定稿。参加本书编写的还有韩亦俍、刘白灵、樊宇、张大山、王洪艳、蒋诗俊、张赫、陈萌、井探亮、张红敏、张丽敏和周敬,在此表示感谢。

由于作者水平有限,书中难免存在错误和不足之处,敬请读者批评指正。编著者第1章FPGA设计基础

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

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

现代数字系统中所使用的数字电路几乎都是集成电路。使用集成电路实现系统功能比使用分立元件具有电路体积小、可靠性高等优点。从20世纪60年代开始,数字集成电路在集成度方面的发展经历了以下4个阶段。(1)包含数十到数百个逻辑门的小规模集成电路(Small Scale Integration,SSI)。(2)包含数百到数千个逻辑门的中规模集成电路(Medium Scale Integration,MSI)。(3)包含数千到数万个逻辑门的大规模集成电路(Large Scale Integration,LSI)。(4)包含数万个以上逻辑门的超大规模集成电路(Very Large Scale Integration,VLSI)。

在工作原理方面,数字集成电路又可以划分为标准逻辑器件、微处理器和专用集成电路。

1.标准逻辑器件

标准逻辑器件在集成度方面属于中小规模集成电路。它包括各种逻辑门、触发器、译码器、多路选择器、寄存器和计数器等器件。标准逻辑器件有3种主要类型,即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 标准逻辑器件

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

1.数字电路的描述

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

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

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

2.组合逻辑电路

当一个电路的逻辑功能用布尔表达式给出时,具体的逻辑电路图则可以直接由表达式画出。例如,如果需要一个电路具有逻辑功能,我们就立即想到可以使用一个3输入与门;如果需要一个实现的逻辑电路,则可以首先使用一个非门实现输入变量的反变量,再使用一个2输入的或门。适用于这些简单例子的原理可以推广到复杂的电路。

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

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

3.时序逻辑电路

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

许多逻辑电路的输出不仅取决于当前时刻各输入状态的组合,而且还与先前电路的状态有关,即需要记忆功能。这样的逻辑电路称为时序逻辑电路。在前面我们默认电路具有16个状态的输入信号,从0000 1111,已经存在。产生这16个状态必须使用时序逻辑电路,因为下一个状态的形式取决于上一个状态的形式。组合逻辑电路的输出只与电路当前的输入有关;时序逻辑电路的输出则不仅与电路当前的输入有关,而且还与电路上一个状态有关。

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

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

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

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

1.可编程逻辑器件基础

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

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

可编程逻辑器件的基本原理结构图如图1-3-1所示。图中的输入缓冲电路用来对输入信号进行放大,同时这部分电路也为后面的与阵列提供输入信号的反变量。输入缓冲电路输出的所有输入信号和它们的反变量在与阵列中实现布尔表达式中的与项,这个与项也称为乘积项。与阵列输出的与项在或阵列中实现或运算。图1-3-1 可编程逻辑器件的基本原理结构图

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

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

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

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

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

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

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

O=0+0+0+AB=AB

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

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

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

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

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

1)可编程只读存储器(PROM) PROM芯片的结构如图1-3-4所示。输入缓冲电路提供输入信号的原变量和反变量,与门提供所有输入信号组合的译码,或门的输入采用可编程连接。对于任意一个给定的输入信号变量组合,相应的与门输出高电平;如果或门的输入和该与门的输出相连接,则此或门输出高电平;如果或门的输入没有和该与门的输出相连接,则此或门输出低电平。图1-3-4 PROM芯片的结构

图1-3-4(b)中,4个或门的输出分别为

由于PROM产生了输入信号的所有乘积项,所以它能产生输入信号的任意逻辑函数。这种器件的缺点是当输入信号包括的变量数目较大时实现起来很困难,因为每增加一个输入变量,需要编程的连接点将增加1倍。

2)可编程阵列逻辑(PAL) 考虑在实际应用时,绝大多数组合逻辑函数并不需要所有的乘积项,可编程阵列逻辑对PROM进行了改进,这种芯片的结构如图1-3-5所示。图1-3-5 PAL芯片的结构

相对于如图1-3-4所示的PROM内部电路,PAL内部电路的与门的输入是可编程的,或门的输入是固定连接。它适合逻辑函数只需要较少的乘积项的情况。由于与门的输入是可编程的,因此它可以产生输入信号任意一种乘积项。每个或门的输入只和4个与门的输出固定连接,它限定了每个输出函数只能有4个乘积项。

图1-3-5(b)中,4个或门的输出分别为

上面提到的电路结构只能解决组合逻辑的可编程问题,但是对时序逻辑还是无能为力。在图1-3-5所示电路的基础上再加上输出寄存器单元,就可以实现时序逻辑的可编程。为实现不同的应用需要,PAL的输出结构很多,往往一种输出结构就是一种器件。器件种类繁多使得生产和使用都不方便。现在PAL器件已不生产,关于输出寄存器单元的内容下面将会详细介绍。

3)通用阵列逻辑(GAL) GAL是在PAL的基础上发展起来的,它沿用了与阵列可编程、或阵列固定的结构。它们之间的区别反映在编程工艺和输出结构方面。一般的PAL器件采用熔丝型编程工艺,属2于一次性可编程器件;GAL器件采用EPROM型编程工艺,允许对其进行多次编程。在输出部分增加了输出逻辑宏单元(Output Logic Macro Cell,OLMC),使得一种通GAL器件可以代替多种PAL器件。

图1-3-6给出了通用阵列逻辑16V8的结构图,它是Lattice Semiconductor公司的产品。这种芯片具有8个专用输入引脚(引脚2引脚9)、两个特殊功能输入引脚(引脚1:时钟输入CLK,引脚11:使能OE)及8个I/O引脚(引脚12引脚19)。图1-3-6 通用阵列逻辑16V8的结构图

8个专用输入引脚中每一个的输入信号经过一级缓冲以后,产生输入信号的原变量和反变量,它们分别连接到输入矩阵对应的列线上,为与阵列提供一部分输入信号。与阵列的输入信号还包括来自输出逻辑宏单元的反馈信号,这些反馈信号也分别连接到输入矩阵对应的列线上。从图1-3-6可以看出,与阵列共有64个与门,每个与门具有32个可编程的输入变量。

输出逻辑宏单元的电路图如图1-3-7所示。每个输出逻辑宏单元具有1个8输入或门,它接收8个固定的多输入与门的输出(乘积项),产生输入信号的“与—或”表达式。或门的输出可以经过不同的路径到达输出引脚,具体经过的路径可以通过编程来决定,既能实现组合逻辑输出,也能实现寄存器输出。图1-3-7 输出逻辑宏单元的电路图

在输出逻辑宏单元电路中,8输入或门的信号分两类:7个输入乘积项直接与或门的输入端连接,第8个输入乘积项则通过乘积项数据选择器(Prod.TMUX)连接到或门的输入端。乘积项数据选择器由2EPROM矩阵中的可编程位(AC0和AC1)控制,使得第8个输入乘积项可以送入或门,也可以不送入或门。

4输入三态数据选择器(Three State MUX)用来对输出三态反相器使能,它的4个输入信号为VCC、接地、第8个输入乘积项及来自引脚OE(引脚11)的外部信号。当三态数据选择器选择VCC输入,三态反相器输出处于使能状态时,I/O引脚可以用作输出引脚;当选择接地输入,三态反相器输出处于高阻状态时,I/O引脚可以用作输入引脚。三态数据选择器的另外两个输入信号使得输出可以由第8个输入乘积项或来自引脚OE(引脚11)的外部信号进行控制。

输出数据选择器(Out MUX)是一个2输入数据选择器,它也由2EPROM矩阵中的可编程位(AC0和AC1)控制,在组合逻辑输出和寄存器(D触发器)输出之间实现选择。2

反馈数据选择器(Feedback MUX)也由EPROM 矩阵中的可编程位(AC0和AC1)控制,用来选择反馈到输入矩阵中的逻辑信号,这些反馈信号和芯片的输入信号一起作为“与—或”阵列的输入信号。由于反馈信号中包括D触发器的输出信号,这个特点使得GAL器件具有了实现时序逻辑的能力。

图1-3-7中的2输入异或门用来提供可编程输出信号极性的能力。2输入异或门的一个输入信号来自8输入或门的输出,另一个为可编程的控制信号CONTROL。当CONTROL=0时,8输入或门的输出保持原来的极性;当CONTROL=1时,8输入或门的输出被反相。

PROM、PAL和GAL通常称为简单可编程逻辑器件,即使如此,通用阵列逻辑的内部电路也已经很复杂了。讨论这些内容只是想说明可编程逻辑器件仍是由在“数字电路逻辑设计”课程中学习的基本电路组成的,课程中介绍的数字电路理论不仅适用于由标准逻辑器件组成的电路,而且也适用于本书中将要学习的由可编程逻辑器件组成的电路。

4)复杂可编程逻辑器件CPLD 现在一般把所有超过某一集成度(如1000门以上)的PLD器件都称为CPLD。CPLD由可编程逻辑的功能块围绕一个可编程互连矩阵构成。由固定长度的金属线实现逻辑单元之间的互连,并增加了I/O控制模块的数量和功能。可以把CPLD的基本结构看成由可编程逻辑阵列(LAB)、可编程I/O引脚控制模块(I/O Control Block)和可编程内部连线(PIA)3部分组成,如图1-3-8所示。图1-3-8 CPLD内部结构

可编程逻辑阵列由若干个可编程逻辑宏单元(Logic Macro Cell,LMC)组成,LMC内部主要包括与阵列、或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式,如图1-3-9所示。

在CPLD的宏单元中,如果输出表达式的与项较多,对应的或门输入端不够用,则可以借助可编程开关将同一单元(或其他单元)中的其他或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项给其他宏单元使用。

早期可编程器件的每个输出宏单元(OLMC)只有一个触发器,而CPLD的宏单元内通常含有两个或两个以上的触发器,其中只有一个触发器与输出端相连,其余触发器的输出不与输出端相连,但可以通过相应的缓冲电路反馈到与阵列,从而与其他触发器一起构成较复杂的时序电路。这些不与输出端相连的内部触发器就称为“隐埋”触发器。这种结构可以不增加引脚数目,而增加其内部资源。图1-3-9 宏单元组成结构

早期可编程器件只能实现同步时序电路,在CPLD器件中各触发器的时钟可以异步工作,有些器件中触发器的时钟还可以通过数据选择器或时钟网络进行选择。此外,OLMC内触发器的异步清零和异步置位也可以用乘积项进行控制,因而使用更加灵活。

CPLD的I/O单元(Input/Output Cell,IOC)是内部信号到I/O引脚的接口部分。根据器件和功能的不同,各种器件的结构也不相同。由于阵列型器件通常只有少数几个专用输入端,大部分端口均为I/O端,而且系统的输入信号通常需要锁存,因此I/O常作为一个独立单元来处理。

PIA的作用是在各逻辑宏单元之间,以及逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过LAB接收来自输入端的信号,并将宏单元的信号送目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。

Altera主流CPLD芯片为MAX Ⅱ,它是新一代PLD器件,采用0.18 μm Flash工艺,于2004年年底推出,采用FPGA结构,配置芯片集成在内部,和普通PLD一样上电即可工作,MAXⅡ器件家族如表1-3-1所示。其容量比上一代大大增加,内部集成一片8 Kb串行2EPROM,增加很多功能。MAX Ⅱ采用2.5 V 或3.3 V 内核电压,MAX Ⅱ G系列采用1.8 V内核电压。早期的 CPLD 芯片主要有 MAX3000、MAX7000系列。MAX系列概览如表1-3-2所示。表1-3-1 MAX Ⅱ器件家族表1-3-2 MAX 系列概览

5)现场可编程门阵列FPGA FPGA出现在20世纪80年代中期,与阵列型PLD有所不同,FPGA由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。FPGA 具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。

Altera Cyclone系列FPGA系列现场可编程门阵列基于1.5V、0.13μm、全铜互连SRAM工艺,最高内嵌20 060个逻辑单元(LEs)、最大288KbRAM。内置锁相环(PLLs)和一个专用双倍速率(DDR)界面支持用以双倍速率同步动态随机存储器(DDR SDRAM)和快速循环动态随机存储器(FCRAM),Cyclone可以提供低功耗的数据链路解决方案。Cyclone支持多种标准的I/O(输入/输出),包括最高640Mbps的LVDS和33 66MHz、32 64b周边器件扩展接口(PCI)的连接界面。支持专用标准部分(Application Specific Standard Parts,ASSP)和专用集成电路(Application Specific Integrated Circuits,ASIC)设备。支持多种知识产权核(IP 核),包括 Altera MegaCore 与 Altera Megafunction Partners Program(AMPPSM)。Altera Cyclone系列FPGA整体结构图如图1-3-10所示。图1-3-10 Altera Cyclone系列FPGA整体结构

Cyclone系列器件通过两个行-列结构来实现自定义逻辑。行-列结构提供LABs(Logic Array Block)与内嵌存储模块间的高速信号连接。逻辑阵列由LABs组成,10个LE组成一个LAB。一个LE是有效执行用户逻辑的最小逻辑单元。LABs被排列为行-列结构交叉在器件当中。Cyclone系列器件包含2910 20 060个LE。M4K RAM(Memory 4Kb RAM)块是真双口4Kb存储块。这个模块提供真双端口、简单双端口或单端口存储器,最多可以配置36b的位宽,存取速度最高可达到250MHz。这个模块被排列为列形结构,贯穿整个器件,并夹在某几个 LAB 当中。Cyclone 系列提供内嵌60 288Kb 动态存储器的器件。每个Cyclone器件的I/O引脚都被安置在I/O元件(IOE),包围在LAB行-列结构的边缘。I/O引脚支持多种标准的单源信号和差分信号,如66MHz或33MHz,64b或32b的PCI; LVDS传输速率最高到640Mbps。每个IOE都包含一个双向I/O缓冲器和一个三态寄存器以便寄存I/O使能信号。双功能DQS、DQ与DM引脚与延迟链(常用于相位排列DDR信号)组成控制界面以支持诸如DDR SDRAM 或 FCRAM 外部存储器件最高工作在133MHz(266Mbps)上。Cyclone器件内建了一个全局时钟网络并连接到两个PLL上。全局时钟网络由8条贯穿整个器件的全局时钟线组成。全局时钟网络可以给器件内所有的资源提供时钟,如IOEs、IEs和存储块。全局时钟线还可以被用来当作控制信号。Cyclone的锁相环提供给一般用途的时钟变换与移相,又可以将对外输出提供给高速差分I/O。

查看图1-3-11,我们来分部分介绍LAB(Logic Array Blocks)的结构。每个LAB由10个LE、LE排列链、LAB控制信号、局部互连、查找表(LUT)链和寄存器链连接线组成。局部互连负责在本LAB中的LE间传递数据。查找表(LUT)链负责快速有序地传送一个LE的输出到同一个LAB中邻近的LE的LUT。寄存器链负责把一个LE的寄存器的输出传送给同一个LAB中邻近的LE的寄存器。Quartus Prime编译器在互连LAB内部和邻近的LAB时,允许使用局部互连、LUT链与寄存器链连接以便实现性能和面积控制。当前LAB中的局部互连负责本LAB中的连接。当前LAB中的局部互连为行-列结构互连提供帮助,并给LAB内部的LE输出提供互连。相邻的LAB、PLL、M4K存储单元也可以通过它左右的直连链路来使用LAB中的局部互连。如果需要更好的性能和设计弹性,直连链路具备的最小化占用行-列结构链路的能力将发挥作用。每个LE可以驱动使用30个其他的LE,这要通过快速局部互连和直连链路来实现。图1-3-12描绘的是直连链路结构。图1-3-11 LAB结构图1-3-12 直连链路结构

逻辑单元(Logic Elements,LE)是CycloneTM结构当中的最小逻辑单元,它可以提供简洁、先进且易用的逻辑功能。每个LE均包含一个4输入查找表(Look-Up Table,LUT),它是一种可以构建任意4个参数的逻辑函数的函数发生器。例如,在加法中,每个LE包含一个可编程的寄存器和一个具备进位选择功能的进位端口。一个LE还支持动态单位加/减法模式选择,这要通过LAB宽度控制信号来控制。每个LE可以驱动所有类型的布线资源,包括局部互连、行互连、列互连、LUT 链、寄存器链与直连链路。LE 结构如图1-3-13所示。图1-3-13 LE结构

观察图1-3-13可知,每个LE的可编程寄存器可以配置为D、T、JK或SR寄存器。每个寄存器都有完整的数据、同步置位/清除、时钟/时钟使能、异步置位/复位/清除等输入端口。全局信号、常规的I/O引脚或内部逻辑都能当作这个寄存器的时钟和清除控制信号。任何一个常规的I/O或内部逻辑都可以驱动它的时钟使能、复位、异步置位和异步数据。异步置位数据的输入来自本LE“数据3”。为了实现组合逻辑,LUT的输出可以通过旁路跨过寄存器直接作为LE的输出。每个LE都有3个输出以便驱动局部、行、列互连的布线资源。LUT或寄存器的输出都可以单独驱动这3种布线资源。两个 LE 的输出可以一个驱动列、行、直连链路的布线资源,另一个驱动局部互连布线资源。这个特性使得LUT驱动一个输出的同时寄存器驱动另一个输出的情况成为可能。这个特性称为寄存器封装(Register Packing),它可以帮助优化设计,因为寄存器和LUT可以为不同的逻辑函数服务。LE的另一个封装模式就是允许寄存器的输出反馈给同一个LE中的LUT,作为它输入的一部分,所以这个寄存器与它自己的输出端LUT封装在了一起。这为优化设计提供了另一种手段。LE还可以区分出已寄存和未寄存的LUT输出。TM

Cyclone中的内嵌存储器由排列为列装的M4K存储器构成。每个M4K存储器块都可以实现多种类型的存储模式,可以带或不带奇偶校验功能,包括真双口、普通双口、单口的RAM、ROM或FIFO(First In First Out,先入先出)缓冲。M4K存储器块支持以下特性:

4608b RAM

250MHz执行频率

真双口存储器

普通双口存储器

单口存储器

字节使能

奇偶校验位

移位寄存器

FIFO缓冲

ROM

混合时钟模式

每个Cyclone的FPGA器件上有4个专用时钟引脚(CLK[3…0]),两个在器件左侧,两个在右侧,它们都可以驱动全局时钟网络,如图1-3-14所示。锁相环、内部逻辑和两用时钟引脚(DPCLK[7…0])也可以驱动全局时钟网络。全局时钟网络的8条全局时钟线贯穿器件内部所有组件。全局时钟网络可以给所有的内部组件提供时钟源,包括所有IOE、LE和存储器时钟。全局时钟线也可以用来当作控制信号,例如从外部引脚引入的时钟使能和同步/异步清除信号,或者是提供给DDR SDRAM/FCRAM界面的DQS信号。内部逻辑产生的内部时钟、异步清除、时钟使能和其他需要较大输出能力的控制信号也可以使用全局时钟线。图1-3-14 Cyclone全局时钟网络结构

FPGA的基本特点主要有:

采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合适的芯片。

FPGA可做其他全定制或半定制ASIC电路的中试样片。

FPGA内部有丰富的触发器和I/O引脚。

FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的 FPGA 编程器,只需用通用的 EPROM、PROM 编程器即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能,因此,FPGA的使用非常灵活。

FPGA有多种配置模式:

并行主模式:为一片FPGA加一片EPROM的方式;

主从模式:可以支持一片PROM编程多片FPGA;

串行模式:可以采用串行PROM编程FPGA;

外设模式:可以将FPGA作为微处理器的外设,由微处理器对其编程。

Altera的主流FPGA分为两大类,一类侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone、CycloneⅡ,现在是CycloneⅤ;还有一类侧重于高性能应用,容量大,性能能满足各类高端应用,如Stratix、Stratix Ⅱ等,用户可以根据自己的实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。

Cyclone(飓风): Altera中等规模FPGA,2003年推出,采用0.13 μm工艺,1.5V内核供电,与Stratix结构类似,是一种低成本FPGA系列,其配置芯片也改用全新的产品,见表1-3-3。表1-3-3 Cyclone系列概览

CycloneⅡ: Cyclone的下一代产品,2005年开始推出,采用90nm工艺,1.2V内核供电,属于低成本FPGA,性能和Cyclone相当,提供了硬件乘法器单元,见表1-3-4。表1-3-4 Cyclone Ⅱ系列概览

Cyclone Ⅴ: Cyclone的最新一代产品,2011年开始推出,采用28nm工艺。在这之前,于2007年、2009年分别推出了Cyclone Ⅲ及Cyclone Ⅳ的FPGA,其工艺技术分别是65nm和60nm。Cyclone V型号概览如表1-3-5所示。表1-3-5 Cyclone Ⅴ型号概览

Cyclone V E:系列概览如表1-3-6所示。表1-3-6 Cyclone V E系列概览

Stratix: Altera大规模高端FPGA,2002年中期推出,采用0.13 μm工艺,1.5V内核供电,提供集成硬件乘加器,芯片内部结构比 Altera 以前的产品有很大变化,如表1-3-7所示。表1-3-7 Stratix系列概览

Stratix Ⅱ: Stratix的下一代产品,2004年中期推出,采用90 μm工艺,1.2V内核供电,是大容量、高性能FPGA,见表1-3-8。表1-3-8 Stratix Ⅱ系列概览

6)CPLD和FPGA的区别 FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入2SRAM中。CPLD器件一般采用EPROM存储技术,可重复编程,并2且系统掉电后,EPROM中的数据不会丢失,适于数据的保密。

FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路,则需要几个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。

FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富的连线资源,CLB分块较小,芯片的利用率较高。CPLD宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载