版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章浮点算法及FPU Verilog HDL设计 前面设计的CPU中只有整数部件IU,如果要对小数进行计算,则需要相应的电路支持。 定点部件只需要假设一个小数点存在于某2位之间,计算时要把小数点对齐。 浮点部件与定点部件不同,因为浮点数的小数点不是固定的。 浮点数也是用二进制数表示的,但这些二进制数位有不同的意义。9.1 浮点数表示 定点数所表示的数值范围太小,特别是科学计算方面,其数值范围很大,因此引入浮点数表示。 浮点数是指小数点在数据中的位置可以左右移动的数据。 一个数N的浮点数形式可写成 N=M*REE阶码,用整数表示,指出小数点的位置,决定了浮点数范围R-基数,不需要表示出来,R2
2、,4,8, M-尾数,小数表示,决定了浮点数的精度。 在计算机中,浮点数格式:MEM01位k位n位 选择k和n的值既要保证有足够大的数值范围,又保证有所要求的数值精度。IEEE754 浮点数表示的标准 该标准规定R=2,阶码E用移码表示,尾数M用原码表示。 根据二进制的规格化方法,最高数字位总是1,该该标准将这个标准将这个1 1缺省存储缺省存储( (隐藏隐藏) ),使得尾数表示范围,使得尾数表示范围比实际存储的多一位比实际存储的多一位。 IEEE754标准的浮点数格式为:类型存储位数阶码偏移值数符(s) 阶码(E) 尾数(M) 总位数十六进制十进制短实数(Single Float)1位8位23
3、位32位0 x7FH127长实数(Double)1位11 位52位64位0 x3FFH1023临时实数(延伸双精确度,不常用)1位15位64位80位0 x3FFFH16383 一个浮点数的表示形式不是唯一的。 例如: 电子质量=0.9*10-27=0.09*10-26 =. 为了使浮点数有一个统一的标准形式,规定浮点数必须采用规格化形式。浮点数规格化对尾数M提出了限制要求: 1/R|M|1(具体到等号有所不同) 对于R=2,表示形式M正数负数原码0.1XXXX1.1XXXX补码0.1XXXX1.0XXXX? -1m0.001XXXX1.001XXXX补码 0.001XXXX1.000XXXX?
4、 -1m-1/8浮点数规格化 若运算结果尾数的有效数字超过最高有效位(“溢出”),为使其规格化,需要进行右规,右规时尾数向右移一位(小数点左移),阶码加1。 若运算结果的尾数有效数字不在最高有效位,为使其规格化需要进行左规,左规时尾数向左移一位(小数点右移) ,阶码减1。 例如(R=2):尾数运算结果为00.01001,数左移一位(左规)后尾数变为00.1001,阶码减1。 例如:尾数运算结果为01.10010,数右移一位(右规)后尾数变为00.11001,阶码加1。 浮点数的阶码可采用移码和补码表示。 下面分析一下移码的性质及其优点。 如果阶码有n+1位(包括符号位),其阶码X的移码定义为:
5、 X移=2n+X -2nX2n-1 设n=7,则 X移=128+X -128X127(mod 2n+1) X移实质上是X的余128码。7位二进制数的真值、原码、补码、移码对应表真值原码补码移码+1111111011111110111111111111111+1111110011111100111111011111110 +0000000000000000000000010000000-0000000100000000000000010000000-0000001100000011111111101111111 -1111111111111111000000100000001-10000000
6、不能表示1000000000000000 优点:比较大小移码非常方便。 移码表示法性质:l移码符号与原码、补码符号相反l移码与补码的关系 一个数的移码等于该数补码反符号。 即 X移=Xn.Xn-1Xn-2X0 则 X补=Xn.Xn-1Xn-2X0 3、移码加减法运算需要修正(用于浮点乘除法) 设两个n+1位移码(包括符号位)为: X移=2n+X Y移=2n+Y 则 X移+Y移=2n+X+2n+Y =X+Y (mod 2n+1) 若使两个移码之和为移码,需要加上修正量2n,即 X+Y移=2n+X+Y=X移+Y移+2n 同理:X-Y移=2n+X-Y=X移-Y移+2n 例1:X=+1011,Y=-1
7、001,求X+Y移。 解:X移=1.1011,Y移=0.0111 X移+Y移=1.1011+0.0111 =0.0010 X+Y移=1.0010 4、X=0的移码与X移=0 根据移码的定义,有 +0移=2n+0000.0=10000 -0移=2n+0000.0=10000 在移码表示中,“0”的表示形式是唯一的。 X移=0时,则 2n+X=0,X=-2n即X移为0时,表示了X的最小真值。正数 负数非规格化数原码max0 01111111 1111 11111111 0001min0 11111111 00011 01111111 111非规格化数补码max0 01111111 1111 100
8、00000 1111min0 10000000 00011 01111111 000规格化数原码max0 01111111 1111 11111111 1000min0 11111111 10001 01111111 111规格化数补码max0 01111111 1111 10000000 0111min0 10000000 10001 01111111 000注: 111或000共有23个1或0。 0001 或 1000 或 0111共有22个0或1。 浮点数的范围-以短浮点数为例(R=2) 1、二进制数范围包括0正数 负数非规格化数原码max(1-2-23)*2127-2-23*2-127
9、min2-23*2-127-(1-2-23)*2127非规格化数补码max(1-2-23)*2127-2-23*2-128min2-23*2-128-1*2127规格化数原码max(1-2-23)*2127-1/2*2-127min1/2*2-127-(1-2-23)*2127规格化数补码max(1-2-23)*2127-(2-1-2-23)*2-128min2-1*2-128-1*2127 2、十进制数形式 机器零、上溢、下溢概念。0-max-minminmax下溢机器0上溢出错上溢出错9.2 单精度浮点数与整数之间的转换 浮点数与整数之间的转换是在编程序时经常用到的操作。 在此讨论单精度浮
10、点数与用32位补码表示的整数之间的转换算法并给出Verilog HDL源代码。 这里浮点数采用IEEE 754标准。9.2.1 浮点数转换成整数 由于浮点数所有表示的数的范围比32位整数大得多,所以许多浮点数不能被转换成整数。 例如(R=2): 浮点数a=4effffffH=0_100 1110 1_111 1111 1111 1111 1111 1111b,则 M0=0 Ea=10011101b=127+30,由于要变成整数,所以Ea=0。即Ea每一次-1,尾数要左移1位,共移30位。 1.Ma=1. 111 1111 1111 1111 1111 1111,左移30位后得: d= 0111
11、 1111 1111 1111 1111 1111 1000 0000(?) 单精度浮点数转换成32位整数的方法 在24位的1.Ma的右边补8个0,使它变成32位整数。 如果Ea100,则在23位加1;如果GRS100,舍去。如果GRS=000,且第23位=1,则加1;否则舍去。 向下舍入。如果结果为负且GRS!=0,尾数加1。 向上舍入。如果结果为正且GRS!=0,尾数加1。 向0舍入。扔掉GRS。9.3.2 浮点加法器Verilog HDL代码 浮点加法器由阶码对齐,计算和规格化(含规格化、舍入、溢出判断)组成。 总体结构如下图所示。移位交换移位舍入阶码调整加 1全 1控制逻辑ssigni
12、s_inf_nantemp_expop_subshift_amountexchangermbfesfesasubinf_nan_fracfeab对阶计算规格化浮点加法器电路的总体模块图 整个模块名为fadder。 输入信号 a,b-单精度浮点数。 sub=1,减法操作;sub=0,加法操作。 rm为舍入控制码。 输出信号 s=ab是单精度浮点数。 代码见fadder.v3.6.2 浮点数的乘除运算 两个浮点数相乘,其乘积的阶码应为相乘两个数的阶码之和,其尾数为相乘二数的尾数之积。 两个浮点数相除,商的阶码应为被除数的阶码减去除数的阶码得到的差,尾数应为被除数的尾数除以除数的尾数所得的商。 乘除
13、法运算都可能出现结果溢出(如何判断和处理?),或结果不满足规格化要求的问题,因此也必须进行这些检查和处理。 乘除法的浮点数运算也有精度要求,舍入矛盾似乎更突出一点。 下面就阶码运算和尾数舍入问题进行讨论。 (1)浮点数的阶码运算 对阶码的运算有+1,-1,两阶码求和,两阶码求差四种,运算时还必须检查结果是否溢出。 在计算机中,阶码通常用补码或移码形式表示。补码和移码的运算规则、判定溢出的方案见第2章。 (2)浮点数的尾数处理 在计算机中,当浮点数的运算结果超过给定的位数,怎样处理多出来的这些位?无条件地丢失正常尾数最低位之后的全部数值截断处理。其好处是处理简单,问题是影响结果的精度。运算过程中保留右移中移出的若干高位的值,最后再按某种规则用这些位上的值修正尾数舍入处理。如“恒置1”法和“0舍1入”法。 假设阶码为4位的移码,尾数(含符号位)为5位的补码形式的浮点数。阶码的R=2。 例设 Y=2-5*(0.1101)2,X=23*(-0.1011)2,求Y*X。 解:Y浮=00110.1101 X浮=10111.0101 -Y浮=00111.0011 则乘积的阶码 23+0011+1011=0110 尾数用补码一位Booth乘法,即 部分积乘数 00.00001.01010 11.0011 11.0011 11.1001110101 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拓扑材料缺陷调控与性能-洞察分析
- 原油储运安全探讨-洞察分析
- 新型地震监测技术-洞察分析
- 信立泰材料在电化学储能领域的研究进展-洞察分析
- 水产养殖循环经济研究-洞察分析
- 脱硫脱硝一体化技术-洞察分析
- 污染物输运模拟-洞察分析
- 油气资源绿色开发-洞察分析
- 勤俭节约活动感悟总结范文(10篇)
- 数字银行理财策略-洞察分析
- GB/T 45089-20240~3岁婴幼儿居家照护服务规范
- 政府还款协议书(2篇)
- 院内获得性肺炎护理
- 领导干部个人违纪检讨书范文
- web课程设计考勤系统源代码
- 《企业文化与变革》课件
- 肺部感染性疾病支气管肺泡灌洗病原体检测中国专家共识(2017年)
- 小学劳动教育实施情况调查问卷(含教师卷和学生卷)及调查结论
- 【部编】人教版六年级上册道德与法治全册知识点总结梳理
- MOOC 研究生学术规范与学术诚信-南京大学 中国大学慕课答案
- 24春国家开放大学《离散数学》大作业参考答案
评论
0/150
提交评论