四位行波进位加法器_行波进位加/减法器的硬件开销和性能分析

来自微信公众号 “数字芯片实验室”

加减法是一类非常基础的运算,本文分析最简单的行波进位加/减法器(Ripple CarryAdder/Subtractor)的硬件开销和性能问题。

在文章的开始控制变量,仅使用工艺库中的基本逻辑门

AND-AND2X1

NOT-INVX1

OR-OR2X1

1bit半加器

7055faa818abbb377293fcf8ac762aae.png

上面分别是1bit半加器的真值表、逻辑关系式和原理图。然后编码Verilog HDL,综合设计,分析以及可视化关键路径。

module ha (Cout, Sum, A, B);
input A, B;
output Cout, Sum;
wire Cbar,p;
AND2X1 a1 (.Y(Cout), .A(A), .B(B)) ;
INVX1 i1 (.Y(Cbar), .A(Cout) ) ;
OR2X1 o1 (.Y(p), .A(A), .B(B)) ;
AND2X1 a2 (.Y(Sum), .A(Cbar), .B(p));
endmodule // ha

acec83c6371590a2fad47526da9902b6.png

1bit全加器

a93540420a0d2793a96ab789de89ac2b.png

上面分别是1bit全加器的真值表、逻辑关系式和原理图。层次化的设计方法复用半加器逻辑,提高设计效率。然后编码Verilog HDL,综合设计,分析以及可视化关键路径。

module fa(Cout,Sum,A,B,Cin);
 input A,B,Cin;
 output Cout,Sum;
 wire c1,s1;
  haha1(.Cout(c1), .Sum(s1), .A(A), .B(B));
 
 wire c2 ;
  haha2(.Cout(c2), .Sum(Sum), .A(Cin), .B(s1));
 
 OR2X1 o1(.Y(Cout),.A(c1),.B(c2)) ;
endmodule //fa

f177174687e55374a13f3a10e90067a8.png

接下来进入本文的重点,行波进位加法器(Ripple Carry Adder,RCA)。

这是最简单的多比特加法器。一个n比特的RCA需要n个全加器,第k-1个全加器的carry out,作为第k个全加器的carry in。虽然设计简单,但是由于这种进位传播方式,会造成随着加法器比特数增加,硬件开销和延时也会线性增加。

9523326878c0f93aae966a4a3b7cb267.png

266854d246634fd5aae70a98f972a6ae.png

1~5比特行波进位加法器硬件开销

0e8fbe2c6a43b1a02b6747abf1b7b09d.png

1~5比特行波进位加法器关键路径延时

5116b71397d371652201ca81ef64ac75.png

在数字系统设计中加法器和加法器一样重要。根据A-B=A+(-B),对于n比特加法器只需要增加n个异或门即可完成n比特减法器

3f6296f688f5320dc48c548781e2cce1.png

如果Sub=1,表示执行减法计算,反之执行加法计算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值