前言
本书旨在为读者提供逻辑设计、数字系统设计与计算机设计的基础框架。第5版的推出标志着教材内容的持续演进——从1997年第一作者对前作的改编开始,本书始终保持以硬件设计为核心,逻辑设计与计算机设计原理相结合的独特体系。多年来,本书通过新增硬件描述语言等内容,删减或弱化重要性下降的章节,以及修订现有内容以同步计算机技术与CAD工具的变革等方式紧跟行业发展趋势。
本版变化
第5版图书的修订体现了技术与设计实践的重大变革,这些变革要求计算机系统设计人员在更高抽象层次开展工作,并管理更复杂的系统规模。当前逻辑设计、数字系统设计与计算机设计的抽象层级,已显著超越传统教学所覆盖的范畴。本次更新的核心目标在于: 更有效地弥合计算机设计领域(特别是逻辑层级)的现有教学体系与工程实践之间的鸿沟。在保持图书架构灵活性的前提下,特别强调: 支持教师根据授课需求调整技术内容的深度与广度,同时满足电子与电气工程/计算机科学与技术两类受众的教学需求。该版本的基本修订包括如下内容。
第1章的更新包括讨论计算系统抽象层次及其在数字设计中的作用,以及对数字设计流程进行概述。第1章还新增了关于国际化字母数字编码的内容。
本书从第2章开始引入硬件描述语言(HDL),较之前版本更早。在组合逻辑和时序逻辑设计的章节中,HDL电路描述与逻辑原理图和状态图并列呈现,以体现HDL在当代数字系统设计实践中的日益增长的重要性。关于传输延迟的内容(这是数字系统中的一阶设计约束)已移至第2章。
第3章将第4版图书第3章的功能模块内容与第4版图书第4章的算术内容合并,呈现了一组常见的组合逻辑功能模块。全章贯穿功能模块的HDL模型介绍。第3章引入了层次化设计的概念。
时序电路出现在第4章,该章既包括第4版图书第5章的设计流程描述,也包括第4版图书第6章关于时序电路定时、输入同步和亚稳定性的内容。JK和T触发器的描述已从书中移除。
第5章介绍了与数字硬件实现相关的主题,包括互补金属氧化物半导体(CMOS)电路和可编程逻辑的设计。除了保留第4版第6章的大部分内容外,第5章还新增了关于测试和验证对设计成本影响的简要讨论。由于使用本书的许多课程包含基于现场可编程门阵列(FPGA)的实验练习,所以FPGA的描述有所扩展,采用了一个简单的通用FPGA架构来解释许多商用FPGA系列中常见的基本可编程元件。
其余涉及计算机设计的章节也已更新,显著的变化包括将第4版图书第2章中关于高阻抗缓冲器的内容移至第6章的总线传输部分,并在第9章中增加了关于如何使用过程调用与返回指令来实现高级语言函数调用的讨论。
本书提供数字设计与计算机设计的整合内容,重点强调现代设计所依赖的基础理论。本书通过以下方式强化学习效果: 清晰的概念解析; 渐进式的案例开发(从简单组合逻辑应用逐步过渡到基于RISC核心构建的CISC架构)。内容特色包含: 传统知识体系的完整覆盖; 计算机辅助设计方法详解; 问题建模与验证技术; 系统化解决问题能力的培养。在(课程/教学)内容安排上提供灵活选择空间,可自主涵盖以下专题: 逻辑设计、数字系统设计、计算机体系结构设计,同时支持硬件描述语言的弹性教学方案(有三种选项,即不涉及HDL、VHDL和Verilog语言)。
本书各章结构安排如下: 第1~4章讲述逻辑设计,第5~7章探讨数字系统设计,第8~12章聚焦计算机设计。此编排具有双重优势: 夯实数字系统设计的基础知识体系,采用自底向上的方式渐进构建理论基础,为后续章节开展自顶向下的计算机设计提供支撑。各章主题概要如下。
前言
前言
逻辑设计
第1章数字系统与信息介绍了数字计算机、计算机系统设计的抽象层次、嵌入式系统及信息表示(包括数制、算术运算和编码等内容)。
第2章组合逻辑电路讨论了门电路及其类型,此外还介绍了设计和成本优化的基本思想。涉及的概念包括布尔代数、代数优化和卡诺图优化、传播延迟,以及使用VHDL和Verilog的结构化和数据流模型的门级硬件描述语言模型。
第3章组合逻辑设计首先概述了现代逻辑设计流程,然后详细介绍了组合逻辑设计实例的各个设计步骤,包括问题描述、逻辑优化、与非门/或非门技术映射及验证。此外,本章还涵盖了组合设计的功能模块,包括使能与输入确定、解码与编码、代码转换、选择与分配、加法与减法、递增与递减、填充与扩展、移位操作及其具体实现。本章还包括许多逻辑功能模块的VHDL和Verilog模型。
第4章时序电路涵盖了时序电路的分析与设计。重点介绍了锁存器和边沿触发器(以D触发器为主),着重阐述了状态图和状态表的构建方法。本章完整展示了时序电路的设计流程,包括规范制定、问题描述、状态分配、触发器输入和输出方程的确定、优化、技术映射和验证。本章还介绍了一种图形化的状态机图模型,用于表示过于复杂而无法用传统状态图建模的时序电路,并通过两个实际案例进行了说明。本章包括触发器和时序电路的VHDL和Verilog描述,介绍了过程化行为级VHDL和Verilog语言结构及用于验证的测试平台。本章讨论了时序电路的延迟和定时特性,并介绍了异步输入的同步化和亚稳态问题。
数字系统设计
第5章数字硬件实现主要介绍了底层技术的各个方面,包括MOS晶体管、CMOS电路及可编程实现技术。可编程逻辑部分涵盖了只读存储器(ROM)、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)和现场可编程门阵列(FPGA)。本章通过一个简单的FPGA架构示例,展示了在更复杂的商用FPGA硬件中出现的许多可编程元件。
第6章寄存器与寄存器传输讨论了寄存器及其应用。移位寄存器和计数器的设计基于第3章和第4章介绍的触发器功能及其实现。其中,仅行波计数器是作为一个全新的概念引入的。寄存器传输同时考虑了并行和串行设计,并讨论了时间与空间的权衡。本章重点介绍了能够执行多种操作的多功能寄存器的寄存器单元设计。此外,本章还介绍了使用寄存器传输语句和状态机图进行数据通路和控制单元集成设计的过程,并通过两个实际案例进行了说明,同时介绍了部分寄存器类型的VHDL和Verilog描述。
第7章存储器介绍了静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM),以及基本的存储器系统。此外,本章还简要描述了各种不同类型的DRAM。
计算机设计
第8章计算机设计涵盖了寄存器文件、功能单元、数据通路及两种简单的计算机(单周期计算机和多周期计算机)。重点在于数据通路和控制单元的设计概念,这些概念用于在单周期和多周期设计中实现特定的指令和指令集。
第9章指令集架构介绍了指令集架构的多个方面。本章涉及地址计数、寻址模式、架构类型及指令类型,并介绍了浮点数表示和运算。此外,还介绍了包括过程调用和中断在内的程序控制架构。
第10章RISC与CISC中央处理器涵盖了高性能处理器的概念,包括流水线式RISC处理器和CISC处理器。该CISC处理器通过对RISC处理器的改进增加微码硬件,实现在RISC流水线上执行CISC指令集,这是现代CISC处理器采用的方案。此外,本章还描述了高级CPU的概念和架构,包括两个多CPU微处理器的实例。
第11章输入/输出与通信主要讨论了CPU与存储器之间的数据传输、输入/输出接口及外围设备。内容包括对键盘、液晶显示(LCD)屏和硬盘等外围设备的讨论,并以键盘接口为例进行了图示说明。其他技术主题包括串行通信[含通用串行总线(USB)]和中断系统的实现机制。
第12章存储器系统重点介绍了存储器层次结构。通过分析高速缓存、主存和主存、硬盘之间的关系,引入并阐释了局部性原理的概念。此外,还系统性地概述了高速缓存设计参数。在内存管理方面,着重论述了支持虚拟内存的分页机制和转译后备缓冲器(TLB)的工作原理。
数字资源
除了正文内容外,外方出版社还提供了以下数字资源(扫描右侧二维码获取访问方式):
(1) 阅读补充材料,包括从前几版图书中删除的内容;
(2) 所有示例的VHDL和Verilog源文件;
(3) 用于FPGA设计和HDL仿真的计算机辅助设计工具的链接;
(4) 书中复杂图表和表格的投影原件。
本书作者感谢为第4版图书提供意见的教师们,他们的影响在本版图书中仍然可见,特别是范德比尔特大学的Bharat Bhuva教授、圣何塞州立大学的Donald Hung教授,以及威斯康星大学麦迪逊分校电气与计算机工程系的Katherine Compton、Mikko Lipasti、Kewal Saluja、Leon Shohet教授和Michael Morrow副研究员。我们感谢教师和学生对第4版图书提出的更正,特别是多特学院的Douglas De Boer教授。在准备第5版的过程中,我收到了来自弗吉尼亚理工大学的Patrick Schaumont和Cameron Patterson,以及瑞典皇家理工学院(KTH)的Mark Smith对第4版的宝贵反馈。我还受益于与弗吉尼亚理工大学的Kristie Cooper和Jason Thweatt关于在我们系更新的计算机工程导论课程中使用第4版的多次讨论。我还要感谢Pearson团队为本书所做的辛勤工作,特别是Andrew Gilfillan选择我作为新的第三作者,并帮助规划新版; Julie Bai在Andrew调任其他职位后熟练处理了过渡工作,并为手稿提供了指导、支持和宝贵反馈; Pavithra Jayapaul在文本制作中的帮助以及对我延迟的耐心(尤其是在撰写本前言时); 以及Scott Disanno和Shylaja Gattupalli在文本制作中的细心指导。特别感谢Morris Mano和Charles Kime撰写本书的前几版,能够被选为他们的继任者,我感到无比荣幸。最后,我要感谢Karen、Guthrie和Eli在我写作期间的耐心支持。
Tom Martin
弗吉尼亚州布莱克斯堡
