位全加器设计解析.docx
- 文档编号:28077429
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:11
- 大小:103.98KB
位全加器设计解析.docx
《位全加器设计解析.docx》由会员分享,可在线阅读,更多相关《位全加器设计解析.docx(11页珍藏版)》请在冰豆网上搜索。
位全加器设计解析
可编程逻辑器件设计大作业
题目四位全加器设计
学院自动化与电气工程学院
班级
姓名
学号
2104年12月30日
摘要
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
本次设计是用VHDL语言设计四位全加器,并用QuartusII仿真。
关键词:
VHDL四位全加器QuartusII
四位全加器设计
1.设计目的
复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUSⅡ或QuartusII软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。
2.设计要求
1)复习EDA的相关技术与方法;
2)掌握VHDL或者Verilog语言,并要求能编写程序。
3)Quartus软件的使用:
掌握程序编辑、编译、调试、仿真方法。
4)设计相关简单的电路,完成既定的功能。
3.设计原理
3.1.四位全加器
加法器是数字系统中的基本逻辑器件。
例如:
为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:
并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
四位全加器可对两个多位二进制数进行加法运算,同时产生进位。
当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。
其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示加数和被加数。
输出SUM=A+B+CIN,当SUM大于255时,COUT置‘1’。
其管脚图如下:
图3-1四位全加器管脚图
全加器是能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号的加法电路。
其真值表如表1所示:
表1全加器真值表
输入
输出
a
b
cin
s
cout
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
1
1
0
0
1
0
0
1
1
0
0
1
1
0
1
1
0
1
0
1
1
1
1
1
1
根据真值表可得出下列表达式:
根据以上表达式,可以用数据流方式设计出1位全加器。
要设计的是4位全加器,这里采用串行进位来设计。
先设计4个1位的全加器,然后将低位的进位输出与高位的进位输入相连,将要进行加法运算的两个4位数的每一位分别作为每一个1位全加器的输入,进行加法运算,所有的1位全加器的输出组成一个4位数,即输入的两个4位数之和,最高位的全加器产生的进位输出即两个4位数求和的进位输出。
3.2.四位全加器的原理图
4位全加器的原理图如图3-2所示:
图3-2四位全加器原理图
根据图3-2所示,可以采用结构化描述方式设计4位全加器。
4.设计方案
4.1.仿真软件
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
4.2.全加器原理
4.2.1一位全加器的设计与原理
一位全加器的原理图如下:
图4-1一位全加器原理图
一位全加器的程序设计:
ENTITYadder1IS--1位全加器设计
PORT(a,b,cin:
INSTD_LOGIC;
s,cout:
OUTSTD_LOGIC);
ENDadder1;
ARCHITECTUREdataflowOFadder1IS--用数据流方式设计1位全加器
SIGNALtmp:
STD_LOGIC;--用tmp表示a⊕b
BEGIN
tmp<=aXORbAFTER10ns;
s<=tmpXORcinAFTER10ns;
cout<=(aANDb)OR(tmpANDcin)AFTER20ns;
ENDdataflow;
4.2.2四位全加器的原理及程序设计
要设计的是4位全加器是采用串行进位来设计的。
首先根据已经设计好的一位的全加器通过将低位的进位输出与高位的进位输入相连的方法,组成所需要的四位全加器。
其程序如下:
ENTITYadder4IS--4位全加器设计
PORT(a,b:
INSTD_LOGIC_VECTOR(3DOWNTO0);
cin:
INSTD_LOGIC;
s:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:
OUTSTD_LOGIC);
ENDadder4;
ARCHITECTUREstructuralOFadder4IS--用结构化描述风格设计4位全加器
COMPONENTadder1
PORT(a,b,cin:
INSTD_LOGIC;
s,cout:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALx,y,z:
STD_LOGIC;
FORu1,u2,u3,u4:
adder1USEENTITYWORK.adder1(dataflow);
BEGIN
u1:
adder1PORTMAP(a(0),b(0),cin,s(0),x);
u2:
adder1PORTMAP(a
(1),b
(1),x,s
(1),y);
u3:
adder1PORTMAP(a
(2),b
(2),y,s
(2),z);
u4:
adder1PORTMAP(a(3),b(3),z,s(3),cout);
ENDstructural;
四位全加器的原理图:
图4-2四位全加器原理图
5.程序设计
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYadder1IS--1位全加器设计
PORT(a,b,cin:
INSTD_LOGIC;
s,cout:
OUTSTD_LOGIC);
ENDadder1;
ARCHITECTUREdataflowOFadder1IS--用数据流方式设计1位全加器
SIGNALtmp:
STD_LOGIC;--用tmp表示a⊕b
BEGIN
tmp<=aXORbAFTER10ns;
s<=tmpXORcinAFTER10ns;
cout<=(aANDb)OR(tmpANDcin)AFTER20ns;
ENDdataflow;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYadder4IS--4位全加器设计
PORT(a,b:
INSTD_LOGIC_VECTOR(3DOWNTO0);
cin:
INSTD_LOGIC;
s:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:
OUTSTD_LOGIC);
ENDadder4;
ARCHITECTUREstructuralOFadder4IS--用结构化描述风格设计4位全加器
COMPONENTadder1
PORT(a,b,cin:
INSTD_LOGIC;
s,cout:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALx,y,z:
STD_LOGIC;
FORu1,u2,u3,u4:
adder1USEENTITYWORK.adder1(dataflow);
BEGIN
u1:
adder1PORTMAP(a(0),b(0),cin,s(0),x);
u2:
adder1PORTMAP(a
(1),b
(1),x,s
(1),y);
u3:
adder1PORTMAP(a
(2),b
(2),y,s
(2),z);
u4:
adder1PORTMAP(a(3),b(3),z,s(3),cout);
ENDstructural;
6.仿真及结果
根据上面的程序我进行了仿真,首先是对1位全加器进行仿真,结果如图6-1所示:
图6-11位全加器仿真图
由图6-1可以看出,1位全加器的仿真结果与表1相符,说明1位全加器设计成功。
然后我又对4位全加器进行仿真,结果如图6-2所示:
图6-24位全加器仿真图
由图6-2可以看出,对设计的全加器进行了2组数据的仿真,由于4位全加器最低位的进位为0,因此将cin置0,仿真的结果与实际的运算结果是相同的。
由仿真结果可知,设计的程序完成了全加器的功能,因此该程序正确。
总结与体会
时光飞逝,一转眼,一个学期又进尾声了,本学期的能力拓展强化训练也完成了。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意,由于对课本理论的不熟悉导致编程出现错误。
第二,是在学习态度上,这次课设是对我的学习态度的一次检验。
对于这次课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。
我们这次课程设计所遇到的多半问题多数都是由于我们不够严谨。
第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
从开始得到老师给定课题时的一脸茫然到老师讲解后内容的初步了解再到自己通过查资料、与同学共同探讨、经过老师指导后,自己设计并写出这份课程报告,心中充满了成就感。
通过课程设计还拓宽了知识面,学到了很多课本上没有的知识,报告只有自己去做能加深对知识的理解,任何困难只有自己通过努力去克服才能收获成功的喜悦。
本次课程设计还让我明白了理论联系实际的重要性,只有通过实际的动手才能加深对于理论知识的理解。
在做课程设计的过程中我发现自己对课本知识的理解不够深刻,掌握的不太牢靠,以后一定会努力地温习以前的知识。
再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。
通过这次课程设计我学习了很多的东西,使我眼界打开,感受颇深。
参考文献
[1]王永军,李景华,数字逻辑与数字系统(第3版),电子工业出版社.
[2]陈书开,王毅等,计算机组成与系统结构,武汉大学出版社,2005.8.
[3]王毓银,陈鸽,杨静,赵亦松,数字电路逻辑设计,高等教育出版社,2006.
[4]罗克露,单立军,刘辉,俸志刚,计算机组成原理,电子工业出版社.
[5]曾繁泰.EAD工程概论.北京:
清华大学出版社,2004
[6]潘松.VHDL实用教程[M].成都:
电子科技大学出版社,2000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全加器 设计 解析