基于FPGA的高速流水线浮点乘法器设计与实现

2011-12-27 13:01:36来源: 互联网

1引言

    在数字化飞速发展的今天,人们对微处理器的性能要求也越来越高。作为衡量微处理器性能的主要标准,主频和乘法器运行一次乘法的周期息息相关。因此,为了进一步提高微处理器性能,开发高速高精度的乘法器势在必行。同时由于基于IEEE754标准的浮点运算具有动态范围大,可实现高精度,运算规律较定点运算更为简捷等特点,浮点运算单元的设计研究已获得广泛的重视。本文介绍了32位浮点乘法器的设计,采用了基4布思算法,改进的4:2压缩器及布思编码算法,并结合FPGA自身特点,使用流水线设计技术,在实现高速浮点乘法的同时,也使是系统具有了高稳定性、规则的结构、易于FPGA实现及ASIC的HardCopy等特点。

2运算规则及系统结构

2.1浮点数的表示规则

本设计采用单精度IEEE754格式【2】。设参与运算的两个数A、B均为单精度浮点数,即:


2.2浮点乘法器的硬件系统结构

本设计用于专用浮点FFT处理器,因此对运算速度有较高要求。为了保证浮点乘法器可以稳定运行在80M以下,本设计采用了流水线技术。流水线技术可提高同步电路的运行速度,加大数据吞吐量。而FPGA的内部结构特点很适合在其中采用流水线设计,并且只需要极少或者根本不需要额外的成本。综上所述,根据系统分割,本设计将采用5级流水处理,图1为浮点乘法器的硬件结构图。


3主要模块设计与仿真

 

3.1指数处理模块(E_Adder)设计

32位浮点数格式如文献【2】中定义。由前述可知,浮点乘法的主要过程是两个尾数相乘,同时并行处理指数相加及溢出检测。对于32位的浮点乘法器而言,其指数为8位,因而本设计采用带进位输出的8位超前进位加法器完成指数相加、去偏移等操作,具体过程如下。

E_Adder模块负责完成浮点乘法器运算中指数域的求和运算,如下式所示:

其中,E[8]为MSB位产生的进位。Bias=127是IEEE754标准中定义的指数偏移值。Normalization完成规格化操作,因为指数求和结果与尾数相乘结果有关。在本次设计中,通过选择的方法,几乎可以在Normalization标志产生后立刻获得积的指数部分,使E_Adder不处于关键路径。

本设计收集三级进位信号,配合尾数相乘单元的Normalization信号,对计算结果进行规格化处理,并决定是否输出无穷大、无穷小或正常值。

根据E_Adder的时序仿真视图,可看出设计完全符合应用需求。

3.2改进的Booth编码器设计

由于整个乘法器的延迟主要决定于相加的部分积个数,因此必须减少部分积的数目才能进而缩短整个乘法器的运算延迟。本设计采用基4布思编码器,使得部分积减少到13个,并对传统的编码方案进行改进。编码算法如表1所示。

由于FPGA具有丰富的与、或门资源,使得该方法在保证速度和准确性的前提下,充分利用了FPGA内部资源,节省了面积,同时符合低功耗的要求。

3.3部分积产生与压缩结构设计

3.3.1部分积产生结构

根据布思编码器输出结果,部分积产生遵循以下公式【4】:

其中,PPi为部分积;Ai为被乘数。经过隐藏位和符号位的扩展后,26位的被乘数尾数将产生13个部分积。在浮点乘法器中,尾数运算采用的是二进制补码运算。因此,当NEG=1时要在部分积的最低位加1,因为PPi只完成了取反操作。而为了加强设计的并行性,部分积最低位加1操作在部分积压缩结构中实现。另外,为了完成有符号数相加,需对部分积的符号位进行扩展,其结果如图4所示。13个部分积中,除第一个部分积是29位以外,其余部分积扩展为32位。其中,第一个部分积包括3位符号扩展位“SSS”,第2至13个部分积的符号扩展位为“SS”,加一操作位为“NN”,遵循如下公式: 

其中,i为部分积的行数,sign(i)为第i行部分积的符号。

3.3.2部分积压缩结构

本设计混合使用4:2压缩器、3:2压缩器、全加器和半加器,实现了13个部分积的快速压缩,并保证了精度。本文部分积压缩结构的划分如图2所示。

图2中,虚线给出了传统部分积的压缩划分,而实线描述的是本文采用的部分积压缩结构划分,这样的划分有利于简化第二级的压缩结构,从而在保证速度的基础上,节省FPGA内部资源。从图2中可看出,有些位不必计算,因为这些位是由Booth编码时引入的乘数尾数的符号位产生的,48位足以表达运算结果。

3.3.3改进的4:2压缩器

本设计采用广泛使用的4:2压缩器,并针对FPGA内部资源特点,对其进行了改进。如图3所示。传统的4:2压缩器即两个全加器级联,共需要四个异或门和8个与非门。而改进的4:2压缩器需要四个异或门和两个选择器(MUX)。8个与非门需要36个晶体管,而两个MUX需要20个晶体管。同时,FPGA内部集成了大量的异或门和选择器资源,这种设计方法也是对FPGA的一个充分利用。

由于压缩部分积需要大量的4:2压缩器,所以改进的电路能在一定程度上减小版图的面积,也为该乘法器的ASIC后端设计带来了优势。另外,改进的压缩器的4个输入到输出S的延时相同,都是3级XOR门延时。

 

432位浮点乘法器的实现与仿真

 

图4显示了本设计的FPGA时序仿真结果,时序仿真环境为QuartusII7.0,目标芯片为Cyclone系列的EP1C6Q240C8,功能仿真环境为Modelsim6.0b。整个设计采用VHDL语言进行结构描述,综合策略为面积优先。由仿真视图可看出,该浮点乘法器可稳定运行在80M及以下频率,在延时5个周期后,以后每一个周期可稳定输出一级乘法运算结果,实现了高吞吐量。如果采用全定制进行后端版图布局布线,乘法器的性能将更加优越。


5结语

 

本文作者创新点:针对FPGA器件内部资源特性,独创地提出了一种适合FPGA实现的5级流水高速浮点乘法器。该乘法器支持IEEE754标准32位单精度浮点数,采用了基4布思算法、改进的布思编码器、部份积压缩结构等组件,从而在保证高速的前提下,缩小了硬件规模,使得该乘法器的设计适合工程应用及科学计算,并易于ASIC的后端版图实现。该设计已使用在笔者设计的浮点FFT处理器中,取得了良好效果。

关键字:FPGA

编辑:eeleader 引用地址:http://www.eeworld.com.cn/FPGA/2011/1227/article_2782.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved