主要内容

提出了基于仿真数据类型范围

这个例子展示了如何提出定点数据类型基于模拟数据使用范围定点转换器应用程序。

先决条件

这个例子需要以下产品:下载188bet金宝搏

创建一个新的文件夹,复制相关文件

  1. 在当地,可写的文件夹中,创建一个函数ex_2ndOrder_filter.m

    函数y = ex_2ndOrder_filter (x)% # codegen持续的z如果isempty (z) z = 0 (2, 1);结束% [b] =黄油(0.25 2,)b = (0.0976310729378175, 0.195262145875635, 0.0976310729378175);一个= (1、-0.942809041582063、0.3333333333333333);y = 0(大小(x));i = 1:长度b (x) y (i) = (1) * x(我)+ z (1);b z (1) = (2) * x(我)+ z (2) - (2) * y(我);z (2) = b (3) * x (i) - (3) * y(我);结束结束
  2. 创建一个测试文件,ex_2ndOrder_filter_test.m,锻炼ex_2ndOrder_filter算法。

    这是一个最佳实践是创建一个单独的测试脚本进行预处理和后处理,如:

    • 加载输入。

    • 设置输入值。

    • 输出测试结果。

    看到创建一个测试文件

    覆盖整个操作系统的范围,测试脚本运行ex_2ndOrder_filter函数有三个输入信号:唧唧声,一步,冲动。然后脚本块的输出。

    % ex_2ndOrder_filter_test%%定义代表输入N = 256;%的数量分t = linspace (0, 1, N);%时间向量从0到1秒f1 = N / 2;%的目标频率啁啾尼奎斯特x_chirp =罪(π* f1 * t ^ 2);%线性啁啾从0到f / 2赫兹在1秒x_step = 1 (1, N);%的步骤x_impulse = 0 (1, N);%的冲动x_impulse (1) = 1;%运行被测试函数x = [x_chirp; x_step x_impulse];y = 0(大小(x));i = 1:尺寸(x, 1) y(我:)= ex_2ndOrder_filter (x(我,:));结束%绘制结果标题= {“唧唧喳喳”,“步骤”,“冲动”}clfi = 1:尺寸(x, 1)次要情节(大小(x, 1), 1, i)情节(t) x(我:),t、y(我,:))标题(标题{我})传说(“输入”,“输出”)结束包含(“时间(s)”图(gcf) disp ()测试完成。)
类型 的名字 描述
函数代码 ex_2ndOrder_filter.m MATLAB函数入口点
测试文件 ex_2ndOrder_filter_test.m MATLAB脚本测试ex_2ndOrder_filter.m

打开定点转换器应用程序

  1. 导航到工作文件夹,其中包含文件对于这个示例。

  2. 在MATLAB将来发布应用程序选项卡,在代码生成,点击应用程序图标。

选择源文件

  1. 添加的入口点函数ex_2ndOrder_filter项目,浏览该文件ex_2ndOrder_filter.m,然后单击开放。默认情况下,应用程序保存信息和设置这个项目在当前文件夹的文件命名ex_2ndOrder_filter.prj

  2. 点击下一个定义输入类型的一步。

    应用程序屏幕ex_2ndOrder_filter.m为代码违规和定点转换准备问题。应用程序没有发现问题ex_2ndOrder_filter.m

定义输入类型

  1. 定义输入类型页面,添加ex_2ndOrder_filter_test作为一个测试文件,浏览到ex_2ndOrder_filter_test,然后单击开放

  2. 点击Autodefine输入类型

    测试文件运行并显示为每个输入滤波器的输出信号。

    应用程序决定了从测试文件的输入类型x双(1 x256)

  3. 点击下一个转换为定点的一步。

转换为定点

  1. 应用程序生成一个仪器的墨西哥人对你的入口点函数MATLAB函数。这个应用程序显示编译信息类型、大小和复杂度变量在代码中。看到查看和修改变量的信息

    函数替换选项卡,不支持的应用程序显示功能定点转换。金宝app看到运行一个仿真

  2. 单击分析箭头。验证分析范围使用模拟选择和试验台的文件吗ex_2ndOrder_filter_test。您可以添加测试文件并选择在仿真运行不止一个的测试文件。如果你运行多个测试文件,应用仿真结果合并。

  3. 选择日志数据的直方图

    默认情况下,显示代码覆盖率选项被选中。该选项提供了代码覆盖率信息,帮助您验证您的测试文件是测试算法在预期的操作范围。

  4. 点击分析

    模拟运行时,应用程序将显示一个颜色代码覆盖率栏左边的MATLAB代码。回顾这些信息来验证测试文件是充分测试算法。深绿色的左边的代码表明,每次运行该算法执行的代码。橙色的酒吧旁边表明代码只执行一次。预计这种行为对于这个例子,因为代码初始化一个持久变量。如果你的测试文件不包括你所有的代码,更新测试或添加更多的测试文件。

    如果一个值接下来,值是圆形的。暂停了查看实际价值。

    这个应用程序显示模拟上的最小值和最大值范围变量选项卡。使用模拟数据范围,软件提出了定点类型为每个变量基于默认类型建议设置,并显示他们的建议类型列。这个应用程序允许转换选择。

    请注意

    你可以手动输入静态范围。这些手动输入范围优先于模拟范围。应用程序使用手动输入范围提出的数据类型。你也可以提出修改和锁定类型。

  5. 检查提出的类型,并验证它们覆盖完整的模拟范围。查看记录直方图数据变量,单击它建议类型字段。

    修改该数据类型,输入所需的类型建议类型字段或使用直方图控制。关于直方图的更多信息,请参阅日志数据的直方图

  6. 浮点算法转换为定点,点击转换

    定点的转换过程中,软件验证拟议中的类型和生成以下文件codegen \ ex_2ndOrder_filter \ fixpt文件夹在您的本地工作目录。

    • ex_2ndOrder_filter_fixpt.m——的定点版本ex_2ndOrder_filter.m

    • ex_2ndOrder_filter_wrapper_fixpt.m——这个文件转换浮点数据值提供的测试文件定点类型确定输入的转换。这些定点值被送入定点设计、转换ex_2ndOrder_filter_fixpt.m

    • ex_2ndOrder_filter_fixpt_report.html这个报告显示生成的定点代码和定点测量结果。

    • ex_2ndOrder_filter_report.html这个报告显示了原始算法和定点测量的结果。

    • ex_2ndOrder_filter_fixpt_args.mat——MAT-file包含结构的输入参数,输出的结构参数和定点文件的名称。

    验证期间如果发生错误或警告,你看到他们输出选项卡。看到验证类型

  7. 输出文件列表中,选择ex_2ndOrder_filter_fixpt.m。这个应用程序显示生成的定点代码。

  8. 单击测试箭头。选择日志输入和输出比较的阴谋,然后单击测试

    测试定点MATLAB代码,程序运行测试文件用于定义输入类型。可选地,您可以添加测试文件并选择运行多个测试文件来测试数值。软件运行浮点和定点仿真输出变量,然后计算错误y。因为你选择日志输入和输出比较的情节,每个输入和输出的应用程序生成一个阴谋。应用这些情节在一个码头图窗口。

    这个应用程序还报告错误信息验证输出选项卡。最大误差小于0.03%。对于这个示例,这个误差是可以接受的。

    如果不同的是不能接受的,修改定点数据类型或原始算法。有关更多信息,请参见测试数字

  9. 验证输出选项卡中,应用程序提供了一个链接到一个报告,显示生成的定点代码和该类型信息。

  10. 点击下一个完成工作流程页面。

    完成工作流程页面,应用程序显示一个项目总结和生成的输出文件的链接。

定点整合代码

将定点版本的代码集成到系统级仿真,生成一个墨西哥人功能加速定点算法。调用这个墨西哥人函数代替原来的MATLAB算法。

  1. 复制ex_2ndOrder_filter_fixpt.m到您的本地工作目录。

  2. 生成一个墨西哥人功能ex_2ndOrder_filter_fixpt.m。看一下get_fimath功能ex_2ndOrder_filter_fixpt.m文件的fimath类型的建议报告,并使用定点数据类型的输入x

    调频= fimath (“RoundingMethod”,“地板”,“OverflowAction”,“包装”,“ProductMode”,“FullPrecision”,“MaxProductWordLength”,128,“SumMode”,“FullPrecision”,“MaxSumWordLength”,128);fiaccelex_2ndOrder_filter_fixptarg游戏{fi(0, 1, 16日,14日,fm)}

    fiaccel生成一个墨西哥人的功能,ex_2ndOrder_filter_fixpt_mex在当前文件夹。

  3. 你现在可以调用这个墨西哥人代替原来的MATLAB函数算法。