位全加器设计_第1页
位全加器设计_第2页
位全加器设计_第3页
位全加器设计_第4页
位全加器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、可编程逻辑器件设计大作业题 目 四位全加器设计 学 院 自动化与电气工程学院班 级 姓 名 学 号 2104年 12月 30 日 目录摘要11.设计目的22.设计要求23.设计原理23.1.四位全加器23.2.四位全加器的原理图44.设计方案44.1.仿真软件44.2.全加器原理54.2.1一位全加器的设计与原理54.2.2四位全加器的原理及程序设计55.程序设计76.仿真及结果8总结与体会10参考文献111摘要VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将

2、一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。本次设计是用VHDL语言设计四位全加器,并用Quartus II仿真。关键词:VHDL 四位全加器 Quartus II四位全加器设计1. 设计目的复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUS或Quartus I

3、I软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。2. 设计要求1)复习EDA的相关技术与方法;2)掌握VHDL或者Verilog语言,并要求能编写程序。3)Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。4)设计相关简单的电路,完成既定的功能。3.设计原理3.1.四位全加器加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式

4、。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。四位全加器可对两个多位二进制数进行加法运算,同时产生进位。当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示加数和被加数。输出SUMABCIN,当SUM大于255时,COUT置1。其管脚图如下:图3-1 四位全加器管脚图全加器是能进行加数、被加数和低位来的进位

5、信号相加,并根据求和结果给出该位的进位信号的加法电路。其真值表如表1所示:表1 全加器真值表输入输出abcinscout0000001010100101100100110011011010111111根据真值表可得出下列表达式: 根据以上表达式,可以用数据流方式设计出1位全加器。要设计的是4位全加器,这里采用串行进位来设计。先设计4个1位的全加器,然后将低位的进位输出与高位的进位输入相连,将要进行加法运算的两个4位数的每一位分别作为每一个1位全加器的输入,进行加法运算,所有的1位全加器的输出组成一个4位数,即输入的两个4位数之和,最高位的全加器产生的进位输出即两个4位数求和的进位输出。3.2.

6、四位全加器的原理图a(0)b(0)s(0)cina(1)b(1)s(1)a(2)b(2)s(2)a(3)b(3)s(3)coutcoutcoutcoutcincincin04位全加器的原理图如图3-2所示:图3-2 四位全加器原理图根据图3-2所示,可以采用结构化描述方式设计4位全加器。4. 设计方案4.1.仿真软件Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD

7、设计流程。Quartus II 除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 4.2.全加器原理4.2.1一位全加器的设计与原理一位全加器的原理图如下:图4-1 一位全加器原理图一位全加器的程序设计:ENTITY adder1 IS -1位全加器设计PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC);END adder1;ARCHITECTURE dataflow OF adder1 IS -用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; -用tm

8、p表示abBEGINtmp<=a XOR b AFTER 10 ns;s<=tmp XOR cin AFTER 10 ns;cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns;END dataflow;4.2.2四位全加器的原理及程序设计要设计的是4位全加器是采用串行进位来设计的。首先根据已经设计好的一位的全加器通过将低位的进位输出与高位的进位输入相连的方法,组成所需要的四位全加器。其程序如下:ENTITY adder4 IS -4位全加器设计PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); cin:IN S

9、TD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout:OUT STD_LOGIC);END adder4;ARCHITECTURE structural OF adder4 IS -用结构化描述风格设计4位全加器COMPONENT adder1PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC);END COMPONENT;SIGNAL x,y,z:STD_LOGIC;FOR u1,u2,u3,u4:adder1 USE ENTITY WORK.adder1(dataflow);BEGINu1:adde

10、r1 PORT MAP(a(0),b(0),cin,s(0),x);u2:adder1 PORT MAP(a(1),b(1),x,s(1),y);u3:adder1 PORT MAP(a(2),b(2),y,s(2),z);u4:adder1 PORT MAP(a(3),b(3),z,s(3),cout);END structural;四位全加器的原理图:图4-2 四位全加器原理图5.程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

11、ENTITY adder1 IS -1位全加器设计PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC);END adder1;ARCHITECTURE dataflow OF adder1 IS -用数据流方式设计1位全加器SIGNAL tmp:STD_LOGIC; -用tmp表示abBEGINtmp<=a XOR b AFTER 10 ns;s<=tmp XOR cin AFTER 10 ns;cout<=(a AND b)OR(tmp AND cin) AFTER 20 ns;END dataflow;LIBRARY IEEE;

12、USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adder4 IS -4位全加器设计PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); cin:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout:OUT STD_LOGIC);END adder4;ARCHITECTURE structural OF adder4 IS -用结构化描述风格设计4位全加器COMPON

13、ENT adder1PORT(a,b,cin:IN STD_LOGIC; s,cout:OUT STD_LOGIC);END COMPONENT;SIGNAL x,y,z:STD_LOGIC;FOR u1,u2,u3,u4:adder1 USE ENTITY WORK.adder1(dataflow);BEGINu1:adder1 PORT MAP(a(0),b(0),cin,s(0),x);u2:adder1 PORT MAP(a(1),b(1),x,s(1),y);u3:adder1 PORT MAP(a(2),b(2),y,s(2),z);u4:adder1 PORT MAP(a(3),

14、b(3),z,s(3),cout);END structural;6.仿真及结果根据上面的程序我进行了仿真,首先是对1位全加器进行仿真,结果如图6-1所示:图6-1 1位全加器仿真图由图6-1可以看出,1位全加器的仿真结果与表1相符,说明1位全加器设计成功。然后我又对4位全加器进行仿真,结果如图6-2所示:图6-2 4位全加器仿真图由图6-2可以看出,对设计的全加器进行了2组数据的仿真,由于4位全加器最低位的进位为0,因此将cin置0,仿真的结果与实际的运算结果是相同的。由仿真结果可知,设计的程序完成了全加器的功能,因此该程序正确。总结与体会时光飞逝,一转眼,一个学期又进尾声了,本学期的能力拓

15、展强化训练也完成了。俗话说“好的开始是成功的一半”。说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。当然,这其中也有很多问题,第一、不够细心比如由于粗心大意,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素

16、质绝对应该是严谨。我们这次课程设计所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。从开始得到老师给定课题时的一脸茫然到老师讲解后内容的初步了解再到自己通过查资料、与同学共同探讨、经过老师指导后,自己设计并写出这份课程报告,心中充满了成就感。通过课程设计还拓宽了知识面,学到了很多课本上没有的知识,报告只有自己去做能加深对知识的理解,任何困难只有自己通过努力去克服才能收获成功的喜悦。本次课程设计还让我明白了理论联系实际的重要性,只有通过实际的动手才能加深对于理论知识的理解。在做课程设计的过程中我发现自己对课本知识的理解不够深刻,掌握的不太牢靠,以后一定会努力地温习以前的知识。再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论