基于FPGA的高速流水线浮点乘法器设计与实现
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所示。
相关文章
- 2023-03-09铜氨液流量测量的改进
- 2023-12-14浅谈减压阀的结构设计
- 2023-07-20光栅投影轮廓测量的系统标定技术
- 2023-11-19轴类零件的高精度形状误差检测方法研究
- 2023-12-10吸收式制冷循环系统的热力学分析
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。