最新组合逻辑课程设计4位二进制全加器全减器原创.docx

上传人:b****8 文档编号:11522969 上传时间:2023-03-02 格式:DOCX 页数:16 大小:264.54KB
下载 相关 举报
最新组合逻辑课程设计4位二进制全加器全减器原创.docx_第1页
第1页 / 共16页
最新组合逻辑课程设计4位二进制全加器全减器原创.docx_第2页
第2页 / 共16页
最新组合逻辑课程设计4位二进制全加器全减器原创.docx_第3页
第3页 / 共16页
最新组合逻辑课程设计4位二进制全加器全减器原创.docx_第4页
第4页 / 共16页
最新组合逻辑课程设计4位二进制全加器全减器原创.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

最新组合逻辑课程设计4位二进制全加器全减器原创.docx

《最新组合逻辑课程设计4位二进制全加器全减器原创.docx》由会员分享,可在线阅读,更多相关《最新组合逻辑课程设计4位二进制全加器全减器原创.docx(16页珍藏版)》请在冰豆网上搜索。

最新组合逻辑课程设计4位二进制全加器全减器原创.docx

最新组合逻辑课程设计4位二进制全加器全减器原创

 

组合逻辑课程设计4位二进制全加器全减器原创

组合逻辑电路课程设计——

4位二进制全加器/全减器

作者:

学号:

课程设计题目要求:

1)使用74LS283构成4位二进制全加/全减器。

2)阐述设计思路。

3)列出真值表。

4)画出设计的逻辑图。

5)用VHDL对所画电路进行仿真。

摘要

加法器是数字系统中产生数的和的装置。

加数和被加数为输入,和数与进位为输出的装置为半加器。

若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。

例如:

为了节省资源,减法器和硬件乘法器都可以用加法器来构成。

但宽位加法器的设计是很耗资源的,因此在实际的设计和相关饿得设计与开发中需要注意资源的利用率和进位速度两方面的问题,多位加法器的构成主要有两种:

并行进位和串行进位。

并行进位加法器设有并行进位产生逻辑,运行速度比串行进位快;串行进位是将全加器采取并行级联或菊花链式级联构成多位加法器。

加法器也是常用作计算机逻辑部件,执行逻辑操作、移位与调用。

此外还可以用来表示各种数值,如:

BCD、加三码,主要的加法器是以二进制作运算。

本文将采用4位二进制并行加法器作为折中选择,所选加法器为74LS283,74LS283是4位二进制先行进位的加法器,它只用了几级逻辑来形成和及进位输出,故由其构成4位二进制全加器;而四位全减器可以用加法器简单的改造而来,最后本文采用VHDL对四位全加器/全减器进行仿真。

关键字

74LS283全加器、四位二进制、迭代电路、并行进位、串行进位、VHDL

1总电路设计

1.1硬件电路的设计

该4位二进制全加器以74LS283为核心,74LS283芯片引脚图如下图,本文采用先行进位方式,极大地提高了电路运行速度,下面是对4位全加器电路设计的具体分析。

图1.174LS283芯片引脚图

1.2全加器(full-adder)

全加器是针对超过一位的操作数相加,必须提供位与位之间的进位而设计的一种加法器,具有广泛而重要的应用。

它除了有加数位X和Y,还有来自低位的进位Cin和输出S与给高位的进位Cout,具体满足下面等式:

其中,如果有奇数个1,则S为1;如果输入有2个或2个以上的1,则Cout为1。

全加器的功能表如下:

表1.2.1全加器的功能表

输入

输出

输入

输出

CinAB

SCout

CIAB

SCout

000

001

010

011

00

10

10

01

100

101

110

111

10

01

01

11

逻辑表达式:

实现全加器的电路图如下:

图1.2.1全加器等式电路图

图1.2.2全加器简化模型图

1.2.1四位二级制加法器

1.2.1.1串行进位加法器

四位二进制加法器为4个全加器的级联,每个处理一位。

最低有效位的进位输入通常置为0,每个全加器的进位输出连到高一位全加器的进位输入。

图1.1.2.1.1四位二进制加法器实现流程图

输入Input

A3A2A1A0

加数输入

B3B2B1B0

加数输入

C0

进位输入Cin

输出Output

S3S2S1S0

和数输入

C4

进位输出Cout

1.2.1.2超前进位加法器

为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所消耗的时间,于是制成了超前进位加法器。

优点:

与串行进位加法器相比,(特别是位数比较大的时候)超前进位加法器的延迟时间大大缩短了。

但是它的缺点就是电路比较复杂。

1.2.1.3超前位链结构加法器

=AB+

产生进位

产生传输信号,

四位全加器的进位链逻辑可以表示为如下:

+

1.3全减器(full-substracter)

全减器有两种构造方法:

1.全减器处理二进制算法的一位,其输入位为X(被减数),Y(减数)和Bin(借位输入),其输入位为D(差)和Bout(借位输入),根据二进制减法表,可以写出如下等式:

这些等式非常类似于全加器中的等式,但不足为奇。

所以我们可以按照全加器的构造思路来构造全加器。

2.根据二进制补码的减法运算,X-Y可以通过加法操作来完成,也就是说,可以通过把Y的二进制补码加到X上来完成。

Y的二进制补码等于Y’+1。

其中Y’等于Y的各个位取反。

所以得出下式:

即全减器可以通过全加器来实现。

其逻辑图如下图:

图1.3.1全减器/全加器设计逻辑图

1.4总电路设计

图1.4全加器全减器总电路设计

2设计思路

2.1全加器

由上面对加法器的具体分析,我们分别假定两个4位二进制数分别为A3A2A1A0、B3B2B1B0,利用VerilogHDL软件进行仿真,每个数位上的数值1、0用开关的高低电平表示,当开关打到红色点上时表示该位数值为1,反之如果打到蓝色点上时为0,输出的四位二进制用S3S2S1S0表示,当输出的各位上亮红灯了该位输出为1,如果为蓝色则表示为0,Cout进位输入端,C4为进位输出端,以此进行仿真。

2.2全减器

首先将74LS283的B口的四个输入按1.3.1作优化,添加一个选择端select。

通过该选择端来控制做加法还是做减法运算。

做减法运算时选择端select=1,各个与非门的输出与输入相反,达到了取反的目的,此时Cin=1,从而实现了减法器的功能。

做加法运算时选择端select=0,各个与非门的输出与输入相同,达到了保持不变的目的,此时时Cin=外部输入,从而实现了加法功能。

3真值表

根据上面对加法器的具体分析,下面给出的是4位二进制全加器的部分真值表:

表3.14位二进制全加器真值表

A3

A2

A1

A0

B3

B2

B1

B0

Cin

S3

S2

S1

S0

Cout

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

1

1

0

0

0

1

1

0

0

0

1

1

0

1

0

1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

0

0

1

0

0

0

0

0

0

1

0

1

0

1

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

1

1

1

0

0

0

0

1

1

0

0

0

0

0

1

0

1

0

0

0

0

1

0

1

1

0

0

1

0

0

0

1

0

0

0

0

0

0

0

0

1

1

0

0

0

1

0

0

0

1

0

0

0

1

1

1

0

0

1

0

0

1

1

0

1

1

0

0

0

1

0

0

1

0

1

0

0

0

1

1

0

1

0

1

0

0

0

0

1

1

0

0

1

1

1

0

0

1

0

0

0

0

1

1

0

1

1

1

1

1

0

1

0

1

0

1

0

0

1

0

0

0

1

1

1

1

0

1

0

1

0

0

1

1

0

1

0

0

1

1

0

0

0

1

0

0

1

0

0

0

0

1

1

1

0

0

0

1

0

0

1

1

0

0

1

0

1

...

...

...

...

...

...

...

...

...

...

...

...

...

...

表3.24位二进制全减器真值表

A3

A2

A1

A0

B3

B2

B1

B0

Cin

S3

S2

S1

S0

Cout

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

1

1

0

0

0

1

1

0

0

0

1

1

0

1

0

1

0

0

0

1

1

0

0

1

0

0

0

1

0

1

0

0

1

0

0

0

0

0

0

1

0

1

0

1

0

0

0

1

0

0

0

1

0

0

0

1

0

0

0

0

1

1

1

0

0

0

0

1

1

0

0

0

0

0

1

0

1

0

0

0

0

1

0

1

1

0

0

1

0

0

0

1

0

0

0

0

0

0

0

0

1

1

0

0

0

1

0

0

0

1

0

0

0

1

1

1

0

0

1

0

0

1

1

0

1

1

0

0

0

1

0

0

1

0

1

0

0

0

1

1

0

1

0

1

0

0

0

0

1

1

0

0

1

1

1

0

0

1

0

0

0

0

1

1

0

1

1

1

1

1

0

1

0

1

0

1

0

0

1

0

0

0

1

1

1

1

0

1

0

1

0

0

1

1

0

1

0

0

1

1

0

0

0

1

0

0

1

0

0

0

0

1

1

1

0

0

0

1

0

0

1

1

0

0

1

0

1

...

...

...

...

...

...

...

...

...

...

...

...

...

...

4逻辑图与仿真

下面是74LS283四位二进制全加器的逻辑电路图:

图4.174LS283四位二进制全加器的逻辑电路图

图4.1

图4.2

图4.3

图4.4

5软件程序的设计

采用VerilogHDL语言对设计的4位二进制全加器进行仿真,下面是具体VerilogHDL程序:

第一步:

建立一个半加器的VHD程序。

Hadd_v.vhd

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityhadd_vis

port(a,b:

instd_logic;

s,c:

outstd_logic);

endhadd_v;

architectureaofhadd_vis

signaltemp:

std_logic_vector(1downto0);

begin

temp<=(‘0’&A)+B;

s<=temp(0);

c<=temp

(1);

enda;

编译通过

第二步:

建立一个全加器的VHD程序,fadd_v.vhd

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfadd_vis

port(a,b,ci:

instd_logic;

s,co:

outstd_logic);

endfadd_v;

architectureaoffadd_vis

signaltemp:

std_logic_vector(1downto0);

begin

temp<=(‘0’&a)+b+ci;

s<=temp(0);

co<=temp

(1);

enda;

编译通过。

第三步:

建立一个加入全加器半加器的VHD程序,为程序包add_v.vhd

LIBRARYieee;

USEieee.std_logic_1164.ALL;

PACKAGEadd_vIS

COMPONENThad_v

PORT(

a,b:

INSTD_LOGIC;

s,c:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTfadd_v

PORT(

a,b,ci:

INSTD_LOGIC;

s,co:

OUTSTD_LOGIC);

ENDCOMPONENT;

ENDadd_v;

第四步:

四位加法器程序add4_v.VHD

libraryieee;

useieee.std_logic_1164.all;

useWore.add_v.all;

entityadd4_vis

port(A,B:

instd_logic_vector(3downto0);

S:

outstd_logic_vector(3downto0);

Cout:

outstd_logic);

Endadd4_v;

Architecturexofadd4_vis

SignalN1,N2,N3:

std_logic;

begin

h0:

hadd_v

portmap(a=>A(0),b=>B(0),c=>N1);

h1:

fadd_v

portmap(a=>A

(1),b=>B

(1),s=>S

(1),co=>N2);

h2:

fadd_v

portmap(a=>A

(2),b=>B

(2),s=>S

(2),co=>N3);

h3:

fadd_v

portmap(a=>A(3),b=>B(3),s=>S(3),co=>cout);

endx;

结束。

6结果分析与总结

由上图可以看出仿真结果与实际的运算结果是相同的。

由仿真程序结果可知,设计的程序完成了四位全加器的功能,因此,该程序正确。

首先感谢老师的严谨教学与悉心指导。

通过本次课程设计,我加深了对所学知识的理解,并对某些知识进行很好地应用,如:

全加器、74LS283等。

同时完成了74LS283构成4位二进制全加器的电路硬件设计和VHDL仿真,完成课程设计的过程中也更加强化了自己查阅资料的能力,这有助于提高我们的自学能力,整个过程中我们还有请教其他同学。

总之,本次课程设计加深了我对数字逻辑设计这门课的理解,更加激发了我的对数字逻辑设计这门课的兴趣,有利于我们后续课程的学习。

 

参考文献:

数字逻辑设计及应用,姜书艳/主编,电子科技大学出版社

参考网址:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1