【HDL系列】Sklansky加法器原理与设计

目录

一、进位选择加法器

二、Sklansky加法器

三、Verilog设计


Sklansky加法器是另一种并行高速的树形加法器,由Sklansky于1959年发表,该加法器对比特位进位层级分组,根据对不同比特组所有可能的进位计算所有可选的和进位所以也叫Conditional-Sum Addition。

一、进位选择加法器

Sklansky加法器使用了进位选择加法器:

  1. 进位选择加法器由2个行波进位加法器和1个选择器构成
  2. 其中一个行波进位加法器假定进位进位为0
  3. 另外一个行波进位加法器假定进位为1

其结构如下:

【HDL系列】Sklansky加法器原理与设计_第1张图片 4比特进位选择加法器基础块结构

更多详细参考往期文章:https://zhuanlan.zhihu.com/p/102207162

我们先看下Sklansky在其论文中的一个进位选择加法器的例子(只取低8位部分做详细,如果阅读论文时,对于其表格数据由来不明的话可以细看以下部分):

x = 0 1 1 0 1 1 0 1

y = 1 0 1 1 0 1 1 0

【HDL系列】Sklansky加法器原理与设计_第2张图片 Sklansky中CSA逻辑的例子

 

第一级

当c=0:

其中S表示每一位的和,C表示对于高位的进位;字母的上标表示进位为0;“+”表示异或,如0+1=1, 1+1=0;“.”表示与操作,如0.1=0, 1.1 = 1;i表示比特位i=0,1,…,7;

所以S和C的结果为(上图中序号1部分,红色表示改位结果已经计算出):

【HDL系列】Sklansky加法器原理与设计_第3张图片

当c=1:

因为两数相加,最低位的进位已假定为0,只显示了进位为0的结果,为了对齐,用“-”表示。

所以S和C的结果为(上图中序号2部分):

【HDL系列】Sklansky加法器原理与设计_第4张图片

第二级:(绿色字体表示对高位进位有用)

在这一级,开始以2比特为1组,

【HDL系列】Sklansky加法器原理与设计_第5张图片

第一级C0输出的结果C0=0,所以第1组中,选择已经计算出的结果S1=1,C1=0

第2-4组又分别以组的单位分别假设C=0和C=1的情况,相当于2比特加法器,

当C=0:

S和C的结果为(上图中序号3部分)

【HDL系列】Sklansky加法器原理与设计_第6张图片

当C=1:

S和C的结果为(上图中序号4部分)

【HDL系列】Sklansky加法器原理与设计_第7张图片

其实C=1这部分的S和C只要照抄下来就好了,这个例子中每一位对高位都有进位,忽略低位的进位,以组为单位,所以只有每组的高比特对于下一级有用。

【HDL系列】Sklansky加法器原理与设计_第8张图片

第三级

根据2比特一组的进位做出下一组S和C的选择:

显然第一组中进位C1=0,所以第2组的S和C选择当C=0的S和C情况

【HDL系列】Sklansky加法器原理与设计_第9张图片

再以4比特分组,也就是4比特加法器,将之前2比特一组的进位加入到其高一组的数据中(上图中序号5,6部分)

【HDL系列】Sklansky加法器原理与设计_第10张图片

第四级

根据第一组输出的进位C3=1,所以,选择假设C=1的S和C的输出,即(上图中序号7,8部分):

【HDL系列】Sklansky加法器原理与设计_第11张图片

所以最终结果为:

【HDL系列】Sklansky加法器原理与设计_第12张图片

以上过程与手算一致,只不过其实实际过程没有不必这么复杂,从表格上去细究容易混乱,可以先看CSA的原理。

二、Sklansky加法器

Sklansky设计了基于进位选择器的7比特加法器:

【HDL系列】Sklansky加法器原理与设计_第13张图片 7比特Sklansky加法器(CSA加法器)

如果Si或Ci上标中含有k个“*”,则表示当前的Si或Ci基于S(i-k-1)或者C(i-k-1)等于0或者1 的假设得到,假设为0或者1取决于Si或Ci的上标。如

其中H,Q1,Q2,Q3分别如下图所示:

 

【HDL系列】Sklansky加法器原理与设计_第14张图片 H,Q1,Q2,M计算单元

在H,Q1,Q2,M计算单元示意图中“。”表示相与操作,I表示取反操作,V表示或操作。

三、Verilog设计

将Sklansky加法器的结构通过树形结构展示将会变得更加直观,如下图所示:

【HDL系列】Sklansky加法器原理与设计_第15张图片 16比特Sklansky加法器树形结构

图中T=0,1,2,3,4的节点计算单元均不同,每一级的计算单元都类似。黄色表示最后的进位与和都在此单元节点输出,而且标识了前一级进位向高一级的进位传递的过程。

基于以上结构设计一个16比特的Sklansky加法器,分二部分:

(1)设计进位选择加法器(CSA),分别需要设计1-bit CSA, 2-bit CSA, 4 bit CSA和8比特CSA,可以通过参数化实现;每个CSA中,对于进位为0的情况,使用全加器组成;对于进位为1的情况,使用全减器。

(3)将每一层进位选择加法器进行级联,并根据不同的比特分组,用低一级的进位选择得到进位与和的。

 

欢迎批评指正,更多阅读,关注“纸上谈芯”,不定期更新,共同学习:

【HDL系列】Sklansky加法器原理与设计_第16张图片

你可能感兴趣的:(纸上谈芯)