You are on page 1of 48

An IEEE 754­2008 Decimal Parallel and 

Pipelined FPGA Floating­Point Multiplier

Malte Baesler, Sven­Ole Voigt, Thomas Teufel

Institute for Reliable Computing
Hamburg University of Technology

September 1st, 2010
Agenda
1. Introduction
a)Why Decimal Floating­Point Arithmetic?
b)What are the Requirements on the Decimal Multiplier?
2. Decimal Fixed­Point Multiplier
3. Decimal Floating­Point Multiplier
4. Post Place & Route Results
a)Fixed­Point Multiplier
b)Floating­Point Multiplier

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


1/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Introduction

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


2/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Why decimal floating­point arithmetic?
● avoid conversion errors
● human centric applications
● required for commercial applications, e.g. interest 
calculation

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


2/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Why decimal floating­point arithmetic?
● avoid conversion errors
● human centric applications
● required for commercial applications, e.g. interest 
calculation

IEEE Standard 754­2008 for Floating­Point Arithmetic
● published in August 2008
● replaces IEEE 754­1985 and IEEE 854­1987
● binary and decimal floating­point arithmetic

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


2/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Floating­Point Arithmetic

IEEE 754­2008 Floating­Point Arithmetic

decimal64 data format
● radix b=10

● significand precision p=16

● exponent range q =­398, qmax=369
min

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


3/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Requirements on the multiplier

● fast
● low resource usage
● IEEE 754­2008 compliant
● pipelined due to re­use in accurate scalar product    
→ fully combinational
● optimized for FPGA architecture (Virtex5)
– internal fast carry chain

– DSP48E slices

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


4/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Requirements on the multiplier

● fast
● low resource usage
● IEEE 754­2008 compliant
● pipelined due to re­use in accurate scalar product    
→ fully combinational
● optimized for FPGA architecture (Virtex5)
– internal fast carry chain

– DSP48E slices

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


4/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Fixed­Point Multiplier

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


5/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Fixed­Point Multiplier

How does multiplication work?
school method:
● partial product generation
● accumulation of partial products

1234⋅5678 = 5000⋅1234
   600⋅1234
   70⋅1234
   8⋅1234

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


5/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Fixed­Point Multiplier

● based on concepts of A. Vazquez, E. Antelo, P.Montuschi 1
● fully combinational
● BCD recoding schemes
● fast partial product generation
● fast BCD­4221 carry save adder reduction tree

1
“A new family of high­performance parallel decimal multipliers“, 
18th IEEE Symposium on Computer Arithmetic, June 2007
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
6/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Fixed­Point Multiplier

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


7/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Recoding

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


8/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Recoding

● transforms the multiplier's digit set              into 
{0, 9 } {−5,5 }
● reduces number of multiplicand multiples
 A×1, A×2, A×3, A×4, A×5
● very fast operation, no ripple carry

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


8/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Partial Product Generator

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


9/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Partial Product Generator

● calculates multiples  A×1, A×2, A×3, A×4, A×5


– exploits correlation between shift operation and constant 
value multiplication
●  X 5421 ≪1= X⋅28421

 X 8421 ≪3= X⋅55421
– BCD Recoding is fast
– fixed­value shift operation is for free
– only         requires one carry propagate adder
A×3
0 p1
● generates partial products                by selection of
P P
A×1− A×5
● 10's complement for B k 0 :− X n  X 0 = Xn  X0 1

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


9/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

BCD­4221 Carry Save Adder Tree

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


10/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Carry Save Adder Tree
carry save adder tree sums up p+1 partial products

P1
P2
P3

...
Pp+1

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


10/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Carry Save Adder Tree
CSA tree with respect to decimal recoding

sign extension P1
sign extension P2 C1
sign extension P3 C2

...
Pp+1 Cp

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


10/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Carry Save Adder Tree
improved CSA tree with respect to decimal recoding

P1
P2 C1
P3 C2

...
Pp+1 Cp
improved sign extension

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


10/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Improved Sign Extension
● adding several words composed of leading nines and 
following zeros always yields to a word composed of 0, 8, 
and 9. For example 999999990000
 999900000000
 990000000000
= x989899990000
● position of 0, 8, and 9 can be calculated very fast by 
means of FPGA's fast carry chain

{
9 for  c ink =0∧sign k =1
X
NegDC
k

0 else 
in
= 8 for  c =1∧sign k =1
k
out
c =c
k
in
k1 =
{ 1 for  sign k =1
c ink else 

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


11/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Fixed­Point Multiplier

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


12/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Fixed­Point Multiplier

P0 BCD­4221
SBCD­8421

CPA
ABCD­8421 P1 BCD­4221

PPGen

CSAT
p digits 2p digits

...
DRec

BBCD­8421 Pp+1 BCD­4221
p digits 2p S_sBCD­4221
2p S_wBCD­4221
PPGen Partial Product Generator CSAT Carry Save Adder Tree
DRec Decimal Recoding Unit CPA Carry Propagation Adder

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


12/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Floating­Point Multiplier

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


13/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Floating­Point Multiplier

● additional units for rounding, exponent computation and 
data format encoding/decoding
● based on M. Erle, B. Hickmann, M.Schulte 2
● early estimation of shift left amount
● fully IEEE 754­2008 compliant
● support for gradual underflow and all rounding modes
● adapted to FPGA technology

2
“Decimal Floating­Point Multiplication“, IEEE Transaction on 
Computers, VOL. 58, NO. 7, July 2009
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
13/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = 0x03C80000534B9C1E
Y = 0x0250000277CB0D10
Densily Packed Decimal (DPD) Decoder

Leading Zeros Count  / Decimal Fixed­Point
Shift Left Amount   Multipliplier
Computation 

Left Shift Register

Exponent  Carry Propagate 
Computation Adder

Round­Up Detection Overflow / Underflow Correction

Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


14/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = 0x03C80000534B9C1E
Y = 0x0250000277CB0D10
Densily Packed Decimal (DPD) Decoder
X = +0000001234567890 EXP­156
Leading Zeros Count  / Decimal Fixed­Point Y = +0000009876543210 EXP­250
Shift Left Amount   Multipliplier X•Y = +12193263111263526900 EXP­406
Computation 

Left Shift Register

Exponent  Carry Propagate 
Computation Adder

Round­Up Detection Overflow / Underflow Correction

Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


15/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register

Exponent  Carry Propagate 
Computation Adder

Round­Up Detection Overflow / Underflow Correction

Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


16/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction

Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


17/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction
Z' = 1219326311126352, G=6, R=9, sb='0'

Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


18/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction
Z' = 1219326311126352, G=6, R=9, sb='0'
exponent = ­406 + p – SLA = ­402
Rounding Unit

Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


19/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction
Z' = 1219326311126352, G=6, R=9, sb='0'
exponent = ­406 + p – SLA = ­402
Rounding Unit
Z'' = 0000121932631112, G=6, R=3, sb='1'
exponent = ­398
Exception Unit DPD Encoder

exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


20/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction
Z' = 1219326311126352, G=6, R=9, sb='0'
exponent = ­406 + p – SLA = ­402
Rounding Unit
Z'' = 0000121932631112, G=6, R=3, sb='1'
exponent = ­398
Exception Unit DPD Encoder
round up → Z''' = 0000121932631113 EXP­398
exception signals X•Y

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


21/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Y X
X = +0000001234567890 EXP­156
Y = +0000009876543210 EXP­250
Densily Packed Decimal (DPD) Decoder
X•Y = +12193263111263526900 EXP­406

Leading Zeros Count  / Decimal Fixed­Point Z = significand(X•Y)


Shift Left Amount   Multipliplier Z =   00000000000012193263111263526900
Computation  Zs = 66888846846688648888664609006600
Zc = 33111153153323544414446654520300
Left Shift Register
LZ(X)=6, LZ(Y)=6,   SLA=min(6+6, p)=12
Exponent  Carry Propagate 
Z =   1219326311126352.690000000000000
Computation Adder Zs = 8864888866460900.660000000000000
Zc = 2354441444665452.030000000000000
Round­Up Detection Overflow / Underflow Correction
Z' = 1219326311126352, G=6, R=9, sb='0'
exponent = ­406 + p – SLA = ­402
Rounding Unit
Z'' = 0000121932631112, G=6, R=3, sb='1'
exponent = ­398
Exception Unit DPD Encoder
round up → Z''' = 0000121932631113 EXP­398
Z = 0x000000285BCCC493
exception signals X•Y
invalid   inexact   overflow   underflow
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
22/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

type1 type2 type3


fixed­point redundant redundant
non­redundant
multiplier output (delayed CPA) (delayed CPA)
CPA length (digits) p+2 = 18 p+2 = 18 2·p = 32
shift register multiplier based multiplexer based multiplexer based

decimal fixed­point multiplier decimal fixed­point multiplier
Ps Pc Ps Pc
shift register shift register CPA (2·p)
Qsu Qsl Qcu Qcl

CPA (p+2) CPA (p­2) shift register


... ...
OR OR
product GR sticky bit product GR sticky bit
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
23/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

type1 type2 type3


fixed­point redundant redundant
non­redundant
multiplier output (delayed CPA) (delayed CPA)
CPA length (digits) p+2 = 18 p+2 = 18 2·p = 32
shift register multiplier based multiplexer based multiplexer based

decimal fixed­point multiplier decimal fixed­point multiplier
Ps Pc Ps Pc
shift register shift register CPA (2·p)
Qsu Qsl Qcu Qcl

CPA (p+2) CPA (p­2) shift register


... ...
OR OR
product GR sticky bit product GR sticky bit
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
23/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

type1 type2 type3


fixed­point redundant redundant
non­redundant
multiplier output (delayed CPA) (delayed CPA)
CPA length (digits) p+2 = 18 p+2 = 18 2·p = 32
shift register multiplier based multiplexer based multiplexer based

decimal fixed­point multiplier decimal fixed­point multiplier
Ps Pc Ps Pc
shift register shift register CPA (2·p)
Qsu Qsl Qcu Qcl

CPA (p+2) CPA (p­2) shift register


... ...
OR OR
product GR sticky bit product GR sticky bit
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
23/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

type1 type2 type3


fixed­point redundant redundant
non­redundant
multiplier output (delayed CPA) (delayed CPA)
CPA length (digits) p+2 = 18 p+2 = 18 2·p = 32
shift register multiplier based multiplexer based multiplexer based

shifting through multiplication: X(31:16) X(15:0)


shift 2k
n
● X ≪ n ≡ X⋅2
● requires two DSP48Es  MUL MUL
per 32bit shift

DSP48E
saves LUTs   DSP48E

ADD

Y(31:16) Y(15:0)

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


24/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Post Place & Route Results

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


25/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Fixed­Point Multiplier with CPA output
● Xilinx Virtex5, speed grade ­2
● up to 13 pipeline registers, configurable via VHDL generics

● 5350 – 6500 LUTs,  0 – 4900 FFs
● 5500 – 7600 combined LUTs and FFs
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
25/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Fixed­Point Multiplier with CPA output
● Xilinx Virtex5, speed grade ­2
● up to 13 pipeline registers, configurable via VHDL generics

● 5350 – 6500 LUTs,  0 – 4900 FFs
● 5350 – 7600 combined LUTs and FFs
M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            
25/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Floating­Point Multiplier

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


26/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Floating­Point Multiplier

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


27/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Decimal Floating­Point Multiplier
Type1 Type2 Type3
mul­based shifting, mux­based shifting, mux­based shifting,
delayed CPA delayed CPA no delayed CPA
#LUTs 6300 ­ 8400 7900 ­ 9400 7500 ­ 9400
#FFs 0 ­ 4100 0 ­ 4500 0 ­ 4400
#(LUT + FFs) 6500 ­ 8400 8300 ­ 9300 7600 ­ 9600
#DSP48E 17 0 0

● approx. 70% of the LUTs are used by the fixed­point 
multiplier (for Type2 and Type3)
● medium Virtex5 XC5VLX110T: 
8000­9000 LUTs ~ 11.5%­13%

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


28/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Comparison to binary floating­point multiplier
● 64 bit binary floating­point multiplier generated with CoreGen
● no DSP48E
● Type2 decimal vs. CoreGen binary multiplier
decimal binary decimal binary

max. frequency (MHz)
10000 400
number of LUTs

300
5000 200
100
0 0
0 3 6 9 0 3 6 9
number of pipeline registers number of pipeline registers

decimal mult. : 3.2 – 3.5 more LUTs binary mult. : 1.6 – 2.2 times faster

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


29/30
Introduction    Decimal Fixed­Point Multiplier    Decimal Floating­Point Multiplier    Post Place & Route Results

Comparison to binary floating­point multiplier
● 64 bit binary floating­point multiplier generated with CoreGen
● no DSP48E
● Type2 decimal vs. CoreGen binary multiplier
decimal binary decimal binary

max. frequency (MHz)
10000 400
number of LUTs

300
5000 200
100
0 0
0 3 6 9 0 3 6 9
number of pipeline registers number of pipeline registers

decimal mult. : 3.2 – 3.5 more LUTs binary mult. : 1.6 – 2.2 times faster

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


29/30
Summary

● decimal fixed­point multiplier
– parallel, fully combinational
– configurable number of pipeline stages
● decimal floating­point multiplier
– configurable number of pipeline stages
– three different implementations
– tradeoff: area vs. speed

● future work: fully IEEE 754­2008 compliant co­processor

M. Baesler, S. Voigt, T. Teufel Decimal Floating­Point Multiplier 09/01/2010                            


30/30
Thank you for your attention!!!

You might also like