比较使用socModelAnalyzer的FIR滤波器实现
这个例子展示了如何根据算术运算的数量来分析和比较Simulink®算法的不同实现。金宝app使用SoC块集socModelAnalyzer
函数生成报告,显示使用静态和运行时执行的FIR Filter的不同实现的操作符的数量。
设计任务及要求
本设计任务评估FIR滤波器的两种实现,并比较实现成本。本例使用操作符的数量作为衡量实现成本的方法。
为了满足速度、延迟和硬件资源等系统需求,可以考虑并比较算法的几种实现。实现中使用的算术运算符的数量可以帮助您确定资源的使用和分配。
手工分析和计算算术运算符的数量可能是乏味的、容易出错的和耗时的。对于涉及分支、循环或递归结构的算法,手动计算可能是不准确的,如果执行路径依赖于输入数据或随机因素(例如,收敛算法),则可能无法计算。
模型结构
的soc_analyze_FIR_tb
模型通过两种方式实现了低通数字FIR滤波器。Symmetric_FIR子系统利用系数中的对称性来优化资源。Transposed_FIR子系统采用了面向更高运算速度的滤波器结构。该模型使用一个啁啾输入信号作为输入刺激,并使用一个FIR_ref(离散FIR滤波器)块作为参考,以检查实现的数值正确性。
打开soc_analyze_FIR_tb
在Simulink金宝app中建立模型,并检验模型的结构。
open_system (“soc_analyze_FIR_tb”);
为了设计低通FIR滤波器,我们使用了filterDesigner
(DSP系统工具箱)应用程序生成系数的八阶FIR滤波器。FIR滤波器的截止频率为0.25(归一化),通带纹波和停止带衰减分别为1 dB和60 dB。模型通过模型初始化回调设置这些系数。
模拟模型,根据参考FIR块验证两种实现的功能。过滤器实现的响应与引用匹配。
sim卡(“soc_analyze_FIR_tb”);
使用模型分析器比较实现
使用socModelAnalyzer
函数生成每个实现中算术运算符数量的报告,并比较实现。报告是使用模型的运行时执行生成的。
对称FIR滤波器:
要估计对称FIR滤波器实现的运算符数量,请使用socModelAnalyzer
函数。的子系统名称IncludeBlockPath
函数的名称-值对参数。设置输出文件夹以指定生成报告的位置。在MATLAB命令提示符处输入此命令。
socModelAnalyzer (“soc_analyze_FIR_tb.slx”,“文件夹”,“report_sym”,“IncludeBlockPath”,...“soc_analyze_FIR_tb / Symmetric_FIR”);
生成/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex82446029/soc_analyze_FIR_tb的操作分析报告。基金……将报表文件保存在“/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex82446029/report_sym”目录下。运算估计:打开报表查看器完成。
控件打开报告打开报表查看器链接在MATLAB控制台中。或者,您可以使用
函数。该报告提供了两个视图。第一个视图是操作符视图,它显示的数据是每一行对应一个操作符。若要使用该视图,请单击操作视图在报表工具条上。第二个视图是模型视图,其中每一行都对应于一个Simulink子系统路径。金宝app若要使用该视图,请单击模型视图在报表工具条上。报表也保存在socAlgorithmAnalyzerReport
report_sym
文件夹作为mat文件(soc_analyze_FIR_tb.mat
)和Excel®档案(soc_analyze_FIR_tb.xlsx
)。
默认情况下,报表以操作员视图打开。查看器打开每个操作符和数据类型的聚合视图。例如,对称FIR滤波器总共包含8个添加(+)
数据类型的操作符双
和5MUL (*)
数据类型的操作符双
每次执行10001次。(模型模拟持续时间为10 s,基准速率为10 ms。这将产生10,000个模拟周期加上1个初始化周期。)要获得每个操作符的详细报告,展开该操作符。该报告显示了在各个块中使用的操作符计数。控件中的一个链接,以突出显示该操作符的位置,从而跟踪该操作符soc_analyze_FIR_tb
模型。
变换FIR滤波器
要估计转置FIR滤波器实现的操作符数,请使用socModelAnalyzer
函数。指定“soc_analyze_FIR_tb / Transposed_FIR”
为“IncludeBlockPath”
函数的名称-值对参数。将生成的报告的输出文件夹设置为report_trans
.在MATLAB命令提示符处输入此命令。
socModelAnalyzer (“soc_analyze_FIR_tb.slx”,“文件夹”,“report_trans”,“IncludeBlockPath”,...“soc_analyze_FIR_tb / Transposed_FIR”);
生成/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex82446029/soc_analyze_FIR_tb的操作分析报告。基金……将报告文件保存在“/tmp/Bdoc22b_2134332_2870326/tp21597950/soc-ex82446029/report_trans”目录下。运算估计:打开报表查看器完成。
控件打开转置FIR过滤器的报告打开报表查看器链接在MATLAB控制台中。
对于转置FIR过滤器,报告显示了数据类型增加的估计数量为8双
数据类型的9次乘法双
(每个操作符执行10001次)。
对称实现和转置实现的比较
比较对称的和转置的FIR滤波器报告生成使用socModelAnalyzer
函数。对称FIR滤波器比转置FIR滤波器使用更少的乘法运算符(9)。它们都使用相同数量的加法运算符(8)。
结论
你使用了socModelAnalyzer
函数来估计和分析两个FIR滤波器实现中的算术运算符的数量。您为对称和转置FIR过滤器生成了操作符报告。您比较了两个实现的乘法和加法运算符的数量。
您可以使用socModelAnalyzer
在Simulink算法中分析运算符数量的函数。金宝app