数字设计:原理与实践(英文版·第5版)
作者 : [美]约翰·F. 韦克利(John F. Wakerly) 斯坦福大学 著
出版日期 : 2018-05-23
ISBN : 978-7-111-59941-8
定价 : 139.00元
教辅资源下载
扩展信息
语种 : 双语
页数 : 892
开本 : 16
原书名 : Digital Design: Principles and Practices,Fifth Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书作者以其严谨的学术态度和实际经验讲述了插件板级和VLSI系统中的数字设计基本原理和实践需求。本书重点强调CMOS逻辑系列并介绍数字电路、最新的GAL、ROM和RAM系统级设计,并提供大量的设计实例,以及具有指导意义的练习题。

图书特色

图书前言

本书写给所有需要设计和构建真正的数字电路的读者。为达到这个目的,读者必须掌握数字电路的基本原理,同时理解它们在真实世界中是如何运转的。正是基于这一理念,我们选取了“原理与实践”这两大主题。
在过去的30年里,随着集成电路的速度和集成度的快速提高,数字设计实践经历了重大转变。过去,数字设计者用成千甚至上万的门电路和触发器来构建系统,因此专业课程的重点就是如何最小化和有效地利用芯片及板级资源。
今天,一个芯片可以包含几千万个晶体管,并且可以通过编程来构建片上系统。过去要实现这样的系统,需要用几百个包含上百万单个门电路和触发器的分立芯片。如今,产品开发能否成功更多地取决于设计团队正确、完整地定义产品详细功能的能力,而不是将需要的所有电路集成到一块电路板或芯片上的能力。因此,现代专业课程的重点是设计方法论和软件工具,包括硬件描述语言(HDL)。设计团队利用HDL便可以完成超大型分层数字系统的设计。
借助HDL,一方面可以看到典型设计的抽象层次变得更高,超越了单个门电路和触发器的层次。但与此同时,芯片级和电路板级数字电路的速度和集成度的提高,也迫使设计者必须在较低的电子电路级提升竞争力。
大多数优秀的数字设计师都精通或者至少熟悉上述两个抽象层次。本书提供了高级(HDL)、低级(电子电路)以及“广泛中间级”(门电路、触发器和一些较高级的数字设计构件)的多层次基础知识。
目标读者
本书可以作为电气工程、计算机工程或计算机科学专业数字逻辑设计课程的入门教材或中级教材。对于计算机科学专业的学生,如果不熟悉基本电子学概念或者对数字器件的电气特性不感兴趣,可以跳过第14章,书中其他章节基本上都不需要这一章内容作为预备知识。另一方面,具有基本电子学基础的读者,则可通过阅读第14章来快速掌握数字电子学知识。
虽然本书是入门级的,但却比普通的入门教材包含更多内容。我希望常规课程采用书中不超过三分之二的材料,但是,每门课程所用到的是不同的三分之二。因此,请各位教师或读者按照自己的需要决定阅读内容。为了帮助大家做选择,我已经在可选章节的标题上打了星号。一般情况下,可以跳过这些章节而不影响后续必选章节的内容连贯性。此外,矩形文本框(如下所示)中的材料也是可以跳过的。
这是一个简单   一些读者抱怨之前的版本太厚了,我缩减了这一版的篇幅,但依然要提醒大家注意:
的文本框示例 不必一字不落地读完所有内容,打星号的章节都可以略过。
写在这种框里的内容通常也可以略过。
我要求出版社调大了字号(本书采用11磅字,而大部分科技类教材都采用10磅字),这样不仅阅读起来更加舒服,而且图表的位置也更加合理。随手翻开一页,你会发现大部分图表和对图表内容的讲解都位于同一页。(我亲自做的排版工作,着实花了一番心血。)
本书的主题非常全面,在学习后续课程时,你可以再回头翻看相关知识点,甚至参加工作后,依然能从书里学到新东西。不过,教科书总会过时,难逃被丢进垃圾桶的厄运,但也有些“幸运儿”成了书架上的藏品,它的命运最终将系于读者之手。
有些课程会把本书当作中级教程或实验课本来使用。高年级学生可以跳过基础内容而直接进入感兴趣的章节。一旦掌握了基础知识,你会发现Verilog数字设计实例中包含更多重要的和有趣的知识。
建议读者好好利用贯穿全书的页边注释,这将帮助你把握重要的定义和知识点。
各章内容概述
接下来简短介绍一下本书15章的主要内容。这可能会让你想起一般软件指南中所说的,“写给不喜欢阅读手册的人”。看过这部分后,也许你就不必阅读本书的剩余内容了。
第1章给出了一些基本定义和重要主题的预览,还有一点关于数字电路的内容,使读者在不深入阅读第14章的情况下可以顺利学习其他内容。
第2章介绍二进制数制和编码。在软件课程中已经熟悉二进制数制的读者,仍需要阅读2.10~2.13节,以便理解硬件是如何使用二进制编码的。高年级学生可以阅读2.14节和2.15节,其中清楚地介绍了检错码。每个读者都应该阅读2.16.1节,因为在许多现代系统中都要用到它。
第3章讲解组合逻辑设计原理,包括开关代数、组合电路分析、综合与最小化。
第4章从文档标准开始介绍各种数字设计实践,文档标准可能是设计者开始实践时的第一步,也是很重要的一步。然后介绍定时的概念,特别是组合电路的定时,最后以关于HDL、设计流程和工具的讨论结束。
第5章是关于Verilog的教程和参考资料,Verilog是本书剩余部分所采用的硬件描述语言。所有读者都应该阅读前几节内容,但是部分读者可能希望跳过其余内容,直到需要时再开始阅读。这也是没问题的,因为新的Verilog结构集中在后续章节(主要是第6章),第一次用到时才会进行讲述。
第6章描述了两个通用的组合构件ROM和PLD。然后介绍两个最常用的功能构件—译码器和多路复用器,每一个都会给出门级和基于Verilog的设计。读者可以从这里直接跳到第9章的状态机,然后再回到第7章和第8章。
第7章继续讨论门级和用Verilog实现的组合构件,包括三态器件、优先编码器、异或门和奇偶函数以及比较器,然后用一个非平凡“随机逻辑”函数的Verilog设计实例引出结论。
第8章讨论实现算术功能的组合电路,包括加法和减法、移位、乘法和除法。
第9章介绍使用D触发器的传统状态机,包括采用状态表、状态图、ASM图和Verilog的状态机的分析和综合。
第10章介绍其他时序元件,包括锁存器、边沿触发器件及其Verilog行为模型。这一章还描述了用典型的FPGA实现的时序元件,并为感兴趣的读者准备了关于时序型PLD和反馈时序电路的章节。
第11章重点讲解两个最常用的时序电路构件—计数器和移位寄存器,包括它们的应用,以及门级和基于Verilog的例子。
第12章包含关于如何采用Verilog对状态机建模的更详细的内容,以及更多例子。
第13章讨论时序电路设计的重要实际概念,包括同步系统结构、时钟和时钟偏移、异步输入和亚稳定性,以及一个用Verilog实现的双时钟同步的详细例子。
第14章介绍数字电路运算,重点在于逻辑器件的外部特性。学习起点是基础的电子学知识,包括电压、电流和欧姆定律。对于如何使真实电路运作起来不感兴趣的读者,或者有权把这项辛苦活交给别人完成的读者可以跳过本章。
第15章全部都是关于存储器件和FPGA的内容。存储器方面包括只读存储器以及静态、动态读/写存储器的内部电路和功能行为特性。最后一节会详细介绍Xilinx 7系列的FPGA结构。
大多数章节都包含参考资料、训练题和练习题。训练题通常是简答题或“轻而易举”的问题,可以直接根据书中材料给出答案,而练习题通常需要花时间仔细思考。第14章的训练题尤其广泛,是为了帮助非电子工程师能较容易地理解本章内容而专门设计的。
与第4版的区别
对于用过本书之前版本的读者和教师而言,除了普通的更新之外,第5版还有以下关键的不同之处。
新版只涉及Verilog,没有VHDL。在不同语言之间跳转只会使人分神。另外,Verilog及其后继SystemVerilog是目前非官方背景下所选择的HDL。推荐大家阅读Steve Golson和Leah Clark的论文,“再论21世纪的语言之争:Verilog与VHDL”(2016 Synopsys Users Group Conference)。这是一篇精彩纷呈且论据充足的论文,如果你不想阅读全文的话,可以直接跳到最后一节。
新版有更多HDL的例子,更加强调设计流程和测试平台,包括纯粹的激励和自检信号。
对于并非旨在培养电子工程师的计算机工程专业的学生,为了使本书更容易阅读,关于CMOS电路的详细内容移到了第14章,而在第1章中加入了最少量的电子学知识,这样,学生就可以跳过整个关于CMOS的章节。
关于TTL、SSI、MSI、74系列逻辑、PLD以及CPLD的内容都删除了。
简化了卡诺图化简的内容。
尽管第5章依然是关于Verilog的综合性教程和参考资料,但Verilog的概念也散布在第6章和第7章的文本框中。它们会在需要相关知识点的地方及时出现,学生可以直接在那里找到“好东西”。
更强调基于FPGA的设计、FPGA结构特性、综合结果以及权衡。
原来关于组合逻辑元件的一章被分成了三章,以便有需要的读者可以直接从一开始就跳到状态机的内容。而且,还可以在最后讲解更多算术运算电路的内容。
用一整章内容讲解如何用Verilog实现状态机,包括许多例子。
关于同步设计方法论的章节目前包含一个详细的控制单元加数据通路的例子,以及一个关于采用异步FIFO的交叉时钟域的综合例子。
希望我在书里开的玩笑不会太糟糕。
数字设计软件工具
书中所有Verilog的例子都是采用Xilinx Vivado套件编译和测试的,这个套件包括以Xilinx 7系列FPGA为目标器件的Verilog、SystemVerilog以及VHDL。然而,这些例子一般并不特别要求采用Vivado编译,甚至不要求目标器件是Xilinx或任何其他FPGA。本书不包含关于Vivado的教程,而Xilinx有丰富的在线资源可供参考。因此,读者可以将本书与任何Verilog工具一起使用,包括下面提及的工具。
可以从Xilinx下载免费的Vivado“Webpack”版本。这个版本支持较小型的7系列FPGA,带有Zynq Soc的FPGA以及评估板。这是一个庞大的文件,超过10GB,但也是一个综合工具套件。支持前7系列FPGA以及较小型Zynq FPGA的Xilinx ISE(Integrated Software Environment)也包含在免费的“Webpack”版本中。注意,“legacy”模式支持ISE,而自从2013年后,ISE就再也没有更新过。要获取任何一种套件,可以登录www.xilinx.com,搜索“Webpack download”。
如果你正在使用Altera(现在是Intel的一部分了)器件,他们还提供了不错的“大学计划”和工具。你可以搜索“Altera university support”,然后导航到“For Student”网页。免费的工具包括Quartus Prime Lite版本,用于以入门级FPGA和CPLD为目标器件的Verilog、SystemVerilog和VHDL设计。还有一个配套的ModelSim模拟软件初始版本,这一版本也是符合工业标准的。
Altera和Xilinx都提供廉价的评估板,适用于直接或通过第三方等效实现基于FPGA的学生项目。这样的评估板可以包括开关、LED、模拟/数字转换器以及运动传感器,甚至包括USB和VGA接口。如果参与制造商的大学计划,你的总花费将少于100美元。
另一个长期支持大学计划的专业数字设计工具是Aldec(www.aldec.com)。他们提供一个流行的Active-HDL学生版本,用于设计入门和模拟。其中不仅包含常规的HDL,还包括方框图和状态机的图形编辑器。模拟器中还包括波形编辑器,用于创建交互激励信号。为利用这些特性,可以将Active-HDL模拟器作为Vivado的一个插件,取代Vivado模拟器。
上述工具以及大多数其他工程设计工具都是在Windows PC上运行的,所以,如果你是一个Mac迷,就必须习惯使用Window PC!你可以在Mac的Windows仿真环境(比如VMware)中运行,但是成功与否取决于具体的软件工具。要想使一款工具在你的PC上“快速运行”,最重要的条件就是配置固态硬盘驱动器而不是旋转硬盘驱动器。
即使你并未打算完成原创设计,也可以利用上述工具中的任何一个来测试和改进书中的例子,因为各章中的源代码都是在线提供的。
工程资源和www.ddpp.com
可以从Pearson的“Engineering Resource”网站上获得本书的丰富资源。在出版时,Pearson的链接是media.pearsoncmg.com/bc/abp/engineering-resources。但是,你知道输入一长串网址的麻烦。直接登录作者网站www.ddpp.com更为方便,其中包含到Pearson网站的链接。而且,作者网站中还包含最新的勘误表和其他增改资料,甚至某天还可能会写写博客。
Pearson网站上的资源包括书中所有Verilog模块的源代码下载、部分训练题和练习题答案以及补充材料,例如,针对非电子工程人员提供的20页电子学基础概念介绍。
教师资源
Pearson维护着一个专供教师使用的附加材料的集合。登录上述工程资源网站,导航到这本书,然后点击“Instructor Resources”链接。这个网站要求注册,可能需要花费几天时间等待以获得访问权限。所提供的资源包括附加的训练题和练习题答案、附加的源代码、更多的练习题,以及用于授课的简图和图表。本书之前版本的材料也会根据需求发布在网站上,以协助教师实现从旧版技术到新版课程的转换。
其他的教师资源还包括作者网站www.ddpp.com,以及Xilinx、Altera和Aldec的大学计划,登录www.ddpp.com可以找到这些资料的最新链接。制造商的网站提供各种产品资料和课程资料,还有芯片和电路板的折扣信息,其中包含很多数字设计实验课常用的器件。有些功能齐全的工具套件也会参与促销,折扣力度很大,开设相关高级课程的教师可以多多关注。
勘误
警告:本书可能包含错误。作者和出版社对于因错误引起的问题免责,包括偶然事故、精神损害以及其他方面的问题。
这样可以让律师感到轻松。现在,为了让你感到快乐,我向你保证我们为本书做了精心准备,尽可能地不出错。我渴望获知仍然存在的错误,以便在重印、再版以及改编版本中改正。我会通过PayPal向第一个发现本书印刷版中某个错误—技术错误、印刷错误或是其他错误—的人支付5美元。请通过www.ddpp.com上的相关链接将你的意见通过电子邮件发送给我。
www.ddpp.com上提供最新的勘误列表,希望这个列表不会很长。
致谢
由于许多人的帮助才使得本书顺利出版。大多数人都对前四版的出版给予了帮助,在那里我已经表示了感谢。关于本书的“原理”方面,我还是要特别感谢我的老师、研究生导师以及朋友Ed McCluskey。关于本书的“实践”方面,几位良师益友提供了很多好建议,包括我的朋友Jesse Jenkins,Xilinx的职员Parimal Patel和Trevor Bauer,以及McCluskey的同事—斯坦福大学的Subhasish Mitra教授。
自本书第4版出版以来,我从读者那里收到了许多有益的意见。除了提出改进建议外,读者还指出了大量印刷上的和技术上的错误,所有这些都在第5版中一并改正。
对这个版本最具实质性影响和贡献的是匿名(对我而言)的学术评审,他们都是使用本书第4版或其他同类书籍作为教材的教师。我尽量接受他们的建议,这通常意味着要删去一些像我这样的“老前辈”所过于固守的材料,而增加大量现代概念,例如与基于HDL的设计流程、测试平台、综合等相关的内容。
感谢Pearson的责任编辑Julie Bai在过去几年为这个项目所做的精心且细致的工作,实际上,她是采用本书之前版本作为教材教授过数字设计课程的第一个编辑。遗憾的是,她在项目差不多完成时离职了,我已经记不清这种状况是第四次还是第五次发生。这也使我更加确信,与我合作的编辑要么“不堪折磨逃离魔掌”,要么“历尽劫难浴火重生”,或者二者兼而有之。特别感谢她的老板的老板Marcia Horton,二三十年来她一直关注我的项目。还要感谢Scott Disanno和Michelle Bayman,他们负责这个版本的生产和发行过程。
还要感谢艺术家Peter Crowell,我在eBay上发现了他的画作,当时,编辑Julie Bai建议我们基于Piet Mondrian的作品设计封面,她说,Piet的某些作品“看起来几乎就像是逻辑电路的抽象”。Crowell的“Tuesday Matinee”完美地契合了我们的需求。他的画作“铺设”在封面和每章开篇的地方,与铺设在FPGA上的逻辑模块及其连接非常相像。封面设计师Marta Samsel采纳了我这个工程主义的观点,最终成品非常漂亮。
最后,妻子Joanne Jacobs非常支持这个项目,让我在楼上安静地工作,而她则在楼下处理教育博客。她甚至从未抱怨圣诞树在家里一直放到二月份还没有搬走。

John F. Wakerly
加利福尼亚州,洛思阿图斯

上架指导

数字逻辑设计

封底文字

本书是数字设计领域的经典教材,是作者牢固的理论功底、严谨的学术风范与丰富的实践经验的完美融合。本书第5版是作者经过十年的实践积累,在第4版的基础上从原理和实践两个方面全面讲述了数字设计的概念、理论、方法,以及最新的技术和实践。原理方面涵盖高级(HDL)、低级(电子电路)以及“广泛中间级”(门电路、触发器和一些较高级的数字设计构件)的多层次基础知识,更加方便不同专业的教学内容选取;实践方面专注于Verilog一种实现语言,强调基于FPGA的设计,并且添加了更多应用实例。

本书特色
全面更新,适用面广。囊括从基础理论到最新技术及其应用的几乎所有知识,适合作为电气工程、计算机工程或计算机科学专业的入门教材、进阶教材或实验教材。
夯实理论,突出实践。理论阐述详实,实践部分突出基于最新的Verilog的设计方法和技术。使读者不仅掌握完成数字设计所需的全面理论,还具备构建实际数字系统的能力。
繁简适度,时效性高。不再分散于多门语言,而是紧紧围绕主流语言Verilog补充了更多例子,并删减了关于TTL、SSI、MSI、74系列逻辑、CPLD以及卡诺图化简的内容。
重点清晰,逻辑性强。扩展性的章节均以星号标识,方便读者根据需要选择学习内容,页边栏部分同样经过精心编排,既强调了核心知识点,也包含很多有趣的讨论。


作者简介
约翰·F. 韦克利(John F. Wakerly) 于斯坦福大学获得电子工程博士学位。他目前是思科系统公司广域网业务部主管工程项目的副总裁,还是斯坦福大学的兼职教授。他在数字设计、微型计算机体系结构、计算机可靠性等方面出版了50多部著作,并在电信与网络领域拥有13项专利。

作者简介

[美]约翰·F. 韦克利(John F. Wakerly) 斯坦福大学 著:约翰·F. 韦克利(John F. Wakerly) 于斯坦福大学获得电子工程博士学位。他目前是思科系统公司广域网业务部主管工程项目的副总裁,还是斯坦福大学的兼职教授。他在数字设计、微型计算机体系结构、计算机可靠性等方面出版了50多部著作,并在电信与网络领域拥有13项专利。

图书目录

Contents
1 INTRODUCTION 1
1.1 About Digital Design1
1.2Analog versus Digital3
1.3Analog Signals7
1.4Digital Logic Signals7
1.5Logic Circuits and Gates9
1.6Software Aspects of Digital Design13
1.7Integrated Circuits16
1.8Logic Families and CMOS19
1.9CMOS Logic Circuits20
1.10Programmable Devices25
1.11Application-Specific ICs27
1.12Printed-Circuit Boards28
1.13Digital-Design Levels29
1.14The Name of the Game33
1.15Going Forward34
Drill Problems34
2 NUMBER SYSTEMS AND CODES 35
2.1Positional Number Systems36
2.2Binary, Octal, and Hexadecimal Numbers37
2.3Binary-Decimal Conversions39
2.4Addition and Subtraction of Binary Numbers42
2.5Representation of Negative Numbers44
2.5.1Signed-Magnitude Representation
2.5.2Complement Number Systems
2.5.3Two’s-Complement Representation
2.5.4Ones’-Complement Representation
2.5.5Excess Representations
2.6Two’s-Complement Addition and Subtraction48
2.6.1Addition Rules
2.6.2A Graphical View
2.6.3Overflow
2.6.4Subtraction Rules
2.6.5Two’s-Complement and Unsigned Binary Numbers
2.7Ones’-Complement Addition and Subtraction52
2.8Binary Multiplication54
2.9Binary Division56
2.10Binary Codes for Decimal Numbers57
2.11Gray Code602.12Character Codes62
2.13Codes for Actions, Conditions, and States64
2.14n-Cubes and Distance66
2.15Codes for Detecting and Correcting Errors67
2.15.1Error-Detecting Codes
2.15.2Error-Correcting and Multiple-Error-Detecting Codes
2.15.3Hamming Codes
2.15.4CRC Codes
2.15.5Two-Dimensional Codes
2.15.6Checksum Codes
2.15.7m-out-of-n Codes
2.16Codes for Transmitting and Storing Serial Data78
2.16.1Parallel and Serial Data
2.16.2Serial Line CodesReferences82
Drill Problems83
Exercises85
3SWITCHING ALGEBRA AND COMBINATIONAL LOGIC89
3.1Switching Algebra91
3.1.1Axioms
3.1.2Single-Variable Theorems
3.1.3Two- and Three-Variable Theorems
3.1.4n-Variable Theorems
3.1.5Duality
3.1.6Standard Representations of Logic Functions
3.2Combinational-Circuit Analysis104
3.3Combinational-Circuit Synthesis110
3.3.1Circuit Descriptions and Designs
3.3.2Circuit Manipulations
3.3.3Combinational-Circuit Minimization
3.3.4Karnaugh Maps
3.4Timing Hazards122
3.4.1Static Hazards
3.4.2Finding Static Hazards Using Maps
3.4.3Dynamic Hazards
3.4.4Designing Hazard-Free CircuitsReferences126
Drill Problems128Exercises129
4DIGITAL DESIGN PRACTICES133
4.1Documentation Standards133
4.1.1Block Diagrams
4.1.2Gate Symbols
4.1.3Signal Names and Active Levels
4.1.4Active Levels for Pins
4.1.5Constant Logic Signals
4.1.6Bubble-to-Bubble Logic Design
4.1.7Signal Naming in HDL Models
4.1.8Drawing Layout
4.1.9Buses
4.1.10Additional Schematic Information
4.2Circuit Timing154
4.2.1Timing Diagrams
4.2.2Propagation Delay
4.2.3Timing Specifications
4.2.4Sample Timing Specifications
4.2.5Timing Analysis Tools
4.3HDL-Based Digital Design165
4.3.1HDL History
4.3.2Why HDLs?
4.3.3EDA Tool Suites for HDLs
4.3.4HDL-Based Design FlowReferences172
Drill Problems
174Exercises176
5VERILOG HARDWARE DESCRIPTION LANGUAGE177
5.1Verilog Models and Modules179
5.2Logic System, Nets, Variables, and Constants184
5.3Vectors and Operators189
5.4Arrays193
5.5Logical Operators and Expressions194
5.6Compiler Directives197
5.7Structural Models198
5.8Dataflow Models203
5.9Behavioral Models (Procedural Code)205
5.9.1Always Statements and Blocks
5.9.2Procedural Statements
5.9.3Inferred Latches
5.9.4Assignment Statements
5.9.5begin-end Blocks
5.9.6if and if-else Statements
5.9.7case Statements
5.9.8Looping Statements
5.10Functions and Tasks220
5.11The Time Dimension224
5.12Simulation225
5.13Test Benches226
5.14Verilog Features for Sequential Logic Design232
5.15Synthesis232
References233
Drill Problems234
Exercises235
6BASIC COMBINATIONAL LOGICELEMENTS237
6.1Read-Only Memories (ROMs)240
6.1.1ROMs and Truth Tables
6.1.2Using ROMs for Arbitrary Combinational Logic Functions
6.1.3FPGA Lookup Tables (LUTs)
6.2Combinational PLDs246
6.2.1Programmable Logic Arrays
6.2.2Programmable Array Logic Devices
6.3Decoding and Selecting250
6.3.1A More Mathy Decoder Definition
6.3.2Binary Decoders
6.3.3Larger Decoders
6.3.4Decoders in Verilog
6.3.5Custom Decoders
6.3.6Seven-Segment Decoders
6.3.7 Binary Encoders
6.4Multiplexing281
6.4.1Gate-Level Multiplexer Circuits
6.4.2Expanding Multiplexers
6.4.3Multiplexers, Demultiplexers, and Buses
6.4.4Multiplexers in Verilog
References294
Drill Problems295
Exercises296
7MORE COMBINATIONAL BUILDINGBLOCKS301
7.1Three-State Devices302
7.1.1Three-State Buffers
7.1.2Standard MSI Three-State Buffers
7.1.3Three-State Outputs in Verilog
7.1.4Three-State Outputs in FPGAs
7.2Priority Encoding312
7.2.1Cascading Priority Encoders
7.2.2Priority Encoders in Verilog
7.3Exclusive-OR Gates and Parity Functions320
7.3.1Exclusive-OR and Exclusive-NOR Gates
7.3.2Parity Circuits
7.3.3Parity-Checking Applications
7.3.4Exclusive-OR Gates and Parity Circuits in Verilog
7.4Comparing331
7.4.1Comparator Structure
7.4.2Iterative Circuits
7.4.3An Iterative Comparator Circuit
7.4.4Magnitude Comparators
7.4.5Comparators in HDLs
7.4.6Comparators in Verilog
7.4.7Comparator Test Benches
7.4.8Comparing Comparator Performance
7.5A Random-Logic Example in Verilog356
Drill Problems363
Exercises364
8COMBINATIONAL ARITHMETICELEMENTS371
8.1Adding and Subtracting372
8.1.1Half Adders and Full Adders
8.1.2Ripple Adders
8.1.3Subtractors
8.1.4Carry-Lookahead Adders
8.1.5Group Ripple Adders
8.1.6Group-Carry Lookahead
8.1.7MSI Arithmetic and Logic Units
8.1.8Adders in Verilog
8.1.9Parallel-Prefix Adders
8.1.10FPGA CARRY4 Element
8.2Shifting and Rotating403
8.2.1Barrel Shifters
8.2.2Barrel Shifters in Verilog
8.3Multiplying416
8.3.1Combinational Multiplier Structures
8.3.2Multiplication in Verilog
8.4Dividing426
8.4.1Basic Unsigned Binary Division Algorithm
8.4.2Division in VerilogReferences433
Drill Problems433
Exercises434
9STATE MACHINES439
9.1State-Machine Basics440
9.2State-Machine Structure and Analysis443
9.2.1State-Machine Structure
9.2.2Output Logic
9.2.3State-Machine Timing
9.2.4Analysis of State Machines with D Flip-Flops
9.3State-Machine Design with State Tables455
9.3.1State-Table Design Example
9.3.2State Minimization
9.3.3State Assignment
9.3.4Synthesis Using D Flip-Flops
9.3.5Beyond State Tables
9.4State-Machine Design with State Diagrams472
9.4.1T-Bird Tail Lights Example
9.5State-Machine Design with ASM Charts478
9.5.1T-Bird Tail Lights with ASM Charts
9.6State-Machine Design with Verilog483
References486
Drill Problems487
Exercises490
10SEQUENTIAL LOGIC ELEMENTS495
10.1Bistable Elements496
10.1.1Digital Analysis
10.1.2Analog Analysis
10.1.3Metastable Behavior
10.2Latches and Flip-Flops499
10.2.1S-R Latch
10.2.2S-R Latch
10.2.3D Latch
10.2.4Edge-Triggered D Flip-Flop
10.2.5Edge-Triggered D Flip-Flop with Enable
10.2.6T Flip-Flops
10.3Latches and Flip-Flops in Verilog508
10.3.1Instance Statements and Library Components
10.3.2Behavioral Latch and Flip-Flop Models
10.3.3More about clocking in Verilog
10.4Multibit Registers and Latches522
10.4.1MSI Registers and Latches
10.4.2Multibit Registers and Latches in Verilog
10.5Miscellaneous Latch and Bistable Applications525
10.5.1Switch Debouncing
10.5.2Bus-Holder Circuits
10.6Sequential PLDs528
10.7FPGA Sequential Logic Elements531
10.8Feedback Sequential Circuits534
10.8.1Basic Analysis
10.8.2Analyzing Circuits with Multiple Feedback Loops
10.8.3Feedback Sequential-Circuit Design
10.8.4Feedback Sequential Circuits in VerilogReferences544
Drill Problems545
Exercises547
11COUNTERS AND SHIFT REGISTERS553
11.1Counters554
11.1.1Ripple Counters
11.1.2Synchronous Counters
11.1.3A Universal 4-Bit Counter Circuit1
1.1.4Decoding Binary-Counter States
11.1.5Counters in Verilog
11.2Shift Registers566
11.2.1Shift-Register Structure
11.2.2Shift-Register Counters
11.2.3Ring Counters
11.2.4Johnson Counters
11.2.5Linear Feedback Shift-Register Counters
11.2.6Shift Registers in Verilog
11.2.7Timing-Generator Examples
11.2.8LFSR Examples
11.3Iterative versus Sequential Circuits593
References596
Drill Problems596
Exercises599
12STATE MACHINES IN VERILOG605
12.1Verilog State-Machine Coding Styles606
12.1.1Basic Coding Style
12.1.2A Verilog State-Machine Example
12.1.3Combined State Memory and Next-State Logic
12.1.4Reset Inputs
12.1.5Pipelined Moore Outputs in Verilog
12.1.6Direct Verilog Coding Without a State Table
12.1.7State-Machine Extraction
12.2Verilog State-Machine Test Benches616
12.2.1State-Machine Test-Bench Construction Methods
12.2.2Example Test Benches
12.2.3Instrumenting Next-State Logic for Testing
12.2.4In Summary
12.3Ones Counter626
12.4Combination Lock628
12.5T-Bird Tail Lights632
12.6Reinventing Traffic-Light Controllers637
12.7The Guessing Game642
12.8“Don’t-Care” State Encodings646
12.9Decomposing State Machines648
12.9.1The Guessing Game Again
12.10The Trilogy Game656
References664
Drill Problems664
Exercises666
13SEQUENTIAL-CIRCUIT DESIGNPRACTICES673
13.1Sequential-Circuit Documentation Practices674
13.1.1General Requirements
13.1.2Logic Symbols
13.1.3State-Machine Descriptions
13.1.4Timing Diagrams and Specifications
13.2Synchronous Design Methodology681
13.2.1Synchronous System Structure
13.2.2A Synchronous System Design Example
13.3Difficulties in Synchronous Design691
13.3.1Clock Skew
13.3.2Gating the Clock
13.3.3Asynchronous Inputs
13.4Synchronizer Failure and Metastability701
13.4.1Synchronizer Failure
13.4.2Metastability Resolution Time
13.4.3Reliable Synchronizer Design
13.4.4Analysis of Metastable Timing
13.4.5Better Synchronizers
13.4.6Other Synchronizer Designs
13.5Two-Clock Synchronization Example710
References729
Drill Problems729
Exercises730
14DIGITAL CIRCUITS733
14.1CMOS Logic Circuits735
14.1.1CMOS Logic Levels
14.1.2MOS Transistors
14.1.3Basic CMOS Inverter Circuit
14.1.4CMOS NAND and NOR Gates
14.1.5Fan-In
14.1.6Noninverting Gates
14.1.7CMOS AND-OR-INVERT and OR-AND-INVERT Gates
14.2Electrical Behavior of CMOS Circuits745
14.2.1Overview
14.2.2Data Sheets and Specifications
14.3CMOS Static Electrical Behavior748
14.3.1Logic Levels and Noise Margins
14.3.2Circuit Behavior with Resistive Loads
14.3.3Circuit Behavior with Nonideal Inputs
14.3.4Fanout
14.3.5Effects of Loading
14.3.6Unused Inputs
14.3.7How to Destroy a CMOS Device
14.4CMOS Dynamic Electrical Behavior764
14.4.1Transition Time
14.4.2Propagation Delay
14.4.3Power Consumption
14.4.4Current Spikes and Decoupling Capacitors
14.4.5Inductive Effects
14.4.6Simultaneous Switching and Ground Bounce
14.5Other CMOS Input and Output Structures778
14.5.1Transmission Gates
14.5.2Schmitt-Trigger Inputs
14.5.3Three-State Outputs
14.5.4Open-Drain Outputs
14.5.5Driving LEDs and Relays
14.5.6Multisource Buses
14.5.7Wired Logic
14.5.8Pull-Up Resistors
14.6CMOS Logic Families790
14.6.1HC and HCT
14.6.2AHC and AHCT
14.6.3HC, HCT, AHC, and AHCT Electrical Characteristics
14.6.4AC and ACT
14.6.5FCT and FCT-T
14.7Low-Voltage CMOS Logic and Interfacing798
14.7.13.3-V LVTTL and LVCMOS Logic Levels
14.7.25-V Tolerant Inputs
14.7.35-V Tolerant Outputs
14.7.4TTL/LVTTL Interfacing Summary
14.7.5Logic Levels Less Than 3.3 V
14.8Differential Signaling803
References804
Drill Problems805
Exercises808
15ROMS, RAMS, AND FPGAS813
15.1Read-Only Memory814
15.1.1Internal ROM Structure
15.1.2Two-Dimensional Decoding
15.1.3Commercial ROM Types
15.1.4Parallel-ROM Interfaces
15.1.5Parallel-ROM Timing
15.1.6Byte-Serial Interfaces for NAND Flash Memories
15.1.7NAND Memory Timing and Access Bandwidth
15.1.8Storage Management for NAND Memories
15.2Read/Write Memory833
15.3Static RAM834
15.3.1Static-RAM Inputs and Outputs
15.3.2Static-RAM Internal Structure
15.3.3Static-RAM Timing
15.3.4Standard Asynchronous SRAMs
15.3.5Synchronous SRAM
15.4Dynamic RAM844
15.4.1Dynamic-RAM Structure
15.4.2SDRAM Timing
15.4.3DDR SDRAMs
15.5Field-Programmable Gate Arrays (FPGAs)851
15.5.1Xilinx 7-Series FPGA Family
15.5.2CLBs and Other Logic Resources
15.5.3Input/Output Block
15.5.4Programmable InterconnectReferences863
Drill Problems864



Contents
目  录
第1章 引言 1
1.1 关于数字设计 1
1.2 模拟与数字 3
1.3 模拟信号 7
1.4 数字逻辑信号 7
1.5 逻辑电路与门电路 9
1.6 数字设计的软件方面 13
1.7 集成电路 16
1.8 逻辑序列与CMOS 19
1.9 CMOS逻辑电路 20
1.10 可编程器件 25
1.11 专用集成电路 27
1.12 印制电路板 28
1.13 数字设计层次 29
1.14 数字设计的重要目标 33
1.15 继续学习 34
训练题 34
第2章 数制系统和编码 35
2.1 按位计数制系统 36
2.2 二进制、八进制和十六进制 37
2.3 二进制与十进制的转换 39
2.4 二进制数的加法和减法 42
2.5 负数的表示 44
2.5.1 符号–数值表示法
2.5.2 补码数制系统
2.5.3 二进制补码表示法
2.5.4 二进制反码表示法
2.5.5 余码表示法
2.6 二进制补码的加法和减法 48
2.6.1 加法规则
2.6.2 图示法
2.6.3 溢出
2.6.4 减法规则
2.6.5 二进制补码与无符号二进制数
2.7 二进制反码的加法和减法 52
2.8 二进制乘法 54
2.9 二进制除法 56
2.10 十进制数的二进制编码 57
2.11 格雷码 60
2.12 字符编码 62
2.13 动作、条件和状态的编码 64
2.14 n维体与距离 66
2.15 检错码和纠错码 67
2.15.1 检错码
2.15.2 纠错码与多重检错码
2.15.3 汉明码
2.15.4 循环冗余校验码
2.15.5 二维码
2.15.6 校验和码
2.15.7 n中取m码
2.16 用于串行数据传输与存储的编码 78
2.16.1 并行/串行数据
2.16.2 串行线路编码
参考资料 82
训练题 83
练习题 85
第3章 开关代数和组合逻辑 89
3.1 开关代数 91
3.1.1 公理
3.1.2 单变量定理
3.1.3 二变量定理和三变量定理
3.1.4 n变量定理
3.1.5 对偶性
3.1.6 逻辑函数的标准表示法
3.2 组合电路分析 104
3.3 组合电路综合 110
3.3.1 电路描述与设计
3.3.2 电路处理
3.3.3 组合电路最小化
3.3.4 卡诺图
3.4 定时冒险 122
3.4.1 静态冒险
3.4.2 利用卡诺图发现静态冒险
3.4.3 动态冒险
3.4.4 设计无冒险电路
参考资料 126
训练题 128
练习题 129
第4章 数字设计实践 133
4.1 文档标准 133
4.1.1 方框图
4.1.2 门电路符号
4.1.3 信号名和有效电平
4.1.4 引脚的有效电平
4.1.5 圈到圈逻辑设计
4.1.6 HDL程序中的信号命名
4.1.7 绘制布局图
4.1.8 总线
4.1.9 附加图示信息
4.2 电路定时 154
4.2.1 定时图
4.2.2 传输延迟
4.2.3 定时规格说明
4.2.4 采样定时规格说明
4.2.5 定时分析工具
4.3 基于HDL的数字设计 165
4.3.1 HDL的历史
4.3.2 为什么用HDL
4.3.3 HDL的EDA工具套件
4.3.4 基于HDL的设计流程
参考资料 172
训练题 174
练习题 176
第5章 Verilog硬件描述语言 177
5.1 Verilog模型和模块 179
5.2 逻辑系统、网格、变量和常量 184
5.3 向量和操作符 189
5.4 数组 193
5.5 逻辑操作符和表达式 194
5.6 编译器指令 197
5.7 结构化模型 198
5.8 数据流模型 203
5.9 行为化模型(过程代码) 205
5.9.1 always语句和程序块
5.9.2 过程语句
5.9.3 推理出的锁存器
5.9.4 赋值语句
5.9.5 begin-end程序块
5.9.6 if和if-else语句
5.9.7 case语句
5.9.8 循环语句
5.10 函数和任务 220
5.11 时间维度 224
5.12 模拟 225
5.13 测试平台 226
5.14 时序逻辑设计的Verilog特性 232
5.15 综合 232
参考资料 233
训练题 234
练习题 235
第6章 基本组合逻辑元件 237
6.1 只读存储器 240
6.1.1 ROM和真值表
6.1.2 ROM用于随机组合逻辑函数
6.1.3 FPGA查询表
6.2 组合PLD 246
6.2.1 可编程逻辑阵列
6.2.2 可编程阵列逻辑器件
6.3 译码器和选择器 250
6.3.1 更加“数学化”的译码器定义
6.3.2 二进制译码器
6.3.3 大型译码器
6.3.4 用Verilog实现译码器
6.3.5 定制的译码器
6.3.6 七段译码器
6.3.7 二进制编码器
6.4 多路复用器 281
6.4.1 门级多路复用器电路
6.4.2 扩展的多路复用器
6.4.3 多路复用器、多路分配器和总线
6.4.4 用Verilog实现多路复用器
参考资料 294
训练题 295
练习题 296
第7章 其他组合构件 301
7.1 三态器件 302
7.1.1 三态缓冲器
7.1.2 标准MSI三态缓冲器
7.1.3 用Verilog实现三态输出
7.1.4 用FPGA实现三态输出
7.2 优先编码器 312
7.2.1 级联优先编码器
7.2.2 用Verilog实现优先编码器
7.3 异或门和奇偶校验函数 320
7.3.1 异或门和异或非门
7.3.2 奇偶电路
7.3.3 奇偶校验的应用
7.3.4 用Verilog实现异或门和奇偶电路
7.4 比较器 331
7.4.1 比较器的结构
7.4.2 迭代电路
7.4.3 迭代比较器电路
7.4.4 数值比较器
7.4.5 用HDL实现比较器
7.4.6 用Verilog实现比较器
7.4.7 比较器测试平台
7.4.8 比较器的性能测评
7.5 用Verilog实现随机逻辑的例子 356
训练题 363
练习题 364
第8章 组合算术元件 371
8.1 加法和减法 372
8.1.1 半加器和全加器
8.1.2 行波进位加法器
8.1.3 减法器
8.1.4 先行进位加法器
8.1.5 组间行波进位加法器
8.1.6 组间先行进位
8.1.7 MSI算术和逻辑单元
8.1.8 用Verilog实现加法器
8.1.9 并行前缀加法器
8.1.10 FPGA CARRY4元件
8.2 移位和循环 403
8.2.1 桶形移位器
8.2.2 用Verilog实现桶形移位器
8.3 乘法 416
8.3.1 组合乘法器的结构
8.3.2 用Verilog实现乘法
8.4 除法 426
8.4.1 基本无符号二进制除法算法
8.4.2 用Verilog实现除法
参考资料 433
训练题 433
练习题 434
第9章 状态机 439
9.1 状态机基础知识 440
9.2 状态机结构和分析 443
9.2.1 状态机结构
9.2.2 输出逻辑
9.2.3 状态机定时
9.2.4 采用D触发器的状态机分析
9.3 用状态表设计状态机 445
9.3.1 状态表设计举例
9.3.2 状态最小化
9.3.3 状态赋值
9.3.4 采用D触发器综合
9.3.5 状态表之外
9.4 用状态图设计状态机 472
9.4.1 雷鸟车尾灯举例
9.5 用ASM图设计状态机 478
9.5.1 用ASM图实现雷鸟车尾灯
9.6 用Verilog实现状态机设计 483
参考资料 486
训练题 487
练习题 490
第10章 时序逻辑元件 495
10.1 双稳态元件 496
10.1.1 数字分析
10.1.2 模拟分析
10.1.3 亚稳态特性
10.2 锁存器和触发器 499
10.2.1 S - R锁存器
10.2.2 –S - –R锁存器
10.2.3 D锁存器
10.2.4 边沿触发D触发器
10.2.5 带有使能端的边沿触发D触发器
10.2.6 T触发器
10.3 用Verilog实现锁存器和触发器 508
10.3.1 实例化语句和库组件
10.3.2 行为化锁存器和触发器模型
10.3.3 更多关于用Verilog实现时钟的讨论
10.4 多位寄存器和锁存器 522
10.4.1 MSI寄存器和锁存器
10.4.2 用Verilog实现多位寄存器和锁存器
10.5 锁存器和双稳态的应用 525
10.5.1 开关消颤
10.5.2 总线保持电路
10.6 时序型PLD 528
10.7 FPGA时序逻辑元件 531
10.8 反馈时序电路 534
10.8.1 基本分析
10.8.2 用多反馈回路分析电路
10.8.3 反馈时序电路设计
10.8.4 用Verilog实现反馈时序电路
参考资料 544
训练题 545
练习题 547
第11章 计数器和移位寄存器 553
11.1 计数器 554
11.1.1 行波计数器
11.1.2 同步计数器
11.1.3 4位通用计数器电路
11.1.4 二进制计数器状态译码
11.1.5 用Verilog实现计数器
11.2 移位寄存器 566
11.2.1 移位寄存器结构
11.2.2 移位寄存器型计数器
11.2.3 环形计数器
11.2.4 Johnson计数器
11.2.5 线性反馈移位寄存器型计数器
11.2.6 用Verilog实现移位寄存器
11.2.7 定时发生器举例
11.2.8 LFSR举例
11.3 迭代电路与时序电路 593
参考资料 596
训练题 596
练习题 599
第12章 用Verilog实现状态机 605
12.1 Verilog状态机编码风格 606
12.1.1 基本编码风格
12.1.2 Verilog状态机举例
12.1.3 组合状态存储器和次态逻辑
12.1.4 复位输入
12.1.5 用Verilog实现流水线的Moore输出
12.1.6 不用状态表的直接Verilog编码
12.1.7 状态机的抽取
12.2 Verilog状态机测试平台 616
12.2.1 状态机测试平台的构建方法
12.2.2 测试平台举例
12.2.3 配置用于测试的次态逻辑
12.2.4 总结
12.3 1计数器 626
12.4 组合锁 628
12.5 雷鸟车尾灯 632
12.6 重新构建交通灯控制器 637
12.7 猜谜游戏 642
12.8 “无关”状态编码 646
12.9 状态机的分解 648
12.9.1 猜谜游戏的再讨论
12.10 “三部曲”游戏 656
参考资料 664
训练题 664
练习题 666
第13章 时序电路设计实践 673
13.1 时序电路文档实践 674
13.1.1 一般要求
13.1.2 逻辑符号
13.1.3 状态机描述
13.1.4 定时图和定时规格说明
13.2 同步设计方法论 681
13.2.1 同步系统结构
13.2.2 同步系统设计举例
13.3 同步设计的难点 691
13.3.1 时钟偏移
13.3.2 选通时钟
13.3.3 异步输入
13.4 同步器故障和亚稳定性 701
13.4.1 同步器故障
13.4.2 亚稳定性分辨时间
13.4.3 可靠同步器设计
13.4.4 亚稳定的定时分析
13.4.5 优质同步器
13.4.6 其他同步器设计
13.5 双时钟同步举例 710
参考资料 729
训练题 729
练习题 730
第14章 数字电路 733
14.1 CMOS逻辑电路 735
14.1.1 CMOS逻辑电平
14.1.2 MOS晶体管
14.1.3 基本CMOS反相器电路
14.1.4 CMOS与非门和异或门
14.1.5 扇入
14.1.6 非反相门
14.1.7 CMOS与或非门和或与非门
14.2 CMOS电路的电气特性 745
14.2.1 概述
14.2.2 数据表和规格说明
14.3 CMOS的稳态电气特性 748
14.3.1 逻辑电平和噪声容限
14.3.2 带电阻性负载的电路特性
14.3.3 非理想输入时的电路特性
14.3.4 扇出
14.3.5 负载效应
14.3.6 不用的输入端
14.3.7 CMOS器件是如何损坏的
14.4 CMOS的动态电气特性 764
14.4.1 转换时间
14.4.2 传输延迟
14.4.3 功率损耗
14.4.4 电流尖峰与去耦合电容
14.4.5 电感效应
14.4.6 同时切换和地电平弹跳
14.5 其他CMOS输入和输出结构 778
14.5.1 传输门
14.5.2 施密特触发器输入
14.5.3 三态输出
14.5.4 漏极开路输出
14.5.5 驱动LED及延迟
14.5.6 多源总线
14.5.7 线连逻辑
14.5.8 上拉电阻
14.6 CMOS逻辑系列 790
14.6.1 HC和HCT
14.6.2 AHC和AHCT
14.6.3 HC、HCT、AHC和AHCT的电气特性
14.6.4 AC和ACT
14.6.5 FCT和FCT-T
14.7 低电压CMOS逻辑和接口 798
14.7.1 3.3V LVTTL和LVCMOS的逻辑电平
14.7.2 5V容限输入
14.7.3 5V容限输出
14.7.4 TTL/LVTTL 接口小结
14.7.5 低于3.3V的逻辑电平
14.8 差分信号 803
参考资料 804
训练题 805
练习题 808
第15章 ROM、RAM和FPGA 813
15.1 只读存储器 814
15.1.1 ROM的内部结构
15.1.2 二维译码器
15.1.3 商用ROM的类型
15.1.4 并行ROM的接口
15.1.5 并行ROM的定时
15.1.6 与非闪存的字节串行接口
15.1.7 与非存储器的定时和访问带宽
15.1.8 与非存储器的存储管理
15.2 读/写存储器 833
15.3 静态RAM 834
15.3.1 静态RAM的输入和输出
15.3.2 静态RAM的内部结构
15.3.3 静态RAM的定时
15.3.4 标准异步SRAM
15.3.5 同步SRAM
15.4 动态RAM 844
15.4.1 动态RAM的结构
15.4.2 SDRAM的定时
15.4.3 DDR SDRAM
15.5 现场可编程门阵列 851
15.5.1 Xilinx 7系列的FPGA
15.5.2 CLB和其他逻辑资源
15.5.3 输入/输出块
15.5.4 可编程互连
参考资料 863
训练题 864

教学资源推荐
作者: 吴建平 彭颖 编著
作者: 胡钋 主编 胡钋 秦亮 韩谷静 编著
作者: 王洁 赵晶 编著
作者: (巴西)Paulo S. R. Diniz,Eduardo A.B.da Silva,Sergio L.Netto著
参考读物推荐
作者: 孙蓉 王臣业 张兰勇 等编著
作者: 丁武锋 庄严 周春阳 编著
作者: 高显生 编著
作者: 陆佳华 江舟 马岷 编著 孙宏滨 主审