浮点乘法器模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计
课设名称:浮点乘法器
课设日期: 2014.6.23——7.xx 姓名:朱鹏勇
学号: 110250425
哈尔滨工业大学(威海)
信电学院电子信息工程
2014.6
一.所用软件与硬件介绍
1.1 软件介绍
QuartusII是Alter提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。Quartus II在21世纪初推出时,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷。Altera的Quartus II提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具。
1.2 硬件介绍
EDA试验箱
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。具有如下特点:
一、采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
二、FPGA可做其它全定制或半定制ASIC电路的中试样片。
三、FPGA内部有丰富的触发器和I/O引脚。
四、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
二。系统设计
2.1设计思想
2.1.1课题背景
随着计算机和信息技术的快速发展, 人们对微处理器的性能要求越来越高。运算器是数字信号处理过程中的重要基本组成部分,绝大多数FPGA都使用定点数据格式进行运算处理,对高精度、数据范围较大的运算无能为力,而浮点数比定点数的表述范围宽,有效精度高,更适合科学计算与工程计算,因此需要设计一种高速的浮点运算单元
2.1.2 设计目的
1、弄清浮点乘法器运算规则
2、设计标准的浮点IEEE574乘法器。
3、实现浮点乘法功能。
2.2工作原理及系统框图
1.浮点格式简介
常用的浮点格式为IEEE 754标准。该标准定义
了单精度浮点数、双精度浮点数和扩展双精度浮点数
3种格式,单精度为32位,双精度为64位,扩展双精
度为80位以上,位数越多则精度越高,表示范围也越
大。在通常的数字信号处理应用中,单精度浮点数即可满足处理精度要求。单精度浮点数如图所示。
S E M
313023220符号位阶码尾数
S 为符号位, S 为1时表示负数, S 为0时表示正数; E 为指数,取值范围为[ 1, 254 ] , 0和255表示特殊值;M 有23位,再加上小数点左边一位隐含的1总共24位构成尾数部分。由它表示的浮点数的值X 可以表示为:
127-2
.11-x E S M ⨯⨯=)()(
流程图为:
乘法器运算操作分4 步进行:
(1) 确定结果的符号, 对A 和B 的符号位做异或操作。
(2) 计算阶码, 两数相乘, 结果的阶码是两数的阶码相加, 由
于A 和B 都是偏移码, 因此需要从中减去偏移码值127, 得到A 和B 的实际阶码, 然后相加, 得到的是结果的阶码, 再把他加上127, 变成偏移码。
(3) 尾数相乘,A 和B 的实际尾数分别为24 位数, 即11M a 和11M b, 最高位1 是隐藏位, 浮点数据格式只显示后23 位, 所以尾数相乘结果应为一个48 位的数据。
(4) 尾数规格化, 需要把尾数相乘的48 位结果数据变成24 位的数据, 分3 步进行:
①如果乘积的整数位为01, 则尾数已经是规格化了;如果乘积的整数位为10, 11, 则需要把尾数右移1 位, 同时把结果阶码加1。
②对尾数进行舍入操作, 使尾数为24 位, 包括整数
的隐藏位。
③把结果数据处理为32 位符合IEEE 浮点数标准的结果。包括
1 位符号位, 8 位结果阶码位, 结果23 尾数位。
2.3子模块输入输出和功能
2.3.1单精度浮点乘法器模块设计
1.sign(符号计算)模块
sign模块对被乘数的符号位signa和乘数的符号位signb作异或运算,得到乘积的符号位signr。
2.mult_24bit(尾数计算)模块
mult_24bit模块为24位定点乘法器,用于对被乘数的尾数位
manta和乘数的尾数位mantb进行乘法运算
3.nan_zero_inf(特殊值)模块
nan_zero_inf模块根据运算规则,通过被乘数和乘数判断积是否为NaN、无穷大或零值等特殊值。若为NaN和零值,则直接由nan 和zero端口输出标识信号;若为无穷大,则发送信号至exponent 模块,通过exponent模块输出overflow信号。
4.exponent(指数位计算)模块
exponent模块用于计算浮点数乘法的指数位,并判断运算结果是否溢出。首先由nan_zero_inf模块的输出信号判断运算结果是否为特殊值,若为特殊值则按特殊值的规则输出相应的指数位。若运算结果不为特殊值,则由被乘数和乘数的指数位expa和expb计算积的粗略指数位,并根据mult_24bit模块的运算结果判断是否需要对指数位作加1的修正处理。最后,根据修正后的指数位判断运算结果是否上溢出或下溢出。
5.mantissa(规格化)模块
mantissa模块用于对乘积的尾数部分进行规格化处理。首先由nan_zero_inf模块的输出信号判断运算结果是否为特殊值,若为特殊值则按特殊值的规则输出相应的尾数位。若运算结果不是特殊值,则由mult_24bit模块运算结果的最高位判断是否需要将尾数位右移1位。最后,对尾数位进行舍入(保留24位),并省略整数部分的1后输出。
6.数据输入模块