32位浮点加法器设计[整理版]
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分的实验描述,框图及其说明由**负责,最后的实验总结及整个写好后的论文修改 由***负责。整个过程分工明确,协调进行,配合清楚。
6.心得体会
实验过后,终于长长的舒了一口气,这个课程的任务终于要完成了,当然,实 验,仅仅是检验学习的一种途径,在后面,更应该多多练习,熟悉并掌握这门实用 的数字电路工具。贯穿整个实验,小组成员之间紧密配合,在团队合作,共同进步 的思想下,收获了很多个体与团队间的经验,但更多的,还是对课程知识的运用和 总结,总得说来,这次实验让大家受益匪浅。
为[1,
254],0和255表示特殊值;f有22位,再加上小数点左边一位隐含的1总共23位构成尾
数部分
1.3浮点பைடு நூலகம்算
浮点加法运算由一些单独的操作组成。在规格化的表示中,对于基为2的尾数 的第1个非0位的1是隐含的,因此,可以通过不存储这一位而使表示数的数目增 加。但在进行运算时不能忽略。浮点加法一般要用以下步骤完成:
a)指数相减:将2个指数化为相同值,通过比较2个指数的大小求出指数差的
绝对值△E。
b)对阶移位:将指数较小的操作数的尾数右移4E位。
c)尾数加减:对完成对阶移位后的操作数进行加减运算。
d)转换:当尾数相加的结果是负数时,要进行求补操作,将其转换为符号2尾数 的表示方式。
e)前导1和前导0的判定:判定由于减法结果产生的左移数量或由于加法结 果产生的右移数量。
1.设计过程总结
本次实验采用Top_down的设计思路,在弄清楚了浮点数加法的基本规则过 后,即清楚输入输出,从而拟定几个基本的输入,ia,ib,ena,reset和clk,即用 于计算的两个浮点数ia和ib根据要求,其位宽定为32位,之后就是一个重置端reset,和脉冲信号elk,最后就是使能端ena,当然,有输入肯定有输出了,综合 浮点数的两个标准,尾数和指数,即ze和zm应浮点数的一般大小,暂时把ze设为8位,zm设定为24位,即暂定为两个输出端口,但是,作为一个完整的输出 结果,在输入信号的综合完成后,明显只有一个输出数是不完整的,因此我们增加 了一个辅助输出,即driver。输入输出结束过后,就是对一些寄存器的定义了, 显然,在对输入的锁存状态有一些特别的考虑,即ia和ib暂时锁存在一个状态 中,然后通过浮点加法规则,对寄存器取值计算,最后输出结果,具体加法器算法 参考网络。
f)规格化移位:对尾数加减结果进行移位,消除尾数的非有效位,使其最高位为
1。
g)舍入:有限精度浮点表示需要将规格化后的尾数舍入到固定结果。 由以上 基本算法可见,它包含2个全长的移位即对阶移位和规格化移位,还要包括3个全 长的有效加法,即步骤c、d、g。由此可见,基本算法将会有很大的时延。
2 32位浮点加法器设计与实现
IS'】.cjcfd«-x|-p.vka-R. lxf-cJ-kfeJ.±:|a> ■ '■=
图
图三
即发现加法器中多了一个端口,但是在TB当中又找不到ze和zm两个端口, 很明显,第一个错误是由于马虎造成,后面通过对TB的修改,添加了新的寄存器ze和zm因此在加法器的接入端口上面将zo端口用这两个新增的端口代替,再进 行仿真。后面波形是出来了,但还是不对,即只有tb中输入的波形,没有输出的 波形,仿真波形如下:
浮点数和
扩展双精度浮点数3种,单精度为32位,双精度为64位,扩展双精度为80
位以上,位数
越多精度越高,表示范围也越大。在通常的数字信号处理应用中,单精度浮点
数已经足够用
了,本文将以它为例来设计快速浮点加法器。单精度浮点数如图1所示。
$
e
f
位数:3130n220
其中s为符号位,s为1时表示负数,s为0时表示正数;e为指数,取值范围
University, Shanghai,China)
Abstract: The floating-point arithmetic provides greater precision and greater dynamic representation indication range, with floating point calculations have become an indispensable part of the program.Floatingpoint adder is the most frequently used floating point arithmetic. Therefore, the performance of floating point adder affecting the entire CPU floating point processing capabilities. In this paper the principlebased floating-point addition, Verilog hardware description language
完整的加法器大概框架构建出来过后,剩下的除了用适当的verilog代码进行 填充之外,还要做一个完整的TB来进行测试,关于TB,我们初拟定两个固定的32位二进制数ia和ib,即32'h41A00000和32'H41080000,最后通过检测通过加法器
运算的结果和理论值,来判断所设计的加法器是否满足要求。综上,即为本次实验 的大概设计思路。
32
32位浮点加法器设计
苦行僧宫城
摘要:运算器的浮点数能够提供较大的表示精度和较大的动态表示范围,浮点 运算已成为现代计算程序中
不可缺少的部分。浮点加法运算是浮点运算中使用频率最高的运算。因此,浮 点加法器的性能影响着整个
CPU勺浮点处理能力。文中基于浮点加法的原理,采用Verilog硬件描述语言
设计32位单精度浮点数加法
基于上述浮点数的加法运算规则,我们小组主要的设计思路是:
1.前端处理,还原尾数
2.指数处理,尾数位移使指数相等
3.尾数相加
4.尾数规格化处理
5.后端处理,输出浮点数
设计代码如下:仿真结果如下:
3 3Verilog实验报告总结
此次实验,从国庆过后开始,28日结束,在小组三个人的共同努力下,克服多 次失败过后,终于把波形调了出来。实验过程中遇到了许多在之前没有遇过过的问 题,其中文件关联尤为突出,还有一些Verilog的语法问题,通过这次实验,学到 了许多实际编程有用的东西,特别是对Top_downObottom-up的设计思路,有了 更为深刻的理解。
述有了进一步的心得。为用verilog构建复杂的数据模块奠定基础,对今后的数字 电路设计有深刻的影响。
5.小组成员分工及总结
此次实验,小组分工是十分明确的,整个实验任务主要分为两块,实验和论文 的书写,实验由三个人共同负责,一起讨论,一起对代码进行修改和仿真。然后, 论文的书写就主要分为三块,前面的对浮点加法器的介绍主要由***负责,中间部
desig n 32-bit sin gle-precisi on float in g-po int adder and float in g-po int
adder using modelsim simulatio n an alysis in order to verify the correctness andfeasibility of the desig小组成员及任务分配:
参考文献:
快速浮点加法器的优化设计 王颖 林正浩 同济大学微电子中心
图四
最后检查还是端口接法不对,修改,仿真,得到如下波形
冬五
进检验,满足要求。仿真过程结束。
4.实验结果分析总结
整个实验过程就是一个提成方案,描述方案,找到问题,解决问题的过程,并 且通过这个过程来找到实验的意义。通过这次实验,主要是对浮点数的运算用verilog代码来描述有了更加深刻的认识,同时也为其他的数据算法用verilog描
器,并用modelsim对浮点加法器进行仿真分析,从而验证设计的正确性和可 行性。
关键词:浮点运算 浮点加法器Verilog硬件描述语言
Studying on Relation of Technology and Civilization苦行僧宫城
(School of Mechatronic Engineering and Automation, Shanghai
1浮点数和浮点运算
1.1浮点数
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示
任意某个
实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算
机中通常是
2)的整数次幕得到,这种表示方法类似于基数为10的科学记数法。
1.2浮点格式
常用的浮点格式为IEEE754标准,IEEE754标准有单精度浮点数、双精度
3.仿真过程总结
仿真,即在软件上面modisim上面仿真了。仿真之前,针对加法器的具体仿真 要求,我们编出了相对的测试tb,但是一般第一次仿真都是以失败告终的,我们也 不出意外,在对两个文件编译成功过后,我们对两个文件进行关联,可是就是关联 不上,如下图:
Errm loedlL? desip
图一
然后我们又把两个代码拿出来进行对比,终于在两个文件的模块接口处找到了 问题,接口如图:
2•代码编写过程总结
在拟定了实验大概构架过后,我们查询了相关verilog的语法规则,在对网络
给出的代码进行详细解读和分析过后,在小组三人的共同努力下,对写出的代码作 出了细致的解释,特别是对寄存器和相关网络借口的注释更为详尽。当然,参考代 码毕竟不是抄袭,在保留自己大概思想的前提下,对几个错误之处,进行对应修 改。
6.心得体会
实验过后,终于长长的舒了一口气,这个课程的任务终于要完成了,当然,实 验,仅仅是检验学习的一种途径,在后面,更应该多多练习,熟悉并掌握这门实用 的数字电路工具。贯穿整个实验,小组成员之间紧密配合,在团队合作,共同进步 的思想下,收获了很多个体与团队间的经验,但更多的,还是对课程知识的运用和 总结,总得说来,这次实验让大家受益匪浅。
为[1,
254],0和255表示特殊值;f有22位,再加上小数点左边一位隐含的1总共23位构成尾
数部分
1.3浮点பைடு நூலகம்算
浮点加法运算由一些单独的操作组成。在规格化的表示中,对于基为2的尾数 的第1个非0位的1是隐含的,因此,可以通过不存储这一位而使表示数的数目增 加。但在进行运算时不能忽略。浮点加法一般要用以下步骤完成:
a)指数相减:将2个指数化为相同值,通过比较2个指数的大小求出指数差的
绝对值△E。
b)对阶移位:将指数较小的操作数的尾数右移4E位。
c)尾数加减:对完成对阶移位后的操作数进行加减运算。
d)转换:当尾数相加的结果是负数时,要进行求补操作,将其转换为符号2尾数 的表示方式。
e)前导1和前导0的判定:判定由于减法结果产生的左移数量或由于加法结 果产生的右移数量。
1.设计过程总结
本次实验采用Top_down的设计思路,在弄清楚了浮点数加法的基本规则过 后,即清楚输入输出,从而拟定几个基本的输入,ia,ib,ena,reset和clk,即用 于计算的两个浮点数ia和ib根据要求,其位宽定为32位,之后就是一个重置端reset,和脉冲信号elk,最后就是使能端ena,当然,有输入肯定有输出了,综合 浮点数的两个标准,尾数和指数,即ze和zm应浮点数的一般大小,暂时把ze设为8位,zm设定为24位,即暂定为两个输出端口,但是,作为一个完整的输出 结果,在输入信号的综合完成后,明显只有一个输出数是不完整的,因此我们增加 了一个辅助输出,即driver。输入输出结束过后,就是对一些寄存器的定义了, 显然,在对输入的锁存状态有一些特别的考虑,即ia和ib暂时锁存在一个状态 中,然后通过浮点加法规则,对寄存器取值计算,最后输出结果,具体加法器算法 参考网络。
f)规格化移位:对尾数加减结果进行移位,消除尾数的非有效位,使其最高位为
1。
g)舍入:有限精度浮点表示需要将规格化后的尾数舍入到固定结果。 由以上 基本算法可见,它包含2个全长的移位即对阶移位和规格化移位,还要包括3个全 长的有效加法,即步骤c、d、g。由此可见,基本算法将会有很大的时延。
2 32位浮点加法器设计与实现
IS'】.cjcfd«-x|-p.vka-R. lxf-cJ-kfeJ.±:|a> ■ '■=
图
图三
即发现加法器中多了一个端口,但是在TB当中又找不到ze和zm两个端口, 很明显,第一个错误是由于马虎造成,后面通过对TB的修改,添加了新的寄存器ze和zm因此在加法器的接入端口上面将zo端口用这两个新增的端口代替,再进 行仿真。后面波形是出来了,但还是不对,即只有tb中输入的波形,没有输出的 波形,仿真波形如下:
浮点数和
扩展双精度浮点数3种,单精度为32位,双精度为64位,扩展双精度为80
位以上,位数
越多精度越高,表示范围也越大。在通常的数字信号处理应用中,单精度浮点
数已经足够用
了,本文将以它为例来设计快速浮点加法器。单精度浮点数如图1所示。
$
e
f
位数:3130n220
其中s为符号位,s为1时表示负数,s为0时表示正数;e为指数,取值范围
University, Shanghai,China)
Abstract: The floating-point arithmetic provides greater precision and greater dynamic representation indication range, with floating point calculations have become an indispensable part of the program.Floatingpoint adder is the most frequently used floating point arithmetic. Therefore, the performance of floating point adder affecting the entire CPU floating point processing capabilities. In this paper the principlebased floating-point addition, Verilog hardware description language
完整的加法器大概框架构建出来过后,剩下的除了用适当的verilog代码进行 填充之外,还要做一个完整的TB来进行测试,关于TB,我们初拟定两个固定的32位二进制数ia和ib,即32'h41A00000和32'H41080000,最后通过检测通过加法器
运算的结果和理论值,来判断所设计的加法器是否满足要求。综上,即为本次实验 的大概设计思路。
32
32位浮点加法器设计
苦行僧宫城
摘要:运算器的浮点数能够提供较大的表示精度和较大的动态表示范围,浮点 运算已成为现代计算程序中
不可缺少的部分。浮点加法运算是浮点运算中使用频率最高的运算。因此,浮 点加法器的性能影响着整个
CPU勺浮点处理能力。文中基于浮点加法的原理,采用Verilog硬件描述语言
设计32位单精度浮点数加法
基于上述浮点数的加法运算规则,我们小组主要的设计思路是:
1.前端处理,还原尾数
2.指数处理,尾数位移使指数相等
3.尾数相加
4.尾数规格化处理
5.后端处理,输出浮点数
设计代码如下:仿真结果如下:
3 3Verilog实验报告总结
此次实验,从国庆过后开始,28日结束,在小组三个人的共同努力下,克服多 次失败过后,终于把波形调了出来。实验过程中遇到了许多在之前没有遇过过的问 题,其中文件关联尤为突出,还有一些Verilog的语法问题,通过这次实验,学到 了许多实际编程有用的东西,特别是对Top_downObottom-up的设计思路,有了 更为深刻的理解。
述有了进一步的心得。为用verilog构建复杂的数据模块奠定基础,对今后的数字 电路设计有深刻的影响。
5.小组成员分工及总结
此次实验,小组分工是十分明确的,整个实验任务主要分为两块,实验和论文 的书写,实验由三个人共同负责,一起讨论,一起对代码进行修改和仿真。然后, 论文的书写就主要分为三块,前面的对浮点加法器的介绍主要由***负责,中间部
desig n 32-bit sin gle-precisi on float in g-po int adder and float in g-po int
adder using modelsim simulatio n an alysis in order to verify the correctness andfeasibility of the desig小组成员及任务分配:
参考文献:
快速浮点加法器的优化设计 王颖 林正浩 同济大学微电子中心
图四
最后检查还是端口接法不对,修改,仿真,得到如下波形
冬五
进检验,满足要求。仿真过程结束。
4.实验结果分析总结
整个实验过程就是一个提成方案,描述方案,找到问题,解决问题的过程,并 且通过这个过程来找到实验的意义。通过这次实验,主要是对浮点数的运算用verilog代码来描述有了更加深刻的认识,同时也为其他的数据算法用verilog描
器,并用modelsim对浮点加法器进行仿真分析,从而验证设计的正确性和可 行性。
关键词:浮点运算 浮点加法器Verilog硬件描述语言
Studying on Relation of Technology and Civilization苦行僧宫城
(School of Mechatronic Engineering and Automation, Shanghai
1浮点数和浮点运算
1.1浮点数
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示
任意某个
实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算
机中通常是
2)的整数次幕得到,这种表示方法类似于基数为10的科学记数法。
1.2浮点格式
常用的浮点格式为IEEE754标准,IEEE754标准有单精度浮点数、双精度
3.仿真过程总结
仿真,即在软件上面modisim上面仿真了。仿真之前,针对加法器的具体仿真 要求,我们编出了相对的测试tb,但是一般第一次仿真都是以失败告终的,我们也 不出意外,在对两个文件编译成功过后,我们对两个文件进行关联,可是就是关联 不上,如下图:
Errm loedlL? desip
图一
然后我们又把两个代码拿出来进行对比,终于在两个文件的模块接口处找到了 问题,接口如图:
2•代码编写过程总结
在拟定了实验大概构架过后,我们查询了相关verilog的语法规则,在对网络
给出的代码进行详细解读和分析过后,在小组三人的共同努力下,对写出的代码作 出了细致的解释,特别是对寄存器和相关网络借口的注释更为详尽。当然,参考代 码毕竟不是抄袭,在保留自己大概思想的前提下,对几个错误之处,进行对应修 改。