《逻辑与计算机设计基础(原书第5版)》——3.1 开始分层设计

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.1节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 开始分层设计

如第1章所述,设计一个数字系统的过程为:
1)指定所需的行为。
2)以布尔方程或真值表的方式对系统的输入与输出关系进行形式化。
3)优化逻辑行为的表示,减少所需逻辑门的数量,就如第2章中介绍卡诺图时那样。
4)将优化后的逻辑映射到可以实现的工艺上,比如第2章中的逻辑门或本章所述的功能模块。
5)验证最后设计的正确性,以便满足功能描述。
本章将重点介绍组合逻辑设计过程的前4步,从指定系统到映射逻辑至可以实现的工艺。但在实际的设计实践中,最后一步验证设计正确性通常在设计工作精力中占相当大的一部分。然而详细的验证超过了像本书这种初级课本的范围,我们应该牢记保证设计满足功能描述是重要的一步,该步经常是产品设计周期中的瓶颈。小设计可以利用找出设计的布尔逻辑方程,并确认它们的真值表与功能描述相匹配的方法进行人工验证。大设计可以利用模拟器和更多先进的技术来验证。如果电路与其功能描述不相符,那它就是错误的。所以,验证这一步骤非常关键,可以在电路被生产和使用前发现设计错误。
对于复杂的数字系统,一种典型的设计方法是“分而治之”,称之为分层设计(hierarchical design),而不是将设计过程应用在整个系统层面上,由此产生的相关符号和示意图构成了电路设计的层次(hierarchy)结构。为了处理复杂电路,电路被分成我们称之为模块(block)的多个部分,并用上面讲的设计过程设计模块。模块之间相互连接构成电路。这些模块的功能与接口都经过仔细定义,所以它们相互连接所形成的电路符合最初的电路描述。如果一个模块作为单一实体仍然太大并且很难设计,则可以将这个模块分成多个更小的模块。这个过程可以按需要重复多次。注意,由于我们主要围绕逻辑电路进行工作,所以我们在讨论中采用术语“电路”,但这种思想也能够很好地应用到后面各章介绍的“系统”中。
例3-1举例说明了分层设计的一个简单应用,设计一个8输入的“分而治之”电路。8个输入使得真值表变得繁琐,使用卡诺图变得更加不可能。这样,直接应用基本的组合电路设计的方法(如第2章那样)将会很困难。
例3-1 设计一个4位相等比较器
功能描述:相等比较器是一个比较两个二进制向量以判定两者是否相等的电路。这个特定电路的输入包括两个向量:A(3:0)和B(3:0)。向量A有4位,A(3)、A(2)、A(1)和A(0),其中A(3)是最高有效位。向量B的描述和向量A一样,只要将A用B来代替即可。电路的输出是一个一位的变量E。如果向量A和向量B相等则输出E等于1;如果向量A和向量B不相等,则输出E等于0。
形式化:由于该电路的规模较大,我们试图不使用真值表。为了使A和B相等,A和B中对应每一位的值(第3位到第0位)都必须相等。如果A和B中各对应位的值都相等,则E=1;否则,E=0。因此,直观上我们可以这样来形式化这个问题,那就是将该电路划分为简单的两层,其中顶层是完整的电路,底层有5个子电路。因为我们要比较的是A中每一位的值和B中相应的每一位的值,所以可以将这个电路分解为4个1位比较电路MX,以及一个合并4个比较电路的输出产生E的电路ME。图3-1a所示的是这5个模块相互之间连接的分层逻辑图。

image

优化:对于位置i,当Ai和Bi的值相等时我们定义电路的输出Ni为0,当Ai和Bi的值不相等时Ni的值为1。这样,MX电路可以用下面的等式描述:
Ni=AiBi+AiBi
电路的逻辑图如图3-1b所示。通过使用分层设计的方法,我们可以用4个与这个电路一样的电路,每一个电路表示A和B的一位。只有当所有Ni的值都为0时,输出E=1。这可以用下面的等式来描述:
image

图3-1c给出了该电路的逻辑图。两个电路均采用了最优的两级电路。它们与图3-1a所示的模块框图一起构成了这个电路的分层设计。将图3-1a的各个模块分别用图3-1c和图3-1b所示的电路来替代,即可以得到实际的电路。
即使不从表示整个电路的顶层模块开始,连接构造这些模块的底层模块或最基本的电路,我们也可以给出4位相等比较器的分层结构。使用这种表示方法,4位相等比较器的分层结构如图3-2a所示。注意,该结构是一种树形结构,其根在顶部。树的“叶子”是门电路,这里有21个门。为了使电路的层次表示更加紧凑,我们可以重复使用这些模块,如图3-2b所示。这个图使用了图3-1中的模块,每个不同的模块只有一个副本。这些图以及图3-1所示的电路图,对解释分层和分层模块的相关概念很有帮助。 ■

image

首先,分层设计降低了电路示意图的复杂度。例如,图3-2a中有21个门。这意味着,如果电路直接使用门来设计,电路图将会包含21个相互连接的门符号,而图3-1中只需要11个符号就能表示分层设计电路的实现。所以,分层设计可以使复杂电路的表示变得简单。
其次,如图3-2所示,分层设计的末端是“树叶”的集合。这里,树叶由多个与门、或门、反相器和一个或非门构成。因为这些门都是电子线路,而我们只关心逻辑,所以这些门通常称为原子模块(primitive block)。这些预定义(predefine)的原子模块用符号而不是用逻辑图表示。通常,一些更复杂的结构也可能是预定义的模块,它们用符号而不是用逻辑图来表示,它们的功能可以用程序或用作模型的某种描述而不是电路图来定义。例如,图3-1所描述的分层设计,MX模块可以被认为是由电子线路构成的预定义的异或门。这样,描述异或门MX模块内部逻辑的图3-1b就不再需要了。图3-1b和图3-2a的分层表示中可以用异或门模块来代替下层模块。在任何分层设计中,“树叶”由定义好的模块组成,其中一些可能是原子模块。
分层设计的第三个特性,即模块可重用(reuse)非常重要,如图3-2a和图3-2b所示。在图3-2a中,我们可以看到有4个相同的二输入MX模块。而在图3-2b中只有一个二输入的MX模块。这表明这样一个事实:设计4位相等比较器时,设计者只需要设计一个二输入MX模块,并重复使用这个模块4次就可以了。通常,在分层设计的各个层次,我们都希望对模块进行精细的定义,以使得大量的模块都是一样的。实现这个目标的先决条件是电路必须具备一种称之为规整(regularity)的基本属性。一个规整的电路(regular circuit)可以通过重用一定数量的不同模块来实现,而不规整电路(irregular circuit)则没有这个特性。显然,各种电路的规整程度不一样。对于一个给定的可重复使用的模块,设计只需要一次,在任何需要的地方都可以使用。出现在设计中的模块称为这个模块的一个实例(instance),它的应用称为实例化(instantiation)。模块可重用指的是,模块可以用在当前电路设计的许多地方,也许还可以用在其他电路的设计中。这样的理念可以大大地减少复杂电路的设计工作量。注意,在实现实际电路时,每个模块实例必须单独地用硬件来实现,如图3-2a所示的那样。图3-2b中这种模块重用的方法仅限于电路示意图的设计,而不是实际的硬件实现。最终电路中原子模块的数量与分层设计框图中基本模块(包括原子模块)的数量之比用于衡量电路的规整度,比值越大表示越规整。例如,对于图3-1中的4位比较器,这个比值为21/11。
一个复杂的数字系统也许包括成千上万个相互连接的逻辑门。事实上,一个超大规模集成(VLSI)处理器电路经常包括上亿个逻辑门。在如此复杂的电路中,相互连接的逻辑门就像难以理解的迷宫。当然,这样复杂的系统或电路不可能简单地依靠人工,通过把门电路一个一个地连接起来而完成设计。
本章我们将重点介绍位于分层逻辑设计的较低层的预定义和可重用模块。这些中等大小的模块在数字设计中提供基本功能,它们允许设计者在原子模块(即门级)上进行大部分的设计工作,我们将这些特殊的模块称为功能模块(functional block)。这样,一个功能模块就是一个预定义的门级互连电路。许多这样的功能模块作为中规模集成(MSI)电路,已经使用了几十年,它们相互连接可以组成大型电路或系统。在现代计算机辅助设计工具库中,类似的模块被用来设计大型集成电路。这些功能模块为数字器件提供了一个目录,它们广泛用于计算机和数字系统的集成电路设计与实现中。

相关文章
|
存储
《逻辑与计算机设计基础(原书第5版)》——3.3 组合功能模块
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.3节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1027 0
《逻辑与计算机设计基础(原书第5版)》——第3章 3.0组合逻辑电路的设计
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.0节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1309 0
《逻辑与计算机设计基础(原书第5版)》——2.11 本章小结
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.11节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
940 0
《逻辑与计算机设计基础(原书第5版)》——1.8 本章小结
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第1章,第1.8节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1263 0
|
传感器 安全
《逻辑与计算机设计基础(原书第5版)》——3.7 选择
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.7节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2440 0
《逻辑与计算机设计基础(原书第5版)》——3.13 本章小结
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.13节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
909 0
《逻辑与计算机设计基础(原书第5版)》——1.3 数制
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第1章,第1.3节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1637 0
|
异构计算
《逻辑与计算机设计基础(原书第5版)》——导读
本书的目的是为广大读者提供学习逻辑设计、数字系统设计和计算机设计的基础知识。本书第5版突出了课程内容方面的最新发展。从1997年的第1版开始,作者就不断对其进行修改,提供一种独一无二的将逻辑设计与计算机设计原理结合在一起的方法,并特别强调硬件。
2657 0
《逻辑与计算机设计基础(原书第5版)》——2.2 布尔代数
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第2章,第2.2节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3226 0
|
存储 算法 C++
《逻辑与计算机设计基础(原书第5版)》——1.2 计算机系统设计的抽象层次
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第1章,第1.2节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2046 0