3.2 工艺映射
在开始介绍功能模块之前,如果我们能够首先介绍工艺映射(technology mapping)将是有益的。工艺映射是将逻辑图或网表转化成可以用工艺实现的新的图或网表的过程。在这一节,我们将介绍与非门和或非门单元,以及将与、或、非描述映射为与非和或非描述中的一种。在当前可用的晶体管技术中,与非门和或非门要比与门和或门更小、更快。正如我们第2章描述的,与非和或非函数都是功能完备的,所以任意布尔函数都可以通过仅使用其中一个来实现。在本章的后面,我们将展示如何通过映射到更复杂的功能模块上来实现逻辑函数。在第5章,我们介绍工艺映射在可编程技术中的实现。
先进的工艺映射 在原书配套网站上的补充资料中,有各种使用不同单元类型集合的工艺映射,这些单元包含多种门类型。
一种与非门技术由一个单元类型集合组成,每一个类型包括一个有固定输入数的与非门。单元有许多特性,如第5章描述的那样。由于这些特性可能比输入给定为n的一个单元类型更多,为简单起见,我们根据输入n(n=1,2,3,4)的大小,假设有4种单元类型。这4种单元类型,分别称为反相器(n=1)、二输入与非门、三输入与非门和四输入与非门。
用与非门实现布尔函数的一种简便方法,是从优化由与门、或门和反相器组成的电路逻辑图开始。然后,通过将逻辑图转换为与非门和反相器的方法,将逻辑函数转换为与非逻辑。这样的转换也适用于或非门单元。
给定一个已经优化的由与门、或门和反相器组成的电路,通过下列步骤可以将其变成由与非门(或者或非门)组成的电路,这些门电路的扇入没有限制:
1)用与非门(或非门)和反相器替换原电路中的与门和或门,形成新的等效电路,如图3-3a和图3-3b所示。
2)消除所有反相器对。
3)在不改变逻辑函数的前提下:a)将所有位于电路输入或与非门(或非门)输出和被驱动与非门(或非门)输入之间的反相器“推”到被驱动与非门(或非门)的输入,在这个步骤中,要尽可能地消除串联成对的反相器。b)用一个驱动所并联反相器输出的单独的反相器代替这些并联的反相器。c)重复步骤a)和b),直到电路输入或与非门(或非门)输出和与非门(或非门)输入之间,最多只有一个反相器为止。
在图3-3c中说明了将一个反相器推过“点”的方法,输入到点的输入线上的那个反相器用从点输出的所有输出线上的反相器来代替。根据下面的布尔代数性质,可以得到如图3-3d所示的消除了反相器的电路:
X=X
下面的例子说明了与非门的上述实现过程。
例3-2 用与非门实现
用与非门实现下面已经优化的函数:
F=AB+C+ D+E
图3-4a中给出了用与门、或门和反相器实现该函数的情况。图3-4b执行了第1)步,将每个与门和或门用图3-3a所示的与非门和反相器组成的等效电路替代。为了便于解释,反相点和反相器上都注有标签。在第2)步中,通过将反相器对(1,2)和(3,4)消去,从而得到图3-4d所示的对应与非门的直接连接。如图3-4c所示,反相器5被“推”过X点,并分别与反相器6和7成对消去,这样就可以得到如图3-4d所示的相关与非门的直接连接。由于反相器8和9不能和其他反相器成对,只能如图3-4d所示那样保留到最后,整个转换过程到此结束。接下来的例子演示用或非门来实现这个过程。 ■
例3-3 或非门实现
下面采用或非门来实现例3-2中的布尔函数:
F=AB+C+ D+E
图3-5a给出了用与门、或门和反相器实现该函数的情况。图3-5b执行了第1)步,将每个与门和或门用图3-3b所示的或非门和反相器组成的等效电路替代。反相点和反相器上都注有标签。在第2)步中,反相器1被“推”过X点,从而分别与反相器2和3成对消去,输入线D上的一对反相器也可以消去,而输入线A、B、C和输出线F上的单个反相器则必须保留,最终得到的映射电路如图3-5c所示。
例3-2中映射电路的门输入成本是12,而例3-3中门输入的成本为14,所以用与非门实现开销较少。同时,与非门实现中最大串联级数为3,而或非门实现中最大串联级数为5。假设门的延迟是一样的,那么信号从输入到输出,门级数较少的与非门电路的最大延迟是或非门的0.6倍。所以,对于这种特殊情况,与非门电路无论是成本还是延迟,都优于或非门电路。
某种工艺映射的结果明显与原始电路或映射前的方程形式有关。例如,一个输出端为或门的电路,采用与非门映射后会在输出端得到一个与非门,而采用或非门映射,则会在输出端得到一个被或非门驱动的反相器。由于有这些差异存在,所以积之和式被认为更适合使用与非门,而和之积式则被认为更适合使用或非门,以消去输出端的反相器。然而,到底选择哪一种映射方式,取决于能否在给定的优化准则下得到最好的整体性能。 ■