Digital Core Design

The Power of Intellectual Property

DFPMU-DP

Floating Point Coprocessor - Double Precision

    The DFPMU-DP is a Floating Point Coprocessor, designed to assist the CPU in performing floating point mathematic computations. Our solution replaces directly C software functions, by equivalent, very fast hardware operations, which significantly accelerate the system performance. It does not require any programming, so it also does not require any modifications to be made in the main software. Everything is executed automatically during the software compilation, by the DFPMU-DP C driver.
    Our Coprocessor was designed to operate with DCD's DP8051/DP80390 microcontrollers but it can also easily operate with any other 8-, 16- and 32-bit processor. Moreover, to give you coherent solution within a package, we deliver drivers for all popular 8051 C compilers together with the DFPMU-DP. It supports also a popular 32 Bit procesors: NIOS II and MicroBlaze. For those processors the C drivers are also delivered without any additional charge.
    The DFPMU-DP uses specialized CORDIC and standard algorithms to compute math functions. It supports addition, subtraction, multiplication, division, square root, comparison and trigonometric functions: sine, cosine, tangent and arctangent. It has built-in conversion instructions from integer type to floating point type and vice versa. The input numbers' format has been developed according to the IEEE-754 standard. Our Floating Point Coprocessor supports double and single precision real numbers: 8-bit, 16-bit and 32-bit integers. This proprietary solution is ready to be used with 8-, 16- and 32-bit processors.
    The DFPMU-DP is a technology independent design which can be implemented in various process technologies.


    Family summary

    Design Standard compliance Arithmetic operations
    ADD, SUB, MUL, DIV, SQRT, COMP
    Trigonometric operations
    SIN, COS, TAN, ARCTAN
    Processors interfaces
    8,16,32 bit
    Single precision Double precision 8/16/32 bit integers 52-bit integers
    DFPAU IEEE-754 + - + + - - -
    DFPMU IEEE-754 + + + + - + -
    DFPAU-DP IEEE-754 + - + + + + +
    DFPMU-DP IEEE-754 + + + + + + +

    The main features of each Arithmetic Coprocessors family member has been summarized in table above. It gives a briefly member characterization helping you to select the most suitable IP Core for your application.

    Performance

    Each core has been tested in variety of FPGA and ASIC technologies. Its implementation results are summarized below.

    Implementation Speed
    grade
    Slices/LUTs Frequency
    [MHz]
    SPARTAN-3E -5 4590/8400
    16xMULT18
    71
    SPARTAN-6 -3 1885/5900
    16xDSP48
    72
    VIRTEX-4 -12 4390/8100
    16xDSP48
    100
    VIRTEX-5 -3 2250/6550
    14xDSP48
    125
    VIRTEX-6 -2 2170/6000
    14xDSP48
    100

    DFPMU-DP implementation results for XILINX devices. 
    All features have been included.

    Implementation Speed
    grade
    Logic Cells Frequency
    [MHz]
    CYCLONE -6 7600 74
    CYCLONE-II -6 7850+26xDSP 76
    CYCLONE-III -6 7620+28xDSP 92
    CYCLONE-IV -6 7600+28xDSP 93
    STRATIX -5 7290+32xDSP 79
    STRATIX-II -3 5260+32xDSP 109
    STRATIX-IV -2 5170+16xDSP 160

    DFPMU-DP implementation results for ALTERA devices. 
    All features have been included.

    Implementation Speed grade Min. area Frequency
    [MHz]
    0.25 um typical 29 900 gates 190
    0.18 um typical 29 200 gates 270
    0.09 um typical 27 400 gates 600

    DFPMU-DP implementation results for ASIC devices.
    All features have been included.


    Key Features

    • Direct replacement for C double, float software functions such as: +, -, *, /,==, !=,>=, <=, <, >
    • Configurability of all available functions
    • C interface supplied for all popular compilers: GNU C/C++, 8051 compilers
    • C interface supplied for NIOS II and MICROBLAZE processors
    • No programming required
    • IEEE-754 Double precision real format support – double type
    • IEEE-754 Single precision real format support – float type
    • 8-bit, 16-bit 32-bit and 52-bit integers format supported – integer types
    • Flexible arguments and result registers location
    • Performs the following functions:
      • FADD, FSUB – addition, subtraction
      • FMUL, FDIV – multiplication, division
      • FSQRT – square root
      • FXAM – examine input data
      • FUCOM – comparison
      • FSIN, FCOS – sine, cosine
      • FTAN – tangent
      • FATAN – arctangent
      • FCLD, FILD – 8-bit, 16-bit integer to double
      • FLLD, FELD – 32-bit, 52-bit integer to double
      • FCST, FIST – double to 8-bit, 16-bi integer
      • FLST, FEST – double to 32-bit, 52-bit integer
      • FFLD – float to double
      • FFST – double to float
    • Exceptions built-in routines
    • Masks each exception indicator:
      • Precision lack PE
      • Underflow result UE
      • Overflow result OE
      • Invalid operand IE
      • Division by zero ZE
      • Denormal operand DE
    • Fully configurable
    • Fully synthesizable
    • Static synchronous design
    • Positive edge clocking and no internal tri-states
    • Scan test ready

    Applications

    • Math coprocessors
    • DSP algorithms
    • Embedded arithmetic coprocessor
    • Fast data processing & control

    Symbol

     clk
     rst
     datai1 (31:0)
     addr2 (4:0)
     we
     cs
    datao1 (31:0) 
    irq 

    Pins description

    PinTypeDescription
    clkinputGlobal clock
    rstinputGlobal reset
    datai1 (31:0)inputData bus input
    addr2 (4:0)inputRegister addres to read/write
    weinputData write enable
    csinputChip select for read/write
    datao1 (31:0)outputData bus output
    irqoutputInterrupt request indicator

    Block Diagram

    InterfaceMakes interface between external device and core internal 32-bit modules. It contains data, control and status registers. It can be configured to work with 8-, 16- and 32-bit processors..

    1 - data bus can be configured as 8-, 16- or 32- bit depends on processor"s bus size
    2 - address bus is aligned to work with 8- (3:0), 16- (3:1) or 32- (4:2) bit processors
    datai1 (31:0)
    datao1 (31:0)
    irq
    addr2 (4:0)
    we
    cs
    Control UnitIt manages execution of all instructions and internal operation required to carry particular function.
    AlignIt performs the numbers analyze against IEEE-754 standard compliance. Information about the data classes is passed as a result to appropriate internal module.
    ExponentIt performs operations on exponent part of number. The addition, subtraction, shifting, comparison and conversion operations are executed in this module. It contains exponents and work registers.
    MantissaIt performs operations on mantissa part of number. The addition, subtraction, multiplication, division, square root, comparison and conversion operations are executed in this module. It contains mantissas and work registers.
    ShifterIt performs mantissa shifting during normalization, denormalization operations. Information about out-shifted bits is stored for rounding process.
    CORDICCORDIC performs trigonometric operations on input data. The sine, cosine, tangent and arctangent operations are executed in this module. It contains three work registers.
    clk
    rst
    Control bus Control bus is intended for control signals connected to each module. Main control is performed by Control Unit.
    Exponent bus Exponent data bus is 17-bit wide bus used for exponent transferring between modules.
    Mantissa Mantissa data bus. It is 70-bit wide internal bus used for mantissas transferring between modules.

    Units

    Interface
    Makes interface between external device and core internal 32-bit modules. It contains data, control and status registers. It can be configured to work with 8-, 16- and 32-bit processors..

    1 - data bus can be configured as 8-, 16- or 32- bit depends on processor"s bus size
    2 - address bus is aligned to work with 8- (3:0), 16- (3:1) or 32- (4:2) bit processors
    Control Unit
    It manages execution of all instructions and internal operation required to carry particular function.
    Align
    It performs the numbers analyze against IEEE-754 standard compliance. Information about the data classes is passed as a result to appropriate internal module.

    Exponent
    It performs operations on exponent part of number. The addition, subtraction, shifting, comparison and conversion operations are executed in this module. It contains exponents and work registers.
    Mantissa
    It performs operations on mantissa part of number. The addition, subtraction, multiplication, division, square root, comparison and conversion operations are executed in this module. It contains mantissas and work registers.
    Shifter
    It performs mantissa shifting during normalization, denormalization operations. Information about out-shifted bits is stored for rounding process.

    CORDIC
    CORDIC performs trigonometric operations on input data. The sine, cosine, tangent and arctangent operations are executed in this module. It contains three work registers.