转换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]);%可视化结束
将函数转换为定点
打开定点转换器应用程序。
MATLAB®工具条:在应用程序选项卡,在代码生成,点击应用程序图标。
MATLAB命令提示符:输入
fixedPointConverter
添加入口点函数
myFIRFilter
对于项目,浏览到文件myFIRFilter.m
,然后按开放.默认情况下,该应用程序将此项目的信息和设置保存在当前文件夹中的一个名为
myFirFilter.prj
.点击下一个去定义输入类型的一步。
应用程序屏幕
myFIRFilter.m
违规和准备问题。该应用程序不发现问题myFIRFilter.m
.在定义输入类型页,添加
myFIRFilter_tb
作为测试文件,浏览到myFIRFilter_tb.m
,然后按自动定义输入类型.应用程序从测试文件中确定的类型
输入
是双倍(1024 * 1)
和类型全国矿工工会
是双(1 x 131)
.点击下一个去转换为定点的一步。
在转换为定点页面,点击分析收集距离信息。
的变量选项卡显示收集的范围信息和类型建议。根据需要手动编辑数据类型建议。
点击转换将建议的数据类型应用于函数。
定点转换器应用程序应用提出的数据类型并生成一个定点函数,
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);结束
点击下一个查看项目总结详细内容及链接到定点MATLAB代码和转换报告。