MATLAB设计FPGA实现联合ISE和Modelsim仿真的FIR滤波器设计剖析 下载本文

内容发布更新时间 : 2024/5/13 12:53:18星期一 下面是文章的全部内容请认真阅读。

QQ:290632690 肤浅。。。制作

图3

用MATLAB回读C盘根目录下的matlab_wave_data.txt文件,验证存入的波形数据是否正确,MATLAB代码如下:

fid = fopen('c:/matlab_wave_data.txt','r'); for i = 1 : 5001;%一共有5001个数据

num(i) = fscanf(fid, '%x', 1);%从fid所指的文件中,以16进制的方式读出一个数据 end fclose(fid); figure(2); plot(num,'b');

legend('MATLAB从txt文件中读出的原始叠加波形数据'); title('直接回读MATLAB产生的两个正弦信号的叠加波形'); 显示的波形如图4所示:

1

QQ:290632690 肤浅。。。制作

图4

对比图4和图2中的叠加波形,可知以上操作的正确性。 1) 用MATLAB设计FIR滤波器

输入信号是频率别为0.5MHz和2MHz的正弦信号的叠加,我们的任务是设计一个低通滤波器滤除掉2MHz的干扰信号。因此,我们可以设计一个采样率为25MHz的低通滤波器,其通带带宽为1MHz,阻带宽度为2MHz。通带内纹波抖动为1dB,阻带下降为80dB。

在MATLAB的命令窗口输入:fdatool命令并回车,打开FDATool工具箱,用MATLAB的FDATool工具设计该滤波器,参数设置如图5所示:

设计好参数后,点击DesignFilter,可以在FDATool窗口的左上角看到滤波器的阶数为63阶,点击File ?Generate M-file,并将滤波器命名为mylowfilter。

2

QQ:290632690 肤浅。。。制作

图5

编写如下代码,滤除混叠信号中的高频信号。 Hd = mylowfilter; % 滤波器名称

output = filter(Hd, y1); % 对叠加信号 y ,进行滤波处理 figure(3); plot(y2, 'k'); hold on; plot(output, 'r');

legend('0.5MHz原始信号','滤波后取出的信号'); title('信号通过MTALAB的低通滤波器后的波形'); 滤波后的波形如图6所示:

3