HDL Coder™ native floating-point can generate target-independent HDL code from your floating-point design. You can synthesize your floating-point design on any generic FPGA or ASIC. Floating-point designs have better precision, higher dynamic range, and a shorter development cycle than fixed-point designs. If your design has complex math and trigonometric operations, use native floating-point technology.
HDL Coder supports several Simulink® blocks including math and trigonometric blocks with native floating-point technology.
In the HDL Floating Point Operations library, HDL Coder supports all blocks that have
single
and double
data types in the Native
Floating Point
mode. For certain blocks such as Discrete-Time
Integrator and Discrete PID Controller, use zero latency strategy.
These blocks contain inherent feedback loops and using a non-value for the latency strategy
can result in the code generator being unable to allocate delays. For more information, see
Allocate Sufficient Delays for Floating-Point Operations.
When you use half
types, these blocks are supported in
Native Floating Point
mode.
In the Math Operations
library, these blocks are supported for HDL
code generation:
Block Name | Supported with half data types | Supported with single data types | Supported with double data types | Remarks |
---|---|---|---|---|
Abs | No | Yes | Yes | – |
Add | Yes | Yes | Yes | – |
Assignment | No | Yes | Yes | – |
Bias | No | Yes | Yes | – |
Complex to Real-Imag | No | Yes | Yes | – |
Divide | Yes | Yes | Yes | – |
Dot Product | No | Yes | Yes | – |
Gain | Yes | Yes | Yes | – |
Math Function | No | Yes | No | – |
MinMax | No | Yes | Yes | – |
Product | Yes | Yes | Yes | If you configure the block to perform matrix multiplication by setting the
Multiplication block parameter to
Matrix(*) , the
DotProductStrategy must be set to Fully
Parallel . |
Product of Elements | Yes | Yes | Yes | – |
Real-Imag to Complex | No | Yes | Yes | – |
Reciprocal Sqrt | No | Yes | Yes | – |
Reshape | Yes | Yes | Yes | – |
Sqrt | No | Yes | Yes | – |
Subtract | Yes | Yes | Yes | – |
Sum | Yes | Yes | Yes | – |
Sum of Elements | Yes | Yes | Yes | – |
Trigonometric Function | No | Yes | No | – |
Unary Minus | Yes | Yes | Yes | – |
Vector Concatenate | Yes | Yes | Yes | – |
The table shows the list of supported blocks for HDL code generation in other HDL Coder block libraries.
Block Library | Supported with half data types | Supported with single data types | Supported with double data types |
---|---|---|---|
Discrete | The supported blocks include the set of delay blocks including the synchronous blocks, and Integer Delay, and Tapped Delay. | The supported blocks include:
| The supported blocks include:
|
HDL Operations | Blocks in this library are not supported. | All blocks are supported. | All blocks are supported. |
HDL RAMs | Blocks in this library are not supported. | All blocks are supported. | All blocks are supported. |
HDL Subsystems | All blocks are supported. | All blocks are supported. | All blocks are supported. |
Logic and Bit Operations | Supported blocks include:
| All blocks are supported. | All blocks are supported. |
Lookup Tables | Blocks in this library are not supported. | All blocks are supported. | All blocks are supported. |
Model Verification | Blocks in this library are not supported. | All blocks are supported. | All blocks are supported. |
Model-Wide Utilities | Blocks in this library are not supported. | All blocks are supported. | All blocks are supported. |
Ports & Subsystems | Enable, reset, input, and output ports, model references, and subsystem blocks are supported. | Enable, reset, input, and output ports, model references, and subsystem blocks are supported. | Enable, reset, input, and output ports, model references, and subsystem blocks are supported. |
Signal Attributes | Supported blocks include:
| All blocks are supported. | All blocks are supported. |
Signal Routing | All blocks are supported. | All blocks are supported. | All blocks are supported. |
Sources | The supported blocks include Inport, Constant, and Ground blocks. | The supported blocks include Inport, Constant, and Ground blocks. | The supported blocks include Inport, Constant, and Ground blocks. |
Sinks | All blocks are supported. | All blocks are supported. | All blocks are supported. |
User-Defined Functions | MATLAB Function blocks are supported. | MATLAB Function blocks are supported. | MATLAB Function blocks are supported. |
In native floating-point mode, the code generator does not support these blocks or block architectures:
Biquad Filter.
Switch block with input to the control port as a floating-point type.
Sum of Elements with complex input types.
MATLAB System blocks.
Dot Product in complex mode with Architecture as
Tree
or Linear
.
Discrete FIR Filter with Architecture other than
Fully Parallel
.
Dead Zone and Dead Zone Dynamic.
Polar to Cartesian.
For the Data Type Conversion block:
Stored Integer (SI)
mode for Input and
output to have equal setting is not supported.
The Saturate on integer overflow check box must be left cleared.