主要内容

转换dsp。FIRFilter对象到定点使用定点转换器应用程序

把一个dsp。FIRFilter系统对象™,使用定点转换器应用程序将高频正弦信号过滤为定点。本例需要定点设计器™和DSP系统工具箱™许可证。

创建DSP滤波函数和测试平台

创建一个myFIRFilter函数从dsp。FIRFilter系统对象。

默认情况下,System对象配置为使用全精度定点算法。为了收集范围数据并从定点转换器应用程序获得数据类型建议,配置System对象使用“自定义”设置。

将函数保存到本地可写文件夹。

函数输出= myFIRFilter(input, num)持续的lowpassFIR;如果isempty(lowpassFIR) lowpassFIR = dsp。FIRFilter (“NumeratorSource”输入端口的...“FullPrecisionOverride”假的,...“ProductDataType”“充分精确”...%的默认“AccumulatorDataType”“自定义”...“CustomAccumulatorDataType”4) numerictype(16日,...“OutputDataType”“自定义”...“CustomOutputDataType”2) numerictype(8日);结束output = lowpassFIR(input, num);结束
创建一个测试平台,myFIRFilter_tb,为过滤器。试验台产生一个信号,收集距离信息进行转换。保存测试台。
myFIRFilter的测试台使用FIR滤波器去除高频正弦信号。%初始化F1 = 1000;F2 = 3000;Fs = 8000;Fcutoff = 2000;%生成输入SR = dsp。SineWave (“频率”(f1、f2),“SampleRate”Fs,...“SamplesPerFrame”, 1024);%滤波系数num = fir1(130,Fcutoff/(Fs/2));可视化输入和输出光谱plot =光谱分析仪(“SampleRate”Fs,...“PlotAsTwoSidedSpectrum”假的,...“ShowLegend”,真的,“YLimits”, 30 [-120],...“标题”输入信号(通道1)输出信号(通道2));%流k = 1:100 input = sum(SR(),2);把两个正弦波加起来filteredOutput = myFIRFilter(input, num);%过滤器情节([输入,filteredOutput]);%可视化结束

将函数转换为定点

  1. 打开定点转换器应用程序。

    • MATLAB®工具条:在应用程序选项卡,在代码生成,点击应用程序图标。

    • MATLAB命令提示符:输入

      fixedPointConverter

  2. 添加入口点函数myFIRFilter对于项目,浏览到文件myFIRFilter.m,然后按开放

    默认情况下,该应用程序将此项目的信息和设置保存在当前文件夹中的一个名为myFirFilter.prj

  3. 点击下一个定义输入类型的一步。

    应用程序屏幕myFIRFilter.m违规和准备问题。该应用程序不发现问题myFIRFilter.m

  4. 定义输入类型页,添加myFIRFilter_tb作为测试文件,浏览到myFIRFilter_tb.m,然后按自动定义输入类型

    应用程序从测试文件中确定的类型输入双倍(1024 * 1)和类型全国矿工工会双(1 x 131)

  5. 点击下一个转换为定点的一步。

  6. 转换为定点页面,点击分析收集距离信息。

    变量选项卡显示收集的范围信息和类型建议。根据需要手动编辑数据类型建议。

  7. 点击转换将建议的数据类型应用于函数。

    定点转换器应用程序应用提出的数据类型并生成一个定点函数,myFIRFilter_fixpt

    % # codegen函数output = myFIRFilter_fixpt(input, num) fm = get_fimath();持续的lowpassFIR;如果isempty(lowpassFIR) lowpassFIR = dsp。FIRFilter (“NumeratorSource”输入端口的...“FullPrecisionOverride”假的,...“ProductDataType”“充分精确”...%的默认“AccumulatorDataType”“自定义”...“CustomAccumulatorDataType”,数字类型(1,16,14),...“OutputDataType”“自定义”...“CustomOutputDataType”,数字类型(1,8,6));结束output = fi(lowpassFIR(input, num), 1,16,14, fm);结束函数FM = get_fimath()“RoundingMethod”“地板”...“OverflowAction”“包装”...“ProductMode”“FullPrecision”...“MaxProductWordLength”, 128,...“SumMode”“FullPrecision”...“MaxSumWordLength”, 128);结束
  8. 点击下一个查看项目总结详细内容及链接到定点MATLAB代码和转换报告。

相关的话题

Baidu
map