组成原理课程设计报告浮点数加法器(共24页).doc
精选优质文档-倾情为你奉上沈阳航空航天大学课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:浮点数加法器院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:完成日期:专心-专注-专业目 录第1章 总体设计方案1.1 设计原理本次课程设计的题目为浮点数加法器的设计,使用Xilinx Foundation F3.1可编程器件开发工具软件,以及伟福COP2000试验箱实现目的设计。具体要求为必须用基本逻辑门实现,浮点数的长度固定。根据所学可知,浮点数共由两部分组成。第一部分是阶码,第二部分是数据。这两部分又分别分为两部分。阶码由阶符和数值组成,数据由数符和数字组成。由于在计算机的存储和运算中,数据由补码表示。故首先应将输入的原码转化为补码。在此过程中,正数保持不变,负数则对除符号位以外的各位按位取反,再进行加1操作。然后对两数的阶码进行运算,决定移位的次数和结果的阶码。在移位时,对正数进行补0操作,对负数则进行补1操作。再对移位后的数据视为定点数进行相加运算。进而实现浮点数相加的功能。最后再将得到的结果转化为原码,进行输出。1.2 设计思路按照课设题目要求及原理图,先设计出电路的具体模块图,浮点数加法器的设计共包含如下五个模块: 原补转换模块 阶码选择模块 数值选择模块 数据移位模块 超前进位加法模块在五个部分中分别设计实现相应功能的器件,包括二选一数据选择器等。在连接具体电路时配合门电路以达到预期效果。浮点数加法器的底层、顶层的设计都采用原理图设计输入方式,经编译、调试后形成zyks.bit文件并下载到XCV200可编程逻辑芯片中,经硬件测试验证设计的正确性。1.3 设计环境1.3.1 硬件环境伟福COP2000型计算机组成原理实验仪COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器B、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20个按键、字符式LCD、RS232口。系统在实验时即使不借助PC 机,也可实时监控数据流状态及正确与否, 实验系统的软硬件对用户的实验设计具有完全的开放特性,系统提供了微程序控制器和组合逻辑控制器两种控制器方式, 系统还支持手动方式、联机方式、模拟方式三种工作方式,系统具备完善的寻址方式、指令系统和强大的模拟调试功能。1.3.2 EDA环境Xilinx foundation f3.1设计软件Xilinx foundation f3.1是Xilinx公司的可编程期间开发工具,该平台功能强大,主要用于百万逻辑门设计。该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。设计入口工具用于接收各种图形或文字的设计输入,并最终生成网络表文件。设计实现工具用于将网络表转化为配置比特流,并下载到器件。设计验证工具用来对设计中的逻辑关系及输出结果进行检验,并分析各个时序限制的满足情况。COP2000集成调试软件COP2000 集成开发环境是为COP2000 实验仪与PC 机相连进行高层次实验的配套软件,它通过实验仪的串行接口和PC 机的串行接口相连,提供汇编、反汇编、编辑、修改指令、文件传送、调试FPGA 实验等功能,该软件在Windows 下运行。第2章 详细设计方案2.1 总体方案的设计与实现本课设要求控制信号可以采用外部开关输入或用VHDL语言编写的控制器输出的控制信号,其他部分可以调用系统资源库中的器件;必须用基本的逻辑门实现,然后封装。通过设计和分析,将本次设计分为五个模块来实现。原补转换模块用于整个过程中的原补转换。如将输入的原码转换为补码。阶码选择模块用于选择结果的阶码。数值选择模块用于选择需要移位的数据并将其传送给移位器。数据移位模块用于将需要移位的数据进行移位并将其传送给加法器进行相加运算。超前进位加法模块用于过程的各种计算。例如补码的相减和数据的相加。本次实验逻辑层次分明,共分为六个层次,分别完成输入的原补转换,移位次数的计算,数据选择,数据移位,数据相加计算及最后结果的输出。其总体设计框图如图2.1所示。数据相加补码转为原码并输出两阶码相减决定移位次数及结果阶码原码输入并求补码数据选择数据移位图2.1 浮点数加法器整体设计框图2.2功能模块的设计与实现2.2.1 原补转换模块的设计与实现2.2.1.1 功能描述由于在计算机内部数据的存储以及运算是以补码的方式进行,因此首先我们应将输入的原码转换为补码。对于正数(带符号位)来说,其原码、补码一致。对于负数(带符号位)来说,其反码为符号位不变,其余各位按位取反(即反码)后末位加1。故对原补转换模块来说,其功能为将输入的原码转化为补码。其输入为原始数据的原码,输出为供以后继运算的补码。2.2.1.2 电路图正数的符号位为0,负数的符号位为1,故如将符号位与数据位进行异或运算,即可获得反码。而对于正数原码、反码、补码相同。而负数的补码则为反码加1,加1操作可由数据位的末位与上符号位产生,经由与门逐级传递进位。并且由于正数的符号位为0,该逻辑对正数无影响。其电路图如图2.2所示。图2.2 原补转换电路封装图如图2.3所示。图2.3 原补转换芯片封装外观图2.2.1.3 功能仿真表2.1 原补转换电路测试数据输入数据输出数据1,1,0,0,1,1,0,0,测试数据如表2.1所示。图2.4 原补转换电路测试图仿真图说明:图2.4中,红线所示数据输入为1,,其真实输出为1,。蓝线所示数据输入为0,,其真实输出为0,。从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。2.2.2 阶码选择模块的设计与实现2.2.2.1 功能描述对于浮点数来说,在运算时需要进行对阶操作,然后选择较大的阶码作为输出结果的阶码,并且对阶码较小的数字的补码进行移位操作。故阶码选择模块的输入与输出均为阶码的补码。其功能为对阶码进行选择。2.2.2.2 电路图在阶码选择电路中,我们采用了二选一数据选择器。它包括一个控制端S0,两个数据输入端D0,D1及一个数据输出端O。其真值表如表2.2:表2.2 二选一数据选择器真值表控制端S0输入端D0输入端D1输出端O00X001X11X001X11由真值表可看出。当S0为0时,输出为D0,S0为1时,输出为D1。故可将两阶码相减之后产生的符号位作为S0的输入信号,被减数的阶码与D0相连,件数的阶码与D1相连,这样就可以实现选择输出。其电路图如图2.5所示。图2.5 补码选择电路封装图如图2.6所示。图2.6 补码选择电路封装效果图2.2.2.3 功能仿真表2.3 补码选择电路测试数据COIN(相减符号位)输入阶码1输入阶码2输出阶码00110001101101101011001100测试数据如表2.3所示。图2.7 补码选择电路测试图仿真图说明:图2.7中,红线所示数据输入C0IN为1,阶码1为1010,阶码2为1100,其真实输出1100。蓝线所示数据输入COIN为0,阶码1为0110,阶码2为0011,其真实输出为0110。从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。2.2.3 数值选择模块的设计与实现2.2.3.1 功能描述在对阶过程结束后,需要对阶码较小的数字的补码进行移位操作。这时便需要对输入的两个数据进行选择,然后再进行移位和相加等操作。故数值选择模块的输入与输出均为数值的补码。其功能为对数值进行选择和分流输出。2.2.3.2 电路图在数值选择电路中,我们同样采用了二选一数据选择器。但此时,输出由原来的4位更改为了8位,即输入的两组数值均要进行输出。其中,高四位为需要进行移位的数据,低四位为不需要进行移位的数据。此时的COIN(与数据选择器的控制端S0相连)仍为两阶码相减之后产生的符号位。被减数连至A23-A20,减数连至A13-A10。其电路图如图2.8所示。图2.8 数值选择器电路图封装图如图2.9所示。图2.9 数值选择电路封装效果图2.2.3.3 功能仿真表2.4 数据选择电路测试数据COIN(相减符号位)输入数值1输入数值2输出数值0011000110110,00111101011001100,1010测试数据如表2.4所示。图2.10 数值选择电路测试图仿真图说明:图2.10中,红线所示数据输入C0IN为1,数值1为1010,数值2为1100,其真实输出。蓝线所示数据输入COIN为0,数值1为0110,数值2为0011,其真实输出为。从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。2.2.4 数据移位模块的设计与实现2.2.4.1 功能描述经过对阶过程与数据选择过程后,我们得到了移位的次数和待移位的数据,接下来则需要用数据移位模块对数据进行移位操作。故数据移位模块的输入为待移位的数据(补码)与移位次数(原码),输出为移位后的数据(补码)。其功能为对数据进行移位和输出。2.2.4.2 电路图根据计算机中数据存储的特点可知S2,S1,S0的位权分别为4,2,1。即若S2为1,数据需右移四位,S1为1,数据需右移两位,S0为1,数据需右移一位。另根据数据补位的原则可知,如原数据为正数则补0,为负数则补1。故当S0为控制信号时,可在相邻两位间用二选一数据选择器相连,当S0为1时输出高位,S0为0时输出低位。本级的输出用以作为当S1为控制信号时的输入。当S1为控制信号时,每隔一位进行选择。同理S2为控制信号时,每隔三位进行选择。而对于补位来说,则由符号位与数据位进行数据选择得到。S0为控制信号时符号位仅与最高位相与,S1为控制信号时符号位与最高两位相与,S3时则为最高四位。S0作为控制信号时的输出为S1作为控制信号时的输入,S1为控制信号的输出为S2是控制信号时的输出。最后的输出仅有数据位,不含符号位。其电路如图2.11所示。图2.11 数据移位器电路图封装图如图2.12所示。图2.12 数值移位电路封装效果图2.2.4.3 功能仿真表2.5 数据移位电路测试数据移位次数S2-S0输入数值C,A10-A0输出数值B10-B00100,1011,测试数据如表2.5所示。图2.13 数据移位电路测试图仿真图说明:图2.13中,红线所示数据,输入S2,S1,S0为010,数值为0,,其真实输出为。对于蓝线所示数据,输入S2,S1,S0为101,数值为1,,其真实输出为。从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。2.2.5 加法模块的设计与实现2.2.5.1 功能描述在上述模块全部运行结束后,需要将得到的移位过的数据进行相加得到最终的结果。故加法模块的输入为数据移位器输出的一组移位后的数据已经数据选择器输出的一组不移位的数据。输出为相加之后的数据。其功能是实现两个数的超前进位加法运算。2.2.5.2 电路图设二进制加法器第i位为Ai,Bi,输出为Si,进位输入为Ci,进位输出为Ci+1,则有:Si=AiBiCi,Ci+1=Ai*Bi+Ai*Ci+ Bi*Ci=Ai *Bi+(Ai+Bi)*Ci。令Gi=Ai*Bi,Pi= Ai+Bi,则Ci+1= Gi+ Pi*Ci当Ai和Bi都为1时,Gi=1,产生进位Ci+1=1。当Ai和Bi有一个为1时,Pi= 1,传递进位Ci+1= Ci。因此Gi定义为进位产生信号,Pi定义为进位传递信号。Gi的优先级比Pi高,也就是说:当Gi = 1时无条件产生进位,而不管Ci是多少;当Gi=0而Pi=1时,进位输出为Ci,跟Ci之前的逻辑有关。设4位加数和被加数为A和B,进位输入为Cin,进位输出为Cout,对于第i位的进位产生Gi=Ai·Bi ,进位传递Pi=Ai+Bi,i=0,1,2,3于是对于各级进位输出,递归的展开Ci有:C0=CinC1=G0+P0·C0C2=G1+P1·C1=G1+P1·G0+P1·P0·C0C3=G2+P2·C2=G2+P2·G1+P2·P1·G0+P2·P1·P0·C0C4=G3+P3·C3=G3+P3·G2+P3·P2·G1+P3·P2·P1·G0+P3·P2·P1·P0·C0Cout=C4由此可以看出,各级的进位彼此独立产生,只与输入数据和Cin有关,将各级间的进位级联传播给去掉了,因此减小了进位产生的延迟。故其电路图如图2.14所示。图2.14 4位超前进位加法器电路图封装图如图2.15所示。图2.15 4位超前进位加法器封装效果图2.2.5.3 功能仿真表2.6 加法电路测试数据上级进位C0输入数值A3-A0输入数值B3-B0输出数据01011010011111010110011111测试数据如表2.6所示。图2.16 加法电路测试图仿真图说明:图2.16中,红线所示数据,输入C0为1,数值A3-A0为0101,B3-B0为1001,其真实输出为1111。对于蓝线所示数据,输入C0为1为0,数值A3-A0为1011,B3-B0为1001,其真实输出为1111。从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。2.3 总电路仿真测试仿真测试试主要验证设计电路逻辑功能、时序的正确性,本次设计为浮点数加法器,设计完成主要采用功能仿真方法对设计的电路进行仿真从而验证其电路功能的正确性。(1)建立仿真波形文件及仿真信号选择功能仿真时,首先建立仿真波形文件,数据输入AJ3-AJ0、AS11-AS0、BJ3BJ0、BS11-BS0,结果输出为OJ3-OJ1、OS11-OS0。(2)功能仿真结果与分析图2.17 总电路仿真波形图2.18 总电路输出结果仿真图说明:如图2.17、2.18从波形可以清楚的看出输入和输出结果,在本次测试中输入的两个数为分别为0,010,0,与1,011,1,。从图2.17、2.18可以看到输出结果为0,010,0,,经过对比正确无误,即说明总的电路设计成功,符合课设题目的基本要求。第3章 编程下载与硬件测试3.1 编程下载在编译完成后,利用COP2000仿真软件的编程下载功能,将得到的zyks.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。3.2 硬件测试及结果分析利用XCV200实验板进行硬件功能测试。浮点数加法器的全部输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。 表3.1 XCV200实验板信号对应关系引脚信号名称XCV200实验板引脚名称XCV200实验板引脚号AJ3P33K4:7AJ2P34K4:6AJ1P35K4:5AJ0P36K4:4AS11P38K4:3AS10P39K4:2AS9P40K4:1AS8P41K4:0AS7P53K3:7AS6P55K3:6AS5P54K3:5AS4P53K3:4AS3P50K3:3AS2P49K3:2AS1P48K3:1AS0P47K3:0BJ3P63K2:7BJ2P64K2:6BJ1P65K2:5BJ0P66K2:4BS11P70K2:3BS10P71K2:2BS9P72K2:1BS8P73K2:0BS7P79K1:7BS6P80K1:6BS5P81K1:5BS4P82K1:4BS3P84K1:3BS2P85K1:2BS1P86K1:1BS0P87K1:0OJ3P78B7OJ2P93B6OJ1P99B5OJ0P107B4OS11P108B3OS10P109B2OS9P124B1OS8P125B0OS7P147A7OS6P152A6OS5P178A5OS4P184A4OS3P185A3OS2P203A2OS1P111A1OS0P110A0利用表2.2中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关组K4、K3、K2、K1输入数据,同时观察LED指示灯显示结果,得到如图3.1所示的硬件测试结果。图3.1 硬件测试结果图 参考文献1 曹昕燕. EDA技术实验与课程设计M.北京:清华大学出版社,20062 唐朔飞.计算机组成原理(第二版)M.北京:高等教育出版社,20083 李景华. 可编程程逻辑器件与EDA技术M.北京:东北大学出版社,20014 王爱英.计算机组成与结构(第4版)M.北京:清华大学出版社,20065 王冠.Verilog HDL与数字电路设计M.北京:机械工业出版社,20056 江国强.EAD技术习题与实验M.北京:电子工业出版社,20057 杜建国.Verilog HDL硬件描述语言M.北京:国防工业出版社,2004附 录课程设计总结:通过此次组成原理课程设计,让我懂得了学习要理论联系实践,在实践中能学到很多书本上没有的东西。这次课程设计,我遇到了很多问题,刚开始拿到题目的时候觉得很熟悉但是不知道从何下手,后来经过查资料和老师的帮助才有了思路。但很快又有了新的问题,在各个模块设计好了之后,在仿真过程中,有几个模块因为连线问题仿真结果出错,经过整改后整个仿真成功通过。但最终由于个人水平有限,仍旧不能十分完美的实现计算机中加法器的功能。例如舍入和判断溢出等功能仍未能实现。通过这次实验设计,使我了解了许多计算机组成原理知识,加深了我对浮点数的存储格式以及运算方式的理解,将理论知识很好的应用在实践中,同时通过本次实验也初步掌握了编程语言及原理图实现芯片生成的功能。在不断的研究复习中也掌握了Xilinx foundation f3.1设计软件和COP2000集成调试软件的使用及相关知识,能独立的制作和生成所需要的逻辑部件。在加深理论知识的同时,个人实践能力及动手能力得到提高。更重要的是知道了自己在设计方面的不足和所需要学习的知识,在这次设计中指导老师给予了我很大的帮助,在此表示感谢!并且在以后的学习和实验中会更加努力的学习,弥补自己的不足。指导教师评语:指导教师(签字): 年 月 日课程设计成绩