VHDL设计指南(原书第2版)
作者 : Peter J.Ashenden
译者 : 葛红 黄河 吴继明
出版日期 : 2005-07-29
ISBN : 7-111-16216-1
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 570
开本 : 16开
原书名 : The Designer's Guide to VHDL , second Edition
原出版社: Morgan Kaufmann Publish
属性分类: 教材
包含CD :
绝版 :
图书简介

电子数字系统的复杂性随着时间呈指数形式增加。事实上,产品寿命周期的不断降低和产品可靠性要求的不断提高,迫使电子产品设计师们需要极大地增加他们设计的产品质量和产出率。VHDL的发展就是顺应了这种趋势。借助于软件工程领域的复杂性管理和错误检测技术,VHDL可以消除无关的细节,采用与工艺无关的描述,及早发现错误,增加了从门级到系统级模型之间的可移植性和共用性。
 本书包括VHDL-87、VHDL-93和VHDL-2001各种版本的内容。详细说明VHDL语言所提供的建模工具,并通过实例讲解VHDL语言的使用。无论是具有熟练技巧的工程师,还是打算入门的学生都可以从本书获益。

图书特色

图书前言

VHDL是一种描述数字电子系统的语言,它源自美国政府的甚高速集成电路(VHSIC)计划。随着计划的进行,人们发现迫切地需要一种标准语言来描述集成电路(IC)的结构和功能。因此,VHSIC硬件描述语言(VHDL)就应运而生。在国际电气与电子工程师(IEEE)协会的支持下,VHDL得到了进一步的发展,并在1987年以“标准VHDL语言参考手册”的形式,被正式颁布为IEEE标准1076。VHDL语言的第一个标准版本通常被称为VHDL-87。
  像所有其他的IEEE标准一样,VHDL标准每五年审阅更新一次。负责VHDL标准的IEEE工作小组分析研究来自各个VHDL-87用户的意见和建议,并于1992年提出了修订后的版本。这个版本在1993年被采纳,人们称为VHDL-93。第二轮对标准的修订始于1998年,并在2001年完成。本书描述的就是该语言现在的版本VHDL-2001。
  VHDL语言是为满足设计过程中的各种需要而设计的。第一,它可以对系统的结构进行描述,即一个系统怎样分解成为子系统,这些子系统之间是怎样相互连接的。第二,它可以使用熟悉的编程语言的形式来对系统的功能做详尽的说明。第三,作为结果,它可以先于实际制造前,对系统的设计进行仿真。这样一来,设计人员可以很快地比较各种替代方案,可以在毫不延时和不需要花费硬件样机费用情况下,直接测试方案的正确性。第四,它可以实现从一个较抽象的系统说明综合成一个设计的细节结构。这样,设计人员可以专注于一些更全局更战略性的设计决策,缩短产品推向市场的时间。
  本书详细介绍了VHDL语言所提供的建模工具及其在数字系统设计中的应用方法。本书的宗旨并不是讲授数字设计,因为数字设计本身是一个需要好几本教科书才能覆盖其各个方面的大课题。本书假定读者已经掌握了数字设计的基本概念,例如,学过工程专业的有关数字设计的初级课程。当然,了解计算机编程和计算机组织结构的基本知识对学习本书的内容也是非常有帮助的。本书适合作为数字设计或计算机设计中的入门或中级课程。对于那些需要熟练掌握VHDL技巧的工程师而言,本书也可以作为一本有用的参考书。
  建模仿真和综合是大规模系统设计方法中非常重要的部分。VHDL可以在一个抽象层次的范围内表示模型,包括从门级向上到算法级和结构级的多个层次,它将在未来的一段时间内,在基于硅系统的设计方面扮演重要的角色。

本书的结构
  本书是按照从头至尾顺序阅读的方式组织的。这种途径提供了一种渐变的发展过程,每章都会涉及前面章节介绍的概念。每章都引进一些相关的概念或语言工具,并举若干例子来进行阐述。书中共有4个实例研究章,将前面的相关内容通过综合工作实例的形式结合到一起。
  第1章介绍硬件描述语言的思想,并勾画了其使用的种种理由和由此带来的好处。接着介绍了VHDL的一些基本概念,奠定了后续章节中各个例证的基础。接下来的三章主要讲述VHDL中与传统编程语言最为相似的一些基本内容,这些内容涉及采用算法术语描述系统的行为。第2章解释了语言的基本类型体系并引进了标量数据类型。第3章描述了顺序控制结构,而第4章则介绍了表示数据元素集合的复合数据结构。
  第5章详细介绍了VHDL中建模硬件的主要工具和功能设施,包括设计中对各种基本行为单元建模的工具,和连接各基本单元的信号,以及设计的层次结构。如果将前面各章节介绍的各种功能设施组合在一起的话,可以完成许多建模任务。因此,第6章是第一个综合性的实例研究,设计了一个乘法累加器电路。
  接下来的章节组进一步扩充了VHDL语言的基本特性,使得设计人员在处理大系统时更加得心应手。第7章介绍过程和函数,可以将设计中的某些行为内容包装成一些独立的功能段落。第8章介绍了包的概念,利用包将设计的相关部分组合在一起,生成一些可以被多个设计使用的模块。同时,还介绍了一系列VHDL设计中常用的IEEE标准包。第9章是有关别名的内容,主要针对大规模模型中有可能出现的大量命名的管理问题。这个章节组的最后一章是第二个实例研究,设计了二进制算术操作的集合包。
  第三个章节组则主要讨论VHDL中的高级建模功能。第11章处理决断信号这一重要课题,第12章描述了类属常数,是一种对设计中的结构和行为进行参数化处理的方法。虽然这部分内容是许多真实模型的基础,但在本书中还是安排在较后的章节中。经验已经证实,没有坚实的硬件描述语言知识的基础,要理解这些概念是比较困难的。第13章主要讲元件的实例化和配置问题。这些功能特性对于大型真实模型也是十分重要的,但较难理解。因此,本书在前面的章节中,通过直接例化的方式进行结构建模,而把元件实例化和配置这些更普遍的情况留到了这一章来讲解。第14章介绍了一些生成的常规结构。第15章则是第三个实例研究,描述了一个CPU的寄存器传输层模型。
  第四个章节组主要讨论系统级建模中使用的语言工具。第16章详细处理了有关保护信号和块的内容。第17章介绍了访问类型标记(或指针)的表示方法,并利用它们建立链接数据结构。这就涉及了有关抽象数据类型的讨论,处理与链接数据结构相关的复杂性问题。第18章讨论使用文件输入和输出的语言工具,包括二进制文件和文本文件。第19章则是第四个实例研究,建立一个队列网络的计算机系统模型。
  最后两章将剩下的一些语言工具归并,第20章描述了属性机制,对设计加入一些附加信息的注解。第21章介绍其他一些前面未涉及的高级课题。
  虽然通篇地阅读本书,可以对VHDL语言有一个完整的了解,但是也可以按不同顺序有选择地阅读。下面针对不同读者,给出了一些阅读和教学的建议。
  * 对于VHDL数字系统建模的初级课程:建议学习第1章到第5章,第7、8、11和12章,再加上第6章的实例研究。如果时间允许,可以增加第9章和第10章的内容。
  * 对于一个较高级的课程:建议再增加第13章和第14章的内容,如果时间许可,也应把第15章的实例研究包括在内。
  * 如果读者已经熟悉常规的编程语言:可以将第2章到第4章作为一个复习。
  * 如果读者已有一些VHDL的入门级的背景:将第1章至第4章作为一个复习。
  每章结尾都设计了一定数量的练习题,可以帮助读者增强对内容的理解。每道练习题使用一个方括号标明该练习题所对应的本章的特定主题的章节数目,同时,加入了一个粗略的难度等级,具体含义如下:
 ①问答题,测验基本概念。
 ②基本建模练习—10分钟至半小时的工作。
  ③高级建模练习—1小时到2小时的作业。
  ④建模项目—需要半天或更多时间。
  以上第一类型的练习题的答案列于附录G。其他类型的练习涉及到开发VHDL模型。建议读者利用VHDL仿真器执行自己书写的模型,以验证这些建模练习的正确性。对于那些只是比较纸上的模型和答案来说,这是一种更为有效的练习方法。
  贯穿于本书内容的一个基本思想就是,使用一个硬件描述语言建模本质上是一个软件设计练习。这就意味着应该应用好的软件工程惯例,因此本书的处理方法是直接从软件工程的经验中提取出来的。本书中呈现的大量提示和技巧都来自于小规模和大规模软件工程,真诚地希望这些经验对读者的学习有用处。

第2版的一些改动
  本书的第1版出版于1995年,正值VHDL-93得到越来越普遍的接受。此版的更新反映了VHDL-2001的一些变化。语言标准中的许多改变纠正了前面标准中存在的一些模糊性问题,这些问题容易造成不同供应商的VHDL工具之间的不兼容性。同样,在增强语言的应用性方面也做了一些改进。书的正文和例子都随之进行了修订以适应这种语言上的改动。而且,自从本书的第1版出版之后,又新公布了一系列的与VHDL相关的标准并取得了广泛的认同。第8章扩充了一个包括IEEE标准综合和数学包的描述,附录A完整地重写了IEEE综合协同性标准。根据这些发展,第15章中DLX实例研究进行了较大的修订。附录D也进行了重大修订和扩充,以反映在当前EDA(Electronic Design Automation,电子设计自动化)领域使用的大量的VHDL相关标准。

求助和信息资源
  尽管本书试图全面地反映VHDL的内容,但无疑还有许多问题是本书没有涉及和不能回答的。为此,读者需要寻找其他资料。这里有一个常常被忽视的,但十分有价值的经验和忠告。
  在工作地点或在用户小组中,向你身边的同事求助。用户小组通常会举行定期的正式或非正式的会议,其中包括一个提问和答疑时间。许多用户小组还在网络上通过电子邮件和在线讨论的方式解决问题。在全世界有许多VHDL用户小组,其中很多小组是在VHDL国际组织(www.vhdl.org)的支持下运作。该国际组织针面向用户的部分是VHDL国际组织论坛(www.vhdl.org/viuf/)。该组织支持与VHDL相关的会议、设计比赛和其他活动。
  VHDL国际组织是多个支持EDA行业工作团体网络服务器(www.eda.org)的组织之一。这个服务器连接到多个VHDL标准工作小组和用户小组的网页和知识库。
  对于访问Usenet电子新闻网的读者来说,你会发现新闻组comp.lang.vhdl是一个非常有用的资源。这个新闻小组的资源包括通知、样板模型、问题和答案,以及有用的软件等。小组的参加人员包括VHDL小组的用户以及那些积极参加语言标准工作小组和从事VHDL工具开发的人员。对该小组来说,“经常询问的问题”(FAQ)文件是一个对有关书籍、产品和其他信息的有用的指针资源。这些文件存档于www.eda.org。
  一个值得一提的资源是IEEE 1076标准,IEEE标准VHDL语言参考手册(IEEE Standard VHDL Language Reference Manual),有时候它被称为“VHDL的圣经”。它是关于VHDL权威的信息资料。然而,因为它是一种定义式的文件,而不是教材,所以它是以一种复杂条文的形式书写的。这使得它非常难回答那些在书写VHDL模型时产生的问题。因此,只有当你对VHDL比较熟悉后,才建议使用它,可以从IEEE的网站standards.ieee.org直接订购。
  本书含有大量VHDL模型的例子,它们都可以用作求解问题的资源。这些例子和实例研究的VHDL源代码,还有其他相关信息,都可以在线访问以下网址:
www.mkp.com/vhdl2e
  尽管我已经非常仔细地避免在例子代码中出现错误,但是难免会存在一些错误。我将非常愿意听到读者对书中和源代码中的错误的反馈,这样我可以从在线代码和未来本书的重印中纠正这些错误。勘误表和一般的评论可以通过以下电子邮件发给我:peter@ashenden.com.au

致谢
  本书的写作源泉可以追溯到1990年,当时我在澳大利亚阿德雷德大学为我所教授的计算机结构课程制作了一套简短的笔记稿,VHDL使用手册(Cookbook)。在当时,有关VHDL的书籍很少,所以我把自己的小册子放到了网上供大家浏览。这份小册子可以浏览的消息很快在世界范围内传播,几天时间内,我的电子邮件信箱就都被来信挤爆了。在10年后,编写本书的时间,还不时收到有关那本使用手册的消息。许多读者都催促我编写一本完整的教材版本的书籍。借助于大家的鼓励,我开始尝试写作,终于出版了本书的第1版。我非常感谢世界各地的许许多多的工程师、教师和学生们,他们给了我那样的推动力,并让本书的第1版是那样的成功。我希望这个第2版可以继续满足读者们对全面了解VHDL的需求。
  在本书第1版中,我有机会对许多帮助我写作这本书的人表示了我的感谢。他们包括我在阿德雷德大学的同事;研究合作伙伴Phil Wilsey和他在美国辛辛那提大学的学生;Morgan Kaufmann出版社的工作人员,特别是Bruce Spatz 和Cheri Palmer;本书第1版手稿的评审人,即得克萨斯大学的Poras Balsara,Menchini的Paul Menchini及其合作伙伴,GTE实验室和Lowell大学的David Pitts,辛辛那提大学的Philip Wisley;David Bishop在综合部分贡献了资料,以及Model Technology公司使用他们的V系统分析器和仿真器来测试例证模型。我还要感谢那些对本书第1版作出有价值贡献的所有人和组织。
  从那以后,我很幸运地继续与许多人一道工作,才有了今天的第2版。我向我的合作研究者们和EDA标准领域的同事们表达我诚挚的谢意,感谢他们的努力形成了一个活生生的智力环境,让VHDL在这里扮演了重要的角色。太多的人需要感谢,在这里难以一一列出他们的姓名。但是,我必须单独致谢Phil Wilsey的大力支持和一起共饮美妙咖啡的畅谈,感谢Perry Alexander在出外旅行期间让我占有他的私人办公室来编辑我的手稿。我继续发展着我和Morgan Kaufmann出版社的工作人员的良好的合作关系,特别是高级编辑Denise Penrose。本书得以高质量的出版归于他们的辛勤努力。
  我把本书的第1版献给我的妻子Katrina。正如我在第1版前言中所说,过去我总以为作者们将所著的书籍献给他们伴侣是有些做作,但是Katrina的理解、鼓励和支持告诉我并非如此。我在此仍旧要向我的妻子表示深深的谢意,感谢她持续不断的支持。并且,我仍旧非常荣幸地将这本书第2版献给她。

图书序言

Paul Menchini
Menchini & Associates, Durham, North Carolina

  自从本书第1版出版以来的五年时间,对VHDL原创的设计者们的压力越来越大。电子产品越来越普遍,但对电子产品的价格、性能和推出市场的时间的要求也越来越苛刻。在医疗和航天系统这些对准确性和可靠性要求极为高的领域,对数字电子控制的依赖越来越大。新型的更大规模的现场可编程器件已经开辟了一个全新的应用领域,这些应用也带来了新的需要学习VHDL的设计师群体。与此同时,随着产品的各种新的和改进版本以及同类竞争产品越来越快地进入市场,各种设计的商业寿命急剧缩短。
  为了应对这些新的变化,VHDL已经做了许多方面的改进。尽管基本语言框架保持相对的稳定,只是对VHDL-93的共享变量进行了重写以及对一些错误进行了纠正等,新的VHDL-2001并没有重大更新,但是在相关的领域已经进行了大量的工作。
  VHDL在基本语言的框架上开发了大量新的集合包和标准:numeric_bit、numeric_std、math_real、math_complex和vital。新开发的VHDL-AMS,一个VHDL的扩展集,使得VHDL可以应用于模拟和混合信号建模的领域。一级标准的综合子集已经做了规定和定义,扩充这些定义以增加更多功能的各种工作正在进行之中。这些新增加的内容使得VHDL在满足硅系统的建模要求上具有独特的能力。
  在本书第2版中,Ashenden博士在第1版的基础上化了大量的精力来处理这些变化(VHDL-AMS除外)。他详尽描述了自从第1版发行以来,IEEE组织采用的新的集合包,2000年采纳的共享变量的新的实现方法,以及VHDL-2001中新的变化(现在正在批准阶段)。附录中有关综合部分的内容已经按照IEEE标准1076.6(标准综合子集描述)进行了完全的重写。
  另外,DLX处理器的实例研究部分根据当前设计实践进行了重新修订。这样,可以更加容易地得到处理器模型的综合版本。
  本书为VHDL的教材设立了一个全新标准。将它放在手边作为参考书肯定是非常有价值的。


第1版序
Paul Menchini
Research Triangle Park, North Carolina

  电子数字系统的复杂性随着时间呈指数形式增加。事实上,产品寿命周期的不断降低和产品可靠性要求的不断提高,迫使电子产品的设计人员需要极大地提高产品质量和产出率。
  VHDL的开发就是应顺了这种趋势。借助于软件工程领域的复杂性管理和错误检测技术,VHDL可以消除各种无关的细节,采用与工艺无关的描述,及早发现错误,增强了从门级到系统级模型之间的可移植性和共用性。
  为此,电子设计自动化(EDA)工具已经在设计人员的工作中占据了从未有过的份额。现在,利用单个的表示媒介工具就可以完成从规格说明到细节数字设计的全部设计过程。
  VHDL起初只是美国政府国防部开发的标准硬件描述语言(HDL),在经过两次IEEE标准化进程后,VHDL已经变成了世界上通用的最好的两个硬件描述语言之一。随着VHDL在细节定时模型、综合指示和模拟能力等方面的进一步发展,VHDL将继续为下一世纪电子产品的先进设计提供所需要的表述工具。得益于VHDL精确定义的各种设计工具会不断出现,提供更加强大的仿真性能,综合能力,甚至会增加一些全新的能力,比如说模型功能等效性的形式验证等。
  由于VHDL使用了许多在常规硬件描述中所没有的概念,因此第一次接触VHDL的设计人员在应用这些概念时,需要一个可靠的指南来说明这些特征。现在有关VHDL的书籍都太强调读者具有编程语言的经验,而本书对那些非程序员来说是学习VHDL的理想教材。
  本书详细探究了VHDL的最新版本VHDL-93(IEEE Std. 1076-1993)。假设在此之前你没有任何VHDL的知识,Ashenden教授会指引你游历VHDL王国,首先处理简单的模型问题,然后逐步深入,引向更复杂的研究。因为VHDL包含大量的特性,书中的四个完整的工作实例研究将给读者以很大的帮助。这些实例研究包含了VHDL的各种不同特性和功能,并且根据不同复杂程度的数字系统的建模来说明这些特性和功能如何作用。
  附录总结了VHDL在设计综合中的应用,以及建筑在VHDL框架上的其他标准句法,给出了与VHDL最初的IEEE标准(IEEE Std. 1076-1987)的差异列表,这对于有经验的VHDL用户也是很有帮助的。
  欢迎进入VHDL世界。

作者简介

Peter J.Ashenden:Peter J.Ashenden:  Peter J. Ashenden 博士从澳大利亚阿雷德雷大学获得博士学位,目前是电子设计自动化(EDA)方面的独立咨询顾问。他是IEEE高级会员,参与开发VHDL标准,也是IEEE设计自动化标准委员会(DASC)主席。他还参与Rosetta系统级设计语言的开发,撰写过多部关于VHDL的技术书籍。

译者简介

葛红 黄河 吴继明:暂无简介

译者序

近年来,随着计算机技术和半导体技术的发展,电子数字系统的应用变得非常普遍。同时,数字系统本身的复杂程度也在不断提高。随着市场竞争的加剧,对电子产品的价格、性能和推出市场的时间的要求也越来越苛刻。传统的硬件电路设计方法已大大落后于当今技术的发展。采用硬件描述语言的设计方法已成为当今以及未来电子设计自动化(EDA)解决方案的核心,特别是对于深亚微米复杂数字系统的设计,硬件描述语言具有独特的作用。
  目前,广泛使用的国际标准硬件描述语言有VHDL(Very High Speed Integrated Circuit Hardware Description Language)和Verilog HDL。使用VHDL硬件描述语言,可以用仿真器的方式测试所设计的电路的功能是否正确,直接完成以前需要建造好样机才能进行的电子电路特性的测量和调试。从而能够大大地减少设计成本和缩短设计时间。
  本书全面、系统地介绍了国际标准的硬件描述语言VHDL以及VHDL在现代数字电子系统设计中的应用,对VHDL和基于VHDL的数字电子电路设计中的有关问题进行了深入细致地讲解,并结合理论分析了大量实例,使本书兼具知识性和实用性。本书按照一种渐变发展的方式组织内容,深入浅出。本书还结合VHDL语言所提供的各种建模工具,详细介绍了这些工具在数字系统设计中的应用。既能使读者对有关VHDL的知识有一个全面了解,同时又能较好地掌握 VHDL语言在不同设计层次中的应用方法。
  与一般VHDL的书籍不同,本书并不要求读者具有编程语言的经验,对第一次接触VHDL的初学者来说也是一本理想的教材。而对于那些需要熟练使用VHDL的设计人员而言,本书也可以作为一个很好的指南和手册。本书还配备了大量针对性很强的习题。
  本书非常适合作为大专院校电子工程和计算机类高年级本科生和研究生学习VHDL语言的教科书和参考书,也可以为广大从事数字电路设计的工程技术人员提供相关的技术参考。
  参加本书翻译工作的人员有:黄河(序、第1版序、前言、目录、和第1、2、3、4、6、7、8章),葛红(第17、18、19、20、21章和附录A、B、C)和吴继明(第5、9、10、11、12、13、14、15、16章)。
  限于译者水平,本书的翻译难免会存在不少错误,恳请广大读者批评指正。

黄  河
华南师范大学计算机学院

图书目录

第1章  基本概念 1
1.1  数字系统建模 1
1.2  建模的域和层次 3
1.3  建模语言 6
1.4  VHDL的建模概念 6
1.4.1  行为元素 7
1.4.2  结构元素 8
1.4.3  混合结构和行为模型 9
1.4.4  测试台 10
1.4.5  分析、加工和执行 11
1.5  学习一种新语言:词汇元素和句法 13
1.5.1  词汇元素 14
1.5.2  句法描述 18
练习 20
第2章  标量数据类型和操作 23
2.1  常数和变量 23
2.1.1  常数和变量声明 23
2.1.2  变量赋值 24
2.2  标量类型 25
2.2.1  类型声明 25
2.2.2  整数类型 26
2.2.3  浮点类型 28
2.2.4  物理类型 29
2.2.5  枚举类型 31
2.3  类型分类 36
2.3.1  子类型 37
2.3.2  类型限定 38
2.3.3  类型转换 38
2.4  标量类型的属性 39
2.5  表达式和操作符 41
练习 43
第3章  顺序语句 45
3.1  if 语句 45
3.2  case 语句 47
3.3  null语句 52
3.4  loop 语句 52
3.4.1  exit 语句 53
3.4.2  next 语句 56
3.4.3  while 循环 57
3.4.4  for 循环 58
3.4.5  loop 语句小结 60
3.5  断言和报告语句 61
练习 65
第4章  复合数据类型和操作 67
4.1  数组 67
4.1.1  多维数组 69
4.1.2  数组聚集 70
4.1.3  数组属性 72
4.2  非约束数组类型 74
4.2.1  字符串 75
4.2.2  位矢量 75
4.2.3  标准逻辑数组 75
4.2.4  字符串和位串文字 75
4.2.5  非约束数组端口 76
4.3  数组操作和引用 77
4.3.1  数组片 78
4.3.2  数组类型转换 79
4.4  记录 80
练习 83
第5章  基本建模结构 85
5.1  实体声明 85
5.2  构造体 87
5.2.1  并发语句 87
5.2.2  信号声明 88
5.3  行为描述 89
5.3.1  信号赋值 89
5.3.2  信号属性 91
5.3.3  wait语句 93
5.3.4  delta 延迟 96
5.3.5  传输和惯性延迟机制 98
5.3.6  进程语句 102
5.3.7  并发信号赋值语句 103
5.3.8  并发断言语句 108
5.3.9  实体与被动进程 109
5.4  结构化描述 110
5.5  设计加工 117
5.5.1  分析 117
5.5.2  设计库、库子句和use子句 118
5.5.3  加工 120
5.5.4  执行 122
练习 123
第6章  实例研究:一个流水线乘法累加器 131
6.1  算法概要 131
6.2  行为模型 133
6.3  寄存器传输级模型 140
6.3.1  寄存器传输级模型中的功能模块 141
6.3.2  寄存器传输级的构造体 147
6.3.3  测试寄存器传输级模型 150
练习 151
第7章  子程序 153
7.1  过程 153
7.2  过程参数 158
7.2.1  信号参数 161
7.2.2  默认值 163
7.2.3  非约束数组参数 164
7.2.4  过程参数小结 166
7.3  并发过程调用语句 167
7.4  函数 169
7.4.1  功能建模 171
7.4.2  纯函数和非纯函数 171
7.4.3  now函数 172
7.5  重载 173
7.6  声明的可见性 176
练习 179
第8章  包和use子句 183
8.1  包声明 183
8.1.1  包声明中的子程序 186
8.1.2  包声明中的常数 187
8.2  包体 188
8.3  use 子句 190
8.4  预定义包标准 192
8.5  IEEE标准包 193
8.5.1  std_logic_1164多值逻辑系统 193
8.5.2  标准VHDL综合包 194
8.5.3  标准VHDL数学包 198
练习 202
第9章  别名 205
9.1  数据对象的别名 205
9.2  非数据项的别名 208
练习 210
第10章  实例研究:一个位矢量算术包 213
10.1  包接口 213
10.2  包体 216
10.3  一个使用算术包的ALU 223
练习 224
第11章  决断信号 227
11.1  基本决断信号 227
11.1.1  复合决断子类型 231
11.1.2  决断子类型小结 234
11.2  IEEE std_logic_1164决断子类型 234
11.3  决断信号和端口 236
11.3.1  决断端口 237
11.3.2  驱动值属性 238
11.4  决断信号参数 239
练习 240
第12章  类属常数 245
12.1 参数化行为 245
12.2  参数化结构 248
练习 249
第13章  元件和配置 251
13.1  元件 251
13.1.1  元件声明 251
13.1.2  元件实例生成 252
13.1.3  组装元件 253
13.2  配置元件实例 255
13.2.1  基本配置声明 255
13.2.2  配置多层次的结构 256
13.2.3  配置实体的直接实例生成 259
13.2.4  配置中的类属映射和端口映射 260
13.2.5  延缓的元件绑定 264
13.3  配置说明 266
练习 271
第14章  生成语句 275
14.1  生成迭代结构 275
14.2  条件生成结构 279
14.3  生成语句的配置 284
练习 288
第15章  实例研究:DLX计算机系统 293
15.1  DLX CPU综述 293
15.1.1  DLX寄存器 293
15.1.2  DLX指令集 294
15.1.3  DLX 外部接口 297
15.2  行为模型 298
15.2.1  DLX类型包 299
15.2.2  DLX 实体声明 300
15.2.3  DLX 指令集包 301
15.2.4  DLX 行为构造体 307
15.3  测试行为模型 319
15.3.1  测试台时钟发生器 319
15.3.2  测试台存储器 320
15.3.3  测试台构造体和配置 324
15.4  寄存器传输级模型 326
15.4.1  算术逻辑单元 327
15.4.2  寄存器 330
15.4.3  寄存器文件 333
15.4.4  多路复用器 334
15.4.5  扩展器 335
15.4.6  构造体 336
15.4.7  控制器 340
15.4.8  配置声明 354
15.5  测试寄存器传输级模型 355
练习 359
第16章  保护和块 361
16.1  保护信号和断开 361
16.1.1  驱动属性 365
16.1.2  保护端口 365
16.1.3  保护信号参数 366
16.2  块和保护信号赋值 368
16.2.1  显式保护信号 370
16.2.2  断开说明 372
16.3  使用块的结构化模型 373
16.3.1  块中的类属和端口 375
16.3.2  配置带有块的设计 376
练习 378
第17章  访问类型和抽象数据类型 381
17.1  访问类型 381
17.1.1  访问类型声明和分配器 381
17.1.2  访问值的赋值语句和等式 383
17.1.3  记录和数组的访问类型 384
17.2  链接数据结构 386
17.3  使用程序包的抽象数据类型 390
练习 400
第18章  文件及其输入和输出 403
18.1  文件 403
18.1.1  文件声明 403
18.1.2  读文件 404
18.1.3  写文件 407
18.1.4  子程序中的文件声明 409
18.1.5  直接打开和关闭操作 410
18.1.6  子程序中的文件参数 412
18.1.7  文件的可移植性 414
18.2  程序包textio 414
18.2.1  textio读操作 416
18.2.2  textio写操作 423
18.2.3  用户自定义类型的读写 425
练习 426
第19章  实例研究:队列网络 429
19.1  队列网络概念 429
19.2  队列网络模块 430
19.2.1  随机数发生器 430
19.2.2  令牌和arc类型的程序包 433
19.2.3  令牌源模块 435
19.2.4  令牌池模块 438
19.2.5  队列模块 439
19.2.6  令牌服务器模块 444
19.2.7  分叉模块 447
19.2.8  结合模块 449
19.3  磁盘系统的队列网络 452
练习 457
第20章  属性和组 459
20.1  预定义属性 459
20.1.1  标量类型的属性 459
20.1.2  数组类型和对象的属性 460
20.1.3  信号属性 460
20.1.4  已命名项目的属性 460
20.2  用户定义的属性 466
20.2.1  属性声明 467
20.2.2  属性说明 467
20.2.3  外来属性 475
20.3  组 476
练习 478
第21章  其他主题 481
21.1  缓冲和连接端口 481
21.2  关联列表中的转换函数 482
21.3  延迟进程 487
21.4  共享变量 489
练习 497
附录A  综合 499
附录B  预定义程序包标准 513
附录C  IEEE标准程序包 517
附录D  相关标准 527
附录E  VHDL句法 537
附录F  VHDL-87、VHDL-93和VHDL-2001之间的区别 549
附录G  练习答案 553
参考文献 571

教学资源推荐
作者: [美]克利夫·B. 莫勒(Cleve B. Moler)著
作者: (美)Gerald Recktenwald
参考读物推荐
作者: 邓湘榆 黄昭霖 黄进财 薛启宏 范家瑞 黄圣杰
作者: 卫涛 阳桥 柳志龙 主编
作者: 潭朝霞等著
作者: 杨晓琦 等编著