收藏 分销(赏)

组成原理课程设计.doc

上传人:精**** 文档编号:2221815 上传时间:2024-05-23 格式:DOC 页数:17 大小:390.04KB
下载 相关 举报
组成原理课程设计.doc_第1页
第1页 / 共17页
组成原理课程设计.doc_第2页
第2页 / 共17页
组成原理课程设计.doc_第3页
第3页 / 共17页
组成原理课程设计.doc_第4页
第4页 / 共17页
组成原理课程设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、个人收集整理 勿做商业用途16位全加器电路的设计与实现 学生姓名:杨传福 指导老师:王新摘要 本课程设计主要利用门电路完成一个16位的全加器电路的设计与实现。本设计采用逐步求解的方法,即先设计一位全加器,再利用一位全加器设计出四位全加器,最后在四位全加器的基础上设计出16位全加器,并使用VHDL语言编写程序,在MAX-PLUS仿真平台上进行仿真。仿真结果表明,本课程设计中设计出的16位全加器能正确完成16位二进制数的加法运算。关键词 全加器;门电路;先行进位Abstract:This curriculum design primarily use the gate circuit to com

2、plete a 16-bit full-adder circuit。The design solve this problem with stepbystep approach, namely start designing one full-adder, and then use one fulladder design a four full-adder , the last design the 16-bit full-adder based on the four fulladder, and use VHDL language programming, at MAX-PLUS sim

3、ulation on simulation platform. The simulation results show that the design of the curriculum design of the 16-bit fulladder to add a 16-bit binary number addition operations。本文为互联网收集,请勿用作商业用途Keywords:Full-adder; Gate circuit; First binary1引 言1。1课程设计的背景随着计算机科学技术的发展,人们获得信息的途径更加多样,获取信息的速度更加快捷。硬件的发展允许程

4、序员编出很多精彩的使用软件,也使得计算机更加普及。中央处理器CPU的好坏是影响和制约计算机速度和性能的关键因素。而加法器是组成CPU的的重要部件,一般运算速度的快慢就取决与每秒执行加法的次数,加法器是算术逻辑单元中的基本逻辑器件.例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式.并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。并行进位的并行加法器又可以分为组内并行、组间串行的进位链

5、和组内并行、组间并行的进位链。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大.它们的目的就是要进位信号的产生尽可能的快,因此产生了二重进位链或更高重进位链,显然进位速度的提高是以硬件设计的复杂化为代价来实现的。1.2课程设计目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计更清楚地理解下列基本概念:1。计算机的硬件基本组成;2。计算机中半加器的设计;3.计算机中全加器的执行过程;4.全加器的工作原理;5。 74系列芯片的组成和工作过程.在此基础上学会和锻炼以下能力:1

6、. 掌握全加器的组成、工作原理.2.掌握产生求和结果的逻辑表达式。3.掌握快速进位链产生进位的逻辑表达式。4。学会使用MAXPLUS 软件设计电路原理图及功能模拟.5熟悉常用的门电路,掌握快速进位链技术。1.3课程设计的内容了解计算机的硬件系统,了解一位全加器的组成原理,深入讨论计算机的组成原理,在熟悉常用的门电路的组成和工作过程的基础上,要求设计出一个16位的全加器.其中要求设计并写出产生求和结果的逻辑表达式,需要写出利用快速进位链产生进位的逻辑表达式,同时还要实现时需要用一个时钟信号控制运算的执行,如第一拍给出输入数据,第二拍给出运算控制信号,第三拍送输出数据,然后又回到第一拍,循环往复,

7、直到运算全部结束。根据要求设计出针对具体指令所对应的流程图;根据流程及门电路设计出相应的全加器.编写出VHDL程序,在仿真软件上运行并检验所设计的微程序的正确性。1。4课程设计的可行性分析全加器的性质为计算机硬件,而半加器的设计与操纵是必要的,另外是对文档的操作。我在上学期期间学习了计算机组成原理和以前学习的数字电路有关基础知识,具备有限的分析与设计能力,了解一些全加器和文档的设计与操纵;授课老师陈书开多年从事计算机组成原理的教学与研究工作,加上指导老师王新的悉心指导,因而该设计的实现在技术上是可行的。该系统的工作量相对于我这种开发水平的学生来说很大,必须保证按进度完成任务.实际工作量预计两星

8、期(每天48小时)。如包含门电路的操作及技术文档的整理、制作,工作量将更大。2 全加器的组成和原理分析全加器是常用的组合逻辑模块中的一种,对全加器的分析和对组合逻辑电路的分析一样。组合逻辑电路的分析,就是找出给定电路输入和输出之间的逻辑关系,从而了解给定逻辑电路的逻辑功能.组合逻辑电路的分析方法通常采用代数法,一般按下列步骤进行:(1)根据所需要的功能,列出真值表。(2)根据真值表,写出相应的逻辑函数表达式.(3)根据真值表或逻辑函数表达式,画出相应的组合逻辑电路的逻辑图 1。(4)用VHDL编写程序在MAX-PLUS上进行模拟,并分析结果的正确性。2。1 全加器简介全加器是组合逻辑电路中最常

9、见也最实用的一种,考虑低位进位的加法运算就是全加运算,实现全加运算的电路称为全加器。它主要实现加法的运算,其中分为并行全加器和串行全加器,所谓并行就是指向高位进位时是并行执行的,而串行就是从低位到高位按顺序执行,为了提高运算,必须设法减小或消除由于进位信号逐级传递所消耗的时间,为了提高运算速度,制成了超前进位加法器,这是对全加器的一种创新2。2。2 一位全加器要使计算机能解决某个问题,程序员要编写相应的程序。要使全加器进行加法运算,也需要用各种门电路设计出相应的逻辑电路,根据组合逻辑电路设计的步骤,我们先设计一位全加器的设计。(1)根据全加器所需要的功能,我们可以设计出一位全加器的组合逻辑框图

10、。如图2。1所示。 &=11=1& 图2。1 一位全加器的逻辑图(2)根据逻辑图我们可以写出各个器件的逻辑功能。Ci = Xi Y i Ci1+X i Y i C i1+X i Y i C i1+X i Y i C i1 = (X i Y i)C i-1+X i Y iFi = XiYiC i-1 + XiYiC i1 +XiYiC i1 + XiYiC i-1 = XiYiC i-1(3)由上面可得。Xi和Yi为两个输入的一位二进制书,Ci-1为低位二进制数相加的进位输出到本位的输入,则Fi为本位二进制数Xi、Yi和低位进位输入Ci1的相加之和,Ci为Xi、Yi和低位进位输入Ci-1相加向高

11、位的进位输出。因此,该电路可以完成一位二进制数全加的功能,称为全加器。此电路的真值表如表21所示。表2-1 一位全加器真值表XiYiCi-1FiCi00000010101001011001001100110110101111112.3 十六位全加器的设计设计16位的全加器思路非常简单且清晰,第一种方法就是先设计一个半加器,然后两个半加器合并成一个一位的全加器,最后用16个一位的全加器组合成为一个16位的全加器;第二种方法就是先设计一个一位的全加器,然后在用16个串联或并联就组成了一个16位的全加器,而本课程设计采用的是第二种方法3.2。4 十六位全加器的基本原理16位全加器设计的基本思想,就是

12、仿照通常的解组合逻辑电路的方法,先把原理图画出来,然后通过原理图把各个信号量描述出来,最后再根据各个器件的逻辑功能列出真值表.当全加器工作时,先一个一个二进制数全部按位输入,从而在4位先行进位的加法器中进行运算,使相应部件执行所规定的操作。16位全加器主要由输入、输出、进位和4位先行进位的加法器这四部分组成,其原理框图如图2。2所示。图2.2 16位全加器的组成原理图16位全加器总共有16位输入,而每四位为一组输入到4位先行进位加法器中进行加法运算,一般输入是两位二进制数,如图是:Y41 X41 一直到Y16-13 X1613 为输入;输出为F,共16位输出,而和输出一样四位为一组一起经过运算

13、后输出,不同的是输入有两个二进制数,而输出只有一个二进制数;C表示进位,C0初始值为1,后面的C4,C8,C12,C16分别是每个四位加法器运算后的进位.并行进位的概念可用于更大位数的加法器上,随着加法器位数的增加,加法电路变得越来越复杂。3 详细设计3。1 真值表的建立根据在本课程设计中十六位全加器的设计原理,只需要确定四位先行进位全加器的功能就可以直接推导出十六位全加器,所以,在本课程设计中先设计出四位先行进位全加器,而设计的第一步就是建立真值表。表31为四位先行进位全加器的真值表.表中的C0 为低位向高位的进位,P1 P4 以及G1 G4 为输入端,C1C4 为输出端。表3-1 4位先行

14、进位全加器真值表C0P1G1P2G2P3G3P4G4C1C2C3C400000000000000000000110001000001100001000000111100110001111000110000110011010100011111101110110000111001011001100101001111000011000110011111011011110011110101111110011100111111111111100000000000110000001100111000011000011100001111011110011110001111001100110111100111

15、111111111100001110111110011001011111110000110011100111111111111100111111111111100111111111111111113.2 四位先行进位加法器的逻辑设计根据16位全加器的基本原理,4位先行进位加法器的设计是整个设计的关键.四位先行进位全加器各个进位信号的产生只需要经历一级与非门和一级与或非门的延迟时间,所以比逐位进位全加器大大缩短了时间。 图3.2所示为本次课程设计中的四位先行进位全加器原理图4。 图3.1 4位先行进位全加器组合逻辑图 图3。2 4位先进进位全加器的原理图3。3 十六位全加器的功能设计在掌握了4位

16、先行进位全加器的设计之后,整体工作也就完成了一大半,在这个基础上做16位全加器只需把四个4位先进进位全加器串联起来,并增加输入和输出,那么,16位全加器的组合逻辑框图也就完成了,剩下的工作就是把各个器件的功能列出来.如图2.3即为16位全加器的原理图。根据4位先行进位全加器的真值表可以推导出16位全加器的功能函数。根据全加器的原理可以得到函数关系:C1=X1Y1+(X1+Y1)C0C2=X2Y2+(X2+Y2)C1 =X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0C3=X3Y3+(X3+Y3)C2 = X3Y3+(X3+Y3)X2Y2+(X3+Y3) (X2+Y2)X1Y1

17、+(X3+Y3) (X2+Y2)(X1+Y1)C0C4=X4Y4+(X4+Y4)C3 =X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+ (X4+Y4)(X3+Y3)(X2+Y2)X1Y1+ (X4+Y4) (X3+Y3) (X2+Y2)(X1+Y1)C0依次可得:C5=X5Y5+(X5+Y5)C4C6=X5Y5+(X5+Y5)C5C7=X6Y6+(X6+Y6)C6C8=X8Y8+(X8+Y8)C8C9=X9Y9+(X9+Y9)C8C10=X10Y10+(X10+Y10)C10C11=X11Y11+(X11+Y11)C10C12=X12Y12+(X12+Y12)C11C

18、13=X13Y13+(X13+Y13)C12C14=X14Y14+(X14+Y14)C13C15=X15Y15+(X15+Y15)C14C16=X16Y16+(X16+Y16)C15根据3。1的图所示可定义两个辅助函数:Pi= Xi+Yi ,Gi= XiYiPi表示进位传递函数, Gi表示进位产生函数将Pi、Gi代入前面的C1C4式,可得:C1=G1+P1C0 C2=G2+P2 G1+ P2P1C0C3=G3+P3 G2+ P3 P2 G1+ P3 P2P1C0 C4=G4+P4 G3+ P4P3 G2+ P4P3 P2 G1 +P4P3 P2P1C03。4 用VHDL编写代码验证在对真值表进

19、行分析和各个功能设计完成之后,就可以使用VHDL编写程序,运用MAXPLUS进行模拟仿真,以验证其正确性。如下就是四位先行进位全加器和16位全加器的VHDL代码./导入各种所需要的库library IEEE;use IEEE。STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH。ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primiti

20、ve components。-library UNISIM;-use UNISIM。VComponents。all;entity test isport(a,b:in std_logic_vector(3 downto 0); /a,b为输入,为4位标准逻辑矢量类型cin:in std_logic; /cin为输入,为标准矢量类型s:out std_logic_vector(3 downto 0); /s为输出,为4位标准逻辑矢量类型cout:out std_logic); /cout为输出,为标准矢量类型end test;architecture Behavioral of test iss

21、ignal d,t:std_logic_vector(3 downto 0); /信号量d,t为4位标准逻辑矢量signal c:std_logic_vector(4 downto 0); /信号量c为5位标准逻辑矢量beginas_add: for i in 0 to 3 generate /i从0循环到3,循环4次 d(i)=a(i) and b(i); /把a,b相与的结果赋给d t(i)=a(i) or b(i); /把a,b相或的结果赋给t s(i)=a(i) xor b(i) xor c(i); /把a,b,c进行异或的结果赋给send generate;/以下为赋值语句c(0)=

22、cin;c(1)=d(0) or (t(0) and c(0));c(2)=d(1) or (t(1) and d(0)) or (t(1) and t(0) and c(0);c(3) b(I),cin = carry(I 1),sum = sum(I),cout = carry(I)); end generate;end structural;- behavioral implementation of the 16bit adderarchitecture behavioral of adder16 is /定义结构体begin p1: process(a, b, cin) /过程开始v

23、ariable vsum : std_logic_vector(16 downto 1);variable carry : std_logic; begincarry := cin;for i in 1 to 16 loop /I从1循环至16,循环16次 vsum(i) := (a(i) xor b(i)) xor carry; /变量vsum(i)的赋值 carry := (a(i) and b(i)) or (carry and (a(i) or b(i)); /变量carry的赋值end loop;sum = vsum; /把vsum赋给信号量sumcout = carry; /把ca

24、rry赋给信号量coutend process p1; /进程结束end behavioral;3.5 结果分析根据4位先行进位全加器VHDL的代码,用MAX-PLUS进行模拟,得到仿真图,如图3。3所示。图3。3 4位先行进位全加器仿真图 根据表31和图3。3,可以进行分析四位先行进位全加器的正确性,用表中的数据和图中所表示出来的数据段进行对比分析,如图3.3,第一行为cin的输入值,对应表中的C0 ;第二行为cout进位信号量的输出;第三行是a的输入值,对应表中的Gi ;第四行为b的输入值,对应表中的Pi;第五行为s的输出值,对应表中的Ci 。由分析可得,四位先行进位全加器的设计和仿真以及

25、真值表的建立的过程都是正确的。根据16位全加器的VHDL代码,用MAX-PLUS进行模拟,得到仿真图,如图3。4所示。图3.4 16位全加器仿真图图3。4中,第一行cin为信号量初试值,第二行cout为信号量进位的输出,第三行和第四行中的a和b都为输入,第五行sum为16位的结果输出,从图中分析可得,16位全加器的设计是正确的,能准确的执行16位二进制数的加法运算.4 结束语通过本次课程设计对全加器器的设计和实现,确实积累和总结了不少的经验,锻炼了我的独立工作和实际动手能力,加深了对计算机中的全加器工作原理的认识,提高了对复杂的综合性实践环节具有分析问题、解决问题、概括总结的实际工作能力,对涉

26、及全加器项目的开发、设计过程有初步认识。经过近了两周的设计和开发,用门电路设计的16位全加器基本设计完毕。其功能基本符合用户需求,能够完成16位进位加法的运算。但是由于课程设计时间较短,还有许多不尽如人意的地方,其中最大的缺憾就是没有建立16位全加器的真值表,由于工作量太过庞大,无法完成,所以还有待于进一步完善其功能.但我从中学到了不少的道理,真正的理解到,理论与实践之间还是有很大的距离,这必将有利于我们以后的学习。使我明白,在以后的学习中,要不断的完善自己的知识体系结构,注意理论与实践的结合,学知识关键是要学活,而不能死记死搬书本上的知识,关键是要会灵活应用,这样所学到的东西才真正的学以致用

27、,才达到了学习的真正目的!在本次课题程序设计中,我学到了很多东西,通过本次课题程序设计,无论在理论上还是在实践中,我的计算机应用水平得到了很大的提升,这对于今后的工作和学习都是一种巨大的财富。 5 致谢短短的设计时间已经结束了,非常感谢指导老师-王新老师的帮助,他在百忙中对我的设计提了许多宝贵的建议和意见,使我从对设计课题的茫然到逐渐清晰,最后才使设计得以完成。也很感谢近三年来教我的各科任课老师,是他们丰富我的专业知识,能够运用于设计中,尤其是陈书开老师。同时也感谢我周围的同学,他们对我的帮助也很多.最后要感谢学校给我提供这么好的学习环境。参考文献1 陈书开、王毅等。计算机组成与系统结构M,武汉:武汉大学出版社,2005。82 王炜、李清宝、赵秋霞. 计算机组成原理与设计M. 北京:科学出版社,20063 张庸一. 计算机组成原理实验及课程设计指导M. 重庆:重庆大学出版社,20014 计算机组成原理实验指导书J。长沙理工大学

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服