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.
The Micromega uM-FPU V3.1 chip is a 32-bit floating point coprocessor that can be easily interfaced with any microcontrollers; providing support for 32-bit IEEE 754 floating point operations and 32-bit long integer operations. The uM-FPU supports both I2C and SPI connections.
Software math libraries often use large amounts of memory on microcontrollers, particularly as more complex library functions are used. The uM-FPU V3.1 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-FPU V3.1 chip to outperform comparable software math libraries. It also provides Flash memory and EEPROM for storing user-defined functions and data, and 128 32-bit registers for floating point and integer data.
Development support is provided by the uM-FPU V3 IDE which takes traditional math expressions and automatically produces uM-FPU code targeted for one of the many microcontrollers and compilers supported. The IDE also interacts with the built-in debugger on the uM-FPU V3.1 chip to assist in debugging and testing uM-FPU code.
32-bit Floating Point and 32-bit Integer
A comprehensive set of 32-bit floating point and 32-bit integer operations are provided.
User-defined functions can be stored in Flash and EEPROM. The EEPROM functions can be programmed at run-time. Conditional execution is supported using conditional branch and jump instructions.
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.
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
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 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.
Instructions are provided to support multiply and accumulate and multiply and subtract operations.
Two 12-bit A/D channels are provided. 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.
Timers can be used to trigger the A/D conversion, or to track elapsed time. A microsecond and second timer are provided.
An external input can be used to trigger an A/D conversion, or to count external events.
Low Power Modes
When the uM-FPU V3 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-FPU V3 chip consumes negligible power.
Operates at full speed from internal oscillator. No external components required.
The uM-FPU V3.1 floating point coprocessor is easily interfaced with virtually any microcontroller that provides an SPI or I2C connection.