快速浮点加法器的FPGA实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

—202

— 快速浮点加法器的FPGA 实现

郭天天,张志勇,卢焕章

(国防科技大学ATR 实验室,长沙 410073)

摘 要:讨论了3种常用的浮点加法算法,并在VirtexII 系列FPGA 上实现了LOP 算法。实验结果表明在FPGA 上可以实现快速浮点加法器,最高速度可达152MHz ,资源占用也在合理的范围内。 关键词:浮点加法器;移位器;前导1预测;FPGA

FPGA Implementation of Fast Floating-point Adder

GUO Tiantian, ZHANG Zhiyong, LU Huanzhang

(ATR Lab, NUDT, Changsha 410073)

【Abstract 】Three commonly used Floating-point addition algorithms are discussed, and the LOP algorithm is implemented on VirtexII series FPGA. The implementing results show that the fast floating-point adder can be implemented on FPGA, the highest running frequency is 152MHz and the area cost is rational compare to the entire resources.

【Key words 】Floating point adder ;Shifter ;Leading-one predicator ;FPGA

计 算 机 工 程Computer Engineering 第31卷 第16期

Vol.31 № 16 2005年8月

August 2005

·开发研究与设计技术·

文章编号:1000—3428(2005)16—0202—03

文献标识码:A

中图分类号:TP302

浮点加/减法是数字信号处理中的一个非常频繁并且非常重要的操作。在现代数字信号处理应用中,浮点加减运算几乎占到全部浮点操作的一半以上。浮点算法比定点算法更复杂,占用更多资源。目前在大多数数字信号处理系统中,一般都是由DSP 芯片来完成浮点运算。用DSP 芯片完成浮点运算的好处是容易实现,精度高,缺点是加重DSP 芯片的负担,系统速度可能会受到影响。在某些情况下需要使用专门的浮点处理部件才能满足系统要求。

FPGA 具有可编程、资源丰富、开发周期短、小批量成本低等优点,它已经成为数字电路研究开发的一种重要实现形式,并广泛应用于各种数字信号处理系统当中。原来在FPGA 中实现浮点处理部件是很困难的,主要是由于早期的FPGA 速度较慢,资源较少,浮点算法对它来说过于复杂。例如一个32位的浮点加法器就要占用Altera 8188 72%的资源,时钟频率最大只有10MHz [1],这样的效果当然不能令人满意。近年来随着集成电路工艺水平的不断提高,以及体系结构方面的发展,FPGA 的容量、速度、资源等方面都有了很大的提高。例如Xilinx 公司最新的FPGA 已经采用90nm 工艺,最高时钟频率达到420MHz ,容量达到1 000万逻辑门以上,内部还包括处理器、数字锁相环、块RAM 、大量的寄存器等多种资源,支持多种I/O 接口标准[6]。FPGA 的速度和容量已经不再是瓶颈了,所以研究浮点处理部件的FPGA 实现具有很强的实际意义。

本文将介绍在Xilinx 公司的VirtexII 系列FPGA 上快速浮点加法器的一种实现形式。

1 浮点格式

常用的浮点格式为IEEE 754标准,IEEE 754标准有单精度浮点数、双精度浮点数和扩展双精度浮点数3种,单精度为32位,双精度为64位,扩展双精度为80位以上,位数越多精度越高,表示范围也越大。在通常的数字信号处理应用中,单精度浮点数已经足够用了,本文将以它为例来设计快速浮点加法器。单精度浮点数如图1所示。

图1 IEEE 754单精度浮点数格式

其中s 为符号位,s 为1时表示负数,s 为0时表示正数;e

为指数,取值范围为[1,254],0和255表示特殊值;f 有22位,再加上小数点左边一位隐含的1总共23位构成尾数部分。由它表示的浮点数v 的值如下式所示。

(127)(1)2(1.)s e v f −=−•• 32位浮点数可以表示的范围为38

38

1.210 3.410−+±×−±×。在某些情况下可能不需要32位的精度,那么可以用24位或者16位来表示浮点数,如16位浮点数表示如图2所示。

图2 16位浮点数格式

16位浮点数v 的值如下式所示。 (31)(1)2(1.)s e v f −=−••

16位浮点数可以表示的范围为9

10

8.581510 6.98510−±×−±×。

2 浮点加法器算法

浮点加法一般包括求阶差、对阶、尾数求和、规格化和舍入等步骤,具体的算法在各种文献[1,2]上都有详细的叙述,这里就不再一一介绍了。目前比较常用的浮点加法有3种[3],如图3所示。图中用到的符号描述如下:

a E ,

b E :加数a 和加数b 的指数;

a

M

,b M :加数a 和加数b 的尾数;

diff :两个指数的绝对差,diff

=b a M M −;

作者简介:郭天天(1974—),男,博士生,主研方向为ASIC 与实时系统、DSP 与FPGA 应用等;张志勇,博士生;卢焕章,教授、博导 定稿日期:2004-07-08 E-mail :ttguo0452@

位数位数

相关文档
最新文档