运算电路(1)——加法器
一、引言
微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片组成微型计算机。微处理器(CPU、MCU、DSP、GPU、NPU等)是最重要的一类集成电路,没有之一。其构成如下图所示:
其中数据通路的构成如下:
本文就主要介绍数据通路的相关内容,包括其中的各种复杂运算单元。
二、加法器:一位
2.1 半加器
半加器作为一个非常经典的电路设计是初学者避不开的一个话题。其本质就是实现了不带进位输入的二进制加法运算,其真值表如下
a | b | carry | sum |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
根据真值表我们可以很容易得出:
carry = a & b ;
sum = a ^ b ;
对应的电路结构如下:
对应真值表不同的输入情况如下:
2.2 全加器
有了半加器我们就解决了一位二进制数的加法问题,但是这显然还是不够的,要想实现多位二进制数的加法问题,我们就必须在现有电路的基础上进行改进,首先就是要引入进位输入。
和之前一样,我们还是先给出真值表
A | B | Cin | Sum | Cout |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
根据真值表给出逻辑式:
Sum = A ^ B ^ Cin;
Cout = ( A & B ) | (( A ^ B ) & Cin);
其静态CMOS管实现如下:
对于这样的加法器,我们还是希望能够进行进一步的优化,优化的方向有2个:(1)提高速度(2)缩小面积
优化的途径如下:
- 逻辑层优化:重新安排布尔方程
- 结构层优化:调整整体拓扑结构
- 电路级优化:优化管级电路
- 器件级优化:优化晶体管尺寸
三、加法器:多位
3.1 串行进位加法器
3.1.1 构成
串行进位加法器亦称传播进位加法器(Carry-Propagate Adder,CPA)、行波进位加法器(ripple carry adder)。我们以搭建一个4位的加法器为例,这种加法器的设计思路非常的简单,就是把上一个加法器的进位连接到下一个加法器的进位输入端,具体的设计电路如下:
3.1.2 HDL描述
3.1.3 传播延时
对于串行进位加法器来说,其关键路径如下图所示:
延时计算:tadder_4=t(A0 ,B0→ Co,0 )+t(Co,0 →Co,1 ) +t(Co,1 →Co,2 )+t(Co,2 →S3 )
它的电路延时与输入值有关。最坏情况之一:A=0001,B=0111。对于N位的串行进位加法器来说,传输延时与位数成线性正比关系,位数越多运算越慢;加法器序列的延时受“进位”计算项而非“和”计算项支配,因此如何缩短“进位”链延时是关键。
3.2 超前进位加法器
3.2.1 理解
针对串行进位加法器运算速度慢的问题,有人就提出了超前进位加法器的概念。要理解超前进位加法器的原理,我们需要换一个角度来看全加器:
一个全加器的输入有:数据A、数据B、前级的进位Cin,输出有:和S、进位Cout。我们要做的就是根据对应的输入给出对应的输出。我们知道限制串行进位加法器运算速度的主要问题是进位的运算。这里我们考虑Cout的运算,如果A=B=0,那么无论Cin是0或1,都不会产生进位,所以Cout恒等于0,我们称这种情况为取消(D);如果A=B=1,那么无论Cin是0或1,都会产生进位,所以Cout恒等于1,我们称这种情况为产生(G);如果A和B中有且只有一个为0,那么无论Cout就取决于Cin,Cout = Cin,我们称这种情况为传播(P)。
这样一来,原来的计算公式就可以进行如下变换:
基于此完成公式的递推:
3.2.2 HDL描述
3.3.3 逻辑门实现
3.3.4 nFET实现
3.3.5 不足
采用超前进位加法器似乎做到了快速计算的效果,但是却存在扇入过大,使得N值较大时很慢; 扇出过大,亦会显著加大延迟;实现面积随N的增加而快速增加的问题,因此一般适用于N≤4的情况。
3.3 曼彻斯特加法器
3.3.1 原理
3.3.2 电路结构
对于上图中的电路,每一时刻有且只有1个FET是导通的。考虑到p,g,k只能有一个为1,可以变换电路结构:
3.3.3 动态CMOS
可以采用动态CMOS实现上述电路:
- 预充电(
=0) M4导通, M3截止;对负载电容充电,输出被拉至逻辑1
求值(=1)M4截止, M3导通;
![]()
- 优点:速度快,无比逻辑
- 缺点:需时钟φ控制,输出节点电压保持时间有限(在pi=0,gi=0,φ=1时)
3.3.4 进位链
3.3.5 延迟分析
- 进位链的延时与链长N的平方成正比,即曼彻斯特链减少了每一级的延时(RC),与N的敏感性却增加了。因此,曼彻斯特进位链一般不超过四阶,常作为宽位加法器的基本运算单元
- 插入缓冲器可以降低进位链的总延迟,并使延时正比于N。 插入缓冲器的最佳级数取决于反相器的等效电阻及传输管的RC,通常为3~4级
3.4 宽位加法器
在如今的电子设备中,大多数都是宽位计算机,例如台式计算机多为32bit/64bit、服务器多为64bit、大型机及超级机可达128bit。这就会导致位数↑→通过最长时延路径的门数↑→最高进位计算时延↑→进位链的总延时↑。因此我们需要使宽位加法器的进位链长度平摊→多层(多级)CLA电路。
我们以基于4位超前进位加法器的宽位加法器为例:
它的传播延时计算如下:
3.5 进位旁路加法器
3.5.1 原理
Carry-Bypass Circuits:在一定条件下,使进位绕过加法器的一部 分进行传播,用于宽位加法器的加速。
3.5.2 延时分析
3.6 进位选择加法器
Carry-Select Adder:采用多个位数较少的加法器,通过 进位选择的方式来构成快速的宽位加法器。
相关文章:

运算电路(1)——加法器
一、引言 微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令,以及与外界存储器和逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片…...

ESP32-WIFI(Arduino)
ESP32-WIFI Wi-Fi是一种基于IEEE 802.11标准的无线局域网技术,是Wi-Fi联盟制造商的商标作为产品的品牌认证。它可以让电脑、手机、平板电脑等设备通过无线信号连接到互联网 。 在无线网络中,AP(Access Point)和 STA(St…...

【网络虚拟化】网络设备常见冗余方式——堆叠、M-Lag、DRNI
网络设备常见冗余设计——堆叠、M-Lag、DRNI 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 网络设备常见冗余设计——堆叠、M-Lag、DRNI 网络设备常见冗余设计——堆叠、M-Lag、DRNI前言一、网络设备虚拟化二、堆叠技术1.技术原理2.…...

arm的侏罗纪二 cache学习
个人觉得inner shareable和outer shareable;POU和POC 是难点,慢慢学习吧。 inner shareable是cluster内 outer shareable是cluster之间 参考文献: 深入学习Cache系列 1: 带着几个疑问,从Cache的应用场景学起 https://www.eet-c…...

Protecting Intellectual Property of Deep NeuralNetworks with Watermarking
保护深度神经网络的知识产权与数字水印技术 ABSTRACT 深度学习是当今人工智能服务的关键组成部分,在视觉分析、语音识别、自然语言处理等多个任务方面表现出色,为人类提供了接近人类水平的能力。构建一个生产级别的深度学习模型是一项非常复杂的任务&a…...

c++学习笔记-STL案例-机房预约系统1-准备工作
前言 准备工作包括:需求分析、项目创建、主菜单实现、退出功能实现 目录 1 机房预约系统需求 1.1 简单介绍 1.2 身份介绍 1.3 机房介绍 1.4 申请介绍 1.5 系统具体要求 1.6 预约系统-主界面思维导图 2 创建项目 2.1 创建项目 2.2 添加文件 编辑 3 创建…...

AnnData:单细胞和空间组学分析的数据基石
AnnData:单细胞和空间组学分析的数据基石 今天我们来系统学习一下单细胞分析的标准数据类型——AnnData! AnnData就是有注释的数据,全称是Annotated Data。 AnnData是为了矩阵类型数据设计的,也就是长得和表格一样的数据。比如…...

C语言中的 `string.h` 头文件包含的函数
C语言中的 string.h 头文件包含了许多与字符串或数字相关的函数。这些函数可以用于字符串的复制、连接、搜索、比较等操作。 常用字符串函数 函数名功能strlen()返回字符串的长度strcpy()将一个字符串复制到另一个字符串中strncpy()将最多 n 个字符从一个字符串复制到另一个字…...

kotlin的抽象类和抽象方法
在 Kotlin 中,抽象类和抽象方法是面向对象编程中的概念,用于实现抽象和多态性。抽象类无法实例化,这意味着我们无法创建抽象类的对象。与其他类不同,抽象类总是打开的,因此我们不需要使用open关键字。 抽象类ÿ…...

2022年面经记录(base杭州)
duandian科技(笔试未通过) 笔试题:leetCode热题第20题有效的括号 面后感:没怎么刷算法题,js 基础不扎实 laiweilai(三面未通过) 一面:笔试题 写一个函数,获取url中的指定…...

安装Docker图形管理界面portainer
安装Docker图形管理界面portainer 映射data文件夹根据自己环境更换 docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /yourpath/docker/portainer:/data --restartalways portainer/portainer-ce:latest好好享受吧!…...

Linux学习记录——사십 高级IO(1)
文章目录 1、IO2、同、异步IO(5种IO类型)3、其它高级IO4、非阻塞IO 其它IO类型的实现在这篇之后的三篇 1、IO input,output。调用read或recv接口时,如果对方长时间不向我方接收缓冲区拷贝数据,我们的进程就只能阻塞&a…...

【代码随想录】2
数组篇 二分查找 int search(int* nums, int numsSize, int target) { int left0; int rightnumsSize-1; while(left<right) {int mlddle(leftright)/2;if(nums[mlddle]>target){rightmlddle-1;}else if(nums[mlddle]<target){leftmlddle1;}else{return mlddle;}} r…...

TCP性能分析
ref: TCP性能和发送接收窗口、Buffer的关系 | plantegg...

RibbonGroup 添加QRadioButton
RibbonGroup添加QRadioButton: QRadioButton * pRadio new QRadioButton(tr("Radio")); pRadio->setToolTip(tr("Radio")); groupClipboard->addWidget(pRadio); connect(pRadio, SIGNAL(clicked(…...

一篇文章掌握WebService服务、工作原理、核心组件、主流框架
目录 1、WebService定义 解决问题: 2、WebService的工作原理 2.1 实现一个完整的Web服务包括以下步骤 2.2 调用方式 3、Web Service的核心组件 3.1 XML 3.2 SOAP 3.3 WSDL 3.4 UDDI 4、主流框架 4.1 AXIS(已淘汰) 4.2 XFire 4.3 CXF 5、Soap协议详解…...

观成科技-加密C2框架EvilOSX流量分析
工具简介 EvilOSX是一款开源的,由python编写专门为macOS系统设计的C2工具,该工具可以利用自身释放的木马来实现一系列集成功能,如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信,通信内容为特…...

PCL 计算异面直线的距离
目录 一、算法原理二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,PCL 计算异面直线的距离,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 设置直线 A B AB A...

【数字人】9、DiffTalk | 使用扩散模型基于 audio-driven+对应人物视频 合成说话头(CVPR2023)
论文:DiffTalk: Crafting Diffusion Models for Generalized Audio-Driven Portraits Animation 代码:https://sstzal.github.io/DiffTalk/ 出处:CVPR2023 特点:需要音频对应人物的视频来合成新的说话头视频,嘴部抖…...

完成源示例
本主题演示如何创作和使用自己的完成源类,类似于 .NET 的 TaskCompletionSource。 completion_source 示例的源代码 下面的列表中的代码作为示例提供。 其目的是说明如何编写自己的版本。 例如,支持取消和错误传播不在此示例的范围内。 #include <w…...

业务和流程的关系
背景 概念不清,沟通就容易出现问题,最可怕会出现跑偏情况如何解决,数字化落地过程,程序是死的,最怕灵活,所以在沟通和编码,设计中,很重要的一点就是解决概念,澄清问题&a…...

【河海大学论文LaTeX+VSCode全指南】
河海大学论文LaTeXVSCode全指南 前言一、 LaTeX \LaTeX{} LATEX的安装二、VScode的安装三、VScode的配置四、验证五、优化 前言 LaTeX \LaTeX{} LATEX在论文写作方面具有传统Word无法比拟的优点,VScode作为一个轻量化的全功能文本编辑器,由于其极强的…...

学习python仅此一篇就够了(文件操作:读,写,追加)
python文件操作 文件编码 编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。 计算机中有许多可用编码: UTF-8 GBK BUG5 文件的读取操作 open()函数 在pyth…...

vue中 ref 和 $refs的使用
1. 作用 利用 ref 和 $refs 可以用于 获取 dom 元素, 或 组件实例 2. 获取 dom 使用步骤: 2.1 目标标签添加属性 :ref <div ref"chartRef">我是渲染图表的容器</div>2.2 通过$ref:获取标签 mounted() {console.log(this.$re…...

Centos7升级openssl到openssl1.1.1
Centos7升级openssl到openssl1.1.1 1、先查看openssl版本:openssl version 2、Centos7升级openssl到openssl1.1.1 升级步骤 #1、更新所有现有的软件包列表并安装最新的软件包: $sudo yum update #2、接下来,我们需要从源代码编译和构建OpenS…...

uniapp中实现H5录音和上传、实时语音识别(兼容App小程序)和波形可视化
文章目录 Recorder-UniCore插件特性集成到项目中调用录音上传录音ASR语音识别 在uniapp中使用Recorder-UniCore插件可以实现跨平台录音功能,uniapp自带的recorderManager接口不支持H5、录音格式和实时回调onFrameRecorded兼容性不好,用Recorder插件可避免…...

HashMap集合万字源码详解(面试常考)
文章目录 HashMap集合1.散列2.hashMap结构3.继承关系4.成员变量5.构造方法6.成员方法6.1增加方法6.2将链表转换为红黑树的treeifyBin方法6.3扩容方法_resize6.3.1扩容机制6.3.2源码resize方法的解读 6.4 删除方法(remove)6.5查找元素方法(get)6.6遍历HashMap集合几种方式 7.初始…...

LeetCode1124. Longest Well-Performing Interval
文章目录 一、题目二、题解 一、题目 We are given hours, a list of the number of hours worked per day for a given employee. A day is considered to be a tiring day if and only if the number of hours worked is (strictly) greater than 8. A well-performing in…...

如何使用手机公网远程访问本地群辉Video Station中视频文件【内网穿透】
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1.使用环境要求:2.下载群晖videostation&am…...

事件分析应急响应-Server2229(环境+解析)
任务环境说明: 服务器场景:Server2229(开放链接)用户名:root,密码:...