Kogge-Stone加法器是利用Peter M. Kogge和Harold S.Stone于1972年提出的一种并行算法生成的一种树形加法器。

一、Kogge-Stone并行算法

Kogge和Stone根据一般m阶递归问题提出一种并行算法。本文介绍其一阶递归问题的并行结构,详细请阅读其论文。

对于序列X1,X2,X3,…,Xn,其中Xi是其之前m个数的函数,也就是:

以上是一个常见的问题,如线性时变系统,对于i时刻的Xi,可由下式计算而来:

其中Ai和Bi表示系统内部动态系数,可为实数或者复数,常量,时变矩阵等。

使用简化的并行算法解决以下一阶递归问题,给定X1=b1,则

为解决如上问题,论文中定义了下式:

其中对ar系数使用的是连乘符合,之后与bj相乘后使用的是累积和符号。

所以,

上式又可以重新写成如下形式:

其一般形式为:

Q(i,1)和 Q(2i,i+1)可以独立计算,Q(i,1)和Q(2i,i+1)又可以单独分解独立计算,每个层级都可以独立计算,因此加快了运算速度。以下是x8的计算图例。

x8计算示意图
X1至X8的计算步骤、系数与公式,来源Kogge-Stone论文

上图为x1-x8的计算步骤,系数和公式,分三个时间步骤完成:

  • T=0:输入系数b1-b7
  • T=1:根据其对应的a1-a8系数计算相邻两项
  • T=2:再次根据算式合并Q值

根据以上x1至x8的计算方式,画出其图例如下,如果看过本号之前的文章,相信你对此结构已经非常熟悉:

X1至X8的计算图示

二、Kogge-Stone加法器

基于以上介绍的Kogge-Stone的一阶递归问题的并行结构,如何应用到加法器中呢?我们先回顾下超前进位加法器中进位链的计算。

对于N比特的A和B两数,结果为N比特S和1比特进位Cout,超前进位加法器的进位链与和公式的计算公式如下:

其中:

重点关注进位链ci的生成算式,发现其属于Kogge-Stone概括的一阶递归问题:

所以ci算式写成Kogge-Stone形式:

所以,如对于C1-C4等的生成,其算式如下:

根据以上原理,8比特的加法器进位链并行计算的Kogge-Stone形式的树形结构如下图所示:

8位加法器进位链Ci生成树形图

三、Verilog设计

设计一个16比特的Kogge-Stone加法器,分三部分:

(1)生成g,p信号,由半加器模块组成;

(2)每个节点处理单元实现,即每个节点中的系数生成和每个独立的Q值计算;

(3)生成输出进位Cout和S信号。

该16比特Kogge-Stone位加法器进位链的树形结构如下图所示:

16位加法器进位链生成树形图

从图中足以见Kogge-Stone结构加法器布线尤其拥塞,但其好处在于进位链生成的延迟单位少。在verilog中根据其规律使用generate和endgenerate语句生成各级信号如下。

16比特Kogge-Stone加法器PG生成逻辑
16比特Kogge-Stone加法器level1生成逻辑
16比特Kogge-Stone加法器level2生成逻辑
16比特Kogge-Stone加法器level3生成逻辑
16比特Kogge-Stone加法器level4生成逻辑
16比特Kogge-Stone加法器和S生成逻辑

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

verilog加法器_【HDL系列】Kogge-Stone加法器原理与设计相关推荐

  1. 四位行波进位加法器_【HDL系列】硬件加法器原理与设计小结

    硬件加法器种类繁多,对于不同的设计,加法器的需求也不一样.在前端设计中,使用符号"+"便可轻而易举地实现加法器.只是在特殊的情况下,指定选择加法器类型,或许可以用到.其他情况,可以 ...

  2. 四位行波进位加法器_【HDL系列】Sklansky加法器原理与设计

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

  3. 4位先行进位加法器_行波进位/超前进位加法器详解

    行波进位加法器是串行执行的,其高位的运算要依赖低位的进位,所以当输入数据的位数较多时,会形成很大的延迟并可能成为芯片的关键路径. 采用超前进位加法器(也叫先行进位加法器)可以有效减小这种延迟.下面介绍 ...

  4. python 微服务架构实战_《分布式服务架构:原理、设计与实战》第一章分布式微服务架构设计原理...

    1.从传统单体架构到服务化架构 1.1 JEE架构 JEE将企业级软件架构分为三个层级 : Web 层.业务逻辑层和数据存取层.对应的职能团队,主要包括:用户 交互 UI 团队.后台业务逻辑处理团 队 ...

  5. 四位行波进位加法器_【HDL系列】超前进位加法器原理与设计

    上期介绍了半加器.全加器以及行波进位加法器(RCA),本文介绍超前进位加法器(Lookahead Carry Adder,简称LCA).在介绍超前进位加法器前,我们先来分析下行波进位加法器的关键路径. ...

  6. 四位行波进位加法器_【HDL系列】进位选择加法器原理与设计

    前期已介绍了行波进位加法器(Ripple Carry Adder, RCA)依赖于低位进位,所以具有超长的进位链和关键路径.对于RCA的改进中,进位选择加法器(Carry Select Adder)是 ...

  7. 【连载】 FPGA Verilog HDL 系列实例--------8-3 BCD七段显示译码器

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 8-3 BCD七段显示译码器 一.原理 7段数码管是利用不同发光段组合的方式来显示不同的数码,为了试数码管能将数码所代 ...

  8. 四位行波进位加法器_《城市:天际线》中的图灵机:用水电管道做一个四位加法器...

    你真的可以在<城市:天际线>游戏中构建一个4位加法器(4-bit adder). <城市:天际线>是一款城市模拟游戏,其复杂的游戏机制甚至允许玩家在当中建起通用逻辑门(univ ...

  9. 四位行波进位加法器_加法器学习记录

    半加器 module 全加器 module 行波进位加法器 十分简单,直接串联n个全加器即可得到n位行波进位加法器,但字长较大时速度太慢 module 超前进位加法器 下面这篇文章讲清楚了原理 如何用 ...

最新文章

  1. SVN服务器搭建和使用(一)
  2. 个人Web前端开发切图PS设置
  3. 计算机视觉和图像分类,图像分类 - 计算机视觉 - Azure Cognitive Services | Microsoft Docs...
  4. 资讯|WebRTC M89 更新
  5. Silverlight 4 Beta开发版带着许多新特性发布
  6. do语句转化为局部函数一例
  7. Q1:spring-boot中Controller路径无法被访问的问题
  8. linux 静态库 解包,libcurl编译linux静态库及使用总结(编译成功库下载)
  9. 【解题报告】表达式求值(栈,表达式树)
  10. paip.vs2010 开发ASP浏览时的设置
  11. 前端开源项目周报0221
  12. 智能语音交互之简单实例
  13. php如何pfx转成jks证书,常规方法不行,变相来实现
  14. 【Unity】Google内购
  15. JSON树转换成线性列表(python)
  16. 薛之谦一半的高潮用计算机弹怎么按,如何解读薛之谦的歌《一半》?
  17. 7-11 最长的单词
  18. [Erlang危机]Erlang In Danger 序言(必读)
  19. 蓝奏云直链解析API接口
  20. 20230208 对偶四元数的乘法

热门文章

  1. r语言集合补集_【高中数学必修1研读】之一“第一章 集合与函数概念”
  2. 折半查找(非递归与递归实现)
  3. 使用javascript来实现最原始的ajax操作
  4. 学习Java之前的一些话
  5. 春晚红包:挺住的百度和崩坏的应用商店
  6. 最大传输单元(MTU)
  7. 《Linux From Scratch》第二部分:准备构建 第三章:软件包与补丁- 3.2. 所有软件包...
  8. Python操作文件文档
  9. bzoj4390[Usaco2015 dec]Max Flow*
  10. 软件工程随堂小作业—— 寻找“水王”(C++)