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

技术分类: 可编程器件  | 2007-11-27
来源:现代电子技术

  随着计算机和信息技术的快速发展, 人们对微处理器的性能要求越来越高。乘法器完成一次乘法操作的周期基本上决定了微处理器的主频, 因此高性能的乘法器是现代微处理器中的重要部件。本文介绍了32 位浮点阵列乘法器的设计, 采用了改进的Booth 编码, 和Wallace树结构, 在减少部分积的同时, 使系统具有高速度, 低功耗的特点, 并且结构规则, 易于VLSI的实现。

  1 乘法计算公式

  32 位乘法器的逻辑设计可分为: Booth编码与部分积的产生, 保留进位加法器的逻辑, 乘法阵列的结构。

基4 Booth编码方式

  1.1 Booth编码与部分积的逻辑设计

  尾数的乘法部分,本文采用的是基4 Booth编码方式, 如表1。首先规定Am和Bm表示数据A和B的实际尾数,P 表示尾数的乘积, PPn表示尾数的部分积。浮点32 位数, 尾数是带隐含位1 的规格化数, 即: Am =1×a22a21….a0和Bm = 1 ×b22b21.…b0, 由于尾数全由原码表示,相当于无符号数相乘, 24 × 24 位尾数乘积P 的公式为:

公式

公式
公式

  1.2 乘法器的阵列结构

  本文采用的是3-2 加法器, 输入3 个1 位数据: a, b,ci; 输出2 个1 位数据: s, Co。运算式如下:

运算式

  其逻辑表达式如下:

逻辑表达式

逻辑表达式

  当每个部分积PPn 产生之后, 将他们相加便得到每个乘法操作的结果。相加的步骤有很多, 可采用的结构和加法器的种类也很多。比如串行累加:

串行累加

  而Wallace 树的乘法阵列如下:

Wallace 树的乘法阵列

 

  加法器之间的连接关系如图1, 图2 所示, 或者从公式(7) 与(8) 中可以看出, 图1中串行累加的方法延迟为11个3-2 加法器的延迟, 而图2中, Wallace树延迟为5个3 -2加法器的延迟。图1的延迟比图2的延迟大。 
         

串行累加

图1 串行累加                                                          

Wallace 树

图2 Wallace 树

  2 32 位浮点乘法器的设计

  本文是针对IEEE754 单精度浮点数据格式进行的浮点乘法器设计。IEEE754 单精度浮点格为32位, 如图3 所示。设A ,B均为单精度IEEE754格式, 他们的符号位, 有效数的偏移码和尾数部分分别用S , E 和M来表示。双精度和单精度采用的运算规则是一致的, 只是双精度的位长增加了一倍, 双精度是64位, 其中尾数52位, 指数11位, 1位符号位。所以提高了精度范围。

32 位浮点数据格式  

图3 32 位浮点数据格式

  32 位浮点数据格式: A = (- 1) S ×M ×2E-127。其中乘法器运算操作分4步进行。

  (1) 确定结果的符号, 对A 和B 的符号位做异或操作。

  (2) 计算阶码, 两数相乘, 结果的阶码是两数的阶码相加, 由于A 和B 都是偏移码, 因此需要从中减去偏移码值127,得到A 和B 的实际阶码, 然后相加, 得到的是结果的阶码, 再把他加上127, 变成偏移码。

  (3) 尾数相乘,A 和B 的实际尾数分别为24位数, 即1×Ma 和1×Mb, 最高位1是隐藏位, 浮点数据格式只显示后23位, 所以尾数相乘结果应为一个48位的数据。

  (4) 尾数规格化, 需要把尾数相乘的48位结果数据变成24 位的数据, 分3步进行:

  ① 如果乘积的整数位为01, 则尾数已经是规格化了;如果乘积的整数位为10, 11, 则需要把尾数右移1位, 同时把结果阶码加1。

  ② 对尾数进行舍入操作, 使尾数为24位, 包括整数的隐藏位。

  ③ 把结果数据处理为32位符合IEEE浮点数标准的结果。包括1位符号位, 8位结果阶码位, 结果23尾数位。

0
0
(请您对文章做出评价)
1】【2

推荐文章

加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

简化FPGA测试及调试

时间:2008-01-10 10:00:00-12:15:00
简介:随着FPGA的设计速度尺寸和复杂度明显增长,使得整个设计流程中的验证和调试部分成为当前FPGA系统的关键部分。获得FPGA内部信号…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会