Fixed-Point Designer

Key Features

  • Fixed-point data type specification in MATLAB, Simulink, and Stateflow
  • Bit-true, accelerated simulation of fixed-point algorithms
  • Recommendations for word length and scaling data type
  • Floating-point and fixed-point results comparison
  • Fixed-point data type override to double or single precision
  • Support for C, HDL, and PLC code generation
Using Fixed-Point Designer to specify and view data type and scalings for MATLAB, Simulink, and Stateflow.
Using Fixed-Point Designer to specify and view data types and scalings for MATLAB, Simulink, and Stateflow.

Fixed-Point Specification

Fixed-Point Designer enables you to specify all the fixed-point properties of your MATLAB code, Simulink models, and Stateflow charts. It provides full control of signedness, word length, and scaling. It supports application-specific word lengths from 1 bit to at least 128 bits. Binary-point scaling and arbitrary slope and bias scaling needed by sensors and actuators are also supported. You can control the details of the math, such as how to deal with rounding and overflow.

Simulink model demonstrating the effect of limited range and precision on a signal.
Simulink model demonstrating the effect of limited range and precision on a signal, as shown on the scope (top right). The parameter dialog box (top left) allows full control of block parameters, including all fixed-point attributes.

Fixed-Point Designer provides a large number of functions such as math and bitwise operations, array and matrix operators, CORDIC implementations, and trigonometric functions to support fixed-point computation.

The designer lets you control the fixed-point arithmetic. The fixed-point variables can either share a single set of arithmetic attributes or have their own attached arithmetic attributes.

A data-type-independent MATLAB algorithm that provides both a floating-point response and a fixed-point response.
A data-type-independent MATLAB algorithm that provides both a floating-point response and a fixed-point response. The plot shows algorithm output with data types specified as 16-bit fixed point and as double-precision floating point.

Bit-True Design Workflow

Fixed-Point Designer provides bit-true agreement across a workflow that uses Model-Based Design. The response of a fixed-point algorithm is bit-true for all forms of simulation and code generation, including acceleration and software-in-the-loop. Analysis and verification of a fixed-point algorithm are based on bit-true representations. Bit-true agreement maximizes the benefits of Model-Based Design, such as the ability to discover issues early in the workflow, when they are easier and less costly to fix.

Comparison of output with original baseline output using Fixed-Point Designer.
Comparison of output with data types using 16-bit word length and proposed fraction length with original floating-point baseline output. Both signals are shown overlapped (left), and differences are in the order of 10-6 (right).

For Simulink models, once a model has been configured with fixed-point data types, you can simulate its performance to explore implementation tradeoffs between limited range and precision for fixed-point embedded systems.

Using the tools in Fixed-Point Designer, you can access these values and change the data types of signals, optimizing precision while ensuring that their range is covered. You can specify data type ranges using design minimums and maximums, simulation results, or derived minimum and maximum results. You can lock output data types to prevent them from being changed.

Fixed-point simulation of a fuel rate control system designed using Simulink and Stateflow.
Fixed-point simulation of a fuel rate control system designed using Simulink and Stateflow. The Fixed-Point Tool lets you trade off range and precision for data in Simulink models (bottom).

Floating-Point to Fixed-Point Conversion

Fixed-Point Designer provides analysis tools for efficiently converting a design from floating-point to fixed-point representation. The tools let you record minimum and maximum data values and pinpoint when overflows occur during fixed-point operations. The data type override feature lets you analyze a fixed-point algorithm by switching the data types between fixed point and floating point. With this analysis, you can observe the dynamic range of variables involved in your design and ensure that the algorithm behaves consistently in floating-point and fixed-point representations.

In MATLAB, you can instrument your code for logging to collect minimum and maximum values from the simulation and get proposed data types. Instrumentation functions can generate log2 histograms. A histogram is generated for each named and intermediate variable and for each expression in your code. You can use this histogram to determine the word and fraction lengths for your fixed-point values.

MATLAB code generation report with histogram logging of finite impulse-response (FIR) filter converted to fixed point.
MATLAB code generation report of finite impulse-response (FIR) filter converted to fixed point. You can instrument your code for logging, collect minimum and maximum values, plot a histogram from the simulation, and get proposed data types.

For Simulink models, you can automatically convert a floating-point design built in Simulink, Stateflow, and system toolboxes including Communications System Toolbox™ and DSP System Toolbox™ into a fixed-point design using the Fixed-Point Tool.

Floating-Point to Fixed-Point Conversion 7:57
Explore fixed-point models and use automated logging and scaling tools to refine the fixed-point data types for more optimized results.

Fixed-Point Designer provides debugging capabilities that let you switch to a floating-point representation of your model to perform benchmarking of the design, identify modeling errors, and determine ideal minimum and maximum values.

Fixed-Point Optimization Using Fixed-Point Tool 6:32
Convert a floating-point model into a fixed-point model and obtain an initial scaling for the fixed-point data types.

Accelerated Simulation

Fixed-Point Designer lets you accelerate fixed-point algorithms through MEX-file generation. It does this by providing the fiaccel function to convert your MATLAB code to a MEX-function, which can accelerate the execution speed of your fixed-point algorithms.

Example code showing how to accelerate fixed-point algorithms using the fiaccel function.
Example code showing how to accelerate a numerical filter fixed-point algorithm using the fiaccel function.

Code Generation

Using Fixed-Point Designer with MATLAB Coder™ or Embedded Coder®, you can generate pure integer C code from your fixed-point MATLAB code.

Fixed-point MATLAB code for a FIR filter and efficient C code generated using MATLAB Coder with Fixed-Point Designer.
Fixed-point MATLAB code for a FIR filter (top) and efficient C code generated using MATLAB Coder with Fixed-Point Designer (bottom).

Using Fixed-Point Designer with Simulink Coder™ or Embedded Coder, you can generate pure integer C code from your fixed-point Simulink models and Stateflow charts.

Model incorporating wide integer and fixed-point operations and generated multiword C code.
Model incorporating wide integer and fixed-point operations (top) and generated multiword C code (bottom). Multiword code is normally triggered by using parameters or signals with data types wider than C long.

The generated code is in bit-true agreement with your model, enabling your design to perform as it did in simulation. The generated code automatically handles all the details of implementing fixed-point designs, such as scaling adjustment, rounding, and advanced fixed-point math. You can generate code for signals and parameters with word sizes from 1 to 128 bits. You can use the generated code for a variety of applications, including accelerated simulation, rapid prototyping, and production deployment.

Using Fixed-Point Designer with HDL Coder™, you can generate bit-true synthesizable Verilog® and VHDL® code from your fixed-point MATLAB code, Simulink models, and Stateflow charts.

Try Fixed-Point Designer

Get trial software

ARM Cortex-A, -R, -M Optimized Code Generation using MATLAB and Simulink

View webinar