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

滤波器是信号处理技术绕不过的内容,而在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滤波器。

机场网络视频监控系统的结构组成及技术特点分析
优酷土豆昨日成功并购 土豆将于月内退市
“一带一路”物联网产业基金暨万国物联网创新联盟宣布成立
物联网最为最关键的技术怎样来面对挑战
M12连接器8芯在不同行业中的重要性
FIR IP核的基础功能使用总结
【博捷芯】树脂切割刀在半导体划片机中适合哪些材料
传感器行业巨头联手 加快物联网应用部署
为什么在PLC控制的电路中还要用继电器控制电路中的通断呢
CS1262让跑步健康测量更精准
冗余EPS关键技术解析
美团正式发布了无人配送开放平台,将自动驾驶技术落地应用到外卖配送场景
采用UWB技术的脉冲发生器的设计与实现
市场广阔!自建电站、项目改造、电力交易……光伏储能市场崛起在即
服务机器人全球市场增长巨大 企业巨头抢占市场制高点
OBNE最新推出的一款配有10种效果的多重效果器踏板
索尼旗舰机Xperia2渲染图曝光 依旧延续21:9的CinemaDisplay
可穿戴设备如何挑选
吸尘器如何通过灰尘传感器实现智能化?
安科瑞智能操控装置产品在上海特斯拉工厂配电工程的应用