本书是为“数字逻辑设计”课程编写的入门教材,这门课是电气工程和计算机专业的基础课程。 本书着重阐述了数字逻辑基础与Verilog designteaches逻辑电路的基本设计技术,通过许多例子来引入基本概念,强调综合电路及及如何在实际的芯片上实现电路。全书使用Quartus CAD设计、仿真、测试和执行逻辑电路,使学生可以用现代设计方法来进行数字电路和系统的设计。
本书第3版较第2版在内容结构上做了更新,从问题求解的角度重点介绍多种逻辑电路及其硬件描述语言Verilog实现的方法,着重于数字电路实现技术和数字系统设计两大核心内容。主要包括:数字电路设计流程、逻辑电路基础、算术运算电路、组合电路、存储元件、同步时序电路、逻辑功能优化、异步时序电路、完整的CAD电路设计流程以及电路测试等。本书包含了120多段Verilog示例代码,以说明如何采用Verilog语言描述不同的逻辑电路。
本书特色
详细介绍组合逻辑与时序逻辑电路的经典设计技术。
强调逻辑电路的模块化设计方法,介绍一些基本的电路模块,并应用到大型电路实现中。
Verilog语言是本书必不可少的一部分内容,书中通过一种通俗易懂的方式循序渐进地介绍该语言。
着重强调在设计与实现实际电路时采用的Verilog与CAD工具。
提供大量的教学实例,揭示一种适合采用现代数字电路技术(如FPGA与CPLD等可编程逻辑器件)的良好设计方式。
作者简介
斯蒂芬·布朗(Stephen Brown) 获得多伦多大学电子工程硕士和博士学位,于1992年进入多伦多大学任教,目前为该校电子与计算机工程系教授,同时在Altera公司发起的国际大学计划中担任理事职务。研究领域包括现场可编程VLSI技术以及计算机结构,发表了超过100篇论文。除了本书之外,与他人合编了另外2本知名教材:《Fundamentals of Digital Logic with VHDL Design(第3版)》《Field Programmable Gate Arrays》。
斯万克·瓦拉纳西(Zvonko Vranesic) 拥有多伦多大学电子工程硕士和博士学位。现为该校电子与计算机工程系以及计算机科学系的荣誉退休教授。目前的研究领域包括计算机架构以及现场可编程VLSI技术研究。除了本书之外,与他人合编了另外3本知名教材:《Computer Organization and Embedded Systems(第6版)》《Microcomputer Structures》与《Field Programmable Gate Arrays》。
本书面向数字逻辑设计的入门课程,这门课程是大多数电子和计算机工程专业的一门基础课程。一个成功的数字逻辑电路设计者首先必须深入了解其基本概念,并且能够牢固掌握基于计算机辅助设计(CAD)工具的现代设计方法。
本书的主要目的为:1)通过典型的数字电路手工设计方法教给学生基本概念;2)清晰地展示当今采用CAD工具设计数字电路的方法。虽然目前除了少数情况外已经不再采用手工方法进行设计,但我们仍想通过教授这些手工设计技术,使学生对如何设计数字电路有一个感性的认识;并且手工设计方法能对CAD工具实现的功能进行很好的解释,使学生体会到自动设计的优势。本书通过简单的电路设计案例引出其基本概念,这些案例都同时采用手工方法和现代CAD方法设计。在建立了基本概念后,提供了更多基于CAD工具的复杂例子。因此,本书的重点仍然放在现代设计方法上,以说明当今数字电路是如何设计的。
技术
本书将讨论现代数字电路实现技术,重点为教科书中最适合采用的可编程逻辑器件(PLD),其原因主要表现在两个方面:第一,PLD在实际设计中被广泛采用,并且适合于各种数字电路设计,事实上,从某些方面看学生们在他们的职业生涯中更喜欢基于PLD进行设计而不是任何别的技术;第二,可以通过最终用户的编程在PLD上实现电路。因此,在实验室中可以提供给学生一个机会,即基于实际芯片来实现书中的设计例子;学生也可以用自己的计算机仿真所设计电路的性能。为了达到设计目的,我们采用最常见的PLD:复杂可编程逻辑器件(CPLD)和现场可编程逻辑阵列(FPGA)。
在逻辑电路的具体设计中,我们强调硬件描述语言(HDL)的使用,因为基于HDL的方法在实际应用中是最有效的。我们还详细介绍了IEEE标准的Verilog HDL语言,并且在例子中广泛使用。
本书内容
本书第3版的结构进行了较大的改进,第1~6章覆盖一个学期内该课程所需讲述的所有内容,而第7~11章则介绍更先进的内容。
第1章概述了数字系统的设计流程,讨论了设计流程中的关键步骤,解释了如何运用CAD工具自动实现所要求的众多工作;同时介绍了数字信息的表示方式。
第2章介绍了逻辑电路的基本知识,展示了如何使用布尔代数表示逻辑电路;介绍了逻辑电路综合和优化的概念,展示了如何使用逻辑门实现简单电路。第一次向读者展现Verilog,一个可用于描述逻辑电路的硬件描述语言例子。
第3章重点讲述了算术运算电路,讨论了数字系统中数字的表示方式,并说明了这样的数字如何运用到逻辑电路中。另外,该章还阐述了如何使用Verilog详细描述所期望的功能,以及CAD工具如何提供开发所期望电路的机制。
第4章介绍了用作构建模块的组合电路,包括编码器、译码器及多路选择器。这些电路非常便于阐明众多借助Verilog构建的应用,给读者提供了一个揭示Verilog更多高级特性的机会。
第5章介绍了存储单元,讨论了采用触发器实现的规则结构,如移位寄存器和计数器,并给出了这些结构的Verilog描述。
第6章详细阐明了同步时序电路(有限状态机),解释了这些电路的行为,并介绍了用手工和自动两种方法进行实际设计开发的技术。
第7章讨论了系统设计中经常遇到的问题及其解决办法,介绍了一个较大规模的数字系统层次化设计的例子,并给出了完整的Verilog代码。
第8章介绍了逻辑功能优化实现的更加先进的技术,提供了优化算法;解释了如何与二元决策图一样使用一种立方体表示法指定逻辑功能。
第9章讨论了异步时序电路。虽然没有面面俱到地叙述,但清晰展示了时序电路的主要特性。尽管异步时序电路在实际中的应用并不是很广泛,但是它们提供了一个深刻理解数字电路操作的非常好的途径。该章还展示了可能存在于电路结构内部的传播延迟和冒险竞争。
第10章给出了设计者在设计、实现及测试数字电路过程中经历的一个完整的CAD流程。
第11章介绍了电路的测试。逻辑电路的设计者必须清楚意识到电路测试的必要性,至少应熟悉测试最基本的知识。
附录A总结了完整的Verilog特性。整本书中都使用了Verilog,该附录便于读者在编写Verilog代码时随时查阅与参考。
附录B给出了数字电路的电特性,展示了如何采用晶体管搭建基本的门电路,介绍了影响电路性能的各种因素。该附录重点讨论了最新的技术,同时介绍了CMOS工艺和可编程逻辑器件。
课程内容建议
书中大部分内容适用于两个季度的课程。在不需要花费太多时间教授Verilog和CAD工具时,1个学期甚至1个季度的课程也可以涵盖大部分最重要的内容。为了达到这个目的,我们按照模块化方式组织了Verilog内容以便于自学。多伦多大学不同班级的教学实践表明,只须用3~4个学时介绍Verilog,即代码如何编写,包括使用设计层次结构、标量、矢量,以及指定时序电路所需的代码形式。本书给出的Verilog例子带有大量的说明,学生很容易理解。
本书也适用于不涉及Verilog的逻辑设计课程。然而,了解某些Verilog知识,即使是入门水平,对学生也是有益的,并且对于设计工程师日后的工作也非常有帮助。
1个学期的课程
课程需要教授的内容如下:
第1章:每一节
第2章:每一节
第3章:31~35节
第4章:每一节
第5章:每一节
第6章:每一节
1个季度的课程
课程需要教授的内容如下:
第1章:每一节
第2章:每一节
第3章:31~33节和35节
第4章:每一节
第5章:每一节
第6章:61~64节
Verilog
Verilog是一种复杂的语言,有些教师感到初学者掌握起来很困难,我们完全同意这个观点,并且试图解决这个问题。教师在教学过程中没有必要介绍Verilog语言的全部。本书只介绍对于逻辑电路设计和综合有用的重要的Verilog语言结构,略去了许多其他语言结构,如那些仅用于仿真的语言结构。并且仅在相关电路设计中用到Verilog更高级的特性时才会介绍这些知识。
本书包含了120多个示例的Verilog代码:从只包含一些门电路到某些表示整个数字系统的电路(如一个简单处理器),以说明如何采用Verilog语言描述不同的逻辑电路。
本书给出的所有Verilog示例的代码可参考作者的网站:wwweecgtotontoedu/~brown/Verilog_3e。
问题求解
每一章中都包含解决问题的实例,通过这些实例可以求解典型的习题。
课外习题
本书提供了400多道习题,书的最后给出了部分习题的答案。与本书配套的《答案手册》中提供了本书中所有习题的解答,以供老师参考。关于本书教辅资源,用书教师可向麦格劳·希尔教育出版公司北京代表处申请,电话:8008101936/01062790299108,电子邮件:instructorchina@mcgrawhillcom。——编辑注
幻灯片和《答案手册》
读者可以在作者的网站wwwmhhecom/brownvranesic上获得本书所有图的幻灯片。老师可以申请获得这些幻灯片以及本书的《答案手册》。
CAD工具
现代数字系统非常庞大,很多复杂的逻辑电路若不使用CAD工具是难以设计的。本书对于Verilog的阐述有助于读者编写Verilog代码以描述不同复杂度的逻辑电路。为了获得适当的设计过程方法,使用商用CAD工具是非常有益的。一些很好的CAD工具是免费的,比如,Altera公司的Quartus Ⅱ CAD软件,它广泛应用于基于诸如FPGA类的可编程逻辑器件的设计中。Quartus Ⅱ软件的网络版本可以从Altera的网站上下载并且免费使用,而不需要许可证。本书先前版本的附录中给出了使用Quartus Ⅱ软件的教程,这些教程可以在作者的网站上找到,也可以通过Altera的编程网站上找到另一些有用的Quartus Ⅱ教程,其网址为wwwalteracom/eduction/univ。
致谢
对于在本书准备期间给予帮助的人们表达深深的谢意,其中Dan Vranesic提供了大量插图,他和Deshanand Singh也参与了《答案手册》的准备;Tom Czajkowski帮助检查一些答案。Thomas Bradicich,North Carolina State University;James Clark,McGill University;Stephen DeWeerth,Georgia Institute of Technology;Sander Eller,CalPoly Pomona;Clay Gloster,Jr,North Carolina State University (Raleigh);Carl Hamacher,Queen’s University;Vincent Heuring,University of Colorado;Yu Hen Hu,University of Wisconsin;WeiMing Lin, University of Texas(San Antonio);Wayne Loucks,University of Waterloo;Kartik Mohanram,Rice University;Jane Morehead,Mississippi State University;Chris Myers,Univesity of Utah;Vojin Oklobdzija,Univesity of California(Davis);James Palmer,Rochester Institute of Technology;Gandhi Puvvada,University of Southern California;Teodoro Robles,Milwaukee School of Engineering;Tatyana Roziner,Boston University;Rob Rutenbar,Carnegie Mellon University;Eric Schwartz,University of Florida;WenTsong Shiue,Oregon State University; Peter Simko,Miami University;Scott Smith,University of Missouri(Rolla);Arun Somani,Iowa State University;Bernard Svihel,University of Texas(Arlington);以及Zeljko Zilic,McGill University给出了有益的批评与很好的改进建议。
感谢McGrawHill的工作人员的支持,我们非常感激Raghu Srinivasan、Vincent Bradshaw、Darlene Schueller、Curt Reynolds以及Michael Lange的帮助,也感谢由Techsetters公司提供的排版支持。
Stephen Brown和Zvonko Vranesic
数字逻辑设计
本书第3版较第2版,在内容结构上做了更新,从问题求解的角度重点介绍多种逻辑电路及其硬件描述语言Verilog实现的方式方法,着重于数字电路实现技术和数字系统设计两大核心内容。主要包括:数字电路设计流程、逻辑电路基础、算术运算电路、组合电路、存储元件、同步时序电路、逻辑功能优化、异步时序电路、完整的CAD电路设计流程以及电路测试等。本书包含了120多个Verilog代码的例子,以说明如何采用Verilog语言描述不同的逻辑电路。
本书特色:
详细介绍组合逻辑与时序逻辑电路的经典设计技术。
强调逻辑电路的模块化设计方法,介绍一些基本的电路模块,并应用到大型电路实现中。
Verilog语言是本书必不可少的一部分内容,书中通过一种易于被学生理解的方式循序渐进地介绍该语言。
着重强调在设计与实现实际电路中采用的Verilog与CAD工具。
提供大量的教学实例,揭示一种适合采用现代数字电路技术(如FPGA与CPLD等可编程逻辑器件)的良好设计方式。
[加]斯蒂芬·布朗(Stephen Brown) 斯万克·瓦拉纳西(Zvonko Vranesic) 著:作者简介
斯蒂芬·布朗(Stephen Brown)获得多伦多大学电子工程硕士和博士学位,于1992年进入多伦多大学任教,目前为该校电子与计算机工程系教授,同时在Altera公司发起的国际大学计划中担任理事职务。研究领域包括现场可编程VLSI技术以及计算机结构,发表了超过100篇论文,并且与他人合编了两本知名教材:《Fundamentals of Digital Logic with VHDL Design(第3版)》以及《FieldProgrammable Gate Arrays》。
斯万克·瓦拉纳西(Zvonko Vranesic)拥有多伦多大学电子工程硕士和博士学位。现为该校电子与计算机工程系以及计算机科学系的荣誉退休教授。目前的研究领域包括计算机架构以及现场可编程VLSI技术研究。除了本书之外,与他人合编了另外3本知名教材:《Computer Organization and Embedded Systems(第6版)》《Microcomputer Structures》与《FieldProgrammable Gate Arrays》。
吴建辉 黄成 等译:暂无简介
本书的作者Stephen Brown与Zvonko Vranesic为电气工程专业的博士,长期从事数字逻辑、现场可编程VLSI技术等领域的科研与教学工作,积累了丰富的实践经验,并将这些经验融合到本书中,撰写了一本科教有效结合的教材。
与其他数字逻辑类书籍不同,本书重点介绍多种逻辑电路及用硬件描述语言Verilog实现对应电路的方法,涉及的知识面很广,以较强的逻辑性将这些知识紧密联系在一起,以自下而上的方式介绍简单的单元电路以及构建复杂的电子系统,内容循序渐进。其中,第1~5章介绍了数字电路的基本知识,即数字电路设计流程、逻辑电路基础、算术运算电路、组合电路、存储元件等;第6~11章介绍了实际数字系统设计的各种知识,如同步时序电路、逻辑功能优化、异步时序电路、完整的CAD电路设计流程以及电路测试等。另外附录介绍了Verilog的基本特性及电路实现技术,可方便读者的学习与理解。每章末尾的习题反映了对应章的知识点,有利于加深读者对于所学知识点的理解,同时对于重要的题目给出了相应的参考答案,方便初学者巩固知识点。
本书中的例题非常具有代表性,涉及很多设计细节,非常适合作为工程实践人员的入门参考。
本书的翻译工作主要是在东南大学吴建辉的组织下完成的,多位教师与研究生参与了此项工作,虽经认真校对,由于译者水平有限,仍难免存在不妥之处,希望读者不吝赐教。
吴建辉
出版者的话
译者序
前言
作者简介
第1章引言1
11数字硬件1
12设计流程3
13计算机结构4
14本书中的逻辑电路设计5
15信息的数字化表示5
16理论与实践9
习题10
参考文献10
第2章逻辑电路导论11
21变量与函数11
22反相12
23真值表13
24逻辑门和网络14
25布尔代数17
26利用“与”门、“或”门和“非”门进行综合23
27“与非”和“或非”逻辑网络电路28
28设计实例31
29CAD工具介绍34
210Verilog简介37
211最简化和卡诺图41
212最小化策略46
213和之积形式的最简式49
214非完整定义函数(无关项)50
215多输出电路51
216小结53
217解决问题的实例53
习题58
参考文献61
第3章数的表示方法和算术运算电路62
31按位计数法(数的位置表示法)62
32无符号数的加法运算64
33有符号数67
34快速加法器75
35使用CAD工具设计算术运算电路79
36乘法88
37其他数的表示方式90
38解决问题的实例94
习题97
参考文献99
第4章组合电路模块100
41多路选择器100
42译码器105
43编码108
44代码转换器109
45算术比较电路109
46用Verilog设计组合逻辑电路110
47小结121
48解决问题的实例121
习题126
参考文献128
第5章触发器、寄存器和计数器129
51基本锁存器129
52门控SR锁存器131
53门控D锁存器132
54边沿触发的D触发器134
55T触发器139
56JK触发器139
57术语小结140
58寄存器140
59计数器142
510复位同步147
511其他类型的计数器149
512用CAD工具设计含存储元件的电路151
513用Verilog构建寄存器和计数器156
514设计举例160
515触发器电路的时序分析164
516小结167
517解决问题的实例167
习题171
参考文献174
第6章同步时序电路175
61基本设计步骤176
62状态分配问题183
63Mealy状态模型185
64采用CAD工具设计有限状态机188
65串行加法器实例193
66状态最小化197
67基于时序电路的计数器设计202
68仲裁电路的FSM207
69同步时序电路的分析209
610算法状态机流程图211
611时序电路的形式模型213
612小结214
613解决问题的实例214
习题219
参考文献220
第7章数字系统设计222
71总线结构222
72简单的处理器227
73位计数电路234
74移位和加乘法器238
75除法器242
76算术平均248
77排序操作251
78时钟同步和时序问题258
79小结260
习题261
参考文献262
第8章逻辑函数的优化实现264
81多级综合264
82多级电路分析271
83逻辑函数的其他表示方法273
84基于立方体表示法的优化技术279
85小结288
86解决问题的实例289
习题293
参考文献294
第9章异步时序电路296
91异步行为296
92异步电路分析298
93异步电路综合303
94状态化简309
95状态分配316
96冒险324
97一个完整的设计实例328
98小结331
99解决问题的实例332
习题335
参考答案337
第10章计算机辅助设计工具338
101综合338
102物理设计342
103小结345
参考文献345
第11章逻辑电路测试346
111故障模型346
112测试集的复杂度347
113路径敏化348
114树形结构电路350
115随机测试351
116时序电路的测试353
117内建自测试355
118印制电路板359
119小结361
习题362
参考文献363
附录AVerilog参考364
附录B实现技术391
部分习题参考答案440