验证冷杉过滤胳膊在MATLAB Cortex-M处理器
这个例子展示了如何使用代码替换库(CRL)手臂Cortex-M™处理器和DSP系统对象。这个例子使用一个dsp。FIRFilter系统对象来过滤两个不同频率的正弦波。
任务1:设置和模拟
1。打开ex_fircmsis_tut_ml例子函数,实现了一个低通滤波器对象。
2。创建两个正弦波信号1 khz和3千赫频率,分别。
sin1 = dsp.SineWave (“振幅”,1“频率”,1000,…“SampleRate”,8000,“SamplesPerFrame”,75,…“OutputDataType”,“单一”);sin2 = dsp.SineWave (“振幅”4“频率”,3000,…“SampleRate”,8000,“SamplesPerFrame”,75,…“OutputDataType”,“单一”);
3所示。创建一个频谱分析仪来查看输入和过滤输出的频谱。
范围= dsp.SpectrumAnalyzer (“SampleRate”,8 e3,“ShowLegend”,真的,…“PlotAsTwoSidedSpectrum”假的,…“RBWSource”,“属性”,…“RBW”,8000/260,“窗口”,“皇帝”,…“OverlapPercent”,80,…“YLimits”,56 [-76],“SpectralAverages”10);
4所示。模拟的例子
NN = 2000;为k = 1: NN x1k = sin1 ();%生成1 k赫兹正弦波x3k = sin2 ();%生成3 k赫兹正弦波n1 = randn(大小(x1k),“单一”)* sqrt (. 05);%产生噪声信号u1 = x1k + x3k + n1;日元= ex_fircmsis_tut_ml (u1);范围([u1, y1]);结束
任务2:配置代码替换
1。创建一个代码生成配置对象使用codegen当生成C / c++静态库。
cfgEx = coder.config (“自由”);cfgEx。CodeReplacementLibrary =“胳膊Cortex-M”;cfgEx.HardwareImplementation。ProdHWDeviceType =“胳膊兼容- >手臂皮层”;cfgEx。GenCodeOnly = true;
2。打开自定义代码面板的配置对话框和验证设置。
cfgEx.dialog
任务3:生成代码
1。改变你的当前文件夹在MATLAB临时写的文件夹。将MATLAB文件复制到临时文件夹。
tempdirObj = dstarmexample.dstTempdir (“ex_fircmsis_tut_ml_workflow”);dstarmsrc = (“ex_fircmsis_tut_ml”);dstarmtmpdir = tempdirObj.tempDir;类型(fullfile (dstarmsrc))复制文件(dstarmsrc dstarmtmpdir,“f”);
函数日元= ex_fircmsis_tut_ml (u1) % 2013 - 2016版权MathWorks, Inc . % # codegen持久firfilter;如果isempty (firfilter) firfilter = dsp。FIRFilter(“分子”,fir1 (63, 0.33));结束日元= firfilter (u1);结束
2。为MATLAB函数生成C代码ex_fircmsis_tut_ml.m。
codegenex_fircmsis_tut_mlarg游戏单(u1)配置cfgEx报告
3所示。当代码生成成功完成,点击查看报告显示代码生成报告。
4所示。单击ex_fircmsis_tut_ml。c文件。注意到CMSIS功能,arm_fir_init_f32和arm_fir_f32在ex_fircmsis_tut_ml函数。
任务4:验证生成的C代码
生成的代码可以编译和执行在手臂Cortex-M目标通过使用用户选择的工具链,例如,手臂®凯尔™uVision®IDE。
任务5:定点冷杉过滤器
遵循类似的任务步骤3中,您可以为MATLAB函数生成定点C代码ex_fircmsis_tut_ml_q15.m。
dstarmsrc = (“ex_fircmsis_tut_ml_q15”);拷贝文件(dstarmsrc dstarmtmpdir,“f”);codegenex_fircmsis_tut_ml_q15arg游戏fi (u1,真的,16日15)配置cfgEx报告
运行下面的代码来删除临时目录。
状态= tempdirObj.cleanUp;
dstarmexample.displayDSPARMEndOfDemoMessage (mfilename)