• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

CIC和FIR滤波器设计Verilog代码VIVADO仿真

08/07 08:41
390
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24061QHH2536.doc

共1个文件

名称:CIC和FIR滤波器设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

CIC和FIR滤波器设计

数据从端口进入后,使用150MHz的时钟再打一拍(采样一次),然后经过第一个CIC滤波器,将速率降为10MHz,然后再经过一级CIC滤波器,将速率降为2MHz,最后再经过一个FIR滤波器,将速率降为1MHz。FIR滤波器截止频率设置为25KHz。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

设计文档

数据从端口进入后,使用150MHz的时钟再打一拍(采样一次),然后经过第一个CIC滤波器,将速率降为10MHz,然后再经过一级CIC滤波器,将速率降为2MHz,最后再经过一个FIR滤波器,将速率降为1MHz。FIR滤波器截止频率设置为25KHz。

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

Testbench首先使用readmemh函数去读取事先准备好的原始数据txt,然后进入到程序输入端口,降采样和滤波后输出结果也保存为一个txt文件,便于后续matlab分析。

6. 仿真图

下图可看出采样率降为1MHz

7. FIR滤波器系数设计

FIR滤波器系数设计

1. 打开matlab

2. 输入fdatool回车,打开滤波器设计工具fdatool

3. 设置如下

导出coe文件即可

部分代码展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?Company:?
//?Engineer:?
//?
//?Create?Date:?2020/09/13?19:38:12
//?Design?Name:?
//?Module?Name:?fir_cic_filter
//?Project?Name:?
//?Target?Devices:?
//?Tool?Versions:?
//?Description:?
//?
//?Dependencies:?
//?
//?Revision:
//?Revision?0.01?-?File?Created
//?Additional?Comments:
//?
//////////////////////////////////////////////////////////////////////////////////
//1.实现150M采样速率到1兆采样速率的抽取
//2.注意原始信号的采样速率必须是150MHz,
//3.MATLAB生成一个0~20kHz的信号,40kHz~50kHz的干扰,采样速率150MHz。将数据导入到vivado中做为原始仿真的输入数据,写清MATLAB部分和fpga部分的实现
//细节
//4.写清楚cic滤波器和fir滤波器ip核的具体设计参数
//5.vivado中仿真
//6.文档说明,视频录制啥的和上次的一样。
module?fir_cic_filter(
????input?clk_in,//150MHz
????input?rst_p,//高电平复位
????input?[15:0]?data_in,//输入数据
????output?[47:0]?data_out,//1M信号输出
????output?data_out_en
????);
//信号采样
reg?[15:0]?data_sample=16'd0;
always@(posedge?clk_in?or?posedge?rst_p)
????if(rst_p)
????????data_sample<=16'd0;
????else
????????data_sample<=data_in;//150M采样
//CIC抽取15倍
wire?cic_data_tready;
wire?[23?:?0]?cic_tdata;
wire?cic_tvalid;
cic_compiler_0?i1_cic_compiler_0?(
??.aclk(clk_in),??????????????????????????????//?input?wire?aclk
??.s_axis_data_tdata(data_sample),????//?input?wire?[15?:?0]?s_axis_data_tdata
??.s_axis_data_tvalid(1'b1),??//?input?wire?s_axis_data_tvalid
??.s_axis_data_tready(cic_data_tready),??//?output?wire?s_axis_data_tready
??.m_axis_data_tdata(cic_tdata),????//?output?wire?[23?:?0]?m_axis_data_tdata
??.m_axis_data_tvalid(cic_tvalid)??//?output?wire?m_axis_data_tvalid
);
//CIC抽取5倍
wire?cic_D5_tready;
wire?[23?:?0]?cic_D5_tdata;
wire?cic_D5_tvalid;?
cic_D5?i_cic_D5?(
??.aclk(clk_in),??????????????????????????????//?input?wire?aclk
??.s_axis_data_tdata(cic_tdata),????//?input?wire?[23?:?0]?s_axis_data_tdata
??.s_axis_data_tvalid(cic_tvalid),??//?input?wire?s_axis_data_tvalid
??.s_axis_data_tready(cic_D5_tready),??//?output?wire?s_axis_data_tready
??.m_axis_data_tdata(cic_D5_tdata),????//?output?wire?[23?:?0]?m_axis_data_tdata
??.m_axis_data_tvalid(cic_D5_tvalid)??//?output

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=879

  • 2-24061QHH2536.doc
    下载

相关推荐