verilog加法器_【HDL系列】Kogge-Stone加法器原理与设计
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的计算图例。
上图为x1-x8的计算步骤,系数和公式,分三个时间步骤完成:
- T=0:输入系数b1-b7
- T=1:根据其对应的a1-a8系数计算相邻两项
- T=2:再次根据算式合并Q值
根据以上x1至x8的计算方式,画出其图例如下,如果看过本号之前的文章,相信你对此结构已经非常熟悉:
二、Kogge-Stone加法器
基于以上介绍的Kogge-Stone的一阶递归问题的并行结构,如何应用到加法器中呢?我们先回顾下超前进位加法器中进位链的计算。
对于N比特的A和B两数,结果为N比特S和1比特进位Cout,超前进位加法器的进位链与和公式的计算公式如下:
其中:
重点关注进位链ci的生成算式,发现其属于Kogge-Stone概括的一阶递归问题:
所以ci算式写成Kogge-Stone形式:
所以,如对于C1-C4等的生成,其算式如下:
根据以上原理,8比特的加法器进位链并行计算的Kogge-Stone形式的树形结构如下图所示:
三、Verilog设计
设计一个16比特的Kogge-Stone加法器,分三部分:
(1)生成g,p信号,由半加器模块组成;
(2)每个节点处理单元实现,即每个节点中的系数生成和每个独立的Q值计算;
(3)生成输出进位Cout和S信号。
该16比特Kogge-Stone位加法器进位链的树形结构如下图所示:
从图中足以见Kogge-Stone结构加法器布线尤其拥塞,但其好处在于进位链生成的延迟单位少。在verilog中根据其规律使用generate和endgenerate语句生成各级信号如下。
欢迎批评指正,更多阅读,关注“纸上谈芯”,不定期更新,共同学习:
verilog加法器_【HDL系列】Kogge-Stone加法器原理与设计相关推荐
- 四位行波进位加法器_【HDL系列】硬件加法器原理与设计小结
硬件加法器种类繁多,对于不同的设计,加法器的需求也不一样.在前端设计中,使用符号"+"便可轻而易举地实现加法器.只是在特殊的情况下,指定选择加法器类型,或许可以用到.其他情况,可以 ...
- 四位行波进位加法器_【HDL系列】Sklansky加法器原理与设计
Sklansky加法器是另一种并行高速的树形加法器,由Sklansky于1959年发表,该加法器对比特位进位层级分组,根据对不同比特组所有可能的进位计算所有可选的和与进位,所以也叫Conditiona ...
- 4位先行进位加法器_行波进位/超前进位加法器详解
行波进位加法器是串行执行的,其高位的运算要依赖低位的进位,所以当输入数据的位数较多时,会形成很大的延迟并可能成为芯片的关键路径. 采用超前进位加法器(也叫先行进位加法器)可以有效减小这种延迟.下面介绍 ...
- python 微服务架构实战_《分布式服务架构:原理、设计与实战》第一章分布式微服务架构设计原理...
1.从传统单体架构到服务化架构 1.1 JEE架构 JEE将企业级软件架构分为三个层级 : Web 层.业务逻辑层和数据存取层.对应的职能团队,主要包括:用户 交互 UI 团队.后台业务逻辑处理团 队 ...
- 四位行波进位加法器_【HDL系列】超前进位加法器原理与设计
上期介绍了半加器.全加器以及行波进位加法器(RCA),本文介绍超前进位加法器(Lookahead Carry Adder,简称LCA).在介绍超前进位加法器前,我们先来分析下行波进位加法器的关键路径. ...
- 四位行波进位加法器_【HDL系列】进位选择加法器原理与设计
前期已介绍了行波进位加法器(Ripple Carry Adder, RCA)依赖于低位进位,所以具有超长的进位链和关键路径.对于RCA的改进中,进位选择加法器(Carry Select Adder)是 ...
- 【连载】 FPGA Verilog HDL 系列实例--------8-3 BCD七段显示译码器
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 8-3 BCD七段显示译码器 一.原理 7段数码管是利用不同发光段组合的方式来显示不同的数码,为了试数码管能将数码所代 ...
- 四位行波进位加法器_《城市:天际线》中的图灵机:用水电管道做一个四位加法器...
你真的可以在<城市:天际线>游戏中构建一个4位加法器(4-bit adder). <城市:天际线>是一款城市模拟游戏,其复杂的游戏机制甚至允许玩家在当中建起通用逻辑门(univ ...
- 四位行波进位加法器_加法器学习记录
半加器 module 全加器 module 行波进位加法器 十分简单,直接串联n个全加器即可得到n位行波进位加法器,但字长较大时速度太慢 module 超前进位加法器 下面这篇文章讲清楚了原理 如何用 ...
最新文章
- SVN服务器搭建和使用(一)
- 个人Web前端开发切图PS设置
- 计算机视觉和图像分类,图像分类 - 计算机视觉 - Azure Cognitive Services | Microsoft Docs...
- 资讯|WebRTC M89 更新
- Silverlight 4 Beta开发版带着许多新特性发布
- do语句转化为局部函数一例
- Q1:spring-boot中Controller路径无法被访问的问题
- linux 静态库 解包,libcurl编译linux静态库及使用总结(编译成功库下载)
- 【解题报告】表达式求值(栈,表达式树)
- paip.vs2010 开发ASP浏览时的设置
- 前端开源项目周报0221
- 智能语音交互之简单实例
- php如何pfx转成jks证书,常规方法不行,变相来实现
- 【Unity】Google内购
- JSON树转换成线性列表(python)
- 薛之谦一半的高潮用计算机弹怎么按,如何解读薛之谦的歌《一半》?
- 7-11 最长的单词
- [Erlang危机]Erlang In Danger 序言(必读)
- 蓝奏云直链解析API接口
- 20230208 对偶四元数的乘法
热门文章
- r语言集合补集_【高中数学必修1研读】之一“第一章 集合与函数概念”
- 折半查找(非递归与递归实现)
- 使用javascript来实现最原始的ajax操作
- 学习Java之前的一些话
- 春晚红包:挺住的百度和崩坏的应用商店
- 最大传输单元(MTU)
- 《Linux From Scratch》第二部分:准备构建 第三章:软件包与补丁- 3.2. 所有软件包...
- Python操作文件文档
- bzoj4390[Usaco2015 dec]Max Flow*
- 软件工程随堂小作业—— 寻找“水王”(C++)