首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于FPGA的高速流水线浮点乘法器设计与实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于FPGA的高速流水线浮点乘法器设计与实现
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-4-26 23:25
|
只看该作者
基于FPGA的高速流水线浮点乘法器设计与实现
微处理器
,
流水线
,
动态
,
技术
,
开发
在数字化飞速发展的今天,人们对微处理器的性能要求也越来越高。作为衡量微处理器性能的主要标准,主频和乘法器运行一次乘法的周期息息相关。因此,为了进一步提高微处理器性能,开发高速高精度的乘法器势在必行。同时由于基于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所示。
[img][/img]
由于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门延时。
4、32位浮点乘法器的实现与仿真
图4显示了本设计的FPGA时序仿真结果,时序仿真环境为QuartusII7.0,目标芯片为Cyclone系列的EP1C6Q240C8,功能仿真环境为Modelsim6.0b。整个设计采用VHDL语言进行结构描述,综合策略为面积优先。由仿真视图可看出,该浮点乘法器可稳定运行在80M及以下频率,在延时5个周期后,以后每一个周期可稳定输出一级乘法运算结果,实现了高吞吐量。如果采用全定制进行后端版图布局布线,乘法器的性能将更加优越。
5、结语
本文作者创新点:针对FPGA器件内部资源特性,独创地提出了一种适合FPGA实现的5级流水高速浮点乘法器。该乘法器支持IEEE754标准32位单精度浮点数,采用了基4布思算法、改进的布思编码器、部份积压缩结构等组件,从而在保证高速的前提下,缩小了硬件规模,使得该乘法器的设计适合工程应用及科学计算,并易于ASIC的后端版图实现。该设计已使用在笔者设计的浮点FFT处理器中,取得了良好效果。
来源:21ic
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议