An Efficient Implementation of Oating Point Multiplier: Conference Paper
An Efficient Implementation of Oating Point Multiplier: Conference Paper
net/publication/224242069
CITATIONS READS
33 817
3 authors, including:
Ashraf M Salem
Ain Shams University
90 PUBLICATIONS 434 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Ashraf M Salem on 03 April 2015.
Abstract—In this paper we describe an efficient implementation Multiplying two numbers in floating point format is done
of an IEEE 754 single precision floating point multiplier targeted by 1- adding the exponent of the two numbers then subtracting
for Xilinx Virtex-5 FPGA. VHDL is used to implement a the bias from their result, 2- multiplying the significand of the
technology-independent pipelined design. The multiplier two numbers, and 3- calculating the sign by XORing the sign
implementation handles the overflow and underflow cases. of the two numbers. In order to represent the multiplication
Rounding is not implemented to give more precision when using result as a normalized number there should be 1 in the MSB of
the multiplier in a Multiply and Accumulate (MAC) unit. With the result (leading one).
latency of three clock cycles the design achieves 301 MFLOPs. Floating-point implementation on FPGAs has been the
The multiplier was verified against Xilinx floating point
interest of many researchers. In [2], an IEEE 754 single
multiplier core.
precision pipelined floating point multiplier was implemented
Keywords-floating point; multiplication; FPGA; CAD design on multiple FPGAs (4 Actel A1280). In [3], a custom 16/18 bit
flow three stage pipelined floating point multiplier that doesn‟t
support rounding modes was implemented. In [4], a single
I. INTRODUCTION precision floating point multiplier that doesn‟t support
Floating point numbers are one possible way of rounding modes was implemented using a digit-serial
representing real numbers in binary format; the IEEE 754 [1] multiplier: using the Altera FLEX 8000 it achieved 2.3
standard presents two different floating point formats, Binary MFlops. In [5], a parameterizable floating point multiplier was
interchange format and Decimal interchange format. implemented using the software-like language Handel-C, using
Multiplying floating point numbers is a critical requirement for the Xilinx XCV1000 FPGA; a five stages pipelined multiplier
DSP applications involving large dynamic range. This paper achieved 28MFlops. In [6], a latency optimized floating point
focuses only on single precision normalized binary interchange unit using the primitives of Xilinx Virtex II FPGA was
format. Fig. 1 shows the IEEE 754 single precision binary implemented with a latency of 4 clock cycles. The multiplier
format representation; it consists of a one bit sign (S), an eight reached a maximum clock frequency of 100 MHz.
bit exponent (E), and a twenty three bit fraction (M or II. FLOATING POINT MULTIPLICATION ALGORITHM
Mantissa). An extra bit is added to the fraction to form what is
called the significand1. If the exponent is greater than 0 and As stated in the introduction, normalized floating point
smaller than 255, and there is 1 in the MSB of the significand numbers have the form of Z= (-1S) * 2 (E - Bias) * (1.M). To
then the number is said to be a normalized number; in this case multiply two floating point numbers the following is done:
the real number is represented by (1) 1. Multiplying the significand; i.e. (1.M1*1.M2)
2. Placing the decimal point in the result