⑴ 详解加法器的电路实现
基本思路:想一种办法使得三排开关连起来
输入信息:
输出信息
实现:
异或门实现和运算;
与门实现进位运算;
将一个异或门和与门电路并联封装一起来,就是一个半加器
输入信息
输出信息
实现:
两个半加器和一个或门电路=全加器
第一个半加器的输入是被加数和加数,输出是和S1,进位信息C1;
第二个半加器的输入是个位的进位信息C0,及上一步的计算结果R1,输出是和S2,进位信息C2;
或门电路的输入是第二个半加器的进位信息C2,和第一个半加器的进位信息C1,输出是进位信息C3;
思考题
这一讲,详细讲解了无符号数的加法器是怎么通过电路搭建出来的。那么,如果是使用补码表示的有符号数,这个加法器是否可以实现正数加负数这样的运算呢?如果不行,我们应该怎么搭建对应的电路呢?
答:使用全加器可以实现使用补码表示的有符号数,但需要对文中的加法器电路进行优化。
根据正数加负数转换成正数加上这个负数的补码,将减法运算转化成加法运算,比如A-B=A+(-B)=A+(~B+1),即:如果发现是做减法,则就将B作为一个非门的输入,且给设置低位的进位输入为1,即可;
如何检测溢出?
首先,列举下两个有符号数相加产生溢出的条件:
其次,可以根据最高数值位是否产生进位,以及符号位是否产生进位来判断是否有溢出发生,即如果最高位的进位输入和最高位的进位输出不相等的话,就表示发生了溢出。对应的电路实现是使用最高位的进位输出和进位输出作为一个异或门的输入即可,如果异或门的输出是1,就表示发生了溢;如果该异或门的输出是0,表示没有溢出。
对应上面的四种情况就是:
⑵ 什么是一位全加器,怎么设计逻辑电路图
全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。
一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。
逻辑电路图设计如下:
一位全加器(FA)的逻辑表达式为:
S=A⊕B⊕Cin
Co=(A⊕B)Cin+AB
其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;
如果要实现多位加法可以进行级联,就是串起来使用;比如32位+32位,就需要32个全加器;这种级联就是串行结构速度慢,如果要并行快速相加可以用超前进位加法。
(2)加法电路设计扩展阅读:
全加器是组合逻辑电路中最常见也最实用的一种,考虑低位进位的加法运算就是全加运算,实现全加运算的电路称为全加器。而其功能设计可以根据组合逻辑电路的设计方法来完成。
通过逻辑门、74LS138译码器、74LS153D数据选择器来实现一位全加器的电路设计,并且实现扩展的两位全加器电路。并且Multisim是一个专门用于电路设计与仿真的工具软件。
⑶ 设计一个加法器
一、半加器
半加器是用于计算2个一个bit的二进制数a与b的和,输出结果是sum(s)和进位carry(c)。在多bit数的计算中,进位c将作为下一相邻bit的加法运算中。单个半加器的计算结果是2c+s。 真值表:
逻辑表达式:
Verilog描述为:
mole half_adder(
input a,
input b,
output c,
output s
);
assign c = a&b;
assign s = a^b;
endmole
电路图如下:
二、全加器
全加器不同于半加器是,全加器带有进位cin。输入为a,b,cin,输出为sum(s),进位carry(c),均是单bit信号。 s为a、b、cin三个单bit数的和,cout为a,b,cin三个数超过2后的进位。 真值表
逻辑表达式:
verilog描述:
mole full_add(
input a,
input b,
input cin,
output cout,
output s
);
assign s = a^b^cin;
assign cout = a&b | (cin & (a^b));
endmole
电路图:
表示符号:
三、行波进位加法器
N-bit加法器可以根据1-bit全加器组合而成。每个全加器的输出进位cout作为下一个全加器的输入进位cin,这种加法器称为行波进位加法器(Ripple-carry addr,简称RCA),如一个16bit加法器的结构如下所示,其中A、B为16bit的加数,S为A+B的和,c16为该加法器的输出:
由上图所知可以得到进位c16的结果依赖于c15,c14,c13,…c2,c1,c0,对于32bit,64bit等加法器,进位链将显得更加长。所以,行波进位加法器设计简单,只需要级联全加器即可,但它的缺点在于超长的进位链,限制了加法器的性能。
mole rca #(width=16)(
input [width-1:0] A,
input [width-1:0] B,
output [width-1:0] sum,
output cout
);
wire [width:0] temp;
assign temp[0] = 0;
genvar i;
for(i=0;i<width;i=i
⑷ 设计一个简单加法电路
LM358,+/-5V供电,显然只抄能处理正负5V范围内的信号。那么,输入的一个直流信号就是5V,正弦波的正半周,叠加5V后,显然超过了容许范围。解决方法: 1,加大电源。 2,把输入的直流信号,改为2.5V。都可以。
⑸ BCD码加法电路图指教 数字电路
要知道BCD数是用四位二进制数来表示一位十进制数,那么两位BCD数进行加法时(和的范围是0~18),当结果超过9时就超过了一位BCD数的表示范围(0~9),这时需要用两位BCD数来表示该结果。比如3+8=11,用BCD码相加表示为 0011 + 1000 所得结果为1011,显然1011并不在一位BCD码的表示范围内,当给1011加上6(也就是0110时),得到的结果为 10001,也就是两位BCD数表示的11。
总结,当两位BCD数相加的结果大于9时,需要进行加6修正。
设计该“加6修正逻辑”的过程为:
卡诺图法:五变量的卡诺图,C0 F4 F3 F2 F1。用F表示结果,当F = 1时,表示需要作加6修正。
说明:C0 F4 F3 F2 F1为两位BCD数进行二进制相加后得到的结果(范围为0~18,因此需要5位二进制数来表示)。当C0为1时,也就是说相加结果大于15(在16~18之间),此时需要加6修正,F = 1。当C0为0时,表示所得结果在0~15之间,这时当结果也大于9时,需要加6修正,F = 1。
由于这里不方便画卡诺图了,就直接上结果:
F = C0 + F4&F3 + F4&F2
对上面的 F 的表达式变换一下就行了,变成只用与非门表示的形式。"~" 表示 “逻辑非”
F= ~[~(C0 + F4&F3 + F4&F2)] = ~{ ~C0 & [~(F4&F3)] & [~(F4&F2)] }
⑹ 实验五 组合逻辑电路的设计——加法器、比较器
来自电子科技大学中山学院(数电实验)
基础实验
(1)利用7483设计4位以内的加法器,请给出实验电路,并根据表5.4要求填写输出结果。
(2)给出7485实现4位二进制比较器的电路图,分析其工作原理。
原理:当参加比较的2个4位二进制数A3-A0和B3-B0的高位不等时,比较结果就由高位确定,低位和级联输入的取值不起作用;高位相等时,比较结果由低位确定;当2个4位二进制数相等时,比较结果由级联输入决定。
提高实验
(1)请设计一个电路,输入8421BCD码,输出余3码。
提示:8421BCD码的余3码为原码加011。
(2)请设计一个电路,实现7-5=?的运算功能电路。
(3)有X Y Z三路信号输入,请用7485设计一个电路,要求按如下情况输出信号。
*当7485的输入端输入A>B 时输出X信号;
*当7485的输入端输入A=B 时输出Y信号;
*当7485的输入端输入A<B 时输出Z信号。
请给出电路设计方案,并说明原理。
提示:在输出端口可添加3个与门与1个或门
实验五详情
⑺ 用74ls138设计一个全加器电路求电路图
首先得弄清楚全加器的原理,你这里说的应该是设计1位的全加器。
全加器有3个输入端:a,b,ci;有2个输出端:s,co.
与3-8译码器比较,3-8译码器有3个数据输入端:A,B,C;3个使能端;8个输出端,OUT(0-7)。
这里可以把3-8译码器的3个数据输入端当做全加器的3个输入端,即3-8译码器的输入A、B、C分别对应全加器的输入a,b,ci;将3-8译码器的3个使能端都置为有效电平,保持正常工作;这里关键的就是处理3-8译码的8个输出端与全加器的2个输出的关系。
现在写出全加器和3-8译码器的综合真值表:
(A/a,B/b,C/ci为全加器和译码器的输入,OUT为译码器的输出(0-7),s为加法器的和,co为加法器的进位输出)PS:假定译码器的输出为高电平有效。
A/a B/b C/ci OUT s co
0 0 0 0 0 0
0 0 1 1 1 0
0 1 0 2 1 0
0 1 1 3 0 1
1 0 0 4 1 0
1 0 1 5 0 1
1 1 0 6 0 1
1 1 1 7 1 1
根据上面的真值表,可以设计出电路图:
将3-8译码器的输出OUT(1、2、4、7)作为一个4输入的或门的输入,或门的输出作为加法器的和;将3-8译码器的输出OUT(3、5、6、7)作为一个4输入的或门的输入,或门的输出作为加法器的进位输出。即完成了加法器的设计。
回过头来分析:
当加法器的输入分别为:a=1,b=0,ci=1时,对应3-8译码器的输入为A=1,B=0,C=1,这是译码器对应的输出为OUT(5)=1,其余的为0,根据上面设计的连接关系,s=0,co=1,满足全加器的功能,举其他的例子也一样,所以,设计全加器的设计正确。