本书作者以其严谨的学术态度和实际经验讲述了插件板级和VLSI系统中的数字设计基本原理和实践需求。全书共分为11章,内容涉及:数制系统和编码、数字电路、组合逻辑设计原理和实践、PLD的组合逻辑设计、时序逻辑设计原理与实践、PLD的时序逻辑设计、内存以及其他的实际主题。本书重点强调CMOS逻辑系列并介绍数字电路、最新的GAL、ROM和RAM系统级设计,并提供大量的设计实例,以及具有指导意义的练习题。\r\n 本书可作为电子、计算机专业本科生和研究生学习数字逻辑设计的入门教材,也可作为工程技术人员的参考书。
译者序\r\n序\r\n前言\r\n\r\n第1章 引言\r\n1.1 关于“数字设计”\r\n1.2 模拟与数字\r\n1.3 数字器件\r\n1.4 数字设计的电子技术\r\n1.5 数字设计的软件技术\r\n1.6 集成电路\r\n1.7 可编程逻辑器件\r\n1.8 专用集成电路\r\n1.9 印制电路板\r\n1.10 数字设计层次\r\n1.11 游戏名字\r\n1.12 继续学习\r\n训练题\r\n\r\n第2章 数制和编码\r\n\r\n2.1 按位计数制\r\n2.2 八进制和十六进制\r\n2.3 常用按位计数制的转换\r\n2.4 非十进制数的加法和减法\r\n2.5 负数的表示\r\n2.5.1 符号-数值表示法\r\n2.5.2 补码数制\r\n2.5.3 基数补码表示法\r\n2.5.4 二进制补码表示法\r\n*2.5.5 基数减1补码表示法\r\n*2.5.6 二进制反码表示法\r\n*2.5.7 余码表示法\r\n2.6 二进制补码的加法和减法\r\n2.6.1 加法规则\r\n2.6.2 图示法\r\n2.6.3 溢出\r\n2.6.4 减法规则\r\n2.6.5 二进制补码与无符号二进制数\r\n*2.7 二进制反码加法和减法\r\n*2.8 二进制乘法\r\n*2.9 二进制除法\r\n2.10 十进制数的二进制编码\r\n2.11 葛莱码\r\n*2.12 字符编码\r\n2.13 动作、条件和状态的编码\r\n*2.14 n维体与距离\r\n*2.15 检错码和纠错码\r\n2.15.1 检错码\r\n2.15.2 纠错码与多重检错码\r\n2.15.3 汉明码\r\n2.15.4 循环冗余校验码\r\n2.15.5 二维码\r\n2.15.6 校验和码\r\n2.15.7 n中取m码\r\n2.16 用于串行数据传输与存储的编码\r\n2.16.1 并行/串行数据\r\n*2.16.2 串行线路编码\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第3章 数字电路\r\n\r\n3.1 逻辑信号与门电路\r\n3.2 逻辑系列\r\n3.3 CMOS逻辑\r\n3.3.1 CMOS逻辑电平\r\n3.3.2 MOS晶体管\r\n3.3.3 基本的CMOS反相器电路\r\n3.3.4 CMOS“与非门”和“或非门”\r\n3.3.5 扇入\r\n3.3.6 非反相门\r\n3.3.7 CMOS“与或非”门和“或与非”门\r\n3.4 CMOS电路的电气特性\r\n3.4.1 概述\r\n3.4.2 数据表和规格说明\r\n3.5 CMOS稳态电气特性\r\n3.5.1 逻辑电平和噪声容限\r\n3.5.2 带电阻性负载的电路特性\r\n3.5.3 非理想输入时的电路特性\r\n3.5.4 扇出\r\n3.5.5 负载效应\r\n3.5.6 不用的输入端\r\n3.5.7 电流尖峰和去耦电容器\r\n3.5.8 如何毁坏CMOS器件\r\n3.6 CMOS动态电气特性\r\n3.6.1 转换时间\r\n3.6.2 传播延迟\r\n3.6.3 功率损耗\r\n3.7 其他CMOS输入和输出结构\r\n3.7.1 传输门\r\n3.7.2 施密特触发器输入\r\n3.7.3 三态输出\r\n*3.7.4 漏极开路输出\r\n*3.7.5 驱动发光二极管\r\n*3.7.6 多源总线\r\n*3.7.7 线连逻辑\r\n*3.7.8 上拉电阻\r\n3.8 CMOS逻辑系列\r\n3.8.1 HC和HCT\r\n3.8.2 VHC和VHCT\r\n3.8.3 HC、HCT、VHC和VHCT的电气特性\r\n*3.8.4 FCT和FCT-T\r\n*3.8.5 FCT-T的电气特性\r\n3.9 双极逻辑\r\n3.9.1 二极管\r\n3.9.2 二极管逻辑\r\n3.9.3 双极结型晶体管\r\n3.9.4 晶体管逻辑反相器\r\n3.9.5 肖特基晶体管\r\n3.10 晶体管-晶体管逻辑\r\n3.10.1 基本TTL型与非门\r\n3.10.2 逻辑电平和噪声容限\r\n3.10.3 扇出\r\n3.10.4 不用的输入端\r\n3.10.5 其他的TTL门类型\r\n3.11 TTL系列\r\n3.11.1 早期的TTL系列\r\n3.11.2 肖特基TTL系列\r\n3.11.3 TTL系列的特性\r\n3.11.4 一个TTL数据表\r\n*3.12 CMOS/TTL接口\r\n*3.13 低电压CMOS逻辑和接口\r\n*3.13.1 3.3 V LVTTL和LVCMOS逻辑\r\n*3.13.2 5V 容许输入\r\n*3.13.3 5V 容许输出\r\n*3.13.4 TTL/LVTTL接口小结\r\n*3.13.5 2.5 V 和1.8 V 逻辑\r\n*3.14 发射极耦合逻辑\r\n*3.14.1 基本CML电路\r\n*3.14.2 ECL10K/10H系列\r\n*3.14.3 ECL100K系列\r\n3.14.4 正ECL (PECL)\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第4章 组合逻辑设计原理\r\n\r\n4.1 开关代数\r\n4.1.1 公理\r\n4.1.2 单变量定理\r\n4.1.3 二变量和三变量定理\r\n4.1.4 n变量定理\r\n4.1.5 对偶性\r\n4.1.6 逻辑函数的标准表示法\r\n4.2 组合电路分析\r\n4.3 组合电路的综合\r\n4.3.1 电路描述与设计\r\n4.3.2 电路处理\r\n4.3.3 组合电路最小化\r\n4.3.4 卡诺图\r\n4.3.5 最小化“积之和”表达式\r\n4.3.6 简化“和之积”表达式\r\n*4.3.7 “无关”输入组合\r\n*4.3.8 多输出函数的最小化\r\n*4.4 程序化的最小化方法\r\n*4.4.1 乘积项的表示\r\n*4.4.2 通过组合乘积项求主蕴含项\r\n*4.4.3 用主蕴含项表求最小覆盖\r\n*4.4.4 其他最小化方法\r\n*4.5 定时冒险\r\n*4.5.1 静态冒险\r\n*4.5.2 利用卡诺图发现静态冒险\r\n*4.5.3 动态冒险\r\n*4.5.4 设计无冒险电路\r\n4.6 ABEL硬件描述语言\r\n4.6.1 ABEL程序结构\r\n4.6.2 ABEL编译器操作\r\n4.6.3 when语句和等式块\r\n4.6.4 真值表\r\n4.6.5 范围、集合和关系\r\n*4.6.6 无关项输入\r\n4.6.7 测试向量\r\n4.7 VHDL硬件描述语言\r\n4.7.1 设计流程\r\n4.7.2 程序结构\r\n4.7.3 类型和常量\r\n4.7.4 函数和过程\r\n4.7.5 库和包\r\n4.7.6 结构化设计元素\r\n4.7.7 数据流设计元素\r\n4.7.8 行为设计元素\r\n4.7.9 时间尺度与模拟\r\n4.7.10 综合\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第5章 组合逻辑设计实践\r\n\r\n5.1 文档标准\r\n5.1.1 方框图\r\n5.1.2 门的符号\r\n5.1.3 信号名和有效电平\r\n5.1.4 引脚的有效电平\r\n5.1.5 “圈到圈”逻辑设计\r\n5.1.6 绘制布局图\r\n5.1.7 总线\r\n5.1.8 附带的图示信息\r\n5.2 电路定时\r\n5.2.1 定时图\r\n5.2.2 传播延迟\r\n5.2.3 定时规格说明\r\n5.2.4 定时分析\r\n5.2.5 定时分析工具\r\n5.3 组合型PLD\r\n5.3.1 可编程逻辑阵列\r\n5.3.2 可编程阵列逻辑器件\r\n5.3.3 通用阵列逻辑器件\r\n*5.3.4 双极型PLD电路\r\n*5.3.5 CMOS型 PLD电路\r\n*5.3.6 器件编程与测试\r\n5.4 译码器\r\n5.4.1 二进制译码器\r\n5.4.2 大规模元件的逻辑符号\r\n5.4.3 双2-4译码器74x139\r\n5.4.4-8译码器74x138\r\n5.4.5 级联二进制译码器\r\n5.4.6 用ABEL和PLD实现译码器\r\n5.4.7 用VHDL实现译码器\r\n5.4.8 七段译码器\r\n5.5 编码器\r\n5.5.1 优先编码器\r\n5.5.2 优先级编码器74x148\r\n5.5.3 用ABEL和PLD实现编码器\r\n5.5.4 用VHDL实现编码器\r\n5.6 三态器件\r\n5.6.1 三态缓冲器\r\n5.6.2 标准SSI和MSI三态缓冲器\r\n5.6.3 用ABEL和PLD实现三态输出\r\n*5.6.4 用VHDL实现三态输出\r\n5.7 多路复用器\r\n5.7.1 标准MSI多路复用器\r\n5.7.2 扩展多路复用器\r\n5.7.3 多路复用器、多路分配器和总线\r\n5.7.4 用ABEL和PLD实现多路复用器\r\n5.7.5 用VHDL实现多路复用器\r\n5.8 异或门和奇偶校验电路\r\n5.8.1 异或门和异或非门\r\n5.8.2 奇偶校验电路\r\n5.8.3位奇偶校验发生器74x280\r\n5.8.4 奇偶校验的应用\r\n5.8.5 用ABEL和PLD实现异或门和奇偶校验电路\r\n5.8.6 用VHDL实现异或门和奇偶校验电路\r\n5.9 比较器\r\n5.9.1 比较器结构\r\n5.9.2 迭代电路\r\n5.9.3 迭代比较器电路\r\n5.9.4 标准MSI比较器\r\n5.9.5 用ABEL和PLD实现比较器\r\n5.9.6 用VHDL实现比较器\r\n*5.10 加法器、减法器和ALU\r\n*5.10.1 半加器和全加器\r\n*5.10.2 串行进位加法器\r\n*5.10.3 减法器\r\n*5.10.4 先行进位加法器\r\n*5.10.5 MSI加法器\r\n*5.10.6 MSI算术逻辑单元\r\n*5.10.7 组间先行进位\r\n*5.10.8 用ABEL和PLD实现加法器\r\n*5.10.9 用VHDL实现加法器\r\n*5.11 组合乘法器\r\n*5.11.1 组合乘法器的结构\r\n*5.11.2 用ABEL和PLD实现乘法\r\n*5.11.3 用VHDL实现乘法\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第6章 组合电路设计实例\r\n\r\n6.1 构件式设计举例\r\n6.1.1 桶式移位器\r\n6.1.2 简单浮点编码器\r\n6.1.3 双优先级编码器\r\n6.1.4 级联比较器\r\n6.1.5 关模比较器\r\n6.2 使用ABEL和PLD的设计举例\r\n6.2.1 桶式移位器\r\n6.2.2 简单浮点编码器\r\n6.2.3 双优先级编码器\r\n6.2.4 级联比较器\r\n6.2.5 关模比较器\r\n6.2.6 “1”计数器\r\n6.2.7 三子棋游戏\r\n6.3 使用VHDL的设计举例\r\n6.3.1 桶式移位器\r\n6.3.2 简单浮点编码器\r\n6.3.3 双优先级编码器\r\n6.3.4 级联比较器\r\n6.3.5 关模比较器\r\n6.3.6 “1”计数器\r\n6.3.7 三子棋游戏\r\n练习题\r\n\r\n第7章 时序逻辑设计原理\r\n\r\n7.1 双稳态元件\r\n7.1.1 数字分析\r\n7.1.2 模拟分析\r\n7.1.3 亚稳态特性\r\n7.2 锁存器与触发器\r\n7.2.1 S-R锁存器\r\n7.2.2 S- -R- 锁存器\r\n7.2.3 具有使能端的S-R锁存器\r\n7.2.4 D锁存器\r\n7.2.5 边沿触发式D触发器\r\n7.2.6 具有使能端的边沿触发式D触发器\r\n7.2.7 扫描触发器\r\n*7.2.8 主从式S-R触发器\r\n*7.2.9 主从式J-K触发器\r\n7.2.10 边沿触发式J-K- 触发器\r\n7.2.11 T触发器\r\n7.3 时钟同步状态机分析\r\n7.3.1 状态机的结构\r\n7.3.2 输出逻辑\r\n7.3.3 特征方程\r\n7.3.4 使用D触发器的状态机分析\r\n*7.3.5 使用J-K触发器的状态机分析\r\n7.4 时钟同步状态机设计\r\n7.4.1 状态表设计举例\r\n7.4.2 状态最小化\r\n7.4.3 状态赋值\r\n7.4.4 采用D触发器的综合\r\n*7.4.5 采用J-K触发器的综合\r\n7.4.6 采用D触发器的其他设计例子\r\n7.5 用状态图设计状态机\r\n*7.6 用转移表综合状态机\r\n*7.6.1 转移方程\r\n*7.6.2 激励方程\r\n*7.6.3 其他方法\r\n*7.6.4 状态机的实现\r\n*7.7 其他状态机设计举例\r\n*7.7.1 猜谜游戏\r\n*7.7.2 未用状态\r\n*7.7.3 输出编码状态赋值\r\n*7.7.4 “无关”状态编码\r\n*7.8 状态机的分解\r\n*7.9 反馈时序电路\r\n*7.9.1 分析\r\n*7.9.2 分析具有多个反馈回路的电路\r\n*7.9.3 竞争\r\n*7.9.4 状态表与流程表\r\n*7.9.5 CMOS D触发器分析\r\n*7.10 反馈时序电路设计\r\n*7.10.1 锁存器\r\n*7.10.2 设计基本模式流程表\r\n*7.10.3 流程表的最小化\r\n*7.10.4 无竞争状态赋值法\r\n*7.10.5 激励方程\r\n*7.10.6 本质冒险\r\n*7.10.7 小结\r\n7.11 ABEL时序电路设计特性\r\n7.11.1 寄存型输出\r\n7.11.2 状态图\r\n*7.11.3 外部状态记忆\r\n*7.11.4 指定Moore型输出\r\n*7.11.5 用WITH语句指定Mealy型输出和流水线输出\r\n7.11.6 测试向量\r\n7.12 VHDL时序电路设计特性\r\n7.12.1 反馈时序电路\r\n7.12.2 时钟电路\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第8章 时序逻辑设计实践\r\n\r\n8.1 时序电路文档标准\r\n8.1.1 一般要求\r\n8.1.2 逻辑符号\r\n8.1.3 状态机描述\r\n8.1.4 定时图及其规范\r\n8.2 锁存器和触发器\r\n8.2.1 SSI型锁存器和触发器\r\n*8.2.2 开关消抖\r\n*8.2.3 最简单的开关消抖电路\r\n*8.2.4 总线保持电路\r\n8.2.5 多位寄存器和锁存器\r\n8.2.6 用ABEL和PLD实现寄存器和锁存器\r\n8.2.7 用VHDL实现寄存器和锁存器\r\n8.3 时序型PLD\r\n8.3.1 双极型时序PLD\r\n8.3.2 时序型GAL器件\r\n8.3.3 PLD的定时规范\r\n8.4 计数器\r\n8.4.1 行波计数器\r\n8.4.2 同步计数器\r\n8.4.3 MSI型计数器及应用\r\n8.4.4 二进制计数器状态的译码\r\n8.4.5 用ABEL和PLD实现计数器\r\n8.4.6 用VHDL实现计数器\r\n8.5 移位寄存器\r\n8.5.1 移位寄存器结构\r\n8.5.2 MSI移位寄存器\r\n8.5.3 世界上最大型移位寄存器的应用\r\n8.5.4 串/并转换\r\n8.5.5 移位寄存器计数器\r\n8.5.6 环形计数器\r\n*8.5.7 Johnson计数器\r\n*8.5.8 线性反馈移位寄存器计数器\r\n8.5.9 用ABEL和PLD实现移位寄存器\r\n8.5.10 用VHDL实现移位寄存器\r\n*8.6 迭代与时序电路\r\n8.7 同步设计方法\r\n8.7.1 同步系统结构\r\n8.7.2 同步系统设计举例\r\n8.8 同步设计中的障碍\r\n8.8.1 时钟偏移\r\n8.8.2 选通时钟\r\n8.8.3 异步输入\r\n8.9 同步器故障和亚稳定性\r\n8.9.1 同步器故障\r\n8.9.2 亚稳定性分辨时间\r\n8.9.3 可靠同步器设计\r\n8.9.4 亚稳定的定时分析\r\n8.9.5 较好的同步器\r\n8.9.6 其他同步器设计\r\n8.9.7 抗亚稳定的触发器\r\n8.9.8 同步高速数据传输\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第9章 时序电路设计实例\r\n\r\n9.1 使用ABEL和PLD的设计实例\r\n9.1.1 基于PLD的状态机定时及封装考虑\r\n9.1.2 几个简单的状态机\r\n9.1.3 雷鸟车尾灯\r\n9.1.4 猜谜游戏\r\n9.1.5 改造交通灯控制器\r\n9.2 使用VHDL的设计实例\r\n9.2.1 几个简单的状态机\r\n9.2.2 雷鸟车尾灯\r\n9.2.3 猜谜游戏\r\n9.2.4 改造交通灯控制器\r\n练习题\r\n\r\n第10章 存储器、CPLD和FPGA\r\n\r\n10.1 只读存储器\r\n10.1.1 ROM用于“随机”组合逻辑函数\r\n*10.1.2 ROM的内部结构\r\n*10.1.3 二维译码\r\n10.1.4 商用ROM的类型\r\n10.1.5 ROM的控制输入和定时\r\n10.1.6 ROM的应用\r\n10.2 读/写存储器\r\n10.3 静态RAM\r\n10.3.1 静态RAM的输入和输出\r\n10.3.2 静态RAM的内部结构\r\n10.3.3 静态RAM的定时\r\n10.3.4 标准静态RAM\r\n10.3.5 同步SRAM\r\n10.4 动态RAM\r\n10.4.1 动态RAM的结构\r\n10.4.2 动态RAM的定时\r\n10.4.3 同步DRAM\r\n10.5 复杂可编程逻辑器件\r\n10.5.1 Xilinx XC9500 CPLD序列\r\n10.5.2 功能块体系结构\r\n10.5.3 输入/输出块体系结构\r\n10.5.4 开关矩阵\r\n10.6 现场可编程门阵列\r\n10.6.1 Xilinx XC4000 FPGA系列\r\n10.6.2 可配置逻辑块\r\n10.6.3 输入/输出块\r\n10.6.4 可编程内部连线\r\n参考资料\r\n训练题\r\n练习题\r\n\r\n第11章 实践中的附加课题\r\n\r\n11.1 计算机辅助设计工具\r\n11.1.1 硬件描述语言\r\n11.1.2 原理图捕捉\r\n11.1.3 定时图及其规范\r\n11.1.4 电路分析与模拟\r\n11.1.5 印制电路板布局\r\n11.2 可测试性设计\r\n11.2.1 测试\r\n11.2.2 引脚上和电路内的测试\r\n11.2.3 扫描方法\r\n11.3 数字系统可靠性评估\r\n11.3.1 故障率\r\n11.3.2 可靠性与MTBF\r\n11.3.3 系统可靠性\r\n11.4 传输线、反射与终接\r\n11.4.1 基本传输线理论\r\n11.4.2 逻辑信号互连作为传输线\r\n11.4.3 逻辑信号的终接\r\n参考资料
本书写给所有需要设计和构建真正的数字电路的读者。为达到这个目的,读者必须掌握基本原理,同时还必须理解它们在真实世界中如何工作。本书正是建立在这种观念基础上而写作的,因此确定了“原理与实践”这个主题。
本书适合于作为电气工程、计算机工程或计算机科学课程中数字逻辑设计方面的入门教材。对于那些不熟悉基本电子学概念或者对数字器件的电气特性不感兴趣的计算机科学专业的学生,可以跳过第3章;书中的其他部分尽可能写得独立于这部分内容。另一方面,任何具有基本电子学基础的读者,则可通过阅读第3章的内容来加快掌握数字电子学知识。此外,对于那些不具备电子学基础的学生,也可以阅读Bruce M.Fleischer的《Electrical Circuits Review》来打基础。在这本书的网站http://www.ddpp.com/上,你可以免费下载到20页的电子学指南。
虽然本书的水平是入门性的,但比起一般普通的入门教材,它却包含更多的内容。一旦写作起来,我才发现有许多重要的东西要写进去,而这些东西又是不适于斯坦福大学的一季度课程或400页课本中的。因此,凭我个人的实践经验,就把我认为比较重要的所有东西都包括进去,由教师或读者自己去决定哪些是最需要的和最重要的。但也为了有助于判断,我已经在一些可选节的标题上打了星号。在一般情况下,可以跳过这些节而不失与后续的非可选节之间的连贯性。
毫无疑问,有些人把本书当做高级教程和实验课本来使用。高能力的学生可以跳过基础部分而直接进入到你喜欢的那部分去学习。本书中最重要的和最精彩的部分,就是讲述硬件描述语言ABEL和VHDL。你会发现,这些内容对提高你设计硬件的编程能力大有裨益。
另外,本书也可用做从事数字设计人员的自学参考书。这一部分读者可分为两类:
·新手--刚刚开始从事数字设计,并且在学校里学过很“理论的”逻辑设计课程。这类读者应该集中学习第3、5、6和8~11章,为接触实际课题打基础,做准备。
·老手--有经验的数字设计人员。这类读者对本书中的“实践”材料可能并不需要,但是第2、4、7章的原理部分却有益于组织思维,第6、8、9章中的举例应该会让这部分读者洞察和欣赏到各种各样的设计方法。最后,整个从第4~9章中安排的ABEL和VHDL语言描述和举例,都可以看做是专门为这部分读者学习基于HDL设计方法而组织的。
各章说明
下面对本书11章的内容做一简短的说明。这可能会让你想起一些软件指南中的片断-“写给不喜欢阅读手册的人们”。看过这些简要的说明之后,也许你就不必阅读本书的某些内容了。
·第1章给出一些基本定义、基础知识和内容安排上的打算。这章不是本书的重点。
·第2章介绍二进制数制和编码。对于已经从软件课程中熟悉了二进制数制的那些读者,还得再阅读2.10~2.13节,以便懂得硬件是如何使用二进制编码的。高能力的学生可阅读2.14节和2.15节,这里对差错检测编码做了很好的介绍。每个读者都应该阅读2.16.1节的内容,因为在第8章的一些设计举例中要用到它。
·第3章描述数字电路操作使用到的各种逻辑器件,主要强调它们的外部电气特性。本章要求的起步知识是电子学基础,包括电压、电流和欧姆定律等知识。不熟悉这些概念的读者,可以参考前面提到的《Electrical Circuits Review》。对于那些对实际电路如何工作不感兴趣或者自己不屑于干这种工作的读者,则可以忽略这一章。
·第4章讲述组合逻辑电路原理,包括开关代数和组合电路分析、综合与最小化。本章最后介绍ABEL和VHDL。
·第5章开头先讨论数字系统文档标准,对于那些有志于设计的热心读者,可能这是他开始实践的最重要的实践性内容。然后,该章介绍可编程逻辑器件(PLD),重点是它们实现组合逻辑函数的能力。该章剩下的部分叙述常用的组合逻辑函数和应用。对于每一个函数,都介绍标准的MSI构件、用PLD实现的ABEL程序以及VHDL模型。
·第6章汇集了一些较大型的组合电路设计例子。对每个例子,都表示出如何使用MSI构件(如果合适的话)、ABEL和PLD来完成设计,或者使用针对CPLD或FPGA的VHDL来进行设计。
·第7章讲述时序逻辑设计原理,开头先讲锁存器和触发器。该章的重点是时钟同步状态机的分析与设计。但是,本章也大胆地对基本模式电路和反馈时序电路的分析与设计做了介绍。在本章的结尾,为满足时序电路设计的需要,安排了几节来介绍ABEL和VHDL的要点。
·第8章整章都讲述时序电路的设计实践。如同前面的第5章,本章重点放在常用的函数方面,并给出应用MSI构件、ABEL、PLD和VHDL的设计例子。8.8节、8.9节讨论在进行完全同步设计中不可避免的障碍,并阐述在异步环境中如何使时序同步的重要问题。
·第9章汇集了一些状态机和较大的时序电路设计例子。每个例子都是采用针对PLD的ABEL编程和针对CPLD或FPGA的VHDL编程这两种设计方法来完成的。
·第10章介绍存储器件、CPLD和FPGA。存储器部分包括了只读存储器、静态和动态读/写存储器,而且是从内部电路和功能特性的观点进行介绍的。最后两节介绍CPLD和FPGA的体系结构。
·第11章讨论几个数字设计者感兴趣的现实课题。在我写作之初,只是想写成一本300页的书,而把这一章列进大纲时,却要把“核心”材料拉得特别长。显然,本书就是没有这一章都已经够厚的了,但是这个材料还是很有用的。
大多数章末都含有参考资料、训练题和练习题。训练题都是些简短回答或启发联想性的问题,根据课文中的材料就能够直接回答出来;而练习题则可能要求多做一点思考。第3章的训练题涉及的面特别广泛,是为使非电子、电气类读者容易学习本教材而安排的。
www.ddpp.com网站
本书的支持材料可以从本书的专用网站www.ddpp.com获得。对学生的一个关键资源,就是列出了本书中所有例题的C、ABEL和VHDL程序源代码集。从该网站也可得到经压缩的 Foundation工程目录,它不仅包括ABEL和VHDL源文件,还有一些用来构建和模拟设计例子的原理图。
在准备这个版本期间,令人欣慰地看到,可以从网站上获得非常多的参考资料,特别是来自器件制造商的资料。这个DDPP网站设有一个"living"参考栏目,安排了很多有用的网站链接,以供你跳出到其他相关的学习空间去。
从这个网站上也可获得前一个版本的两个附录-由Bruce M. Fleischer编写的《Electrical Circuits Review》,以及《IEEE Standard Symbols》。上实验课的学生也可能很喜欢那个4页便携式集成电路引脚手册,在前一个版本的内封页上可以得到它。
有一个学生可能喜欢也可能不喜欢的东西,就是新的练习题,我期望通过继续在斯坦福大学讲授数字设计课程,以及来自其他人的投稿,能够把它完成。
敬告教师
在DDPP网站上有一些专供给任课教师用的辅助材料,但这部分内容受到口令字的保护。如果你打算要用到它,请等待至多一个星期,即可通过它提供的步骤来获得一个登录名和口令字。
在这个专为教师设置的栏目区,包含了本书中的所有图片和表格文件,你可以利用这些文件去直接制作演示投影片,或者选择合适的材料嵌入到你自己设计的其他演示材料中。
这个网站上也含有习题选集的解答(占书中习题的半数以上,相当于200以上打印页)。也含有几个试题样卷及其解答。
对教师来说还有另一个重要资源,就是Xilinx?University Program ( www.xilinx.com/programs/univ) 网站。这个网站提供大量的产品资料、课程资料,以及用于数字设计实验课程的芯片和插件的折扣价格。
致谢
由于许多人的帮助才使得本书的出版成为可能。大多数人都是在第1、2版的时候给予了帮助,在那里我已经表示了致谢。第3版的准备过程是比较孤单地进行的一项任务,但也得到了在Cisco System工作的同事Mario Mazzola和Prem Jain的帮助,使得我的工作更加顺利。他们以及他们公司帮助我削减了在Cisco承担的任务,把本来要8个月的本书准备时间缩短了不到4个月。
在本书“原理”部分的概念方面,我还是要特别感谢我的老师、研究导师和朋友Ed McCluskey。在本书“实践”方面,我个人发起了“数字设计师名人斋”包括(按加入的年月日顺序为序):Ed Davidson、Jim McClure、Courtenay Heater、Sam Wood、Curt Widdoes、Prem Jain、Ted Tracy、Dave Raaum、Akhil Duggal、Des Young和Tom Edsall。
20世纪70年代早期,在斯坦福的时候我就萌发了写这本书的念头,斯坦福大学的Harold Stone帮我在许多方面做了安排。他叫我查阅和检索他的书籍,也正是他的计算机书籍使我产生了编写第一部软件书籍的灵感。在此,我要向Harold谨致以迟到的谢意,并且对他帮助我充实这个版本而表示特别的感谢。
在1997年夏天计划这个版本之初,我的朋友与同事Jean-Pierre Steger从瑞士Bern附近的Burgdorf工程学校赶来休假,帮助我速成掌握VHDL、Xilinx Foundation工具以及其他课题。还有其他许多人为我这个版本评阅并提供一些材料,他们是John Birkner、Rebecca Farley、Don Gaubatz、John Gill、Linley Gwennap、Jesse Jenkins和Jeff Purnell等。
承蒙Xilinx公司特惠提供了Foundation工具,成为本版书的重要附加材料。在人员方面,该公司原大学计划部主任Jason Feinsmith给了我很大的帮助,现任主任Patrick Kane也热情地支持我的工作。
自从本书第2版书出版以来,我从读者那里收到了很多有益的意见,除了提出许多建议和促使改进的意见外,一些读者还指出了许多印刷上和技术上的错误。在这个第3版书中,这些错误都一并做了改正。
我还要十分感谢Prentice Hall的本书责任编辑Tom Robbins,他对本书的出版付出了极大的耐心。他是被引诱到Prentice Hall出版社来的第2个编辑,部分的原因是(假借)与我合作搞项目的前景所吸引,并觉相见恨晚。至于Tom,我是在20世纪80年代初认识他的,那时我与另一个出版商有项目,是他首先想跟我签约,而我也正想以后跟他合作。终于,我们开始了我们之间二十年来的朋友关系。Tom的贡献何止耐心。
我还要感谢产品编辑Irwin Zucker,承蒙他在我与出版社之间进行了很顺利的沟通,并且在项目的最后整理阶段花了很长的时间来帮助我。要是没有他的帮助,我就不可能参加计划好在本书出版后进行一次3个星期的家庭长假(家人对我说如果我的工作不能按时完成,只好由我们家那条90磅重的狗乘我的座位去休假了!)。
特别感谢画家Robert McFadden,他画的那带有幻觉的封面画,连同其他几幅超前作品,都一直挂在我的家里。他的画是在一年前应我的委托而绘制的,实际上当时的动机是要把这画放在书的里面。
我忘不了还要感谢我的妻子Kate,她一直在忍受着我熬夜、挫折、牢骚和全神贯注,以及在我投入写作时响起那些烦人的电话铃声。我们希望您就像享受成功之时的愉悦那样,来享受本书开始之时的心情吧!
John F. Wakerly
于加利福尼亚州,Mountain View