64-bit Floating Point Coprocessor

Home products Downloads Support Where to Buy Contact

Pin Descriptions
Support Software
Application Notes
Code Examples


The precision required for GPS navigational calculations and the transformation of data from MEMS-based sensors can easily exceed the capabilities of 32-bit floating point numbers. The uM-FPU64 coprocessor, with support for both 32-bit and 64-bit floating point numbers, provides the added precision needed for these demanding applications, and can offload the floating point calculations from the microcontroller.

The uM-FPU64 chip easily interfaces to virtually any microcontroller using an SPI™ or I2C™ interface.
Many microcontrollers used in embedded systems lack floating point support, but a wide range of sensors available today require additional computations or data transformation to provide accurate results.

Software math libraries often use large amounts of memory on microcontrollers, particularly as more complex library functions are used. The uM-FPU64 chip offloads this overhead, and provides a comprehensive set of floating point operations, including advanced functions such as FFT, matrix operations and NMEA sentence parsing.

Advanced operations and fast execution allows the uM-FPU64 chip to outperform comparable software math libraries. It also provides Flash memory for storing user-defined functions, 128 64-bit registers, and 128 32-bit registers for floating point and integer data.

The uM-FPU64 is compatible with the instruction set of Micromega's popular uM-FPU V3.1 32-bit floating point coprocessor. Advanced instructions are provided for fast data transfer, matrix operations, FFT calculations, serial input/output, NMEA sentence parsing, string handling, digital input/output, analog input, and control of local devices. Local device support includes: RAM, 1-Wire, I2C, SPI, UART, counter, servo controller, and LCD devices. A built-in real-time clock and foreground/background processing is also provided. The uM-FPU64 can act as a complete subsystem controller for sensor networks, robotic subsystems, IMUs, and other applications.

The uM-FPU64 IDE (Integrated Development Environment) makes it easy to create, debug and test code for the uM-FPU64. Code can be written in the IDE's high level language or in assembler, then compiled to produce code targeted for any one of the many microcontrollers and compilers supported, or stored in Flash memory. The IDE provides support for editing code, compiling, tracing code execution, setting breakpoints, examining registers and programming user-defined functions in Flash memory.

For a printed summary of uM-FPU64 features, see uM-FPU64 Brochure.

Suggested Retail Price: $19.95 USD


64-bit and 32-bit Floating Point
A comprehensive set of 64-bit and 32-bit floating point operations are provided.
See the uM-FPU64 datasheet for details.

64-bit and 32-bit Integer
A comprehensive set of 64-bit and 32-bit integer operations are provided.
See the uM-FPU64 datasheet for details.

User-defined Functions
User-defined functions can be stored in Flash memory. Flash functions are programmed through the SERIN/SEROUT pins using the uM-FPU64 IDE. A high level language is supported, including control statements and conditional execution.

Matrix Operations
A matrix can be defined as any set of sequential registers. The MOP instruction provides scalar operations, element-wise operations, matrix multiply, inverse, determinant, count, sum, average, min, max, copy and set operations.

FFT Instruction
Provides support for Fast Fourier Transforms. Used as a single instruction for data sets that fit in the available registers, or as a multi-pass instruction for working with larger data sets.

Serial Input / Output
When not required for debugging, the SERIN and SEROUT pins can be used for serial I/O. A second asynchronous serial port, with hardware flow control, is also available as a local device using the DEVIO instruction.

NMEA Sentence Parsing
The serial input can be set to scan for valid NMEA sentences with optional checksum. Multiple sentences can be buffered for further processing.

String Handling
String instructions are provided to insert and append substrings, search for fields and substrings, convert from floating point or long integer to a substring, or convert from a substring to floating point or long integer. For example, the string instructions could be used to parse a GPS NMEA sentence, or format multiple numbers in an output string.

Table Lookup Instructions
Instructions are provided to load 32-bit values from a table or find the index of a floating point or long integer table entry that matches a specified condition.

MAC Instructions
Instructions are provided to support multiply and accumulate and multiply and subtract operations.

A/D Conversion
Multiple 12-bit A/D channels are provided (six on 28-pin device, nine on 44-pin device). The A/D conversion can be triggered manually, through an external input, or from a built-in timer. The A/D values can be read as raw values or automatically scaled to a floating point value. Data rates of up to 10,000 samples per second are supported.

Real-Time Clock
A built-in real-time clock is provided, for scheduling events or creating date/time stamps.

Timers can be used to trigger the A/D conversion, or to track elapsed time. A microsecond and second timer are provided.

External Input
An external input can be used to trigger an A/D conversion, or to count external events.

Foreground/Background Processing
Event driven foreground/background processing can be used to provide independent monitoring of local peripherals. The microcontroller communicates with the foreground, while background processes can be used to monitor local device activity.

Local Device Support
Local peripheral device support includes: RAM, 1-Wire, I2C, SPI, UART, counter, servo controller, LCD, and VDrive2 devices. The uM-FPU64 can act as a complete subsystem controller for GPS, sensor networks, robotic subsystems, IMUs, and other applications. Local devices are assigned to digital I/O pins at run-time, and controlled with the DEVIO instruction.

Low Power Modes
When the uM-FPU64 chip is not busy it automatically enters a power saving mode. It can also be configured to enter a sleep mode which turns the device off while preserving register contents. In sleep mode the uM-FPU64 chip consumes negligible power.

Firmware Upgrades
When updates become available, the uM-FPU64 firmware can be upgraded in the field using the uM-FPU64 IDE software.

Pin Diagram and Pin Descriptions

DIP-28, SOIC-28 

 Name  Type  Description

 Power/Ground Pins
 VDD  Power  Digital Supply Voltage
 VSS  Power  Digital Ground
 AVDD  Power  Analog Supply Voltage
 AVSS  Power  Analog Ground
 VCAP  Input  Filter Capacitor (6.8uf to 10 uF)

 System Pins
 /MCLR  Input  Master Clear (Reset)
 RTC OSCI  Input  Real-time Clock 32.768 Crystal Oscillator 
 RTC OSCO  Output  Real-time Clock 32.768 Crystal Oscillator 
 SEL  Input  Interface Select
 /BUSY  Output  Ready/Busy Status

 SPI Interface Pins
 SCLK  Input  SPI Clock
 SIN  Input  SPI Input
 SOUT  Output  SPI Output, Busy/Ready Status
 /SS  Input  SPI Slave Select

 I2C Interface Pins
 SCL  Input  I2C Clock
 SDA  In/Out  I2C Data

 Serial Input/Output, Debug Monitor Pins
 SERIN  Input  Serial Input, Debug Monitor - Rx
 SEROUT   Output  Serial Output, Debug Monitor - Tx

 Digital Input/Output Pins
 D0-D8  Input/Output  Digital Input/Output
 D9-D22  Input/Output  Digital Input/Output (44-pin)
 RTC  Output  Real-time Clock Output

 Analog Input Pins
 AN0-AN5  Input  Analog Input Channels
 AN6-AN8  Input  Analog Input Channels (44-pin)
 VREF+  Input  Analog Voltage Reference (high)
 VREF-  Input  Analog Voltage Reference (low)


See the Downloads page for up-to-date documentation of the uM-FPU64.

Support Software

The uM-FPU64 floating point coprocessor is easily interfaced with virtually any microcontroller that provides an SPI or I2C connection. See the Downloads page for a list of available support software. For microcontrollers that are not currently supported, the interface routines can be easily developed using the software for a similar microcontroller as a template for porting the code.

Return to Top