#2 算术运算、储存器(Part.4)8位全加器

哔哩哔哩   2023-08-02 00:43:48

这一关,很容易玩,也很难玩

我很喜欢这一关因为实在是太多可以优化的细节了

先上一个标准答案


【资料图】

8位全加器

就是把8个全加器全部连一起

很简单易懂

门数量72总延迟64

但很显然这是一个非常慢的线路

这一关有一个成就,是要总延迟在35以下

所以就想一下怎么做啦

首先八位数的加法如果想要提速

第一个想法就是并行计算

因为八个全加器连在一起只是普通的线性计算

先把低位算完,得出进位,再算高位

延迟也是延迟在这一个地方

所以首先我们的思路是要并行计算

所以我设计了这样子的线路图

8位全加器

看起来很复杂,我把每一个单体抽出来

从左到右可以分为三个部分

左边两个部分是两个全加器的结构(最左边的一个半加器是共用的)

这是分别模拟了低位进位是0和1的结果,然后在右边通过低位进位和开关进行结果选择

这样子就实现了并行计算

(也就是说原本的方法是,等低位进位的结果出来了,我再算本位的结果

但是现在的方法是,不管你低位进位的结果,反正不是0就是1

所以我两个都先算出来,然后等你进位的结果出来了,再选择一个输出,实现了低延迟)

但是这样子的线路的延迟还是很高,达到了38

通过检查发现延迟主要是在进位的控制线上

可以发现平均每算一位数值,延迟增加4

而这个+4来自一个非门+2和一个开关+2

开关肯定不能去掉,因为是要拿来做控制的

所以为了将延迟压下去,只能对非门动手脚了

分析一下,非门的功能是拿来将低位的进位进行分选

然后分别选择我的输出

但是如果我能同时得到两条控制线路,分别是0和1那不就行了?

也就是要么左0右1或者左1右0,这样子也可以做到选择的效果

那么如何不用非门来做到这个效果呢

检查一下进位线是怎么来的

是对两个AND门进行OR

也就是检查进来的三个数字当中是不是有两个以上,然后选择要不要进位

这时我惊喜的发现,有一个门叫NOR

它的输出跟OR门刚好相反,也就是NOR跟OR接一个N门完全等效

但是它只有+2延迟

也就是说如果我多造一个NOR门在这里进行进位选择

就可以做到不增加延迟但是达到了用N门进行选择的效果!

于是我设计出了这个单体线路

8位全加器

全线路图:

最终门数量177总延迟24

效果不错,但是我的能力到这里就差不多了(

我已经很满意了

热文榜单