Fixed-Point Designer

主要特性

  • MATLAB、Simulink 和 Stateflow 中的定点数据类型规格
  • 定点算法的位真加速仿真
  • 推荐字长和定标
  • 浮点和定点结果比较
  • 定点数据类型覆盖为双精度或单精度
  • 支持 C、HDL 和 PLC 代码生成
Using Fixed-Point Designer to specify and view data type and scalings for MATLAB, Simulink, and Stateflow.
使用 Fixed-Point Designer 指定和查看适用于 MATLAB、Simulink 和 Stateflow 的数据类型与比例。

定点规格

Fixed-Point Designer 使您能够指定 MATLAB 代码、Simulink 模型和 Stateflow 图的所有定点属性。它提供对符号转换、字长和定标的全面控制。它支持特定于应用程序的字长(从 1 位到至少 128 位)。此外还支持传感器和执行器所需的二进制小数点缩放和任意斜率与偏差定标。您可以控制数学运算细节,例如,如何取整和处理溢出。

Simulink model demonstrating the effect of limited range and precision on a signal.
展示有限范围和精度对信号影响的 Simulink 模型,如示波器(右上)所示。参数对话框(左上)允许全面控制模块参数,包括所有定点属性。

Fixed-Point Designer 提供数学和按位运算、数组和矩阵运算符、CORDIC 实现和三角函数等大量函数支持定点计算。

该设计工具使您能够控制定点运算。定点变量可共享一套运算属性或具有自身的运算属性。

A data-type-independent MATLAB algorithm that provides both a floating-point response and a fixed-point response.
一个与数据类型无关的 MATLAB 算法,可提供浮点和定点两种响应。该图显示的是数据类型指定为 16 位定点和双精度浮点的算法输出。

位真设计工作流程

Fixed-Point Designer 可以在使用基于模型的设计的工作流程中提供位一级一致性。对于所有形式的仿真和代码生成(包括加速和软件在环),定点算法的响应均为位真。定点算法的分析和验证基于位真表示方式。在位一级保持一致可以最大发挥基于模型的设计的优势,如在工作流程早期发现问题的能力(此时修复这些问题更容易且成本更低)。

Comparison of output with original baseline output using Fixed-Point Designer.
将具有使用 16 位字长的数据类型与建议小数长度的输出与原始浮点基线输出进行比较。两个信号都显示重叠(左),差异大约为 10-6(右)。

对于 Simulink 模型,在模型配置为定点数据类型之后,您便可以仿真其性能以探究定点嵌入式系统中有限字长和精度之间的实现权衡。

使用 Fixed-Point Designer 中的工具,您可以访问这些值并更改信号的数据类型,从而在确保覆盖范围的同时优化精度。您可以使用设计最大值与最小值、仿真结果或衍生的最小值和最大值结果来指定数据类型范围。您可以锁定输出数据类型以防止其被更改。

Fixed-point simulation of a fuel rate control system designed using Simulink and Stateflow.
使用 Simulink 和 Stateflow 设计的燃料消耗率控制系统的定点仿真。定点工具使您能够权衡 Simulink 模型(下)中数据的范围和精度。

将浮点转换为定点

Fixed-Point Designer 提供了可高效地将设计从浮点转换为定点的分析工具。您可以使用这些工具来记录最小和最大数据值,并查明定点运算过程中何时发生溢出。数据类型覆盖功能使您能够通过在定点和浮点之间切换数据类型来分析定点算法。通过这种分析,您可以观察设计中相关变量的动态范围,并确保算法执行在浮点和定点的表示形式下均一致。

MATLAB 中,您可以将代码用于记录以便从仿真中采集最小值和最大值,并获得建议的数据类型。仪表功能可生成 log2 直方图。会为每个指定的中间变量和代码中的每个表达式生成一个直方图。您可以使用此直方图来确定定点值的字长和小数长度。

MATLAB code generation report with histogram logging of finite impulse-response (FIR) filter converted to fixed point.
转换为定点格式的有限脉冲响应 (FIR) 滤波器MATLAB 代码生成报告。您可以将代码用于记录、从仿真中采集最小值和最大值、根据仿真绘制直方图,以及获得建议的数据类型。

对于 Simulink 模型,您可以使用定点工具将用 Simulink、Stateflow 和系统工具箱(包括 Communications System Toolbox™DSP System Toolbox™)构建的浮点设计自动转换为定点设计。

使用 Fixed-Point Advisor 进行从浮点到定点的转换 7:57
研究定点模型并使用自动记录与定比工具来改善定点数据类型,以获得优化的结果。

Fixed-Point Designer 提供调试功能,使您能够切换到模型的浮点表示,以执行设计基准比较,确定建模错误,并获得理想的最小值和最大值。

使用 Fixed-Point Tool 进行定点优化 6:32
将浮点模型转换为定点模型,并获得定点数据类型的初始比例。

加速仿真

Fixed-Point Designer 使您能够通过生成MEX 文件加速定点算法。它通过提供 fiaccel 函数将 MATLAB 代码转换为 MEX 函数(该函数可加速定点算法的执行速度),来执行此操作。

Example code showing how to accelerate fixed-point algorithms using the fiaccel function.
显示如何使用 fiaccel 函数来加速数值滤波器定点算法的示例代码。

代码生成

将 Fixed-Point Designer 与 MATLAB Coder™Embedded Coder® 结合使用,您可以从定点MATLAB 代码生成纯整型 C 代码。

Fixed-point MATLAB code for a FIR filter and efficient C code generated using MATLAB Coder with Fixed-Point Designer.
FIR 滤波器的定点 MATLAB 代码(上)与结合使用 Fixed-Point Designer 和 MATLAB Coder 生成的高效 C 代码(下)。

将 Fixed-Point Designer 与 Simulink Coder™ 或 Embedded Coder 结合使用,您可以从定点 Simulink 模型和 Stateflow 图生成纯整型 C 代码。

Model incorporating wide integer and fixed-point operations and generated multiword C code.
包含宽整数和定点运算的模型(上)和生成的多字 C 代码(下)。多字代码通常通过使用数据类型宽度大于 C 长整形的参数或信号触发。

生成的代码与您的模型在位一级保持一致,使您的设计与仿真过程中的执行情况一致。生成的代码会自动处理定点设计实现中的所有细节,如定标调整、取整以及高级定点数学运算等。您可以为字长为 1 到 128 位的信号和参数生成代码。您可以将生成的代码用于多种应用,包括加速仿真、快速原型设计和生产部署等。

将 Fixed-Point Designer 与 HDL Coder™ 结合使用,您可以从定点 MATLAB 代码、Simulink 模型和 Stateflow 图生成可综合的位真 Verilog® 和 VHDL® 代码。

试用 Fixed-Point Designer

获取试用版软件

MATLAB和Simulink定点设计的快速入门

观看网上技术交流会录像