数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
半加器+半加法和全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。
一、半加器
半加器不考虑低位进位来的进位值,只有两个输入,两个输出。由一个与门和异或门构成.
真值表:
- verilog 数据流级描述:
//半加器模块
module adder_half( input wire a,input wire b,output reg sum,output reg cout);always @(*)beginsum = a ^ b;cout = a & b;end
endmodule
- RTL电路
二、全加器
当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数。这种就是“全加"
真值表:
或者Ci=AiBi+(Ai+Bi)Ci-1![在这里插入图片描述](https://img-blog.csdnimg.cn/20190615163154326.png
这两种表达式的电路图对应如下,功能一样:
- verilog代码实现一(用两个半加器和一个或门实现一个全加器)结构性描述:
//full_adder
module adder_full(a,b,cin,,cout,sum);
input a,b,cin;
output cout,sum;wire w1,w2,w3;adder_half u1(.a(a),.b(b),.sum(w1),.cout(w2));adder_half u2(.a(cin),.b(w1),.sum(sum),.cout(w3));
assign cout = w2 | w3;
endmodule
- verilog代码实现二行为级描述:
//full_adder
module adder_full(a,b,cin,,cout,sum);
input a,b,cin;
output cout,sum;assign {cout,sum} = a+b+cin;endmodule
- 结构性描述的RTL电路
行为级描述的RTL电路
- 对于多位输入的全加器
例如八位全加器用verilog实现:
//8bit_full_adder
module adder_full(a,b,cin,,cout,sum);
input [7:0]a,b;
input cin;
output [7:0]sum;
output cout;assign {cout,sum} = a+b+cin;endmodule
RTL电路图:
之前用八位全加器实现了八位串行的全加器,缺点相当明显,即加法器的延时过高,电路的工作频率低。 此类进位输出,像波浪一样,依次从低位到高位传递, 最终产生结果的加法器,也因此得名为行波进位加法器(Ripple-Carry Adder,RCA)。
如下面的四位全加器
其关键路径如图中红线所示:则其延迟时间为(T+T)*4+T=9T。假设经过一个门电路的延迟时间为T。
对于一个n bit的行波加法器,其延时为(T+T)*n+T=(2n+1)T。
三、超前进位加法器
- 超前进位加法器 (Carry-Lookahead Adder,CLA)是高速加法器,每一级进位有附加的组合电路产生。高位的运算不需要地位的等待,因此速度很高。
考虑每一级的进位:
则对于4 bit的加法器,每个进位如下,可以看出,每个进位都不需要等待地位,直接计算可以得到。由此我们得到了提前计算进位输出的方法, 用这样的方法实现了加法器就被称为超前进位加法器
- 其组合电路如下:
进位延时只有三个门的延时,加上最后一级全加器的延时,最多四个延时时间。
四、行波进位加法器与超前进位加法器比较
对于较大位数的加法器,如32位的加法器。如果采用行波进位的方式,我们已经分析过需要(32*2+1)= 65级的门延迟, 那如果采用超前进位的方式,理想情况下也只需要四级的门延迟,但可惜的是, 这也只是一个理想。因为要实现32位的完全的超前进位,电路就会变得非常的复杂。 因此通常的实现方法, 是采用多个小规模的超前进位加法器拼接而成一个较大的加法器,例如,用4个8-bit的超前进位加法器连接成32-bit加法器。
参考资料:https://www.jianshu.com/p/6ce9cad8b467
数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器相关推荐
- 加法器------半加法器,全加法器,超前进位加法器
一.加法器是什么 举个例子,要表示一个 8 位数的整数,简单地用 8 个 bit,也就是 8 个电路开关.那 2 个 8 位整数的加法,就是 2 排 8 个开关.加法得到的结果也是一个 8 位的整数, ...
- 超前进位加法器实验报告_超前进位加法器设计实验分析
课程 名称 计算机组成原理 实验课时 实验 项目 超前进位加法器设计实验 实验时间 实验 目的 1. 掌握超前进位加法器的原理及其设计方法 . 2. 熟悉 CPLD 应用设计及 EDA 软件的使用 实 ...
- 超前进位加法器实验报告_超前进位加法器设计报告
华东交通大学理工学院 课 程 设 计 报 告 书 所属课程名称 EDA 课程设计 题 目 分 院 专业班级 学 号 学生姓名 指导教师 2013 年 7月 2日 目录 第一章设计内容与要求 ..... ...
- 超前进位加法器实验报告_超前进位加法器
首先画出2位全加器的真值表与卡诺图 根据真值表可知二进制加法与十进制加法一样,进位值是逢二进一.而和值则是上级进位值跟被加数跟加数总和模二的余数.根据卡诺图化简得到S与Ci+1的全加器电路为: 多位加 ...
- 超前进位加法器(附Verilog代码)
超前进位加法器: 普通全加器(行波进位加法器)是单比特全加器的级联,高位需要低位的进位位,故位宽增大时,加法的组合逻辑不断增大,超前进位加法器解决了这一问题. 优点:不需要等待低位的进位.直接计算就可 ...
- 超前进位加法器原理与设计
超前进位加法器原理与设计 一.行波进位加法器关键路径分析 N比特行波进位加法器可由N个全加器级联而成,电路的延迟包括门延迟和线延迟等,分析忽略线延迟. 单比特全加器门电路图 从输入a,b,cin到输出 ...
- 四位行波进位加法器_【HDL系列】超前进位加法器原理与设计
上期介绍了半加器.全加器以及行波进位加法器(RCA),本文介绍超前进位加法器(Lookahead Carry Adder,简称LCA).在介绍超前进位加法器前,我们先来分析下行波进位加法器的关键路径. ...
- verilog 延迟时间 超前进位加法器
延迟时间: 如图4位全加器,此类进位输出,像波浪一样,依次从低位到高位传递, 最终产生结果的加法器,也因此得名为行波进位加法器(Ripple-Carry Adder,RCA).其关键路径如图中红线所示 ...
- 4bit超前进位加法器电路
4bit超前进位加法器电路 题目描述 采用门级描述方式,实现此4bit超前进位加法器,接口电路如下: `timescale 1ns/1nsmodule lca_4(input [3:0] A_in , ...
- 超前进位加法器(较为详细讲解)
先谈谈超前进位加法器设计的初衷. 我们从数电书学到的最基本的加法器的结构是下图这样的: 从图中很好理解加法器的组成. 一位的加法器直接卡诺图既可以画出来. 但是这样的结构有什么缺点?最直接的就是第4号 ...
最新文章
- yii连接mysql主从_Connection 数据库主从连接源码剖析
- Linux 常見的登錄檔檔名
- How is setModel triggering propery binding
- MySQL排序ORDER BY与分页LIMIT,SQL,减少数据表的网络传输量,完整详细可收藏
- html表单input file,input标签type=file的文件上传
- Mybatis if标签判断大小
- Java 并发编程AQS--源码解读
- Qt总结之二十:加载字体库
- tyvj p1016 装箱问题( 简单DP 01背包)
- Fail to queue the whole FAL gap in dataguard一例
- android 按端口获取流量,如何获取高性价比流量、开拓流量端口
- 大数据时代,计算模式从客户机/服务器到节点的转变
- 06_注册时密码加密
- 一步一步教你如何搭建自己的视频聚合站
- C-COT目标跟踪-----连续卷积算子
- python turtle画表情包--牛bi
- 太赞了!2021最新Android开发者学习路线,offer拿到手软
- springboot下生成复杂word文档方案 在Word软件里面制作模板
- mysql免安装版用法
- 【无标题】认知智能中国原生智能科技体系 一文看懂认知智能 道翰天琼认知智能奠基者领导者