四川理工大学课程设计任务书设计题目:采用门电路设计一个16位的全加器电路院系:计算机学院专业:计算机科学与技术班级:2008级6班指导教师:朱文忠学生姓名:赵******************目录:一引言 (1)1.1 设计背景 (1)1.2 设计分工 (1)二设计目的 (2)2.1 设计目的 (2)2.2 设计内容 (2)三设计过程 (2)3.1 硬件方案 (2)3.1.1 一位全加器的原理及设计 (2)3.1.2 四位全加器的原理及设计 (4)3.1.3 十六位全加器的原理及设计 (7)3.2 软件方案 (9)3.3 可行性论证 (13)3.4 结论 (15)四参考文献 (16)引言1. 设计背景随着计算机科学技术的发展,人们获得信息的途径更加多样,获取信息的速度更加快捷。
硬件的发展允许程序员编出很多精彩的使用软件,也使得计算机更加普及。
中央处理器CP U的好坏是影响和制约计算机速度和性能的关键因素。
而加法器是组成C PU的的重要部件,一般运算速度的快慢就取决与每秒执行加法的次数,加法器是算术逻辑单元中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
并行进位的并行加法器又可以分为组内并行、组间串行的进位链和组内并行、组间并行的进位链。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
它们的目的就是要进位信号的产生尽可能的快,因此产生了二重进位链或更高重进位链,显然进位速度的提高是以硬件设计的复杂化为代价来实现的。
2. 设计分工赵**(081010*****):硬件方案、排版吴**(081010*****):可行性论证、结论王**(081010*****):软件方案、找资料设计目的1.设计目的(1)掌握1位全加器的形成;(2)掌握4位片SN74LS181的原理;(3)用4片SN74LS181以并/串形成16位字长的ALU;(4)形成16位运算器数据通路结构;(5)将设计结果下载到实验板上,进行验证。
2.设计内容了解计算机的硬件系统,了解一位全加器的组成原理,深入讨论计算机的组成原理,在熟悉常用的门电路的组成和工作过程的基础上,要求设计出一个16位的全加器。
其中要求设计并写出产生求和结果的逻辑表达式,需要写出利用快速进位链产生进位的逻辑表达式,同时还要实现时需要用一个时钟信号控制运算的执行,如第一拍给出输入数据,第二拍给出运算控制信号,第三拍送输出数据,然后又回到第一拍,循环往复,直到运算全部结束。
根据要求设计出针对具体指令所对应的流程图;根据流程及门电路设计出相应的全加器。
编写出VHDL程序,在仿真软件上运行并检验所设计的微程序的正确性。
设计过程1.硬件方案1.1 一位全加器的原理及设计1.1.1 一位全加器的原理全加器是实现两个一位二进制数及低位来的进位数相加即将三个一位二进制数相加,求得和数及向高位进位的逻辑电路。
全加器是组合逻辑电路中最常见也最实用的一种,考虑低位进位的加法运算就是全加运算,实现全加运算的电路称为全加器。
它主要实现加法的运算,其中分为并行全加器和串行全加器,所谓并行就是指向高位进位时是并行执行的,而串行就是从低位到高位按顺序执行,为了提高运算,必须设法减小或消除由于进位信号逐级传递所消耗的时间,为了提高运算速度,制成了超前进位加法器,这是对全加器的一种创新。
1.1.2 一位全加器的设计要使全加器进行加法运算,也需要用各种门电路设计出相应的逻辑电路,根据组合逻辑电路设计的步骤,我们先设计一位全加器的设计。
(1)根据全加器所需要的功能,我们可以设计出一位全加器的组合逻辑框图。
如图3.1所示。
图3.1 一位全加器的逻辑结构(2)根据逻辑图我们可以写出各个器件的逻辑功能。
C i = X i Y i C i-1+X i Y i C i-1+X i Y i C i-1+X i Y i C i-1 = (X i ○+Y i)C i-1+X i Y iF i = X i Y i C i-1 + X i Y i C i-1 +X i Y i C i-1 + X i Y i C i-1 = X i○+Y i○+C i-1(3)由上面可得。
X i和Y i为两个输入的一位二进制书,C i-1为低位二进制数相加的进位输出到本位的输入,则F i为本位二进制数X i、Y i和低位进位输入C i-1的相加之和,C i为X i、Y i和低位进位输入C i-1相加向高位的进位输出。
因此,该电路可以完成一位二进制数全加的功能,称为全加器。
此电路的真值表如表3-1所示。
表3-1一位全加器真值表X i Y i C i-1F i C i0 0 0 0 00 1 0 1 01 0 0 1 01 1 0 0 10 0 1 1 00 1 1 0 11 0 1 0 11 1 1 1 11.2 四位全加器的原理及设计1.2.1 四位全加器的工作原理加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
四位全加器可对两个多位二进制数进行加法运算,同时产生进位。
当两个二进制数相加时,较高高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。
1.2.2 四位全加器的设计设计四位全加器有两种方案,一种利用串行进位方式设计,另一种是利用并行进位方式进行设计。
但是这两种方式设计的电路的工作效率是恨不一样的,串行进位是需要等待低位计算的所得的进位后才能进行高位的运算的,而并行进位也就是先进位方式,每个进位只需要经历一个与非门和一个与或门的延时,这样和串行进位相比,大大提高了运算速度。
所以我们这里选择先进位全加器。
四位先行进位全加器的真值表如表3-2所示。
表中的C0 为低位向高位的进位,P1 ~P4 以及G1~G4 为输入端,C1~C4 为输出端。
表3-2 四位先行进位全加器真值表C0P1G1P2G2P3G3P4G4C1C2C3C4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 00 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 11 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1四位加法器可以采用四个一位全加器级连成串行进位加法器,如图3.2所示,其中CSA为一位全加器。
图3.2 四位先行进位加法器逻辑结构如图3.3 所示,四位先行进位全加器各个进位信号的产生只需要经历一级与非门和一级与或非门的延迟时间,所以比逐位进位全加器大大缩短了时间。
图3.3 四位先行进位加法器原理1.3 十六位全加器的原理及设计1.3.1 十六位全加器的原理16位全加器设计的基本思想,就是仿照通常的解组合逻辑电路的方法,先把原理图画出来,然后通过原理图把各个信号量描述出来,最后再根据各个器件的逻辑功能列出真值表。
当全加器工作时,先一个一个二进制数全部按位输入,从而在4位先行进位的加法器中进行运算,使相应部件执行所规定的操作。
1.3.2十六位全加器的设计设计16位全加器,这里使用的方法是把4个四位全加器串联起来。
16位全加器主要由输入、输出、进位和4位先行进位的加法器这四部分组成,其原理如图3.4所示。
图3.4 十六位全加器组成原理图16位全加器总共有16位输入,而每四位为一组输入到4位先行进位加法器中进行加法运算,一般输入是两位二进制数,如图是:Y4-1 X4-1 一直到Y16-13 X16-13 为输入;输出为F,共16位输出,而和输出一样四位为一组一起经过运算后输出,不同的是输入有两个二进制数,而输出只有一个二进制数;C表示进位,C0初始值为1,后面的C4,C8,C12,C16分别是每个四位加法器运算后的进位。
2. 软件方案用VHDL编写代码验证:在对真值表进行分析和各个功能设计完成之后,就可以使用VHDL编写程序,运用MAX-PLUSⅡ进行模拟仿真,以验证其正确性。
如下就是四位先行进位全加器和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 primitive 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 issignal 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相或的结果赋给ts(i)<=a(i) xor b(i) xor c(i); //把a,b,c进行异或的结果赋给send generate;//以下为赋值语句c(0)<=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)<=d(2) or (t(2) and d(1)) or (t(1) and t(2) and d(0)) or (t(1) and t(2) and t(0) and c(0)) ;c(4)<=d(3) or (t(3) and d(2)) or (t(3) and t(2) and d(1)) or (t(1) and t(2) and t(3) and d(0)) or (t(3) and t(2) and t(1) and t(0) and c(0));cout<=c(4);end Behavioral;如下是16位全加器的VHDL代码。