0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FIR IP核的基础功能使用总结

冬至子 来源:Bug记录 作者:woodfan 2023-06-19 10:47 次阅读

滤波器信号处理技术绕不过的内容,而在BSPK的实现框图中,也需要用到滤波器。

m序列的时域波形是一个矩形,矩形在频谱上是所有奇次谐波之和,为了节省带宽资源,这里需要使用FIR滤去谐波,留下基波。

本文会讲到Vivado 中FIR IP核的使用方法,会涉及到MATLAB的部分内容。

因为我们不使用太高级的功能,只使用最基础的功能,滤波。所以,最关键的内容就是coe参数文件的生成,可以使用MATLAB帮助我们生成这个文件。

在MATLAB的命令窗口,输入fdatool(新版MATLAB为filterDesigner)回车,

图片

滤波器设置界面

这里选择低通FIR,窗函数选常用的几个,这里选择了汉明窗;滤波器阶数选择72,阶数越高滤波效果越好,但资源占用越多;FS/FC(采样率/截止频率)为50:3,点击Design Filter会显示相应的频率响应图,由于FIR滤波器抽头的特性,当输入的采样率为50M时,滤波器的截止频率为3M,两者之间保持比例关系。

图片

滤波器数值表示

点击如上图红框内的图标,将Filter arithmetic修改为Fixed-point,将滤波器的参数数值表示修改为定点数表示,方便FPGA处理,也只有这样能生成coe文件。

图片

滤波器生成coe文件

点击上图菜单栏的Target,然后生成coe文件。

在Vivado中IP Catalog中找到FIR IP核,

图片

FIR IP核界面

在Filter Coefficient里面选择使用COE FILE,文件选择刚才生成的COE文件。

图片

FIR IP核界面

在Channel Specification,设置输入的采样率为50M。

图片

FIR IP核界面

Implementation里面,滤波器系数类型选择有符号型,输入数据也是有符号型,输入数据位宽选择2位,小数部分位数为0,GUI显示出输入数据位宽21位,这些数值后面有用。

一路默认,FIR IP核生成后,可以看到相关的端口定义。

fir_compiler_0 your_instance_name (

.aclk(aclk), // input wire aclk

.s_axis_data_tvalid(s_axis_data_tvalid), // input wire s_axis_data_tvalid

.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready

.s_axis_data_tdata(s_axis_data_tdata), // input wire [7 : 0] s_axis_data_tdata

.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid

.m_axis_data_tdata(m_axis_data_tdata) // output wire [23 : 0] m_axis_data_tdata

);

可以看到,输入数据位宽为8位,而我们在FIR GUI界面设置的是2位,为了不影响最终的输入数据,需要对输入数据进行符号位扩展。

而输出数据位宽有24位,但是FIR GUI界面显示输出数据位宽为21位,这说明FIR的输出数据也进行了符号位扩展,这里可以截取符号位。

相关的符号位扩展和截取符号位可以见下代码块。

fir_compiler_0 fir_inst (

.aclk(clk_50m), // input wire aclk

.s_axis_data_tvalid(1'b1), // input wire s_axis_data_tvalid

.s_axis_data_tready(), // output wire s_axis_data_tready

.s_axis_data_tdata({{6{code_c[1]}},code_c}), // input wire [7 : 0] s_axis_data_tdata

.m_axis_data_tvalid(), // output wire m_axis_data_tvalid

.m_axis_data_tdata(fir_out) // output wire [23 : 0] m_axis_data_tdata 19-8

);

xbip_dsp48_macro_0 dsp_product_inst (

.CLK(clk_50m), // input wire CLK

.A(fir_out[19:8]), // input wire [11 : 0] A

.B(cos_o[13:2]), // input wire [11 : 0] B

.P(duc_data) // output wire [23 : 0] P

);

最后的滤波效果如图:

图片

滤波效果图

滤波效果可以继续调节,这里可以看到图里的滤波效果确实达到了,但可能效果不是那么好,实际的滤波参数需要仿真后看效果才可以确定。

FIR滤波相对于IIR滤波而言,没有极点或者说极点与零点抵消了,更加稳定。但如果有时候我们想用IIR滤波器怎么办呢,后续会谈到如何实现IIR滤波器。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    160

    文章

    7728

    浏览量

    177685
  • MATLAB仿真
    +关注

    关注

    4

    文章

    176

    浏览量

    19903
  • GUI
    GUI
    +关注

    关注

    3

    文章

    648

    浏览量

    39549
  • FIR滤波
    +关注

    关注

    0

    文章

    6

    浏览量

    9829
  • Vivado
    +关注

    关注

    19

    文章

    808

    浏览量

    66327
收藏 人收藏

    评论

    相关推荐

    FPGA的IP使用技巧

    IP : 根据项目需求选择合适的IP,如FIFO、RAM、FIR滤波器、SDRAM控制器、PCIE接口等。确保所选
    发表于 05-27 16:13

    IP简介

    本帖最后由 eehome 于 2013-1-5 09:59 编辑 IP简介IP是指:将一些在数字电路中常用但比较复杂的功能块,如
    发表于 07-06 14:15

    IP简介

    IP简介IP是指:将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器、SDRAM控制器
    发表于 07-15 14:46

    使用quartusII fir ip没有输出?

    我们使用quartusII的fir ip生成了一个滤波器,用AD采集了单频正弦信号输入,可是不管输入频率多少,滤波器的输出端口都没有输出,不知道这是为什么啊?
    发表于 08-12 22:49

    quartus ii 中fir数字滤波器IP如何设置参数

    请教各位大师,quartus ii 中调用fir数字滤波器IP,可不知道如何设置参数,比如如何设置滤波器的系数
    发表于 11-23 20:54

    Rapid IO IP生成不了

    请问一下,我使用QuartusII 13.0 生成不了Rapid IO IPiP已破解,其他诸如FIR、CIC、NCO等都能正常生成,
    发表于 07-17 16:23

    quartus II 13.1调用FIR 这个IP生成时一直卡着,怎么解决?

    quartus II 13.1调用FIR 这个IP生成时一直卡着,怎么解决? 系统版本是win7 64位 专业版,我试过网上说的①在license中改相应IP
    发表于 08-08 11:42

    设计单位增益FIR IP

    我用MATLAB设计好单位增益的滤波器系数,然后导入 FIRIP里面,系数转换成定点数了,但是此时显示的滤波器幅频特性曲线却是100dB的放大倍数,求问怎么让其变成单位增益?
    发表于 01-27 13:53

    关于fir compiler生成IP后各项文件的具体说明

    如图,这个是我用FIR COMPILER 生成IP生成的文件,这里想请教一下,这里面的各个文件都是干嘛的,顶层文件到底是哪个?
    发表于 04-14 17:15

    altera FIR IP使用过程中程序下载失败的问题

    最近在使用altera的FIR IP做半带滤波器,quartus ii软件也破解了,firIP也破解了,modelsin仿真也通过了,但是下载不了.sof文件到开发板,大家有用
    发表于 05-11 16:01

    关于altera系列芯片FIR IP在使用过程中的问题

    最近在做一个FIR低通滤波器,利用Matlab 产生滤波系数,导入到Quartus中,再利用其中的FIR IP进行滤波器设计,在采用分布式全并行结构时,Modelsim 仿真有输出;
    发表于 07-05 08:33

    关于xilinx中fir滤波器IP使用

    最近进行FPGA学习,使用FIR滤波器过程中出现以下问题:使用FIR滤波器IP中,输入数据为1~256,滤波器系数为,coef =-1469,-14299 ,-2185,10587
    发表于 11-02 17:17

    基于FPGA的FIR滤波器IP仿真实例

    位的有符号整数。 详细配置可参看pg149-fir-compiler.pdf(at7_img_ex07/matlab文件夹下)。 3 FIR IP接口时序我们例化的
    发表于 07-16 17:24

    基于IPFIR低通滤波器该怎么设计?

    Programmable Gate Array,现场可编程门阵列)基于查找表的结构和全硬件并行执行的特性,如何用FPGA 来实现高速FIR 数字滤波器成了近年来数字信号处理领域研究的热点。目前,全球两大PLD 器件供应商都提供了加速FPGA 开发的IP(Intellig
    发表于 09-05 07:21

    如何申请xilinx IP的license

    在使用FPGA的时候,有些IP是需要申请后才能使用的,本文介绍如何申请xilinx IP的license。
    的头像 发表于 10-25 16:48 202次阅读
    如何申请xilinx <b class='flag-5'>IP</b><b class='flag-5'>核</b>的license