序
数字系统用于执行数据处理和控制任务。为了有效地实现不同的设计目标,我们设计了不同的结构,这也就产生了这样或那样不同的系统。例如台式计算机和汽车发动机控制器,用途的不同导致它们之间具有相当大的特性差异。尽管存在这些差异,但它们实质上是基于许多相同的基本组成模块和概念而构建的。从众多技术和方法中选择合适的技术来开发适宜的系统结构,具备这样的能力,是数字系统设计的基础和关键。数字系统设计覆盖了许多领域。对于缺乏该领域设计经验的人来说,完全掌握数字系统中彼此相关的知识是一个很大的挑战。
本书的重点就是解释如何在现实生活中设计一个完整的数字系统。为了尽快达到这个目标,有些读者也许就想立即准备开始设计与实现工作,而忽略了那些看似独立但有时不容易发现的辅助知识。离开了足够的电路支撑,即使是最先进的计算机结构也不能正常工作。因此,本书注重的是一个完整的知识体系。
通过本书的学习,许多不同类型的人将会从中获益。这些读者包括:
期望进一步加强现代数字系统设计的电子工程师。这些人或者是离开设计行业多年,或者是长期没有工作在数字系统设计的前沿。他们经常会发现他们的设计技术已经过时了。这些人可以从本书学习到现代数字设计技术及设计实例。
期望从事数字电子职业的研究生和大学生。通过大学课程的学习,他们具备了坚实的电子和计算机科学的理论基础,但是往往缺乏如何将许多模块整合成一个完整系统的实际经验。学生也许在概念上知道计算机是如何工作的,但是自己却没有办法来设计这样一个实际系统。这时本书起到如何将理论变为现实产品的桥梁的作用。
期望深入了解数字系统设计的技术人员和爱好者。这些人对数字系统的概念和设计感兴趣,但是他们没有正式的电子工程学位。他们期望在这个领域内获得与资深工程师同样的实际经验,但他们的目标可能是实现实验技术支持、制造业或完成个人项目。
本书分为四篇。每一篇均讨论数字系统设计所必需的一系列关键课题。读者可以根据自己的知识水平和兴趣按顺序或有选择性地阅读本书。
本书的第一篇内容全面地介绍了数字逻辑和微处理器以及存储和通信结构的基础知识。更为高级的计算机体系结构和逻辑设计方面的内容主要在第二篇中介绍,其中包括先进的微处理器结构、逻辑设计方法学、高性能存储器、网络技术和可编程逻辑器件。第三篇内容将从纯数字电路扩展到一些关键的模拟电路。这些模拟电路正是各种数字系统的重要组成部分。这部分内容主要包括基本的直流(DC)和交流(AC)电路分析、二极管、三极管、运算放大器和数据转换技术。通过前三篇基本理论的学习,在第四篇我们重点讨论实际数字系统设计中的一些关键问题,包括时钟分配、电源管理、信号完整性、可测试设计以及电路制造技术等。在一般电子课程中是很少涉及到上述这些内容的具体细节的。
本书各篇章的具体描述如下。
第1篇数字基础
本书的第一篇主要讨论了数字逻辑和计算机结构的基本概念。逻辑是计算机的基础,计算机是数字系统的核心。本书首先介绍一些基本逻辑概念,包括逻辑门、集成电路、微处理器和计算机系统等。此外本书还介绍了一些存储和通信方面的概念,从而形成一个完整的系统框架。通过第一篇的学习,读者应该能够从多个角度了解计算机的工作,包括单个逻辑门、主要的结构模块以及软硬件接口等,同时也具备了从现有的多种芯片中识别和选择合适的芯片组成一个完整的工作系统的能力。由于一个系统设计不但要考虑高层次特性的折衷,而且还要考虑低层次电路实现的可能性,因此对于多层次知识的掌握是系统设计成功的关键。只考虑一个方面因素而忽略其他方面,往往会导致系统设计要么不切实际(太贵或太复杂),要么没有实际用处。
第1章,“数字逻辑”,主要介绍布尔逻辑、二进制运算和触发器等基本概念,同时还介绍了一些数字系统常用的基本术语和数值表示方式。通过本章的学习,我们所掌握的基本概念对于后续章节中出现的高层次概念的学习是有很大帮助的。
第2章,“集成电路和7400逻辑系列”,介绍集成电路(IC)的基本知识和常用的逻辑集成电路。本章是实际逻辑设计的基础。通过一些设计实例说明如何将不同的逻辑芯片组合成一个功能完整的系统。因此,对一些常用的逻辑集成电路规格的理解显得尤其重要。缺少它们,任何芯片都不能被理解和使用。本书的重点放在如何采用现有的逻辑器件实现系统设计,而不是局限于资料上抽象的逻辑表示。
第3章,“基本计算机结构”,介绍数字系统的核心——计算机和微处理器的基本工作原理。通过对指令集、存储器、地址译码、总线接口、DMA、汇编语言等基本概念的讨论,本书勾勒出了计算机的完整概念,同时还讨论了一台计算机的基本工作机制和操作过程。本章没有留给读者什么练习问题,但是希望读者能够仔细讨论计算机的基本原理和操作过程。这些知识对于读者理解更深层次的概念和理解如何将计算机的各个部件合理地整合在一起是有很大帮助的。
第4章,“存储器”,存储器是数字系统的基石。通过上一章的学习,读者已经了解到什么是存储器及其功能。本章进一步讨论特殊类型存储器的工作原理以及它们在不同的系统中是如何被应用的。具体讨论了诸如SRAM、DRAM、FLASH、EPROM等不同存储器的优缺点。这样有助于理解不同的存储技术在不同的系统的应用。
第5章,“串行通信”,它是系统设计的一个最基本方面: 即数据由一个系统传输到另外一个系统。没有数据通信的支持,计算机将成为一个“孤岛”。现实生活中很多应用都涉及到通信,不论是访问因特网还是从远程传感器中采集数据等。本章讨论了几种数据通信方式: RS232接口、调制解调器、多节点网络等。
第6章,“具有指导意义的微处理器和微型计算机组件”,具体介绍了五种实际的微处理器和微控制器。这些器件都是非常重要的。即使是十年后出现的新型结构也往往会采用这些器件中实现的许多技术。通过对这些器件的分析,读者可以了解寄存器、存储器、总线结构、中断向量以及操作系统特权层次等问题。
第2篇高级数字系统
数字系统根据应用完成数据获取、数据处理、操作结果传输等操作。第二篇内容建立在第一篇内容的基础上,如微处理器发展现状、通信和逻辑技术等。为了有效地构思和实现预定要求的数字系统,设计者必须知道什么是可能的,什么是可行的,以及采用什么样工具和从什么模块开始。通过前两篇内容的学习,读者将对数字系统设计有广泛地了解,内容覆盖从小型微控制器到复杂的32位微机结构,高速网络,以及上述所有内容所基于的逻辑设计方法学。你将有能力面对整个数字系统,存在之前的或概念上的,并且能够将它分成各个组成部分,而这正是解决问题的第一步。
第7章,“先进的微处理器概念”,主要介绍现代32位和64位计算系统结构的一些关键主题。为了能够让数字硬件工程师充分理解设计系统和设计有效的电路,本章介绍了RISC/CISC、浮点运算、高速缓存、虚拟内存、流水线和数字信号处理(DSP)等基本概念。本章不是指导读者如何实现最快的微处理器,而是向他们解释这些设备是如何工作的,更为重要的是在目标系统的要求下的一些必须注意的系统级问题。
第8章,“高性能存储技术”,介绍最新的SDR/DDR、 SDRAM、 SDR/DDR/QDR、 SSRAM等设备,解释了它们的工作原理及在高性能数字系统中的应用,讨论了它们各自的实现技术。现实生活中,存储器比微处理器应用得更为广泛。对于通信和数据处理系统来说,存储器是必不可少的。为了设计一个切实可行的系统,理解这些存储技术的内容和优缺点是非常关键的。只有完全掌握这些主流存储技术才能在各种情况下正确地应用这些技术。
第9章,“网络”,从硬件角度全面地介绍数字通信方面的知识。通过引入网络协议分层的概念解释现代数字通信系统中硬件和软件相互作用的不同层次。处于网络低层次的大部分硬件的作用是负责数据流在通信介质的读出和写入。本章重点介绍处于低层的双绞线和光纤通信的硬件细节、收发技术、8B10B隧道编码、CRC检错以及校验和逻辑等。本章还以以太网为例说明真实的网络标准功能。
第10章,“逻辑设计与有限状态机”,说明如何采用定制逻辑实现一个完整的功能系统。虽然大部分系统设计可以通过现有的逻辑器件解决现有的问题,但是绝大多数还是需要一定的定制逻辑的支持。本章从介绍硬件描述语言开始,特别是Verilog。通过硬件描述语言,可以高效地设计时序和组合逻辑。在讨论完逻辑设计的基本方法后,通过具体实例来介绍一些常用的逻辑,如地址译码、控制/状态寄存器、中断控制逻辑等。此外,通过一些特例来介绍如何设计和处理多时钟域异步输入的逻辑电路。由于能够实现任意算法的复杂逻辑电路都是以有限状态机为基础的,本章通过一些具体的实例来介绍如何合理地实现这些概念。最后,还介绍了状态机优化及流水线等技术,进而讨论了如何有效地完成逻辑设计。
第11章,“可编程逻辑器件”,介绍数字系统中另外一种逻辑实现技术。本章通过介绍GAL、PAL、CPLD和FPGA等可编程逻辑器件的工作原理及其在逻辑设计中的应用,说明了它们灵活的可编程特性和性能,以及这些如何能够保证它们可以被应用到各种不同的系统中去。利用这些器件,设计者可以很容易地将一些系统和其他系统的核心操作部件整合到一起。本章有助于根据不同的逻辑应用确定最适合的技术以及在特定的系统设计中选择恰当的器件。
第3篇数字系统的模拟基础
电子系统都是由模拟电路组成的。数字系统是电子系统的一部分,只不过它表现为离散的二进制特性,因此在数字系统设计中懂得一些电路分析的基础是非常有必要的。本书的第三篇主要介绍一系列与数字系统设计相关的模拟问题。许多数字工程师由于缺乏高等数学及其相关方面的专业知识,因此不愿意分析直流电路和交流电路。事实不应该是这样。虽然当前数字系统方面的分析可以通过基本代数知识得到解决,然而通过模拟方式该工作可以大大地简化。阅读完本篇内容,读者就能够利用无源器件、独立的二极管和晶体管以及运算放大器等模拟电路实现数字系统。
第12章,“电学基础”,介绍基本的直流电路和交流电路分析。通过简单的电压与电流关系的描述本章介绍了电阻、电容、电感、变压器等基本元器件。在此基础上还讨论了现代高速数字系统中一个非常重要的方面: 无源器件的非理想特性。事实上,许多数字系统设计失败的原因都是由于其设计者未能充分理解高频下无源器件的非理想化特性。本章采用了频域和滤波等方法来分析基本的模拟电路,介绍它们是如何被应用到数字系统设计中去的,尤其是在小噪声情况下解决瞬态和比较难检测的问题中是如何发挥重要作用的。
第13章,“二极管和三极管”,介绍分离半导体器件的基本工作原理。本章通过对特定实例的全面分析来解释它们在数字系统中的应用,其中重点介绍了双极型三极管、MOS晶体管和发光二极管。实际上,设计者了解了二极管和三极管的工作原理,能够帮助他们解决许多设计中遇到的问题。例如,在电源管理电路和基准电压设计中二极管就是非常关键的。在数字逻辑芯片中晶体管能够保证驱动更大的电负载。
第14章,“运算放大器”,讨论数字系统采用的多种通用模拟组成模块。本章通过多个实例说明了基本放大器和电压比较器的设计原理。其中所有实例都是逐步仔细分析的,从而使读者可以有效地运用运算放大器。运算放大器可以广泛地应用于数据获取及接口电路、电源输出及电压控制电路,以及实现基本放大器和滤波器等。本章采用的交流电路分析技术曾经在混合模拟/数字电路设计中详细解释过。
第15章,“数字系统的模拟接口”,介绍了模数,数模转换技术。在实际系统应用中许多数字系统要不断与诸如音频、视频、射频等激励信号相互发生作用。数据转换是这些系统的关键组成部分,它保证了连续不断的模拟信号能够转换为二进制数形式从而得到处理。本章介绍了几种常用的数据转换方法以及奈奎斯特频率和抗混淆滤波等基本概念。
第4篇数字系统设计实践
当开始一个新的数字系统设计时,人们往往对微处理器和存储结构等重要特征非常关注,而忽略一些他们不熟悉或者由于没有时间弄清实现细节而不清楚的必要的支撑部件。这些状况经常导致数字工程师们在系统快要设计成功的时候而不得不放弃对该系统的研制。比如在某一段时间内运行状态很好的微处理器突然停止运行,一条传输数据状态很好的数据链路接连出现无法解释的位流传输错误。这些问题有可能是由逻辑设计故障造成的,而有些异常行为则常常可能与更基本的电子缺陷有关。本书的最后一篇主要介绍对于设计和构造可靠系统非常关键的基本构成和电子现象。
第16章,“时钟分配”,介绍所有数字系统的基本部分: 时钟的正确生成和分配。本章采用的电路实例包括相位偏移缓冲器、终端和锁相环等。通过这些实例的分析本章介绍了一些时钟生成和分配的方法,以及一些更广意义上的系统级时钟策略,如频率合成、DLL、源同步时钟等相关主题。
第17章,“电压调节和电源分配”,本章讨论了系统操作必需的基本电源结构。本章介绍的电源处理涵盖电路规格和安全问题。同时出于安全性和可靠性方面问题的考虑本章详细地介绍了电源的热能分析。本章通过众多例证介绍了如何采用分离器件和集成电路设计基本的电源调节器。此外本章还介绍了包括连线、电路板电源平面图及电源输出去耦电容等电源分配问题。
第18章,“信号完整性”,本章内容深入到高速数字信号的非理想特性等一系列主题。本章的前半部分介绍了数字信号受损的常见原因,解释了传输线、信号反射、串扰和各种不同的终端方案等。这些内容能够让读者掌握哪些原因可能导致错误,以及怎样在设计中避免这些错误。其他如电磁辐射、接地、静态放电等相关主题将在本章的后半部分中介绍。只有了解了全貌才可以形成可能的解决方案。本章通过实例分析还说明,信号完整性问题在电路板设计以及整个系统设计是同等重要的。
第19章,“成功设计”,本章介绍了许多在产品定义和设计过程中必须考虑的系统级问题。器件的选取和电路的构建必须在开发和生产资源允许情况下满足产品的要求。讨论这些主题是因为系统设计成功与否与可用性、实用性以及设计技术等有很大的关系。本章通过多个角度重点介绍了系统测试。这是因为在产品开发过程中测试也是一个比较重要的环节。测试技术包括边界扫描(JTAG)、特殊的硬件特征和软件诊断等。这些技术能够高效地诊断和定位实验环境和集成生产环境下的故障。本章介绍了一种数字系统常用的计算机辅助设计工具——模拟电路模拟工具Spice,包括电路设计、Spice建模和模拟结果分析。本章最后简要地介绍了一些常用的数字系统故障诊断和定位的测试设备。
本书的附录A列出了推荐材料,包括书籍、期刊、杂志、网站等,建议读者进一步阅读和自学。
书中选择了许多特定厂商的产品作为实例,作为读者学习的起点。当然其他厂商的产品也可以作为本书的例子,那些本书没有提到的产品并不是实际设计中不能选择的。也许本书并没有列出你设计中所需的最理想的器件,本书只是利用手头现有的一些器件来说明数字系统设计的基本原理。同时本书提及到的器件规格说明不能够代替实际产品的说明书,这是由于本书不可能列出该器件的所有特性,而且规格说明也会因生产厂商的不同而不同。设计者应该及时与生产厂商联系,以便获得产品的最新信息。当然制造商提供的产品信息一定能够使设计者能够合理高效地使用它们的产品,因此设计者应该充分利用这些资源,丰富的因特网资源则可以进一步简化这项工作。
真正的设计经验需要时间和实践,同时也需要更多高级工程师的经验和指导。在获得经验的过程中获得正确的方向指引,不仅有助于加快学习过程,也会使学习变得更加有趣。一个上进的初学者在正确的指导下,通过正确的设计实践,懂得从哪里找到他们所必需的信息,从而使他们的努力更加有效。我真诚地希望这本书能给你指导和帮助,并祝你学有所成。
致谢致谢
在完成本书的过程中,作者逐渐了解到,没有他人的支持是不可能独立地完成这项工作的。几年来我非常幸运地与许多才华横溢的工程师一起共事,并向他们学习,对此我十分感激。更准确地说,这些好心的朋友和同事为我阅读初稿,并对本书内容提供信息反馈,为我指出了许多需要纠正和改进的细节。这里我要重点感谢Rich Chernock和Ken Wagner。他们花了好几个月时间通读了整本书,彻底地检查了本书的内容,提出了许多从技术观点到全书风格等各个方面颇有价值的意见。我也感谢Todd Goldsmith和Jim O’Sullivan,他们的建议使我得以改进本书的质量。
在此我要感谢一些杰出的科技公司所提供的合作。Mentor Graphics公司提供了他们的ModelSim和Verilog仿真器,用于验证一些逻辑设计实例的正确性。Agilent Technologies,Fairchild Semiconductor和National Semiconductor等公司准许我引用他们的部分技术文献来作为本书讨论的一些主题的例子。
成为一名电子工程师以及由此而撰写这本书都源于我早期对于电子和计算机的兴趣,而这得到了我家人的全力支持和鼓励。不管是将阁楼改装成实验室,去电气公司还是陪我去科技展览,我的家人始终在背后支持着我。
最后,我很难用言语来表达对我的妻子Laurie的感谢,感谢她始终如一的精神支持和各方面明智的建议。在这一漫长的成书过程中,她帮助我保持了自己的身心健康。她充当了我的编辑、顾问、战略师和朋友。Laurie,谢谢你在每步路上为我所做的一切!
作 者 简 介
Mark Balch是一名硅谷电子工程师,从事高性能计算机网络硬件设计方面的工作。他的工作包括PCB、FPGA和ASIC设计。先前从事通信行业的工作时,Mark就设计了HDTV、消费电子和工业计算机领域的产品。
除了从事产品设计外,Mark还积极参加工业标准委员会,并发表了技术会议著作。此外他还发表了有关硬件和系统设计方面主题的文章。Mark拥有纽约Cooper Union的电子工程学士学位。