主要内容

用MATLAB在ARM Cortex-A处理器上验证FIR滤波器

这个例子展示了如何使用ARM Cortex-A处理器和DSP System Toolbox™的代码替换库(CRL)。该示例使用dsp。FIRFilter(DSP系统工具箱)对象来过滤两个不同频率的正弦波。

设置和模拟

1.打开ex_fir_ne10_tut_mlexample函数,它实现了一个低通FIR滤波器对象。

函数Y1 = ex_fir_ne10_tut_ml(u1)版权所有The MathWorks, Inc.持续的冷杉;如果Isempty (fir) fir = dsp。FIRFilter (“分子”, fir1(63, 0.33));结束Y1 = fir(u1);结束

2.分别创建两个频率为1 KHz和3 KHz的正弦波信号。

Sin1 = dsp。SineWave (“振幅”, 1“频率”, 1000,...“SampleRate”, 8000,“SamplesPerFrame”, 76,...“OutputDataType”“单一”);Sin2 = dsp。SineWave (“振幅”4“频率”, 3000,...“SampleRate”, 8000,“SamplesPerFrame”, 76,...“OutputDataType”“单一”);

3.创建频谱分析仪,查看输入和过滤后输出的频谱。

范围=光谱分析仪(“SampleRate”, 8 e3,“ShowLegend”,真的,...“PlotAsTwoSidedSpectrum”假的,...“RBWSource”“属性”...“RBW”, 8000/260,“窗口”“皇帝”...“OverlapPercent”, 80,...“YLimits”, [-76 56],“SpectralAverages”10);

4.模拟示例

Nn = 2000;k = 1:NN x1k = sin1();%产生1K Hz的正弦波X3k = sin2();%产生3K赫兹的正弦波N1 = randn(size(x1k),“单一”) * sqrt (. 05);%产生噪声信号U1 = x1k+x3k+n1;Y1 = ex_fir_ne10_tut_ml(u1);范围([u1, y1]);结束

代码替换配置

1.创建一个代码生成配置对象,用于生成C/ c++静态库时与codegen一起使用。

CFG = code .config(“自由”“是”,正确);cfg。GenCodeOnly = true;cfg。CodeReplacementLibrary =“GCC ARM Cortex-A”;cfg.HardwareImplementation.ProdHWDeviceType =ARM兼容->ARM Cortex-A

2.打开自定义代码面板的配置对话框,并验证设置。

cfg.dialog

生成代码

1.生成MATLAB函数的C代码ex_fir_ne10_tut_ml

codegenex_fir_ne10_tut_mlarg游戏单(0)配置cfg报告
代码生成成功:查看报告

2.当代码生成完成时,单击查看报告显示代码生成报告。

3.点击ex_fir_ne10_tut_ml.c文件。该代码包括对加速NE10函数的调用,ne10_fir_init_float而且ne10_fir_float_neon在ex_fir_ne10_tut_ml函数中。

...Float ex_fir_ne10_tut_ml(Float u1){…如果(冷杉。isInitialized != 1){…ne10_fir_init_float (&fir.cSFunObject。S, 64U, &fir.cSFunObject。&fir.cSFunObject qCoeff[0]。pState [0], 1 u);}……ne10_fir_float_neon (&fir.cSFunObject。S, &U0, &b_y1, 1U);...}……

4.可选地,生成的代码可以通过使用适当的工具链在ARM Cortex-A目标上编译和执行。