【HDL系列】进位保存加法器原理与设计_进位保留加法器-程序员宅基地

技术标签: CSA  进位保存加法器  CSA树形结构  纸上谈芯  3:2 Compressor  verilog  

目录

一、进位保存加法器

二、3:2 Compressors


一、进位保存加法器

进位保存加法器(Carry Save Adder,CSA)终于开启了读者见面会。在之前介绍的众多加法器的缩写中,CSA众多。比较广为人知的CSA可能是进位保存加法器,所以它是怎样的存在呢?

使用进位保存加法器在执行多个数加法时具有极小的进位传播延迟,它的基本思想即将3个加数的和减少为2个加数的和,将进位c和和s分别计算保存,并且每比特可以独立计算c和s,所以速度极快

在许多加法计算中,一般有2个以上,或者更多的加数。

如:    Sum = A + B + C + D + E + …

最直接的办法是:先将A+B结果计算出来,再与C计算,依次进行,如下图(1)。

对于m个数相加,每个数n比特宽,总共需要m-1次加法。假如使用超前进位加法器LCA的话,直接相加法总共需要的门延迟为O(lg n);如果使用树形加法器(后期会介绍),门延迟将变为O(lg m * lg n)

使用进位保存加法器CSA结构则可以将门延迟降到更低,其结构如上图(2)所示,它将3个数相加转换为2个数相加,在树的根部,加数宽度变为O(n+log m),因此如果最后一个加法器用LCA的话,则门延迟为O(lg(n+lg m))。

以(10 + 7 + 12 = 29)为例看看进位保存加法器是啥高级操作:

10的二进制1010;7的二进制111;12的二进制1100;列出如下算式,按列2进制数相加,满2进1,这就是普通的竖式计算,结果为11100,即29。

竖式计算

而进位保存加法器将进位Carry与和Sum分开计算,计算步骤如下:

(1)计算和Sum:每一列数相加,对进制数取模,此处为二进制,如(0+1+0)=1,(0+1+1)=0,(1+1+1)=1。

(2)计算进位Carry:从竖式低位开始计算,低位向高位进位,每一列的数相加对进制数取商。如下式中,(0+1+0)/ 2 = 0 … 1,(1+1+0)/ 2 = 1 … 0,忽略余数。低位向高位传递进位。

(3)如下式子中,3个数的和变成了2个数,Carry和Sum,分别是11100和00001,注意,此处Carry是11100不是1110,因为是低位往高位进位,最低位进位为0,从竖式也可以看出,对Carry和Sum相加,结果仍然是11101,即29。

CSA进位Carry与和Sum竖式计算方法

 

二、3:2 Compressors

3:2 Compressor是进位保存加法器的一种,它将三个数的和转换为2个数的和,基本行为与第一部分描述的一致,根据算式的行为,列出其真值表如下:

定睛一看,3:2 Compressor就是一个全加器啊!

所以只要将全加器经过如下的变换,就可以将全加器FA生成进位保存加法器CSA,简直换汤不换药,重新包装了一下。

三个32比特的数x,y,z相加,其CSA结构如下:

在使用verilog设计一个算式如Sum = A + B + C + D;则可以设计一个全加器,由全加器组成N比特的CSA结构,将多个数合并,经过两级CSA,最后将进位C[N-1:0]与和Sum[N-1:0]通过一个加法器相加,注意进位传入到任何模块中时,需要将C[N-1:0]乘以2,因为这是它合并后真正的数。

 

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhouxuanyuye/article/details/103947258

智能推荐

liunx中ls -la-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏7次。ls 列出目录(文件夹)中的文件和子目录-l 长格式列出-a 显示所有文件,包括隐藏文件和目录(所有以“.”为开始的文件和目录为隐藏文件)所以ls -la 是列出当前目录中的所有文件和目录,包括隐藏文件和目录但不是查看文件里面的内容,查看文件的里的内容用的是more,less,cat等命令_ls -la

Java pta 面对对象(下)_定义一个车辆类(vehicle)和它的一个子类——客车类(bus),具体要求如下:(1)车辆类v-程序员宅基地

文章浏览阅读984次,点赞21次,收藏18次。Java pta 面对对象(下)7-1 定义一个车辆类和它的一个子类——客车类7-2 jmu-Java-03面向对象基础-04-形状-继承_定义一个车辆类(vehicle)和它的一个子类——客车类(bus),具体要求如下:(1)车辆类v

图像处理中常用的彩色模型_cmy-程序员宅基地

文章浏览阅读3.6w次,点赞10次,收藏68次。颜色模型就是描述用一组数值来描述颜色的数学模型。在彩色图像处理中,选择合适的彩色模型是很重要的。从应用的角度来看,彩色模型可分为两类:面向硬件设备的彩色模型面向视觉感知的彩色模型_cmy

计算机毕业设计 SSM+Vue健身房系统 健身会员管理系统 健身俱乐部管理系统 健身会所管理系统 健身预约教练管理系统Java Vue MySQL数据库 远程调试 代码讲解_ssm vue健身管理系统源码百度网盘-程序员宅基地

文章浏览阅读146次。计算机毕业设计 SSM+Vue健身房系统 健身会员管理系统 健身俱乐部管理系统 健身会所管理系统 健身预约教练管理系统_ssm vue健身管理系统源码百度网盘

LangChain - Chain-程序员宅基地

文章浏览阅读771次,点赞20次,收藏25次。1、概览为什么我们需要链?2、快速入门 (Get started) - Using `LLMChain`多个变量 使用字典输入在 `LLMChain` 中使用聊天模型:3、异步 API4、不同的调用方法`__call__`调用仅返回输出键值 return_only_outputs只有一个输出键 run只有一个输入键5、自定义chain6、调试链 (Debugging chains)7、从 LangChainHub 加载8、添加记忆(state)9、序列化将chain 保存到

C++中STL的set的简单示例_c++ set example-程序员宅基地

文章浏览阅读176次。使用如下代码演示了,一个set的string类型的容器中元素的插入,删除和遍历操作。#include "stdafx.h"#include <iostream>#include <set>#include <string>using namespace std;int main(int argc, char *argv[]){ set&..._c++ set example

随便推点

TailwindCSS为前端开发者带来了什么?_tailwindcss的优点-程序员宅基地

文章浏览阅读2.3k次。什么是Tailwind CSS?Tailwind CSS是一个功能类优先的CSS框架,它集成了flex、text-center这样的类,Tailwind CSS希望实现的是开发者无需离开HTML页面,即可快速创建出各种样式效果。Tailwind CSS相较于其他CSS框架有什么优势?优势1:Tailwind CSS类名具有较好的语义化传统的语义化类名是CSS难以维护的重要原因,也就是说起名很麻烦,但是Tailwind CSS的语义化类名可以很好的解决这个问题,例如:text-lg:表示一个_tailwindcss的优点

python 设置全局变量-程序员宅基地

文章浏览阅读8.2k次,点赞3次,收藏14次。python 设置全局变量,跨文件使用_python 设置全局变量

遍历磁盘_遍历所有移动硬盘-程序员宅基地

文章浏览阅读1.2k次。#include "stdafx.h"#include int main(){ TCHAR buf[MAX_PATH] = {}; int nDriveType; //1 获取磁盘盘符 GetLogicalDriveStrings(MAX_PATH, buf); TCHAR* pDrives = buf; while (_遍历所有移动硬盘

element-ui的隐藏组件el-scrollbar的使用(解决原生滚动条没有隐藏的问题 高宽设置)_el-scrollbar__wrap-程序员宅基地

文章浏览阅读1.3w次,点赞9次,收藏27次。element-ui的官网页面使用的这个滚动条,但是在官网文档中没有介绍这个组件。在vue+elementui搭建的前端项目中使用这个el-scrollbar组件。在项目中使用这个组件时由于各层的样式没有设置好,可能会显示出原生的滚动条,特此记录。搭建脚手架项目,安装element-ui插件按需引入需要的组件import Vue from 'vue'import { Scrollbar} from 'element-ui'Vue.use(Scrollbar)使用<_el-scrollbar__wrap

LabVIEW开发TDS1000 和TDS2000 系列泰克示波器_泰克示波器 labview-程序员宅基地

文章浏览阅读392次,点赞2次,收藏3次。泰克示波器是经常用到的工具,一般手动操作即可,但有时候也要集成到系统中,需要程控。这时候先要下载厂家提供的例子,了解LabVIEW的demo。示波器的功能挺多的,手册也是几百上千页,需要哪些功能,查找对应的部分就可以了。附件给出了LabVIEW的demo,需要的时候可以下载。手册可以到官网上下载,如果查不到,也可以联系厂家在线的技术,他们也会及时提供的。这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。根据通讯协议的相关的说明,编写了适合项目的程序。_泰克示波器 labview

USB转2路RS422串口_ch347转接rs422-程序员宅基地

文章浏览阅读958次。默认建议使用厂商提供的VCP串口驱动程序。CH342DS1.PDF - 南京沁恒微电子股份有限公司CH342技术手册,USB转双串口芯片,支持最高3M波特率,串口信号支持1.8~5V,内置晶振。CH342芯片支持最高4Mbps串口波特率,如果对波特率有更高的需求,可以选择支持9Mbps的高速USB转接芯片CH347,使用单个CH342芯片即可实现USB一拖二串口转接产品,内置USB收发器和控制器、高速全双工串口控制器、以及每个UART内置独立的串口收发FIFO,可轻松满足各类串口波特率下的连续稳定通信。_ch347转接rs422