标题：数字逻辑设计（第二版）
图书信息
作者：薛宏熙、胡秀珠 
本书第一版获普通高等教育“十一五”国家级规划教材 
图书详细信息：ISBN：9787302280323定价：39.5元印次：2-1装帧：平装印刷日期：2012-6-21
图书简介
本书的特点是引入了电子设计自动化（Electronic Design Automation, EDA）工具和硬件描述语言VHDL，使理论教学和上机实践相结合，使学习基本原理和掌握设计方法相结合。从教学改革的角度看，这种教学实践实现了学校教育和产业界接轨，实现了教材和教学方法的与时俱进。全书共分8章和2个附录。第1章是逻辑电路导论；第2章介绍门电路的物理实现和特性；第3 ~ 4章介绍各种组合逻辑电路及其优化实现；第5章介绍触发器和寄存器；第6章介绍同步时序电路；第7章介绍异步时序电路；第8章以实例介绍数字系统的特点和设计方法。附录A介绍EDA工具QuartusII，附录B介绍硬件描述语言VHDL。本书所附光盘中包含了EDA软件QuartusII 9.0网络版、PPT形式的课件以及本书中所涉及的VHDL代码。作者将习题解答放置在清华大学出版社网站，教师向出版社提供身份证明后可免费下载。本书可作为高等院校计算机、自动化、电子工程及相关专业“数字逻辑”课程的教材，也可作为从事相关工作的工程技术人员的参考书
图书前言
数字逻辑是计算机、自动化、电子工程等专业的本科生核心课程之一。编写本书的基本出发点是：理论与实践相结合；基本理论与新的设计方法相结合。这里所说的新的设计方法是指硬件描述语言（hardware description language, HDL）和电子设计自动化（electronic design automation, EDA）工具。第二版对第一版的部分内容做了更新和补充。数字集成电路技术的进步主要表现在集成度的提高和EDA工具的成熟，两者相辅相成、相互促进。在没有EDA工具的条件下，只能依靠纸和笔进行手工设计，费时费力效果差，也无法完成大规模数字系统的设计与制造。使用EDA工具后局面将大为改观，其主要优点如下： (1) 设计者工作的重点是在理论的指导下对目标电路进行精确的描述，将烦琐的细节工作交给EDA工具去做，有利于设计大规模的数字系统。 (2) 检验一个设计正确与否可以在EDA工具（模拟验证）的帮助下完成，因而使设计者具备自我检查的能力。 (3) 通过实践完成一个特定的任务，必然印象深刻，并且这个设计不是纸面上的图形和文字，而是可以提交给EDA工具、可直接被综合为集成电路的设计。虽然学习EDA工具的使用方法以及学习硬件描述语言VHDL都需要花费一定的时间和精力，但是这种付出和收获相比，收获将远大于付出。从教学改革的角度看，这种教学实践实现了学校教育和产业界接轨，实现了教材和教学方法的与时俱进。高等教育强调创新人才的培养，重大理论的创新固然可贵，技术创新、产品创新也具有重要价值。从培养创新型人才出发，本课程必须强调基本理论，其理由如下： (1) 理论是应用的基石。 (2) 只有掌握基本的理论知识才能更好地使用EDA工具。 (3) 理论本身也需要继承和创新，如果不在原有的基本理论上创新，就不可能产生今天的EDA工具，而EDA工具的进一步发展仍需依赖理论的创新。限于篇幅，本书对有关EDA方面的理论有所涉及但涉及不深。培养创新人才需要通过各个教学环节来实现，对于本课程来说，除了用纸、笔完成适量的作业以巩固理论知识之外，更多的练习是使用EDA工具完成一系列设计。学生完成一个设计任务后，谁能告诉他这个设计是否与预期功能相符？是EDA工具！EDA工具提供的模拟波形将显示该目标电路的行为特性。这创造了一个自主学习的环境，当学生完成了一个个任务之后，将逐渐积累起信心，使他有勇气面对新的挑战。易学易懂是本书的一个重要目标。为此，在每章的开头有【课前思考】和【学习指南】，为学习本章提供指导性意见，每章的末尾有习题供学生作练习。在文字表述上，尽量避免长篇的文字描述，而尽量多用图形、表格、提纲等方式，以醒目的方式介绍有关知识。本书在取材方面以基本内容为主，当涉及某些难度较大而又需要一般了解的知识点时，本书给有关章节打上星号，提示有关内容不属于基本要求。数字集成电路技术发展到今天，特点之一是集成度很高，单个芯片内可以包含几百万至几千万个逻辑门，可以容纳中等规模的数字系统，因而称为片上系统（system on chip, SOC) 。过去以中小规模集成电路为基础的芯片（例如74系列）将不再是我们关注的焦点，因而略去有关内容，而把重点转向目标电路的行为描述以及调用EDA工具所提供的库元件。特点之二是本书引入了EDA工具，因而逻辑元件的符号也采用EDA工具所使用的国际通用符号。以上两点和国内某些同类教科书有所不同，在此加以说明。实践环节可分为两个层次：第一个层次是使用EDA工具进行设计和模拟验证，只要有微型计算机的地方就可以进行，对学生十分方便。第二个层次是在实验装置上做硬件实验。前者的优点是条件容易满足，后者的优点是真实的硬件实验，而不是软件模拟的结果。具体做法视学校的具体条件而定。全书共分8章和2个附录。第1章是逻辑电路导论，介绍数字电路的表示方法、逻辑代数以及化简逻辑函数的基本方法。第2章介绍数字集成电路的基本元件，讨论门电路的物理实现和特性。数字电路分为组合逻辑电路和时序逻辑电路，第3～4章介绍各种组合逻辑电路及其优化实现。第5章介绍时序电路中的记忆元件：锁存器、触发器和寄存器。第6章介绍同步时序电路的理论和设计方法，是全书的重点。第7章介绍异步时序电路，帮助读者从理论的高度认识时序电路，由于难度较大、需要较多学时，作者用星号标记其为选修内容。第8章介绍几个规模较大的数字系统，以实例展示数字系统的设计方法。第8章是第6章的延伸和提高，建议在学完第6章之后，以自学加实验的方式完成第8章的学习。
图书目录
第1章 逻辑电路导论 /11.1 开关电路数学表示方法初步 /11.1.1 真值表 /11.1.2 二进制编码 /21.1.3 真值表的常见形式 /31.1.4 分析与综合 /31.2 逻辑代数 /41.2.1 逻辑代数的基本运算 /41.2.2 逻辑函数 /61.2.3 逻辑代数的基本公式和运算规则 /61.3 用与门、或门和非门进行逻辑综合 /91.4 公式法化简逻辑函数 /101.5 卡诺图 /121.5.1 卡诺图是真值表的图形表示 /121.5.2 用卡诺图化简逻辑函数 /121.5.3 概念提升 /161.6 逻辑函数的标准形式 /181.6.1 函数的“积之和”表达式 /181.6.2 函数的“和之积”表达式 /181.6.3 两种表达形式的互换 /191.6.4 包含无关项的逻辑函数的化简 /20?*1.7 表格法化简逻辑函数 /22?*1.7.1 求质蕴含项集合 /23?*1.7.2 求最小覆盖 /251.7.3 表格法小结 /311.8 解题示例 /32【本章小结】 /33【习题】 /34
第2章 数字集成电路的基本元件--门电路 /372.1 概述 /372.2 TTL集成门电路 /402.2.1 TTL与非门简介 /402.2.2 TTL与非门的外特性及其参数 /412.2.3 集电极开路的与非门 /442.2.4 TTL三态门 /452.3 MOS场效应晶体管 /462.4 MOS门电路 /502.4.1 NMOS门电路 /502.4.2 CMOS门电路 /522.4.3 其他类型的CMOS门电路 /542.4.4 CMOS逻辑门电性能分析 /562.4.5 不同类型逻辑门的配合问题 /582.5 74系列中小规模集成电路芯片 /582.6 可编程逻辑器件 /582.6.1 可编程逻辑阵列PLA /592.6.2 可编程阵列逻辑PAL和GAL /592.6.3 复杂可编程器件 /602.6.4 现场可编程门阵列 /602.6.5 可编程开关的物理实现 /612.6.6 CPLD和FPGA特点比较 /63【本章小结】 /63【习题】 /64
第3章 组合逻辑电路的优化实现 /663.1 组合逻辑电路的特点与优化实现 /663.2 单输出函数和多输出函数 /673.2.1 多输出函数的化简 /673.2.2 多输出函数的优化实现 /713.2.3 用EDA工具优化实现组合逻辑电路示例 /723.3 多级逻辑电路的综合 /743.3.1 提取公因子 /743.3.2 功能分解 /753.4 组合逻辑电路积木块 /763.4.1 多路选择器 /763.4.2 用LUT构建更大规模的组合逻辑电路 /783.4.3 编码器 /783.4.4 译码器 /813.4.5 数值比较器 /823.4.6 算术逻辑运算电路 /833.5 组合逻辑电路中的竞争和险象 /833.5.1 险象的分析 /833.5.2 险象的消除 /863.6 解题示例 /87【本章小结】 /90【习题】 /90
第4章 数的表示方法和算术运算电路 /944.1 数制和编码 /944.1.1 数的位置表示法 /944.1.2 二进制数和十进制数的相互转换 /954.1.3 八进制数的二进制编码 /974.1.4 十六进制数的二进制编码 /974.1.5 十进制数的二进制编码 /984.1.6 格雷码 /1004.1.7 字符编码 /1004.1.8 奇偶校验码 /1024.2 无符号数的加法运算 /1044.2.1 二进制整数的加法运算 /1044.2.2 BCD码形式的十进制数加法运算 /1074.3 有符号数的表示方法和算术运算 /1104.3.1 二进制定点数的原码表示形式 /1104.3.2 二进制定点数的补码表示形式和加减运算 /1104.3.3 二进制定点数的反码表示形式和加减运算 /1144.4 用EDA工具设计算术运算电路示例 /116【本章小结】 /121【习题】 /121
第5章 锁存器、触发器和寄存器 /1245.1 锁存器 /1245.1.1 基本R-S锁存器 /1245.1.2 选通D锁存器 /1255.2 D触发器 /1285.2.1 从总体的角度观察D触发器 /1285.2.2 D触发器和D锁存器的比较 /1315.2.3 带使能控制的D触发器 /1315.3 主从D触发器 /1335.4 其他类型的触发器 /1345.4.1 T触发器 /1345.4.2 JK触发器 /1355.5 寄存器 /1365.6 设计示例 /138【本章小结】 /142【习题】 /142
第6章 同步时序电路 /1446.1 同步时序电路概述 /1446.2 同步时序电路的设计 /1466.2.1 状态图和状态表 /1476.2.2 状态分配 /1496.2.3 确定激励函数和输出函数 /1506.2.4 VHDL行为描述与使用EDA工具设计 /1506.3 状态化简 /1526.3.1 完全规定的有限状态机和不完全规定的有限状态机 /1526.3.2 状态化简算法 /1526.4 同步时序电路中的竞争和险象 /1546.4.1 状态变迁序列与险象的关系 /1546.4.2 在VHDL行为描述中指定状态编码 /1566.5 算法状态机图 /1576.6 解题示例 /158【本章小结】 /168【习题】 /169
第7章 异步时序电路 /1737.1 异步时序电路的特点 /173?*7.2 脉冲异步时序电路 /173?*7.2.1 脉冲异步时序电路的分析 /174?*7.2.2 脉冲异步时序电路的综合 /176?*7.3 电位异步时序电路 /180?*7.3.1 电位异步时序电路的分析 /181?*7.3.2 电位异步时序电路的综合 /183?*7.4 电位异步时序电路综合中防范险象的措施 /188?*7.5 解题示例 /195【本章小结】 /204【习题】 /204
第8章 数字系统设计 /2078.1 数字系统的特点和设计方法 /2078.2 交通灯控制器设计 /2088.3 求最大值电路的设计 /2148.4 数字系统中某些技术细节 /2198.4.1 减少时钟偏移的布线网络 /2208.4.2 触发器的异步输入 /2208.4.3 消除机械开关抖动的电路 /220【本章小结】 /221【习题】 /221
附录A EDA工具 QuartusII简介 /224A.1 QuartusII的安装与运行 /224A.2 设计流程 /227A.3 项目的建立与版本管理 /229A.3.1 建立一个新项目 /229A.3.2 QuartusII项目的版本管理 /231A.4 设计的原理图描述 /233A.4.1 进入原理图编辑器 /233A.4.2 从元件库中调入元件符号 /234A.4.3 绘制原理图 /235A.5 设计的VHDL描述 /236A.5.1 进入文本编辑器 /236A.5.2 在文本编辑器中编辑VHDL文件 /237A.5.3 发现并纠正VHDL代码中的错误 /239A.5.4 保存文件 /239A.6 综合和编译 /240A.6.1 进入编译器 /240A.6.2 发现并纠正原理图中的错误 /242A.7 模拟验证 /242A.7.1 使用波形编辑器绘制测试向量波形 /243A.7.2 执行模拟 /246A.8 层次化设计实例 /248A.8.1 在原理图编辑器中实现层次化设计 /248A.8.2 VHDL设计描述与原理图混合使用的层次化设计 /251A.9 时序分析器 /254A.10 调用带参数的库元件 /256A.10.1 在原理图编辑器中创建一个存储器 /256A.10.2 初始化存储器的内容 /261A.10.3 存储器的模拟实例 /262A.11 可编程器件的物理实现 /263A.11.1 引脚分配 /263A.11.2 对目标器件编程 /266A.12 用SignalTapII实时测试FPGA中的信号波形 /271
附录B 硬件描述语言VHDL简介 /277B.1 VHDL的产生与发展 /277B.2 用VHDL建立电路模型 /278B.2.1 电路模型 /278B.2.2 实体声明与结构体 /279B.2.3 结构体的描述方式 /281B.2.4 标识符 /281B.3 面向模拟器的某些特性 /282B.3.1 模拟周期 /283B.3.2 延迟时间 /283B.4 VHDL中的对象 /284B.5 数据类型 /285B.5.1 标量类型 /286B.5.2 复合类型 /287B.5.3 子类型 /289B.5.4 文件类型 /289B.5.5 类型转换 /289B.6 VHDL的词法单元 /291B.6.1 注释 /291B.6.2 数字 /291B.6.3 字符 /292B.6.4 字符串 /292B.6.5 位串 /292B.7 属性 /293B.8 表达式与运算符 /295B.9 子程序--过程与函数 /299B.10 程序包与设计库 /300B.10.1 程序包--设计中的数据共享 /300B.10.2 设计库 /302B.10.3 VHDL中名字的可见性 /302B.10.4 library语句和use语句 /303B.11 行为描述 /304B.11.1 进程语句 /304B.11.2 行为模型的顺序性 /305B.11.3 行为模型的并行性 /312B.12 结构描述 /316B.12.1 端口的基本特征 /316B.12.2 元件例化语句 /317B.12.3 配置指定 /318B.12.4 规则结构 /319B.12.5 无连接端口 /320B.13 重载 /321B.14 VHDL保留字和预定义程序包 /322B.14.1 VHDL保留字 /322B.14.2 标准程序包STANDARD /323B.14.3 IEEE多值逻辑系统程序包std_logic_1164 /330
参考文献 /333 第1章 逻辑电路导论 /11.1 开关电路数学表示方法初步 /11.1.1 真值表 /11.1.2 二进制编码 /21.1.3 真值表的常见形式 /31.1.4 分析与综合 /31.2 逻辑代数 /41.2.1 逻辑代数的基本运算 /41.2.2 逻辑函数 /61.2.3 逻辑代数的基本公式和运算规则 /61.3 用与门、或门和非门进行逻辑综合 /91.4 公式法化简逻辑函数 /101.5 卡诺图 /121.5.1 卡诺图是真值表的图形表示 /121.5.2 用卡诺图化简逻辑函数 /121.5.3 概念提升 /161.6 逻辑函数的标准形式 /181.6.1 函数的“积之和”表达式 /181.6.2 函数的“和之积”表达式 /181.6.3 两种表达形式的互换 /191.6.4 包含无关项的逻辑函数的化简 /20?*1.7 表格法化简逻辑函数 /22?*1.7.1 求质蕴含项集合 /23?*1.7.2 求最小覆盖 /251.7.3 表格法小结 /311.8 解题示例 /32【本章小结】 /33【习题】 /34
第2章 数字集成电路的基本元件--门电路 /362.1 概述 /362.2 TTL集成门电路 /392.2.1 TTL与非门简介 /392.2.2 TTL与非门的外特性及其参数 /402.2.3 集电极开路的与非门 /432.2.4 TTL三态门 /442.3 MOS场效应晶体管 /452.4 MOS门电路 /492.4.1 NMOS门电路 /492.4.2 CMOS门电路 /512.4.3 其他类型的CMOS门电路 /532.4.4 CMOS逻辑门电性能分析 /552.4.5 不同类型逻辑门的配合问题 /572.5 74系列中小规模集成电路芯片 /572.6 可编程逻辑器件 /572.6.1 可编程逻辑阵列PLA /582.6.2 可编程阵列逻辑PAL和GAL /582.6.3 复杂可编程器件 /592.6.4 现场可编程门阵列 /592.6.5 可编程开关的物理实现 /602.6.6 CPLD和FPGA特点比较 /62【本章小结】 /62【习题】 /63
第3章 组合逻辑电路的优化实现 /653.1 组合逻辑电路的特点与优化实现 /653.2 单输出函数和多输出函数 /663.2.1 多输出函数的化简 /663.2.2 多输出函数的优化实现 /693.2.3 用EDA工具优化实现组合逻辑电路示例 /703.3 多级逻辑电路的综合 /723.3.1 提取公因子 /723.3.2 功能分解 /733.4 组合逻辑电路积木块 /743.4.1 多路选择器 /743.4.2 用LUT构建更大规模的组合逻辑电路 /763.4.3 编码器 /763.4.4 译码器 /793.4.5 数值比较器 /803.4.6 算术逻辑运算电路 /813.5 组合逻辑电路中的竞争和险象 /813.5.1 险象的分析 /813.5.2 险象的消除 /843.6 解题示例 /85【本章小结】 /88【习题】 /88
第4章 数的表示方法和算术运算电路 /914.1 数制和编码 /914.1.1 数的位置表示法 /914.1.2 二进制数和十进制数的相互转换 /924.1.3 八进制数的二进制编码 /944.1.4 十六进制数的二进制编码 /944.1.5 十进制数的二进制编码 /954.1.6 格雷码 /974.1.7 字符编码 /974.1.8 奇偶校验码 /994.2 无符号数的加法运算 /1014.2.1 二进制整数的加法运算 /1014.2.2 BCD码形式的十进制数加法运算 /1044.3 有符号数的表示方法和算术运算 /1074.3.1 二进制定点数的原码表示形式 /1074.3.2 二进制定点数的补码表示形式和加减运算 /1074.3.3 二进制定点数的反码表示形式和加减运算 /1114.4 用EDA工具设计算术运算电路示例 /113【本章小结】 /118【习题】 /118
第5章 锁存器、触发器和寄存器 /1215.1 锁存器 /1215.1.1 基本R-S锁存器 /1215.1.2 选通D锁存器 /1225.2 D触发器 /1255.2.1 从总体的角度观察D触发器 /1255.2.2 D触发器和D锁存器的比较 /1285.2.3 带使能控制的D触发器 /1285.3 主从D触发器 /1305.4 其他类型的触发器 /1315.4.1 T触发器 /1315.4.2 JK触发器 /1325.5 寄存器 /1335.6 设计示例 /135【本章小结】 /139【习题】 /139
第6章 同步时序电路 /1416.1 同步时序电路概述 /1416.2 同步时序电路的设计 /1436.2.1 状态图和状态表 /1446.2.2 状态分配 /1466.2.3 确定激励函数和输出函数 /1476.2.4 VHDL行为描述与使用EDA工具设计 /1476.3 状态化简 /1496.3.1 完全规定的有限状态机和不完全规定的有限状态机 /1496.3.2 状态化简算法 /1496.4 同步时序电路中的竞争和险象 /1516.4.1 状态变迁序列与险象的关系 /1516.4.2 在VHDL行为描述中指定状态编码 /1536.5 算法状态机图 /1546.6 解题示例 /155【本章小结】 /163【习题】 /163
第7章 异步时序电路 /1677.1 异步时序电路的特点 /167?*7.2 脉冲异步时序电路 /167?*7.2.1 脉冲异步时序电路的分析 /168?*7.2.2 脉冲异步时序电路的综合 /170?*7.3 电位异步时序电路 /174?*7.3.1 电位异步时序电路的分析 /175?*7.3.2 电位异步时序电路的综合 /177?*7.4 电位异步时序电路综合中防范险象的措施 /182?*7.5 解题示例 /189【本章小结】 /198【习题】 /198
第8章 数字系统设计 /2018.1 数字系统的特点和设计方法 /2018.2 交通灯控制器设计 /2028.3 求最大值电路的设计 /2088.4 数字系统中某些技术细节 /2138.4.1 减少时钟偏移的布线网络 /2148.4.2 触发器的异步输入 /2148.4.3 消除机械开关抖动的电路 /214【本章小结】 /215【习题】 /215
附录A EDA工具 QuartusII简介 /218A.1 QuartusII的安装与运行 /218A.1.1 QuartusII的首次安装 /219A.1.2 申请授权文件 /220A.1.3 改变QuartusII主界面的样式 /220A.2 设计流程 /222A.3 项目的建立与版本管理 /223A.3.1 建立一个新项目 /223A.3.2 QuartusII项目的版本管理 /225A.4 设计的原理图描述 /227A.4.1 进入原理图编辑器 /227A.4.2 从元件库中调入元件符号 /228A.4.3 绘制原理图 /229A.5 设计的VHDL描述 /230A.5.1 进入文本编辑器 /231A.5.2 在文本编辑器中编辑VHDL文件 /231A.5.3 发现并纠正VHDL代码中的错误  /232A.5.4 保存文件 /234A.6 综合和编译 /234A.6.1 进入编译器 /234A.6.2 发现并纠正原理图中的错误 /236A.7 模拟验证 /236A.7.1 使用波形编辑器绘制测试向量波形 /237A.7.2 执行模拟 /240A.8 层次化设计实例 /242A.8.1 在原理图编辑器中实现层次化设计 /242A.8.2 VHDL设计描述与原理图混合使用的层次化设计 /245A.9 时序分析器 /248A.10 调用带参数的库元件 /250A.10.1 在原理图编辑器中创建一个存储器 /250A.10.2 初始化存储器的内容 /255A.10.3 存储器的模拟实例 /256A.11 可编程器件的物理实现 /257A.11.1 引脚分配 /257A.11.2 对目标器件编程 /260A.12 用SignalTapII实时测试FPGA中的信号波形 /265
附录B 硬件描述语言VHDL简介 /271B.1 VHDL的产生与发展 /271B.2 用VHDL建立电路模型 /272B.2.1 电路模型 /272B.2.2 实体声明与结构体 /273B.2.3 结构体的描述方式 /275B.2.4 标识符 /275B.3 面向模拟器的某些特性 /276B.3.1 模拟周期 /277B.3.2 延迟时间 /277B.4 VHDL中的对象 /278B.5 数据类型 /279B.5.1 标量类型 /280B.5.2 复合类型 /281B.5.3 子类型 /283B.5.4 文件类型 /283B.5.5 类型转换 /283B.6 VHDL的词法单元 /285B.6.1 注释 /285B.6.2 数字 /285B.6.3 字符 /286B.6.4 字符串 /286B.6.5 位串 /286B.7 属性 /287B.8 表达式与运算符 /289B.9 子程序--过程与函数 /293B.10 程序包与设计库 /294B.10.1 程序包--设计中的数据共享 /294B.10.2 设计库 /296B.10.3 VHDL中名字的可见性 /296B.10.4 library语句和use语句 /297B.11 行为描述 /298B.11.1 进程语句 /298B.11.2 行为模型的顺序性 /299B.11.3 行为模型的并行性 /306B.12 结构描述 /310B.12.1 端口的基本特征 /310B.12.2 元件例化语句 /311B.12.3 配置指定 /312B.12.4 规则结构 /313B.12.5 无连接端口 /314B.13 重载 /315B.14 VHDL保留字和预定义程序包 /316B.14.1 VHDL保留字 /316B.14.2 标准程序包STANDARD /317B.14.3 IEEE多值逻辑系统程序包std_logic_1164 /324
参考文献 /327[1]