提出了基于派生数据类型范围
这个例子展示了如何提出基于静态范围使用定点数据类型定点转换器应用。当你提出基于派生数据类型范围,不需要提供测试文件,锻炼你的算法对其完整的操作范围。运行这些测试文件通常需要很长时间。你可以节省时间范围而派生出来的。
请注意
派生的范围分析不支持非标量变量。金宝app
先决条件
这个例子需要以下产品:下载188bet金宝搏
MATLAB®
定点设计师™
C编译器
看到金宝app支持编译器。
您可以使用
墨西哥人设置
改变默认的编译器。看到改变默认的编译器。
创建一个新的文件夹,复制相关文件
在当地,可写的文件夹中,创建一个函数
dti.m
。的
贸易工业部
在MATLAB函数实现了一个离散时间积分器。函数[y, clip_status] = dti (u_in)% # codegen在MATLAB %离散时间积分器%%向前欧拉方法,也称为前进%矩形或左近似。%的结果输出的表达式%的块一步“n”% (n) = y (n - 1) + K * u (n - 1)%init_val = 1;gain_val = 1;limit_upper = 500;limit_lower = -500;%变量来保存状态之间%连续调用这一块持续的u_state;如果isempty (u_state) u_state = init_val + 1;结束%计算输出如果(u_state > limit_upper) y = limit_upper;clip_status = 2;elseif(u_state > = limit_upper) y = limit_upper;clip_status = 1;elseif(u_state < limit_lower) y = limit_lower;clip_status = 2;elseif(u_state < = y = limit_lower limit_lower);clip_status = 1;其他的y = u_state;clip_status = 0;结束%更新状态tprod = gain_val * u_in;u_state = y + tprod;
创建一个测试文件,
dti_test.m
,锻炼贸易工业部
算法。测试脚本运行
贸易工业部
函数与一个正弦波输入。然后脚本块的输入和输出信号。% dti_test%的清理清晰的贸易工业部%输入信号x_in =罪(2。*π。* (0:0.001:2)。”;暂停(10);len =长度(x_in);len y_out = 0 (1);len is_clipped_out = 0 (1);为2 = 1:len data = x_in (ii);%对dti函数的调用init_val = 0;gain_val = 1;upper_limit = 500;lower_limit = -500;%设计,DTI打电话[y_out (ii), is_clipped_out (ii)] = dti(数据);结束图(“名字”(mfilename“_plot”]);次要情节(2,1,1)阴谋(1:len, x_in)包含(“时间”)ylabel (“振幅”)标题(的输入信号(罪)次要情节(2,1,2)阴谋(1:len, y_out)包含(“时间”)ylabel (“振幅”)标题(“输出信号(DTI)”)disp (测试完成。);
这是一个最佳实践是创建一个单独的测试脚本进行预处理和后处理,如:
加载输入。
设置输入值。
输出测试结果。
类型 | 的名字 | 描述 |
---|---|---|
函数代码 | dti.m |
MATLAB函数入口点 |
测试文件 | dti_test.m |
MATLAB脚本测试dti.m |
打开定点转换器应用程序
导航到工作文件夹,其中包含文件对于这个示例。
在MATLAB将来发布应用程序选项卡,在代码生成,点击应用程序图标。
选择源文件
添加的入口点函数
贸易工业部
项目,浏览该文件dti.m
,然后单击开放。默认情况下,应用程序保存信息和设置这个项目在当前文件夹的文件命名dti.prj
。点击下一个去定义输入类型的一步。
应用程序屏幕
dti.m
为代码违规和定点转换准备问题。应用程序没有发现问题dti.m
。
定义输入类型
在定义输入类型页面,添加
dti_test
作为一个测试文件,浏览到dti_test.m
,然后单击开放。点击Autodefine输入类型。
测试文件。应用程序决定了从测试文件的输入类型
u_in
是双(1 x1)
。点击下一个去转换为定点的一步。
转换为定点
应用程序生成一个仪器的墨西哥人对你的入口点函数MATLAB函数。这个应用程序显示编译信息类型、大小和复杂度变量在代码中。有关更多信息,请参见查看和修改变量的信息。
如果函数不支持定点转换,应用程序显示他们金宝app函数替换选项卡。
单击分析箭头
。
选择分析范围使用派生的范围分析。
清除分析范围使用模拟复选框。
设计范围需要使用派生的范围分析。
在转换为定点页面,变量选项卡上,输入
u_in
中,选择静态分并设置它1
。集静态马克斯来1
。计算派生范围信息,至少必须指定静态最大和最小值或提出所有输入变量的数据类型。
请注意
如果您手动输入静态范围,这些手动输入范围优先于模拟范围。应用程序使用手动输入范围提出的数据类型。你也可以提出修改和锁定类型。
点击分析。
范围分析计算派生的范围和显示他们的变量选项卡。使用这些派生的范围,每个变量的分析提出了定点类型基于默认类型建议设置。这个应用程序显示的建议类型列。
在
贸易工业部
函数,clip_status
输出的最小值2
,最高2
。%计算输出如果(u_state > limit_upper) y = limit_upper;clip_status = 2;elseif(u_state > = limit_upper) y = limit_upper;clip_status = 1;elseif(u_state < limit_lower) y = limit_lower;clip_status = 2;elseif(u_state < = y = limit_lower limit_lower);clip_status = 1;其他的y = u_state;clip_status = 0;结束
获得范围时,应用分析功能和计算这些最大和最小值
clip_status
。应用程序提供了一个快速提取范围分析选项,选项指定超时的情况下,分析需要很长时间。看到计算出范围。
浮点算法转换为定点,点击转换。
定点的转换过程中,软件验证拟议中的类型和生成以下文件
codegen \ dti \ fixpt
文件夹在您的本地工作目录:dti_fixpt.m
——的定点版本dti.m
。dti_wrapper_fixpt.m
——这个文件转换浮点数据值提供的测试文件定点类型确定输入的转换。应用程序订阅这些定点值到定点设计、转换dti_fixpt.m
。dti_fixpt_report.html
这个报告显示生成的定点代码和定点测量结果。dti_report.html
这个报告显示了原始算法和定点测量的结果。dti_fixpt_args.mat
——MAT-file包含结构的输入参数,输出的结构参数和定点文件的名称。
验证期间如果发生错误或警告,他们展示的输出选项卡。看到验证类型。
在输出文件列表中,选择
dti_fixpt.m
。这个应用程序显示生成的定点代码。使用模拟数据检查员情节浮点和定点的结果。
单击设置箭头
。
扩大策划和报告设置和设置情节与仿真数据检查员来
是的
。单击测试箭头
。选择日志输入和输出比较的阴谋。点击测试。
应用程序运行测试文件用于定义输入类型测试定点MATLAB代码。可选地,您可以添加测试文件并选择运行多个测试文件来测试数值。软件运行浮点和定点仿真输出变量,然后计算错误
y
。因为你选择记录输入和输出比较情节和使用仿真数据检查员对这些情节,检查员打开仿真数据。您可以使用模拟数据检查员将浮点和定点运行信息和比较结果。例如,比较浮点和定点值输出
y
中,选择y
。点击比较。集基线原来的运行比较变频器运行。点击比较。仿真数据检查显示一个基线浮点和定点跑的情节以及它们之间的区别。
在验证输出选项卡中,应用程序提供了一个链接到Fixed_Point报告。
打开报告,单击dti_fixpt_report.html链接。
点击下一个去完成工作流程页面。
在完成工作流程页面,应用程序显示一个项目总结和生成的输出文件的链接。
定点整合代码
将定点版本的代码集成到系统级仿真,生成一个墨西哥人功能加速定点算法。调用这个墨西哥人函数代替原来的MATLAB算法。
复制
dti_fixpt.m
到您的本地工作目录。得到
fimath
属性为输入参数,看看get_fimath
函数dti_fixpt.m
。函数fm调频= get_fimath () = fimath (“RoundingMethod”,“地板”,…“OverflowAction”,“包装”,…“ProductMode”,“FullPrecision”,…“MaxProductWordLength”,128,…“SumMode”,“FullPrecision”,…“MaxSumWordLength”,128);结束
定点数据类型的输入
u_in
,看看类型建议报告。生成一个墨西哥人功能
dti_fixpt.m
。调频= fimath (“RoundingMethod”,“地板”,…“OverflowAction”,“包装”,…“ProductMode”,“FullPrecision”,…“MaxProductWordLength”,128,…“SumMode”,“FullPrecision”,…“MaxSumWordLength”,128);fiacceldti_fixptarg游戏{fi(0, 1, 16日,14日,fm)}
fiaccel
生成一个墨西哥人的功能,dti_fixpt_mex
在当前文件夹。你现在可以调用这个墨西哥人代替原来的MATLAB函数算法。