目录
1. 实际开发流程
1.1 matlab 输入信号
1.1.1 matlab输入信号代码
1.1.2 输出图像
1.2 System Generator使用
1.2.1 基本使用
1.2.2 FIR IP核
1.2.3 FIR滤波器设计
FDATool和FIR Complier构成子系统【关键】
1.3 最终结果呈现
参考第4期 - FIR滤波器调用流程 - 基于FPGA的数字信号处理系统开发笔记_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV16a4y1a7z6/?spm_id_from=333.788&vd_source=71acea6682c8121539b919e1e8ca93ef
第X期 - Xilinx Block使用说明合集 - 基于FPGA的数字信号处理系统开发笔记_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1K54y1v76u/?spm_id_from=333.999.0.0&vd_source=71acea6682c8121539b919e1e8ca93ef
本章节将进行全流程FPGA DSP开发,包括了以下几个步骤
Ok,让我们开始~
clc;clear all;close all;
%--------------------------------------------------------------------------
%% FIR 滤波器输入信号生成
%--------------------------------------------------------------------------
%% 系统参数
N = 1024;%采样点数
Fs = 10000;
Ts = 1/Fs;
%% 输入信号生成,由100Hz和2000Hz正弦信号合成
A = 3;
t = (0:N-1)*Ts;
ft_0 = 100;
vi_0 = zeros(1,N);
ft_1 = 2000;
vi_1 = zeros(1,N);
vi = zeros(1,N);
for n = 1:N
vi_0(n) = A*sin(2*pi*ft_0*t(n));
vi_1(n) = A*sin(2*pi*ft_1*t(n));
vi(n) = vi_0(n) + vi_1(n);%混频
end
%% 信号图像输出
figure(1)
subplot(3,1,1)
plot(t,vi_0,'k');
subplot(3,1,2)
plot(t,vi_1,'k');
subplot(3,1,3)
plot(t,vi,'k');
Fre0 = abs(fft(vi_0)); %快速傅里叶变换的幅值
Fre1 = abs(fft(vi_1));
Fre = abs(fft(vi));
f = (0:N-1)*Fs/N;%频率离散化
figure(2)
subplot(3,1,1)
plot(f,Fre0);
xlabel('Frequency');
ylabel('Amplitude');
subplot(3,1,2)
plot(f,Fre1);
xlabel('Frequency');
ylabel('Amplitude');
subplot(3,1,3)
plot(f,Fre);
xlabel('Frequency');
ylabel('Amplitude');
%fftshift()调整0频位置
figure(3);
f1=(0:N-1)*Fs/N-Fs/2 ;%频率范围-5000Hz-5000Hz, 1024个采样点
y0=abs(fftshift(fft(vi_0)));
subplot(3,1,1)
plot(f1,y0);
xlabel('Frequency');
ylabel('Amplitude');
y1=abs(fftshift(fft(vi_1)));
subplot(3,1,2)
plot(f1,y1);
xlabel('Frequency');
ylabel('Amplitude');
y=abs(fftshift(fft(vi)));
subplot(3,1,3)
plot(f1,y);
xlabel('Frequency');
ylabel('Amplitude');
三个信号的时域图 | 三个信号的频谱图 | 调整0频后的频谱图 |
注意:必须通过xilinx的system generator打开我们的matlab
可查阅 System Generator使用教程来辅助我们使用该软件,开发步骤按照如下视频教程
0 Platform_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1K54y1v76u?p=2&vd_source=71acea6682c8121539b919e1e8ca93ef
首先我们需要添加System Generator这个模块,设置好系统硬件参数
接着放置我们的输入信号模块
特别提醒:我们要将1.1中matlab生成的混频信号等参数输入给我们的system generator模块的话,我们需要首先运行.m文件生成所需变量,然后在system generator模块中添加对应输入参数即可。而且最好Simulin文件和matlab文件放在一个父文件夹中
计数器counter和存储器rom模块构成了整个系统输入,输入我们matlab生成的vi混频波形,一共1024个采样数据点。
注意:我们还需要一个matlab的FDATool模块(就是图中FIR Complier7.2上面那个),这个模块给FIR滤波器提供在要求阶数下的滤波器抽头系数。
其他配置详见视频8:20
第4期 - FIR滤波器调用流程 - 基于FPGA的数字信号处理系统开发笔记_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV16a4y1a7z6/?spm_id_from=pageDriver&vd_source=71acea6682c8121539b919e1e8ca93ef
由FDATool完成,滤波器设计要求:输入采样率为10KHz,有效信号0.1KHz,高频信号2KHz滤除
鼠标框选这两个模块,鼠标右键->基于所选内容创建子系统
完整的系统模型如下: