基于FPGA的整数开方运算
2012-07-25严淑芹郑先成
严淑芹,郑先成
(西北工业大学自动化学院,西安710129)
1 需求分析
使用QuartusII这个开发工具进行FPGA设计时,若要在FPGA上实现某个数的开方运算,QuartusII提供了开方模块altfp_sqrt,但是这个模块有严格的使用要求,要求用户输入的被开方数是IEEE754标准浮点数,altfp_sqrt模块的输出结果也是IEEE754标准浮点数。
例如对整数9进行开方运算,用户必须先将整数9转化为IEEE754标准浮点数(41100000)H,将该十六进制数41100000作为模块altfp_sqrt的输入数据,得到模块altfp_sqrt的输出数据(40400000)H,用户必须自己将此IEEE754标准浮点数(40400000)H转化为3,才能最终得知对9进行开方的结果是3。这对于用户来说就有诸多不便。
本文就是在解决用户不便的目标指引下,用VHDL语言将被开方数转化成IEEE754标准浮点数,作为模块altfp_sqrt的输入,再将altfp_sqrt模块的输出IEEE754标准浮点数转化成整数[2]。
对于用户来说,新的开方模块能进行整数的开方运算,如给新的开方模块输入数据9,直接就能得出所需要的结果数据3。这大大方便了用户。
2 IEEE754浮点数标准
浮点数的表示遵循IEEE754标准[1],它由3部分组成:符号位、尾数以及指数。IEEE754标准规定了单/双精度、扩展单/双精度4种浮点数格式。本设计支持单精度格式。
IEEE754单精度浮点数格式占用32位,包含3个部分:1位符号位、8位带偏移量的指数和23位尾数,如图1所示。

图1 单精度浮点数的表示
其中偏移值(bias)为127,尾数有1位隐藏位。即IEEE754标准定义的单精度浮点数A=(-1)s×1.f×2e-127,s表示有效数的符号,f表示有效数的小数部分,e是加偏移值的指数,1是一个隐藏位。
3 各模块设计
3.1 运算前标准化模块
整数转换为IEEE754标准浮点数的直接方法包括以下步骤:……p>
