找回密码
 注册
关于网站域名变更的通知
查看: 310|回复: 2
打印 上一主题 下一主题

32位单精度浮点乘法器的FPGA实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-6 18:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
摘 要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码,和Wallace 树结构, 提高了乘法器的速度。本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺进行逻辑综合。
0 x& q* j; @/ F! A" M; W/ G关键词: 浮点乘法器; Boo th 算法; W allace 树; 波形仿真) q3 i) }& e) Z( {: }
, g0 b' H7 Q/ `. E* H
  随着计算机和信息技术的快速发展, 人们对微处理器的性能要求越来越高。乘法器完成一次乘法操作的周期基本上决定了微处理器的主频, 因此高性能的乘法器是现代微处理器中的重要部件。本文介绍了32 位浮点阵列乘法器的设计, 采用了改进的Booth 编码, 和Wallace树结构, 在减少部分积的同时, 使系统具有高速度, 低功耗的特点, 并且结构规则, 易于VLSI的实现。( w0 @. m& W8 M2 }3 G  Z$ Z
! h3 \( r8 A0 V* I; k* W
1 乘法计算公式. k. E4 @+ D: i# {( ^

4 r) o, o8 X9 c7 m/ D  32 位乘法器的逻辑设计可分为: Booth编码与部分积的产生, 保留进位加法器的逻辑, 乘法阵列的结构。, n1 `3 B# I+ `
! n; e, ^- s6 V/ i3 B8 Q" e
1.1 Booth编码与部分积的逻辑设计

+ N1 p; G! \: w. \" u! i& ~$ a  尾数的乘法部分,本文采用的是基4 Booth编码方式, 如表1。首先规定Am和Bm表示数据A和B的实际尾数,P 表示尾数的乘积, PPn表示尾数的部分积。浮点32 位数, 尾数是带隐含位1 的规格化数, 即: Am =1×a22a21….a0和Bm = 1 ×b22b21.…b0, 由于尾数全由原码表示,相当于无符号数相乘, 24 × 24 位尾数乘积P 的公式为:9 D4 ]4 `" M$ \
8 v" ~) ], x# G. d( V
2 P2 ^4 E8 E. S4 X8 i$ `5 Z

, _2 g- z1 g  y: p1 I/ U
. |( y  I( x( x- b4 K- e

9 b/ V  \  [# R/ Q) ]6 c/ i1.2 乘法器的阵列结构1 c& T0 Z' ^1 O+ H( C" I( Z
  本文采用的是3 -2 加法器, 输入3 个1 位数据: a, b,ci; 输出2 个1 位数据: s, Co。运算式如下:* `/ p5 i8 h. o
9 W- v" W! U5 D5 k! A2 j
  其逻辑表达式如下:, {! F  |* `3 m0 m4 b6 W4 D

6 q& L$ A5 V) n. l6 a1 b, L
* }% X0 a, v/ f7 d  c4 N5 C  当每个部分积PPn 产生之后, 将他们相加便得到每个乘法操作的结果。相加的步骤有很多, 可采用的结构和加法器的种类也很多。比如串行累加:
2 ]: z7 k' x1 m; u

$ f  O% x( @' h+ m# e7 E4 W* P
( Z9 ^1 S8 n$ X7 y$ }: j. g1 \  而Wallace 树的乘法阵列如下:$ c* Y# \# H& ]6 n* @' ]- N* a3 N2 |

" l6 j3 u6 D* z6 q6 H9 r* `; Q" F, Y. U) X
  加法器之间的连接关系如图1, 图2 所示, 或者从公式(7) 与(8) 中可以看出, 图1中串行累加的方法延迟为11个3-2 加法器的延迟, 而图2中, Wallace树延迟为5个3 -2加法器的延迟。图1的延迟比图2的延迟大。
$ U* Z; I* b; V
         
' u3 _. s9 e/ ]( b- J8 ]
图1 串行累加                                                           图2 Wallace 树9 G+ Q7 L" x$ [4 [

. t4 @/ a: F# \8 P: M2 32 位浮点乘法器的设计' j2 z% y; {2 z% E
- [- T/ _: _( u5 q. R
  本文是针对IEEE754 单精度浮点数据格式进行的浮点乘法器设计。IEEE754 单精度浮点格为32位, 如图3 所示。设A ,B均为单精度IEEE754格式, 他们的符号位, 有效数的偏移码和尾数部分分别用S , E 和M来表示。双精度和单精度采用的运算规则是一致的, 只是双精度的位长增加了一倍, 双精度是64位, 其中尾数52位, 指数11位, 1位符号位。所以提高了精度范围。
4 X$ h7 P7 o2 G2 D3 t
$ l+ I* v* L$ ~/ p! u
图3 32 位浮点数据格式1 d$ s* z- v) z! M" j6 [
& D' K% F+ g5 f; j' Y( q
32 位浮点数据格式: A = (- 1) S ×M ×2E-127。其中乘法器运算操作分4步进行。
' v( E$ ^( g- k9 W" r3 K(1) 确定结果的符号, 对A 和B 的符号位做异或操作。
/ r8 n2 V% q. |& c(2) 计算阶码, 两数相乘, 结果的阶码是两数的阶码相加, 由于A 和B 都是偏移码, 因此需要从中减去偏移码值127,得到A 和B 的实际阶码, 然后相加, 得到的是结果的阶码, 再把他加上127, 变成偏移码。, [/ l8 ?8 s8 _, c( X8 e1 o6 r% W4 W. z
(3) 尾数相乘,A 和B 的实际尾数分别为24位数, 即1×Ma 和1×Mb, 最高位1是隐藏位, 浮点数据格式只显示后23位, 所以尾数相乘结果应为一个48位的数据。
; H/ V8 u1 b( \" M- o(4) 尾数规格化, 需要把尾数相乘的48位结果数据变成24 位的数据, 分3步进行:
9 N& Z6 D5 s# j  t- O/ d% v6 q1 s6 v, z) [7 Z. `. N
① 如果乘积的整数位为01, 则尾数已经是规格化了;如果乘积的整数位为10, 11, 则需要把尾数右移1位, 同时把结果阶码加1。
) }& ?+ ?7 U  ~# Q7 ^② 对尾数进行舍入操作, 使尾数为24位, 包括整数的隐藏位。
! A) t. F! Z  `) x③ 把结果数据处理为32位符合IEEE浮点数标准的结果。包括1位符号位, 8位结果阶码位, 结果23尾数位。6 E" K5 m, J' D& d) S- x
  S. i3 F. g& s6 F! ?3 y
3 32 位浮点乘法器的实现与仿真# Z8 b; Y% ]  S( O$ H# g- r

' k9 N. J4 c7 G% H2 B" B$ C  图4 列出本设计的FPGA 仿真结果。图中data1是被乘数, data2是乘数, reset是清零信号, 高有效。start 是开始信号, 也是高有效。dataout10是两个浮点32 位数相乘, 进行规格化以后的结果, 是一个32 位数。Product 是24位尾数相乘的结果, 是一个48位数。
0 ?1 J$ ]9 I! B. F4 G% J( p: T
' S) g8 X+ ~  E5 m
图4 32 位浮点乘法器的仿真结果
4 \/ m3 P/ B5 y! _& l  整个设计采用了VHDL和Verilog HDL语言进行结构描述, 如果采用的是上华0.5 的标准单元库, 并用Synopsys DC 进行逻辑综合, 其结果是完成一次32位浮点乘法的时间为30ns, 如果采用全定制进行后端版图布局布线, 乘法器性能将更加优越。
. n8 ?$ s, K' k( a9 ~. ~8 x2 g" K; d1 A1 p5 ?( I
4 结 语
( a& x0 u7 P) @6 y
/ U) P5 g; H( ]  k- `( l5 w
  本文给出了32 位浮点乘法器的设计, 浮点算法具有高精度性以及较宽的运算范围, 使得乘法的设计更能够满足工程和科学计算的要求, 电路的设计、模拟和实现均采用Altera Quartus II 4.1开发工具。采用的器件EPF10K100EQ 240-1, 逻辑单元是1914个, PIN的数量是147,本设计采用了一系列的算法和结构, 如采用Booth编码的方法和Wallace树的结构, 使得系统具有高速度特点, 并且易于ASIC的后端版图实现。
( U4 E' X5 Q3 T* U

该用户从未签到

2#
发表于 2020-7-6 19:03 | 只看该作者
乘法器完成一次乘法操作的周期基本上决定了微处理器的主频, 因此高性能的乘法器是现代微处理器中的重要部件。

该用户从未签到

3#
发表于 2020-7-7 16:13 | 只看该作者
谢谢分享,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-21 18:46 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表