本书是数字逻辑设计的入门教材,它是大多数电气与计算机工程学科的基础课程。对于数字逻辑电路的成功设计人员,不仅需要理解基本概念,还要能够熟练应用计算机辅助设计(Computer-Aided Design,CAD)工具。本书兼顾了基本概念与CAD工具应用实践这两个方面的必备知识。随书附赠光盘还附带了必需的CAD软件,方便读者学习使用。 本书的主要目标是:(1)通过介绍传统的人工数字设计方法,给学生讲解数字逻辑的基本概念;(2)使用CAD工具,清晰地说明现代数字电路的设计方法。尽管除了极少数的场合之外,现代设计人员不再使用人工方法,本书仍然介绍了这些设计方法,其目的是便于读者直观理解数字电路的工作原理。此外,人工设计方法还揭示了CAD工具执行的操作的类型,便于读者正确评估设计自动化的优势。本书兼顾了人工设计方法和基于现代CAD工具的设计方法,使用简单电路的设计示例说明基本概念。在建立了基本概念之后,本书将提供更多复杂一些的示例,并使用CAD工具进行求解。因此,本书的重点在于现代数字设计的实现方法。 技术支持与CAD工具 本书介绍了现代数字电路的实现技术,其重点在于可编程逻辑器件(Programmable Logic Device,PLD),这正是最适于教学的技术内容,其原因在于:首先,PLD在工程实践中应用广泛,几乎适用于所有类型的数字电路设计—— 事实上,工程专业的学生在其后续职业生涯的特定阶段,最有可能接触到的就是基于PLD的设计;其次,最终用户编程需要采用PLD的方式实现电路,此时如果具备配套的实验室环境,学生就有机会在实际芯片上实现本书的设计示例。此外,读者还可以在计算机上仿真他们设计的电路的行为。本书将两种最常用的PLD作为设计目标:复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)。 与本书配套的CAD工具基于Altera公司的Quartus II软件。Quartus II提供了Altera系列的CPLD和FPGA设计的自动映射,而Altera系列的CPLD和FPGA正是该行业中应用最广泛的PLD之一。对于本书,读者需要特别关注的Quartus II的功能包括: ● Quartus II是商业产品。随书光盘提供的版本支持该产品的所有主要功能。学生能够很容易地入门学习CAD系统设计,对设计进行编译并下载到选定的器件(器件的选择可以根据需要进行更改,并重新定位到不同的器件);仿真最终电路的功能及详细时序;如果学校实验室提供了相应设备,学生就可以在实际器件上实现对应的设计。 ● 它说明基于硬件描述语言(Hardware Description Language,HDL)和原理图的入门设计方法。本书强调基于HDL的设计,这是因为HDL是实践中最有效的设计方法。本书将详细说明IEEE标准的VHDL语言,并在例题中广泛使用它。本书给出的CAD系统具有VHDL编译器,使得学生可以根据VHDL代码自动创建电路,并在实际芯片上实现这些电路。 ● 对于不同类型的器件,它可以实现电路设计的自动定位。也就是说,对于某个设计人员的电路,目标器件的体系结构会影响电路的实现方式,Quartus II可以自动实现器件定位。 ● 它可以在大多数通用机型的计算机上使用。随书光盘提供的Quartus II版本支持Microsoft Windows操作系统的计算机。此外,按照Altera大学计划,该软件还可用于其他计算机,如SUN工作站、HP工作站等。 本书附带一张Quartus II光盘,该光盘与本书完全配套,这就使得学生可以直接尝试所有设计示例。为了方便学生学习如何使用该软件,附录B~D给出了3个循序渐进的入门教程。 本书结构 第1章概要介绍数字系统的设计流程。本章讨论了设计流程中的关键步骤,说明了如何将CAD工具应用于电路设计任务的自动实现,还介绍了二进制数。 第2章介绍逻辑电路的基本知识。本章说明了使用布尔代数表示逻辑电路的方法,并向读者初步介绍了VHDL语言,还给出了一个硬件描述语言的示例。后续章节使用VHDL详细说明逻辑电路。 第3章介绍电子学方面的知识,是数字电路的基础。本章阐述了如何使用晶体管构建基本的门电路,说明了影响电路性能的若干重要因素。本章重点关注目前最新的工艺技术,特别是CMOS技术和可编程逻辑器件。 第4章介绍组合电路的综合。本章涵盖了综合过程的所有方面,从初始设计开始,到生成理想的最终电路所需要的优化步骤,并阐述了如何使用CAD工具完成设计。 第5章重点关注执行算术运算的电路。本章首先介绍了数字系统中数字的表示方法,然后说明逻辑电路处理此类数字的原理。本章还介绍了使用VHDL指定期望功能的方法,以及如何使用CAD工具开发所需的电路。 第6章介绍用作构建模块的组合逻辑电路,它包括编码器、译码器、多路复用器等。这些电路可以很方便地用于说明VHDL结构的应用,读者可以通过上述实例学习VHDL更高级的功能。 第7章介绍存储元件。本章讨论了如何使用触发器实现常规结构的移位寄存器、计数器等存储元件,其中包含了使用VHDL设计上述结构的方法。本章还说明了设计大型系统(如简单的处理器)的方法。 第8章详细说明同步时序电路(即有限状态机)。本章解释了此类电路的行为,并使用人工设计方法和自动设计方法,开发实用的设计技术。 第9章讨论异步时序电路。本章的讨论并不是很详尽,不过读者还是可以通过阅读了解此类电路的主要特征。尽管异步电路在实践中的应用并不广泛,但是通常还是应该学习异步电路,因为这样有利于读者更深入地理解数字电路的运作原理。本章说明了传播时延与竞争条件的后果,而这些可能是电路结构中固有的特性。 第10章探讨大量在设计实际系统时会遇到的大量实际问题。本章重点介绍了实际设计中经常遇到的问题,并给出了对应的解决方案。在数字系统的设计过程中,采用大规模电路的示例,说明了分级解决方案,并给出了这些电路完整的VHDL代码。 第11章介绍电路测试方面的知识。逻辑电路设计人员必须知道电路测试的必要性,而且至少应该熟悉最基本的测试常识。 第12章通过介绍数字电路的设计、运行、测试等各个阶段,说明了设计人员所需要经历的完整的CAD流程。 附录A(见光盘)全面说明了VHDL的功能。尽管VHDL的用法贯穿本书,但是该附录为读者编写VHDL代码时提供了便利的参考。 附录B~D(见光盘)包含关于Quartus II CAD工具一系列循序渐进的入门教程。这部分内容适用于读者自学,并为学生逐步展示了使用随书光盘中CAD软件的方法。 附录E(见光盘)给出本书设计示例中相应器件的详细信息。 课程教学安排 本书所有教学内容可以用一个学期的课时完成。只要用一个学期,或者甚至是半个学期,就可以学会本书大多数重要的内容—— 这是因为教师不需要在介绍VHDL语言和CAD工具方面花费过多的课时。为了达到上述目标,本书采用便于自学的模块化方式组织VHDL方面的内容。根据我们在多伦多大学向不同专业背景学生授课的经验,教师只需要把重点集中在说明时序电路上,使用3~4个课时就可以完成VHDL的讲解。本书中的VHDL示例在很大程度上通俗易懂,学生能够很容易理解其含义。由于附录B~D中的Quartus II教程适于自学,因此教师不需要讲解如何使用CAD工具。 本书还适用于不含VHDL详解的逻辑设计课程。需要说明的是,对于学生,掌握一些哪怕是入门级的VHDL知识,也是非常有益的—— 这对于立志成为设计工程师的读者是其今后工作的重要铺垫。 一个学期的课程安排 第1章的大多数内容是综述性的介绍,说明了逻辑电路的重要意义与价值,学生很容易地阅读和理解这些内容。 该课程的教学应该涵盖以下内容: ● 第1章—— 1.6节。 ● 第2章—— 所有内容。 ● 第3章—— 3.1~3.7节。如果学生具备电路的基本知识,那么进一步学习3.8节和3.9节也受益匪浅。 ● 第4章—— 4.1~4.7节和4.12节。 ● 第5章—— 5.1~5.5节。 ● 第6章—— 所有内容。 ● 第7章—— 所有内容。 ● 第8章—— 8.1~8.9节。 在时间足够充裕的前提下,进一步讲解9.1~9.3节、9.6节,以及第10章的两个示例也非常有用。 半个学期的课程安排 对于半个学期的课程教学,则应该涵盖以下内容: ● 第1章—— 1.6节。 ● 第2章—— 所有内容。 ● 第3章—— 3.1~3.3节。 ● 第4章—— 4.1~4.5节和4.12节。 ● 第5章—— 5.1~5.3节和5.5节。 ● 第6章—— 所有内容。 ● 第7章—— 7.1~7.10节和7.13节。 ● 第8章—— 8.1~8.5节。 更传统的教学方法 第2章与第4章的内容介绍了布尔代数、组合逻辑电路以及基本的电路化简方法。第2章使用基本的与门、或门、非门、与非门和或非门介绍逻辑电路;紧接第3章讨论了电路实现的技术细节,这部分内容位于第4章的综合技术的和其他类型的逻辑门前面——这是因为如果学生了解了与非门、或非门、异或门以及各种可编程逻辑器件实现的技术支持,那么将更容易理解第4章的内容。 倾向于传统教学方法的教师可以连续讲解第2章和第4章的内容。为了便于学生理解与非门、或非门、异或门的用法,教师有必要在讲解时先说明这些门电路的功能性定义。 VHDL 不少教师认为VHDL是一种很难让入门的学生理解的复杂语言。本书对这个问题给予了足够的重视,并尝试去解决它。完整地介绍VHDL语言是没有必要的,本书强调说明重要的VHDL结构,这对于逻辑电路的设计与综合相当重要。其中,对于许多其他语言结构(如专用于仿真目的的语言结构),本书一概而过。本书将根据每章介绍的主要内容,逐步介绍VHDL的知识;只有当涉及相关电路的设计应用时,才会说明VHDL的高级功能。 本书包含了超过150段VHDL代码的示例。这些示例说明了VHDL如何用于广泛描述逻辑电路的方方面面,其中,简单的示例可能只包含若干个逻辑门,而复杂的示例则可以表示整个数字系统(如简单的处理器)。 例题 每章都包含若干例题,给出了课后习题的典型求解方法。 课后习题 本书总共包含超过400道课后习题,并在附录F选择性地给出了部分习题的答案。 实验室 本书可用作不涉及实验室练习的课程,此时学生可以通过本书光盘附带的CAD工具,仿真自己设计电路的运作,从而获得有用的实践经验。另一方面,如果具备实验室条件,那么本书中的许多设计示例是适合于实验验证的。