实验-FIR低通滤波器设计

更新时间:2024-03-09 08:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验四上:FIR低通滤波器设计

本实验主要在实验1_2的基础上给双音多频信号添加滤波器,实现高低频率的分离,是双音多频信号解码的一个关键部分。在实验中需要在MatLab的Simulink&DSPBuilder中利用Altera公司的FIR IP核 来实现滤波。

首先需要有一个双音多频信号的产生模块,输出高低混叠的正弦波信号。在实验一中已经搭建好该模块,考虑到滤波器模块,为了尽量节省系统资源,实验一中的参数已经做了相应修改,请大家在FTP中下载dtmf1.mdl文件,可以重新命名,注意模块的参数,这里产生了真实的双音多频信号的频率697+1477。 下面在该文件中开始你的滤波器设计。

Dtmf1.mdl

滤波器设计:包括滤波器参数的配置,以及其他相关参数设置。

滤波器参数配置,我们采用MatLab中的数字信号工具fdatool,在下图位置:

调出

本实验先设计一个低通滤波器来滤出697HZ的正弦波 Response Type设置Lowpass Design Method :FIR Equiriepple

指定滤波器阶数为40阶,可以尝试不同的阶数,这里选择40,阶数过大会浪费系统资源

采样频率FS设置成信号产生模块的采样频率近似值,这里定为22k Fpass :941 Fstop:1209

尽量让低频信号都能通过 Meganitude Specifications : Wpass 1 Wstop 10

点击 Design Filter

观察滤波器频响曲线,注意参数的配置一定要符合滤波器性能要求,在要滤除的频率处,衰减至少10db以上,这样效果才够好。 设计完后点击

将滤波器参数导入工作区,名字默认为Num

将滤波器参数转化成整数,Num=round(Num*512); Num=reshape(Num,41,1)

将系数用记事本保存,这里记为lp22k.txt 然后打开Simulink

Simulink?Altera DSP Builder?MegaCore Functions?fir_compiler_v6_1 更名为lp_fir_compiler_v6_1 双击lp_fir_compiler_v6_1

Step1?Edit Coefficient Set?Imported Coefficient Set

Apply?OK

之后的界面,参数如下:

调整1的参数,可以看到2的相关部分会发生变化,1处的参数调整既要让频响曲线拟合的最好,又要让系统的资源占据的最少。 然后点击Step2生成 滤波器其他参数设置:

Simulink?Altera DSP Builder?IO&BUS?AltBus

连线如上图:ast_sink_valid,ast_source_ready,reset_n为滤波器控制信号,可以查看相关文档了解这些输入输出接口

Simulink?Altera DSP Builder?IO&BUS?Saturate

整个系统连线框图

接上示波器观察滤波后信号lp_out和滤波前的原始低频信号doutf1,双音多频信号dtmf_out.如图:

从实验结果看出,很好的恢复了原始的低频信号 硬件转化

进入工程目录,打开.qpf文件,设置Device 及相关设置,新建一个bdf文件,将.hdl文件转化为模块,再往里面添加一个锁相环模块,将开发板的100M降频为10M,作为dtmf1模块的clk输入

管脚绑定如下: Clkin-----pin_N2 Rst_sig---pin_AE14

新建Signal Tap文件,设置观察的管脚,将clock设置为clk_out,采样深度设置成256

本文来源:https://www.bwwdw.com/article/6b3a.html

Top