在文章行波进位加/减法器的硬件开销和性能分析中我们仔细分析了行波进位加法器的硬件开销和性能问题。
可以发现当加法器位宽逐渐增大时进位的级联传播会成为加法器的性能瓶颈或者说关键路径(critical path)
针对这个问题的解决方案就是超前进位加法器,其原理就是让进位能够更快地计算出来,让进位传播不成为性能限制因素。
理解下上面的电路图和公式,可以发现:
1、在进位计算时,其实并不需要gk、pk和ck之间反相器和与门逻辑,也不需要产生进位的或门。
2、如果在高比特进位计算中将ak、bk和gk、pk之间的与门、或门改成多输入的与门、或门也能在一定程度减少延时。
但是使用多输入逻辑门也意味着增加了扇入和驱动能力要求,这也是一般标准单元库中不存在超过4输入逻辑门的原因之一。
当位宽超过4,就要使用级联的多输入逻辑门。另外如果使用FPGA实现时,这个扇入阈值就可以变成6,因为一个LUT可以配置成一个6输入的组合逻辑。
超前进位生成模块如下
module clg4 (cout, g, p, cin); input [3: 0] g, p ; input cin; output [3:0] cout; and a1 (s1, p[0], cin) ; or o1 (cout[1] , g[0], s1); and a2 (s2, p[1], g[0]); and a3 (s3, p[1], p[0], cin); or o2 (cout[2], g[1], s2, s3); and a4 (s4, p[2], g [1] ) ; and a5 (s5, p[2], p[1], g[0],cin); and a6 (s6, p[2], p[1], p[0]); or o3 (cout[3], g[2], s4, s5, s6);endmodule //clg4
为了将全加器和超前进位生成模块集成到一起,需要引出全加器的p和g。
参照文章行波进位加/减法器的硬件开销和性能分析也可以做出随着位宽变化的硬件开销和关键路径延时图。
昨天有人在后台询问“这种加法器和VerilogHDL中‘ ’有什么区别?”
区别就是这些针对不同硬件开销、性能或者功耗优化的加法器都是“ ”的具体实现。
当我们需要低开销的加法器时,EDA工具在满足时序要求的情况下就会把“ ”综合成低开销的加法器;
当我们需要高性能的加法器时,EDA工具就会把“ ”综合成高性能的加法器。
这种设计需要就是设计者对工具施加的约束,工具需要做的就是选择合适的实现方式去满足这些设计需求或者设计约束并且这些约束还存在优先级关系。
我们在VerilogHDL中不关心“ ”最终被综合成什么电路,只需要能够满足设计需求就好,因为Designware完成了很多这样的造轮子的工作。
但是这些底层模块优化的思路,在进行较大模块设计时还是有借鉴的意义的。