本书是为“数字逻辑设计”课程编写的入门教材,这门课是电气工程和计算机专业的基础课程。本书着重阐述了数字逻辑基础与逻辑电路的基本设计技术,通过许多例子来引入基本概念,强调综合电路及如何在实际芯片上实现电路。主要内容包括:逻辑电路、算术运算电路、编码器、译码器、多路选择器、移位寄存器、计数器、同步时序电路、异步时序电路、数字系统设计、逻辑函数的优化、计算机辅助设计工具等。
本书面向数字逻辑设计的入门课程,这门课程是大多数电子和计算机工程专业的一门基础课程。一个成功的数字逻辑电路设计者首先必须深入了解其基本概念,并且能够牢固掌握基于计算机辅助设计(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章:3.1~3.5节第4章:每一节第5章:每一节第6章:每一节1个季度的课程课程需要教授的内容如下:
第1章:每一节第2章:每一节第3章:3.1~3.3节和3.5节第4章:每一节第5章:每一节第6章:6.1~6.4节VerilogVerilog是一种复杂的语言,有些教师感到初学者掌握起来很困难,我们完全同意这个观点,并且试图解决这个问题。教师在教学过程中没有必要介绍Verilog语言的全部。本书只介绍对于逻辑电路设计和综合有用的重要的Verilog语言结构,略去了许多其他语言结构,如那些仅用于仿真的语言结构。并且仅在相关电路设计中用到Verilog更高级的特性时才会介绍这些知识。
本书包含了120多个示例的Verilog代码:从只包含一些门电路到某些表示整个数字系统的电路(如一个简单处理器),以说明如何采用Verilog语言描述不同的逻辑电路。
本书给出的所有Verilog示例的代码可参考作者的网站:www.eecg.totonto.edu/~brown/Verilog_3e。
问题求解每一章中都包含解决问题的实例,通过这些实例可以求解典型的习题。
课外习题本书提供了400多道习题,书的最后给出了部分习题的答案。与本书配套的《答案手册》中提供了本书中所有习题的解答,以供老师参考。关于本书教辅资源,用书教师可向麦格劳·希尔教育出版公司北京代表处申请,电话:8008101936/010.62790299.108,电子邮件。——编辑注幻灯片和《答案手册》读者可以在作者的网站www.mhhe.com/brownvranesic上获得本书所有图的幻灯片。老师可以申请获得这些幻灯片以及本书的《答案手册》。
CAD工具现代数字系统非常庞大,很多复杂的逻辑电路若不使用CAD工具是难以设计的。本书对于Verilog的阐述有助于读者编写Verilog代码以描述不同复杂度的逻辑电路。为了获得适当的设计过程方法,使用商用CAD工具是非常有益的。一些很好的CAD工具是免费的,比如,Altera公司的Quartus Ⅱ CAD软件,它广泛应用于基于诸如FPGA类的可编程逻辑器件的设计中。Quartus Ⅱ软件的网络版本可以从Altera的网站上下载并且免费使用,而不需要许可证。本书先前版本的附录中给出了使用Quartus Ⅱ软件的教程,这些教程可以在作者的网站上找到,也可以通过Altera的编程网站上找到另一些有用的Quartus Ⅱ教程,其网址为www.altera.com/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;Wei.Ming 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;Wen.Tsong 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给出了有益的批评与很好的改进建议。
感谢McGraw.Hill的工作人员的支持,我们非常感激Raghu Srinivasan、Vincent Bradshaw、Darlene Schueller、Curt Reynolds以及Michael Lange的帮助,也感谢由Techsetters公司提供的排版支持。
Stephen Brown和Zvonko Vranesic
斯蒂芬·布朗(Stephen Brown),本科毕业于加拿大布伦斯维克大学,获得电子工程学士学位,此后就读于多伦多大学并取得电子工程硕士和博士学位,于1992年进入多伦多大学任教,目前为该校电子与计算机工程系教授,同时在Altera公司发起的国际大学计划中担任理事职务。
研究领域包括现场可编程VLSI技术以及计算机结构,曾获得由加拿大自然科学与工程研究委员会颁发的1992年佳博士论文奖,并且发表了超过100篇的科研论文。
在电子工程、计算机工程以及计算机科学相关课程方面获得过5次优异教学成果奖,并且与他人合编了两本知名教材:《Fundamentals of Digital Logic with VHDL Design》(第3版)以及《FieldProgrammable Gate Arrays》。
斯万克·瓦拉纳西(Zvonko Vranesic)拥有多伦多大学电子工程学士、硕士和博士学位。1963~1965年在位于安大略省布拉马里的北方电力有限公司担任设计工程师;1968年进入多伦多大学任教,现为该校电子与计算机工程系以及计算机科学系的荣誉退休教授;1978~1979年为英国剑桥大学的高级访问学者;1984~1985年为巴黎第六大学的访问学者;1995~2000年担任多伦多大学工程科学部主席,同时还参与了Altera公司多伦多科技中心组织的研发工作。
目前的研究领域包括计算机架构以及现场可编程VLSI技术研究。
除了本书之外,与他人合编了另外3本知名教材:《Computer Organization and Embedded Systems》(第6版),《Microcomputer Structures》与《FieldProgrammable Gate Arrays》。1990年由于指导本科生实验的创新和杰出贡献而获得怀顿(Wighton)奖金;2004年获得由多伦多大学应用科学和工程教师组织颁发的教学奖。
此外,他曾多次代表加拿大出席国际象棋大赛,并被冠以“国际象棋大师”的头衔。