组合逻辑电路课程设计之——4位二进制全加器/全减器作者:姓名:周志敏学号:2907301001姓名:王光甫学号:2907301007姓名:沈俊楷学号:2907301004课程设计题目要求:使用74LS283构成4位二进制全加\全减器。具体要求:1)列出真值表;2)画出逻辑图;3)用VerilogHDL进行仿真。摘要加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面问题。多为加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运行速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行加法器的资源占用差距也会越来越大。本文将采用4位二进制并行加法器作为折中选择,所选加法器为74LS283,74LS283是4位二进制先行进位加法器,它只用了几级逻辑来形成和及进位输出,由其构成4位二进制全加器;而四位的全减器可以用加法器简单的改造而来。采用VerilogHDL对四位的全加器-全减器进行仿真。关键字74LS283,全加器,并行进位,串行进位,全减器,VerilogHDL仿真总电路设计一、硬件电路的设计该4位二进制全加器以74LS283(图1)为核心,采用先行进位方式,极大地提高了电路运行速度,下面是对4位全加器电路设计的具体分析。图11)全加器全加器是针对多于一位的操作数相加,必须提供位与位之间的进位而设计的一种加法器,具有广泛而重要的应用。其除有加数位X和Y,还有来自低位的进位输入CIN,和输出S(全加和)与COUT(送给高位的进位),满足下面等式:CINYCINXYXCOUTCINYXCINYXNCIYXNCIYXCINYXS其中,如果输入有奇数个1,则S为1;如果输入有2个或2个以上的1,则COUT为1。实现全加器等式的电路如图3所示,逻辑符号见下图2图32)四位二进制加法器a)串行进位加法器四位二进制加法器可以采用4个一位全加器及连成串行进位加法器,其实现框图如下输入:Input:A3A2A1A0加数输入B3B2B1B0加数输入C0进位输入(CIN)输出:OutputS3S2S1S0和数输出C4进位输出(COUT)b)超前位链结构加法器)(11BACABCOUTCBASii令iiiBAG产生进位iiiBAP产生传输信号四位全加器的进位链逻辑可以表示为如下:01234123423434440123123233301212220111CPPPPGPPPGPPGPGCCPPPGPPGPGCCPPGPGCCPGC根据上面对加法器的具体分析,下面给出的是4位二进制全加器的部分真值表:A3A2A1A0B3B2B1B0CINS3S2S1S0COUT0000000000000000000000100010000100010001000010000100011000110001101010001100100010100100000010101000100010001000011100001100000101000010110010001000000001100010001000111001001101100010010100011010100001100111001000011011111010101001000111101010011010011000100100001110001001100101..........................................下面是74LS283四位二进制全加器的逻辑电路图:以上部分是对4位二进制全加器电路硬件的详细设计。3)全减器全减器有两种构造方法方法一:全减器处理二进制算法的一位,其输入位为X(被减数),Y(减数)和BIN(借位输入),其输出位为D(差)和BOUT(借位输入)。根据二进制减法表,可以写出如下等式:D=X○○○YBINBOUT=X’*Y+X’*BIN+BIN这些等式非常类似于全加器中的等式,应该不足为奇。所以我们可以按照全加器的构成思路来构造全减器。方法二:根据二进制补码的减法运算,X-Y可以通过加法操作来完成,也就是说,可以通过把Y的二进制补码加到X上来完成。Y的二进制补码等于Y’+1,其中Y’等于Y的各个位取法。所以X-Y=X+(-Y)=X+(Y’+1)即全减器可以通过全加器来实现。我们将74LS283的B口的四个输入作如上图的改动,添加了一个选择端select,通过他来控制是做加法运算还是减法运算。做减法运算Select=1时各个与非门的输出与输入相反,达到了去反的目的,此时cin=1,从而实现了减法功能。B4B3B2B1CINSELECT做加法运算Select=0时各个与非门的输出与输入相同,达到了保持不变目的,此时cin=外部输入,从而实现了加法功能。全减器的真值表(利用74ls283构成)A3A2A1A0B3B2B1B0CINS3S2S1S0COUT0000000000000000000000100010000100010001000010000100011000110001101010001100100010100100000010101000100010001000011100001100000101000010110010001000000001100010001000111001001101100010010100011010100001100111001000011011111010101001000111101010011010011000100100001110001001100101..........................................所以总的逻辑电路图如下总的真值表:即将全加器真值表和全减器真值表合成而得,此处省略。二、软件程序的设计本设计采用VerilogHDL语言的所设计的4位二进制全加器进行仿真,下面是具体的VerilogHDL程序:第一步:建一VHD程序,半加器的。hadd_v.vhdlibraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhadd_visport(a,b:instd_logic;s,c:outstd_logic);endhadd_v;architectureaofhadd_vissignaltemp:std_logic_vector(1downto0);beginSUM_410SUM_313SUM_14SUM_21C49B411A412B315A314B22A23B16A15C07137B4B3B2B1a2a1a374LS28324CINSELECTtemp=('0'&A)+B;s=temp(0);c=temp(1);enda;编译通过第二步:建一VHD程序,全加器。fadd_v.vhdlibraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfadd_visport(a,b,ci:instd_logic;s,co:outstd_logic);endfadd_v;architectureaoffadd_vissignaltemp:std_logic_vector(1downto0);begintemp=('0'&a)+b+ci;s=temp(0);co=temp(1);enda;编译通过。第三步:建一VHD程序。为程序包,加入全加,半加两个实例add_v.vhdLIBRARYieee;USEieee.std_logic_1164.ALL;PACKAGEadd_vISCOMPONENThadd_vPORT(a,b:INSTD_LOGIC;s,c:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTfadd_vPORT(a,b,ci:INSTD_LOGIC;s,co:OUTSTD_LOGIC);ENDCOMPONENT;ENDadd_v;第四步:四位加法器程序add4_v.VHDlibraryieee;useieee.std_logic_1164.all;useWork.add_v.all;entityadd4_visport(A,B:instd_logic_vector(3downto0);S:outstd_logic_vector(3downto0);cout:outstd_logic);endadd4_v;architecturexofadd4_vissignalN1,N2,N3:std_logic;beginh0:hadd_vportmap(a=A(0),b=B(0),s=S(0),c=N1);h1:fadd_vportmap(a=A(1),b=B(1),ci=N1,s=S(1),co=N2);h2:fadd_vportmap(a=A(2),b=B(2),ci=N2,s=S(2),co=N3);h3:fadd_vportmap(a=A(3),b=B(3),ci=N3,s=S(3),co=cout);endx;结束。结语通过我们小组成员的共同努力,完成了由74LS283构成的4位二进制全加器的电路硬件设计和VerilogHDL软件仿真,最终我们的设计成果较好地完成了设计要求,同时我们也在本次设计过程中进一步掌握了组合逻辑电路的相关知识以及进一步熟悉VerilogHDL语言的应用。