主要内容

验证冷杉过滤胳膊在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_f32arm_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)