Wallace Tree 图解

Wallace Tree 主要思想是:将三行变成2行,实际相当于3位到2位的压缩器,简称3-2压缩器。其思想还是通过合理的分配步骤,处理 两个数相乘的过程中,出现的大量的部分积。

也就是说,传统的算法,所有部分积都单独列出来,两个数相乘,有多少位,就得列出多少位,然后,所有部分积相加,得出最终结果。 这样的缺点无疑是:慢!

和上一篇 Booth 编码 类似,Wallace Tree 也是充分利用部分积,通过合理的组织步骤(不再是传统的所有部分积单独列出来,再按照权重累加),这个合理的步骤,可以参看后面的电路结构,重点就是第一段说的,三行变两行。我认为,基本思想还是,利用空间换取速度的一种体现。即多用加法器,合理组织部分积相加的步骤,提高运算速度。

详细的过程,如下图所示:

Wallace Tree 图解_第1张图片

下面,再对上图,进行第二轮的“三行变两行”的过程,即经典算法中,第二个框出的红框的部分。

大家可以根据颜色表示,来区分实际运算的过程。蓝色表示第二轮的三行变2行。橙色和绿色表示实际运算中,实际相加的“组员”。即他们分别有 sum项和进位项carry。
在第二轮的三行变2行的过程中,这里直接变成了2行,是直接写的最终结果,我们在第一幅图的基础上,直接写的结果,这点要注意下。只是,我们依然按照权重,标清楚位置就可以了。(如橙色的是在16的权重上)
手画的可能有点歪,注意权重即可。
Wallace Tree 图解_第2张图片
下图展示了 Tree 的由来,注意 X3Y3 X2Y3 X1Y3 X0Y3 本来是在同一行着,为了 组成 Tree,请观察他们挪动的位置。 类似的,X3Y2 X2Y2 本来也是同一行,为了组成 Tree,请注意他们的挪动的位置。
Wallace Tree 图解_第3张图片
请注意,相加,先加最顶端的,即树尖的部分,如下图所示。
Wallace Tree 图解_第4张图片

你可能感兴趣的:(verilog)