用MATLAB在ARM Cortex-A处理器上验证FIR滤波器
这个例子展示了如何使用ARM Cortex-A处理器和DSP System Toolbox™的代码替换库(CRL)。该示例使用dsp。FIRFilter
(DSP系统工具箱)对象来过滤两个不同频率的正弦波。
设置和模拟
1.打开ex_fir_ne10_tut_ml
example函数,它实现了一个低通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目标上编译和执行。