xilinx FPGA 平台实现数字信号 -- 低通滤波

xilinx FPGA 平台实现低通滤波效果:

  1. 生成一个10KHZ 叠加上100KHZ的信号,定义成data_all
  2. 使用1MHZ 采样频率,采取data_all 信号1024个点
  3. 试用低通滤波器 滤除100KHZ的信号,恢复出10KHZ信号

以下是matlab中实现:

matlab 复制代码
clc;
clear all;

FS = 1000000; 
N = 1024;
n = 1:1024;
t = 1/FS * n;

A1=1;
P1=0;
F1=10000;

A2=1;
P2=0;
F2=100000;

data1 = A1 * sin(2 *pi * t * F1) ;
data2 = A2 * sin(2 *pi * t * F2) ;

data_all = data1 + data2;

fix_data = fix(data_all/2 * (2^15-1) + (2^15-1));

%%%%%%%%%%%%%%%%%%%%%%生成dat文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid = fopen("fix_data.dat",'w');

for i=1:N 
    fprintf(fid,"%x\n",fix_data(i));
end

fclose(fid);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

subplot (511);
plot(data1);

subplot (512);
plot(data2);

subplot (513);
plot(data_all);

a = 50000 * 2 /FS;
b = fir1(50,a,'low');
subplot (514);
stem(b);

data_f = filter(b,1,data_all);
subplot (515);
plot(data_f);

在FPGA中实现fir低通滤波的效果:

1.matlab 产生的 data_all 信号的 dat文件

2.FPGA中的RAM 存储 这个dat文件数据

3.配置 fir IP 核,加载 matlab 产生的 滤波系数

a.matlab 输入 fdatool 出现 滤波器 设置窗口,如下图

b. 设置好,可以看到下图在50k左边几乎是没有衰减的,右边频率经过 -40db的衰减。100倍的衰减,20db代表10倍衰减。

c. 送入 fir IP 数据都是 整数,没有小数,所以需要设置 下图参数为定点数,小数设置为0

d.生成 xilinx 平台需要的 coe 文件


4.仿真

使用vivado 仿真效果:上图是data_all 信号

下图是滤波后波形:

1.发现相位和data_all信号有偏差,相位是随机的,没有办法调整;

2.前50周期空窗期,没有意义,与滤波器阶数有关;

  1. 需要注意 fir IP 会对输入信号增益放大到一定倍数,所以最后IP核出来的数据需要缩小相应倍数
相关推荐
156082072199 小时前
关于AGC性能测试
fpga开发
威嵌神州13 小时前
国产化加固计算机项目选型笔记|板卡、整机、平板与定制模块评估要点
笔记·fpga开发·电脑
泡泡糖的中文规格书14 小时前
HDLbits 1.2 学习笔记
fpga开发·学习笔记·verilog
樱木花道長15 小时前
AMD Ross 深度系列 5:实战演示 —— MATLAB 到 FPGA,edge-detection 边缘检测全流程
fpga开发
吉他英雄一里1 天前
FPGA--RAM
fpga开发
szxinmai主板定制专家2 天前
储能 EMS、微网控制器选型:RK3588、RK3576、RK3568+FPGA 怎么选?多网、多 CAN、EMC 设计权衡
人工智能·深度学习·机器学习·fpga开发·工业网关·rk3576·电力网关
XMAIPC_Robot2 天前
ARM+FPGA+AI船舶/工业自动化控制器EMC测试等级解析(IEC60533/IEC60945)
arm开发·人工智能·fpga开发·zynq·arm+fpga·rk3588+fpga
ALINX技术博客2 天前
ALINX 亮相 2026 工博会,聚焦 FPGA 行业应用场景
ai·fpga开发·射频工程
星夜离尘562 天前
FPGA 复位回归实验:双时钟停钟、释放中重入与消费端首拍自检
fpga开发
szxinmai主板定制专家2 天前
ZYNQ 数据采集方案踩坑总结:电力强电磁干扰、工业现场多协议适配优化
运维·人工智能·fpga开发·机器人·zynq