检测溢出

这个例子显示了如何检测溢出使用fiaccel功能。在转换过程中的数值测试阶段,工具模拟使用缩放双打定点代码。然后,它报告,其中在将溢出的定点数据类型生成的代码产生值的表达式。

先决条件

为了完成这个例子中,您必须安装以下产品:s manbetx 845

创建一个新的文件夹,并将相关档案

  1. 创建本地工作文件夹,例如,Cover Flow功能

  2. 切换到文档根\工具箱\固定点\例子夹。在MATLAB命令行中输入:

    CD(完整文件(文档根, '工具箱', '固定点', '实施例'))

  3. 复制overflow.moverflow_test.m文件到本地工作文件夹。

    这是创建一个单独的测试脚本来完成所有的预处理和后处理,如加载输入,设置输入值,测试调用该函数,并且输出测试结果的最佳实践。

    类型 名称 描述
    功能码 overflow.m 入口点函数MATLAB
    测试文件 overflow_test.m MATLAB脚本测试overflow.m

溢流功能

该overflow_test功能

建立配置对象

  1. 创建一个coder.FixptConfig宾语,fixptcfg,使用默认设置。

    fixptcfg = coder.config('fixpt');
  2. 将测试台的名字。在这个例子中,测试台函数名overflow_test

    fixptcfg.TestBenchName ='overflow_test';
  3. 默认的文字长度设置为16。

    fixptcfg.DefaultWordLength = 16;

启用溢出检测

fixptcfg.TestNumerics = TRUE;fixptcfg.DetectFixptOverflows = TRUE;

设置fimath选项

设置fimath产品模式和方式KeepLSB。这些设置模式整数操作的C语言的行为。

fixptcfg.fimath ='fimath( '' RoundingMethod'”, '' 楼 '', '' OverflowAction '', '' 包裹 '', '' ProductMode '', '' KeepLSB '', '' SumMode '', '' KeepLSB '')”;

转换为固定点

转换浮点MATLAB功能,溢出以定点MATLAB代码。你并不需要指定输入类型的fiaccel命令,因为它从测试文件推断类型。

fiaccel-float2fixedfixptcfg溢出

该NUMERICS测试阶段报告溢出。

在表达溢出错误 'ACC + B(j)的* Z(k)的'。电流范围的百分比= 104%。

审查结果

确定是否在此表达的添加或乘法溢出。设置fimathProductMode到FullPrecision使乘法不会溢出,然后运行fiaccel再次命令。

fixptcfg.fimath ='fimath( '' RoundingMethod'”, '' 楼 '', '' OverflowAction '', '' 包裹 '', '' ProductMode '', '' FullPrecision '', '' SumMode '', '' KeepLSB '')”;fiaccel-float2fixedfixptcfg溢出

所述NUMERICS测试阶段仍报告溢出,这表明它是添加在被溢出的表达。