What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
cs:comp_n_arch:courses:fnti_i:week_2 [2025/04/08 14:22] – [Add16:Carry-ahead] codingharecs:comp_n_arch:courses:fnti_i:week_2 [2025/04/08 14:28] (当前版本) – [其他实现上的一些细节] codinghare
行 190: 行 190:
 利用这个公式,我们可以对每一位的 $C_i$ 进行展开。也就是说,只要已知所有的 ''a'', ''b'',以及 ''0'' 位的 carry,那么所有的 adder 都可以直接对本位的 carry 进行计算, 利用这个公式,我们可以对每一位的 $C_i$ 进行展开。也就是说,只要已知所有的 ''a'', ''b'',以及 ''0'' 位的 carry,那么所有的 adder 都可以直接对本位的 carry 进行计算,
 比如第二位的 carry 公式就可以展开为: 比如第二位的 carry 公式就可以展开为:
-$$C_2=G_1​∨(P_1∧G_0)​+(P_1∧P_0​∧C_0))$$+$$C_2=G_1​∨(P_1∧G_0)​(P_1∧P_0​∧C_0))$$ 
 +==其他实现上的一些细节== 
 +  * ''Mux16'' 是 ''if / else'' 的硬件实现,使用 ''sel'' 位来作为条件输入 
 +  * 验证某个输出是否小于 0 只需验证其最高位,比如 ''out[15]'' 为 1 则该数为负 
 +  * 验证某个输出是否等于 0 需要使用 ''OrNWay'' 对所有 bits 进行按位 ''Or''。这样计算后: 
 +    * 如果有任意 bit 为 1,那么 Or 的结果都为 1。此时输出是不等于 0 的,如果再将其翻转(//Not//)再输出至是否相等的 bit,此时为 0,也就是不相等。 
 +    * 反之,按位 Or 全为 0,翻转后结果为 1,说明相等。