基于dspbuilder的数字滤波器设计方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于dspbuilder的数字滤波器设计方法
摘要:FPGA正在替代ASIC和PDSP用于前端数字信号处理的运算,采用FPGA进行算法运算比PDSP器件具有更高的效率,更低的成本和功耗。文章以设计一个32阶fir滤波器为例,验证采用MATlab的DSPbuider工具可大大提高FPGA 编程效率,省去了底层代码编写时间,使设计者更专注于系统级算法的设计。
关键词:dspbuilder;FPGA;数字滤波器
数字滤波器应用于修正或改变时域或频域中信号的属性,最普通的数字滤波器就是线性时间不变量(LTI)滤波器,LTI通过与输入信号相互作用经过线性卷积,表示为,其中f是滤波器的脉冲相应,x是输入信号,而y是卷积输出。线性卷积过程的正式定义为:
y[n]=x[n]※f[n]=x[k]f[n-k]=f[k]x[n-k] (1)
1模块构建及仿真
利用DSPbuilder进行滤波器算法设计,并进行仿真,需设置系统参数,构建信号处理模块、信号源、频谱分析及时波器等外围模块,以及仿真功能。
1.1设置系统参数
在MATLAB中新建FIR_32tap_setup.m文件。
在其中设置如下:
clock_freq = 100e6;
sample_time = 1/clock_freq;
clock_period = 1/(clock_freq*1e-9);
fir_coeff = firpm(31,[0 0.1 0.2 0.5]*2,[1 1 0 0]);
fir_coeff = round(fir_coeff.*(2
-1));
点击运行按钮,并关闭编辑器。
1.2外围激励的设计
在simulink中新建FIR_32tap_ex2.mdl模块。
Sine Wave 0.33及sine wave 0.01分别产生两个正弦波信号,经过ADD模块叠加后输入Fir 32滤波器模块中进行处理,处理前的信号频谱可由input Spectrum观察,处理后的结果由scope模块显示模拟波形,频谱可由output Spectrum观察。
1.3滤波器的设计
①在FIR_32tap_ex2.mdl模块中添加一个32 tap fir的子系统,添加4个shift TAP 模块到子系统中来。
②设置加法器,在32 tap fir子系统中添加input recordingSubsystem模块。
③接下来进行乘、加部分的设计,在altera的运算列表中点击Sum of Product 添加乘累加模块到32 TAP FIR分系统模块中来,乘累加器的构造如下:
q=a(0)C0+ ... +a(i)Ci + ... +a(n-1)Cn-1
q为输出的值;a(i)为带符号的整型输入;Ci为带符号的固定的系数;n为系数个数的范围1~8之间。
同时再复制一个同样的模块,但应把(C_i)的值改为:fir_coeff(9:16),在altera>-运算列表中添加Parallel Adder Subtractor block。
1.4功能性仿真
在FIR_32tap_ex2.mdl中添加testbench模块,在运行simulink之后,双击testbench模块将会看到testbench 设置界面。在该界面中依次运行Generate HDL,Run Simulink Run ModelsimCompare Results系统将自动把FIR_32tap_ex2.mdl模块转化为HDL代码并在Modelsim中运行进行功能仿真。并将simulink输出结果和Modelsim仿真结果进行对比。
在simulink输出结果和Modelsim仿真结果对比报告中可见:
Info:Comparing Simulink output against ModelSim simulation
Info:Exact Match FIR%5F32tap%5Fex2_data%5Fout.capture.msim
Info:Exact Match FIR%5F32tap%5Fex2_filtered%5Fout.capture.msim
Info:Exact Match FIR%5F32tap%5Fex2_out%5Fvalid.capture.msim
1.5 采用硬件环在芯片上进行仿真
使用Singal Compiler将FIR_32tap_ex2.mdl编译成FIR_32tap_ex2.qdf文件。然后在当前路径下建立个新的模块文件FIR_32tap_ex2_HIL.mdl在该文件中添加HIL块。
定义时钟,复位信号以及输入、输出引脚的信号的位数、类型和符号位等,并添加外部激励信号。
将程序下载至芯片中去,运行后将在Matlab上将看到程序在FPGA 芯片实时处理下的情况。
图1左为输入的频谱,图1右为输出频谱,。在频谱图上可见输入为33MHz 和1MHz的正弦波混叠信号经过滤波器, 33MHz信号被滤去,最后输出了1MHz 信号。至此,完成了DSPbuilder数字滤波器的设计的全流程。
2结语
采用Dspbuilder可大大提高设计效率,并且不需要对底层VHDL代码的编写,可以将精力专注于算法的设计上来。
参考文献:
[1] Uwe Meyer-Baese.Digital Signal Processing with FieldProgrammable Gate Arrays[M].北京:清华大学出版社,2006.
[2] 胡广书.数字信号处理导论[M].北京:清华大学出版社,2005.