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的时序仿真视图,可看出设计完全符合应用需求。 |