购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 全加器的实现

实现全加器,需要算出本位的加法结果以及向上进位的结果。

向上进位的结果计算式如下(该式使用了Verilog的符号来表示运算逻辑)。

w i + 1 =( a i & b i )|[ w i &( a i ^ b i )]

式中, w i +1 为从 i 位向第 i +1位的进位; a i b i 分别为被加数和加数在第 i 位的值。

本位的加法结果由3个部分取异或得到,这3个部分分别是:被加数、加数和来自低位的进位。该运算可表示为

c i = a i ^ b i ^ w i

以下给出一个使用Verilog实现7位全加器的RTL实例(配套参考代码full_adder.v),其原理基于上述两个公式。

该全加器对应的仿真验证环境(TestBench,TB)如下(配套参考代码full_adder_tb.v)。由于数据的位宽小,仿真全部情况的数据量并不大,因此这里采用遍历法仿真了该加法器所能涉及的全部情况。注意,在T B中a和b的位宽都不是RTL中的7位,而是8位,因为在TB中,a和b都会在遍历到RTL的最大值127后出现128的情况,TB用该数来标示循环遍历的结束。只有a和b的位宽为8,才能够令其表示出128。

仿真结果如图3-4所示,RTL运算结果与参考结果保持一致,err2一直保持0。

图3-4 全加器仿真结果 E04BaQAYScXi1PfSxxOvOFo2lBpKmGTvz583o6+z1/YKIjfHtIpBLbbjY5kFVkzS

点击中间区域
呼出菜单
上一章
目录
下一章
×