MATLAB+VIVADO设计FIR滤波器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

 

 


前言

        数字信号处理中需要用到FIR滤波器进行一些滤波处理或加窗,XILINX 7系列的FPGA,在vivado下通常使用IP核生成可使用的滤波器,下面介绍配置方法。

一、滤波器系数的生成

首先在matlab的APP中找到filter designer或在命令行里输入: fdatool 

弹出界面如下:

其中Fs为采样率,滤波器有效频率范围为Fs/2, 下面的值不能超出这个范围,另外注意Specify order的值,这里是数字滤波器阶数,阶数越高其复杂度越高滤波器带内越平滑,具体取值取多少应在工程中取舍,在类型中选择需要的滤波器类型,依次为低通、高通、带通、带阻,这里设计一个带通滤波器。

选择带通后,在Frequency Specifications里,先确定采样率,这里选择50MSPS的采样率,设计一个中心频率为10MHz,带宽为5MHz的滤波器,设置通带阻带后点击Design Filter,通带与阻带设置如图:

Analysis工具栏中,可以看频响以外的其他特性,读者可以自己尝试。

此时,我们打开File-Expore,进入如下画面:

保持默认值点击Export。(注意,如果Workspace中已经存在Num变量请先备份删除,否则会报错)

滤波器参数会保存在工作区中的Num变量中

二、FPGA中的实现

1.FIR滤波器IP核

在IP Catalog中搜索FIR,找到FIR滤波器的IP核, 

打开后的界面如下:

这里有两种方法导入滤波器参数,在Select Source中,Vector对应手动输入滤波器参数,选择COE file即使用读取COE文件的方式初始化参数(文件内数值必须是整形)。

滤波器的其他参数根据工程中的使用需要读者自己完成定义,需要定义的主要是通道数、时钟、采样率以及滤波器类型等,采样率需要与matlab中设置的严格一致。

2.导入参数

导入参数时,无论浮点型还是整形,FPGA都只接收量化后的参数,不接受浮点型运算,因此需要先将matlab中的参数量化后加入IP核中。

导入参数如前文所述有两种方法,首先讨论直接导入数据:

在命令行中输入:

coeff = round(Num/max(abs(Num))*(2^15));
fid=fopen('e:/fir_num.txt','wt');
fprintf(fid,'%16.0f,',coeff);
fclose(fid);

打开文件可以看到量化后的数据,复制粘贴到Coefficient Vector中即可,需要注意最后一个数后的逗号要去掉。

左图中可以看到我们设计的滤波器。

 

另一种方法是使用COE文件,matlab是可以直接生成的,但是必须要整型量化数据,因此直接生成会报错。

上一种做法结束后生成了一个.txt文件,我们修改这个文件,在开头加上下面这段:

radix=10;
Coefficient_Width = 14;
coefdata=

然后将文末的逗号改成分号(虽然不改也无所谓的样子),再将尾缀改为.coe,在IP核中将其导入:

至此,就完成了FIR滤波器的IP设计,这种方式更适合于商业代码与IP的备份。

 


总结

本文主要用于记录Matlab-VIVADO的FPGA FIR滤波器设计。

  • 12
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vivado设计FIR滤波器的步骤如下: 1. 使用MATLABfirpm函数设计FIR低通滤波器,根据设计要求设置好对应参数,并导出coe文件。\[1\] 2. 在Vivado中创建一个新的工程,并添加FIR滤波器设计文件。 3. 在设计中添加DDS信号发生器模块,用于产生输入信号。 4. 将DDS信号和输入信号进行混频,得到混频后的信号。 5. 将混频后的信号输入到FIR滤波器模块中。 6. 在FIR滤波器模块中使用之前在MATLAB设计FIR滤波器的系数。 7. 将滤波器输出连接到需要的输出端口。 8. 运行综合和实现步骤,生成比特流文件。 9. 将比特流文件下载到目标设备中进行验证。 通过以上步骤,你可以在Vivado设计并实现FIR滤波器。\[2\]\[3\] #### 引用[.reference_title] - *1* [VivadoFIR IP核实现低通滤波器](https://blog.csdn.net/QDchenxr/article/details/122659624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [VIVADO 实现一个滤波器(使用FIR\DDS软核)](https://blog.csdn.net/weixin_44441263/article/details/119446921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [FPGA—FIR滤波器vivado平台)](https://blog.csdn.net/weixin_44586889/article/details/116207811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值