基于dspbuilder的数字滤波器设计方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.

相关文档
最新文档