组合逻辑课程设计4位二进制全加器全减器原创
组合逻辑电路课程设计—— 4位二进制全加器/全减器
作者: 学号:
课程设计题目要求:
1) 使用74LS283构成4位二进制全加/全减器。 2) 阐述设计思路。 3) 列出真值表。
4) 画出设计的逻辑图。
5) 用VHDL 对所画电路进行仿真。
目录
摘要 .................................................................................................................................................. 1 1总电路设计.................................................................................................................................... 2
1.1硬件电路的设计 . ................................................................................................................ 2 1.2全加器(full-adder ) . ...................................................................................................... 3 1.2.1四位二级制加法器 . ......................................................................................................... 4
1.2.1.1串行进位加法器 . .................................................................................................. 4 1.2.1.2超前进位加法器 . .................................................................................................. 5 1.2.1.3超前位链结构加法器 . .......................................................................................... 5 1.3全减器(full-substracter ) .............................................................................................. 5 1.4总电路设计 . ........................................................................................................................ 6 2设计思路........................................................................................................................................ 7
2.1全加器................................................................................................................................. 7 2.2全减器................................................................................................................................. 7 3真值表 ........................................................................................................................................... 8 4逻辑图与仿真 . ............................................................................................................................... 9 5软件程序的设计 . ......................................................................................................................... 13 6结果分析与总结 . ......................................................................................................................... 15
摘要
加法器是数字系统中产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位
为输出则为全加器。例如:为了节省资源,减法器和硬件乘法器都可以用加法器来构成。但宽位加法器的设计是很耗资源的,因此在实际的设计和相关饿得设计与开发中需要注意资源的利用率和进位速度两方面的问题,多位加法器的构成主要有两种:并行进位和串行进位。并行进位加法器设有并行进位产生逻辑,运行速度比串行进位快;串行进位是将全加器采取并行级联或菊花链式级联构成多位加法器。加法器也是常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。此外还可以用来表示各种数值,如:BCD 、加三码,主要的加法器是以二进制作运算。
本文将采用4位二进制并行加法器作为折中选择,所选加法器为74LS283,74LS283是4位二进制先行进位的加法器,它只用了几级逻辑来形成和及进位输出,故由其构成4位二进制全加器;而四位全减器可以用加法器简单的改造而来,最后本文采用 VHDL对四位全加器/全减器进行仿真。
关键字
74LS283全加器、四位二进制、迭代电路、并行进位、串行进位、VHDL
1总电路设计
1.1硬件电路的设计
该4位二进制全加器以74LS283为核心,74LS283芯片引脚图如下图,本文采用先行进位方式,极大地提高了电路运行速度,下面是对4位全加器电路设计的具体分析。
图1.174LS283芯片引脚图
1.2全加器(full-adder )
全加器是针对超过一位的操作数相加,必须提供位与位之间的进位而设计的一种加法器,具有广泛而重要的应用。它除了有加数位X 和Y ,还有来自低位的进位C in 和输出S 与给高位的进位C out ,具体满足下面等式:
S =X ⊕Y ⊕Cin=X∙Y′∙Cin′+X′∙Y∙Cin′+X′∙Y′∙Cin+X∙Y∙Cin
Cout=X∙Y+X∙Cin+Y∙Cin
其中,如果有奇数个1,则S 为1;如果输入有2个或2个以上的1,则C out 为1。全加器的功能表如下:
表1.2.1全加器的功能表
′
′
S =A ⊕B ⊕Cin=A B′Cin+A′B Cin+A′B′Cin+AB Cin
Cout
实现全加器的电路图如下:
图1.2.1全加器等式电路图
= A+B Cin+AB
图1.2.2全加器简化模型图
1.2.1四位二级制加法器 1.2.1.1串行进位加法器
四位二进制加法器为4个全加器的级联,每个处理一位。最低有效位的进位输入通常置为0,每个全加器的进位输出连到高一位全加器的进位输入。
图1.1.2.1.1四位二进制加法器实现流程图
1.2.1.2超前进位加法器
为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所消耗的时间,于是制成了超前进位加法器。 优点:与串行进位加法器相比,(特别是位数比较大的时候)超前进位加法器的延迟时间大大缩短了。但是它的缺点就是电路比较复杂。
1.2.1.3超前位链结构加法器
Cout=AB+Ci−1(A+B)
令Gi=AiBi 产生进位Pi=Ai+Bi产生传输信号, 四位全加器的进位链逻辑可以表示为如下: C1=G1+P1C0
C2=G2+P2G2+P2P1C0
C3=G3+P3G2+P3P2C1+P3P2P1C0
C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
S =A ⊕B ⊕Ci−1
1.3全减器(full-substracter )
全减器有两种构造方法:
1. 全减器处理二进制算法的一位,其输入位为X (被减数),Y (减数)和
B in (借位输入),其输入位为D(差) 和B out (借位输入),根据二进制减法表,可以写出如下等式:
Bout=X′×Y+X′×Bin+Bin
这些等式非常类似于全加器中的等式,但不足为奇。所以我们可以按照全加器的构造思路来构造全加器。
2. 根据二进制补码的减法运算,X-Y 可以通过加法操作来完成,也就是说,
可以通过把Y 的二进制补码加到X 上来完成。Y 的二进制补码等于Y ’+1。其中Y ’等于Y 的各个位取反。所以得出下式:
X −Y =X + −Y =X +(Y′+1)
即全减器可以通过全加器来实现。其逻辑图如下图:
图1.3.1全减器/全加器设计逻辑图
1.4总电路设计
图1.4全加器全减器总电路设计
2设计思路
2.1全加器
由上面对加法器的具体分析, 我们分别假定两个4位二进制数分别为A 3A 2A 1A 0、B 3B 2B 1B 0, 利用Verilog HDL 软件进行仿真,每个数位上的数值1、0用开关的高低电平表示,当开关打到红色点上时表示该位数值为1,反之如果打到蓝色点上时为0,输出的四位二进制用S 3S 2S 1S 0表示,当输出的各位上亮红灯了该位输出为1,如果为蓝色则表示为0,C out 进位输入端,C 4为进位输出端,以此进行仿真。
2.2全减器
首先将74LS283的B 口的四个输入按1.3.1作优化,添加一个选择端select 。通过该选择端来控制做加法还是做减法运算。
做减法运算时选择端select=1,各个与非门的输出与输入相反,达到了取反的目的,此时C in =1,从而实现了减法器的功能。
做加法运算时选择端select=0,各个与非门的输出与输入相同,达到了保持不变的目的,此时时C in =外部输入,从而实现了加法功能。
3真值表
根据上面对加法器的具体分析,下面给出的是4位二进制全加器的部分真值表:
4逻辑图与仿真
下面是74LS283四位二进制全加器的逻辑电路图:
图4.174LS283四位二进制全加器的逻辑电路图
图
4.1
图
4.2
图
4.3
图4.4
5软件程序的设计
采用Verilog HDL 语言对设计的4位二进制全加器进行仿真,下面是具体Verilog HDL 程序:
第一步:建立一个半加器的VHD 程序。Hadd_v.vhd
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityhadd_v is
port(a,b: in std_logic;
s,c: out std_logic);
endhadd_v;
architecture a of hadd_v is
signal temp: std_logic_vector(1 downto 0);
begin
temp
&A)+B;
s
c
end a;
编译通过
第二步:建立一个全加器的VHD 程序,fadd_v.vhd
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfadd_v is
port(a,b,ci: in std_logic;
s,co : out std_logic);
endfadd_v;
architecture a of fadd_v is
signal temp : std_logic_vector(1 downto 0);
begin
temp
s
co
end a;
编译通过。
第三步:建立一个加入全加器半加器的VHD 程序,为程序包add_v.vhd LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
PACKAGE add_v IS
COMPONENT had_v
PORT(
a,b :IN STD_LOGIC;
s,c :OUT STD_LOGIC);
END COMPONENT;
COMPONENT fadd_v
PORT(
a,b,ci :IN STD_LOGIC;
s,co :OUT STD_LOGIC);
END COMPONENT;
END add_v;
第四步:四位加法器程序add4_v.VHD
libraryieee;
use ieee.std_logic_1164.all;
useWore.add_v.all;
entity add4_v is
port(A,B:instd_logic_vector(3 downto 0);
S:outstd_logic_vector(3 downto 0);
Cout:outstd_logic);
End add4_v;
Architecture x of add4_v is
Signal N1,N2,N3:std_logic;
begin
h0:hadd_v
port map(a=>A(0),b=>B(0),c=>N1);
h1:fadd_v
port map(a=>A(1),b=>B(1),s=>S(1),co=>N2);
h2:fadd_v
port map(a=>A(2),b=>B(2), s=>S(2),co=>N3);
h3:fadd_v
port map(a=>A(3),b=>B(3), s=>S(3),co=>cout);
end x;
结束。
6结果分析与总结
由上图可以看出仿真结果与实际的运算结果是相同的。
由仿真程序结果可知,设计的程序完成了四位全加器的功能,因此,该程序正确。
首先感谢老师的严谨教学与悉心指导。通过本次课程设计,我加深了对所学知识的理解,并对某些知识进行很好地应用,如:全加器、74LS283等。同时完成了74LS283构成4位二进制全加器的电路硬件设计和VHDL 仿真,完成课程设计的过程中也更加强化了自己查阅资料的能力,这有助于提高我们的自学能力,整个过程中我们还有请教其他同学。总之,本次课程设计加深了我对数字逻辑设计这门课的理解,更加激发了我的对数字逻辑设计这门课的兴趣,有利于我们后续课程的学习。
参考文献:
数字逻辑设计及应用,姜书艳/主编,电子科技大学出版社
参考网址: