一.进位旁边的加法器
进位旁路加法器(Carry Skip Adder,CSA )还称作进位旁路adder。 注意,CSA也是另一个加法器——进制保存加法器(Carry Save Adder )的简称,将在后期介绍该加法器。
到目前为止,介绍了行波进位加法器RCA,第k位的进位Ck需要等待以前的Ck-1的结果才能计算。 因为下图的进位c16必须等待前一级全加法器的c15输出才能计算,所以进行进位加法器的特征是超长的进位传播链。
16位RCA进位链示意图
进位旁边的加法器的思想在于加速进位链的传播,有时进位到第I位不需要等待第i-1位的进位。 在16位RCA中,最长的进位链是c0-c1-c2-…-c16,也就是说,在每个数位的全加法器中有进位,该路径也是最长的关键路径。 进位加法器通过增加2选1数据选择器、第x段进位和第y段进位和进位bypass信号组成的旁路逻辑来缩短这一最长路径。
4位CSA结构
CSA的结构如上所示。 紫色部分为数据选择器,橙色部分为数据选择信号,数据源为进位c0和第三个全加器的进位输出。
P3P2P1P0=1时c4=c0; 进位c0不经过4级全加法器的延迟,直接传播到c4。 这是进位旁路加法器的核心。
为什么P3P2P1P0=1时c0可以直接传播到c4? 乍一看这个问题有点困扰。
首先来看看c4的生成逻辑:
如果P3P2P1P0=1,则c4生成逻辑为:
在介绍超前进位加法器中,我们定义了PG :
p是a和b的异或的结果,只有当a=0、b=1或a=1、b=0时,p才可能为1。 另一方面,由于G=ab,所以只要P=1,g为0,G3=G2=G1=G0=0。
最后的结论与上述一致: P3P2P1P0=1时,c4的生成逻辑最终变为c4=c0。
二.进位旁路加法器的关键路径及优化
将n位加法器以m位为1组,分为N/m组的话,成为下式的16位进位旁路加法器,N=16,m=4共计4组,该16位CSA是将4位CSA级联连接而成的,其中4位
16位CSA结构
上述主要路径如下
n c0进行第1段的Block,经过第4段的全加法器,进位后从bit0到bit3生成c4。
n中间进位通过bypass逻辑。
n最后一级遵循模块逻辑,经过4级全加法器,进位后从bit12到bit15生成c16。
基于此结构,关键路径延迟的典型表达式如下:
其中:
Tsetup:A,b从下位到第一级块的时间
tcarry :各进位传播Block的全加法器发生进位的时间
t skip :进位通过skip逻辑的时间
Tsum :从最后进位到s输出的时间
在这里读者可能会怀疑,为什么最长的delay会成为中间的两阶段路径呢? 如果加法器的进位全部进入Block逻辑,应该会有更长的延迟。 实际上,如果走最长的路径,中间路径将被绕过。 也就是说,执行0111 _ 1111 _ 1110000 _ 0000 _ 0000 _ 0001时。 第一级进位发生后,中间两级被绕过,最后一级经由RCA进位链。 也就是说,是下图中用红色画的路径图。
16位CSA关键路径图
三.进位旁路加法器Verilog设计
以下参数cska(carryskipadder,为了防止混淆而命名为cska )基于4比特的cska设计,width的参数定义是20、24、32、64、128等4的倍数。
默认的16位进位旁路加法器级联4个进位旁路加法器,每个进位旁路加法器级联4个全加器,有进位旁路逻辑。
cska_4bit模块中的进位链和进位旁路逻辑:
Verilog源代码公开号返回004。
指出错误,多读,关注“纸上谈兵”,不定期更新,合作学习: