首页>参考读物>计算机科学与技术>综合

VHDL教程 (原书第3版)
作者 : Jayaram. Bhasker
译者 : 刘雷波 孟一聪
出版日期 : 2006-04-29
ISBN : 7-111-18524-2
定价 : 29.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 232
开本 : 16开
原书名 : A VHDL Primer (Third Edition)
原出版社: Prentice Hall
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书作者J.Bhasker是世界领先的VHDL课程的开发者,本书包括目前最流行的IEEE STD_LOGIC_1164程序包内容。本书的扩展硬件建模涵盖了对规则结构、延迟、条件操作、状态机、Moore和Mealy有限状态机及时钟分频器等的建模,此外还包括文本I/O和测试平台等内容,并提供许多扩展实例。

主要内容
  ●行为级、数据流级和结构级建模
  ●类属和配置
  ●子程序和重载
  ●程序包和库
  ●模型仿真
  ●高级特性:实体语句、别名、保护信号、属性、聚合体目标等

图书特色

图书前言

第3版前言
  IEEE的STD_LOGIC_1164标准集合文件程序包自最新版本发布以来一直非常流行。本书的第3版使用该程序包替换原来的ATT_MVL程序包。附录E提供了IEEE STD_LOGIC_1164程序包的函数列表。
  本书的第3版增加了许多实例以说明VHDL语言的一些其他实用功能。此外,本版还加入了用以描述I/O功能和测试平台的新章节,讨论了子程序的默认参数及生成语句的绑定实例等问题。附录F列出了另一个实用程序包—UTILS_PKG。本书用到了一些定义在UTILS_PKG程序包中的函数,而这些函数在STD_LOGIC_1164程序包中没有提供。
  此外,本书对编排格式也做了一定的修改,更便于读者阅读且易于读懂。

J. Bhasker
1998年9月


第2版前言
  正是因为具备综合能力才促使VHDL成为一门流行的硬件设计语言。随着使用综合工具进行硬件设计的人数的增加,使用VHDL语言的人也越来越多。时至今日,VHDL已经成为描述数字设计的IEEE标准和ANSI标准。
  根据IEEE的规则,一个语言如果想继续成为标准就必须通过IEEE每5年一次的投票表决。VHDL在1987年首次成为标准语言,当时的标准发行号为IEEE Std 1076-1987。本书的第1版就是根据这个标准写的。1992年,IEEE重新投票,并最终决定继续将VHDL作为标准。1993年,经过仔细研究,IEEE发布了VHDL的最新标准IEEE Std 1076-1993。这个版本中加入了一些新的特征,某些结构体的语法更加一致,并解决了上一版本中很多有歧义的地方。本书的附录对这些修改一一做了综述。
  本书的第2版是对IEEE Std 1076-1993中的VHDL语言进行描述。除了非常微小的修改以外,在VHDL语言的较早版本中描述的模型是严格向上兼容的,这些变化列于附录中。本书的第2版主要是在第1版的基础上,加入了一部分对新标准中新增加的特性和语法的说明和描述。第2版沿用了第1版的格式,在这一点上没有变化。第2版中也没有把相对第1版的变换和改进单独罗列出来,但是增加了一些实例并根据读者对第1版的反馈意见,进行相应修改、增加和删减了一部分内容。

致谢
  非常感谢Paul Menchini先生,他帮助我审阅了这一版的全部内容,并提出了许多有价值的建议和意见。正是因为他的这些帮助,才使这一版改进的内容更加合理和成熟。

J. Bhasker
1994年4月



第1版前言
  VHDL是用来描述数字系统模型的硬件描述语言。在获得了明确的时间信息后,VHDL就能够完整地描述数字系统的行为或结构。该语言支持层次化的系统建模,同时也支持自顶向下(top-down)和自底向上(bottom-up)的设计方法。VHDL可以在从高层结构级到底层门级的范围内描述系统及其子系统。VHDL仿真部分的语法定义非常精确,能够和该语言的其他部分(如实例建立部分等)实现无缝连接。因此,用VHDL设计的系统模型可以用VHDL仿真器来验证。
  本书的目的是面向入门级水平的读者,读者可以不具备该语言的任何先验知识。但是,读者最好能够具备一些高级编程语言的知识,如最好了解C语言或者Pascal语言,并且对硬件设计有基本的了解。本书旨在面向对VHDL语言感兴趣的软件设计师和硬件设计师,对软件和硬件领域知识没有特别的侧重。
  VHDL是一个庞大、冗余的语言,其中许多复杂结构体的语法定义最初不容易理解(VHDL曾被戏称为Very Hard Description Language,即非常难的描述语言)。但是,快速掌握VHDL中一些简单易用的部分还是可能的。本书的重点就是介绍VHDL中这些简单常用的特征,以便于读者可以很快地应用VHDL编写模型。实际上,这些特征对于完成一个高复杂度的模型设计已经足够了。
  本书的初衷并不是想取代IEEE发布的标准VHDL语言参考手册(Standard VHDL Language Reference Manual),只是想采用基于实例的方法来说明和解释VHDL语言中复杂结构体的定义和使用方法,并以此作为IEEE官方标准的一个补充。本书的重点在于提供许多具体设计的实例以进一步解释VHDL中许多结构体的规化和语义。本书通常不提供结构体的完整语法,而只提供那些结构体最常用的用法,书中结构体的语法没有采用VHDL语言参考手册里的正式术语(Backus-Naur形式)编写,而是采用一种“自我解释”的风格编写。本书只是着眼于VHDL中最常用的部分,因此并没有涵盖整个VHDL语言。

本书内容的编排
  第1章简单回顾了VHDL语言的发展历史,介绍VHDL的主要功能。第2章提供快速入门指导以演示VHDL的建模特征。后续的章节会对这里提到的内容进行深入讨论。第3章介绍了VHDL语言的重要组成元素,例如类型、子类型、对象和文字(literal)。此外,第3章还介绍了VHDL语言中预定义的操作符。
  第4章介绍VHDL用于建模的行为级描述语言的风格。这一章介绍了多种实用的时序电路语句,并且说明了如何将这类语句应用于时序的行为级建模上。这种建模风格和其他高级编程语言的建模风格在语义上非常类似。第5章介绍了数据流建模风格。这一章介绍了并发信号赋值语句以及块语句,同时举例说明如何用这些语句对具有并发行为的设计建模。
  第6章介绍了VHDL中结构级建模的设计风格。在这种建模风格里,设计往往被描述为一些连接在一起的有结构层次的元件(component)的集合。这一章还详细地介绍了元件例化语句。第7章提出了实体-构造体对(entity-architecture pair)的概念,讲解了元件实例与驻留在不同库里的设计相互绑定的方法。这一章还介绍了如何通过类属(generic)将静态信息传递到设计中。
  第8章介绍了子程序(subprogram)。子程序可以是函数或者是过程。此外,该章还介绍了子程序和操作符重载等重要内容。第9章介绍了VHDL语言定义的程序包和设计库的环境变量,同时还讲解了在某个库中的设计访问另一个库中的项目的方法。第10章给出诸如实体语句、别名(alias)、保护信号(guarded signal)以及属性(attribute)等VHDL的高级特征。
  第11章介绍了仿真VHDL模型的方法学以及编写测试平台(test bench)的技巧。该章还给出了许多生成各种类型的时钟、波形的例子,并且举例说明了如何将这些用于测试设计中。第12章给出了一组易于理解的硬件建模的例子。这些例子包括如何对组合逻辑、同步逻辑建模,如何编写有限状态机等。
  本书用粗体来表示VHDL中的保留字。读者可以在附录A里查到完整的保留字列表。书中大多数VHDL结构体没有使用标准VHDL语言参考手册采纳的正式术语来解释,而是以容易让读者理解的单词来解释的。此外,为了说明某个特定的特征,一些VHDL的结构体并没有被完全解释,而是根据需要只解释了其中的一部分。附录B列出了VHDL语言的完整语法。附录C列出了在第11章和第12章中用到的程序包的完整描述。
  本书的VHDL结构体中,楷体字表示由模型设计者(程序设计员)提供的信息,例如:
entity实体名称is
[port (端口列表)]...
entity、is和port都是VHDL的保留字,而实体名称和端口列表表示由模型设计者提供的信息。方括号[ ]表示可由模型设计者选择填入的信息。一般来说,圆括号( )里表示的是和目前的讨论不相关的内容。本书提供的所有实例都已经用作者本地的VHDL系统验证过。
  本书力求用实体来表示所有本书中提到的电路、系统、设计以及其他试图建模的任何东西。

阅读说明
  第一次阅读本书的读者最好首先读第2章的入门指导。其他各章的安排是环环相扣的,通常后一章需要前一章的内容和知识作铺垫。因此,读者最好按照顺序阅读。但是,如果读者能够很好地理解第2章的指导,也可以跳过部分章节,直接阅读自己感兴趣的章节。同时,本书还提供完整讨论硬件建模实例的章节,这可以为读者的实际工作提供参考。在本书的末尾为方便读者阅读还提供了完整的参考文献和VHDL的语法的完整列表。读者如果愿意进一步弄清楚VHDL的语法和语义,还可以参考IEEE 发布的标准IEEE VHDL语言参考手册(IEEE Std 1076-1987)。

致谢
  非常感谢在撰写本书过程中给予过帮助的同事们。尤其需要感谢Dinesh Bettadapur、Ray Voith、Joel Schoen、Sindhu Xirasagar、Gary Imken、Paul Harper、Oz Levia、Jeff Jones以及Guru Rao等人。他们帮我阅读了初稿,并提出了不少建设性的意见。这些帮助和意见使得本书进一步得到完善。特别需要感谢Gary Imken先生,谢谢他有足够的耐心来回答我关于VHDL的特殊问题。
  当然也要感谢我的夫人—Geetha女士,感谢她帮我审阅了本书的初稿,也感谢她为本书整个出版过程提供了正确的引导。

J. Bhasker
1991年10月

作者简介

Jayaram. Bhasker:Jayaram. Bhasker:  Jayaram. Bhasker 博士是朗讯科技公司贝尔实验室设计自动化组的一位杰出成员,是贝尔实验室VHDL课程的开发者,是硬件描述语言及其综合领域公认的权威,已经出版了3本关于VHDL语言的书。

译者简介

刘雷波 孟一聪:暂无简介

译者序

VHDL(VHSIC Hardware Description Language)是一个详细且庞大的硬件描述语言。它在20世纪80年代后期由美国国防部开发,并成功地应用在软硬件系统的仿真、验证和设计综合等领域,对于设计自动化的发展起到了极大的促进和推动作用。
  本书从VHDL语言的功能特性出发,介绍了VHDL语言的组成元素、描述风格、建模特征、测试平台的设计技巧等,并详细地给出了一些经过作者验证的实例来帮助读者更好地学习。本书最大的特点是:读者除了最好能够具备一些高级编程语言(如C、Pascal等)的知识外,不需具备VHDL语言的任何先验知识;读者对象主要是对VHDL语言感兴趣的软件和硬件设计师,而对软件和硬件方面没有特别的侧重和要求。本书的目的在于向广大的电子设计人员介绍VHDL语言的基本知识和使用它来设计数字系统硬件电路的方法,从而使设计者摆脱传统的人工设计方法的约束,使数字系统的设计水平上升到一个新的阶段。
  本书由清华大学的刘雷波和香港科技大学的孟一聪共同翻译。参加翻译工作的还有清华大学微电子学研究所的史弋宇、张楠和赵晖等,对他们的辛勤工作表示感谢。同时也非常感谢机械工业出版社华章分社在组织出版和编辑工作中所给予的支持。
  限于译者水平有限,中译本中难免有错误与不妥之外,恳请读者批评指正。

刘雷波
2005年于清华园青年公寓



译者简介
  刘雷波于1999年毕业于清华大学电子工程系,获无线电技术与信息系统专业学士学位,2004年毕业于清华大学微电子学研究所,获得电子科学与技术专业博士学位。2004年至今在清华大学任教。讲授“VISI数字信号处理系统—设计与实现”和“数字集成电路分析与设计”课程。研究方向主要包括:图像编码理论、集成电路设计、数字信号处理等。已经发表论文10余篇,申请发明专利3项。

  孟一聪于2002毕业于北京邮电大学电子工程系,获得电子工程专业学士学位,2005年毕业于清华大学电子工程系,获电路与系统专业硕士学位,现为香港科技大学电子工程专业的博士研究生。个人的研究方向包括:低功耗专用集成电路设计、生物电子等。

图书目录

第1章  概述 1
1.1 什么是VHDL 1
1.2 历史 1
1.3 功能 2
1.4 硬件抽象 3
第2章 教程 5
2.1 基本术语 5
2.2 实体声明 6
2.3 结构体 7
2.4 配置声明 12
2.5 程序包声明 13
2.6 程序包体 15
2.7 模型分析 15
2.8 仿真 16
第3章 基本语言要素 18
3.1 标识符 18
3.2 数据对象 19
3.3 数据类型 21
3.4 操作符 35
第4章 行为模型 38
4.1 实体声明 38
4.2 结构体 39
4.3 进程语句 40
4.4 变量赋值语句 40
4.5 信号赋值语句 41
4.6 wait语句 42
4.7 if语句 44
4.8 case语句 45
4.9 null语句 46
4.10 loop语句 46
4.11 exit语句 48
4.12 next语句 48
4.13 assertion语句 49
4.14 report语句 51
4.15 更多关于信号赋值的语句 51
4.16 其他顺序语句 56
4.17 多进程 56
4.18 延迟进程 57
第5章 数据流建模 59
5.1 并行信号赋值语句 59
5.2 并行与顺序信号赋值 60
5.3 修正的delta延迟 61
5.4 多驱动器 63
5.5 条件信号赋值语句 65
5.6 选定信号赋值语句 66
5.7 UNAFFECTED值 67
5.8 块语句 67
5.9 并行断言语句 69
5.10 信号值 70
第6章 结构建模 72
6.1 例子 72
6.2 元件声明 72
6.3 元件例化 74
6.4 其他例子 76
6.5 解出信号值 79
第7章 类属与配置 80
7.1 类属 80
7.2 为什么要用配置 82
7.3 配置说明 83
7.4 配置声明 87
7.5 默认规则 90
7.6 转换函数 90
7.7 直接例化 91
7.8 渐近式绑定 93
第8章 子程序和重载 95
8.1 子程序 95
8.2 子程序重载 101
8.3 操作符重载 103
8.4 签名 105
8.5 参数的默认值 105
第9章 程序包和库 107
9.1 程序包声明 107
9.2 程序包体 108
9.3 设计文件 109
9.4 设计库 109
9.5 分析顺序 110
9.6 隐式可见 110
9.7 显式可见 111
第10章 高级特性 114
10.1 实体语句 114
10.2 生成语句 115
10.3 别名 118
10.4 限定表达式 120
10.5 类型转换 121
10.6 保护信号 122
10.7 属性 125
10.8 聚合体目标 135
10.9 更多关于块的语句 135
10.10 共享变量 137
10.11 组 137
10.12 更多关于端口的内容 138
第11章 模型仿真 140
11.1 仿真 140
11.2 写测试平台 142
11.3 实数、整数转化为时间类型 149
11.4 将结果转储到文本文件 149
11.5 从文本文件中读取向量 152
11.6 测试平台实例 154
11.7 存储器的初始化 155
11.8 可变文件名 157
第12章 硬件建模实例 159
12.1 实体接口建模 159
12.2 简单元素的建模 159
12.3 建模的不同风格 162
12.4 常规结构的建模 163
12.5 延迟的建模 164
12.6 条件操作的建模 165
12.7 同步逻辑的建模 166
12.8 状态机建模 170
12.9 交互式状态机 171
12.10 Moore FSM的建模 174
12.11 Mealy FSM的建模 175
12.12 类属优先编码器 176
12.13 简化的“21点”程序 177
12.14 时钟分频器 178
12.15 类属二进制乘法器 179
12.16 脉冲计数器 182
12.17 桶形移位器 184
12.18 设计的层次 185
附录A 预定义的环境 188
附录B 语法参考 192
附录C 一个程序包的实例 205
附录D VHDL版本变化内容总结 212
附录E STD_LOGIC_1164程序包 215
附录F 一个有用的程序包 218
参考文献 224
索引 226

教学资源推荐
作者: [美] 罗伯特·H. 沙姆韦(Robert H. Shumway),戴维·S. 斯托弗(David S. Stoffer)著
参考读物推荐