采用Karatsuba 算法在FPGA 上实现双精度浮点乘法
2014-04-01徐英卓
西安石油大学学报(自然科学版) 2014年1期
关键词:符号
康 磊,徐英卓
(西安石油大学计算机学院,陕西西安710065)
浮点运算广泛应用于诸多领域,特别是在科学计算、数值分析和信号处理等方面,如数字滤波器、FFT、图像处理等。在所有的浮点算术运算中,乘法是其核心算法之一,如何构建高效的浮点乘法器一直是人们关注的焦点。随着FPGA技术的发展,由于FPGA器件本身的优势——速度、逻辑资源、丰富的IP核等,使得采用FAPG实现通用高性能的运算器成为可能。按照IEEE754中定义的双精度浮点数的尾数有53 bit,采用FGAP实现53 bit×53 bit的硬件乘法器需要占用大量的硬件资源[1-2]。本文详细说明了采用Karatsuba算法在FPGA上实现了双精度浮点乘法器的过程。
1 双精度浮点数格式
IEEE754是使用最广泛的浮点数运算标准,常用的浮点数有单精确度(32 bit)和双精确度(64 bit)2 种[3]。
单精度浮点数的格式:

双精度浮点数的格式:

浮点运算器的运算包含加、减、乘、除、平方和开方等。通常情况下,在运算之前需要将浮点数分解为符号位、阶码和尾数,然后进行运算,各部分运算结束后,还要经过舍入和规格化,最后再将符号、阶码和指数重构得到结果。本文只讨论双精度浮点数的乘法运算。浮点乘法器虽然是一个简单的算术单元,但由于它需要一个53 bit位的乘法器,因此在使用FPGA实现时需要考虑硬件资源的消耗和时间。
2 浮点乘法运算过程
浮点乘法运算规则的通式为:X×Y=(-1)SX+SY×(MX×MY)×2EX+EY。式中X和Y为2个输入的浮点数,其中SX和SY是符号位,MX和MY是尾数,EX和EY是阶码。双精度浮点乘法运算流程如图1所示,其操作步骤如下:
(1)输入……
登录APP查看全文