数字系统设计与Verilog HDL(第4版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-13 03:06:26

点击下载

作者:王金明

出版社:电子工业出版社

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

数字系统设计与Verilog HDL(第4版)

数字系统设计与Verilog HDL(第4版)试读:

前言

本书前3版得到了广大读者的认可和喜爱,被许多院校选做课程教材,作者在前3版的基础上,对全书的内容做了全面修订。第4版较之前3版,在以下几个方面做了改进:(1)开发工具选择以Quartus Ⅱ、Synplify Pro/Synplify、ModelSim软件为主;设计语言在Verilog—1995的基础上,对Verilog—2001、Verilog—2002两个标准也做了系统介绍;(2)选择Altera的DE2和DE2—70作为实验验证平台,读者也可以将设计移植到其他实验平台;(3)扩充了状态机设计的内容;(4)对数字设计开发实例做了优化选择。

本书的主要内容包括FPGA/CPLD器件、EDA设计工具(包括Quartus Ⅱ、Synplify Pro、ModelSim等)、Verilog硬件描述语言,以及一些典型的数字设计实例。书中的实例多数在Altera的DE2或DE2—70实验平台上进行了实际验证,并尽量给出程序综合与仿真的结果,以便于对照。此外,对于EDA软件工具、实验平台、设计案例均做了精心选择,是作者认为目前较有典型性和代表性的方案。

本书的定位是作为EDA技术、FPGA开发或数字设计方面的教材。在编写的过程中,遵循的是重视基础、面向应用的原则,力图在有限的篇幅内,将EDA技术与FPGA设计相关的知识简明扼要、深入浅出地进行阐述,并融入作者在教学、科研中的实践经验。EDA技术是一门实践性的课程,所以选择一些具有趣味性的设计案例有助于学生由浅入深快速地掌握设计语言,并通过实践加深体会。另外,本书与作者的另一拙作《数字系统设计与VHDL》(电子工业出版社,2010年5月)互为补充,前者以Verilog语言开发为主,后者则以VHDL语言的设计为重点。

全书共13章。第1章对EDA技术做了综述;第2章介绍FPGA/CPLD器件的结构与编程配置;第3章介绍Quartus II集成开发工具以及基于宏功能模块的设计;第4章对Verilog程序设计进行初步介绍;在第5、6章中,系统介绍Verilog的语法、语句、任务与函数等内容;第7章讨论Verilog设计的层次与风格;第8章是有关有限状态机的内容;第9章列举了一些典型电路的设计与实现;第10章讨论设计优化的问题;第11章是Verilog仿真与验证的内容;在第12章中就Verilog—2001、Verilog—2002标准对Verilog语言所做的扩展与增强做了较为全面的介绍;第13章是通信和信号处理等较为复杂的数字逻辑系统的设计举例。另外,在附录中除了给出Verilog HDL关键字和有关术语、缩略语之外,主要对Altera的DE2和DE2—70实验平台做了介绍。

王金明副教授编写本书大部分内容,并对全书做了统稿;周顺编写了第13章部分内容;第3章部分内容由冷自强和王耿编写,第12章部分内容由周宇欢、朱涛和孙健编写,附录由黄建军、徐玉龙和李伦辉编写。张雄伟教授对全书进行审阅并提出了修改意见,在此一并表示诚挚的谢意。

在撰写的过程中力求准确、简约,避免烦琐,以期做到深入浅出。所有举例均经过综合工具或仿真工具的验证。EDA技术是一门实践性很强的技术,同时EDA技术的发展又非常迅速,要真正掌握数字设计技术,成为行家里手,需要设计者在实践中不断摸索与积累,逐步提高自己的实际能力与水平。本书虽经很大努力,但由于编著者水平所限,书中疏漏与错误之处在所难免,希望同行和广大读者给予批评指正。

E-mail:wjm_ice@163.com

编著者

2010年10月于解放军理工大学第3版

前言

本书第1版和第2版承蒙广大读者的认可和喜爱,并被许多院校选做课程教材,作者在前两版的基础上,对全书的内容做了全面修订和改写。第3版较之第2版,在以下几个方面做了比较大的改进:(1)开发工具选择以Quartus Ⅱ、Synplify Pro/Synplify软件为主,去掉了MAX+plus Ⅱ软件的有关内容;(2)设计语言在Verilog—1995的基础上,对Verilog—2001、Verilog—2002两个标准也做系统介绍;(3)增加了基于宏功能模块设计的内容;(4)增加了更多典型的数字设计开发实例;(5)FPGA/CPLD器件更注重原理与知识的系统阐述。

本书的所有实例均在实验平台上进行了验证,并尽量给出程序综合与仿真的结果,以便于对照,并有助于建立语言描述和硬件电路的映射关系。读者也可将这些设计移植到其他软件平台。

目前,EDA技术已成为电子信息类学生一门重要的专业基础课程,并在教学、科研,以及大学生电子设计竞赛等活动中,起着越来越重要的作用,成为电子信息类本科生及研究生必须掌握的基础知识与基本技能。随着EDA技术的应用日益广泛,对EDA课程教学的要求也不断提高,必须对教学内容进行优化和更新,以与EDA技术的发展相适应。正是基于以上考虑,修订了本书的内容。

全书共12章。

第1章对EDA技术做了综述;第2章介绍FPGA/CPLD器件的结构与编程配置;第3章介绍Quartus Ⅱ集成开发工具;第4章是基于宏功能模块的设计;在第5、6、7章中,系统介绍了Verilog的语法、语句、任务与函数等内容;第8、9章列举了常用数字电路的设计与实现;第10章讨论了设计优化的问题;第11章是有关电路仿真的内容;第12章是算法和较复杂数字逻辑系统的设计举例。在附录1、2中就Verilog—2001、Verilog—2002标准对Verilog语言所做的扩展和增强做了较为全面的介绍。

王金明编写了本书大部分章节,并对全书进行了统稿,冷自强编写了第4章及附录1、2等内容,研究生黄建军、王耿、潘新星等对部分程序进行了调试,张雄伟教授对本书进行了审阅,并提出了修改意见,在此一并表示感谢。

本书在修订的过程中,遵循的是重视基础、面向应用这样的原则。EDA技术是不断向前发展的,要掌握数字设计技术,需设计者在实践中不断摸索与积累,逐步提高自己的设计水平,本书虽经很大努力,由于时间急促及作者水平所限,书中错误与疏漏之处在所难免,希望同行和广大读者给予批评指正。

作者的E-mail:wjm_ice@163.com

本书可免费提供电子教学课件。

作者

2008年10月于解放军理工大学第1章 EDA技术概述

我们已经进入数字化和信息化的时代,其特点是各种数字产品的广泛应用。现代数字产品在性能提高、复杂度增大的同时,更新换代的步伐也越来越快,实现这种进步的因素在于芯片制造技术和设计技术的进步。

芯片制造技术以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。摩尔曾经对半导体集成技术的发展做出预言:大约每18个月,芯片的集成度提高1倍,功耗下降1倍,他的预言被人们称为摩尔定律(Moore’s law)。几十年来,集成电路的发展与这个预言非常吻合,数字器件经历了从SSI,MSI,LSI到VLSI,直到现在的SoC(System on Chip,芯片系统),我们已经能够把一个完整的电子系统集成在一个芯片上。还有一种器件的出现极大改变了设计制作电子系统的方式与方法,这就是可编程逻辑器件(Programmable Logic Device,PLD)。PLD器件是20世纪70年代后期发展起来的一种器件,它经历了可编程逻辑阵列(Programmable Logic Array,PLA)、通用阵列逻辑(Generic Array Logic,GAL)等简单形式到现场可编程门阵列(Field Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)的高级形式的发展,它的广泛使用不仅简化了电路设计,降低了研制成本,提高了系统可靠性,而且给数字系统的整个设计和实现过程带来了革命性的变化。

电子系统的设计理念和设计方法也发生了深刻的变化,从电子CAD(Computer Aided Design)、电子CAE(Computer Aided Engineering)到电子设计自动化(Electronic Design Automation,EDA),设计的自动化程度越来越高,设计的复杂性也越来越强。

EDA技术已成为现代电子设计技术的有力工具,没有EDA技术的支持,要完成超大规模集成电路的设计和制造是不可想象的,反过来,生产制造技术的进步又不断对EDA技术提出新的要求,促使其不断向前发展。1.1 EDA技术及其发展

在现代数字系统的设计中,EDA技术已经成为一种普遍的工具。对设计者而言,熟练地掌握EDA技术,可以极大地提高工作效率,起到事半功倍的效果。

EDA(电子设计自动化)技术没有一个精确的定义,我们可以这样来认识,所谓的EDA技术就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。EDA技术的发展以计算机科学、微电子技术的发展为基础,并融合了应用电子技术、智能技术以及计算机图形学、拓扑学、计算数学等众多学科的最新成果发展而来的。EDA技术经历了一个由简单到复杂、由初级到高级不断发展进步的阶段。从20世纪70年代,人们就已经开始基于计算机开发出一些软件工具帮助设计者完成电路系统的设计任务,以代替传统的手工设计方法,随着计算机软件和硬件技术水平的提高,EDA技术也不断进步,大致经历了下面三个发展阶段。

1.CAD阶段

电子CAD阶段是EDA技术发展的早期阶段(时间大致为20世纪70年代至80年代初)。在这个阶段,一方面,计算机的功能还比较有限,个人计算机还没有普及;另一方面,电子设计软件的功能也较弱。人们主要是借助计算机对所设计电路的性能进行一些模拟和预测;另外,就是完成PCB的布局布线,简单版图的绘制等工作。

2.CAE阶段

集成电路规模的扩大,电子系统设计的逐步复杂,使得电子CAD的工具逐步完善和发展,尤其是人们在设计方法学、设计工具集成化方面取得了长足的进步,EDA技术就进入了电子CAE阶段(时间大致为20世纪80年代初至90年代初)。在这个阶段,各种单点设计工具、各种设计单元库逐渐完备,并且开始将许多单点工具集成在一起使用,大大提高了工作效率。

3.EDA阶段

20世纪90年代以来,微电子工艺有了显著的发展,工艺水平已经达到了深亚微米级,在一个芯片上已经可以集成数目上千万乃至上亿的晶体管,芯片的工作速度达到了Gbps级,这样就对电子设计的工具提出了更高的要求,也促进了设计工具的发展。

在今天,EDA技术已经成为电子设计的普遍工具,无论是设计集成电路还是设计普通的电子电路,没有EDA工具的支持,都是难以完成的。EDA技术的使用包括电子工程师进行电子系统开发的全过程,以及进行开发设计涉及的各个方面。从一个角度看,EDA技术可粗略分为系统级、寄存器传输级(RTL)、门级和版图级几个层次的辅助设计过程;从另一个角度来看,EDA技术包括电子电路设计的各个领域,即从低频电路到高频电路、从线性电路到非线性电路、从模拟电路到数字电路、从PCB设计到FPGA开发等,EDA技术的功能和范畴如图1.1所示。图1.1 EDA技术的功能和范畴

进入21世纪后,EDA技术得到更快的发展,开始步入一个新的时期,突出地表现在以下几个方面。(1)电子技术各个领域全方位融入EDA技术,除日益成熟的数字技术外,可编程模拟器件的设计技术也有了很大的进步。EDA技术使得电子领域各学科的界限更加模糊,相互包容和渗透,如模拟与数字、软件与硬件、系统与器件、ASIC与FPGA、行为与结构等,软硬件协同设计技术也成为EDA技术的一个发展方向。(2)IP(Intellectual Property)核在电子设计领域得到广泛的应用,基于IP核的SoC(System on Chip,芯片系统)设计技术趋向成熟,电子设计成果的可重用性进一步提高。(3)嵌入式微处理器软核的出现,更大规模的FPGA/CPLD器件的不断推出,使得SoPC(System on Programmable Chip,可编程芯片系统)步入实用化阶段,在一片FPGA芯片中实现一个完备的系统成为可能。(4)用FPGA(Field Programmable Gate Array,现场可编程门阵列)器件实现完全硬件的DSP(数字信号处理)处理成为可能,用纯数字逻辑进行DSP模块的设计,使得高速DSP实现成为现实,并有力地推动了软件无线电技术的实用化。基于FPGA的DSP技术为高速数字信号处理算法提供了实现途径。(5)在设计和仿真两方面支持标准硬件描述语言的EDA软件不断推出,系统级、行为验证级硬件描述语言的出现(如System C)使得复杂电子系统的设计和验证更加高效。在一些大型的系统设计中,设计验证工作非常艰巨,这些高效的EDA工具的出现,减轻了开发人员的工作量。

除了上述的发展趋势,现代EDA技术和EDA工具还呈现出以下一些共同的特点。

1)采用硬件描述语言(HDL)进行设计

采用硬件描述语言(Hardware Description Language,HDL)进行电路与系统的描述是当前EDA设计技术的另一个特征。与传统的原理图设计方法相比,HDL语言更适合于描述规模大、功能复杂的数字系统,它能够使设计者在比较抽象的层次上对所设计系统的结构和逻辑功能进行描述。采用HDL语言进行设计的突出优点是:语言的标准化,便于设计的复用、交流、保存和修改;设计与工艺的无关性,宽范围的描述能力,便于组织大规模、模块化的设计。目前最常用的硬件描述语言是Verilog HDL和VHDL,它们都已成为IEEE标准。

2)逻辑综合与优化

目前的EDA工具最高只能接受行为级(Behavior Level)或寄存器传输级(Register Transport Level,RTL)描述的HDL文件进行逻辑综合,并进行逻辑优化。为了能更好地支持自顶向下的设计方法,EDA工具需要在更高的层级进行综合和优化,这样可进一步缩短设计周期,提高设计效率。

3)开放性和标准化

现代EDA工具普遍采用标准化和开放性的框架结构,可以接纳其他厂商的EDA工具一起进行设计工作。这样可实现各种EDA工具间的优化组合,并集成在一个易于管理的统一环境之下,实现资源共享,有效提高设计者的工作效率,有利于大规模、有组织的设计开发工作。

4)更完备的库(Library)

EDA工具要具有更强大的设计能力和更高的设计效率,必须配有丰富的库,比如元器件图形符号库、元器件模型库、工艺参数库、标准单元库、可复用的电路模块库、IP库等。在电路设计的各个阶段,EDA系统需要不同层次、不同种类的元器件模型库的支持。例如,原理图输入时需要原理图符号库、宏模块库,逻辑仿真时需要逻辑单元的功能模型库,模拟电路仿真时需要模拟器件的模型库,版图生成时需要适应不同层次和不同工艺的底层版图库等。各种模型库的规模和功能是衡量EDA工具优劣的一个重要标志。

总而言之,从过去发展的过程看,EDA技术一直滞后于制造工艺的发展,它在制造技术的驱动下不断进步;从长远看,EDA技术将随着微电子技术、计算机技术的不断发展而发展。“工欲善其事,必先利其器”,EDA工具在现代电子系统的设计中所起的作用越来越大,未来它将在诸多因素的推动下继续进步。1.2 Top-down设计与IP核复用

数字系统的设计方法发生了深刻的变化。传统的数字系统采用搭积木式的方式进行设计,即由一些固定功能的器件加上一定的外围电路构成模块,由这些模块进一步形成各种功能电路,进而构成系统。构成系统的积木块是各种标准芯片,如74/54系列(TTL)、4000/4500系列(CMOS)芯片等,这些芯片的功能是固定的,用户只能根据需要从这些标准器件中选择,并按照推荐的电路搭成系统。在设计时,几乎没有灵活性可言,设计一个系统所需的芯片种类多且数量大。

PLD器件和EDA技术的出现,改变了这种传统的设计思路,使人们可以立足于PLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件的内部逻辑和引脚,将原来由电路板设计完成的工作大部分放在芯片的设计中进行。这样不仅可以通过芯片设计实现各种数字逻辑功能,而且由于引脚定义的灵活性,减轻了原理图和印制板设计的工作量和难度,增加了设计的自由度,提高了效率。同时这种设计减少了所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。

在基于EDA技术的设计中,通常有两种设计思路:一种是自顶向下的设计思路,一种是自底向上的设计思路。1.2.1 Top-down设计

Top-down设计,即自顶向下的设计。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是PLD器件或专用集成电路(ASIC)。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

在Top-down的设计中,将设计分成几个不同的层次:系统级、功能级、门级和开关级等,按照自上而下的顺序,在不同的层次上,对系统进行设计与仿真。图1.2是这种设计方式的示意图。如图中所示,在Top-down的设计过程中,需要有EDA工具的支持,有些步骤EDA工具可以自动完成,比如综合等,有些步骤EDA工具为用户提供了操作平台。Top-down的设计必须经过“设计—验证—修改设计—再验证”的过程,不断反复,直到得到的结果能够完全实现所要求的逻辑功能,并且在速度、功耗、价格和可靠性方面实现较为合理的平衡。不过,这种设计也并非是绝对的,在设计的过程中,有时也需要用到自下而上的方法,就是在系统划分和分解的基础上,先进行底层单元设计,然后再逐步向上进行功能块、子系统的设计,直至构成整个的系统。

如图1.3所示是用Top-down的设计方式设计CPU的示意图。首先在系统级划分,将整个CPU划分为几个模块,如ALU,PC,RAM模块等,对每个模块再分别进行设计与描述,然后通过EDA工具将整个设计综合为门级网表,并实现它。在设计过程中,需要进行多次仿真和验证,不断修改设计。图1.2 Top-down设计方式图1.3 CPU的Top-down设计方式示意图1.2.2 Bottom-up设计

Bottom-up设计,即自底向上的设计,这是一种传统的设计思路。这种设计方式,一般是设计者选择标准集成电路,或者将各种基本单元,如各种门电路以及加法器、计数器等模块做成基本单元库,调用这些基本单元,逐级向上组合,直到设计出满足自己需要的系统为止。这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高,而且容易出错。

Top-down的设计由于更符合人们逻辑思维的习惯,也容易使设计者对复杂的系统进行合理的划分与不断的优化,因此是目前设计思想的主流。而Bottom-up的设计往往使设计者关注了细节,而对整个的系统缺乏规划,当设计出现问题时,如果要修改,就会比较麻烦,甚至前功尽弃,不得不从头再来。因此,在数字系统的设计中,主要采用Top-down的设计思路,而以Bottom-up设计为辅。1.2.3 IP复用技术与SoC

当电子系统的设计越来越向高层发展时,基于IP复用(IP Reuse)的设计技术越来越显示出优越性。IP(Intellectual Property),其原来的含义是指知识产权、著作权等,在IC设计领域可将其理解为实现某种功能的设计,IP核(IP模块)则是指完成某种功能的设计模块。

IP核分为硬核、固核和软核三种类型。软核指的是在寄存器级或门级对电路功能用HDL进行描述,表现为VHDL或Verilog HDL代码,软核与生产工艺无关,不涉及物理实现,为后续设计留有很大的空间,增大了IP的灵活性和适应性。用户可以对软核的功能加以裁剪以符合特定的应用,也可以对软核的参数进行设置,包括总线宽度、存储器容量、使能或禁止功能块等。硬核指的是以版图形式实现的设计模块,它基于一定的设计工艺,通常用GDS Ⅱ格式表示,不同的客户可以根据自己的需要选用特定生产工艺下的硬核。固核是完成了综合的功能块,通常以网表的形式提交客户使用。软核使用灵活,但其可预测性差,延时不一定能达到要求;硬核可靠性高,能确保性能,如速度、功耗等,能够很快地投入使用。

如图1.4所示,由微处理器核(MPU Core),数字信号处理器核(DSP Core),存储器核(RAM/ROM),A/D、D/A核以及USB接口核等构成一个单片系统(SoC)。用户在设计一个系统时,可以自行设计各个功能模块,也可以用IP模块来构建。作为设计者来说,想要在短时间内开发出新产品,一个比较好的方法就是使用IP核完成设计。目前,还有专门的组织VSIA(Virtual Socket Interface Association,虚拟插座接口协会)来制定关于IP产品的标准与规范。图1.4 系统芯片(SoC)示意图

如上所述,基于IP复用的开发给设计者带来了诸多好处,如节省时间、缩短开发周期、避免重复劳动等。当然,IP的发展还存在一些问题,比如IP版权的保护、IP的保密以及IP间的集成等。但基于IP复用的设计技术无疑会成为电子系统开发的重要手段之一。

系统芯片(SoC),或者称为芯片系统、片上系统,是指把一个完整的系统集成在一个芯片上;或者说是用一个芯片实现一个功能完整的系统。系统芯片可以采用全定制的方式来实现,把设计的网表文件提交给半导体厂家流片就可得到,但采用这种方式风险性高,费用大,周期长。还有一种方式就是采用可编程逻辑器件来实现。CPLD和FPGA的集成度越来越高,速度也越来越快,设计者可以在其上通过编程完成自己的设计。今天,已不仅能用它们实现一般的逻辑功能,还可以把微处理器、DSP、存储器、标准接口等功能部件全部集成在其中,真正实现System on Chip。

微电子制造工艺的进步为SoC的实现提供了硬件基础,而EDA软件技术的提高则为SoC创造了必要的开发平台。目前,EDA的新工具、新标准和新方法正在向着高层化发展,过去已将设计从晶体管级提高到了逻辑门级,后来,又提高到了寄存器传输级,现在则越来越多地在系统级完成。

在数字系统进入SoC时代后,设计方法也随之而产生变化。如果把器件的设计看成是设计者根据设计规则用软件来搭接已有的不同模块,那么早期的设计是基于晶体管的(Transistor Based Design)。在这一阶段,设计者最关心的是怎样减小芯片的面积,所以又称为面积驱动的设计(Area Driving Design,ADD)。随着设计方法的改进,出现了以门级模块为基础的设计(Gate Based Design)。在这一阶段,设计者在考虑芯片面积的同时,更多关注门级模块之间的延时,所以这种设计又称为时延驱动的设计(Time Driving Design,TDD)。20世纪90年代以来,芯片的集成度进一步提高,系统芯片SoC的出现,使得以IP模块复用为基础的设计逐渐流行,这种设计方法称为基于模块的设计方法(Block Based Design,BBD)。在应用BBD方法进行设计的过程中,逐渐产生的一个问题是,在开发完一个产品后,怎么能尽快开发出其系列产品。这样就产生了新的概念PBD,PBD是基于平台的设计方法(Platform Based Design),它是一种基于IP的,面向特定应用领域的SoC设计环境,可以在更短的时间内设计出满足需要的电路。PBD的实现依赖于如下关键技术的突破:如高层次系统级的设计工具,软硬件协同设计技术,等等。图1.5是上述设计方法演变的示意图。图1.5 设计方法的演变1.3 数字设计的流程

数字系统的实现主要可选择两类器件,一类是可编程逻辑器件(PLD);另一类是专用集成电路(ASIC),这两类器件各有自己的优点。

PLD(主要包括FPGA和CPLD)是一种半定制的器件,器件内已做好各种逻辑资源,用户只需对器件内的资源编程连接就可实现所需要的功能,而且可以反复修改,反复编程,直到满足设计要求。用PLD实现设计直接面向用户,具有其他方法无可比拟的方便性、灵活性和通用性,硬件测试和实现快捷,开发效率高、成本低,风险小。现代FPGA器件集成度不断提高,等效门数已达到了千万门级,在器件中,除集成各种逻辑门和寄存器外,还集成了嵌入式块RAM、硬件乘法器、锁相环、DSP块等功能模块,使FPGA的使用更方便。EDA开发软件对PLD器件也提供了强有力的支持,其功能更全面,兼容性更强。

专用集成电路(Application Specific Integrated Circuit,ASIC)指用全定制方法来实现设计的方式,它在最低层,即物理版图级实现设计,因此也称为掩膜(Mask)ASIC。采用ASIC,能得到最高速度、最低功耗和最省面积的设计。它要求设计者必须使用版图编辑工具从晶体管的版图尺寸、位置及连线开始进行设计,以得到芯片的最优性能。在版图设计时,设计者需手工设计版图并精心地布局布线,以获得最佳的性能和最小的面积。版图设计完成后,还要进行一系列检查和验证,包括设计规则检查、电学规则检查、连接性检查、版图与电路图一致性检查等,全部通过后,才可以将得到的标准格式的版图文件(一般为CIF、GDSII格式)交与半导体厂家进行流片。

ASIC是在母片(晶圆)的基础上实现芯片的,如图1.6所示为一片8寸的晶圆(Wafer),每一个小方格经过切割,封装后就是一颗芯片。ASIC的实现成本高昂,设计周期长,但可以设计出速度高、功耗低、尽量节省面积的芯片,适用于对性能要求很高和批量很大的芯片。图1.6 晶圆

用PLD还是用ASIC来实现设计,应根据具体情况选择,对多数设计而言,采用PLD器件实现是一种周期短、投入少、风险小的选择。对于成熟的设计来说,可考虑采用ASIC的形式实现,以获得最优的性价比。

基于FPGA/CPLD器件的数字系统设计流程如图1.7所示,包括设计输入、综合、布局布线、仿真和编程下载等步骤。1.3.1 设计输入

设计输入(Design Entry)是将设计者所设计的电路以开发软件要求的某种形式表达出来,并输入到相应软件中的过程。设计输入有多种表达方式,最常用的是原理图方式和HDL文本方式两种。图1.7 基于FPGA/CPLD的数字系统设计流程

1.原理图输入

原理图(Schematic)是图形化的表达方式,使用元件符号和连线来描述设计。其特点是适合描述连接关系和接口关系,而描述逻辑功能则比较烦琐。原理图输入对用户来讲很直观,尤其对表现层次结构、模块化结构更为方便。但它要求设计工具提供必要的元件库或逻辑宏单元。如果输入的是较为复杂的逻辑或者元件库中不存在的模型,采用原理图输入方式往往很不方便,此外,原理图方式的设计可重用性、可移植性也差一些。

2.HDL文本输入

硬件描述语言(HDL)是一种用文本形式来描述和设计电路的语言。设计者可利用HDL语言来描述自己的设计,然后利用EDA工具进行综合和仿真,最后变为某种目标文件,再用ASIC或FPGA具体实现。这种设计方法已被普遍采用。

硬件描述语言的发展至今不过20年左右的历史,已成功应用于数字系统开发的各个阶段:设计、综合、仿真和验证等。到20世纪80年代时,已出现了数十种硬件描述语言,但是,这些语言一般面向特定的设计领域与层次,而且众多的语言使用户无所适从,因此需要一种面向多领域、多层次并得到普遍认同的标准HDL语言。进入20世纪80年代后期,硬件描述语言向着标准化、集成化的方向发展。最终,VHDL和Verilog HDL适应了这种趋势的要求,先后成为IEEE标准,在电子设计领域成为事实上的通用硬件描述语言。

VHDL和Verilog HDL各有优点,可用来进行算法级(Algorithm Level)、寄存器传输级(RTL)、门级(Gate Level)等各种层次的逻辑设计,也可以进行仿真验证、时序分析等。由于HDL语言的标准化,易于将设计移植到不同厂家的芯片中去,信号参数也容易改变和修改。此外,采用HDL进行设计还具有工艺无关性,这使得工程师在功能设计、逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求,施加不同的约束条件,即可设计出实际电路。

PLD器件的设计往往采用层次化的设计方法,分模块、分层次地进行设计描述。描述器件总功能的模块放置在最上层,称为顶层设计;描述器件最基本功能的模块放置在最下层,称为底层设计。顶层和底层之间的关系类似于软件中的主程序和子程序的关系。层次化设计的方法比较自由,可以在任何层次使用原理图或硬件描述语言进行描述。一般做法是:在顶层设计中,使用图形法表达连接关系和芯片内部逻辑到引脚的接口;在底层设计中,使用硬件描述语言描述各个模块的逻辑功能。1.3.2 综合

综合(Synthesis)是一个很重要的步骤,综合指的是将较高级抽象层次的设计描述自动转化为较低层次描述的过程。综合有下面几种形式。

● 将算法表示、行为描述转换到寄存器传输级(RTL),即从行为描述到结构描述。

● 将RTL级描述转换到逻辑门级(包括触发器),称为逻辑综合。

● 将逻辑门表示转换到版图表示,或转换到PLD器件的配置网表表示;根据版图信息能够进行ASIC生产,有了配置网表可完成基于PLD器件的系统实现。

综合器就是能够自动实现上述转换的软件工具。或者说,综合器是能够将原理图或HDL语言表达、描述的电路编译成由与或阵列、RAM、触发器、寄存器等逻辑单元组成的电路结构网表的工具。

硬件综合器和软件程序编译器是有着本质的区别的,如图1.8所示是表现两者区别的示意图,软件程序编译器是将C或汇编语言等编写的程序编译为0,1代码流,而硬件综合器则是将用硬件描述语言编写的程序代码转化为具体的电路网表结构。图1.8 软件编译器和硬件综合器的比较1.3.3 布局布线

布局布线可理解为将综合生成的电路逻辑网表映射到具体的目标器件中实现,并产生最终的可下载文件的过程。布局布线将综合后的网表文件针对某一具体的目标器件进行逻辑映射,把整个设计分为多个适合器件内部逻辑资源实现的逻辑小块,并根据用户的设定在速度和面积之间做出选择或折中;布局是将已分割的逻辑小块放到器件内部逻辑资源的具体位置,并使它们易于连线;布线则是利用器件的布线资源完成各功能块之间和反馈信号之间的连接。

布局布线完成后产生如下一些重要的文件:(1)芯片资源耗用情况报告;(2)面向其他EDA工具的输出文件,如EDIF文件等。(3)产生延时网表结构,以便于进行精确的时序仿真,因为已经提取出延时网表,所以仿真结果能比较精确地预测未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改源代码或选择不同速度的器件,直至满足设计要求。(4)器件编程文件:如用于CPLD编程的JEDEC,POF等格式的文件;用于FPGA配置的SOF,JAM,BIT等格式的文件。

由于布局布线与芯片的物理结构直接相关,因此一般选择芯片制造商提供的开发工具进行此项工作。1.3.4 仿真

仿真(Simulation)也称为模拟,是对所设计电路的功能的验证。用户可以在设计过程中对整个系统和各个模块进行仿真,即在计算机上用软件验证功能是否正确,各部分的时序配合是否准确。如果有问题可以随时进行修改,从而避免了逻辑错误。高级的仿真软件还可以对整个系统设计的性能进行估计。规模越大的设计,越需要进行仿真。

仿真包括功能仿真和时序仿真。不考虑信号时延等因素的仿真,称为功能仿真,又叫前仿真;时序仿真又称后仿真,它是在选择具体器件并完成布局布线后进行的包含延时的仿真。由于不同器件的内部时延不一样,不同的布局、布线方案也给延时造成很大的影响,因此在设计实现后,对网络和逻辑块进行时延仿真,分析定时关系,估计设计性能是非常必要的。1.3.5 编程配置

把适配后生成的编程文件装入到PLD器件中的过程称为下载。通常将对基于EEPROM工艺的非易失结构CPLD器件的下载称为编程(Program),而将基于SRAM工艺结构的FPGA器件的下载称为配置(Configure)。编程需要满足一定的条件,如编程电压、编程时序和编程算法等。有两种常用的编程方式:在系统编程(In-System Programmable,ISP)和用专用的编程器编程,现在的PLD器件一般都支持在系统编程,因此在设计数字系统和做PCB时,应预留器件的下载接口。1.4 常用的EDA软件工具

EDA工具软件有两种分类方法:一种是按公司类别进行分类;另一种是按照软件的功能进行划分。若按公司类别分,大体有两类:一类是专业EDA软件公司开发的工具,也称为第三方EDA软件工具,专业EDA公司比较著名的有Cadence Dedign Systems、Mentor Graphics、Synopsys和Synplicity四家,他们的软件工具被广泛地应用;另一类是PLD器件厂商为了销售其芯片而开发的EDA工具,较著名的有Altera、Xilinx、Lattice等。前者独立于半导体器件厂商,其推出的EDA软件功能强,相互之间具有良好的兼容性,适合进行复杂和高效率的设计,但价格昂贵;后者能针对自己器件的工艺特点做出优化设计,提高资源利用率,降低功耗,改善性能,适合产品开发单位使用。

如果按照功能划分,EDA软件工具可分为如下几类。

1.集成的FPGA/CPLD开发工具

集成的FPGA/CPLD开发工具是由FPGA/CPLD芯片生产厂家提供的,这些工具可以完成从设计输入(原理图或HDL)、逻辑综合、模拟仿真到适配下载等全部工作。常用的集成开发工具见表1.1,这些开发工具多数将一些专业的第三方软件也集成在一起,极大提高了软件的功能。表1.1 常用的集成FPGA/CPLD开发工具

2.设计输入工具

输入工具主要是帮助用户完成原理图和HDL文本的编辑和输入工作。好的输入工具能够支持多种输入方式,包括原理图、HDL文本、波形图、状态机、真值表等。比如,HDL Designer Series,是Mentor公司的设计输入工具,包含于FPGA Advantage软件中,可以接受HDL文本、原理图、状态图、表格等多种设计输入形式,并将其转化为HDL文本表达方式,功能很强。输入工具可帮助用户提高输入效率,多数人习惯使用集成开发软件或者综合/仿真工具中自带的原理图和文本编辑器,也可以直接使用普通文本编辑器,如UltraEdit等。

3.逻辑综合器(Synthesizer)

逻辑综合是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图描述,依据给定的硬件结构和约束控制条件进行编译、优化和转换,最终获得门级电路甚至更底层的电路描述网表文件的过程。

逻辑综合工具能够自动完成上述过程,产生优化的电路结构网表,输出.edf文件,导给FPGA/CPLD厂家的软件进行适配和布局布线。专业的逻辑综合软件通常比FPGA/CPLD厂家的集成开发软件中自带的逻辑综合功能更强,能得到更优化的结果。

最著名的用于FPGA/CPLD设计的HDL综合工具有如下3个:

● Synopsys公司的FPGA Express,FPGA compiler和FPGA Complier Ⅱ;

● Synplicity的Synplify Pro/Synplify;

● Mentor的Leonardo Spectrum。

表1.2中对这3个工具的性能做了介绍。表1.2 常用的综合工具

4.仿真器

仿真工具提供了对设计进行模拟仿真的手段,包括布线以前的功能仿真(前仿真)和布线以后包含延时的时序仿真(后仿真)。在一些复杂的设计中,仿真比设计本身还要艰巨,因此有人认为仿真是EDA的精髓所在,仿真器的仿真速度、仿真的准确性、易用性等成为衡量仿真器性能的重要指标。

仿真器按对设计语言的不同处理方式分为两类:编译型仿真器和解释型仿真器。编译型仿真器的仿真速度快,但需要预处理,因此不能即时修改;解释型仿真器的仿真速度要慢一些,但可以随时修改仿真环境和仿真条件。按处理的HDL语言类型,仿真器可分为:Verilog HDL仿真器、VHDL仿真器和混合仿真器,混合仿真器能够同时处理Verilog HDL和VHDL。

常用的HDL仿真软件如表1.3所示。表1.3 常用的HDL仿真软件

ModelSim能够提供很好的Verilog HDL和VHDL混合仿真;NC-Verilog和VCS是基于编译技术的仿真软件,能够胜任行为级、RTL级和门级各种层次的仿真,速度快;而Verilog-XL是基于解释的仿真工具,速度要慢一些。

5.芯片版图设计软件

提供IC版图设计工具的著名公司有Cadence,Mentor,Synopsys等,Synopsys的优势在于其逻辑综合工具,而Mentor和Cadence则能够在设计的各个层次提供全套的开发工具。在晶体管级或基本门级提供图形输入工具的有Cadence的Composer、Viewlogic公司的Viewdraw等。专用于IC的综合工具有Synopsys的Design Compiler和Behavial Compiler;Synplicity的Synplify ASIC;Cadence的Synergy等。IC仿真工具的关键在于晶体管物理模型的建立和实际工艺中晶体管物理特性相符的模型必然得到和实际电路更符合的工作波形。随着IC集成度的日益提高、线宽的日趋缩小,晶体管的模型也日趋复杂。任何电路仿真都是基于一定的厂家库,在这些库文件中制造厂家为设计者提供了相应的工艺参数。SPICE是著名的模拟电路仿真工具,SPICE最早产生于Berkley大学,经历数十年的发展,随晶体管线宽的不断缩小,SPICE也引入了更多的参数和更复杂的晶体管模型,使其在亚微米和深亚微米工艺的今天依旧是模拟电路仿真的重要工具之一。此外,还有其他一些IC版图工具,如自动布局布线(Auto Plane&Route)工具、版图输入工具、物理验证(Physical Validate)和参数提取(LVS)工具,等等。半导体集成技术还在不断地发展,相应的IC设计工具也不断地更新换代,以提供对IC设计的全方位支持,应该说没有EDA工具就没有IC。

6.其他EDA专用工具

除了上面介绍的EDA软件外,一些公司还推出了一些开发套件和专用的开发工具,如表1.4所示。表1.4 其他EDA工具

近年来,由于数字信号处理的广泛应用,一些EDA公司加大了在该方面的工具支持,比如Altera公司推出了DSP Builder工具,它允许设计者在MATLAB中设计算法,在Simulink中运行系统集成,自动导出HDL设计文本到Quartus Ⅱ软件中进行实现,完成了从常用的DSP开发工具到EDA工具的无缝连接。Xilinx公司则推出了System Generator工具,可完成类似的功能。1.5 EDA技术的发展趋势

1.高性能的EDA工具将得到进一步发展

随着市场需求的增长,集成工艺水平及计算机自动设计技术的不断提高,单片系统或系统集成芯片成为IC设计的主流,这一发展趋势表现在以下几个方面:(1)超大规模集成电路技术水平的不断提高,超深亚微米(VDSM)工艺如90 nm,45 nm甚至32 nm已经走向成熟,在一个芯片上完成系统级的集成已成为现实。(2)由于工艺线宽的不断减小,在半导体材料上的许多寄生效应已经不能简单地被忽略,这就对EDA工具提出了更高的要求。同时,也使得IC生产线的投资更为巨大,可编程逻辑器件开始进入传统的ASIC市场。(3)市场对电子产品提出更高的要求,如必须降低电子系统的成本,减小系统的体积等,从而对系统的集成度不断提出更高的要求。同时,设计效率也成为一个产品能否成功的关键因素,促使EDA工具和IP核应用更为广泛。(4)高性能的EDA工具将得到长足的发展,其自动化和智能化程度将不断提高,从而为嵌入式系统设计提供功能强大的开发环境。此外,计算机硬件平台性能的大幅度提高,也为复杂的SoC设计提供了物质基础。

由于现在的硬件描述语言只提供行为级或功能级的描述,尚无法完成系统级的抽象描述。因此人们正尝试开发一种新的系统级设计语言来完成这一工作,现在已经开发出更趋于电路行为级设计的硬件描述语言,如SystemC,System Verilog等。SystemC由Synopsys公司和CoWare公司合作开发,目前已有众多EDA公司、IP公司、半导体公司和嵌入式软件公司成立“开放式SystemC联盟”,支持SystemC的开发。还出现了很多系统级混合仿真工具,可以在同一个开发平台上完成高级语言(如C/C++等)与标准硬件描述语言(Verilog HDL、VHDL)或其他更低层次描述模块的混合仿真。

2.EDA技术将促使ASIC和FPGA逐步走向融合

此外,随着系统开发对EDA技术的目标器件各种性能指标要求的提高,ASIC和FPGA将更大程度地相互融合。这是因为虽然标准逻辑ASIC芯片尺寸小、功能强、耗电省,但设计复杂,并且有批量生产要求;可编程逻辑器件的开发费用低廉,能现场编程,但体积大、功耗大。因此FPGA和ASIC正在走到一起,两者之间正在诞生一种“杂交”产品,互相融合,取长补短,以满足成本和上市速度的要求。例如,将可编程逻辑器件嵌入到标准单元。

尽管将标准单元核与可编程器件集成在一起并不意味着使ASIC更加便宜,或者使FPGA更加省电,但设计者可将两者的优点结合在一起,通过去掉FPGA的一些功能以减少开发成本并增加灵活性。现正在进行将ASIC嵌入可编程逻辑单元的工作,许多PLD公司已经开始为ASIC提供FPGA内核。PLD厂商与ASIC制造商结盟,为SoC设计提供嵌入式FPGA模块,使未来的ASIC供应商有机会更快地进入市场。

在新一代的ASIC器件中留有FPGA的空间。如果希望改变设计,或者由于开始的工作中没有条件完成做足够的验证试验,稍后也可以根据要求对它编程,从而就具备了一定的再修改自由度。ASIC设计人员采用这种小的可编程逻辑内核用于修改设计问题,很好地降低了设计风险。现在传统ASIC设计和FPGA之间的界限正变得模糊,系统级芯片不仅集成RAM和微处理器,也集成FPGA。

3.EDA技术的应用领域将越来越广泛

从目前的EDA技术来看,其特点是使用普及、应用广泛、工具多样、软件功能强大。在ASIC和PLD器件方面,向超高速、高密度、低功耗、低电压方向发展。EDA技术发展迅速,可以用日新月异来描述。EDA技术的应用广泛,现已涉及各行各业。EDA水平不断提高,设计工具不断趋于完善。习题 1

1.1 谈谈自己对EDA技术的认识。

1.2 现代EDA技术的特点有哪些?

1.3 什么是Top-down设计方式?

1.4 数字系统的实现方式有哪些?各有什么优缺点?

1.5 什么是IP复用技术?IP核对EDA技术的应用和发展有什么意义?

1.6 用硬件描述语言设计数字电路有什么优势?

1.7 结合自己的使用情况谈谈对EDA工具的认识。

1.8 基于FPGA/CPLD的数字系统设计流程包括哪些步骤?

1.9 什么是综合?常用的综合工具有哪些?

1.10 功能仿真与时序仿真有什么区别?

1.11 FPGA与ASIC在概念上有什么区别?第2章 FPGA/CPLD器件

可编程逻辑器件(Programmable Logic Device,PLD)是20世纪70年代发展起来的一种新型器件,它的应用和发展不仅简化了电路设计,降低了开发成本,提高了系统可靠性,而且给数字系统的设计方式带来了革命性的变化。PLD器件不断进步,其动力来自于实际需求和芯片制造商间的竞争,PLD在结构、容量、速度和灵活性方面不断提升性能。2.1 PLD器件概述

PLD器件的工艺和结构经历了一个不断发展变革的过程。2.1.1 PLD器件的发展历程

PLD器件的雏形是20世纪70年代中期出现的可编程逻辑阵列(Programmable Logic Array,PLA),PLA在结构上由可编程的与阵列和可编程的或阵列构成,阵列规模小,编程烦琐。后来出现了可编程阵列逻辑(Programmable Array Logic,PAL),PAL由可编程的与阵列和固定的或阵列组成,采用熔丝编程工艺,它的设计较PLA灵活,速度快,因而成为第一个得到普遍应用的PLD器件。

20世纪80年代初,美国的Lattice公司发明了通用阵列逻辑(Generic Array Logic,GAL)。GAL器件采用了输出逻辑宏单元(OLMC)的结构和EEPROM工艺,具有可编程、可擦除、可长期保持数据的优点,使用方便,所以GAL得到了更为广泛的应用。

之后,PLD器件进入了一个快速发展时期,不断地向着大规模、高速度、低功耗的方向发展。20世纪80年代中期,Altera公司推出了一种新型的可擦除、可编程的逻辑器件(Erasable Programmable Logic Device,EPLD),EPLD采用CMOS和UVEPROM工艺制成,集成度更高,设计也更灵活,但它的内部连线功能弱一些。

1985年,美国Xilinx公司推出了现场可编程门阵列(Field Programmable Gate Array,FPGA),这是一种采用单元型结构的新型的PLD器件。它采用CMOS,SRAM工艺制作,在结构上和阵列型PLD不同,它的内部由许多独立的可编程逻辑单元构成,各逻辑单元之间可以灵活地相互连接,具有密度高、速度快、编程灵活、可重新配置等优点,FPGA成为当前主流的PLD器件之一。

CPLD(Complex Programmable Logic Device),即复杂可编程逻辑器件,是从EPLD改进而来的,采用EEPROM工艺制作,同EPLD相比,CPLD增加了内部连线,对逻辑宏单元和I/O单元也有重大改进,它的性能好,使用方便。尤其是在Lattice公司提出在系统编程(In System Programmable,ISP)技术后,相继出现了一系列具备ISP功能的CPLD器件,CPLD是当前另一主流的PLD器件。

PLD器件仍处在不断发展变革中。由于PLD器件在其发展过程中出现了很多种类,不同公司生产的PLD,其工艺与结构也各不相同,因此就产生了不同的分类标准,以对众多的PLD器件进行划分。2.1.2 PLD器件的分类

1.按集成度分类

集成度是PLD器件的一项重要指标,如果从集成密度上分,PLD可分为低密度PLD器件(LDPLD)和高密度PLD器件(HDPLD),低密度PLD器件也可称为简单PLD器件(SPLD)。历史上,GAL22V10是简单PLD和高密度PLD的分水岭,一般按照GAL22V10芯片的容量区分SPLD和HDPLD。GAL22V10的集成度大致在500~750门之间。如果按照这个标准,PROM,PLA,PAL和GAL属于简单PLD,而CPLD和FPGA则属于高密度PLD,如表2.1所示。表2.1 PLD器件按集成度分类

1)简单的可编程逻辑器件(SPLD)

SPLD包括PROM、PLA、PAL和GAL四类器件。(1)可编程只读存储器(Programmable Read-Only Memory,PROM)。PROM采用熔丝工艺编程,只能写一次,不可以擦除或重写。随着技术的发展和应用上的需求,又出现了一些可多次擦除使用的存储器件,如EPROM(紫外线擦除可编程只读存储器)和EEPROM(电擦写可编程只读存储器)。PROM具有成本低,编程容易的特点,适合于存储数据、函数和表格。(2)可编程逻辑阵列(PLA)。PLA现在基本已经被淘汰。(3)可编程阵列逻辑(PAL)。GAL可以完全代替PAL器件。(4)通用可编程阵列逻辑(GAL)。由于GAL器件简单、便宜,使用也方便,因此在一些低成本、保密要求低,电路简单的场合仍有应用价值。

以上四类SPLD器件都是基于“与或”阵列结构的,不过其内部结构有明显区别,主要表现在与阵列、或阵列是否可编程,输出电路是否含有存储元件(如触发器)以及是否可以灵活配置(可组态),具体的区别如表2.2所示。表2.2 四种SPLD器件的区别

2)高密度可编程逻辑器件(HDPLD)

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载