3.8 迭代组合电路
本章接下来的部分将介绍算术功能模块。算术功能模块通常被设计成处理二进制输入向量,并产生二进制输出向量。而且该功能块经常采用相同的子功能块来处理每位数据。因此,功能块的设计可基于子功能块,通过重复使用子模块处理要设计的所有算术模块的每位数据。这样,相邻的位之间通常有一个或多个连接来实现值的传递。这些内部变量是子功能块的输入或输出,对于整个算术模块的外部来说是不可见的。这些子功能块也称为单元(cell),整个模块的实现是一个单元阵列(array of cell),阵列中的单元通常是相同的,但也不总是如此。由于电路的重复性以及向量与每个单元间的关系,整个功能块又称为迭代阵列(iterative array)。迭代阵列是层次电路的一种特殊情况,对于处理向量中的每一位很有用,例如一个将两个32位二进制整数相加的加法电路。这个电路至少有64个输入和32个输出,如果设计从真值表出发,写出整个电路的输出表达式是不可能的。由于迭代电路基于重复单元,设计过程采用一个基本结构将会大大简化设计。
图3-39给出了对两个n位输入向量操作而产生一个n位输出向量的迭代电路模块图。在图中,每对相邻单元之间都有两个横向连接,一个是从左到右,另一个则从右到左。此外,在电路的左右两端还存在用虚线标示的可选连接。对于一个特定的设计,阵列往往会使用许多横向连接。在阵列和单元的设计中,与这些连接相关的功能块的定义很重要。特别是,连接的数目及其功能将影响迭代电路的成本和速度。
在接下来的章节中,我们将定义执行一位加法运算的基本单元,然后再定义采用该单元迭代而成的二进制加法器。