运算电路(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…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...