详细讲解半加器、全加器、四位全加器,并使用FPGA实现半加器、全加器
全加器、半加器都是在数电学习路上非常主要的部分,下面我将全加器和半加器做一个详细的解释。
半加器
半加器是指对输入的两个一位二进制数相加(A与B),输出一个结果位(SUM)和进位(C),没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。
真值表
被加数A | 加数B | 和SUM | 进位C |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
逻辑表达式
根据上述的真值表,当A和B相同时SUM为0,否则为1;逻辑关系属于异或;当A和B同时为1时,C等于1,其余都为零,逻辑关系为与。
所以我们可以得到如下的逻辑表达式:
逻辑电路图
半加器Verilog代码实现
module half adder(input wire A,input wire B,output wire C,output wire sum
);//assign sum = (A == B) ? 0 : 1; //这两种方式都可以实现
assign sum = A^B;
assign C= A&B;endmodule
RTL视图验证
全加器
全加器是指对输入的两个二进制数相加(A与B)同时会输入一个低位传来的进位(Ci-1),得到和数(SUM)和进位(Ci);一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。
真值表
逻辑表达式
由全加器的定义理解我们可以知道当Ai和Bi异或后再与Ci-1进行异或得到SUMi,结合真值表,我们可以知道当Ai、Bi、Ci-1只要有两个以上的1是进位Ci就等于1;所以只需要每两变量求与,结果再求或就可以满足要求。由此我们可以得到最常用的逻辑表达式:
由于两个半加器可以构成一个全加器,所以在这里进位Ci还可以表示为
逻辑电路图
根据逻辑表达式绘制两种逻辑电路图如下:
由两个半加器组成的全加器逻辑电路图
全加器Verilog代码实现
module full_adder(
input wire A,
input wire B,
output wire C,
output wire sum
);
wire sum_h1;
wire count_h1;
wire count_h2;
half_adder half_adder1(
.A(A),
.B(B),
.sum(sum_h1),
.C(count_h1)
);
half_adder half_adder2(
.A(sum_h1),
.B(cin),
.sum(sum),
.C(count_h2)
);
assign C = count_h1 | count_h2;
endmodule
RTL视图验证
四位全加器
四位全加器的典型代表为74LS283,接下来主要通过真值表和逻辑电路图研究其工作原理。
真值表
我们输入一个二进制数,假设得到的四位二进制数的每一位分别是a、b、c、d,其中a是第一位,举例 a=0;b=0;c=1;d=1;那么这个数为0011;由此我们真值表如下:
我们列举部分;大家可以计算下其他数值的情况。在这里由于第一位的上级进位都是0,所以省略,后三种数值由于溢出,我们在这里为了方便观察,所以进行了补位,实际情况中是没有第5位(e4)的:
逻辑电路图
今天的讲解就到这里了,如果有问题,请留言联系我。
详细讲解半加器、全加器、四位全加器,并使用FPGA实现半加器、全加器相关推荐
- 全加器在计算机的应用,如何用半加器实现全加器?
实际上,一个完整的加法器的输入端有3个:A.B和低位的进位结果CI. 全加器(Full Adder) 这个全加器相当于是计算3个位(A.B.CI)的和.因此,其最终的"和输出"为三 ...
- 全加器在计算机的应用,两个半加器组成全加器的做法 浅谈全加器和半加器的应用...
两个半加器组成全加器的做法 用门电路实现两个二进数相加并求出和的组合线路,称为一个全加器. 全加器是能够计算低位进位的二进制加法电路 一位全加器(FA)的逻辑表达式为: S=A⊕B⊕Cin Co=AB ...
- FPGA——1位全加器和4位全加器的实现
目录 一.认识全加器 1.半加器 2.1位全加器 3.4位全加器 二.使用原理图实现1位加法器 1.原理图实现半加器 2.半加器元件实现全加器 三.使用原理图实现4位加法器 四.Verilog HDL ...
- Php中如何记录本报时间,详细讲解PHP的日期时间函数date()
详细讲解PHP的日期时间函数date() 作者:wang 日期:2009-06-06 字体大小: 小 中 大 1,年-月-日 echo date('Y-m-j'); 2007-02-6 echo da ...
- SourceMap源码映射详细讲解
SourceMap源码映射详细讲解 前端工程打包后代码会跟项目源码不一致,当代码运行出错时控制台上定位出错代码的位置跟项目源码上不对应.这时候我们很难定位错误代码的位置.SourceMap的用途是可以 ...
- 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)
今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...
- Python的零基础超详细讲解(第十三天)-Python的类与对象
基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...
- Python的零基础超详细讲解(第十二天)-Python函数及使用
基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...
- Python的零基础超详细讲解(第七天)-Python的数据的应用
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
- Python的零基础超详细讲解(第五天)-Python的运算符
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
最新文章
- 深入分析Java的序列化与反序列化
- 微软Azure Stack混合云进入中国
- [RHEL5企业级Linux服务攻略]--第6季 Vsftpd服务全攻略之高级配置
- Android中使用的数据单位
- 二叉树最近公共祖先相关题目(Leetcode题解-Python语言)
- Linux文件属性4——读取目录文件
- VS2015如何使自己的exe文件在别人的电脑上运行(找不到MSVCP140D.dll)
- java程序员推荐app_Java程序员面试大全app
- 【JAVA】数据结构——堆的排序及相关面试题
- Unity-WebGL遇到的各种坑(一)
- Unity3D Shader系列之画虚线方式分析与总结
- 苹果蓝牙耳机太贵了买哪个替代?苹果蓝牙耳机平替推荐
- 进程同步问题(Process Synchronization)
- android:gravity=quot;centerquot;,android:layout_gravity=bottom不起作用问题
- Windows下面搭建在线文档工具showdoc工具
- 【Python】np.nonzero()函数
- linux dd命令制作软盘,[Ubuntu]dd 命令,软盘读写实例:二进制文件.bin -镜像文件 .img - 软盘设备 /dev/fd0...
- Python开多次方根
- 读《文明、现代化、价值投资与中国》一点感受
- 【网络安全】如何在Apache 安装开源 WAF