关于FPGA中添加FIR IP核(采用了GOWIN EDA)

文章目录


前言

FIR滤波器的特点是其输出信号是输入信号的加权和,权值由滤波器的系数决定。每个系数代表了滤波器在特定延迟位置上的"权重",这些系数通常是根据特定的设计要求(例如频率响应、带宽、滤波器类型等)计算得出的。故需要手动导入COE的系数文件


提示:以下是本篇文章正文内容,下面案例可供参考

一、IP核

二、MATLAB文件

这里想制作一个22阶的全通滤波器,代码如下

matlab 复制代码
% 定义滤波器阶数
n = 22;

% 定义归一化频率范围
w = [-1 1];

% 使用 cfirpm 函数设计全通滤波器
b = cfirpm(n, w, 'allpass');

IP核直接设计这个滤波器,发现IP核导入需要COE文件

三、导出系数COE文件

MATLAB可以直接生成COE文件,这里提供几种方式

1.设计滤波器

在matlab中的fliter design设计滤波器

这个滤波器的衰减在0.15dB左右,可认为是幅度不变的全通,相位随着频率增大而滞后

如果是XILINX的COE可以直接从这里导出文件

2.用官方的matlab代码或者直接用文本文件

matlab 复制代码
%creat number of FIR%
%first channel
N=23;
fs0=96000;
fpass0=48000;
wn_fpass0=fpass0/fs0;

%second channel
fs1=96000;
fpass1=48000;
wn_fpass1=fpass1/fs1;

%generate FIR Coeff
coeff0=fir1(N-1,wn_fpass0,'low');
coeff1=fir1(N-1,wn_fpass1,'low');

%convert
coeff_width=18;
scaled_width=coeff_width-1;
coeff0_fi=round(coeff0*2^scaled_width);
coeff1_fi=round(coeff1*2^scaled_width);

%save
file_name='./coeff.dat';
fid=fopen(file_name,'w');
fprintf(fid,'%d\n',[coeff0_fi,coeff1_fi]);
fclose(fid);

生成滤波器系数文件,然后导入

这里需要注意,抽头数=阶数+1,而且双通道的抽头数(Taps number)是总的抽头数,例如22阶滤波器抽头数为(22+1)*2=46

四、进行模块化设计

最后需要在top文件中进行例化


源文件

高云参考:https://www.gowinsemi.com.cn/enrollment_view.aspx?TypeId=67\&Id=560\&FId=t27:67:27#IP

相关推荐
坏孩子的诺亚方舟13 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐13 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐13 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH14 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡14 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安14 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐15 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯15 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客15 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA15 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发