用硬件描述语言设计浮点乘法器(原码一位乘法) 课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与工程学院
课程设计报告
题目全称:用硬件描述语言设计浮点乘法器(原码一位乘法)
课程名称:计算机组成原理
指导老师:职称:
(注:学生姓名填写按学生对该课程设计的贡献及工作量由高到底排列,分数按排名依次递减。序号排位为“1”的学生成绩最高,排位为“10”的学生成绩最低。)指导老师评语:
指导签字:
摘要
硬件乘法器,其基础就是加法器结构,它已经是现代计算机中必不可少的一部分。其大致可分为定点乘法器和浮点乘法器。其中浮点数的格式较定点数格式复杂,硬件实现的成本较高,完成一次浮点四则运算的时间也比定点运算要长。但浮点数比定点数的表示范围更宽,有效精度更高,因此更适合科学与工程计算的需要。但要求计算精度较高时,往往采用浮点运算。浮点乘法器设计(原码一位乘法)模型就是基于“移位和相加”的算法,设浮点数A=2^AE·AM,B=2^BE·BM,则A×B=2^(AE+BE)·(AM×BM),即阶码相加,尾数相乘。其运算步骤可以简单的归为(1)检测能否简化操作,并置结果数符(2)阶码相加(3)尾数相乘(4)乘积规格化等。
本论文第一章讲述了该课程设计的研究背景及意义及其理论依据和实验基础、课题的难点、重点、核心问题及方向。第二章重点讲述了原码一位乘法实现浮点乘法器设计的原理、操作流程及课程设计实验数据和结果
关键词:浮点乘法器、原码一位乘法、阶码、尾数
目录
第1章课题背景 (3)
1.1研究背景 (3)
1.1.1国内外的研究现状 (3)
1.1.2理论依据和实验基础 (4)
1.2课题的难点、重点、核心问题及方向 (4)
1.3研究目的和意义 (5)
第2章课题的需求分析 (6)
2.1 课题对应软硬件系统的性能 (6)
2.2业务流程 (6)
2.3其他需求 (7)
第3章课题的设计与实现 (8)
3.1课程设计的理论基础 (8)
3.2开发工具简介 (8)
3.2.1硬件部分 (8)
3.2.2软件部分 (8)
3.3课程设计的框架和流程图 (8)
3.4课程设计的实现 (10)
3.4.1创建工程 (10)
3.4.2设计输入 (10)
3.4.3约束(引脚绑定) (12)
3.4.4综合 (12)
3.4.5实现 (12)
3.4.6 下载 (14)
3. 4.7开始测试 (14)
3.5结论 (16)
第4章结束语 (17)
第1章课题背景
1.1研究背景
1.1.1国内外的研究现状
今日由于科技的突飞猛进,使得在一个小小的晶片上,能够容纳上百万的电晶体。然而市场的需求日新月异,所以在像以前那种用gate-level的时代,已经完全不能使用,所以必须借助电脑及高阶的语言来模拟其行为模式。于是,在这时有了AHDL语言,没想到AHDL威力强大,从高阶的电脑行为模式到gate-level 的方式都可以使用。再加上从模拟结束后在烧到FPGA上,这样的设计方式大大缩短了时间,怪不得现今的工业会以AHDL为一种开发的标准。
而在快速乘法的发展过程中,有两个人做出聊重要贡献,1951年,Booth 提出有符号数相乘可以通过将乘数两位一乘,从而将部分积减少到N/2个,Booth 的方法被MacSorley于1961年和1964年进行一步扩展,称为改进的Booth编码,另一个人是Wallae,他于1964年指出使用“华莱士树”的机制,可以将乘数的复杂度变成log(2/3) N。
遵守IEEE754标准的浮点乘法器与定点乘法器相比,不仅要进行阶码运算,而且其尾数部分的运算也有所不同,IEE E单精度浮点乘法的尾数部分运算,是将两个24位的无符号数二进制数相乘,得到一个24位的无符号数,中间需要进行舍入和规格化操作,相对而言,IEEE双精度浮点乘法的尾数部分的计算较为复杂,要将两个53位的无符号二进制数相乘,得到一个53位的乘积。在此过程中,如果使用最简单的移位加的策略将产生53个部分积,而改进Booth编码只需要很少的逻辑就可以将部分积的数量减少为27,每一个54位宽(53位加上Booth编码后有可能产生的一位扩展位),接下来的工作是对这些部分积进行相加,得到最后的结果。采用的方法可以分为阵列和树型结构,已有文献研究了两种结构的优劣,得出树型结构在延迟、面积以及布局布线等方面均要优于阵列结构的结论。
目前,浮点乘法器不仅应用在许多数学信号处理器中,而且广泛的应用于通用微处理器中。浮点乘法的操作主要包括单、双精度操作,它们将若干个部分积累加得到乘积。与IEEE754标准兼容的浮点乘法操作,还应包括对乘积的正确舍入,对阶码的必要调整,以及产生符合实际情况的例外位。另外,对于嵌入到现代处理器中的浮点乘法部件,大多数还要求具有流水结构、面积小且速度快。
1.1.2理论依据和实验基础
浮点数表示法是一种相似于科学记号的格式,主要分成两个部分,一个称为有效数(matissa’the significand and fraction part);另一个称为指数(exponent’characteristic)。在此,我们利用二进制数表示法来表示负的有效数和指数,我们用N表示浮点数的值、F表示二进制位的的有效数,而E表示二进制位的指数。因为是二补数表示,所以小数点前一位为signed bit,用来表示正负号。
正规化(normalization)——利用有效数(mantissa)和指数(exponent)的方法来表示浮点数,会造成同一个数值有多种不同的表示形态。为了达到最大的准确值,使得浮点数所能表示的范围扩大,因此,我们规定signedbit 为0时,小数点后一位必须为1;当signedbit为1时,小数点后一位必须为0。
算术右移逻辑右移——算术右移:当乘积移位时,符号也跟着向右延伸,相当于该数乘以基数的正或负的整数次方。
对阶操作——即比较两个浮点数的阶码大小,一般是使小阶向大阶对齐。原码形式的尾数右移时,尾数符号位不参加移位,尾数高位补0。为减少误差,可用另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。
舍入操作——在执行对阶或右规操作是,会使尾数低位上的一位或者若干位的数值被移掉,使数值的精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。常用的办法有“0”舍“1”入法,即移掉的最高位为1时则在尾数末尾加1;为0时则舍去移掉的数值。
浮点数乘法概念——一:指数相加;二:有效数相乘;三:正规化乘积结果,判断是否溢位;四:将结果做拾入(rounding);五:乘积符号由两运算元的符号决定。
如果要在实验层面上验证,则首先采用FPGA对该浮点乘法器进行功能验证,在Altera的FPGA上进行实现,主芯片是XILINX公司的SPRTAN XC2S200。
1.2课题的难点、重点、核心问题及方向
本课题的难点,同时也是重点,在于算法的设计,算法的实现,代码的输入,工具箱的正确连接。
核心问题是算法的设计和操作环境的正确操作。
方向就是扩大浮点乘法器的应用范围。